NewSurfaceShader解读

Shader "Loong/SurfaceShader" {
	Properties {
		_Color ("Color", Color) = (1,1,1,1)
		_MainTex ("Albedo (RGB)", 2D) = "white" {}
		_Glossiness ("Smoothness", Range(0,1)) = 0.5		
		_Metallic ("Metallic", Range(0,1)) = 0.0			
	}
	SubShader {
		Tags { "RenderType"="transparent" "Queue"="transparent"}		//RenderType描述渲染类型,Opaque(不透明),Transparent(半透明),TransparentCutout(蒙皮透明),Background(天空盒),Overlay(光晕),还有部分地形引擎中的渲染类型
        //LOD表示细节呈现级别(也即是画质,即粗糙 / 细腻程度)
		//当机器很差的时候,差到其评估值小于200时,本材质无效(也就是本shader罢工)。当机器的性 
         // 能不错,大于200时,本shader继续工作。就是这么有个性。
		LOD 200			

		CGPROGRAM		//CG代码块
		//#pragma surface surf Standard fullforwardshadows	//#pragma编译指令,surface是指按照surface方式进行编译,surf是指下面的运算函数surf,Standard是指光照模型(LightModel,也是一个函数),后面可以添加多个参数,fullforwardshadows是指在forward渲染模式下支持所有阴影,添加alpha使shader支持透明通道
		#pragma surface surf Standard alpha	//添加alpha使shader支持透明通道

		#pragma target 3.0			//使用3.0的shader model,以获取更绚丽的视觉效果


		struct Input {				//纹理坐标的结构体,结构体内部uv变量命名要注意以uv开头,后续跟上贴图纹理名称,否则无法完成纹理采样
			float2 uv_MainTex;
		};
		
		//对于这段CG程序,要想访问在Properties中所定义的变量的话,必须使用和之前变量相同的名字/进行声明!
		sampler2D _MainTex;			//二维纹理声明,sampler2D与属性中2D对应
		half _Glossiness;			//浮点值声明,	half与属性中float对应
		half _Metallic;
		fixed4 _Color;				//四维向量声明,fixed4与属性中color对应

		
         /* inout SurfaceOutputStandard o
            这个结构有哪些包含的变量呢:
            struct SurfaceOutput {
                half3 Albedo;     //像素的颜色
                half3 Normal;     //像素的法向值
                half3 Emission;   //像素的发散颜色
                half Specular;    //像素的镜面高光
                half Gloss;       //像素的发光强度
                half Alpha;       //像素的透明度
            };*/
        //inout有信息传出的效果
		void surf (Input IN, inout SurfaceOutputStandard o) {		//inout既是输入又是输出,SurfaceOutputStandard结构体可查看Unity官方文档
			fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;	//从纹理中采样获取颜色
			o.Albedo = c.rgb;										//漫反射颜色
			o.Metallic = _Metallic;									//用于计算金属光泽
			o.Smoothness = _Glossiness;								//用于计算高光强度
			o.Alpha = c.a;											//描述采样过后alpha值
		}
		ENDCG
	}
	FallBack "Diffuse"			//若硬件不支持以上算法则用默认shader替换
}

转载:https://blog.csdn.net/u013032852/article/details/79628099

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值