展开异次空间

:: 相对折叠空间/讨论游戏/软件设计.技术 ::

 

法线贴图流程算法

. 导出 / 计算出 normal binormal tangent向量数据
. 生成 NORMAL MAP
. 转换灯光方向(不是坐标)到纹理空间
. 转换观察点到顶点方向向量到纹理空间(高光需要该数据)
. PS里同正常像素SHADER计算,直接获取 法线贴图数据,转换一下
smooth = { 0.5, 0.5, 1.0 };
bumpiniess = 2.0;
bump = lerp( smooth, bump, bumpiness );
bump = normalize( bump * 2.0 - 1.0 );

使用 bump 作为像素法向量计算 DIFFUSE SPECULAR

 遇到的问题:
.  normal  binormal tangent 导出和计算的时候方向反了,导致结果完全不一样;还不好调试。。
. 使用方向光,灯光转换到纹理空间下始终显示不对
原因是:
float3 light = xxx;
light.x = dot( light, xx );
light.y = dot( light, xx );
light.z = dot( light, xx );

脑袋短路了好几个小时。。 正确写法
float3 temp_light = xxx;
light.x = dot( temp_light, xx );
light.y = dot( temp_light, xx );
light.z = dot( temp_light, xx );

引以为戒!

posted on 2010-01-24 15:41 Updraft Studio 阅读(650) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。

导航

统计

公告

激情,努力

常用链接

留言簿(9)

随笔档案(53)

文章档案(25)

@Updraft Studio@

搜索

最新评论

阅读排行榜

评论排行榜

Freelance Jobs