21.CG语法顶点片元函数基本结构

21.CG-顶点片元着色器基本结构


21.1 知识点

先创建顶点片元着色器,删除默认代码吗,只保留基本结构

Shader "ShaderTeach/Lesson21_NewUnlitShader"
{
    Properties {}
    SubShader
    {

        Pass
        {
            CGPROGRAM

            ENDCG
        }
    }
}

顶点着色器基本结构

Pass
{
    CGPROGRAM
    //先通过编译指令指定实现顶点着色器的指定函数
    #pragma vertex myVert

    //顶点着色器 回调函数 
    //POSITION 和 SV_POSITION是CG语言的语义
    //POSITION:把模型的顶点坐标填充到输入的参数v当中
    //SV_POSITION:顶点着色器输出的内容是裁剪空间中的顶点坐标
    //如果没有这些语义来限定输入和输出参数的话,那么渲染器就完全不知道用户输入输出的是什么,就会得到错误的效果
    float4 myVert(float4 v:POSITION):SV_POSITION
    {

        //mul是CG语言提供的矩阵和向量的乘法运算函数(就是一个内置的函数)
        //UNITY_MATRIX_MVP 代表一个变换矩阵 是Unity内置的模型、观察、投影矩阵的集合,即把那一堆变换都做好了放在UNITY_MATRIX_MVP中了
        //return mul(UNITY_MATRIX_MVP,v);


        //UnityObjectToClipPos它的作用和之前的矩阵乘法是一样的,主要目的就是在进行坐标变换 只不过新版本将其封装起来了 使用更加方便
        return UnityObjectToClipPos(v);
    }

    ENDCG
}

片元着色器基本结构

Pass
{
    CGPROGRAM

    //先通过编译指令指定实现片元着色器的指定函数
    #pragma fragment myFrag

    //片元着色器 回调函数
    //SV_Target:告诉渲染器,把用户输出颜色存储到一个渲染目标中,这里将输出到默认的帧缓存中
    fixed4 myFrag():SV_Target
    {
        return fixed4(0, 1, 0, 1); //返回绿色
    }

    ENDCG
}

把shader附加到材质上观察


21.2 知识点代码

Lesson21_CG_顶点片元着色器基本结构

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson21_CG_顶点片元着色器基本结构 : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 顶点着色器基本结构

        #endregion

        #region 知识点二 片元着色器基本结构

        #endregion
    }
}

Lesson21_NewUnlitShader.shader

Shader "ShaderTeach/Lesson21_NewUnlitShader"
{
    Properties {}
    SubShader
    {

        Pass
        {
            CGPROGRAM
            #pragma vertex myVert
            #pragma fragment myFrag

            //顶点着色器 回调函数 
            //POSITION 和 SV_POSITION是CG语言的语义
            //POSITION:把模型的顶点坐标填充到输入的参数v当中
            //SV_POSITION:顶点着色器输出的内容是裁剪空间中的顶点坐标
            //如果没有这些语义来限定输入和输出参数的话,那么渲染器就完全不知道用户输入输出的是什么,就会得到错误的效果
            float4 myVert(float4 v:POSITION):SV_POSITION
            {
                //mul是CG语言提供的矩阵和向量的乘法运算函数(就是一个内置的函数)
                //UNITY_MATRIX_MVP 代表一个变换矩阵 是Unity内置的模型、观察、投影矩阵的集合
                //UnityObjectToClipPos它的作用和之前的矩阵乘法是一样的,主要目的就是在进行坐标变换 只不过新版本将其封装起来了 使用更加方便

                //return mul(UNITY_MATRIX_MVP,v);
                return UnityObjectToClipPos(v);
            }

            //片元着色器 回调函数
            //SV_Target:告诉渲染器,把用户输出颜色存储到一个渲染目标中,这里将输出到默认的帧缓存中
            fixed4 myFrag():SV_Target
            {
                return fixed4(0, 1, 0, 1); //返回绿色
            }
            ENDCG
        }
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏