Unity中寫GLSL(三)—— 試試法線Normal

這裏只是把法線當做color來用。法線的range是-1 - 1所以要轉換range到0 - 1。
下面上圖:

這裏寫圖片描述

下面是代碼:
Shader "Custom/ShaderExample1"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
    }

    SubShader
    {
        Pass
        {
            GLSLPROGRAM

            uniform mat4 _Object2World; //模型座標轉到世界座標矩陣

            #ifdef VERTEX
            //頂點着色器

            out vec4 vertexNormal;  //將normal傳到片元着色器

            void main()
            {
                //將normal從模型座標轉到世界座標
                vertexNormal = _Object2World * vec4(gl_Normal, 0.0);
                gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
            }

            #endif

            #ifdef FRAGMENT
            //片元着色器

            in vec4 vertexNormal;   //從頂點着色器傳過來的normal

            void main()
            {
                gl_FragColor = vertexNormal * 0.5 + 0.5;
            }

            #endif

            ENDGLSL
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章