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