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. C#联合Union的实现方式

    一.基础篇 C#不像C++,他本身是没有联合Union的,但是可以通过手动控制结构体每个元素的位置来实现,这需要结合使用StructLayoutAttribute.LayoutKind以及FieldO ...

  2. HTML5攻防向量

    From:HTML 5 Morden Day Attack And Defense Vectors Autor:Rafay Baloch 摘要 根据Powermapper出版的统计,他们分析的Web页 ...

  3. Atitit.iso格式蓝光 BDMV 结构说明

    Atitit.iso格式蓝光 BDMV 结构说明 1. Iso是个复合文件1 2. Iso内部格式如下1 2.1. Bdmv文件夹格式 BDMV(Blu-ray Disk Movie.BD-MV),为 ...

  4. ReCap 360 photo照片建模技术的又一个例子

    这是我做的又一个利用Autodesk ReCap 360 照片建模技术做的一个例子.你可以下载模型自己把玩,或者下载原始照片自己试一试. 拍摄工具: 小米手机 照片数量:约120张 后期处理工具: p ...

  5. Web服务器具体开发流程

    下面是我个人对Web服务器开发流程的一点理解,下面做出了大概的模型,实现了基本的功能,下面也有所有的代码可以提供参考: 一开始学的时候不要把网站想的太复杂了,把网站的流程和大概的原理框架搞清楚,在通过 ...

  6. 【代码笔记】iOS-看图听声音

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> #import <AVFoundation/AVFo ...

  7. iOS--归档和解档(Archiver)、(UnArchiver)

    一.已有类型的归档和解档 首先来看一个简单的例子: //第一方式:归档对象 //对象-->文件 NSArray *array = [NSArray arrayWithObjects:@" ...

  8. 用Objective-C写了一个简单的批量更改文件名的程序

    前言:因为本人要高仿一个app,从app中解压asserts得到的所有图片文件,文件名都带有~iPhone这个干扰的名字,为了去除这个~iPhone这个字符串,所以本人写了个简答的批量更改所有文件名的 ...

  9. display:inline-block 去除间隙

    先写出代码 核心css代码: .sample0{display: inline-block;height: 40px;width: 40px;color: #ffffff;background-col ...

  10. php示例代码之使用MySQLi接口

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...