【问题标题】:2D Shader-based shadows implementation基于 2D Shader 的阴影实现
【发布时间】:2021-12-13 09:58:25
【问题描述】:

所以我得到了这两张图片——一张是遮挡光线的物体的阴影贴图,另一张是光线。

阴影贴图-

光-

这就是我想要的最终结果-

我的问题是,实现这一最终结果的最佳方法是什么?我之前的实现涉及将墙壁数据发送到着色器,以便灯光可以计算它是否与墙壁相交,但我认为这里有一种更优化的方法。谁能指导我正确的方向?

【问题讨论】:

  • 我的方法可能是只将至少部分照亮的几何图形发送到着色器,然后简单地使用光作为遮罩(即将输出颜色乘以光遮罩(假设你'重新光照水平介于 0 和 1 之间,零不亮,1 完全亮)),但我确信有一种更高级(阅读:更复杂的着色器)的方法来做到这一点

标签: c# shader monogame hlsl


【解决方案1】:

将您的 ShadowMap 作为纹理加载并传递给着色器,并将最终颜色乘以采样像素。

float4 PSBasicPixelLightingTx(PSInput pin) : SV_Target0
{
    float4 color = SAMPLE_TEXTURE(Texture, pin.TexCoord); // Light Texture
    
    // add whatever lighting here
    
    color.rgb *= SAMPLE_TEXTURE(ShadowTexture, pin.TexCoord); // Shadow
    
    return color;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 2021-06-06
    • 1970-01-01
    相关资源
    最近更新 更多