Description of the bug
The current depth texture system assumes that a depth texture can be assigned to a render target at any time. This assumption is incorrect as render targets are initialized once when they are used. Certain pass chains will cause the internal frame buffer to be initialized with a basic depth buffer attachment and the subsequent assignment of a depth texture won't have any effect. As a result, the depth texture won't contain the depth information of the rendered scene.
To Reproduce
- Add a
ClearPass to the composer.
- Add a
RenderPass to the composer.
- Add an
EffectPass containing a depth-based effect such as SSAOEffect to the composer.
- See the effect fail due to missing depth information.
Expected behavior
Depth-based effects shouldn't fail with certain pass chains. One potential solution would be to assign the depth texture to a dedicated render target for geometry passes. Going one step further, a more complex render target management system could be implemented to allow passes to explicitly define input and output buffers.
Library versions used
- Three: 0.120.0
- Post Processing: 6.17.1
Description of the bug
The current depth texture system assumes that a depth texture can be assigned to a render target at any time. This assumption is incorrect as render targets are initialized once when they are used. Certain pass chains will cause the internal frame buffer to be initialized with a basic depth buffer attachment and the subsequent assignment of a depth texture won't have any effect. As a result, the depth texture won't contain the depth information of the rendered scene.
To Reproduce
ClearPassto the composer.RenderPassto the composer.EffectPasscontaining a depth-based effect such asSSAOEffectto the composer.Expected behavior
Depth-based effects shouldn't fail with certain pass chains. One potential solution would be to assign the depth texture to a dedicated render target for geometry passes. Going one step further, a more complex render target management system could be implemented to allow passes to explicitly define input and output buffers.
Library versions used