-{zh-hans:高級;zh-tw:高階;}-着色器语言(即 HLSL,缩写自 或 ),是由微軟擁有及開發的一種着色器語言,最初的开发是为了辅助 Direct3D 9 的着色器-{zh-hans:汇编语言;zh-tw:組合語言;}-,后成为 Direct3D 10 以来所必须的语言。
HLSL只能供微軟的Direct3D以及XNA使用。HLSL是GLSL的先辈,不能與OpenGL標準兼容。它跟Nvidia的Cg非常相似,是因为两个开发者曾经紧密合作。
HLSL的主要作用為將一些複雜的圖像處理,快速而又有效率地在顯示卡上完成,與組合式或低階Shader Language相比,能降低在編寫複雜特殊效果時所發生編程錯誤的機會。
Shader model 比較
Pixel shader 比較
*PS 2.0 = DirectX 9.0 original Shader Model 2 specification.
*PS 2.0a = NVIDIA GeForce FX-optimized model.
*PS 2.0b = ATI Radeon X700, X800, X850 shader model, DirectX 9.0b.
*PS 3.0 = Shader Model 3.0.
*PS 4.0 = Shader Model 4.0.
*PS 4.1 = Shader Model 4.1.
*PS 5.0 = Shader Model 5.0.
"32 + 64" for Executed Instructions means "32 texture instructions and 64 arithmetic instructions."
Vertex shader 比較
{| class="wikitable"
|-
! Vertex shader 版本
!VS 1.1
!VS 2.0 !!VS 5.0
*VS 4.0 = Shader Model 4.0.
*VS 4.1 = Shader Model 4.1.
*VS 5.0 = Shader Model 5.0.
範例
;灰階貼圖用
- 灰階值 = 0.3 x 紅 + 0.59 x 綠 + 0.11 x 藍
sampler2D Texture0;
float4 ps_main( float2 texCoord : TEXCOORD0 ) : COLOR
{
float4 _inColor = tex2D( Texture0, texCoord );
float gray = 0.3_inColor.x + 0.59_inColor.y + 0.11*_inColor.z;
float4 _outColor = float4(gray, gray, gray, 1.0);
return _outColor;
}
注釋
外部連結
- [http://msdn2.microsoft.com/en-us/library/ms810449.aspx Introduction to the DirectX 9 High-Level Shader Language] (MSDN Library)
- [http://www.neatware.com/lbstudio/web/hlsl.html HLSL Introduction]
- [http://www.beyond3d.com/previews/nvidia/nv40/index.php?p=5 Shader Model Comparison at Beyond3D]
- [http://www.riemers.net/Tutorials/DirectX/Csharp3/index.php Riemer's HLSL Introduction & Tutorial with lots of sample code]
评论 (0)