首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用RSM (反射阴影贴图)获得平滑的结果?

如何使用RSM (反射阴影贴图)获得平滑的结果?
EN

Stack Overflow用户
提问于 2019-10-22 00:17:28
回答 1查看 62关注 0票数 0

我正在尝试和Vulkan一起实现一个反射阴影映射程序。问题是get结果不好:

正如你所看到的,结果并不顺利。

在这里,我正在以512 * 512的分辨率在3个纹理中渲染来自灯光位置的位置、法线和通量。

在第二个过程中,我根据本文(http://www.klayge.org/material/3_12/GI/rsm.pdf)从第一个过程纹理计算间接照明:

代码语言:javascript
复制
for(int i = 0; i < 151; i++)
{
    vec4 rsmProjCoords = projCoords + vec4(rsmDiskSampling[i] * 0.09, 0.0, 0.0);

    vec3 indirectLightPos = texture(rsmPosition, rsmProjCoords.xy).rgb;
    vec3 indirectLightNorm = texture(rsmNormal, rsmProjCoords.xy).rgb;
    vec3 indirectLightFlux = texture(rsmFlux, rsmProjCoords.xy).rgb;

    vec3 r = worldPos - indirectLightPos;
    float distP2 = dot( r, r ); 

    vec3 emission = indirectLightFlux * (max(0.0, dot(indirectLightNorm, r)) * max(0.0, dot(N, -r)));
    emission *= rsmDiskSampling[i].x * rsmDiskSampling[i].x / (distP2 * distP2);        

    indirectRSM += emission;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-22 20:57:19

问题已解决。

主要的问题是采样,我使用线性采样而不是最近采样:

代码语言:javascript
复制
samplerInfo.magFilter = VK_FILTER_NEAREST;
samplerInfo.minFilter = VK_FILTER_NEAREST;

其他问题是使用的VPL的数量和它们之间的距离。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58490305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档