美文网首页UnityShader
【Unity Shader 】基本结构

【Unity Shader 】基本结构

作者: 小王子称号发放NPC | 来源:发表于2019-07-26 17:27 被阅读0次

    1、ShaderLab

    目前面向GPU的编程有三种高级图像语言:HLSL语言,GLSL语言,Cg语言。

    HLSL语言:High Level Shading Language,由Microsoft公司提供,通过Direct3D图形软件库来编写的着色器语言。
    GLSL语言:OpenGL Shading Language,由OpenGL安委会提供,在OpenGL中进行着色器编程的语言。
    Cg语言:C for Graphics,由NVIDIA公司和Microsoft公司合作提供,有自己的一套关键字和函数库,独立于三维编程接口,在Direct3D和OpenGL上都可工作。
    ShaderLab: Unity 自己又封装了一层CG/HLSL/GLSL的接口,但为了实现跨平台,Unity重点支持Cg着色器语言。所以我们使用的是ShaderLab

    2、渲染流程

    见【Unity Shader入门精要】概念基础

    3、Shader的基本结构

    看一下基本的Shader程序结构

    Shader "Unlit_Tutorial_Shader"{ 
        Properties{             //这个是告诉暴露给editor的属性,可以再编辑器中编辑
            _Color("Total Color",Color) = (1,1,1,1)  //告诉编辑器我有一个属性为Color的数据需要编辑
        }
    
        SubShader{  //每一个Shader都至少有一个SubShader
            Pass{ //每个SubShader至少有一个Pass
                CGPROGRAM
                #pragma vertex vertexFunction   //相当于声明顶点着色器的函数入口
                #pragma fragment fragmentFunction //相当于申明片元着色器的函数入口
                #include "UnityCG.cginc"  //有一些常用函数和常量在这个文件中
    
                struct a2v { //顶点数据结构
                    float4 vertex:POSITION;  //顶点位置,应该是在模型坐标系下的
                    float2 uv:TEXCOORD0;//第一套纹理坐标
                    float3 normal:NORMAL;//顶点法线,应该也是在模型坐标系下的
                };
                struct v2f { //传入片元的数据结构
                    float4 position:SV_POSITION;//裁剪坐标系下的顶点坐标
                    float2 uv:TEXCOORD0;//第一套纹理UV坐标
                };
                
                float4 _Color;  //在Properties声明的_Color,可以再编辑器中修改
    
                v2f vertexFunction(a2v inValue) {//顶点着色器函数入口,要与声明的一致
                    v2f o; 
    
                    return o;
                }
                      //输出值将会存储到渲染目标(render target)中
                fixed4 fragmentFunction(v2f inValue) :SV_TARGET{ //片元着色器函数入口,要与声明一致
                    return  _Color;
                }
    
                ENDCG
            }
        }
    }
    

    3、Properties支持类型

    image.png

    4、SubShader

    相关文章

      网友评论

        本文标题:【Unity Shader 】基本结构

        本文链接:https://www.haomeiwen.com/subject/ewrdrctx.html