Unity ShaderLab 学习笔记(一)
因为项目的问题,有个效果在iOS上面无法实现出来~
因为shader用的HardSurface的,在android上面跑起来没有问题~
以为在iOS上也不会有问题,但是悲剧啊,技能效果一片漆黑~
而且之所以在iOS上面跑6.8FPS,就是因为HardSurface造成的~
没办法临时抱佛脚,一边看视频教程,一边看着圣典的翻译,学一下吧~
但愿能学会......哎......
ShaderLab语法:Properties
Properties { Property [Property ...] }
定义属性块,其中可包含多个属性,其定义如下
name ("display name", Range (min, max)) = number
定义浮点数属性,在检视器中可通过一个标注最大最小值的滑条来修改。
name ("display name", Color) = (number,number,number,number)
定义颜色属性
name ("display name", 2D) = "name" { options }
定义2D纹理属性
name ("display name", Rect) = "name" { options }
定义长方形(非2次方)纹理属性
name ("display name", Cube) = "name" { options }
定义立方贴图纹理属性
name ("display name", Float) = number
定义浮点数属性
name ("display name", Vector) = (number,number,number,number)
定义一个四元素的容器(相当于Vector4)属性
对于纹理(2D, Rect, Cube) 缺省值既可以是一个空字符串("")也可以是某个内置的缺省纹理:"white", "black", "gray" or "bump"
Texture property options 纹理属性选项
包含在纹理属性的大括号中的选项是可选的。可能的选项有:
- TexGen texgenmode 纹理生成类型
- 纹理的自动生成纹理坐标时的模式。
- 可以是ObjectLinear, EyeLinear, SphereMap, CubeReflect, CubeNormal的其中之一;
- (上面着几个没明白都是什么意思,虽然能看到效果,但是不明白这都是什么意思~)
- ObjectLinear:
- EyeLinear:
- SphereMap:
- CubeReflect:
- CubeNormal:
- 这些模式和OpenGL纹理生成模式相对应。
- 注意如果使用自定义顶点程序,那么纹理生成将被忽略。
- LightmapMode 光照贴图模式
- 如果给出这个选项,纹理将能被渲染器的光线贴图属性所影响。
- 纹理不能被使用在材质中,而是取自渲染器的设定。
- 请参考渲染器脚本文档。
- (这段翻译也没明白~额~)