Unity3d 难以理解tex2Dlod的工作原理
我不熟悉着色器编程。我只是参考一些博客来了解这方面的更多信息。我偶然发现了这篇文章 根据他们的说法,他们正在使用置换纹理来计算风的贡献 “我们通过采样位移来计算风的贡献 纹理。“ 以上代码的解释如下所示 风纹理的采样发生在第113-114行,它是 这和我们已经见过很多次的方法差不多 要置换纹理:对纹理进行采样,请偏移UV(此处 它是世界位置的x和z分量),然后映射 从-1到1,再乘以 效果Unity3d 难以理解tex2Dlod的工作原理,unity3d,shader,textures,geometry-shader,Unity3d,Shader,Textures,Geometry Shader,我不熟悉着色器编程。我只是参考一些博客来了解这方面的更多信息。我偶然发现了这篇文章 根据他们的说法,他们正在使用置换纹理来计算风的贡献 “我们通过采样位移来计算风的贡献 纹理。“ 以上代码的解释如下所示 风纹理的采样发生在第113-114行,它是 这和我们已经见过很多次的方法差不多 要置换纹理:对纹理进行采样,请偏移UV(此处 它是世界位置的x和z分量),然后映射 从-1到1,再乘以 效果 中点此处表示三角形的中点。 据我所知,在mul(unity_ObjectToWorld,middpoint
中点
此处表示三角形的中点。
据我所知,在mul(unity_ObjectToWorld,middpoint)中代码>我们正在获得中点的世界位置
我真的不明白发生了什么事
float2 windTex = tex2Dlod(_WindTexture, float4(worldPos.xz *
_WindTexture_ST.xy + _Time.y * _WindSpeed, 0.0, 0.0)).xy;
我真的不明白.xz和.xy是如何工作的!我到处都找了,还是抓不住
有人能解释一下吗?谢谢大家! 它叫worldPos.xz*\u WindTexture\u ST.xy+\u Time.y*\u风速
相当于float2(worldPos.x,worldPos.z)*float2(\u WindTexture\u ST.x,\u WindTexture\u ST.y)+float2(\u Time.y*\u风速,\u Time.y*\u风速)
@Pluto非常感谢!你对tex2Dlod也有什么想法吗?你可以看看。tex2Dlod(s,t)
使用mipmap LODt.w
在uvst.xy
处采样s
。在该float4(worldPos.xz*..,0,0)
t.w中,最后一个组件是0。这里也使用tex2Dlod而不是tex2D,因为它位于顶点着色器侧,没有坐标的屏幕空间导数可用于自动确定mipmap级别
float2 windTex = tex2Dlod(_WindTexture, float4(worldPos.xz *
_WindTexture_ST.xy + _Time.y * _WindSpeed, 0.0, 0.0)).xy;