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的更多相关文章
随机推荐
- 一个python线程池的源码解析
python为了方便人们编程高度封装了很多东西,比如进程里的进程池,大大方便了人们编程的效率,但是默认却没有线程池,本人前段时间整理出一个线程池,并进行了简单的解析和注释,本人水平有限,如有错误希望高 ...
- gulp-babel 取消严格模式方法
最近项目决定用ES6语法重构,于是引入了gulp-babel去编译ES6. 问题来了,babel编译ES6会自动添加"use strict"在js文件的最前面,这就导致之前的项目文 ...
- 百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程
UEditor是百度开发团队奉献的一款很不错的在线编辑器.在百度自己很多产品上都有应用,本文主要是该编辑器的配置教程. 1.下载UEditor,当前最新版本是1.3.6.这里下载的.net版本,选择U ...
- 让background的图片不随着view的大小而改变
方法是在drawable文件中定义一个背景的xml文件. <?xml version="1.0" encoding="utf-8"?> <bi ...
- 制作CocoaPods依赖库最后步骤修改
我是看这篇博客http://blog.csdn.net/wzzvictory/article/details/20067595 做的,但是CocoaPods 2015年4月份有了更新,出现了一个tru ...
- 【iOS】block的使用
Block 是iOS在4.0之后新增的程式语法,一般用于回调方法,功能上和delegate类似.本文将讲解block的几种常见的使用方法,当然,block中最值得注意的还是它的内存管理,我将在< ...
- 【代码笔记】iOS-登陆单例
一,工程图. 二,代码. UserInfo.h #import <Foundation/Foundation.h> @interface UserInfo : NSObject + (id ...
- Protocol and Delegate协议和代理
1.什么是协议? OC协议仿照Java的接口.协议和接口,都是不同类的对象之间一种通信的机制.2.协议的基础语法 单纯的语言描述协议的语法,很难让人理解,主要因为在OC中协议是类对象的通信机制,他 ...
- IOS 音效
IOS 音效 音效我们也可以成为短音频通常在程序中播放时间为1~2秒. 在应用程序中起到点缀效果,提升整体用户体验 音效文件只需要加载一次 示例代码: // // ViewController.m / ...
- View Focus的处理过程及ViewGroup的mFocused字段分析
通过上篇的介绍,我们知道在对KeyEvent的处理中有非常重要的一环,那就是KeyEvent在focus view的path上自上而下的分发, 换句话说只有focus的view才有资格参与KeyEve ...