复习1-开始Unity Shader

  • 设置编辑器

打开unity3d项目,点击菜单“Edit”。在菜单中选择“Preferences“,进入属性设置界面。

选择左边的”External Tools“。

在右边的“External Script Editor”选择“Visual Studio”。

  • 创建shader

 project栏右键create可创建shader。双击该shader文件可以在编辑器中进行编码。

Shader "MyShaderName"{
    Properties{
        //
        //属性
        //
    }

    SubShader{
    
        Pass{
            CGPROGRAM
            //该代码片段的编译指令
            #pragma vertex vert
            #pragma fragment frag
            //
            //CG代码
            //    
            ENDCG
            //
            //其他设置
            //
        }
        //
        //其它需要的Pass
        //
    }
    //
    //其它SubShader
    //

    //上述SubShader都失败后用于回调的Unity Shader
    Fallback "VertexLit"  
    }
  •  Unity中的包含文件

后缀为.cginc

在windows上,CGIncludes文件夹的位置在:Unity的安装路径/Data/CGIncludes

Lighting.cginc:包含各种内置的光照模型。如果编译的是Surface Shader的话会自动包含进来

HLSL_Support.cginc:在编译Unity Shader时会被自动包含进来,声明了很多跨平台编译的宏和定义

UnityShaderVariables.cginc:在编译Unity Shader时会被自动包含进来,包含了许多内置的全局变量(如:访问时间、光照、雾效、环境光等)

UnityCG.cginc:包含了最常用的函数、宏、结构体。(常见结构体:包含了顶点位置&顶点法线&第一组纹理坐标的appdata_base、包含了顶点位置&顶点法线&定点切线&第一组纹理坐标的appdata_tan、包含了顶点位置&顶点法线&定点切线&四组或更多纹理坐标的appdata_full、包含了顶点位置、第一组纹理坐标的appdata_img等)

  • Unity支持的CG/HLSL语义

语义:semantics

一个Unity中早已规定好的字符串,用来让Unity知道数据的读取和输出

通常是大写字母+阿拉伯数字的形式

从应用阶段传递模型数据给顶点着色器时
语义描述
POSITION【模型空间】中的顶点位置,通常:float4
NORMAL顶点法线,通常:float3
TANGENT顶点切线,通常:float4
TEXCOORDnn表示第n组纹理坐标,在appdata_full中最多使用了6个纹理坐标组,通常:float2或float4
COLOR顶点颜色,通常:fixed4  / float4

 

从顶点着色器传递数据给片元着色器时
语义描述
SV_POSITION【裁剪空间】中的顶点坐标,结构体中【必须】包含用该语义修饰的变量。
COLOR0通常用于输出第一组顶点颜色,非必须
COLOR1通常用于输出第二组顶点颜色,非必须
TEXCOORD0(最多为7)通常用于输出纹理坐标,但非必须

 除SV_POSITION外,其余语义对变量的含义没有明确规定。需要把一些自定义的数据从顶点着色器传递给偏远着色器时,一般选用TEXCOORD0

片元着色器输出时
语义描述
SV_Target输出值将会存储到渲染目标(render target)中

以上语义绝大部分用于描述标量或矢量类型的变量。

  • 系统数值语义

系统数值语义:system-value semantics

以SV开头,如:SV_POSITON

  • 天空盒

Window->Rendering->Lighting->Environment

  • 场景环境光

Window->Rendering->Lighting->Environment

或UNITY_LIGHTMODEL_AMBIENT

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值