архитектура и цели для агентов

This commit is contained in:
2026-07-10 10:28:37 +04:00
parent f561e52aa9
commit 93bfe114c0
46 changed files with 2826 additions and 55 deletions
@@ -84,6 +84,14 @@ static func build(
mat.set_shader_parameter("stage1_uv_scroll", combiner.get("stage1_uv_scroll", Vector2.ZERO))
mat.set_shader_parameter("stage2_uv_scroll", combiner.get("stage2_uv_scroll", Vector2.ZERO))
mat.set_shader_parameter("stage3_uv_scroll", combiner.get("stage3_uv_scroll", Vector2.ZERO))
mat.set_shader_parameter("stage0_uv_rotation", combiner.get("stage0_uv_rotation", Vector4(1.0, 0.0, 0.0, 1.0)))
mat.set_shader_parameter("stage1_uv_rotation", combiner.get("stage1_uv_rotation", Vector4(1.0, 0.0, 0.0, 1.0)))
mat.set_shader_parameter("stage2_uv_rotation", combiner.get("stage2_uv_rotation", Vector4(1.0, 0.0, 0.0, 1.0)))
mat.set_shader_parameter("stage3_uv_rotation", combiner.get("stage3_uv_rotation", Vector4(1.0, 0.0, 0.0, 1.0)))
mat.set_shader_parameter("stage0_uv_rotation_speed", float(combiner.get("stage0_uv_rotation_speed", 0.0)))
mat.set_shader_parameter("stage1_uv_rotation_speed", float(combiner.get("stage1_uv_rotation_speed", 0.0)))
mat.set_shader_parameter("stage2_uv_rotation_speed", float(combiner.get("stage2_uv_rotation_speed", 0.0)))
mat.set_shader_parameter("stage3_uv_rotation_speed", float(combiner.get("stage3_uv_rotation_speed", 0.0)))
mat.set_shader_parameter("effect_alpha_scale", combiner.get("effect_alpha_scale", 1.0))
mat.set_shader_parameter("effect_alpha_power", combiner.get("effect_alpha_power", 1.0))
mat.set_shader_parameter("uv_edge_fade_strength", combiner.get("uv_edge_fade_strength", 0.0))
@@ -227,6 +235,14 @@ uniform vec2 stage0_uv_scroll = vec2(0.0);
uniform vec2 stage1_uv_scroll = vec2(0.0);
uniform vec2 stage2_uv_scroll = vec2(0.0);
uniform vec2 stage3_uv_scroll = vec2(0.0);
uniform vec4 stage0_uv_rotation = vec4(1.0, 0.0, 0.0, 1.0);
uniform vec4 stage1_uv_rotation = vec4(1.0, 0.0, 0.0, 1.0);
uniform vec4 stage2_uv_rotation = vec4(1.0, 0.0, 0.0, 1.0);
uniform vec4 stage3_uv_rotation = vec4(1.0, 0.0, 0.0, 1.0);
uniform float stage0_uv_rotation_speed = 0.0;
uniform float stage1_uv_rotation_speed = 0.0;
uniform float stage2_uv_rotation_speed = 0.0;
uniform float stage3_uv_rotation_speed = 0.0;
uniform float effect_alpha_scale = 1.0;
uniform float effect_alpha_power = 1.0;
uniform float uv_edge_fade_strength = 0.0;
@@ -315,8 +331,27 @@ vec3 apply_wow_fog(vec3 color) {
return mix(color, wow_fog_color.rgb, fog_amount);
}
vec2 transform_uv(vec2 uv, vec4 uv_transform, vec2 uv_scroll) {
return uv * uv_transform.xy + uv_transform.zw + uv_scroll * TIME;
vec2 rotate_uv(vec2 uv, vec4 rotation) {
return vec2(
rotation.x * uv.x + rotation.y * uv.y,
rotation.z * uv.x + rotation.w * uv.y
);
}
vec2 rotate_uv_angle(vec2 uv, float angle) {
float c = cos(angle);
float s = sin(angle);
return vec2(c * uv.x - s * uv.y, s * uv.x + c * uv.y);
}
vec2 transform_uv(vec2 uv, vec4 uv_transform, vec2 uv_scroll, vec4 uv_rotation, float uv_rotation_speed) {
vec2 centered = uv - vec2(0.5);
centered = rotate_uv(centered, uv_rotation);
if (abs(uv_rotation_speed) > 0.000001) {
centered = rotate_uv_angle(centered, uv_rotation_speed * TIME);
}
centered *= uv_transform.xy;
return centered + vec2(0.5) + uv_transform.zw + uv_scroll * TIME;
}
vec2 env_uv(vec3 normal) {
@@ -325,10 +360,10 @@ vec2 env_uv(vec3 normal) {
}
vec2 stage_uv(int stage, vec3 normal) {
vec2 t1 = transform_uv(uv_interp, stage0_uv_transform, stage0_uv_scroll);
vec2 t2 = transform_uv(uv2_interp, stage1_uv_transform, stage1_uv_scroll);
vec2 t3 = transform_uv(uv2_interp, stage2_uv_transform, stage2_uv_scroll);
vec2 t4 = transform_uv(uv2_interp, stage3_uv_transform, stage3_uv_scroll);
vec2 t1 = transform_uv(uv_interp, stage0_uv_transform, stage0_uv_scroll, stage0_uv_rotation, stage0_uv_rotation_speed);
vec2 t2 = transform_uv(uv2_interp, stage1_uv_transform, stage1_uv_scroll, stage1_uv_rotation, stage1_uv_rotation_speed);
vec2 t3 = transform_uv(uv2_interp, stage2_uv_transform, stage2_uv_scroll, stage2_uv_rotation, stage2_uv_rotation_speed);
vec2 t4 = transform_uv(uv2_interp, stage3_uv_transform, stage3_uv_scroll, stage3_uv_rotation, stage3_uv_rotation_speed);
vec2 env = env_uv(normal);
if (vertex_shader_id == 1) {
@@ -383,12 +418,12 @@ vec2 stage_uv(int stage, vec3 normal) {
if (stage0_env) {
return env;
}
return transform_uv(stage0_uv2 ? uv2_interp : uv_interp, stage0_uv_transform, stage0_uv_scroll);
return transform_uv(stage0_uv2 ? uv2_interp : uv_interp, stage0_uv_transform, stage0_uv_scroll, stage0_uv_rotation, stage0_uv_rotation_speed);
}
if (stage1_env) {
return env;
}
return transform_uv(stage1_uv2 ? uv2_interp : uv_interp, stage1_uv_transform, stage1_uv_scroll);
return transform_uv(stage1_uv2 ? uv2_interp : uv_interp, stage1_uv_transform, stage1_uv_scroll, stage1_uv_rotation, stage1_uv_rotation_speed);
}
void resolve_m2_pixel(vec4 tex1, vec4 tex2, vec4 tex3, vec4 tex4, out vec3 diffuse, out vec3 specular, out float discard_alpha, out float can_discard) {