【Unity5.x Shaders】压缩数组Packed arrays
来源:互联网 发布:中超球员籍贯数据库 编辑:程序博客网 时间:2024/06/05 10:25
在Cg中有两种变量:单一值(single values)和压缩数组(packed arrays)。
压缩数组的定义是类型 + 数字
例如float3,int4
压缩数组看起来跟普通的数组很像却又不一样,压缩数组的元素可以作为普通结构访问。
压缩数组中成员的访问及赋值
通常通过x,y,z,w访问
float4 a; a.x=2.0;
Cg也提供别名:r, g, b,a
这两种访问方式没有区别,但是不能混用,例如_Color.xgb
是错误的Cg允许压缩数组同时访问多个成员
o.Albedo = _Color.rgb;
允许重排这些元素的顺序,可以使用下面的代码交换颜色的红和蓝通道
_Color.rgb = _Color.bgr;
压缩数组可以被赋值单一值,它将拷贝给压缩数组的所有字段(涂抹smearing):
o.Albedo = 0; // Black =(0,0,0)o.Albedo = 1; // White =(1,1,1)
- 也可以给压缩数组的部分成员赋值(蒙版masking)
o.Albedo.rg = _Color.rg;
压缩矩阵
Cg中允许类似于float4x4
的类型,这代表了一个4行4列浮点数的矩阵
- 你可以通过_mRC访问矩阵中的单一成员,这里的R代表行,C代表列
float4x4 matrix;// ...float first = matrix._m00;//访问matrix中第1行第1列的元素float last = matrix._m33;//访问matrix中第4行第4列的元素
_mRC也可以被连接
float4 diagonal = matrix._m00_m11_m22_m33;
这里把矩阵中的四个元素赋值给了float4类型的变量选择矩阵的整行可以使用方括号[]
float4 firstRow = matrix[0];// Equivalent tofloat4 firstRow = matrix._m00_m01_m02_m03;
0 0
- 【Unity5.x Shaders】压缩数组Packed arrays
- 【Unity5.x Shaders】Properties 属性
- 【Unity5.x Shaders】Shader基本结构
- 【Unity5.x Shaders】Shader中的Texture纹理
- 【Unity5.x Shaders】使用Shader制作河流效果
- 【Unity5.x Shaders】最基本的Surface Shader-Diffuse shader以及Surface中的三种输出结构
- [cg]difference between Packed and UnPacked Arrays
- unity5.x的bug
- Drawcall总结-Unity5.X
- Unity5.x依赖打包
- Unity5.x新特性
- UIGUI Unity5.x 学习
- Unity5.x入门游戏
- unity5.x 场景切换
- Unity5.x 解析Json
- unity5.X AssetBundle
- Unity5.x AssetsBundle笔记
- Unity5.X AssetBundle打包
- visual studio(vs) 如何快速查找接口的实现类
- Noip2015 D2T1 跳石头
- 关于4个位置的仿二进制解析
- 关于多文件下多图片路径的生成
- Unity GearVR SDK解析
- 【Unity5.x Shaders】压缩数组Packed arrays
- Twitter股价暴跌 但卖空者错过了绝佳赚钱机会
- 设置mysql远程连接权限
- 索尼进军手机游戏市场:2018年将推出第一款手游
- Windows下MongDB安装应用指导
- 兴趣社交网络应用Pinterest月活用户突破1.5亿 增长50%
- 印象笔记:部分Mac用户因为故障而丢失数据
- Codeforces Round #377 A.B.C.D
- PopupWindow和PopupMenu