[Unity] Shader - CG语言 流程控制语句
2016-04-18 11:44
543 查看
CG语言中:
不支持 switch 语句(可以写,但不能很好的执行。)
循环语句中, 循环次数不能大于 1024 ,否则会报错。
If...ELSE 条件判断语句:
if (true) {
} else {
}
If...ELSE IF...ELSE... 嵌套语句
if (true) {
} else if (true) {
} else {
}
While语句:
while (bool) {
}
Do...While语句:
do {
} while (bool)
For 循环语句:
for (int i=0; i < xxx; i++) {
}
示例代码
不支持 switch 语句(可以写,但不能很好的执行。)
循环语句中, 循环次数不能大于 1024 ,否则会报错。
If...ELSE 条件判断语句:
if (true) {
} else {
}
If...ELSE IF...ELSE... 嵌套语句
if (true) {
} else if (true) {
} else {
}
While语句:
while (bool) {
}
Do...While语句:
do {
} while (bool)
For 循环语句:
for (int i=0; i < xxx; i++) {
}
示例代码
Shader "Custom/001" { SubShader { pass { CGPROGRAM #pragma vertex vert #pragma fragment frag void vert(in float2 objPos: POSITION, out float4 pos: POSITION, out float4 col: COLOR) { pos = float4(objPos,0,1); if (pos.x < 0 && pos.y < 0) { col = float4(1,0,0,1); } else if (pos.x < 0) { col = float4(0,1,0,1); } else if (pos.y > 0) { col = float4(1,1,0,1); } else col = float4(0,0,1,1); } void frag(inout float4 col: COLOR) { int i = 0; while (i < 10) { i++; } if (i == 10) col = float4(0,0,0,1); i = 0; do { i++; } while (i < 10); if (i == 10) col = float4(1,1,1,1); for (i=0; i < 10; i++) { } if (i == 10) col = float4(0.5,0.5,0,1); } ENDCG } } }
相关文章推荐
- Unity依赖注入使用
- unity shader中的surfaceoutput问题
- Unity3D优化学习记录
- Unity学习(九)Bresenham快速画直线算法
- Unity之将Texture保存成png
- Unity3D内存管理
- Unity3D脚本(MonoBehaviour)生命周期
- Unity Manual 笔记01 第一章 使用Unity工作——资源工作流
- unity3d面试2
- 【转】[unity3d]easytouch的使用
- Unity Shader 二 发光Shader
- 关于部分Unity发布IOS报错的解决办法
- Unity Panel open & close
- Unity3d-Application设备读写目录
- Unity monodev环境搭建
- Unity-破解-Disunity、Unity Studio提取资源
- Unity.击球游戏
- Unity3D中的Coroutine详解
- Unity 使用 Stripping Level == Use micro mscorlib 导致 MD5.Create() 返回NULL
- Unity3D学习笔记(7)—— 击球游戏