常见两种Shader讲解
来源:互联网 发布:淘宝客服账号实名认证 编辑:程序博客网 时间:2024/06/17 15:59
说明:
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 LambertENDCG
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 0
- 常见两种Shader讲解
- unity混合两种贴图shader
- 【Unity Shader编程】之十四 边缘发光Shader(Rim Shader)的两种实现形态
- Shader编程】之十四 边缘发光Shader(Rim Shader)的两种实现形态
- Unity Shader 常见参数
- 两种常见排序算法
- 常见两种LINK错误
- 【Shader】边缘发光效果的两种写法
- Unity3D Computer Shader 实例讲解
- apache的两种工作模式讲解
- apache的两种工作模式讲解
- Apache MPM两种方式讲解
- 快排算法及常见两种常见优化方法
- java常见的两种Singleton模式
- 两种常见的单例模式
- 两种常见模型设计类型
- 快速排序-两种常见的划分
- Builder模式两种常见写法
- 第9节--列表list与元组tuple的对比
- 异常的捕获及处理
- WEB端即时通讯技术
- Codeforces-697B Barnicle(模拟)
- Docker的终极进化
- 常见两种Shader讲解
- 161024
- 142. Linked List Cycle II
- 友链——MAN
- 开通博客啦~~~
- node学习笔记(csdn报错导致丢失)
- Altium09不能启动问题的解决
- 点亮Led灯
- YII2 数据库配置&&数据模型分配视图