前阵子跟人聊天,聊起过去试验的车漆,不适合做到移动设备上。过去试验的车漆在此http://www.cnblogs.com/sitt/archive/2012/03/28/2420595.html

于是想了一下,过去的方式就是菲涅尔来控制衰减和颜色变化,可以用litSphere的方式来简化。

litSphere其实就是用模型的法线当作UV在一张图上取色,效果见下图。

只使用了一张贴图,就是最下方的这种,和三个模型对应,实际制作的话还要自己去想办法配合漫反射贴图。

这种图的制作方式随意,可以用photoshop直接画也可以max调个材质球输出,也可以渲染。

其实这个方式也可以做简化的反射贴图之类的。运行效率很高,代码很短。

unity里的着色器代码在此。

Shader "SimpleCar"
{
Properties
{
LightSphereTexture("LightSphereTexture",2D) = "white" {}
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vertexMain
#pragma fragment fragmentMain sampler2D LightSphereTexture; struct appdata
{
half4 vertex : POSITION;
half3 normal : NORMAL;
half3 tangent : TANGENT;
float2 uv : TEXCOORD0;
}; struct v2f
{
half4 pos : SV_POSITION;
half3 normal : TEXCOORD1;
float2 texcoord : TEXCOORD0;
}; v2f vertexMain (appdata v)
{
v2f o;
o.pos = mul( UNITY_MATRIX_MVP, v.vertex );
half4 normal = mul( UNITY_MATRIX_MV, half4(v.normal.xyz, ));
o.normal = normalize(normal.xyz);
o.texcoord = v.uv;
return o;
}
half4 fragmentMain (v2f i) : COLOR0
{
float2 litUv = i.normal.xy * 0.5 + 0.5;
half4 litSphere = tex2D(LightSphereTexture, litUv);
return litSphere;
}
ENDCG
}
}
}

实验了一下LitSphere做车漆的更多相关文章

  1. 怎样让oracle实验本在不做实验时性能提升——win7下举例

    怎样让oracle实验本在不做实验时性能提升--win7下举例 型号:ThinkPad E431 系统:WIN7 实验使用的笔记本不使用数据库时.建议将oracle关闭,使其释放占用的资源. orac ...

  2. 【Unity Shader编程】之十六 基于MatCap实现适于移动平台的“次时代”车漆Shader

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/55803629 渲染本文配图使用的 ...

  3. 【Azure IoT DevKit】实验终于做完了

    大家好,我是MSP李桑榆 今天终于把几个Azure IoT DevKit的小实验的视频给做完了. 不敢说什么指导,只是给大家一个参考.因为Devkit不需要你写一行代码,只需要你按着步骤来,并没有什么 ...

  4. 智能车学习(二十三)——浅谈心得体会

          因为毕竟是竞赛,跟学校挂钩,没办法开源代码和算法完成思路,所以不能详细写太多,如果可以等价交换的话,应该还是可以向领导申请一下的.       在厦大信科通信系,参加这个比赛,大家都觉得性 ...

  5. 20145337实验五Java网络编程及安全

    20145337实验五Java网络编程及安全 实验内容 掌握Socket程序的编写 掌握密码技术的使用 设计安全传输系统 实验步骤 基于Java Socket实现安全传输 基于TCP实现客户端和服务器 ...

  6. 20145227&20145201 《信息安全系统设计基础》实验二 固件开发

    北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1452 姓名:(按贡献大小排名)鄢曼君 李子璇 学号:(按贡献大小排名)20145227 20145201 成绩: ...

  7. 20145208 实验二 Java面向对象程序设计

    20145208 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...

  8. Frenetic Python实验(三)

    实验5 repeater 这个实验在HelloSDNWorld里面做的实验是一样的.HelloSDNWorld 目的:模拟一个有多个端口的中继器. This application implement ...

  9. 基于Pre-Train的CNN模型的图像分类实验

    基于Pre-Train的CNN模型的图像分类实验  MatConvNet工具包提供了好几个在imageNet数据库上训练好的CNN模型,可以利用这个训练好的模型提取图像的特征.本文就利用其中的 “im ...

随机推荐

  1. probably another instance of uWSGI is running on the same address

    probably another instance of uWSGI is running on the same address 可以用命令杀掉这个端口在重启: /tcp

  2. TLS协议扫盲(握手,非对称加密,证书,电子签名等)

    想学习TLS协议最好的方法应该是去看RFC,但如果对安全传输协议没有一些基本认识的人很难一上来就读懂RFC里面的种种细节和设计原则,所以这里为了能够进一步去弄懂TLS协议,把一些基本的知识放在这里,算 ...

  3. Rhythmk 学习 Hibernate 08 - Hibernate annotation 关联关系注解

    1.一对一 (One to One)    共三种情况:     1.1 主键共享    1.2 外键共享 1.3 中间表关联 1.1  code: @Entity public class arti ...

  4. 一劳永逸解决VLC播放中文字幕乱码问题

    VLC对于Mac/Ubuntu用户来说算得上是必备软件.其相当于PC机上的“暴风影音”,但Mac/Ubuntu的新手使用VLC播放avi时都会碰 到字幕乱码的问题.avi字幕的格式有多种,这里假设你使 ...

  5. Redis OBJECT命令

    [Redis OBJECT命令] 1.OBJECT subcommand [arguments [arguments]] OBJECT 命令允许从内部察看给定 key 的 Redis 对象. 它通常用 ...

  6. Source命令及脚本的执行方式

    [Source命令及脚本的执行方式] source filename 与 sh filename 及./filename执行脚本的区别在那里呢? 1.当shell脚本具有可执行权限时,用sh file ...

  7. 把CString转化为char*

    转:http://blog.sina.com.cn/s/blog_58e19ae7010003jt.html 正确方法:CString m_Head:char *codefile;codefile=( ...

  8. PLSQL优化基础和性能优化 (学习总结)

    PLSQL优化基础和性能优化 (学习总结) 网上有一篇关于PLSQL优化的文章,不错,个人根据自己的经验再稍加整理和归纳,总结PLSQL优化和性能调优 适合有一定PLSQL基础,需要进一步提高的学友看 ...

  9. leetcode 21 Merge Two Sorted Lists 合并两个有序链表

    描述: 合并两个有序链表. 解决: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if (!l1) return l2; if (!l2) ...

  10. 41-邮差送信(dfs)

    邮差送信 (15分)C时间限制:1 毫秒 |  C内存限制:3000 Kb题目内容: 有一个邮递员要在n个城市之间来回送信.但有的城市之间有大路相连而有的没有路.现在要由一个城市到另一个城市送信,中途 ...