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 * - ;//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( - normal.x*normal.x - normal.y * normal.y);
#else
normal.z = sqrt( - saturate(dot(normal.xy, normal.xy)));
#endif
return normal;
} inline fixed3 UnpackNormal(fixed4 packednormal)
{
#if defined(UNITY_NO_DXT5nm)
return packednormal.xyz * - ; //
#else
return UnpackNormalDXT5nm(packednormal);
#endif
}
u3d_shader_surface_shader_3的更多相关文章
随机推荐
- 如何更好的通过Inflate layout的方式来实现自定义view
本篇文章讲的是如何用现有控件产生一个组合控件的方法,十分简单实用.现在开始! 一.需求 我们要实现一个有红点和文字的按钮控件,就像下面这样: 二.实现 我的思路是让一个button和一个textvie ...
- android listview多视图嵌套多视图
笔记,listview视图总结 public class HomeEduMoreAdapter extends BaseAdapter { private final String TAG = &qu ...
- NSString和SwiftString的区别和使用场景
当下Swift项目已经越来越多,可能会经常见到 str as NSString 或者 str as String 字符串在这两者之间的来回切换,因为有些操作用OC字符串比较方便,而有些操作则相反,熟 ...
- APP远程调试及网络自动化测试
一:优测 腾讯旗下的测试服务 http://utest.qq.com/ 二:云测 http://www.testin.cn/ 三:testbird 1.进入这个网站,注册并且登录 https://dt ...
- Gradle基础
什么是Gradle? Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言. Gr ...
- 【C语言】C语言static和extern区别
目录: [static] [extern] 1.static · 定义一个内部函数/变量. · 声明一个内部函数/变量. 2.extern · 定义一个外部函数/变量. · 声明一个外部函数/变量. ...
- iOS 关于手势
不同视图不能同时添加相同手势!
- Android与JS之间跨平台异步调用
为什么突然要搞这个问题呢? 在开发浏览器的时候遇到这个狗血的问题,花了将近1天的时间才想到这个解决方案,Android与JavaScirpt互调. 因为接口是抓取的别人的,所以出现了JS跨域问题, ...
- 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
前言 TextView的drawableLeft.drawableRight和drawableTop是一个常用.好用的属性,可以在文本的上下左右放置一个图片,而不使用更加复杂布局就能达到,我也常常喜欢 ...
- SSH 框架
SSH是 struts+spring+hibernate的一个集成框架,是目前较流行的一种web应用程序开源框架.是把多个框架(Struts.Spring以及Hibernate)紧密的结合在一起,用于 ...