Unity图形学之Shader结构

Unity - Manual: ShaderLab: Legacy Lighting

1.Shader 语言:

cs 复制代码
OpenGL:SGL  跨平台性能非常好 GLSL语言  OpenGL Shader Language



DX:微软 非跨平台 性能非常好  HLSL语言  High Level Shader Language



CG:微软和英伟达 联合开发CG 跨平台 基于C语言 性能非常好

2.Unity Shader语言

cs 复制代码
CG和HLSL 包括在 CGPROGRAM .... ENDCG 语法块内



GLSL 包含在 GLSLPROGRAM .... ENDGLSL 语法块内



自己的语言 Shader Lab

3.Unity Shader 分类:

cs 复制代码
Fixed Shader:Shader 1.0  主要是 开关式的Shader



顶点片段 着色器:Shader 2.0 不光能打开,而且功能里面的公式可以自己定义



Surface Shader:前两个的封装

4.Shader 结构:

cs 复制代码
//Shader 的名字会显示在 Unity 的 Inspector 中 选择 Shader的菜单里面

Shader "Shader名字"

{

    //属性

    [Properties]

    //SubShader就是对应的一个显卡 可能存在多个SubShader Unity会在所有 SubShader列表中选择当前环境中的第一个 SubShader

    SubShader

    {

        //SubShader 的标签

        [Tags]

        //给多个Pass 公用的设置

        [Common State]

        //可能存在多个Pass ,每个Pass都会引发一次渲染

        Pass {

              

            //Pass的标签

            [Pass Tags]

            //渲染设置,如颜色混合

            [Render SetUp]

            //纹理设置,只有在 Fixed Function Shader 中才可用

            [Texture SetUp]

            CGPROGRAM

            ..........

            ..........

            ENDCG

        }

        //可以有多个Pass

        [其他的 Pass]

    }

    //可以多个SubShader

    [其他的SubShader]

    //当所有SubShader 失败的时候,使用Fallback指定的Shader

    FallBack "Diffuse"

    //当有自定义 Shader 的设置 UI 时候使用

    [CustomEditor]

}
相关推荐
暴走约伯1 天前
【VFX工具链源码拆解 02】告别机械劳动(上):一键统改百个子粒子颜色与批量重命名
3d·unity·c#·材质
郝学胜-神的一滴1 天前
游戏设计:原型与开发 18:Unity入门的第一课
人工智能·程序人生·游戏·ui·unity·游戏引擎
淡海水1 天前
09-01-内存-Unity资源生命周期全景
unity·c#·游戏引擎·.netcore·gc
Solange__1 天前
AI世界模型、3D场景生成和游戏引擎怎么选?按5类任务比较交互、物理与导出
开发语言·人工智能·游戏·平面·3d·自然语言处理·游戏引擎
LF男男1 天前
Flower Defense—UIFacade
unity
呆呆敲代码的小Y1 天前
【实战精选面试题】Unity精选面试题详细解答,按模块整理汇总
人工智能·游戏·unity·游戏引擎
小贺儿开发2 天前
《流光绘忆》Unity 沉浸式光影互动
科技·unity·ai·程序员·工具·互动·光影
Aman19842 天前
Claude Code做Unity项目移植(一):从零散工具到团队式
unity·游戏开发·vibe coding·claude code·项目迁移
地狱为王2 天前
Unity使用VoxLock实现语音隔离
unity·游戏引擎·音频处理·voxlock
Jmyd01232 天前
博物馆数字展厅系统架构设计:实景采集到云渲染全链路
unity·系统架构·博物馆·数字展厅·博物馆数字化