Unity - Fixed function shader学习

注:学习文章,之前在蛮牛上发表。(以前还是那么的青涩...)

看了视频对着写了一下午,还是有很多地方不懂,老师原理并没有多少讲解,但是也不确定是不是这个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]
			}
		}
	
	}
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值