【shader】【技术分享】 Day22 空气扭曲效果
shader吧
全部回复
仅看楼主
level 8
縩🐷师傅 楼主
1.冷扭曲 uv扭曲 噪点图
2.热扭曲 整个场景扭曲
uv贴图是整个场景 火把 水体 气体扰动
热扭曲有 性能开销 两个 Pass 1.抓屏 2 结果扭曲
2023年07月26日 09点07分 1
level 8
縩🐷师傅 楼主
纹理贴图方法
贴一张图片
Properties
{
_BaseTex("Base Texture",2d)="white"{}
//默认不写就是灰色的纹理
}
--------------------------------------------------------------------------------------------------------------
可以传进来要使用的贴图
贴图的使用方法=》贴图采样器,贴图纹理坐标
sampler2D _BaseTex;//保持一致
2.纹理坐标
0,0 贴图 左下角点
-------------------------------------------------------------------------------------------
uv坐标计算
flaot4 _BaseTex_ST;
//xy对贴图进行重复 zw进行平移
2023年07月26日 10点07分 2
level 8
縩🐷师傅 楼主
uv 坐标由美工决定
程序里也可以手动调转贴图坐标
tex2D(_BaseTex,i.uv) =>黑色
为什么是黑色?
调试技巧 return float4(i.uv,0,1);
uv坐标值全是0
在顶点处理的时候要对uv进行计算
flaot4 _BaseTex_ST;
o.uv =TRANSTER_TEX(v.uv,_BaseTex);
-----------------------------------------------------------------------------------
如果要上下翻转这个图像
flaot4 _BaseTex_ST; 内置生成好的
--------------------------
TRANSTER_TEX 宏定义
o.uv = v.uv*_BaseTex_ST.xy +_BasetTex_ST.zw;
纹理图的采样模式
重复
夹持
镜像
一次镜像
各向异性
=》DirectX 图形学底层 纹理贴图
Tiling 的 x 对应的的是 _BaseTex_ST.x
Tiling 的 y 对应的的是 _BaseTex_ST.y
2023年07月27日 04点07分 3
level 8
縩🐷师傅 楼主
1.对噪点图采样
将噪点图采样的颜色值作为抓屏纹理采样的uv坐标
像素管线
float2 screenUV = i.screenUV.uv/i.screenUV.w;
float2 distoreUV =tex2D(_DistoreTex,i.uv);
float2 uv = lerp(screenUV,distoreUV,_DistoreStrength*_CosTIme);
return tex2d(_GrabTexture,uv);
材质设置为动画材质 ,编辑器就能看
2023年07月27日 09点07分 4
1