File | Date | Author | Commit |
---|---|---|---|
include | 2023-02-24 |
![]() |
[0bfdd8] Refactored as an external CMake project |
src | 2023-02-24 |
![]() |
[0bfdd8] Refactored as an external CMake project |
CMakeLists.txt | 2023-02-24 |
![]() |
[0bfdd8] Refactored as an external CMake project |
INSTALL.txt | 2022-10-13 |
![]() |
[faf4cf] Initial commit |
LICENSE.txt | 2022-10-13 |
![]() |
[faf4cf] Initial commit |
README.md | 2022-10-19 |
![]() |
[ac5059] Cosmetic changes |
snapshot.png | 2022-10-13 |
![]() |
[faf4cf] Initial commit |
RenderPass gives you the ability to sequence GLSL shader renders into a pipeline.
Here's an example:
graph
A[source image]
A --> C[rotate shader]
D[mask shader] --> E[multiply shader]
C --> E
E --> F[Display]
In this graph, any shader that doesn't render directly to the display gets it's own FrameBuffer object.
Here's the C++ code that does this:
gsn::RenderPass pass1(maskShader, maskShaderMesh, maskShaderSettings);
gsn::RenderPass pass2(rotateShader, rotateShaderMesh, rotateShaderSettings);
gsn::BinaryInputRenderPass pass3(multiplyShader, multiplyShaderMesh, multiplyShaderSettings, pass1, "A", pass2, "B");
pass3.render();
Pass3 (the multiply shader) first calls render()
on its input passes before using their FBOs as inputs to its render pass.
This way it's easy to tell the order of operations - it's a graph.
This project came about because of the work of Thorsten Thormaehlen, the creator of www.gsn-lib.org.
RenderPass started out with most of the code generated by gsn-lib, but it needed some changes:
1. make into a library
2. create an example project that uses the RenderPass library
3. Add classes to actually do the render passes
Enjoy!
Philip Ashmore