我一直在尝试使用更复杂的着色器,并遇到顶点着色器和纹理采样器使用的坐标系问题。简而言之:他们似乎没有任何意义,而当试图对它们进行测试时,我最终会得到不一致的结果。更糟糕的是,互联网对文档没什么影响,我发现的大部分信息似乎都希望我知道它是如何工作的。我希望有人可以澄清以下内容:Stage3D,AGAL - 顶点和纹理坐标系
- 顶点着色器通过表示渲染目标位置的(x,y,z)。 x,y和z的可接受值是多少?
- x和y如何对应后缓冲区的宽度和高度(假设它是渲染目标)?
- x和y如何对应输出纹理的宽度和高度(假设它是渲染目标)?
- 当x = 0和y = 0时,顶点位置在哪里,位置方向?
- 纹理采样器在(u,v)坐标处对纹理进行采样。 u和v的可接受值是多少?
- u和v如何对应被采样纹理的宽度和高度?
- AGAL的包裹,钳位和重复标记如何改变采样,以及没有给出的默认行为是什么?
- 在u = 0和v = 0采样时,哪个像素返回位置方向?
编辑: 从我的测试中,我相信答案是:
- 不确定
- -1左/底,1为右/上
- 不确定
- 在输出的中心
- 不确定
- 0左/底,1为右/上
- 不确定
- 远左下角的纹理
你是在学习这个,是为了你自己的理解,还是为了你可以使用Stage3D来制作一些东西? – Marty
两个!我之前使用过像素着色器,但是它们是更高级的,因此在语法上与Flash中使用的不同。如果这些问题得到解答,我应该可以毫无困难地继续下去。 在提出这个问题之前:我不愿意使用现有的引擎(Starling,Away3D等) - 我的应用程序的工作方式使得这些程序无论如何都无济于事。 – Conduit
当然,这很好。我没有这个编程水平的大脑,所以我确实会推荐一些现有的东西:-) – Marty