的笔记

随时随地编辑

光影传说

要有光!
有光就有影子。
光影是上帝(不是西方的伪神耶稣)创造万物的表现手法。
--------------------- 扯淡完毕 ---------------------


I.光线算法公式
颜色=材质环境光*环境光强度+系数*材质漫反射光*环境漫反射光强度
系数=dot(光向量,顶点法向量)

II.固定管线渲染
设置好环境光和顶点法线材质后,Direct3d自动进行顶点光线计算。

III.光影着色(gpu shader)
启用光影着色脚本后,GPU会用着色脚本对每个顶点进行光线渲染。
分析记录I(龙书17章节 VS Diffuse Lighting)
源码:http://code.google.com/p/3dlearn/source/browse/trunk/DirectX/DragonBook1Code/Chapter%2017/VS%20Diffuse%20Lighting/vs_diffuse.cpp
光影脚本:http://code.google.com/p/3dlearn/source/browse/trunk/DirectX/DragonBook1Code/Chapter+17/VS+Diffuse+Lighting/diffuse.txt
(注意:龙书一在最新的dx sdk下编译时,此实例程序会不正常,需要修改代码和光影脚本。以上链接是已经修正的源码)

顶点附加光影的效果


IV.卡通效果
算法思想:使用一个突变的灰度纹理贴图,使得在纹理坐标连续的情况下,纹理颜色会突然变化。借助光线的夹角系数实现纹理在u方向连续,v固定不变。让顶点使用固定的颜色。
源码:http://code.google.com/p/3dlearn/source/browse/trunk/DirectX/DragonBook1Code/Chapter%2017/VS%20Toon%201%20No%20Outlines/toon.cpp
光源脚本:http://code.google.com/p/3dlearn/source/browse/trunk/DirectX/DragonBook1Code/Chapter%2017/VS%20Toon%201%20No%20Outlines/toon.txt
效果:

posted on 2012-01-05 16:47 的笔记 阅读(418) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理