In the last two weeks the project has moved from pre-production into full production. The base framework is in for the render pipeline, allowing multiple render targets and dynamically setting buffers, states and shaders to the pipeline, rather than using predefined effects. This has been very helpful in the testing of post process effects where much of the geometry stages (vertex, domain, hull, and geometry shaders) remain unchanged. It also allows for run time toggling of shaders to quickly do comparison tests. All of the base functionality is in, with the exception of model loading that should be in the next week or so.
The big features this update include functionality for chaining any number of render targets from one another, as well as dynamically accessing the texture data as a render target, shader resource view or an unordered access view. While structured buffers were used initially, rwtexturebuffers are now used at outputs from the shaders to avoid a potential cpu dump to texture copy for some processes. The result of M-RTs was the base line post process of a Gaussian blur using pascal triangle weights and a 7x7 kernel.
Both the pixel shader and the compute shader use a separable filter approach so that the performance can be based on the optimisations of the compute shader to avoid redundant texture calls through the utilisation of thread group shared memory not the kernel approach.
The compute shader has several different optimisations relating to the dimensions and size of the thread groups as well as the dispatch, in addition to the use of the thread group memory, more details of the different flavors of Gaussian compute shader will follow in the next post.
The big features this update include functionality for chaining any number of render targets from one another, as well as dynamically accessing the texture data as a render target, shader resource view or an unordered access view. While structured buffers were used initially, rwtexturebuffers are now used at outputs from the shaders to avoid a potential cpu dump to texture copy for some processes. The result of M-RTs was the base line post process of a Gaussian blur using pascal triangle weights and a 7x7 kernel.
![]() |
| Original frame buffer |
![]() |
| PS blur with a 5x5 Kernel avg fps 776 |
The compute shader has several different optimisations relating to the dimensions and size of the thread groups as well as the dispatch, in addition to the use of the thread group memory, more details of the different flavors of Gaussian compute shader will follow in the next post.
![]() |
| Compute Shader Blur 7x7 Kernel avg fps1243 |



What ya'll doin' at 9 in da mornin' puttin up dem blog posts girl? Dammit erin I told you to get yoself sum rest girl!
ReplyDelete