热门问题
时间线
聊天
视角
高级着色器语言
来自维基百科,自由的百科全书
Remove ads
高級着色器语言(即 HLSL,缩写自 High Level Shader Language[1] 或 High-Level Shading Language[2]),是由微软拥有及开发的一种着色器语言,最初的开发是为了辅助 Direct3D 9 的着色器汇编语言,后成为 Direct3D 10 以来统一着色器模型所必须的语言。
HLSL只能供微软的Direct3D以及XNA使用。HLSL是GLSL的先辈,不能与OpenGL标准兼容。它跟Nvidia的Cg非常相似,是因为两个开发者曾经紧密合作。[3]
HLSL的主要作用为将一些复杂的图像处理,快速而又有效率地在显卡上完成,与组合式或低阶Shader Language相比,能降低在编写复杂特殊效果时所发生编程错误的机会。
Shader model 比较
- 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."
Remove ads
- VS 2.0 = DirectX 9.0 original Shader Model 2 specification.
- VS 2.0a = NVIDIA GeForce FX-optimized model.
- VS 3.0 = Shader Model 3.0.
- Note that ATI X1000 series cards (e.g. X1900) does not support Vertex Texture Fetch, hence it does not fully comply with the VS 3.0 model. Instead, they offer a feature called "Render to Vertex Buffer (R2VB)" that provides functionality that is a superset of Vertex Texture Fetch.[12]
- 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;
}
注释
外部链接
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads