美文网首页
UINTY Shader 用到的系统提供的方法

UINTY Shader 用到的系统提供的方法

作者: Y海泉 | 来源:发表于2017-05-17 09:06 被阅读0次

    文章结构

    因为对unity内置的函数不是很熟悉,导致写Shader速度比较慢,影响效率,所以希望通过这篇将要使用的函数方法归总,方便查阅。

    Unity常用的结构体


    '#'include "UnityCG.cginc"

    P108 页 Unity入门精要

    appdata_base 顶点位置,顶点法线,第一套纹理坐标
    appdata_tan 顶点位置,顶点切线,顶点法线,第一组纹理坐标
    appdata_full 顶点位置,顶点切线,顶点法线,四组纹理坐标
    appdata_img 顶点位置,第一组纹理坐标
    不仅如此也提供了许多有用的方法
    float3 WorldSpaceViewDir(float4 v)
    float3 ObjSpaceViewDir(float4 v)
    float3 WorldSpaceLightDir(float4 v)
    float3 ObjSpaceLightDir(float4 v)

    float3 UnityObjectToWorldNormal(float3 norm)
    float3 UnityObjectToWorldDir(float3 dir)
    float3 UnityWorldToObjectDir(float3 dir)


    '#' include "Lighting.cginc" //带有一些常量,例如摄像机的位置,可以用上面的函数直接计算
    fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz;
    _WorldSpaceLightPos0.xyz
    _WorldSpaceCameraPos.xyz
    _LightColor0.rgb


    语义

    POSITION,SV_POSITION, SV_Target float4
    NORMAL float3
    TANGENT float4 ,(x,y,z,w)w有用
    TEXCOORD0, TEXCOORD1 float4
    COLOR fixed4


    纹理

    用法
    Properties{
    _MainTex{"Main Tex", 2D} = "white"{}
    }

    pass{
    sampler _MainTex;
    fixed4 _MainTex_ST; // xy代表缩放值, zw代表平移值
    uv = _MainTex_ST.xy * texcoord.xy +_MainTex_ST.zw
    //o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
    }

    贴图性质

    凹凸映射
    因为贴图可以不仅可以存储颜色信息,换种想法也可以储存其他信息,例如凹凸贴图,将法线储存在纹理上,增加凹凸感;
    1.模型空间的法线纹理
    2.法线空间的法线纹理(x轴为切线,y轴为副法线,z轴为法线)

    2 比 1好

    相关文章

      网友评论

          本文标题:UINTY Shader 用到的系统提供的方法

          本文链接:https://www.haomeiwen.com/subject/zhghxxtx.html