返回介绍

在Cg中访问着色器属性

发布于 2021-06-20 00:15:04 字数 995 浏览 947 评论 0 收藏 0

着色器在一个属性中声明材质 (Material) 属性。如果您想在着色器程序中访问那些属性中的一些属性,您需要声明一个具有相同名称和匹配类型的 Cg/HLSL 变量。在着色器教程:顶点和片元程序中提供 了一个示例。

例如,以下这些着色器属性:

_MyColor ("Some Color", Color) = (1,1,1,1) 
_MyVector ("Some Vector", Vector) = (0,0,0,0) 
_MyFloat ("My float", Float) = 0.5 
_MyTexture ("Texture", 2D) = "white" {} 
_MyCubemap ("Cubemap", CUBE) = "" {} 

的访问权限将在 Cg/HLSL 代码中被声明为:

fixed4 _MyColor; // 精度低的类型对颜色来说已足够
float4 _MyVector;
float _MyFloat; 
sampler2D _MyTexture;
samplerCUBE _MyCubemap;

Cg 也可接受统一的关键字,但这没有必要:

uniform float4 _MyColor;

ShaderLab 中的属性类型以如下方式映射到 Cg/HLSL 变量类型:

  • 颜色和向量属性映射到 float4、half4 或 fixed4 变量。
  • 范围 (Range) 和浮点 (Float) 属性映射到 float、half 或 fixed 变量。
  • 纹理属性映射到普通(二维)纹理的 sampler2D 变量;立方体贴图 (Cubemap) 映射到 samplerCUBE;三维贴图映射到 sampler3D。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文