【发布时间】:2010-11-25 04:12:03
【问题描述】:
谁能解释一下像素和顶点着色器交互的基本知识。
显而易见的是,顶点着色器接收基本的顶点属性,然后重新传递其中一些到实际的像素着色器。
但是实际的vertex->pixel 转换是如何发生的呢? 我知道显然所有类型的管道都包含光栅化器更改,它能够插入顶点参数并可以根据某些纹理坐标应用纹理。
据我了解,这些也是插值的(不太确定这一刻,听说过一些关于复杂的 UV 导数数学的东西,但我认为我们可以说它们正在被插值)。
所以,这里有一些“有针对性”的问题。
像素着色器是如何工作的?我的意思是像素着色器显然做了一些动作“每像素”,但是由于不明显的顶点->像素转换这会产生一些问题。
我可以假设如果我在像素着色器中评估 matrix - vector product 一次,当图像被评估时,它会被评估 一次光栅化?或者最好评估我的顶点着色器中可能的所有内容,然后将其传递给像素着色器?
另外,如果有人能指出有关该主题的文章/摘要,我将不胜感激。
谢谢。
更新
我认为这实际上并不重要,因为交互应该在任何地方都差不多。我正在为桌面开发可视化应用程序和游戏,使用 HLSL / GLSL / Nvidia CG 作为着色器,主要使用 C++ 作为基础语言。
【问题讨论】:
-
如果您解释您尝试使用的平台/API,您可能会得到更好的响应。您可能还缺少一两个主题标签。就目前而言,我什至不知道你在说什么。
-
为什么这个标签是 C++?根据定义,着色器是用 GLSL 或 Cg 等着色器语言编写的,而不是用 C++ 编写的?
-
实际上,标签的唯一错误是 C++ 并不真正属于。现代 3D 硬件进行板载着色,并且该代码通常使用高级着色器语言 (HLSL) 编写。我对着色器只有一个初步的了解,我将在此处提供,并将答案部分留给有更多知识的人:顶点着色器将 3D 点投影到 2D 渲染表面上。像素着色器确定给定像素呈现什么颜色。
标签: c++ performance shader