Atlassian uses cookies to improve your browsing experience, perform analytics and research, and conduct advertising. Accept all cookies to indicate that you agree to our use of cookies on your device. Atlassian cookies and tracking notice, (opens new window)

Enlighten SDK 3.10 Documentation
Results will update as you type.
  • Welcome to Enlighten
  • How Enlighten works
  • Artist workflow
  • Install Enlighten
  • Libraries
  • Implementation guide
  • Technical reference
    • Output formats
    • Albedo handling
    • Lightmap lighting models
    • Light probe evaluation
    • Local IBL reflections
    • Light visibility data
    • Custom direct lights
    • Precompute pipeline
    • Low level precompute API
    • Debugging the precompute
    • The low level runtime
      • Low level runtime walkthrough
      • Input lighting
        • Input lighting concepts
        • Half-precision input lighting
        • Bounce Resampling
        • Probe bounce updates
        • Static destruction
      • Debug the low level runtime
    • Baked lighting
    • Performance tuning
    • Technical troubleshooting
    • Terrain LOD
    • Probe LOD
    • Lightmap LOD
  • Advanced techniques
  • Tools
  • Enlighten Mobile
  • White papers
  • Third-party licences
  • Release notes
    Calendars

You‘re viewing this with anonymous access, so some content might be blocked.
/
Probe bounce updates

    This is the documentation for Enlighten.

    Probe bounce updates

    Nov 21, 2019

    Systems which contain Probe Radiosity instances take an optimised path within the High Level Build System ensuring it doesn't generate any lightmap data. As a consequence, there is no RadSystemCore for this system and so the radiosity solver cannot be used. Instead, after all the probesets have been solved but before the subsequent InputLighting solve is called, the ProbeBounceBuffer needs to be updated with the new probe values. This updated ProbeBounceBuffer object is then passed as input into the IndirectInputLighting parameters before the call to DoIndirectInputLighting().

    Low level API

    The data required to create a ProbeBounceBuffer is generated during the precompute, after which a new optional InputWorkspace RadDataBlock becomes available:

    class InputWorkspace
    {
    public:
    ...
    /// Optional precomputed data used for Probe Radiosity
    RadDataBlock m_ClusterProbeSampleBounceData;
    };
    

    The ProbeBounceBuffer object can be created with the following API calls:

    Geo::u32 GEO_CALL CalcProbeBounceBufferSize(const Enlighten::InputWorkspace* inputWorkspace, Geo::s32 numInterpolants, PrecisionHint::Value precision = PrecisionHint::DEFAULT_PRECISION);
    Enlighten::ProbeBounceBuffer* GEO_CALL CreateProbeBounceBuffer(void* memory, const Enlighten::InputWorkspace* inputWorkspace, Geo::s32 numInterpolants, PrecisionHint::Value precision=PrecisionHint::DEFAULT_PRECISION);
    

    It is then updated with the following function, which needs to be called any time the probe values may have changed:

    void GEO_CALL UpdateProbeBounceBuffer( const InputWorkspace* inputWorkspace, Enlighten::ProbeBounceBuffer *probeBounceBuffer, const InterpolationInputSet* interpolationInputs, Geo::s32 numInterpolationInputs, bool recomputeInterpolants);
    

    Note: Interpolants need to be recomputed any time a new probeset is streamed in or out, changing the InterpolationInputSet array.


    , multiple selections available,
    {"serverDuration": 10, "requestCorrelationId": "7b1c4d4f60144a37a463f2004899ae9e"}