其他分享
首页 > 其他分享> > Unity_Shader,作用流程入门程精讲

Unity_Shader,作用流程入门程精讲

作者:互联网

Unity_Shader

写在前面

渲染流水线

什么是渲染流水线

渲染流水线的各大阶段

渲染流水线主要有三个阶段,应用阶段,几何阶段,光栅化阶段。

应用阶段_程序与数据的读入

几何阶段_顶点着色器

struct VertexInput
            {
                float4 Pos:POSITION;            //语义绑定
                float2 uv:TEXCOORD0;         //语义绑定
            };
#pragma vertex _Vert

光栅化阶段_片元着色器

            struct VertexOutput
            {
                float4 Pos:SV_POSITION;
                float2 uv:TEXCOORD0;
            };
#pragma fragment Pixel

简单例子

Shader "Custom/test"          //指明其为shader代码,后面的字符串是其在材质选择渲染器时的路径
{
    Properties                        //公开型变量,在材质的属性面板可以修改
    {
    }
    SubShader                      //语法之一写就完事了,之后在理解。
    {

    }
    FallBack "Diffuse"            //默认声明,表示如果我们写的SubShader在当前设备上不支持,就用默认渲染
}

    Properties                        //公开型变量,在材质的属性面板可以修改
    {
    	        _Color ("Color", Color) = (1,1,1,1)
    }
    SubShader
    {
        pass
        {
                CGPROGRAM
                #pragma vertex _Vert
                #pragma fragment Pixel
                #include "UnityCG.cginc"
                ENDCG
        }
    }
                struct VertexInput
                {
                    float4 Pos:POSITION;
                };
                struct VertexOutput
                {
                    float4 Pos:SV_POSITION;
                };
                fixed4 _Color;
                VertexOutput _Vert(VertexInput v)
                {
                    VertexOutput r;
                    //将顶点转换到剪裁空间
                    r.Pos = UnityObjectToClipPos(v.Pos);
                    return r;
                }
                fixed4 Pixel(VertexOutput v):SV_Target
                {
                    //直接将定义好的颜色返回为该片元的颜色
				    return _Color;
                }
Shader "Custom/test"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
    }
    SubShader
    {
        pass
        {
                CGPROGRAM
                #pragma vertex _Vert
                #pragma fragment Pixel
                #include "UnityCG.cginc"
                struct VertexInput
                {
                    float4 Pos:POSITION;
                };
                struct VertexOutput
                {
                    float4 Pos:SV_POSITION;
                };
                fixed4 _Color;
                VertexOutput _Vert(VertexInput v)
                {
                    VertexOutput r;
                    //将顶点转换到剪裁空间
                    r.Pos = UnityObjectToClipPos(v.Pos);
                    return r;
                }
                fixed4 Pixel(VertexOutput v):SV_Target
                {
                    //直接将定义好的颜色返回为该片元的颜色
				    return _Color;
                }
                ENDCG
        }
    }
    FallBack "Diffuse"
}

标签:渲染,精讲,绑定,shader,Shader,Unity,片元,顶点,着色器
来源: https://blog.csdn.net/weixin_44579240/article/details/112741146