28 halp_meta(name,
"Cubemap Loader")
29 halp_meta(category,
"Visuals/3D")
30 halp_meta(c_name,
"cubemap_loader")
33 "https://ossia.io/score-docs/processes/cubemap-loader.html")
34 halp_meta(uuid,
"b8d4f9e2-6c3a-4b0f-9e4d-2a7f0c5b3d6e")
38 struct : halp::lineedit<
"Image",
"">
40 void update(
CubemapLoader& self) { self.m_imageChanged =
true; }
43 struct : halp::enum_t<CubemapLayout,
"Layout">
45 void update(
CubemapLoader& self) { self.m_imageChanged =
true; }
48 struct : halp::spinbox_i32<
"Resolution", halp::range{16, 8192, 512}>
50 void update(
CubemapLoader& self) { self.m_imageChanged =
true; }
56 halp::gpu_texture_output<
"Cubemap"> cubemap;
60 QRhiTexture* m_cubemapTex{};
61 QRhiTexture* m_equirectTex{};
62 QRhiSampler* m_equirectSampler{};
67 QRhiTextureRenderTarget* renderTarget{};
68 QRhiRenderPassDescriptor* renderPass{};
71 QRhiGraphicsPipeline* m_equirectPipeline{};
72 QRhiShaderResourceBindings* m_equirectSrb{};
73 QRhiBuffer* m_equirectUbo{};
74 QRhiBuffer* m_quadVbuf{};
77 bool m_imageChanged{
true};
87 void runInitialPasses(
93 void createCubemapTexture(QRhi& rhi,
int faceSize);
94 void releaseCubemapTexture();
95 void releaseEquirectResources();
97 void uploadCrossOrStrip(QRhiResourceUpdateBatch* res);
98 void renderEquirectangular(
100 QRhiResourceUpdateBatch*& res);
105 QImage extractFace(
int faceIndex)
const;