
[英]What's the smallest DirectX installer I can distribute in my Software?
[英]New to DirectX, can someone explain what this declaration is?
在过去的几个月中,我一直在研究游戏的引擎,并且在提取DX9字节码之后,已经开始研究游戏的着色器。 我主要使用OpenGL,因此某些语法或处理方式对我来说是新的。
无论如何,这是一个5x5高斯模糊像素着色器(3.0)。 谁能解释纹理坐标声明的内容? 这是否意味着会将4个坐标发送到像素着色器? 还是重复使用相同的纹理坐标?
def c0, 0.120259, 0.162103, 0.089216, 0.000000
dcl_texcoord0 v0.xy
dcl_texcoord1 v1
dcl_texcoord2 v2
dcl_texcoord3 v3
dcl_texcoord4 v4
dcl_2d s0
tex_pp r0, v1.zwzw, s0
mul r0, r0, c0.x
tex_pp r1, v1, s0
mad_pp r0, r1, c0.y, r0
tex_pp r1, v2, s0
mad_pp r0, r1, c0.x, r0
tex_pp r1, v2.zwzw, s0
mad_pp r0, r1, c0.x, r0
tex_pp r1, v3, s0
mad_pp r0, r1, c0.x, r0
tex_pp r1, v3.zwzw, s0
mad_pp r0, r1, c0.z, r0
tex_pp r1, v4, s0
mad_pp r0, r1, c0.z, r0
tex_pp r1, v4.zwzw, s0
mad_pp r0, r1, c0.z, r0
tex_pp r1, v0, s0
mad_pp oC0, r1, c0.z, r0
end
dcl_texcoord
ASM指令声明了一个包含数据的寄存器。 对于D3D9中的像素着色器,此数据将写入顶点阶段。 因此,是的,在此着色器中,实际上使用了5组纹理坐标(0..4)。 第一个坐标仅使用两个第一个分量,这就是为什么用那些显式声明它们的原因(这减少了阶段之间所需的带宽)。 其他四个也对上面的两个分量进行附加采样,因此着色器采样总数为9倍。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.