mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-11 22:31:55 +00:00
ifcviewer: move render pipelines into ViewportCore (#84-b)
Move the 15 pipeline + bind-group-layout + shader-module handles
that buildPipelines / buildEdgePipeline / buildPickPipeline write to.
Same pattern as #84-a: storage lives in ViewportCore, ViewportWindow
keeps reference aliases so existing builder-method bodies don't
have to acquire a `core_.` prefix at every touch point.
Moved fields:
Main render group:
main_shader_module_, frame_bgl_ (group 0), model_bgl_ (group 1),
pipeline_layout_, main_pipeline_, main_pipeline_transparent_
HiZ occlusion-cull group:
hiz_shader_module_, hiz_bgl_, hiz_pipeline_layout_, hiz_pipeline_
Edge silhouette group:
edge_shader_module_, edge_bgl_, edge_pipeline_layout_, edge_pipeline_
Pick pass:
pick_pipeline_ (reuses pipeline_layout_ — same set of bindings)
ViewportWindow's constructor binds 16 new alias references after
the 7 lifecycle ones from #84-a; member-init order matches
declaration order so core_ is constructed before any alias binds.
Builds: desktop / bonsai / web all green. Tests 100/100.
This commit is contained in:
@@ -69,6 +69,39 @@ private:
|
||||
WGPUSurface surface_ = nullptr;
|
||||
WGPUTextureFormat surface_format_ = WGPUTextureFormat_Undefined;
|
||||
bool surface_configured_ = false;
|
||||
|
||||
// ---- Pipelines + bind-group layouts (built once after init) -------------
|
||||
//
|
||||
// Main render pipeline group: one shader module + two bind group
|
||||
// layouts (frame uniforms at group=0, per-model storages at
|
||||
// group=1) feeding both the opaque-pass pipeline and the
|
||||
// transparent-pass variant. The transparent pipeline shares the
|
||||
// shader and layout; it differs only in depthWriteEnabled=False
|
||||
// and the SrcAlpha / OneMinusSrcAlpha blend on the color target.
|
||||
WGPUShaderModule main_shader_module_ = nullptr;
|
||||
WGPUBindGroupLayout frame_bgl_ = nullptr; // group 0
|
||||
WGPUBindGroupLayout model_bgl_ = nullptr; // group 1
|
||||
WGPUPipelineLayout pipeline_layout_ = nullptr;
|
||||
WGPURenderPipeline main_pipeline_ = nullptr;
|
||||
WGPURenderPipeline main_pipeline_transparent_ = nullptr;
|
||||
|
||||
// HiZ occlusion-cull pipeline group. Downsamples MSAA depth into a
|
||||
// mip pyramid; consumed by next-frame cull.
|
||||
WGPUShaderModule hiz_shader_module_ = nullptr;
|
||||
WGPUBindGroupLayout hiz_bgl_ = nullptr;
|
||||
WGPUPipelineLayout hiz_pipeline_layout_ = nullptr;
|
||||
WGPURenderPipeline hiz_pipeline_ = nullptr;
|
||||
|
||||
// Edge-silhouette pipeline group. Drawn after the main pass; reads
|
||||
// the depth/normal attachments to emit dark outlines.
|
||||
WGPUShaderModule edge_shader_module_ = nullptr;
|
||||
WGPUBindGroupLayout edge_bgl_ = nullptr;
|
||||
WGPUPipelineLayout edge_pipeline_layout_ = nullptr;
|
||||
WGPURenderPipeline edge_pipeline_ = nullptr;
|
||||
|
||||
// Pick pass. Reuses pipeline_layout_ — same set of bindings as the
|
||||
// main pass since the pick fragment also vertex-pulls instance data.
|
||||
WGPURenderPipeline pick_pipeline_ = nullptr;
|
||||
};
|
||||
|
||||
#endif // VIEWPORTCORE_H
|
||||
|
||||
Reference in New Issue
Block a user