Files
OpenRA3/src/ra3.cppm
T
EnderTheCoder 70f35d8382 render map objects: decode compiled W3DMesh art, skin and draw over terrain
Read the buildings and props a map places from its compiled art (the
uncompressed worldbuilder stream + embedded DDS textures):

- ra3.models: BAB asset-stream parser (lazy slices), W3DMesh + D3DHierarchy
  decode, DDS (DXT1/3/5 + uncompressed) decode, per-mesh bone remap and
  bind-pose single-joint skinning, flattened to one world-space triangle soup.
- ra3.map: parse the ObjectsList chunk into (type, x, y, z, angle).
- ra3.terrain: render3d rasterises the scene over the raymarched terrain with
  a z-buffer; gpu_terrain carries the scene for the GPU backends.
- ra3.vulkan: second pipeline + depth attachment, terrain.frag writes
  gl_FragDepth, and a small depth bias keeps ground decals from z-fighting.
- objects.fx shaders (compiled to SPIR-V), embedded like scene/terrain.

Only opaque parts are drawn: FX-light billboards (DefaultW3D.fx / BasicW3D.fx)
and damage-fill shells (BuildingsGenericDamageFill.fx) are skipped, since the
latter paint the wrecked interior (e.g. orange CBBuilding_Wood) over the shell.

Ground-decal meshes with no diffuse role and the Road templates themselves are
still not drawn.
2026-09-29 18:08:11 +08:00

26 lines
624 B
C++

/**
* Umbrella module re-exporting the whole OpenRA3 SDK.
*
* Consumers that want everything can `import ra3;`; narrower targets should
* import only the module they need.
*/
export module ra3;
export import ra3.core;
export import ra3.logic;
export import ra3.client;
export import ra3.data;
export import ra3.game;
export import ra3.fs;
export import ra3.map;
export import ra3.skirmish;
export import ra3.render;
export import ra3.terrain;
export import ra3.models;
export import ra3.ui;
export import ra3.vulkan;
export import ra3.dx;
export import ra3.wasmgl;
export import ra3.webgpu;
export import ra3.display;