use of org.terasology.rendering.dag.Node in project Terasology by MovingBlocks.
the class WorldRendererImpl method addInitialPostProcessingNodes.
private void addInitialPostProcessingNodes(RenderGraph renderGraph) {
Node simpleBlendMaterialsNode = renderGraph.findNode("engine:simpleBlendMaterialsNode");
Node one8thScaleBlurredBloomNode = renderGraph.findNode("engine:one8thScaleBlurredBloomNode");
// Light shafts
Node lightShaftsNode = new LightShaftsNode(context);
renderGraph.addNode(lightShaftsNode, "lightShaftsNode");
renderGraph.connect(simpleBlendMaterialsNode, lightShaftsNode);
// Adding the bloom and light shafts to the gBuffer
Node initialPostProcessingNode = new InitialPostProcessingNode(context);
renderGraph.addNode(initialPostProcessingNode, "initialPostProcessingNode");
renderGraph.connect(lightShaftsNode, initialPostProcessingNode);
renderGraph.connect(one8thScaleBlurredBloomNode, initialPostProcessingNode);
}
use of org.terasology.rendering.dag.Node in project Terasology by MovingBlocks.
the class WorldRendererImpl method addOutputNodes.
private void addOutputNodes(RenderGraph renderGraph) {
Node finalPostProcessingNode = renderGraph.findNode("engine:finalPostProcessingNode");
Node outputToVRFrameBufferNode = new OutputToHMDNode(context);
renderGraph.addNode(outputToVRFrameBufferNode, "outputToVRFrameBufferNode");
renderGraph.connect(finalPostProcessingNode, outputToVRFrameBufferNode);
Node outputToScreenNode = new OutputToScreenNode(context);
renderGraph.addNode(outputToScreenNode, "outputToScreenNode");
renderGraph.connect(finalPostProcessingNode, outputToScreenNode);
}
use of org.terasology.rendering.dag.Node in project Terasology by MovingBlocks.
the class WorldRendererImpl method initRenderGraph.
private void initRenderGraph() {
addGBufferClearingNodes(renderGraph);
addSkyNodes(renderGraph);
addWorldRenderingNodes(renderGraph);
addLightingNodes(renderGraph);
add3dDecorationNodes(renderGraph);
addReflectionAndRefractionNodes(renderGraph);
addPrePostProcessingNodes(renderGraph);
addBloomNodes(renderGraph);
addExposureNodes(renderGraph);
addInitialPostProcessingNodes(renderGraph);
addFinalPostProcessingNodes(renderGraph);
addOutputNodes(renderGraph);
renderTaskListGenerator = new RenderTaskListGenerator();
List<Node> orderedNodes = renderGraph.getNodesInTopologicalOrder();
renderPipelineTaskList = renderTaskListGenerator.generateFrom(orderedNodes);
}
use of org.terasology.rendering.dag.Node in project Terasology by MovingBlocks.
the class WorldRendererImpl method addWorldRenderingNodes.
private void addWorldRenderingNodes(RenderGraph renderGraph) {
/* Ideally, world rendering nodes only depend on the gBufferClearingNode. However,
since the haze is produced by blurring the content of the gBuffer and we only want
the sky color to contribute to the haze, the world rendering nodes need to run
after finalHazeNode, so that the landscape and other meshes are not part of the haze.
Strictly speaking however, it is only the hazeIntermediateNode that should be processed
before the world rendering nodes. Here we have chosen to also ensure that finalHazeNode is
processed before the world rendering nodes - not because it's necessary, but to keep all
the haze-related nodes together. */
Node finalHazeNode = renderGraph.findNode("engine:finalHazeNode");
Node opaqueObjectsNode = new OpaqueObjectsNode(context);
renderGraph.addNode(opaqueObjectsNode, "opaqueObjectsNode");
renderGraph.connect(finalHazeNode, opaqueObjectsNode);
Node opaqueBlocksNode = new OpaqueBlocksNode(context);
renderGraph.addNode(opaqueBlocksNode, "opaqueBlocksNode");
renderGraph.connect(finalHazeNode, opaqueBlocksNode);
Node alphaRejectBlocksNode = new AlphaRejectBlocksNode(context);
renderGraph.addNode(alphaRejectBlocksNode, "alphaRejectBlocksNode");
renderGraph.connect(finalHazeNode, alphaRejectBlocksNode);
Node overlaysNode = new OverlaysNode(context);
renderGraph.addNode(overlaysNode, "overlaysNode");
renderGraph.connect(finalHazeNode, overlaysNode);
}
use of org.terasology.rendering.dag.Node in project Terasology by MovingBlocks.
the class WorldRendererImpl method addPrePostProcessingNodes.
private void addPrePostProcessingNodes(RenderGraph renderGraph) {
// Pre-post-processing, just one more interaction with 3D data (semi-transparent objects, in SimpleBlendMaterialsNode)
// and then it's 2D post-processing all the way to the image shown on the display.
Node overlaysNode = renderGraph.findNode("engine:overlaysNode");
Node finalHazeNode = renderGraph.findNode("engine:finalHazeNode");
Node chunksRefractiveReflectiveNode = renderGraph.findNode("engine:chunksRefractiveReflectiveNode");
Node applyDeferredLightingNode = renderGraph.findNode("engine:applyDeferredLightingNode");
Node outlineNode = renderGraph.findNode("engine:outlineNode");
Node blurredAmbientOcclusionNode = renderGraph.findNode("engine:blurredAmbientOcclusionNode");
Node prePostCompositeNode = new PrePostCompositeNode(context);
renderGraph.addNode(prePostCompositeNode, "prePostCompositeNode");
renderGraph.connect(overlaysNode, prePostCompositeNode);
renderGraph.connect(finalHazeNode, prePostCompositeNode);
renderGraph.connect(chunksRefractiveReflectiveNode, prePostCompositeNode);
renderGraph.connect(applyDeferredLightingNode, prePostCompositeNode);
renderGraph.connect(outlineNode, prePostCompositeNode);
renderGraph.connect(blurredAmbientOcclusionNode, prePostCompositeNode);
Node simpleBlendMaterialsNode = new SimpleBlendMaterialsNode(context);
renderGraph.addNode(simpleBlendMaterialsNode, "simpleBlendMaterialsNode");
renderGraph.connect(prePostCompositeNode, simpleBlendMaterialsNode);
}
Aggregations