游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2378|回复: 4

下面的光照Shader程序,对求半角变量(halfAngle)用三次normali

[复制链接]

39

主题

102

帖子

102

积分

注册会员

Rank: 2

积分
102
发表于 2005-11-13 19:33:00 | 显示全部楼层 |阅读模式
  halfAngle = normalize( normalize(vLightVector) + normalize(eyeDirection) );


这个是从一书讲解HLSL的书中看到的他求光照计算时由光线和眼睛组成的halfAngle向量的方法。这是个很普通很简单的方法,但我不明白的是为什么要分别将灯光位置vLightVector和眼睛位置eyeDirection“单位化”后再相加,最近再将结果单位化。我觉的将最后的结果单位化就刻可以了,就像这样:

      halfAngle = normalize( vLightVector + eyeDirection );

64

主题

856

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
发表于 2005-11-14 09:55:00 | 显示全部楼层

Re:下面的光照Shader程序,对求半角变量(halfAngle)用三次norm

vLightVec与EyeDir不单位化就相加,算出来的结果肯定不一样。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-11-14 10:09:00 | 显示全部楼层

Re:下面的光照Shader程序,对求半角变量(halfAngle)用三次norm

数乘可以不单位化,但是加减必须单位化

3

主题

10

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2009-9-4 14:22:00 | 显示全部楼层

Re:下面的光照Shader程序,对求半角变量(halfAngle)用三次norm

这个没必要吧,两个算出来的结果应该一样的。normalize又不会改变向量的方向

3

主题

10

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2009-9-4 14:28:00 | 显示全部楼层

Re:下面的光照Shader程序,对求半角变量(halfAngle)用三次norm

搞错了,应该还是需要三次normalize的,哈。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-21 01:16

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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