高级着色器语言
编辑高级着色器语言, 是一种为 DirectX 开发的编程语言,用于对着色器模块进行编程。 着色器的整个高级编程语言组有时也称为 HLSL。
任务
编辑在计算机图形学中,“着色”意味着改变图形管道中的单个顶点或片段。 工作尽可能地贴近硬件,这就造成了长期使用汇编程序的必要性。 然而,使用汇编程序编程非常不切实际、容易出错并且依赖于硬件制造商。 高级着色器语言应该弥补这一事实。 它们提供了简化编程的高级语言结构,从而使程序员能够专注于他的目标。 编译器将高级语言代码翻译成图形处理器的机器语言。 DirectX专用的高级语言HLSL在应用程序运行时,在图形驱动的帮助下,由DirectX库翻译成适合当前图形硬件的汇编语言。
语言元素
编辑HLSL 不像其他语言那样提供 OOP 方法。 它强烈基于 C,但为着色器编程提供了优化的数据类型和操作。
全局着色器参数
传递给着色器的参数在 HLSL 的完整代码中是全局可用的。 它们写在方法或结构之外,通常在代码的开头。
顶点着色器的输入输出
统一结构在实践中很常见,而不是将每个参数单独写入着色器方法的参数列表。 这样可以节省文书工作并提高清晰度。 原则上,任何值和向量都可以与输入结构一起传递,但几乎总是包含一个位置。
“In-Struct”指定从线框模型传递到着色器的数据结构。 这会处理数据并返回一个“out struct”作为返回类型。 然后将其传递给 PixelShader,它最终只返回 float4 或与最终像素颜色类似的东西。
顶点/像素着色器方法
顶点着色器和像素着色器必须存在一个方法。 这需要一个数据结构并相应地处理它。 顶点着色器为每个顶点调用一次,像素着色器为每个要渲染的纹理像素调用一次。
几何着色器
几何着色器的实现是可选的,它允许将图元映射到 0 到 n 个新图元。 但是,输出图元的类型和生成的xxx顶点数必须在编译时指定。 这里的实现是程序化的,并使用专门引入的数据结构。
也可以访问相邻的三角形和线。 这可以使用输入修饰符 trianglead 和 lineadj 来实现。 几何着色器的典型用途是点精灵生成和渲染到立方体贴图纹理。
技术
编辑着色器的语法在 DirectX 10 中略有变化,这也是技术中明确说明目标版本的原因。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/372007/