Search in sources :

Example 1 with BufferClearingNode

use of org.terasology.rendering.dag.nodes.BufferClearingNode in project Terasology by MovingBlocks.

the class WorldRendererImpl method addLightingNodes.

private void addLightingNodes(RenderGraph renderGraph) {
    Node opaqueObjectsNode = renderGraph.findNode("engine:opaqueObjectsNode");
    Node opaqueBlocksNode = renderGraph.findNode("engine:opaqueBlocksNode");
    Node alphaRejectBlocksNode = renderGraph.findNode("engine:alphaRejectBlocksNode");
    Node lastUpdatedGBufferClearingNode = renderGraph.findNode("engine:lastUpdatedGBufferClearingNode");
    Node staleGBufferClearingNode = renderGraph.findNode("engine:staleGBufferClearingNode");
    FBOConfig shadowMapConfig = new FBOConfig(ShadowMapNode.SHADOW_MAP_FBO_URI, FBO.Type.NO_COLOR).useDepthBuffer();
    BufferClearingNode shadowMapClearingNode = new BufferClearingNode(shadowMapConfig, shadowMapResolutionDependentFBOs, GL_DEPTH_BUFFER_BIT);
    renderGraph.addNode(shadowMapClearingNode, "shadowMapClearingNode");
    shadowMapNode = new ShadowMapNode(context);
    renderGraph.addNode(shadowMapNode, "shadowMapNode");
    renderGraph.connect(shadowMapClearingNode, shadowMapNode);
    Node deferredPointLightsNode = new DeferredPointLightsNode(context);
    renderGraph.addNode(deferredPointLightsNode, "deferredPointLightsNode");
    renderGraph.connect(opaqueObjectsNode, deferredPointLightsNode);
    renderGraph.connect(opaqueBlocksNode, deferredPointLightsNode);
    renderGraph.connect(alphaRejectBlocksNode, deferredPointLightsNode);
    Node deferredMainLightNode = new DeferredMainLightNode(context);
    renderGraph.addNode(deferredMainLightNode, "deferredMainLightNode");
    renderGraph.connect(shadowMapNode, deferredMainLightNode);
    renderGraph.connect(opaqueObjectsNode, deferredMainLightNode);
    renderGraph.connect(opaqueBlocksNode, deferredMainLightNode);
    renderGraph.connect(alphaRejectBlocksNode, deferredMainLightNode);
    renderGraph.connect(deferredPointLightsNode, deferredMainLightNode);
    Node applyDeferredLightingNode = new ApplyDeferredLightingNode(context);
    renderGraph.addNode(applyDeferredLightingNode, "applyDeferredLightingNode");
    renderGraph.connect(deferredMainLightNode, applyDeferredLightingNode);
    renderGraph.connect(deferredPointLightsNode, applyDeferredLightingNode);
    renderGraph.connect(lastUpdatedGBufferClearingNode, applyDeferredLightingNode);
    renderGraph.connect(staleGBufferClearingNode, applyDeferredLightingNode);
}
Also used : FBOConfig(org.terasology.rendering.opengl.FBOConfig) ApplyDeferredLightingNode(org.terasology.rendering.dag.nodes.ApplyDeferredLightingNode) ShadowMapNode(org.terasology.rendering.dag.nodes.ShadowMapNode) DeferredMainLightNode(org.terasology.rendering.dag.nodes.DeferredMainLightNode) PrePostCompositeNode(org.terasology.rendering.dag.nodes.PrePostCompositeNode) ShadowMapNode(org.terasology.rendering.dag.nodes.ShadowMapNode) OutlineNode(org.terasology.rendering.dag.nodes.OutlineNode) InitialPostProcessingNode(org.terasology.rendering.dag.nodes.InitialPostProcessingNode) BlurredAmbientOcclusionNode(org.terasology.rendering.dag.nodes.BlurredAmbientOcclusionNode) OpaqueBlocksNode(org.terasology.rendering.dag.nodes.OpaqueBlocksNode) AmbientOcclusionNode(org.terasology.rendering.dag.nodes.AmbientOcclusionNode) FinalPostProcessingNode(org.terasology.rendering.dag.nodes.FinalPostProcessingNode) UpdateExposureNode(org.terasology.rendering.dag.nodes.UpdateExposureNode) LightShaftsNode(org.terasology.rendering.dag.nodes.LightShaftsNode) AlphaRejectBlocksNode(org.terasology.rendering.dag.nodes.AlphaRejectBlocksNode) Node(org.terasology.rendering.dag.Node) DeferredPointLightsNode(org.terasology.rendering.dag.nodes.DeferredPointLightsNode) WorldReflectionNode(org.terasology.rendering.dag.nodes.WorldReflectionNode) ToneMappingNode(org.terasology.rendering.dag.nodes.ToneMappingNode) BufferClearingNode(org.terasology.rendering.dag.nodes.BufferClearingNode) HighPassNode(org.terasology.rendering.dag.nodes.HighPassNode) BloomBlurNode(org.terasology.rendering.dag.nodes.BloomBlurNode) OpaqueObjectsNode(org.terasology.rendering.dag.nodes.OpaqueObjectsNode) OutputToHMDNode(org.terasology.rendering.dag.nodes.OutputToHMDNode) LateBlurNode(org.terasology.rendering.dag.nodes.LateBlurNode) ApplyDeferredLightingNode(org.terasology.rendering.dag.nodes.ApplyDeferredLightingNode) BackdropReflectionNode(org.terasology.rendering.dag.nodes.BackdropReflectionNode) DownSamplerForExposureNode(org.terasology.rendering.dag.nodes.DownSamplerForExposureNode) HazeNode(org.terasology.rendering.dag.nodes.HazeNode) RefractiveReflectiveBlocksNode(org.terasology.rendering.dag.nodes.RefractiveReflectiveBlocksNode) SimpleBlendMaterialsNode(org.terasology.rendering.dag.nodes.SimpleBlendMaterialsNode) OutputToScreenNode(org.terasology.rendering.dag.nodes.OutputToScreenNode) BackdropNode(org.terasology.rendering.dag.nodes.BackdropNode) OverlaysNode(org.terasology.rendering.dag.nodes.OverlaysNode) BufferClearingNode(org.terasology.rendering.dag.nodes.BufferClearingNode) DeferredPointLightsNode(org.terasology.rendering.dag.nodes.DeferredPointLightsNode) DeferredMainLightNode(org.terasology.rendering.dag.nodes.DeferredMainLightNode)

Example 2 with BufferClearingNode

use of org.terasology.rendering.dag.nodes.BufferClearingNode in project Terasology by MovingBlocks.

the class WorldRendererImpl method addReflectionAndRefractionNodes.

private void addReflectionAndRefractionNodes(RenderGraph renderGraph) {
    FBOConfig reflectedBufferConfig = new FBOConfig(BackdropReflectionNode.REFLECTED_FBO_URI, HALF_SCALE, FBO.Type.DEFAULT).useDepthBuffer();
    BufferClearingNode reflectedBufferClearingNode = new BufferClearingNode(reflectedBufferConfig, displayResolutionDependentFBOs, GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    renderGraph.addNode(reflectedBufferClearingNode, "reflectedBufferClearingNode");
    Node reflectedBackdropNode = new BackdropReflectionNode(context);
    renderGraph.addNode(reflectedBackdropNode, "reflectedBackdropNode");
    Node worldReflectionNode = new WorldReflectionNode(context);
    renderGraph.addNode(worldReflectionNode, "worldReflectionNode");
    renderGraph.connect(reflectedBufferClearingNode, reflectedBackdropNode, worldReflectionNode);
    FBOConfig reflectedRefractedBufferConfig = new FBOConfig(RefractiveReflectiveBlocksNode.REFRACTIVE_REFLECTIVE_FBO_URI, FULL_SCALE, FBO.Type.HDR).useNormalBuffer();
    BufferClearingNode reflectedRefractedBufferClearingNode = new BufferClearingNode(reflectedRefractedBufferConfig, displayResolutionDependentFBOs, GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    renderGraph.addNode(reflectedRefractedBufferClearingNode, "reflectedRefractedBufferClearingNode");
    Node chunksRefractiveReflectiveNode = new RefractiveReflectiveBlocksNode(context);
    renderGraph.addNode(chunksRefractiveReflectiveNode, "chunksRefractiveReflectiveNode");
    Node applyDeferredLightingNode = renderGraph.findNode("engine:applyDeferredLightingNode");
    renderGraph.connect(reflectedRefractedBufferClearingNode, chunksRefractiveReflectiveNode);
    renderGraph.connect(worldReflectionNode, chunksRefractiveReflectiveNode);
    // TODO: At this stage, it is unclear -why- this connection is required, we just know that it's required. Investigate.
    renderGraph.connect(applyDeferredLightingNode, chunksRefractiveReflectiveNode);
// TODO: consider having a non-rendering node for FBO.attachDepthBufferTo() methods
}
Also used : FBOConfig(org.terasology.rendering.opengl.FBOConfig) RefractiveReflectiveBlocksNode(org.terasology.rendering.dag.nodes.RefractiveReflectiveBlocksNode) DeferredMainLightNode(org.terasology.rendering.dag.nodes.DeferredMainLightNode) PrePostCompositeNode(org.terasology.rendering.dag.nodes.PrePostCompositeNode) ShadowMapNode(org.terasology.rendering.dag.nodes.ShadowMapNode) OutlineNode(org.terasology.rendering.dag.nodes.OutlineNode) InitialPostProcessingNode(org.terasology.rendering.dag.nodes.InitialPostProcessingNode) BlurredAmbientOcclusionNode(org.terasology.rendering.dag.nodes.BlurredAmbientOcclusionNode) OpaqueBlocksNode(org.terasology.rendering.dag.nodes.OpaqueBlocksNode) AmbientOcclusionNode(org.terasology.rendering.dag.nodes.AmbientOcclusionNode) FinalPostProcessingNode(org.terasology.rendering.dag.nodes.FinalPostProcessingNode) UpdateExposureNode(org.terasology.rendering.dag.nodes.UpdateExposureNode) LightShaftsNode(org.terasology.rendering.dag.nodes.LightShaftsNode) AlphaRejectBlocksNode(org.terasology.rendering.dag.nodes.AlphaRejectBlocksNode) Node(org.terasology.rendering.dag.Node) DeferredPointLightsNode(org.terasology.rendering.dag.nodes.DeferredPointLightsNode) WorldReflectionNode(org.terasology.rendering.dag.nodes.WorldReflectionNode) ToneMappingNode(org.terasology.rendering.dag.nodes.ToneMappingNode) BufferClearingNode(org.terasology.rendering.dag.nodes.BufferClearingNode) HighPassNode(org.terasology.rendering.dag.nodes.HighPassNode) BloomBlurNode(org.terasology.rendering.dag.nodes.BloomBlurNode) OpaqueObjectsNode(org.terasology.rendering.dag.nodes.OpaqueObjectsNode) OutputToHMDNode(org.terasology.rendering.dag.nodes.OutputToHMDNode) LateBlurNode(org.terasology.rendering.dag.nodes.LateBlurNode) ApplyDeferredLightingNode(org.terasology.rendering.dag.nodes.ApplyDeferredLightingNode) BackdropReflectionNode(org.terasology.rendering.dag.nodes.BackdropReflectionNode) DownSamplerForExposureNode(org.terasology.rendering.dag.nodes.DownSamplerForExposureNode) HazeNode(org.terasology.rendering.dag.nodes.HazeNode) RefractiveReflectiveBlocksNode(org.terasology.rendering.dag.nodes.RefractiveReflectiveBlocksNode) SimpleBlendMaterialsNode(org.terasology.rendering.dag.nodes.SimpleBlendMaterialsNode) OutputToScreenNode(org.terasology.rendering.dag.nodes.OutputToScreenNode) BackdropNode(org.terasology.rendering.dag.nodes.BackdropNode) OverlaysNode(org.terasology.rendering.dag.nodes.OverlaysNode) BufferClearingNode(org.terasology.rendering.dag.nodes.BufferClearingNode) BackdropReflectionNode(org.terasology.rendering.dag.nodes.BackdropReflectionNode) WorldReflectionNode(org.terasology.rendering.dag.nodes.WorldReflectionNode)

Example 3 with BufferClearingNode

use of org.terasology.rendering.dag.nodes.BufferClearingNode in project Terasology by MovingBlocks.

the class WorldRendererImpl method addGBufferClearingNodes.

private void addGBufferClearingNodes(RenderGraph renderGraph) {
    SwappableFBO gBufferPair = displayResolutionDependentFBOs.getGBufferPair();
    BufferClearingNode lastUpdatedGBufferClearingNode = new BufferClearingNode(gBufferPair.getLastUpdatedFbo(), GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
    renderGraph.addNode(lastUpdatedGBufferClearingNode, "lastUpdatedGBufferClearingNode");
    BufferClearingNode staleGBufferClearingNode = new BufferClearingNode(gBufferPair.getStaleFbo(), GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
    renderGraph.addNode(staleGBufferClearingNode, "staleGBufferClearingNode");
}
Also used : SwappableFBO(org.terasology.rendering.opengl.SwappableFBO) BufferClearingNode(org.terasology.rendering.dag.nodes.BufferClearingNode)

Aggregations

BufferClearingNode (org.terasology.rendering.dag.nodes.BufferClearingNode)3 Node (org.terasology.rendering.dag.Node)2 AlphaRejectBlocksNode (org.terasology.rendering.dag.nodes.AlphaRejectBlocksNode)2 AmbientOcclusionNode (org.terasology.rendering.dag.nodes.AmbientOcclusionNode)2 ApplyDeferredLightingNode (org.terasology.rendering.dag.nodes.ApplyDeferredLightingNode)2 BackdropNode (org.terasology.rendering.dag.nodes.BackdropNode)2 BackdropReflectionNode (org.terasology.rendering.dag.nodes.BackdropReflectionNode)2 BloomBlurNode (org.terasology.rendering.dag.nodes.BloomBlurNode)2 BlurredAmbientOcclusionNode (org.terasology.rendering.dag.nodes.BlurredAmbientOcclusionNode)2 DeferredMainLightNode (org.terasology.rendering.dag.nodes.DeferredMainLightNode)2 DeferredPointLightsNode (org.terasology.rendering.dag.nodes.DeferredPointLightsNode)2 DownSamplerForExposureNode (org.terasology.rendering.dag.nodes.DownSamplerForExposureNode)2 FinalPostProcessingNode (org.terasology.rendering.dag.nodes.FinalPostProcessingNode)2 HazeNode (org.terasology.rendering.dag.nodes.HazeNode)2 HighPassNode (org.terasology.rendering.dag.nodes.HighPassNode)2 InitialPostProcessingNode (org.terasology.rendering.dag.nodes.InitialPostProcessingNode)2 LateBlurNode (org.terasology.rendering.dag.nodes.LateBlurNode)2 LightShaftsNode (org.terasology.rendering.dag.nodes.LightShaftsNode)2 OpaqueBlocksNode (org.terasology.rendering.dag.nodes.OpaqueBlocksNode)2 OpaqueObjectsNode (org.terasology.rendering.dag.nodes.OpaqueObjectsNode)2