Nebula
Loading...
Searching...
No Matches
raytracingcontext.h
Go to the documentation of this file.
1#pragma once
2//------------------------------------------------------------------------------
9//------------------------------------------------------------------------------
12#include "coregraphics/buffer.h"
13#include "system_shaders/cluster_generate.h"
14#include "materials/materialtemplates.h"
16
17namespace Raytracing
18{
19
24
32
38
40{
42public:
47
49 static void Create(const RaytracingSetupSettings& settings);
51 static void Discard();
52
56 static void SetupMesh(
58 , const UpdateType objectType
60 , const CoreGraphics::IndexType::Code indexType
61 , const CoreGraphics::VertexAlloc& vertices
62 , const CoreGraphics::VertexAlloc& indices
63 , const CoreGraphics::PrimitiveGroup& patchPrimGroup
64 , const SizeT vertexOffsetStride
65 , const SizeT patchVertexStride
66 , const Util::Array<Math::mat4> transforms
67 , const uint materialTableOffset
68 , const MaterialTemplates::MaterialProperties shader
69 , const CoreGraphics::VertexLayoutType vertexLayout
70 );
72 static void InvalidateBLAS(const Graphics::GraphicsEntityId id);
73
77 static void UpdateTransforms(const Graphics::FrameContext& ctx);
79 static void WaitForJobs(const Graphics::FrameContext& ctx);
81 static void UpdateViewResources(const Ptr<Graphics::View>& view, const Graphics::FrameContext& ctx);
82
91
92#ifndef PUBLIC_DEBUG
94 static void OnRenderDebug(uint32_t flags);
95#endif
96
97private:
98
102 static void Dealloc(Graphics::ContextEntityId id);
103
104
105
106 enum
107 {
112 };
113 typedef Ids::IdAllocator<
116 uint,
120};
121
122//------------------------------------------------------------------------------
130} // namespace Raytracing
Code
index types enum
Definition indextype.h:22
Defines a group of primitives as a subset of a vertex buffer and index buffer plus the primitive topo...
Definition primitivegroup.h:20
Format
component format
Definition vertexcomponent.h:25
Definition graphicscontext.h:165
An ID allocator associates an id with a slice in an N number of arrays.
Definition idallocator.h:39
Nebula's smart pointer class which manages the life time of RefCounted objects.
Definition ptr.h:38
static void InvalidateBLAS(const Graphics::GraphicsEntityId id)
Invalidate a BLAS (for example, when the mesh has morphed) associated with a graphics entity.
Definition raytracingcontext.cc:597
static void Dealloc(Graphics::ContextEntityId id)
deallocate a slice
Definition raytracingcontext.cc:847
static CoreGraphics::BufferId GetObjectBindingBuffer()
Get object binding buffer.
Definition raytracingcontext.cc:819
static void Discard()
Definition raytracingcontext.cc:371
Ids::IdAllocator< Memory::RangeAllocation, Raytracing::UpdateType, uint, Util::FixedArray< CoreGraphics::BlasId > > RaytracingAllocator
Definition raytracingcontext.h:118
static void OnRenderDebug(uint32_t flags)
debug rendering
Definition raytracingcontext.cc:837
static RaytracingAllocator raytracingContextAllocator
Definition raytracingcontext.h:119
static void UpdateViewResources(const Ptr< Graphics::View > &view, const Graphics::FrameContext &ctx)
Update view constants.
Definition raytracingcontext.cc:777
static CoreGraphics::ResourceTableId GetRaytracingTable(const IndexT bufferIndex)
Get raytracing table.
Definition raytracingcontext.cc:828
static CoreGraphics::TlasId GetTLAS()
Get TLAS.
Definition raytracingcontext.cc:810
static void SetupMesh(const Graphics::GraphicsEntityId id, const UpdateType objectType, const CoreGraphics::VertexComponent::Format format, const CoreGraphics::IndexType::Code indexType, const CoreGraphics::VertexAlloc &vertices, const CoreGraphics::VertexAlloc &indices, const CoreGraphics::PrimitiveGroup &patchPrimGroup, const SizeT vertexOffsetStride, const SizeT patchVertexStride, const Util::Array< Math::mat4 > transforms, const uint materialTableOffset, const MaterialTemplates::MaterialProperties shader, const CoreGraphics::VertexLayoutType vertexLayout)
Setup a terrain system for ray tracing.
Definition raytracingcontext.cc:502
static void WaitForJobs(const Graphics::FrameContext &ctx)
Wait for jobs to finish.
Definition raytracingcontext.cc:763
@ Raytracing_Blases
Definition raytracingcontext.h:111
@ Raytracing_UpdateType
Definition raytracingcontext.h:109
@ Raytracing_Allocation
Definition raytracingcontext.h:108
@ Raytracing_NumStructures
Definition raytracingcontext.h:110
RaytracingContext()
constructor
Definition raytracingcontext.cc:74
static void UpdateTransforms(const Graphics::FrameContext &ctx)
Update transforms.
Definition raytracingcontext.cc:666
static Graphics::ContextEntityId Alloc()
allocate a new slice for this context
Definition raytracingcontext.h:126
static void SetupModel(const Graphics::GraphicsEntityId id, CoreGraphics::BlasInstanceFlags flags, uchar mask)
Setup a model entity for ray tracing, assumes model context registration.
Definition raytracingcontext.cc:381
~RaytracingContext()
destructor
Definition raytracingcontext.cc:83
static void Create(const RaytracingSetupSettings &settings)
Setup ray tracing context.
Definition raytracingcontext.cc:92
static void ReconstructTopLevelAcceleration(const Graphics::FrameContext &ctx)
Build top level acceleration.
Definition raytracingcontext.cc:608
static CoreGraphics::ResourceTableId GetLightGridResourceTable(IndexT bufferIndex)
Get light grid resources.
Definition raytracingcontext.cc:801
Nebula's dynamic array class.
Definition array.h:60
Implements a fixed size one-dimensional array.
Definition fixedarray.h:20
BlasInstanceFlags
Definition accelerationstructure.h:57
VertexLayoutType
Definition vertexlayout.h:49
Context dealing with scene management for ray tracing.
Definition modelcontext.h:40
UpdateType
Definition raytracingcontext.h:34
@ Static
Definition raytracingcontext.h:36
@ Dynamic
Definition raytracingcontext.h:35
ObjectType
Definition raytracingcontext.h:26
@ GLTFObject
Definition raytracingcontext.h:29
@ ParticleObject
Definition raytracingcontext.h:30
@ BRDFObject
Definition raytracingcontext.h:27
@ BSDFObject
Definition raytracingcontext.h:28
Definition buffer.h:23
Definition resourcetable.h:95
Definition accelerationstructure.h:98
Definition mesh.h:23
Definition graphicscontext.h:133
Definition graphicsserver.h:31
The graphics entity is only an Id, to which we can attach GraphicsContexts.
Definition graphicsentity.h:16
Describes a range allocated by the Memory::RangeAllocator.
Definition rangeallocator.h:25
Definition raytracingcontext.h:21
SizeT maxNumAllowedInstances
Definition raytracingcontext.h:22
unsigned char uchar
Definition types.h:33
int SizeT
Definition types.h:49
unsigned int uint
Definition types.h:31
int IndexT
Definition types.h:48