找回密码
 立即注册
查看: 207|回复: 0

2.ShaderLab语义(Unity的CG/HLSL语义)

[复制链接]
发表于 2022-5-11 08:25 | 显示全部楼层 |阅读模式
1.Properties语义块

Properties
{
    _Int ("Int", Int) = 1 //int类型
    _Float ("Float", Float) = 1.5 //float类型
    _Range ("Range", Range(0.0, 5.0)) = 3.0 //区间值
    _Color ("Color", Color) = (1, 1, 1, 1)// 颜色四维向量
    _Vector ("Vector", Vector) = (1, 2, 3, 4)// 四维向量
    _2D ("2D", 2D) = "" {}              //2的阶数大小的贴图
    _Rect ("2D", Rect) = "" {}              //非2的阶数大小的贴图
    _Cube ("Cube", Cube) = "white" {}   //是6张有联系的2D贴图的组合主要用来做反射效果
   _3D ("3D", 3D) = "black" {}         
}2.vert着色器输入语义

fixed:精度11位 -2.0~+2.0
half:精度16位 -60000~+6000
float :精度32位
POSITION,NORMAL,TEXCOORD0 等语义填充的数据由Unity的MeshRender组件提供,每帧调用DrawCall的时候,MeshReder组件会把它负责渲染的模型数据(顶点坐标、法线、切线、纹理坐标、顶点颜色等)发送给UnityShader
struct VertexInput// 应用阶段传递到顶点着色器语义
{
     float4 vertex : POSITION; //POSITION语义 告诉Unity将模型空间 模型的顶点坐标,传入pos参数内,通常是float4类型
     float3 normal : NORMAL; //NORMAL语义 告诉Unity模型空间的法线向量,填充进normal变量,通常是float3类型
     float3 tangent: TANGENT; //TANGENT语义 告诉Unity模型空间的切线量,填充进tangent变量,通常是float3类型
     float4 texcoord : TEXCOORDn; // TEXCOORD0语义 告诉Unity用模型的第一套纹理坐标,填充texcoord变量
                                  //TEXCOORD0表示第一组坐标的纹理,通常是float2,float4类型
     Color color: COLOR; //COLOR语义 告诉Unity的顶点颜色,通常是fixed4或float4类型
};3.vert着色器输出(fragment着色器输入)语义

struct VertexOutput //顶点着色器传递到片元着色器语义
{
    //物体裁剪空间坐标
    float4 positionCS : SV_POSITION;   //SV_POSITION语义 告诉Unity 顶点着色器vert的输出为裁剪空间中的顶点坐标              
     //UV坐标
    fixed3 color : COLOR; //COLOR语义可用于存储颜色信息
    float4 texcoord : TEXCOORDn; // TEXCOORD0语义 告诉Unity用模型的第n套纹理坐标,填充texcoord变量
    float2 uv : TEXCOORD0;
};

//顶点着色器入口
VertexOutput vertex(VertexInput v)
{
    VertexOutput o;

    return o;
}4.fragment着色器输出语义

//片元着色器入口  SV_Target 片元着色器输出到Unity的语义
fixed4 frag (VertexOutput i) : SV_Target //SV_Target 输出值将储存到渲染目标(render target)
{
   fixed4 color;
   rteurn color;
}
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 10:20 , Processed in 0.127003 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表