Skip to content

SSSR seems to downsample the depth hierarchy too much #156

@JustSid

Description

@JustSid

I was looking over the SSSR code and the C++ side clamps the number of mips in the depth hierarchy to 7, while the shader side goes with a texture array with 13 entries. This is in ffx_sssr_callbacks_glsl.h:

#if defined SSSR_BIND_UAV_DEPTH_HIERARCHY
        layout (set = 0, binding = SSSR_BIND_UAV_DEPTH_HIERARCHY, r32f)     uniform image2D rw_depth_hierarchy[13];
#endif

The C++ side uses mip 0 to pad out rw_depth_hierarchy and then ffx_sssr_depth_downsample.h just dispatches SPD with all of this.

Since the number of mips is clamped on the C++ side, wouldn't it make sense to also clamp the return value of GetMipsCount()? This would reduce the amount of processing SPD has to do and also get rid of the need for atomics since SPD can do 6 mips atomic free. It's possible I'm missing something though and this is very much intended behaviour (and I need to update my implementation of SSSR).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions