Hi guys,
is there any way in standard D3D11 to write values directly to the stencil buffer, for use in another pass? What I want to do is:
- Have a screen-space shader that reads a bunch of inputs and generates an 8-bit texture.
- Copy this 8-bit texture into a depth-stencil texture in the stencil channel.
- Use that depth-stencil to mask further drawing.
I can think of a couple different ways of achieving the same goal without doing this but they all require excessive bandwidth, e.g:
- Run a screen-space pass for each stencil value (0-255), reading inputs and discarding pixels that don't match with a clip.
- Output a single, fixed stencil value for each pass.
- Use this as the mask.
On each of those 255 passes I'm going to be reading the inputs repeatedly and that's not great.
I know D3D11 doesn't have an equivalent of ARB_shader_stencil_export so I was hoping there'd be some way of using typeless formats to achieve this, but so far my testing hasn't revealed anything (e.g. can't bind typeless formats as render targets).