zoukankan      html  css  js  c++  java
  • u3d_shader_surface_shader_3

    参考http://my.oschina.net/u/138823/blog/181131

    加了个凹凸贴图:

    抱歉把女神苏菲做成这样。

    一:Normal Texture的制作:

    1.首先是Normal Map的制作,直接在U3D里选取纹理Type为Normal类型即可

    二:UnpackNormal:

    2. o.Normal = UnpackNormal(tex2D(_BumpMap,mIn.uv_BumpMap));对normal tex进行数据的读取,并转化到对应的二维空间

    具体参考http://forum.unity3d.com/threads/unpacknormal-fixed4-packednormal-role.101163/内容。

    将法线坐标从0到1转化到-1到1之间;其中法线纹理又区分不同的硬件使用情况

    o(︶︿︶)o ,刚开始疑惑为什么以下:    

                o.Albedo =    tex2D(_MainTex,mIn.uv_MainTex).rgb;
                o.Normal = UnpackNormal(tex2D(_BumpMap,mIn.uv_BumpMap));

    Albedo漫反射没有使用UnpackNormal进行坐标转换,(我理解错误:以为UnpackNormal进行了纹理坐标系到二维空间坐标系的转换)

    inline fixed3 UnpackNormalDXT5nm (fixed4 packednormal)
    {
        fixed3 normal;
        normal.xy = packednormal.wy * 2 - 1;//RGBA中,x保存在a中,y保存在g中,从A和G中获取发现数据xy;然后再求z值
    #if defined(SHADER_API_FLASH)
        // Flash does not have efficient saturate(), and dot() seems to require an extra register.
        normal.z = sqrt(1 - normal.x*normal.x - normal.y * normal.y);
    #else
        normal.z = sqrt(1 - saturate(dot(normal.xy, normal.xy)));
    #endif
        return normal;
    }
    
    inline fixed3 UnpackNormal(fixed4 packednormal)
    {
    #if defined(UNITY_NO_DXT5nm)
        return packednormal.xyz * 2 - 1;    //
    #else
        return UnpackNormalDXT5nm(packednormal);
    #endif
    }
    改变自己
  • 相关阅读:
    POS门店数据同步系统建模(1)
    Json Formatter 1.0 Json格式化工具
    XLSReadWriteII 使用
    POS门店数据同步系统建模(2)
    内存泄漏superobject
    使用电脑查看android手机的短信与修改cmd窗口编码
    wordpress站点修改站点地址引起的图片地址修改
    系统子模块_EM310初始化子系统流程图
    mark
    系统子模块_短信命令语法设计
  • 原文地址:https://www.cnblogs.com/sun-shadow/p/4761998.html
Copyright © 2011-2022 走看看