首页   <首页 > 资讯攻略 > 游戏问答

帝国全面战争 修改贴 如何去掉讨厌的弹道 也就是传说中的白尾巴

网友投稿

2023-10-30 11:57:14

游戏问答

  相信很多人看到炮弹或子弹后面拖着长长的白色弹道都很不爽  这里转一个老外的修改教程大家可以时一试

  建议备份原文件

  首先解压缩main.pack里的东西到帝国安装目录下的data文件夹,然后把main.pack改名成extension.pack

  然后在...\data\fx\里找到projectiletrail.fx文件 用文本编辑器打开

  打开文件后 你应该能看到如下内容 如果内容不符(这也是有可能发生的) 请放弃

  #include "FXConfig.h"

  #include "Camera.fx_fragment"  #include "ScreenEffects.fx_fragment"  #include "fog.fx_fragment"

  struct VS_INPUT  {  float4 position : POSITION;  float3 tangent : NORMAL;  float4 colour : COLOR0;  float width : TEXCOORD0;  float t : TEXCOORD1;  float u : TEXCOORD2;  float min_apparent_width_distance : TEXCOORD3;  float fade_out_distance : TEXCOORD4;  float cross_fade_start_distance : TEXCOORD5;  float cross_fade_range : TEXCOORD6;  };

  struct VS_OUTPUT  {  float4 position : POSITION;  float4 colour : COLOR;  float u : TEXCOORD0;  float fade_out_distance : TEXCOORD1;  float distance : TEXCOORD2;   float t : TEXCOORD3;  float4 proj_pos : TEXCOORD4;  float cross_fade_start_distance : TEXCOORD5;  float cross_fade_range : TEXCOORD6;  };

  DECLARE_TEXTURE(normal_map);  const bool render_normal_map;

  VS_OUTPUT render_vertex(const VS_INPUT v)  {  VS_OUTPUT r;

  float3 to_camera = camera_position - v.position;

  float3 normal = normalize(cross(to_camera, v.tangent));

  float4 position = v.position;

  float distance = length(to_camera);

  float width = v.width;

  float apparent_width = width / min(distance, v.min_apparent_width_distance);

  width = apparent_width * distance;

  width *= 1.0f - v.t;

  position.xyz += normal * (width * 0.5f) * v.u;

  r.proj_pos = r.position = mul(position, view_projection);  r.colour.rgb = v.colour.rgb;

  r.colour.a = lerp(v.colour.a, 0.0f, v.t);

  r.u = v.u;  r.t = v.t;

  r.fade_out_distance = v.fade_out_distance;  r.distance = distance;  r.cross_fade_start_distance = v.cross_fade_start_distance;  r.cross_fade_range = v.cross_fade_range;

  return r;  }

  float4 render_pixel(VS_OUTPUT v) : COLOR  {  float dist_fade_out = v.fade_out_distance / v.distance;  dist_fade_out = clamp( dist_fade_out, 0.0f, 1.0f );

  float width_fade_out = 1.0 - abs( v.u );

  float4 colour = v.colour;

  float cross_fade_t = saturate((v.distance - v.cross_fade_start_distance) / v.cross_fade_range);

  if(render_normal_map)  {  float4 nn = tex2D(s_normal_map, v.proj_pos.xy/30 - float2(0, time_in_sec*0.05f));//float2(v.u/40, v.t*1 - time_in_sec*0.05f));  colour.rgb = nn.rgb;  cross_fade_t = 1.0f - cross_fade_t;  }

  colour.a *= width_fade_out * dist_fade_out * cross_fade_t;

  return hdr_encode(colour);  }

  technique projectile_alpha_sm2  {  pass p0  {  VertexShader = compile vs_2_0 render_vertex();  PixelShader = compile ps_2_0 render_pixel();

  ZWRITEENABLE = false;  ALPHABLENDENABLE = TRUE;  SRCBLEND = SRCALPHA;  DESTBLEND = INVSRCALPHA;  }  }

  technique projectile_add_sm2  {  pass p0  {  VertexShader = compile vs_2_0 render_vertex();  PixelShader = compile ps_2_0 render_pixel();

  ZWRITEENABLE = false;  ALPHABLENDENABLE = TRUE;  SRCBLEND = SRCALPHA;  DESTBLEND = ONE;  }  }

  technique projectile_subtract_sm2  {  pass p0  {  VertexShader = compile vs_2_0 render_vertex();  PixelShader = compile ps_2_0 render_pixel();

  ZWRITEENABLE = false;  ALPHABLENDENABLE = TRUE;  BLENDOP = REVSUBTRACT;  SRCBLEND = SRCALPHA;  DESTBLEND = ONE;  }  }

  现在可以用下面的代码覆盖粘贴进去 注意不要单纯地清空文件 否则会造成跳出  #include "FXConfig.h"

  #include "Camera.fx_fragment"  #include "ScreenEffects.fx_fragment"  #include "fog.fx_fragment"

  struct VS_INPUT  {  float4 position : POSITION;  float3 tangent : NORMAL;  float4 colour : COLOR0;  float width : TEXCOORD0;  float t : TEXCOORD1;  float u : TEXCOORD2;  float min_apparent_width_distance : TEXCOORD3;  float fade_out_distance : TEXCOORD4;  float cross_fade_start_distance : TEXCOORD5;  float cross_fade_range : TEXCOORD6;  };

  struct VS_OUTPUT  {  float4 position : POSITION;  float4 colour : COLOR;  float u : TEXCOORD0;  float fade_out_distance : TEXCOORD1;  float distance : TEXCOORD2;   float t : TEXCOORD3;  float4 proj_pos : TEXCOORD4;  float cross_fade_start_distance : TEXCOORD5;  float cross_fade_range : TEXCOORD6;  };

  DECLARE_TEXTURE(normal_map);  const bool render_normal_map;

  VS_OUTPUT render_vertex(const VS_INPUT v)  {  }

  float4 render_pixel(VS_OUTPUT v) : COLOR  {  }

  technique projectile_alpha_sm2  {  }

  technique projectile_add_sm2  {  }

  technique projectile_subtract_sm2  {  }

  一定要注意备份哦

最新录入 更多