From 873dee41d0a985f23c86c4f15f76e56d77d3dcdd Mon Sep 17 00:00:00 2001 From: Mathias Paulin <mathias.paulin@irit.fr> Date: Tue, 22 Feb 2022 07:37:22 +0100 Subject: [PATCH] [librender] use static_cast instead of dynamic_cast when the conversion is guaranteed --- .../PremadeNodes/AntiAliasing/FXAANode.cpp | 2 +- .../Compositing/DifferenceNode.cpp | 4 +- .../Compositing/LessThanThresholdNode.cpp | 2 +- .../PremadeNodes/Compositing/MaxNode.cpp | 4 +- .../PremadeNodes/Compositing/MinNode.cpp | 4 +- .../Compositing/MoreThanThresholdNode.cpp | 2 +- .../PremadeNodes/Compositing/MultiplyNode.cpp | 4 +- .../PremadeNodes/Compositing/OneMinusNode.cpp | 2 +- .../PremadeNodes/Compositing/SumNode.cpp | 4 +- .../PremadeNodes/Filters/FilterNode.hpp | 19 +- .../Filters/FilterROByTypeNode.hpp | 2 +- .../RenderPasses/AccessibilityBufferNode.cpp | 25 +- .../RenderPasses/AccessibilityBufferNode.hpp | 7 +- .../RenderPasses/ClearColorNode.cpp | 10 +- .../RenderPasses/EmissivityNode.cpp | 16 +- .../RenderPasses/EnvLightNode.cpp | 14 +- .../RenderPasses/LocalLightNode.cpp | 14 +- .../PremadeNodes/RenderPasses/SimpleNode.cpp | 6 +- .../RenderPasses/TransparencyNode.cpp | 16 +- .../PremadeNodes/RenderPasses/UINode.cpp | 12 +- .../PremadeNodes/RenderPasses/VolumeNode.cpp | 12 +- .../RenderPasses/VolumeVizualisationNode.cpp | 14 +- .../RenderPasses/WireframeNode.cpp | 12 +- .../RenderPasses/ZGeomPrepassNode.cpp | 4 +- .../PremadeNodes/Sinks/DisplaySinkNode.cpp | 4 +- .../RenderGraphs/fullfeaturerenderer.flow | 354 +++++++++--------- 26 files changed, 289 insertions(+), 280 deletions(-) diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/AntiAliasing/FXAANode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/AntiAliasing/FXAANode.cpp index 20350ce..8a7a9a6 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/AntiAliasing/FXAANode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/AntiAliasing/FXAANode.cpp @@ -125,7 +125,7 @@ void FXAANode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Texture 1 - auto inputColor1 = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor1 = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); NodeTypeTexture* texColor1 = &inputColor1->getData(); m_framebuffer->bind(); diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/DifferenceNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/DifferenceNode.cpp index 1dac170..ad05736 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/DifferenceNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/DifferenceNode.cpp @@ -68,11 +68,11 @@ void DifferenceNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Texture 1 - auto inputColor1 = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor1 = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); NodeTypeTexture* texColor1 = &inputColor1->getData(); // Texture 2 - auto inputColor2 = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); + auto inputColor2 = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); NodeTypeTexture* texColor2 = &inputColor2->getData(); m_framebuffer->bind(); diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/LessThanThresholdNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/LessThanThresholdNode.cpp index 0c1a258..c6ae062 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/LessThanThresholdNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/LessThanThresholdNode.cpp @@ -72,7 +72,7 @@ void LessThanThresholdNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Texture 1 - auto inputColor1 = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor1 = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); NodeTypeTexture* texColor1 = &inputColor1->getData(); m_framebuffer->bind(); diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MaxNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MaxNode.cpp index 4b0e6cb..f693063 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MaxNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MaxNode.cpp @@ -68,11 +68,11 @@ void MaxNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Texture 1 - auto inputColor1 = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor1 = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); NodeTypeTexture* texColor1 = &inputColor1->getData(); // Texture 2 - auto inputColor2 = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); + auto inputColor2 = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); NodeTypeTexture* texColor2 = &inputColor2->getData(); m_framebuffer->bind(); diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MinNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MinNode.cpp index 22e4565..e7fa17d 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MinNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MinNode.cpp @@ -68,11 +68,11 @@ void MinNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Texture 1 - auto inputColor1 = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor1 = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); NodeTypeTexture* texColor1 = &inputColor1->getData(); // Texture 2 - auto inputColor2 = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); + auto inputColor2 = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); NodeTypeTexture* texColor2 = &inputColor2->getData(); m_framebuffer->bind(); diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MoreThanThresholdNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MoreThanThresholdNode.cpp index 01693e0..f607e5a 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MoreThanThresholdNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MoreThanThresholdNode.cpp @@ -72,7 +72,7 @@ void MoreThanThresholdNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Texture 1 - auto inputColor1 = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor1 = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); NodeTypeTexture* texColor1 = &inputColor1->getData(); m_framebuffer->bind(); diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MultiplyNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MultiplyNode.cpp index 1cd9640..a932256 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MultiplyNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/MultiplyNode.cpp @@ -68,11 +68,11 @@ void MultiplyNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Texture 1 - auto inputColor1 = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor1 = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); NodeTypeTexture* texColor1 = &inputColor1->getData(); // Texture 2 - auto inputColor2 = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); + auto inputColor2 = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); NodeTypeTexture* texColor2 = &inputColor2->getData(); m_framebuffer->bind(); diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/OneMinusNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/OneMinusNode.cpp index 77a7d22..5c5ce07 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/OneMinusNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/OneMinusNode.cpp @@ -64,7 +64,7 @@ void OneMinusNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Texture 1 - auto inputColor1 = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor1 = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); NodeTypeTexture* texColor1 = &inputColor1->getData(); m_framebuffer->bind(); diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/SumNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/SumNode.cpp index b49ba80..a7e2a99 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/SumNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Compositing/SumNode.cpp @@ -68,11 +68,11 @@ void SumNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Texture 1 - auto inputColor1 = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor1 = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); NodeTypeTexture* texColor1 = &inputColor1->getData(); // Texture 2 - auto inputColor2 = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); + auto inputColor2 = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); NodeTypeTexture* texColor2 = &inputColor2->getData(); m_framebuffer->bind(); diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Filters/FilterNode.hpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Filters/FilterNode.hpp index cd88055..fdd1fcc 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Filters/FilterNode.hpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Filters/FilterNode.hpp @@ -24,17 +24,20 @@ class FilterNode : public Node void execute() override { auto input = dynamic_cast<PortIn<std::vector<T>>*>( m_inputs[0].get() ); - std::vector<T> inData = input->getData(); - m_elements.clear(); - for ( size_t i = 0; i < inData.size(); i++ ) + if ( input->isLinked() ) { - if ( m_filterFunction( inData[i] ) ) { m_elements.push_back( inData[i] ); } - } + std::vector<T>& inData = input->getData(); + m_elements.clear(); + for ( size_t i = 0; i < inData.size(); i++ ) + { + if ( m_filterFunction( inData[i] ) ) { m_elements.push_back( inData[i] ); } + } #ifdef GRAPH_CALL_TRACE - std::cout << "\e[36m\e[1mFilterNode \e[0m \"" << m_name << "\": execute, from " - << input->getData().size() << " to " << m_elements.size() << " " - << typeid( T ).name() << "." << std::endl; + std::cout << "\e[36m\e[1mFilterNode \e[0m \"" << m_name << "\": execute, from " + << input->getData().size() << " to " << m_elements.size() << " " + << typeid( T ).name() << "." << std::endl; #endif + } } void destroy() override { diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Filters/FilterROByTypeNode.hpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Filters/FilterROByTypeNode.hpp index c0a262a..32ecf59 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Filters/FilterROByTypeNode.hpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Filters/FilterROByTypeNode.hpp @@ -37,7 +37,7 @@ class FilterROByTypeNode : public FilterNode<NodeTypeRenderObject> } } void fromJsonInternal( const nlohmann::json& data ) override { - if ( data.contains( "filteredType" ) ) { m_selector.set( data["filteredType"].get<std::string>() ); } + if ( data.contains( "filteredType" ) ) { setTypeToFilter( data["filteredType"].get<std::string>() ); } else { m_selector.set(0); } } diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/AccessibilityBufferNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/AccessibilityBufferNode.cpp index 037b56b..eb3d566 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/AccessibilityBufferNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/AccessibilityBufferNode.cpp @@ -110,17 +110,17 @@ void AccessibilityBufferNode::update() { void AccessibilityBufferNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Positions - auto inputPosition = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); - NodeTypeTexture* posTexture = &inputPosition->getData(); + auto inputPosition = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto posTexture = &inputPosition->getData(); // Normals - auto inputNormal = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); - NodeTypeTexture* normalTexture = &inputNormal->getData(); + auto inputNormal = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); + auto normalTexture = &inputNormal->getData(); // AO Radius float aoRadius = m_editableAORadius; if ( m_inputs[2]->isLinked() ) - { aoRadius = dynamic_cast<PortIn<Scalar>*>( m_inputs[2].get() )->getData(); } + { aoRadius = static_cast<PortIn<Scalar>*>( m_inputs[2].get() )->getData(); } #ifdef GRAPH_CALL_TRACE else { @@ -132,7 +132,7 @@ void AccessibilityBufferNode::execute() { // AO Samples int samples = m_editableSamples; if ( m_inputs[3]->isLinked() ) - { samples = static_cast<int>( dynamic_cast<PortIn<Scalar>*>( m_inputs[3].get() )->getData() ); } + { samples = static_cast<int>( static_cast<PortIn<Scalar>*>( m_inputs[3].get() )->getData() ); } if ( m_currentSamples != samples ) { m_currentSamples = samples; @@ -141,8 +141,8 @@ void AccessibilityBufferNode::execute() { } // Cameras - auto inputCamera = dynamic_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[4].get() ); - std::vector<NodeTypeCamera> cameras = inputCamera->getData(); + auto inputCamera = static_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[4].get() ); + std::vector<NodeTypeCamera>& cameras = inputCamera->getData(); #ifdef GRAPH_CALL_TRACE std::cout << cameras.size() << " cameras" << std::endl; #endif @@ -223,8 +223,13 @@ void AccessibilityBufferNode::resize( uint32_t width, uint32_t height ) { } void AccessibilityBufferNode::toJsonInternal( nlohmann::json& data ) const { - data["samples"] = m_currentSamples; - data["radius"] = m_editableAORadius; + if ( m_currentSamples != AO_DefaultSamples ) { + // do not write default value + data["samples"] = m_currentSamples; + } + if ( m_editableAORadius != AO_DefaultRadius ) { + // do not write default value + data["radius"] = m_editableAORadius; } } void AccessibilityBufferNode::fromJsonInternal( const nlohmann::json& data ) { diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/AccessibilityBufferNode.hpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/AccessibilityBufferNode.hpp index a17b8af..ce20ec9 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/AccessibilityBufferNode.hpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/AccessibilityBufferNode.hpp @@ -26,11 +26,14 @@ class NodeBasedRenderer_LIBRARY_API AccessibilityBufferNode : public Node void fromJsonInternal( const nlohmann::json& data ) override; private: + static constexpr Scalar AO_DefaultRadius {5_ra}; + static constexpr Scalar AO_DefaultSamples {64_ra}; + NodeTypeTexture* m_rawAO{ nullptr }; NodeTypeTexture* m_AO{ nullptr }; - Scalar m_editableAORadius{ 5 }; - Scalar m_editableSamples{ 64 }; + Scalar m_editableAORadius{ AO_DefaultRadius }; + Scalar m_editableSamples{ AO_DefaultSamples }; int m_currentSamples{ 64 }; Scalar m_sceneDiag{ 1.0 }; diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/ClearColorNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/ClearColorNode.cpp index f7421e2..4244875 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/ClearColorNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/ClearColorNode.cpp @@ -38,13 +38,13 @@ void ClearColorNode::update() { void ClearColorNode::execute() { // Color - auto inputColor = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); m_colorTexture = &inputColor->getData(); - auto outputColor = dynamic_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); + auto outputColor = static_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); outputColor->setData( m_colorTexture ); // Clear color - auto inputClearColor = dynamic_cast<PortIn<Ra::Engine::Data::Color>*>( m_inputs[1].get() ); + auto inputClearColor = static_cast<PortIn<Ra::Engine::Data::Color>*>( m_inputs[1].get() ); float clearColor[4]; clearColor[0] = m_editableClearColor.x(); clearColor[1] = m_editableClearColor.y(); @@ -68,9 +68,9 @@ void ClearColorNode::execute() { #endif // Envmap - auto inputEnvmap = dynamic_cast<PortIn<EnvMapData>*>( m_inputs[2].get() ); + auto inputEnvmap = static_cast<PortIn<EnvMapData>*>( m_inputs[2].get() ); RadiumNBR::EnvMap* envmap{ nullptr }; - auto inputCamera = dynamic_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[3].get() ); + auto inputCamera = static_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[3].get() ); if ( inputEnvmap->isLinked() ) { envmap = inputEnvmap->getData().get(); diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/EmissivityNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/EmissivityNode.cpp index 0a3f754..f11e420 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/EmissivityNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/EmissivityNode.cpp @@ -54,22 +54,22 @@ void EmissivityNode::update() { void EmissivityNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Color - auto inputColor = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); m_colorTexture = &inputColor->getData(); - auto outputColor = dynamic_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); + auto outputColor = static_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); outputColor->setData( m_colorTexture ); // Depth - auto inputDepth = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); - NodeTypeTexture* depthTexture = &inputDepth->getData(); + auto inputDepth = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); + auto depthTexture = &inputDepth->getData(); // AO Radius - auto inputAO = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[2].get() ); - NodeTypeTexture* AOTexture = inputAO->isLinked() ? &inputAO->getData() : m_blankAO; + auto inputAO = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[2].get() ); + auto AOTexture = inputAO->isLinked() ? &inputAO->getData() : m_blankAO; inPassParams.addParameter( "amb_occ_sampler", AOTexture ); // Render objects - auto inputRO = dynamic_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[3].get() ); + auto inputRO = static_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[3].get() ); if ( !inputRO->isLinked() ) #ifdef GRAPH_CALL_TRACE { std::cout << "RenderObjects port is not linked, no render object" << std::endl; return;} @@ -81,7 +81,7 @@ void EmissivityNode::execute() { auto& renderObjects = inputRO->getData(); // Cameras - auto inputCamera = dynamic_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[4].get() ); + auto inputCamera = static_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[4].get() ); auto& cameras = inputCamera->getData(); m_framebuffer->bind(); diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/EnvLightNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/EnvLightNode.cpp index d91e4b8..f66e4ea 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/EnvLightNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/EnvLightNode.cpp @@ -60,22 +60,22 @@ void EnvLightNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Color - auto inputColor = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); m_colorTexture = &inputColor->getData(); - auto outputColor = dynamic_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); + auto outputColor = static_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); outputColor->setData( m_colorTexture ); // Depth - auto inputDepth = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); + auto inputDepth = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); NodeTypeTexture* depthTexture = &inputDepth->getData(); // AO - auto inputAO = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[2].get() ); + auto inputAO = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[2].get() ); NodeTypeTexture* AOTexture = inputAO->isLinked() ? &inputAO->getData() : m_blankAO; inPassParams.addParameter( "amb_occ_sampler", AOTexture ); // Envmap - auto inputEnvmap = dynamic_cast<PortIn<EnvMapData>*>( m_inputs[3].get() ); + auto inputEnvmap = static_cast<PortIn<EnvMapData>*>( m_inputs[3].get() ); RadiumNBR::EnvMap* envmap{ nullptr }; if ( inputEnvmap->isLinked() ) { @@ -104,7 +104,7 @@ void EnvLightNode::execute() { } // Render objects - auto inputRO = dynamic_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[4].get() ); + auto inputRO = static_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[4].get() ); if ( !inputRO->isLinked() ) #ifdef GRAPH_CALL_TRACE { std::cout << "RenderObjects port is not linked, no render object" << std::endl; return;} @@ -116,7 +116,7 @@ void EnvLightNode::execute() { auto& renderObjects = inputRO->getData(); // Cameras - auto inputCamera = dynamic_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[5].get() ); + auto inputCamera = static_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[5].get() ); auto& cameras = inputCamera->getData(); m_framebuffer->bind(); diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/LocalLightNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/LocalLightNode.cpp index 66a5c38..4a18648 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/LocalLightNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/LocalLightNode.cpp @@ -56,22 +56,22 @@ void LocalLightNode::update() { void LocalLightNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Color - auto inputColor = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); m_colorTexture = &inputColor->getData(); - auto outputColor = dynamic_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); + auto outputColor = static_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); outputColor->setData( m_colorTexture ); // Depth - auto inputDepth = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); + auto inputDepth = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); NodeTypeTexture* depthTexture = &inputDepth->getData(); // AO - auto inputAO = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[2].get() ); + auto inputAO = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[2].get() ); NodeTypeTexture* AOTexture = inputAO->isLinked() ? &inputAO->getData() : m_blankAO; inPassParams.addParameter( "amb_occ_sampler", AOTexture ); // Render objects - auto inputRO = dynamic_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[3].get() ); + auto inputRO = static_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[3].get() ); if ( !inputRO->isLinked() ) #ifdef GRAPH_CALL_TRACE { std::cout << "RenderObjects port is not linked, no render object" << std::endl; return;} @@ -83,11 +83,11 @@ void LocalLightNode::execute() { auto& renderObjects = inputRO->getData(); // Cameras - auto inputCamera = dynamic_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[4].get() ); + auto inputCamera = static_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[4].get() ); auto& cameras = inputCamera->getData(); // Lights - auto inputLight = dynamic_cast<PortIn<std::vector<NodeTypeLight>>*>( m_inputs[5].get() ); + auto inputLight = static_cast<PortIn<std::vector<NodeTypeLight>>*>( m_inputs[5].get() ); if ( !inputLight->isLinked() ) { #ifdef GRAPH_CALL_TRACE diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/SimpleNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/SimpleNode.cpp index 5d9d0b1..c147361 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/SimpleNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/SimpleNode.cpp @@ -85,7 +85,7 @@ void SimpleNode::update() {} void SimpleNode::execute() { // Render objects - auto inputRO = dynamic_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[0].get() ); + auto inputRO = static_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[0].get() ); if ( !inputRO->isLinked() ) #ifdef GRAPH_CALL_TRACE { std::cout << "RenderObjects port is not linked, no render object" << std::endl; return;} @@ -97,10 +97,10 @@ void SimpleNode::execute() { std::vector<NodeTypeRenderObject>& renderObjects = inputRO->getData(); // Cameras - auto inputCamera = dynamic_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[1].get() ); + auto inputCamera = static_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[1].get() ); auto& cameras = inputCamera->getData(); // Lights - auto inputLight = dynamic_cast<PortIn<std::vector<NodeTypeLight>>*>( m_inputs[2].get() ); + auto inputLight = static_cast<PortIn<std::vector<NodeTypeLight>>*>( m_inputs[2].get() ); if ( !inputLight->isLinked() ) { return; } auto& lights = inputLight->getData(); diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/TransparencyNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/TransparencyNode.cpp index 54ee7f4..592b1b8 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/TransparencyNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/TransparencyNode.cpp @@ -94,17 +94,17 @@ void TransparencyNode::update() { void TransparencyNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Color - auto inputColor = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); m_colorTexture = &inputColor->getData(); - auto outputColor = dynamic_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); + auto outputColor = static_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); outputColor->setData( m_colorTexture ); // Depth - auto inputDepth = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); + auto inputDepth = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); NodeTypeTexture* depthTexture = &inputDepth->getData(); // Render objects - auto inputRO = dynamic_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[2].get() ); + auto inputRO = static_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[2].get() ); if ( !inputRO->isLinked() ) #ifdef GRAPH_CALL_TRACE { std::cout << "RenderObjects port is not linked, no render object" << std::endl; return;} @@ -116,14 +116,14 @@ void TransparencyNode::execute() { auto& renderObjects = inputRO->getData(); // Cameras - auto inputCamera = dynamic_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[3].get() ); + auto inputCamera = static_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[3].get() ); auto& cameras = inputCamera->getData(); #ifdef GRAPH_CALL_TRACE std::cout << cameras.size() << " cameras" << std::endl; #endif // Lights - auto inputLight = dynamic_cast<PortIn<std::vector<NodeTypeLight>>*>( m_inputs[4].get() ); + auto inputLight = static_cast<PortIn<std::vector<NodeTypeLight>>*>( m_inputs[4].get() ); if ( !inputLight->isLinked() ) { #ifdef GRAPH_CALL_TRACE @@ -204,10 +204,10 @@ void TransparencyNode::resize( uint32_t width, uint32_t height ) { // output { - auto revealageOut = dynamic_cast<PortOut<NodeTypeTexture>*>( m_outputs[1].get() ); + auto revealageOut = static_cast<PortOut<NodeTypeTexture>*>( m_outputs[1].get() ); revealageOut->setData( m_revealageTexture ); - auto accumulationOut = dynamic_cast<PortOut<NodeTypeTexture>*>( m_outputs[2].get() ); + auto accumulationOut = static_cast<PortOut<NodeTypeTexture>*>( m_outputs[2].get() ); accumulationOut->setData( m_accumulationTexture ); } diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/UINode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/UINode.cpp index 809f176..aae77ac 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/UINode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/UINode.cpp @@ -38,17 +38,17 @@ void UINode::update() { void UINode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Color - auto inputColor = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); m_colorTexture = &inputColor->getData(); - auto outputColor = dynamic_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); + auto outputColor = static_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); outputColor->setData( m_colorTexture ); // Depth - auto inputDepth = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); + auto inputDepth = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); NodeTypeTexture* depthTexture = &inputDepth->getData(); // Activate - auto inputActivate = dynamic_cast<PortIn<bool>*>( m_inputs[2].get() ); + auto inputActivate = static_cast<PortIn<bool>*>( m_inputs[2].get() ); bool activate = true; if ( !inputActivate->isLinked() ) { std::cout << "Activation port is not linked, default to true" << std::endl; } @@ -56,7 +56,7 @@ void UINode::execute() { { activate = inputActivate->getData(); } // Render objects - auto inputRO = dynamic_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[3].get() ); + auto inputRO = static_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[3].get() ); if ( !inputRO->isLinked() ) #ifdef GRAPH_CALL_TRACE { std::cout << "RenderObjects port is not linked, no render object" << std::endl; return;} @@ -68,7 +68,7 @@ void UINode::execute() { auto& renderObjects = inputRO->getData(); // Cameras - auto inputCamera = dynamic_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[4].get() ); + auto inputCamera = static_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[4].get() ); auto& cameras = inputCamera->getData(); #ifdef GRAPH_CALL_TRACE std::cout << cameras.size() << " cameras" << std::endl; diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/VolumeNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/VolumeNode.cpp index b88c28a..f327f12 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/VolumeNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/VolumeNode.cpp @@ -84,17 +84,17 @@ void VolumeNode::update() { void VolumeNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Color - auto inputColor = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); m_colorTexture = &inputColor->getData(); - auto outputColor = dynamic_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); + auto outputColor = static_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); outputColor->setData( m_colorTexture ); // Depth - auto inputDepth = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); + auto inputDepth = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); NodeTypeTexture* depthTexture = &inputDepth->getData(); // Render objects - auto inputRO = dynamic_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[2].get() ); + auto inputRO = static_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[2].get() ); if ( !inputRO->isLinked() ) #ifdef GRAPH_CALL_TRACE { std::cout << "RenderObjects port is not linked, no render object" << std::endl; return;} @@ -106,14 +106,14 @@ void VolumeNode::execute() { auto& renderObjects = inputRO->getData(); // Cameras - auto inputCamera = dynamic_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[3].get() ); + auto inputCamera = static_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[3].get() ); auto& cameras = inputCamera->getData(); #ifdef GRAPH_CALL_TRACE std::cout << cameras.size() << " cameras" << std::endl; #endif // Lights - auto inputLight = dynamic_cast<PortIn<std::vector<NodeTypeLight>>*>( m_inputs[4].get() ); + auto inputLight = static_cast<PortIn<std::vector<NodeTypeLight>>*>( m_inputs[4].get() ); if ( !inputLight->isLinked() ) { #ifdef GRAPH_CALL_TRACE diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/VolumeVizualisationNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/VolumeVizualisationNode.cpp index 7cff2d8..1425be3 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/VolumeVizualisationNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/VolumeVizualisationNode.cpp @@ -105,17 +105,17 @@ void VolumeVizualisationNode::update() { void VolumeVizualisationNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Color - auto inputColor = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); m_colorTexture = &inputColor->getData(); - auto outputColor = dynamic_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); + auto outputColor = static_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); outputColor->setData( m_colorTexture ); // Depth - auto inputDepth = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); + auto inputDepth = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); NodeTypeTexture* depthTexture = &inputDepth->getData(); // Render objects - auto inputRO = dynamic_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[2].get() ); + auto inputRO = static_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[2].get() ); if ( !inputRO->isLinked() ) #ifdef GRAPH_CALL_TRACE { std::cout << "RenderObjects port is not linked, no render object" << std::endl; return;} @@ -127,14 +127,14 @@ void VolumeVizualisationNode::execute() { auto& renderObjects = inputRO->getData(); // Cameras - auto inputCamera = dynamic_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[3].get() ); + auto inputCamera = static_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[3].get() ); auto& cameras = inputCamera->getData(); #ifdef GRAPH_CALL_TRACE std::cout << cameras.size() << " cameras" << std::endl; #endif // Lights - auto inputLight = dynamic_cast<PortIn<std::vector<NodeTypeLight>>*>( m_inputs[4].get() ); + auto inputLight = static_cast<PortIn<std::vector<NodeTypeLight>>*>( m_inputs[4].get() ); if ( !inputLight->isLinked() ) { #ifdef GRAPH_CALL_TRACE @@ -230,7 +230,7 @@ void VolumeVizualisationNode::buildRenderTechnique( // Compute gradients auto mro = const_cast<Ra::Engine::Rendering::RenderObject*>( ro ); auto volume = - dynamic_cast<Ra::Core::Geometry::VolumeGrid&>( mro->getMesh()->getAbstractGeometry() ); + static_cast<Ra::Core::Geometry::VolumeGrid&>( mro->getMesh()->getAbstractGeometry() ); auto paramProvider = std::make_shared<VolumeWithGradientParameterProvider>( mat, volume ); if ( auto cfg = Ra::Engine::Data::ShaderConfigurationFactory::getConfiguration( diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/WireframeNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/WireframeNode.cpp index d5084bc..96e78ad 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/WireframeNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/WireframeNode.cpp @@ -128,17 +128,17 @@ void WireframeNode::update() { void WireframeNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Color - auto inputColor = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); + auto inputColor = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[0].get() ); m_colorTexture = &inputColor->getData(); - auto outputColor = dynamic_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); + auto outputColor = static_cast<PortOut<NodeTypeTexture>*>( m_outputs[0].get() ); outputColor->setData( m_colorTexture ); // Depth - auto inputDepth = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); + auto inputDepth = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[1].get() ); NodeTypeTexture* depthTexture = &inputDepth->getData(); // Activate - auto inputActivate = dynamic_cast<PortIn<bool>*>( m_inputs[2].get() ); + auto inputActivate = static_cast<PortIn<bool>*>( m_inputs[2].get() ); bool activate = m_editableActivate; if ( inputActivate->isLinked() ) { activate = inputActivate->getData(); } #ifdef GRAPH_CALL_TRACE @@ -147,7 +147,7 @@ void WireframeNode::execute() { #endif // Render objects - auto inputRO = dynamic_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[3].get() ); + auto inputRO = static_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[3].get() ); if ( !inputRO->isLinked() ) #ifdef GRAPH_CALL_TRACE { std::cout << "RenderObjects port is not linked, no render object" << std::endl; return;} @@ -161,7 +161,7 @@ void WireframeNode::execute() { if ( m_wireframes.size() > renderObjects.size() ) { m_wireframes.clear(); } // Cameras - auto inputCamera = dynamic_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[4].get() ); + auto inputCamera = static_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[4].get() ); auto& cameras = inputCamera->getData(); #ifdef GRAPH_CALL_TRACE std::cout << cameras.size() << " cameras" << std::endl; diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/ZGeomPrepassNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/ZGeomPrepassNode.cpp index d93feeb..d929a23 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/ZGeomPrepassNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/RenderPasses/ZGeomPrepassNode.cpp @@ -60,7 +60,7 @@ void ZGeomPrepassNode::execute() { Ra::Engine::Data::RenderParameters inPassParams; // Render objects - auto inputRO = dynamic_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[0].get() ); + auto inputRO = static_cast<PortIn<std::vector<NodeTypeRenderObject>>*>( m_inputs[0].get() ); if ( !inputRO->isLinked() ) #ifdef GRAPH_CALL_TRACE { std::cout << "RenderObjects port is not linked, no render object" << std::endl; return;} @@ -72,7 +72,7 @@ void ZGeomPrepassNode::execute() { auto& renderObjects = inputRO->getData(); // Cameras - auto inputCamera = dynamic_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[1].get() ); + auto inputCamera = static_cast<PortIn<std::vector<NodeTypeCamera>>*>( m_inputs[1].get() ); auto& cameras = inputCamera->getData(); #ifdef GRAPH_CALL_TRACE std::cout << cameras.size() << " cameras" << std::endl; diff --git a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Sinks/DisplaySinkNode.cpp b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Sinks/DisplaySinkNode.cpp index a6cb680..d510ba5 100644 --- a/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Sinks/DisplaySinkNode.cpp +++ b/src/libRender/RadiumNBR/NodeGraph/PremadeNodes/Sinks/DisplaySinkNode.cpp @@ -39,7 +39,7 @@ void DisplaySinkNode::execute() { { if ( m_inputs[i]->isLinked() ) { - auto input = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[i].get() ); + auto input = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[i].get() ); NodeTypeTexture* texture = &input->getData(); if ( texture ) { m_textures.push_back( texture ); } } @@ -83,7 +83,7 @@ void DisplaySinkNode::observeConnection( const std::string& name, } if ( m_inputs[i]->isLinked() ) { - auto input = dynamic_cast<PortIn<NodeTypeTexture>*>( m_inputs[i].get() ); + auto input = static_cast<PortIn<NodeTypeTexture>*>( m_inputs[i].get() ); NodeTypeTexture* texture = &input->getData(); if ( texture ) { m_textures.push_back( texture ); } } diff --git a/src/libRender/Resources/RadiumNBR/RenderGraphs/fullfeaturerenderer.flow b/src/libRender/Resources/RadiumNBR/RenderGraphs/fullfeaturerenderer.flow index 3870f91..b5f6e46 100644 --- a/src/libRender/Resources/RadiumNBR/RenderGraphs/fullfeaturerenderer.flow +++ b/src/libRender/Resources/RadiumNBR/RenderGraphs/fullfeaturerenderer.flow @@ -1,159 +1,159 @@ { "connections": [ { - "in_id": "{34e8d2d1-a2de-4ebe-a18f-4dcd5b440d1c}", - "in_index": 0, - "out_id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", + "in_id": "{d79d27a4-64c1-4fa1-adc8-c39fd9da3008}", + "in_index": 4, + "out_id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", "out_index": 0 }, { - "in_id": "{34e8d2d1-a2de-4ebe-a18f-4dcd5b440d1c}", + "in_id": "{d79d27a4-64c1-4fa1-adc8-c39fd9da3008}", "in_index": 3, - "out_id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", + "out_id": "{d07939d8-46d5-4d48-90fa-4ab2a4eebf30}", "out_index": 0 }, { - "in_id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", - "in_index": 4, + "in_id": "{4eabb57e-6858-49aa-bfe2-c6a0a20850c3}", + "in_index": 3, "out_id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", "out_index": 0 }, { - "in_id": "{4eabb57e-6858-49aa-bfe2-c6a0a20850c3}", - "in_index": 2, - "out_id": "{ab3678ab-f0fd-4815-8fa7-7cd08bb239fd}", + "in_id": "{c66eb0ff-d015-4974-b729-a272678bce05}", + "in_index": 5, + "out_id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", "out_index": 0 }, { - "in_id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", + "in_id": "{c4f37638-3568-46cd-acbe-622013f79c13}", "in_index": 1, "out_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", "out_index": 0 }, { - "in_id": "{d79d27a4-64c1-4fa1-adc8-c39fd9da3008}", + "in_id": "{aa0f14a1-bb34-43a6-a11d-5b88404d254d}", "in_index": 0, - "out_id": "{4eabb57e-6858-49aa-bfe2-c6a0a20850c3}", + "out_id": "{c4f37638-3568-46cd-acbe-622013f79c13}", "out_index": 0 }, { "in_id": "{c66eb0ff-d015-4974-b729-a272678bce05}", - "in_index": 2, - "out_id": "{cb6e4c08-38bf-48fd-8cf2-392a5491751b}", + "in_index": 1, + "out_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", "out_index": 0 }, { - "in_id": "{c4f37638-3568-46cd-acbe-622013f79c13}", - "in_index": 4, + "in_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", + "in_index": 1, "out_id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", "out_index": 0 }, { - "in_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", - "in_index": 0, - "out_id": "{d07939d8-46d5-4d48-90fa-4ab2a4eebf30}", + "in_id": "{d79d27a4-64c1-4fa1-adc8-c39fd9da3008}", + "in_index": 2, + "out_id": "{cb6e4c08-38bf-48fd-8cf2-392a5491751b}", "out_index": 0 }, { - "in_id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", - "in_index": 3, - "out_id": "{d07939d8-46d5-4d48-90fa-4ab2a4eebf30}", - "out_index": 0 + "in_id": "{cb6e4c08-38bf-48fd-8cf2-392a5491751b}", + "in_index": 1, + "out_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", + "out_index": 2 }, { - "in_id": "{34e8d2d1-a2de-4ebe-a18f-4dcd5b440d1c}", - "in_index": 2, - "out_id": "{9579a8e2-d2d0-4107-b7b5-32b4aa1e7ce9}", - "out_index": 0 + "in_id": "{cb6e4c08-38bf-48fd-8cf2-392a5491751b}", + "in_index": 0, + "out_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", + "out_index": 1 }, { "in_id": "{c66eb0ff-d015-4974-b729-a272678bce05}", - "in_index": 3, - "out_id": "{ab3678ab-f0fd-4815-8fa7-7cd08bb239fd}", + "in_index": 0, + "out_id": "{d79d27a4-64c1-4fa1-adc8-c39fd9da3008}", "out_index": 0 }, { - "in_id": "{cb6e4c08-38bf-48fd-8cf2-392a5491751b}", - "in_index": 4, - "out_id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", + "in_id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", + "in_index": 2, + "out_id": "{cb6e4c08-38bf-48fd-8cf2-392a5491751b}", "out_index": 0 }, { - "in_id": "{34e8d2d1-a2de-4ebe-a18f-4dcd5b440d1c}", - "in_index": 4, + "in_id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", + "in_index": 5, "out_id": "{c6d4682c-2a02-467a-9c5c-5511b63b17ba}", "out_index": 0 }, { - "in_id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", + "in_id": "{4eabb57e-6858-49aa-bfe2-c6a0a20850c3}", "in_index": 0, - "out_id": "{c66eb0ff-d015-4974-b729-a272678bce05}", + "out_id": "{62ad7aec-1ea4-4f10-85cb-4be1ecda4263}", "out_index": 0 }, { - "in_id": "{d79d27a4-64c1-4fa1-adc8-c39fd9da3008}", - "in_index": 1, - "out_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", + "in_id": "{c4f37638-3568-46cd-acbe-622013f79c13}", + "in_index": 0, + "out_id": "{34e8d2d1-a2de-4ebe-a18f-4dcd5b440d1c}", "out_index": 0 }, { - "in_id": "{c4f37638-3568-46cd-acbe-622013f79c13}", + "in_id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", "in_index": 0, - "out_id": "{34e8d2d1-a2de-4ebe-a18f-4dcd5b440d1c}", + "out_id": "{c66eb0ff-d015-4974-b729-a272678bce05}", "out_index": 0 }, { "in_id": "{34e8d2d1-a2de-4ebe-a18f-4dcd5b440d1c}", - "in_index": 1, - "out_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", + "in_index": 4, + "out_id": "{c6d4682c-2a02-467a-9c5c-5511b63b17ba}", "out_index": 0 }, { - "in_id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", + "in_id": "{34e8d2d1-a2de-4ebe-a18f-4dcd5b440d1c}", "in_index": 2, - "out_id": "{cb6e4c08-38bf-48fd-8cf2-392a5491751b}", + "out_id": "{9579a8e2-d2d0-4107-b7b5-32b4aa1e7ce9}", "out_index": 0 }, { - "in_id": "{c66eb0ff-d015-4974-b729-a272678bce05}", + "in_id": "{9579a8e2-d2d0-4107-b7b5-32b4aa1e7ce9}", "in_index": 0, - "out_id": "{d79d27a4-64c1-4fa1-adc8-c39fd9da3008}", + "out_id": "{d07939d8-46d5-4d48-90fa-4ab2a4eebf30}", "out_index": 0 }, { "in_id": "{4eabb57e-6858-49aa-bfe2-c6a0a20850c3}", - "in_index": 0, - "out_id": "{62ad7aec-1ea4-4f10-85cb-4be1ecda4263}", + "in_index": 2, + "out_id": "{ab3678ab-f0fd-4815-8fa7-7cd08bb239fd}", "out_index": 0 }, { - "in_id": "{cb6e4c08-38bf-48fd-8cf2-392a5491751b}", - "in_index": 1, - "out_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", - "out_index": 2 + "in_id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", + "in_index": 3, + "out_id": "{d07939d8-46d5-4d48-90fa-4ab2a4eebf30}", + "out_index": 0 }, { - "in_id": "{c66eb0ff-d015-4974-b729-a272678bce05}", - "in_index": 4, - "out_id": "{d07939d8-46d5-4d48-90fa-4ab2a4eebf30}", + "in_id": "{34e8d2d1-a2de-4ebe-a18f-4dcd5b440d1c}", + "in_index": 3, + "out_id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", "out_index": 0 }, { - "in_id": "{d79d27a4-64c1-4fa1-adc8-c39fd9da3008}", - "in_index": 2, - "out_id": "{cb6e4c08-38bf-48fd-8cf2-392a5491751b}", + "in_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", + "in_index": 0, + "out_id": "{d07939d8-46d5-4d48-90fa-4ab2a4eebf30}", "out_index": 0 }, { - "in_id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", - "in_index": 5, - "out_id": "{c6d4682c-2a02-467a-9c5c-5511b63b17ba}", + "in_id": "{c4f37638-3568-46cd-acbe-622013f79c13}", + "in_index": 4, + "out_id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", "out_index": 0 }, { - "in_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", + "in_id": "{34e8d2d1-a2de-4ebe-a18f-4dcd5b440d1c}", "in_index": 1, - "out_id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", + "out_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", "out_index": 0 }, { @@ -163,145 +163,125 @@ "out_index": 0 }, { - "in_id": "{c66eb0ff-d015-4974-b729-a272678bce05}", - "in_index": 1, - "out_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", + "in_id": "{cb6e4c08-38bf-48fd-8cf2-392a5491751b}", + "in_index": 4, + "out_id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", "out_index": 0 }, { - "in_id": "{aa0f14a1-bb34-43a6-a11d-5b88404d254d}", - "in_index": 0, - "out_id": "{c4f37638-3568-46cd-acbe-622013f79c13}", + "in_id": "{c66eb0ff-d015-4974-b729-a272678bce05}", + "in_index": 2, + "out_id": "{cb6e4c08-38bf-48fd-8cf2-392a5491751b}", "out_index": 0 }, { - "in_id": "{c4f37638-3568-46cd-acbe-622013f79c13}", - "in_index": 1, - "out_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", + "in_id": "{c66eb0ff-d015-4974-b729-a272678bce05}", + "in_index": 3, + "out_id": "{ab3678ab-f0fd-4815-8fa7-7cd08bb239fd}", "out_index": 0 }, { - "in_id": "{c66eb0ff-d015-4974-b729-a272678bce05}", - "in_index": 5, + "in_id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", + "in_index": 4, "out_id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", "out_index": 0 }, { - "in_id": "{cb6e4c08-38bf-48fd-8cf2-392a5491751b}", - "in_index": 0, - "out_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", - "out_index": 1 + "in_id": "{c66eb0ff-d015-4974-b729-a272678bce05}", + "in_index": 4, + "out_id": "{d07939d8-46d5-4d48-90fa-4ab2a4eebf30}", + "out_index": 0 }, { - "in_id": "{4eabb57e-6858-49aa-bfe2-c6a0a20850c3}", - "in_index": 3, - "out_id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", + "in_id": "{d79d27a4-64c1-4fa1-adc8-c39fd9da3008}", + "in_index": 0, + "out_id": "{4eabb57e-6858-49aa-bfe2-c6a0a20850c3}", "out_index": 0 }, { "in_id": "{d79d27a4-64c1-4fa1-adc8-c39fd9da3008}", - "in_index": 3, - "out_id": "{d07939d8-46d5-4d48-90fa-4ab2a4eebf30}", + "in_index": 1, + "out_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", "out_index": 0 }, { - "in_id": "{9579a8e2-d2d0-4107-b7b5-32b4aa1e7ce9}", - "in_index": 0, - "out_id": "{d07939d8-46d5-4d48-90fa-4ab2a4eebf30}", + "in_id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", + "in_index": 1, + "out_id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", "out_index": 0 }, { - "in_id": "{d79d27a4-64c1-4fa1-adc8-c39fd9da3008}", - "in_index": 4, - "out_id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", + "in_id": "{34e8d2d1-a2de-4ebe-a18f-4dcd5b440d1c}", + "in_index": 0, + "out_id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", "out_index": 0 } ], "nodes": [ { - "id": "{ab3678ab-f0fd-4815-8fa7-7cd08bb239fd}", - "model": { - "files": "/Users/mathias/Professionnel/Data/skyboxes/Spherical/spiaggia_di_mondello.jpg", - "instance": "EnvMapTextureSource14", - "name": "Source std::shared_ptr<RadiumNBR::EnvMap>", - "strength": 100, - "type": 2 - }, - "position": { - "x": -592.8287999999998, - "y": 153.8016 - } - }, - { - "id": "{c4f37638-3568-46cd-acbe-622013f79c13}", + "id": "{cb6e4c08-38bf-48fd-8cf2-392a5491751b}", "model": { - "activated": false, - "instance": "WireframeNode13", - "name": "Wireframe Pass" + "instance": "AccessibilityBufferNode4", + "name": "Accessibility Buffer Pass" }, "position": { - "x": 1814.7455999999997, - "y": 309.31199999999995 + "x": 460.73280000000034, + "y": 391.6895999999998 } }, { - "id": "{62ad7aec-1ea4-4f10-85cb-4be1ecda4263}", + "id": "{aa0f14a1-bb34-43a6-a11d-5b88404d254d}", "model": { - "instance": "ColorTextureNode12", - "name": "Color Texture" + "instance": "display", + "name": "Display Sink" }, "position": { - "x": -457.97759999999994, - "y": -215.02080000000004 + "x": 2139.9160319999987, + "y": 65.31194879999975 } }, { - "id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", + "id": "{34e8d2d1-a2de-4ebe-a18f-4dcd5b440d1c}", "model": { - "instance": "cameras", - "name": "Cameras" + "instance": "TransparencyNode5", + "name": "Transparency Pass" }, "position": { - "x": -92.15999999999983, - "y": 321.92640000000017 + "x": 1362.3552, + "y": 159.9552000000001 } }, { - "id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", + "id": "{d79d27a4-64c1-4fa1-adc8-c39fd9da3008}", "model": { - "instance": "LocalLightNode11", - "name": "Local Light Pass" + "instance": "EmissivityNode6", + "name": "Emissivity Pass" }, "position": { - "x": 1059.4128, - "y": 0.4959999999999809 + "x": 462.06719999999984, + "y": -292.3775999999999 } }, { - "id": "{4eabb57e-6858-49aa-bfe2-c6a0a20850c3}", + "id": "{c66eb0ff-d015-4974-b729-a272678bce05}", "model": { - "clearColor": [ - 0.1607843041419983, - 0.1607843041419983, - 0.1607843041419983 - ], - "instance": "ClearColorNode10", - "name": "Clear Color Pass" + "instance": "EnvLightNode8", + "name": "Environment Light Pass" }, "position": { - "x": 7.430399999999992, - "y": -444.0959999999998 + "x": 761.1129600000002, + "y": -145.65696 } }, { - "id": "{c6d4682c-2a02-467a-9c5c-5511b63b17ba}", + "id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", "model": { - "instance": "lights", - "name": "Lights" + "instance": "ZGeomPrepassNode7", + "name": "Z Geometry Prepass" }, "position": { - "x": 918.0384000000001, - "y": 552.3648000000001 + "x": 109.49759999999998, + "y": -19.007999999999967 } }, { @@ -317,82 +297,100 @@ } }, { - "id": "{c66eb0ff-d015-4974-b729-a272678bce05}", + "id": "{c6d4682c-2a02-467a-9c5c-5511b63b17ba}", "model": { - "instance": "EnvLightNode8", - "name": "Environment Light Pass" + "instance": "lights", + "name": "Lights" }, "position": { - "x": 761.1129600000002, - "y": -145.65696 + "x": 1059.6384, + "y": 539.1648000000002 } }, { - "id": "{9654598f-d4d4-494d-9f14-65d75606f1af}", + "id": "{4eabb57e-6858-49aa-bfe2-c6a0a20850c3}", "model": { - "instance": "ZGeomPrepassNode7", - "name": "Z Geometry Prepass" + "clearColor": [ + 0.15686273574829102, + 0.15686273574829102, + 0.15686273574829102 + ], + "instance": "ClearColorNode10", + "name": "Clear Color Pass" }, "position": { - "x": 109.49759999999998, - "y": -19.007999999999967 + "x": 7.430399999999992, + "y": -444.0959999999998 } }, { - "id": "{d07939d8-46d5-4d48-90fa-4ab2a4eebf30}", + "id": "{bdfe05be-3655-4d56-924d-ff3b1bbd709b}", "model": { - "instance": "renderObjects", - "name": "RenderObjects" + "instance": "LocalLightNode11", + "name": "Local Light Pass" }, "position": { - "x": -149.2454400000004, - "y": -820.3622399999997 + "x": 1059.4128, + "y": 0.4959999999999809 } }, { - "id": "{d79d27a4-64c1-4fa1-adc8-c39fd9da3008}", + "id": "{6ceda554-f6d1-4cf0-a36d-e811fc0ad3f1}", "model": { - "instance": "EmissivityNode6", - "name": "Emissivity Pass" + "instance": "cameras", + "name": "Cameras" }, "position": { - "x": 462.06719999999984, - "y": -292.3775999999999 + "x": -140.15999999999977, + "y": 387.9264000000001 } }, { - "id": "{34e8d2d1-a2de-4ebe-a18f-4dcd5b440d1c}", + "id": "{d07939d8-46d5-4d48-90fa-4ab2a4eebf30}", "model": { - "instance": "TransparencyNode5", - "name": "Transparency Pass" + "instance": "renderObjects", + "name": "RenderObjects" }, "position": { - "x": 1362.3552, - "y": 159.9552000000001 + "x": -138.44544000000042, + "y": -589.9622399999997 } }, { - "id": "{aa0f14a1-bb34-43a6-a11d-5b88404d254d}", + "id": "{62ad7aec-1ea4-4f10-85cb-4be1ecda4263}", "model": { - "instance": "display", - "name": "Display Sink" + "instance": "ColorTextureNode12", + "name": "Color Texture" }, "position": { - "x": 2264.7160319999984, - "y": 152.91194879999978 + "x": -438.7775999999999, + "y": -589.4207999999999 } }, { - "id": "{cb6e4c08-38bf-48fd-8cf2-392a5491751b}", + "id": "{c4f37638-3568-46cd-acbe-622013f79c13}", "model": { - "instance": "AccessibilityBufferNode4", - "name": "Accessibility Buffer Pass", - "radius": 5, - "samples": 64 + "activated": false, + "instance": "WireframeNode13", + "name": "Wireframe Pass" + }, + "position": { + "x": 1659.9455999999996, + "y": 309.31199999999995 + } + }, + { + "id": "{ab3678ab-f0fd-4815-8fa7-7cd08bb239fd}", + "model": { + "files": "/Users/mathias/Professionnel/Data/skyboxes/Spherical/spiaggia_di_mondello.jpg", + "instance": "EnvMapTextureSource14", + "name": "Source std::shared_ptr<RadiumNBR::EnvMap>", + "strength": 100, + "type": 2 }, "position": { - "x": 410.3328000000006, - "y": 462.48959999999977 + "x": -495.6287999999997, + "y": -42.998399999999975 } } ] -- GitLab