shader中的属性
来源:互联网 发布:网络咨询医生技巧例子 编辑:程序博客网 时间:2024/06/11 18:56
实例化Shader为Material时,可以通过为属性赋值达到创建具体对象的目的,可以在Properties块中定义自己所需要的属性
Properties { _MainTex ("Base (RGB)", 2D) = "white" {}//图片形式的属性 _MyColor("Color of Object",Color) = (1,1,1,1)//颜色属性 _MyCube("Enironment map",Cube) = "white"{}//3D贴图,需要6张图片 _MyVector("Vector",vector) = (1,1,1,1)//4个元素的向量 _MyFloat("Float value",float)=1.0//浮点小数 _MyRange("Another type of float",range(-13,14))=1.0//限定范围的浮点数 }
通过图形界面可以操作这些属性
也可以通过代码来设置和读取Shader中的属性,下面是设置的代码
public Material mat; public Texture myPic; public Color purple; public Cubemap cube; public Vector4 vec; public float val_1; public float val_2; // Update is called once per frame void Update () { mat.SetTexture("_MyTexture", myPic); mat.SetColor("_MyColor", purple); mat.SetTexture("_MyCube", cube); mat.SetVector("_MyVector", vec); mat.SetFloat("_MyFloat", val_1); mat.SetFloat("_MyRange", val_2); }
另外,矩阵不能再Properties中定义,我们必须首先在Shader中声明,然后通过脚本来进行读取和写入。
uniformfloat4x4 myMatrix;mat.SetMatrix("myMatrix",matrix);matrix =mat.GetMatrix("myMatrix");
Cg代码中使用属性,除了Unity的固定管线因为有特定语法之外,在Properties块中定义的属性必须在代码中再声明一次才能使用。
sampler2D _MainTex; float4 _MyColor; samplerCUBE _MyCube; float4 _MyVector; float _MyFloat; float _MyRange;
0 0
- shader中的属性
- shader - 属性
- Shader 属性
- Unity Shader修改Shader属性
- Shader以及Unity中的Shader
- Vertex Shader 顶点属性
- Accessing shader properties in Cg/HLSL //访问cg/hlsl中的着色属性
- Unity3D ShaderLab<二>Shader属性
- Unity3D ShaderLab<二>Shader属性
- Unity Shader 属性及标签
- Unity3D中的shader基础知识
- Unity3D中的shader基础知识
- Unity3D中的shader进阶
- Unity3D中的Shader
- 项目中的简单shader
- 设置shader中的变量
- Shader中的Tags
- OpenGL中的Shader
- 让UIScrollView只有一边有弹簧效果
- Codeforces Round #304 (Div. 2)
- leetcode H-Index
- $GLOBALS['HTTP_RAW_POST_DATA'] 和$_POST的区别
- mysqladmin创建MySQL数据库
- shader中的属性
- ac自动机模板-kuangbin
- GCD深入理解
- 泰森多边形(Voronoi图)生成算法
- B树、B-树、B+树、B*树都是什么
- 通过VisualSVN的POST-COMMIT钩子自动部署代码
- 【白书之路】1584 - Circular Sequence 最小字典序
- $GLOBALS['HTTP_RAW_POST_DATA'] 和$_POST的区别
- 8张图理解Java