MCPcopy Create free account
hub / github.com/MethanePowered/MethaneKit / Init

Method Init

Apps/06-CubeMapArray/CubeMapArrayApp.cpp:84–202  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

82}
83
84void CubeMapArrayApp::Init()
85{
86 UserInterfaceApp::Init();
87
88 const rhi::CommandQueue render_cmd_queue = GetRenderContext().GetRenderCommandKit().GetQueue();
89 m_camera.Resize(GetRenderContext().GetSettings().frame_size);
90
91 // Create cube mesh
92 gfx::CubeMesh<CubeVertex> cube_mesh(CubeVertex::layout);
93
94 // Create render state with program
95 rhi::RenderState::Settings render_state_settings
96 {
97 .program = GetRenderContext().CreateProgram(
98 rhi::Program::Settings
99 {
100 .shader_set = rhi::Program::ShaderSet
101 {
102 { rhi::ShaderType::Vertex, { Data::ShaderProvider::Get(), { "CubeMapArray", "CubeVS" } } },
103 { rhi::ShaderType::Pixel, { Data::ShaderProvider::Get(), { "CubeMapArray", "CubePS" } } },
104 },
105 .input_buffer_layouts = rhi::ProgramInputBufferLayouts
106 {
107 rhi::IProgram::InputBufferLayout
108 {
109 rhi::IProgram::InputBufferLayout::ArgumentSemantics { cube_mesh.GetVertexLayout().GetSemantics() }
110 }
111 },
112 .argument_accessors = rhi::ProgramArgumentAccessors
113 {
114 META_PROGRAM_ARG_ROOT_BUFFER_FRAME_CONSTANT(rhi::ShaderType::Vertex, "g_uniforms")
115 },
116 .attachment_formats = GetScreenRenderPattern().GetAttachmentFormats()
117 }),
118 .render_pattern = GetScreenRenderPattern()
119 };
120 render_state_settings.program.SetName("Render Pipeline State");
121 render_state_settings.depth.enabled = true;
122 render_state_settings.depth.compare = gfx::Compare::GreaterEqual; // Reversed depth rendering
123 m_render_state = GetRenderContext().CreateRenderState( render_state_settings);
124
125 // Create cube mesh buffer resources
126 m_cube_buffers_ptr = std::make_unique<TexturedMeshBuffers>(render_cmd_queue, std::move(cube_mesh), "Cube");
127
128 // Create cube-map render target texture
129 m_cube_buffers_ptr->SetTexture(
130 rhi::Texture(
131 GetRenderContext(),
132 rhi::ITexture::Settings::ForCubeImage(
133 g_cube_texture_size, CUBE_MAP_ARRAY_SIZE, gfx::PixelFormat::RGBA8Unorm, false,
134 rhi::ResourceUsageMask({ rhi::ResourceUsage::RenderTarget, rhi::ResourceUsage::ShaderRead })
135 )));
136
137 // Create sampler for image texture
138 m_texture_sampler = GetRenderContext().CreateSampler(
139 rhi::Sampler::Settings
140 {
141 .filter = rhi::Sampler::Filter { rhi::Sampler::Filter::MinMag::Linear },

Callers

nothing calls this directly

Calls 15

SkyBoxClass · 0.85
GetQueueMethod · 0.80
GetRenderCommandKitMethod · 0.80
GetSemanticsMethod · 0.80
TextureClass · 0.50
CommandListSetClass · 0.50
ResizeMethod · 0.45
CreateProgramMethod · 0.45
GetAttachmentFormatsMethod · 0.45
SetNameMethod · 0.45
CreateRenderStateMethod · 0.45

Tested by

no test coverage detected