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 \fixed\float的正确使用:

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就不会吗?

u3d_shader_surface_shader_4的更多相关文章

随机推荐

  1. javascript --- 原型初探七日谈(一)

    在javascript中,像原型,闭包这样的概念,只要我们能领悟其中的原理,一切都会显得格外清晰与明了. 原型属性(prototype): 下面我们简单定义一个函数 function her(a, b ...

  2. charset的获取方法

      1.解析http请求的返回值: 2.通过解析html的meta标签里面的数据: 3.通过cpdetector(java环境下)来自动验证: ---------------------------- ...

  3. 编写高质量的Objective-C代码

    点标记语法 属性和幂等方法(多次调用和一次调用返回的结果相同)使用点标记语法访问,其他的情况使用方括号标记语法.   良好的风格: view.backgroundColor = [UIColor or ...

  4. Service和Thread的关系及如何启用Service,如何停用Service

    Service和Thread的关系: 不少Android初学者都可能会有这样的疑惑,Service和Thread到底有什么关系呢?什么时候应该用Service,什么时候又应该用Thread?答案可能会 ...

  5. android 浅谈Aidl 通讯机制

    服务端: 首先是编写一个aidl文件,注意AIDL只支持方法,不能定义静态成员,并且方法也不能有类似public等的修饰符:AIDL运行方法有任何类型的参数和返回值,在java的类型中,以下的类型使用 ...

  6. XML,DTD,XSD,XSL的区别

    XML=可扩展标记语言(eXtensible Markup Language). 可扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可用 方便的方式建立,虽然XML ...

  7. iOS 9 升级过程汇中白苹果 iPhone或iPad 解决方案

    最近想必有很多朋友升级了iOS 9,不过有部分朋友在升级过程中遇到了白苹果问题.也就是卡在升级过程中,不限重启.这时,你只能通过dfu进行升级了. ios9怎么进入dfu模式: 1.将你的iPhone ...

  8. js去掉字符串前后空格的五种方法

    转载 :http://www.2cto.com/kf/201204/125943.html 第一种:循环检查替换[javascript]//供使用者调用  function trim(s){  ret ...

  9. MyCat:取代Cobar数据库中间件

    什么是MyCAT?简单的说,MyCAT就是: 一个彻底开源的,面向企业应用开发的“大数据库集群” 支持事务.ACID.可以替代Mysql的加强版数据库 ? 一个可以视为“Mysql”集群的企业级数据库 ...

  10. js 获取当前系统时间

    Js获取当前日期时间及其它操作 var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年 ...