- 最后登录
- 2021-7-6
- 注册时间
- 2012-12-27
- 阅读权限
- 90
- 积分
- 76145
- 纳金币
- 53488
- 精华
- 316
|
看了视频对着写了一下午,还是有很多地方不懂,老师原理并没有多少讲解,但是也不确定是不是这个fixed function shader 没那么重要,只有把老师的代码和解释尽量做清楚一点。后面还有很多课程,等学完
了应该会懂老师现在的用意吧。- Shader "Custom/Day1Shader" {
- properties{
- _color("Main Color", color) = (1,1,1,1)
- _ambient("Ambient", color) = (0.3,0.3,0.3,0.3)
- _specular("Specular", color) = (1,1,1,1)
- _shininess("Shininess", range(0, 8)) = 4
- _emission("Emission", color) = (1,1,1,1)
- _mainTexture("Main Texture", 2D) = ""//默认值就是纹理的名称
- _secondTexture("Second Texture", 2D) = ""//第二张贴图
- }
- SubShader
- {
- tags{ "Queue" = "Transparent" }//提高渲染序列,让自己先渲染,防止渲染干扰
-
- pass
- {
- //blend 指的是混合
- //srcAlpha正在渲染的物体的Alpha值,即源物体
- //OneMinusSrcAlpha 1- srcAlpha.
- Blend srcAlpha OneMinusSrcAlpha //按比例混合
- material
- {
- diffuse[_color]//默认颜色
- ambient[_ambient]//环境光
- specular[_specular]//集中点镜面高光
- shininess[_shininess]//描述镜面高光镜面反射区域强弱
- emission[_emission]//自发光
- }
- lighting on//开启环境光
- separateSpecular on//开启高光
-
- settexture[_mainTexture]//贴图采样
- {
- //combine是合并操作,primary是关键字,代表前面所有计算过的颜色和光照, 即material到eparateSpecular on
- //但是两个相乘会低于正常显示结果, 所以要乘以二, 即double是提高两倍亮度,quad是四倍
- combine texture * primary double
- }
- //如果需要多张图同时贴入
- settexture[_secondTexture]//贴图采样2,因为不能settexture[_mainTexture, _mainTexture]
- {
- //combine texture * primary double 不能用,combine texture是拿当前的纹理即_secondTexture
- //去乘以之前的所有操作, 即material到eparateSpecular on
- combine texture * previous double//previous是前面所有操作,即material到settexture[_mainTexture]
- }
- }
-
- }
- }
复制代码 |
|