Foundation
Loading...
Searching...
No Matches
Examples.hpp
Go to the documentation of this file.
1#pragma once
2#include "../Examples.hpp"
3
5{
6 Raster,
10};
11
17
18inline constexpr bool IsRaster(ExampleRenderer renderer)
19{
20 return renderer == ExampleRenderer::Raster;
21}
22inline constexpr bool IsPathTracer(ExampleRenderer renderer)
23{
24 return renderer == ExampleRenderer::RealtimePT || renderer == ExampleRenderer::ProgressivePT;
25}
26inline constexpr bool IsRealtimePT(ExampleRenderer renderer)
27{
28 return renderer == ExampleRenderer::RealtimePT;
29}
30inline constexpr bool IsProgressivePT(ExampleRenderer renderer)
31{
32 return renderer == ExampleRenderer::ProgressivePT;
33}
34
36
37// Toggle buttons for a bitmask group (mirrors Editor ImBitmaskOptionPicker).
38bool Examples_BitmaskOptionPicker(ExampleInputState& input, unsigned& value, const char* const* labels,
39 const unsigned* masks, unsigned count, bool solo = false);
40template <typename T, typename Mask, size_t N>
41bool Examples_BitmaskOptionPicker(ExampleInputState& input, T& value, const char* (&labels)[N],
42 const Mask (&masks)[N], bool solo = false)
43{
44 unsigned bits = static_cast<unsigned>(value);
45 unsigned maskBits[N];
46 for (size_t i = 0; i < N; ++i)
47 maskBits[i] = static_cast<unsigned>(masks[i]);
48 bool const changed = Examples_BitmaskOptionPicker(input, bits, labels, maskBits, N, solo);
49 value = static_cast<T>(bits);
50 return changed;
51}
52
53// Cycle Off + exclusive options for a solo bitmask group.
54bool Examples_BitmaskCycleButton(ExampleInputState& input, StringView label, unsigned& value,
55 const char* const* labels, const unsigned* masks, unsigned count);
56template <typename T, typename Mask, size_t N>
58 const char* (&labels)[N], const Mask (&masks)[N])
59{
60 unsigned bits = static_cast<unsigned>(value);
61 unsigned maskBits[N];
62 for (size_t i = 0; i < N; ++i)
63 maskBits[i] = static_cast<unsigned>(masks[i]);
64 bool const changed = Examples_BitmaskCycleButton(input, label, bits, labels, maskBits, N);
65 value = static_cast<T>(bits);
66 return changed;
67}
68
69// Debug / option flag controls for the active example renderer (mirrors Editor flag panels).
75 RendererOutputs& out);
78 RendererOutputs& out);
81
83 RendererOutputs const& outputs, bool isPresent);
84
85FImportedMesh Examples_MakePlaneMesh(float extent, float y = 0.0f, Allocator* alloc = GLOBAL_ALLOC);
87FImportedMesh Examples_MakeSphereMesh(float radius, uint32_t segments = 32, uint32_t rings = 16,
88 Allocator* alloc = GLOBAL_ALLOC);
#define GLOBAL_ALLOC
Definition Allocator.hpp:240
#define ENUM_NAME_CONV_BEGIN(T)
Defines convince to_string() method and format_as() [fmt] for the respective enum class Example usage...
Definition Enums.hpp:82
#define ENUM_NAME(E)
Definition Enums.hpp:93
FImportedMesh Examples_MakePlaneMesh(float extent, float y=0.0f, Allocator *alloc=GLOBAL_ALLOC)
Definition Examples.cpp:231
bool Examples_RendererFlagsControls(ExampleInputState &input, ExampleRenderer renderer, RendererConfig &cfg)
Definition Examples.cpp:91
constexpr bool IsProgressivePT(ExampleRenderer renderer)
Definition Examples.hpp:30
FImportedMesh Examples_MakeSphereMesh(float radius, uint32_t segments=32, uint32_t rings=16, Allocator *alloc=GLOBAL_ALLOC)
Definition Examples.cpp:324
void Example_BuildExampleProgressivePathTracerRenderGraph(Renderer *renderer, RendererUBO *globals, RendererResources &gpu, RendererConfig &cfg, RendererOutputs &out)
Definition Examples.cpp:400
bool Examples_RendererSwitchButton(ExampleInputState &input, ExampleRenderer &currentRenderer)
Definition Examples.cpp:9
ExampleRenderer
Definition Examples.hpp:5
void Example_BuildExampleRasterRenderGraph(Renderer *renderer, RendererUBO *globals, RendererResources &gpu, RendererConfig &cfg, RendererOutputs &out)
Definition Examples.cpp:390
bool Examples_BitmaskCycleButton(ExampleInputState &input, StringView label, unsigned &value, const char *const *labels, const unsigned *masks, unsigned count)
Definition Examples.cpp:52
constexpr bool IsRealtimePT(ExampleRenderer renderer)
Definition Examples.hpp:26
constexpr bool IsRaster(ExampleRenderer renderer)
Definition Examples.hpp:18
constexpr bool IsPathTracer(ExampleRenderer renderer)
Definition Examples.hpp:22
ResourceHandle Examples_BuildTonemappingPass(Renderer *renderer, RendererUBO const *globals, RendererOutputs const &outputs, bool isPresent)
Definition Examples.cpp:161
void Example_BuildExampleRealtimePathtracerRenderGraph(Renderer *renderer, RendererUBO *globals, RendererResources &gpu, RendererConfig &cfg, RendererOutputs &out)
Definition Examples.cpp:406
FImportedMesh Examples_MakeBoxMesh(float size, Allocator *alloc=GLOBAL_ALLOC)
Definition Examples.cpp:263
bool Examples_BitmaskOptionPicker(ExampleInputState &input, unsigned &value, const char *const *labels, const unsigned *masks, unsigned count, bool solo=false)
Definition Examples.cpp:21
void Example_BuildExampleRenderer(ExampleRenderer renderer, Renderer *r, RendererUBO *globals, RendererResources &gpu, RendererConfig &cfg, RendererOutputs &out)
Definition Examples.cpp:412
Allocator interface (noexcept)
Definition Allocator.hpp:29
Renderer implementing a Frame Graph system with automatic resource tracking and synchronization.
Definition Renderer.hpp:377
std::basic_string_view< char > StringView
Alias for std::basic_string_view<char>
Definition Container.hpp:56
Handle ResourceHandle
Definition Renderer.hpp:22
Definition Examples.hpp:75
Definition Mesh.hpp:129
Definition Renderer.hpp:122
Definition Renderer.hpp:310
Definition Renderer.hpp:159
Definition Renderer.hpp:11