请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 615|回复: 1

请问,如何理解 LightSource 中 range 和 falloff 的含义? [复制链接]

Rank: 5Rank: 5

注册时间
2016-12-2
积分
75
发表于 2017-10-29 14:44:46 |显示全部楼层
本帖最后由 shenruiyao 于 2017-10-29 14:48 编辑

在 KlayGE 的 Light.cpp 中 LightSource 定义了一个名为 range_ 的成员变量。请问 range_ 和 falloff_ 成员变量的关系是什么?该如何理解,谢谢。麻烦告知一下相关资料。

附: range_ 的赋值成员函数
        void LightSource::Range(float range)
        {
                if (range <= 0)
                {
                        const float4 RGB_TO_LUM(0.2126f, 0.7152f, 0.0722f, 0);
                        float lum = MathLib::dot(color_, RGB_TO_LUM);
                        if (MathLib::abs(falloff_.z()) < 1e-6f)
                        {
                                if (MathLib::abs(falloff_.y()) < 1e-6f)
                                {
                                        range_ = 100;
                                }
                                else
                                {
                                         // 这里是否有错误?两次重复的判断?
                                        range_ = MathLib::abs(falloff_.y()) < 1e-6f ? 1 : -(falloff_.x() - lum * 255) / falloff_.y();
                                }
                        }
                        else
                        {
                                float delta = falloff_.y() * falloff_.y() - 4 * falloff_.z() * (falloff_.x() - lum * 255);
                                range_ = delta < 0 ? 1 : (-falloff_.y() + sqrt(delta)) / (2 * falloff_.z());
                        }
                        range_ = -std::min(range_, 100.0f);
                }
                else
                {
                        range_ = range;
                }
        }


Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2009-3-31
积分
14455
发表于 7 天前 |显示全部楼层
range是一个光源可以影响到的最大范围。falloff是光源衰减的constant、linear、quadratic系数。这里的意思是,如果range = 0,就表示自动从falloff计算range。而这时候range止于光源亮度小于1/255。

使用道具 举报

最近看过此主题的会员

您需要登录后才可以回帖 登录 | 注册

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2017-11-21 06:57 , Processed in 0.046337 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部