Search in sources :

Example 1 with AlphaRejectBlocksNode

use of org.terasology.rendering.dag.nodes.AlphaRejectBlocksNode 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 AlphaRejectBlocksNode

use of org.terasology.rendering.dag.nodes.AlphaRejectBlocksNode 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);
}
Also used : AlphaRejectBlocksNode(org.terasology.rendering.dag.nodes.AlphaRejectBlocksNode) 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) OpaqueObjectsNode(org.terasology.rendering.dag.nodes.OpaqueObjectsNode) OverlaysNode(org.terasology.rendering.dag.nodes.OverlaysNode) OpaqueBlocksNode(org.terasology.rendering.dag.nodes.OpaqueBlocksNode)

Example 3 with AlphaRejectBlocksNode

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

the class WorldRendererImpl method add3dDecorationNodes.

private void add3dDecorationNodes(RenderGraph renderGraph) {
    Node opaqueObjectsNode = renderGraph.findNode("engine:opaqueObjectsNode");
    Node opaqueBlocksNode = renderGraph.findNode("engine:opaqueBlocksNode");
    Node alphaRejectBlocksNode = renderGraph.findNode("engine:alphaRejectBlocksNode");
    Node applyDeferredLightingNode = renderGraph.findNode("engine:applyDeferredLightingNode");
    Node outlineNode = new OutlineNode(context);
    renderGraph.addNode(outlineNode, "outlineNode");
    renderGraph.connect(opaqueObjectsNode, outlineNode);
    renderGraph.connect(opaqueBlocksNode, outlineNode);
    renderGraph.connect(alphaRejectBlocksNode, outlineNode);
    Node ambientOcclusionNode = new AmbientOcclusionNode(context);
    renderGraph.addNode(ambientOcclusionNode, "ambientOcclusionNode");
    renderGraph.connect(opaqueObjectsNode, ambientOcclusionNode);
    renderGraph.connect(opaqueBlocksNode, ambientOcclusionNode);
    renderGraph.connect(alphaRejectBlocksNode, ambientOcclusionNode);
    // TODO: At this stage, it is unclear -why- this connection is required, we just know that it's required. Investigate.
    renderGraph.connect(applyDeferredLightingNode, ambientOcclusionNode);
    Node blurredAmbientOcclusionNode = new BlurredAmbientOcclusionNode(context);
    renderGraph.addNode(blurredAmbientOcclusionNode, "blurredAmbientOcclusionNode");
    renderGraph.connect(ambientOcclusionNode, blurredAmbientOcclusionNode);
}
Also used : BlurredAmbientOcclusionNode(org.terasology.rendering.dag.nodes.BlurredAmbientOcclusionNode) AmbientOcclusionNode(org.terasology.rendering.dag.nodes.AmbientOcclusionNode) 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) BlurredAmbientOcclusionNode(org.terasology.rendering.dag.nodes.BlurredAmbientOcclusionNode) OutlineNode(org.terasology.rendering.dag.nodes.OutlineNode)

Aggregations

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