diff --git a/components/renderers/cpp/include/ftl/render/splat_params.hpp b/components/renderers/cpp/include/ftl/render/splat_params.hpp index 5bd7d2edbc0b30863e5ecfe04f2e7bc0ce662f20..0509ee37f0d85163fde2b462ad0871f8a824070b 100644 --- a/components/renderers/cpp/include/ftl/render/splat_params.hpp +++ b/components/renderers/cpp/include/ftl/render/splat_params.hpp @@ -9,9 +9,7 @@ namespace ftl { namespace render { static const uint kShowDisconMask = 0x00000001; -static const uint kNoSplatting = 0x00000002; -static const uint kNoUpsampling = 0x00000004; -static const uint kNoTexturing = 0x00000008; +static const uint kNormalWeightColours = 0x00000002; struct __align__(16) SplatParams { float4x4 m_viewMatrix; diff --git a/components/renderers/cpp/src/splat_render.cpp b/components/renderers/cpp/src/splat_render.cpp index 6b8736effb30895b9ce0f5e503acec78f44c7224..b22b377e158faff8143d49c279955a195ce52dcc 100644 --- a/components/renderers/cpp/src/splat_render.cpp +++ b/components/renderers/cpp/src/splat_render.cpp @@ -288,10 +288,8 @@ bool Splatter::render(ftl::rgbd::VirtualSource *src, ftl::rgbd::Frame &out, cuda // Parameters object to pass to CUDA describing the camera SplatParams params; params.m_flags = 0; - if (src->value("show_discontinuity_mask", false)) params.m_flags |= ftl::render::kShowDisconMask; - //if (src->value("splatting", true) == false) params.m_flags |= ftl::render::kNoSplatting; - //if (src->value("upsampling", true) == false) params.m_flags |= ftl::render::kNoUpsampling; - //if (src->value("texturing", true) == false) params.m_flags |= ftl::render::kNoTexturing; + if (value("show_discontinuity_mask", false)) params.m_flags |= ftl::render::kShowDisconMask; + if (value("normal_weight_colours", true)) params.m_flags |= ftl::render::kNormalWeightColours; params.m_viewMatrix = MatrixConversion::toCUDA(src->getPose().cast<float>().inverse()); params.m_viewMatrixInverse = MatrixConversion::toCUDA(src->getPose().cast<float>()); params.camera = camera; diff --git a/components/renderers/cpp/src/splatter.cu b/components/renderers/cpp/src/splatter.cu index 3c55263d812229fe7701504af013deadfe04bada..aa0fc6bed113e2e0066b40b7e64a0cd5218d5908 100644 --- a/components/renderers/cpp/src/splatter.cu +++ b/components/renderers/cpp/src/splatter.cu @@ -208,7 +208,10 @@ __device__ inline float make(const float4 &v) { //t *= (params.m_viewMatrix.getFloat3x3() * ray).z; t *= scale; const float3 camPos3 = params.camera.screenToCam((int)(x),(int)(y),t); - const float weight = ftl::cuda::spatialWeighting(camPos, camPos3, 2.0f*(camPos3.z/params.camera.fx)) * n.w * n.w; + float weight = ftl::cuda::spatialWeighting(camPos, camPos3, 2.0f*(camPos3.z/params.camera.fx)); + + if (params.m_flags & ftl::render::kNormalWeightColours) weight *= n.w * n.w; + if (weight <= 0.0f) continue; //depth += t * weight; //contrib += weight;