gpt4 book ai didi

opengl - GLSL 照明 - 基于光半径的衰减

转载 作者:行者123 更新时间:2023-12-02 08:21:00 25 4
gpt4 key购买 nike

所以我一直在研究照明,为了阴影贴图的目的,我根据半径而不是三个衰减因子(常数、线性和二次)进行光衰减,而且,嗯......它看起来不太好靠近边缘。

/image/H680a.png

它切断得非常快,着色器代码看起来像这样......

#version 330 core

//FragPos = world-space position of current fragment (vec3)
//light.radius is a float.
vec3 distance = (light.pos - FragPos) / light.radius;
float attenuation = 1.0f - dot(distance, distance);

那么我应该如何让它看起来不那么可怕呢?例如, This

最佳答案

存在无数种可能的(不是基于物理的)衰减。我喜欢使用 John Chapman 的一个(参见 here ),它使用 0 和光源半径之间的 smoothstep 插值:

attenuation = smoothstep(light.radius, 0, length(light.pos - FragPos));

一个可能的扩展是引入一个额外的指数(压缩),可用于控制衰减应如何减少:

attenuation = pow(smoothstep(light.radius, 0, length(light.pos - FragPos)), compression);

关于opengl - GLSL 照明 - 基于光半径的衰减,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37754998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com