常见两种Shader讲解

说明:

Unity的Shader分为三类:

  • Fixed function shader——属于固定渲染管线Shader, 基本用于高级Shader在老显卡无法显示时的Fallback。
  • Vertex and Fragment Shader——属于Unity常见Shder之一,可编程渲染管线.。
  • Surface Shade——属于Unity常见Shader之一,使用Unity预制的光照模型来进行光照运算。
主要说明一下Vertex and Fragment Shader与Surface Shade的一些常见性质,对总搞不清这两种常见可编程Shader的童鞋们科普一下。

Vertex and Fragment Shader与Surface Shade的共同点:

  • 必须从唯一一个根Shader开始
  • 可以设置Properties参数部分,作用及语法完全相同
  • 具体功能都在SubShader里(Subshader: 子Shader,Shader会自上而下运行第一个硬件能支持的Subshader,主要作用是对不用硬件的支持。)
  • 都可以打标签,例如Tags { "RenderType" = "Opaque" }    LOD100 等
  • 都可以设置Fallback,如“Fallback "Legacy Shaders/Transparent/VertexLit"”
  • 都可以处理基本的功能,例如光照漫反射(Diffuse)以及镜面反射(Specular)。

Vertex and Fragment Shader与Surface Shade的差异:

  • Vertex and Fragment Shader在subshader下面还有pass{}
  • Surface Shader,由于已经将具体内容打包在光照模型了,不能加pass{},加了会报错。
  • Vertex and Fragment Shader的核心是:
  • CGPROGRAM
    #pragma vertex vert
    #pragma fragment frag          
    #include "UnityCG.cginc"
    ENDCG
  • Surface Shader的核心:
    
  • <pre name="code" class="html">CGPROGRAM
    #pragma surface surf Lambert
    ENDCG
     
  • Surface Shader是Unity3d自带光照模型Lambert,也不做顶点处理,那么只需要一个表面处理函数surf即可
    

Surface Shade标准的输出结构的三种:

SurfaceOutput


struct SurfaceOutput
 {
    <span style="white-space:pre">	</span>fixed3 Albedo;  // 漫反射颜色
   <span style="white-space:pre">	</span>fixed3 Normal;  // 切线空间法线,如果赋值的话
   <span style="white-space:pre">	</span>fixed3 Emission;
    <span style="white-space:pre">	</span>half Specular;  // 高光强度,范围是0-1
    <span style="white-space:pre">	</span>fixed Gloss;    // specular intensity
    <span style="white-space:pre">	</span>fixed Alpha;    // 透明度
};

SurfaceOutputStandard

struct SurfaceOutputStandard
{
	fixed3 Albedo;	  // 基础 (漫反射或镜面反射) 颜色
	fixed3 Normal;	  // 切线空间法线,如果赋值的话
	half3 Emission;
	half Metallic;	  // 0=非金属, 1=金属
	half Smoothness;	// 0=粗糙, 1=光滑
	half Occlusion;	 // 遮挡(默认1)
	fixed Alpha;		// 透明度
};

SurfaceOutputStandardSpecular

struct SurfaceOutputStandardSpecular
{
	fixed3 Albedo;	  // 漫反射颜色
	fixed3 Specular;	// 镜面反射颜色
	fixed3 Normal;	  // 切线空间法线,如果赋值的话
	half3 Emission;
	half Smoothness;	// 0=粗糙, 1=光滑
	half Occlusion;	 // 遮挡(默认1)
	fixed Alpha;		// 透明度
};



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值