首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于DirectX来说,有人能解释一下这个声明是什么吗?

对于DirectX来说,有人能解释一下这个声明是什么吗?
EN

Stack Overflow用户
提问于 2015-07-06 14:49:45
回答 1查看 88关注 0票数 1

在过去的几个月里,我一直在研究一个游戏的引擎,在提取DX9字节码之后,我已经开始检查游戏的着色器。我主要使用OpenGL,所以一些语法或方法对我来说是新的。

无论如何,这是一个5x5高斯模糊像素着色器(3.0)。有人能解释一下纹理和弦声明是怎么回事吗?这是否意味着4个坐标被发送到像素着色器?还是同样的纹理坐标被重用了?

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-06 16:26:47

dcl_texcoord ASM指令声明包含数据的寄存器。对于D3D9中的像素着色器,这些数据将被写入顶点阶段。所以,是的,在这个阴影中,实际上有5组纹理坐标在使用(0..4)。第一个坐标只使用两个第一个组件,这就是为什么使用这些组件显式声明的原因(这减少了各个阶段之间所需的带宽)。其他四个做额外的样本与上两个组成部分,以及,所以阴影样本在9倍的总数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31248934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档