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]

}
相关推荐
mxwin14 小时前
unity shader中 ddx ddy是什么
unity·游戏引擎·shader
郝学胜-神的一滴17 小时前
[简化版 GAMES 101] 计算机图形学 08:三角形光栅化上
c++·unity·游戏引擎·godot·图形渲染·opengl·unreal
nnsix17 小时前
Unity ILRuntime 笔记
unity·游戏引擎
nnsix19 小时前
Unity API 兼容的 .NET Standard 2.1 和 .NET Framework 区别
unity·游戏引擎·.net
mxwin19 小时前
Unity Shader 制作半透明物体 使用多Pass提前写入深度的方式 避免穿模
unity·游戏引擎
nnsix21 小时前
Unity HybridCLR 笔记
笔记·unity·游戏引擎
nnsix1 天前
Unity Addressables 笔记
unity·游戏引擎
RReality1 天前
【Unity Shader URP】视差贴图 实战教程
ui·平面·unity·游戏引擎·图形渲染·贴图
小清兔2 天前
Addressable的设置打包流程
笔记·游戏·unity·c#
3D霸霸2 天前
Sourcetree 拉取新工程
数据仓库·unity