Chapter5 开始Unity Shader——Shader入门精要学习笔记

一、最简单的顶点/片元着色器

1.第一个简单代码

Shader "Custom/Chapter5_SimpleShader"
{
   
    SubShader{
   
        Pass{
   
            CGPROGRAM //由CGPROGRAM和ENDCG包含的CG代码片段

            #pragma vertex vert
            #pragma fragment frag
            //这两行告诉Unity,哪个函数包含了顶点着色器的代码,哪个函数包含了片元着色器的代码
            //#pragma vertex name —— name即为函数名
            //#pragma fragment name

            float4 vert(float4 v : POSITION) : SV_POSITION{
    //vert函数输入v包含了这个顶点的位置,是通过POSITION这个语义指定的,返回float4类型的值,是该顶点在裁剪空间中的位置
                //POSITION 和 SV_POSITION都是不可省略的,告诉用户输入输出是什么
                    //POSTION告诉unity把模型顶点坐标填充到输入参数中
                    //SV_POSITION告诉输出是裁剪空间中的顶点坐标
                return mul (UNITY_MATRIX_MVP, v); //把顶点坐标从模型空间坐标转换到裁剪空间
                }
            fixed4 frag():SV_Target{
    //SV_Target告诉用户输出颜色存储到一个渲染目标中(这里输出到默认的帧缓存)
                return fixed4(1.0, 1.0, 1.0, 1.0); //白色的fixed4类型的变量
                }
            ENDCG
            }
        }
}
  • 可以得到一个白色的球
    在这里插入图片描述

2.想要得到顶点纹理坐标和法线方向

定义一个结构体

在这里插入图片描述

Shader "Custom/Chapter5_SimpleShader"
{
   
    SubShader{
   
        Pass{
   
            CGPROGRAM //由CGPROGRAM和ENDCG包含的CG代码片段

            #pragma vertex vert
            #pragma fragment frag
            //这两行告诉Unity,哪个函数包含了顶点着色器的代码,哪个函数包含了片元着色器的代码
            //#pragma vertex name —— name即为函数名
            //#pragma fragment name

            //使用一个结构体来定义顶点着色器的输入
            struct a2v{
    //a2v表示把数据从应用阶段传递到顶点着色器中
                //POSITION告诉unity,用模型空间的顶点坐标填充vertex变量
                float4 vertex : POSITION;
                //NORMAL告诉unity,用模型空间的法线方向填充normal变量
                float3 normal : NORMAL; 
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值