游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1225|回复: 0

directx9.0 高级光照

[复制链接]

1

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2005-7-31 15:20:00 | 显示全部楼层 |阅读模式
逐象素光照可以实现精致的漫射光.高光.表面凹凸感等,它在高级光照中是非常重要的.处理过程中的要点是:
1)为模型制做法向贴图.
2)初始化的时候在3D模型的 MODEL 空间根据顶点的贴图坐标对每个顶点算出其 TEXTURE     SPACE 变换矩阵 (T,B,N), 用于其他空间向此空间变换.
3)在 VERTEX SHADER 中利用(T,B,N)变换去光向量L,半角向量H,视点向量V到 TEXTURE SPACE 空间
4)在 PIXEL SHADER 中取出L,H并使用NRM命令单位化,然后与法向贴图中的N求点积
(L DOT N)+(H DOT N).还可通过V和N计算出被扰动的反射向量,透射向量,利用实时的场景CUBE MAP 产生反射和透明效果.经过上面步骤,物体表面凹凸感自然产生.
    阴影也是必不可少的效果,比较流行的有SHADOW MAP和SHADOW VOLUMES,下面只大体说下SHADOW MAP
1)在场景中以LIGHT POSITION 为视点渲染场景(若是点光源最好用CUBE MAP),只记录通过Z测试的图素到光源的距离(需要增加一个偏移值,小心调整这个值)
2)正式渲染场景时,在 SHADER中重新计算当前图素到光源的距离并通过去光向量取出其关于CUBE MAP中的距离相比较,大于则处于阴影中
3)如果记录距离的MAP使用的是浮点格式,则可突破255级整数限制,得到非常高的记录精度.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-26 15:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表