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 "materials/gpulang/materialtemplatesgpulang.h"
15
16namespace Raytracing
17{
18
23
31
37
39{
41public:
46
48 static void Create(const RaytracingSetupSettings& settings);
50 static void Discard();
51
55 static void SetupMesh(
57 , const UpdateType objectType
59 , const CoreGraphics::IndexType::Code indexType
60 , const CoreGraphics::VertexAlloc& vertices
61 , const CoreGraphics::VertexAlloc& indices
62 , const CoreGraphics::PrimitiveGroup& patchPrimGroup
63 , const SizeT vertexOffsetStride
64 , const SizeT patchVertexStride
65 , const Util::Array<Math::mat4> transforms
66 , const uint materialTableOffset
67 , const MaterialTemplatesGPULang::MaterialProperties shader
68 , const CoreGraphics::VertexLayoutType vertexLayout
69 );
71 static void InvalidateBLAS(const Graphics::GraphicsEntityId id);
72
76 static void UpdateTransforms(const Graphics::FrameContext& ctx);
78 static void WaitForJobs(const Graphics::FrameContext& ctx);
80 static void UpdateViewResources(const Ptr<Graphics::View>& view, const Graphics::FrameContext& ctx);
81
90
91#ifndef PUBLIC_DEBUG
93 static void OnRenderDebug(uint32_t flags);
94#endif
95
96private:
97
101 static void Dealloc(Graphics::ContextEntityId id);
102
103
104
105 enum
106 {
111 };
112 typedef Ids::IdAllocator<
115 uint,
119};
120
121//------------------------------------------------------------------------------
129} // 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:842
static CoreGraphics::BufferId GetObjectBindingBuffer()
Get object binding buffer.
Definition raytracingcontext.cc:814
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 MaterialTemplatesGPULang::MaterialProperties shader, const CoreGraphics::VertexLayoutType vertexLayout)
Setup a terrain system for ray tracing.
Definition raytracingcontext.cc:505
static void Discard()
Definition raytracingcontext.cc:354
Ids::IdAllocator< Memory::RangeAllocation, Raytracing::UpdateType, uint, Util::FixedArray< CoreGraphics::BlasId > > RaytracingAllocator
Definition raytracingcontext.h:117
static void OnRenderDebug(uint32_t flags)
debug rendering
Definition raytracingcontext.cc:832
static RaytracingAllocator raytracingContextAllocator
Definition raytracingcontext.h:118
static void UpdateViewResources(const Ptr< Graphics::View > &view, const Graphics::FrameContext &ctx)
Update view constants.
Definition raytracingcontext.cc:772
static CoreGraphics::ResourceTableId GetRaytracingTable(const IndexT bufferIndex)
Get raytracing table.
Definition raytracingcontext.cc:823
static CoreGraphics::TlasId GetTLAS()
Get TLAS.
Definition raytracingcontext.cc:805
static void WaitForJobs(const Graphics::FrameContext &ctx)
Wait for jobs to finish.
Definition raytracingcontext.cc:758
@ Raytracing_Blases
Definition raytracingcontext.h:110
@ Raytracing_UpdateType
Definition raytracingcontext.h:108
@ Raytracing_Allocation
Definition raytracingcontext.h:107
@ Raytracing_NumStructures
Definition raytracingcontext.h:109
RaytracingContext()
constructor
Definition raytracingcontext.cc:74
static void UpdateTransforms(const Graphics::FrameContext &ctx)
Update transforms.
Definition raytracingcontext.cc:661
static Graphics::ContextEntityId Alloc()
allocate a new slice for this context
Definition raytracingcontext.h:125
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:364
~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:796
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:33
@ Static
Definition raytracingcontext.h:35
@ Dynamic
Definition raytracingcontext.h:34
ObjectType
Definition raytracingcontext.h:25
@ GLTFObject
Definition raytracingcontext.h:28
@ ParticleObject
Definition raytracingcontext.h:29
@ BRDFObject
Definition raytracingcontext.h:26
@ BSDFObject
Definition raytracingcontext.h:27
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:20
SizeT maxNumAllowedInstances
Definition raytracingcontext.h:21
unsigned char uchar
Definition types.h:35
int SizeT
Definition types.h:42
unsigned int uint
Definition types.h:33
int IndexT
Definition types.h:41