永远也不完美的程序

不断学习,不断实践,不断的重构……

常用链接

统计

积分与排名

好友链接

最新评论

物体接触阴影(shadowmap)要注意的问题。

之前写的人物模型接收阴影突然出了问题,完全接收不到阴影,后来发现是自己写的一个矩阵引起阴影上的LightWorldViewProjmatrix出了问题。
计算阴影,必须有一个矩阵叫LightWorldViewProjMatrix,该矩阵的意思是在以灯光为视点的投影矩阵。
在接收阴影的物体的VS中,必须要知道当前顶点是在shadowmap的哪个位置,
即要把该顶点转换成灯光为视点的投影空间中。
发现了shader中的一段代码错误,我是把骨骼动画的原始顶点作为变换后的顶点再X矩阵,这样肯定是有问题,后来改成这样:
output.posInLight = mul(float4(output.posWorld, 1), LightSpaceProjMatrix);
关键是这个LightSpaceProjMatrix,其实这个矩阵随便你如何去定义的。我这边是LightView * LightProj得出来,因为output.posWorld是世界空间的坐标。
现在效果出来了,如图:
 

posted on 2012-04-22 21:59 狂烂球 阅读(2512) 评论(2)  编辑 收藏 引用 所属分类: 图形编程

评论

# re: 物体接触阴影(shadowmap)要注意的问题。 2012-04-23 08:49 tb

很逼真啊  回复  更多评论   

# re: 物体接触阴影(shadowmap)要注意的问题。 2012-04-23 14:10 嵌入式培训

嗯,很细节的问题  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理