zoukankan      html  css  js  c++  java
  • u3d_shader_surface_shader_4

    Rim Lighting  轮廓自发光

    一:疑问:
    1.总感觉在编辑器Scene状态下,脚本计算的ViewDir是我漫游的Cam,而不是项目中的MainCam啊! 然后就会造成Scene状态下轮廓自发光不停的变化。此疑问何解....

    2.fixed不要用swizzle方式,即fixed.xyzw,fixed.xyxy类似;否则产生性能问题...为毛产生性能问题,float4就不会吗?

    二:结果:怪怪的:

         话说u3d初始数据和修改数据方便啊,   

        Properties {
          _MainTex ("Texture", 2D) = "white" {}
          _BumpMap ("Bumpmap", 2D) = "bump" {}
          _RimColor ("Rim Color", Color) = (0.26,0.19,0.16,0.0)
          _RimPower ("Rim Power", Range(0.5,8.0)) = 3.0
        }

    三:viewDir :

          struct Input {
              float2 uv_MainTex;
              float2 uv_BumpMap;
              float3 viewDir;  //
          };

    o(︶︿︶)o ,官网解释的不清晰啊...

    • float3 viewDir - will contain view direction, for computing Parallax effects, rim lighting etc.

    http://my.oschina.net/u/138823/blog/181131 上说的应是对的,worldSpace下vertex对Cam的方向。 

    四:点乘获轮廓并自发光:

              half rim = 1.0 - saturate(dot (normalize(IN.viewDir), o.Normal));//vertex和Cam夹角越大,自发光越强烈
              o.Emission = _RimColor.rgb * pow (rim, _RimPower);

    五:注意half fixedfloat的正确使用:

    http://www.jianshu.com/p/7b9498e58659  说的好,精度够用就行

    float 32位高精度浮点 

    half 16位中精度浮点

    fixed 11位低精度浮点 

    1.颜色和单位向量,用fixed

    2.其他情况,尽量使用half

    3.不要将低精度向上转化,如fixed->float

    4.fixed不要用swizzle方式,即fixed.xyzw,fixed.xyxy类似;否则产生性能问题...为毛产生性能问题,float4就不会吗?

    改变自己
  • 相关阅读:
    DataTables 控件使用和心得 (2)
    dataTables 添加行内操作按钮
    datatables 配套bootstrap3样式使用小结(1)
    loadrunner总体使用篇
    使用CEF类库处理HTTP请求
    27部优秀的黑客纪录片
    CEF3开发者系列之进程和线程
    cef3的各个接口你知道几个
    [你必须知道的.NET]第二十九回:.NET十年(上)
    [你必须知道的.NET]第二十八回:说说Name这回事儿
  • 原文地址:https://www.cnblogs.com/sun-shadow/p/4762876.html
Copyright © 2011-2022 走看看