文章来源:互联网整理作者:招财猫手游网发布时间: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 { }
一定要注意备份哦
上一篇: DOTA2 6.86术士攻略_DOTA2 6.86术士怎么出装、术士怎么玩、术士怎么对线
6.86版本也出来了一段时间了,今天小编给大家带来的是6.86当前版本术士的玩法攻略,一起来看看吧DOTA2 6.86术士攻略、DOTA2 6.86术士怎么出装、术士怎么玩、术士怎么对线!本
下一篇: 魔兽世界6.2新增追随者获取攻略、获得方法_魔兽世界6.2阿里乌克获取攻略、欧鲁诺克获取攻略
啦啦啦,萌萌哒小编又来啦!自从6.0有了要塞之后,玩家们都热衷于收集自己的随从大军!现在6.2就要来了!在6.2版本里新增加了两名追随者供玩家收集。下面就来详细的看一看吧。
很抱歉没有了。
这已经是最后一篇啦~
相关攻略 更多
最新资讯 更多
原神浮生石片有什么用
更新时间:2022-08-22
原神可莉要元素精通吗(原神可莉武器推荐)
更新时间:2022-08-22
奥拉星潮牌盲盒机在哪(银潮牌活塞式空压机)
更新时间:2022-08-22
帝王上阵有讲究?这是《空岛幻想》的布阵指南~
更新时间:2022-08-22
原神赛诺是男是女 新角色性别介绍
更新时间:2022-08-22
原神四风原典适合谁带 是谁的专属武器
更新时间:2022-08-22
王者荣耀snk英雄哪个值得入手 SNK英雄强度排行
更新时间:2022-08-22
封龙战纪好玩吗?最新游戏评测解析(封龙战纪攻略)
更新时间:2022-08-22
和平精英在哪里练枪(和平精英在哪里练枪最快)
更新时间:2022-08-22
云顶之弈巨岩龙羁绊效果是什么 云顶之弈S7.5新羁绊巨岩龙效果介绍
更新时间:2022-08-26