tests/3d-regression mirrors the gal-regression pattern at renderer scale: shared C++ scenarios call real KiCad 3D-viewer code (opengl_utils, display lists + DrawCulled stencil subtraction, MODEL_3D VBOs, private generators via a rob-template accessor, and full reload()+Redraw() composites over a synthetic BOARD_ADAPTER). A native macOS harness renders them on real OpenGL into 47 committed goldens (bit-deterministic, FBO capture); the wasm harness compiles the same TUs against wasm/stubs/gl_ffp_stub.c no-ops so every scenario renders blank — the TDD red state (parity meter: 47/47 changed). Comparisons use the CI pixelmatch engine via the new generic compare-dirs.ts (floors.json levels; manifest.json cmp-guards registry drift). Documents an upstream bug: appendPostMachiningGeometry's countersink path adds middle quads without normals, silently erasing the walls of any display list it is batched into (3d-post-machining.png keeps the lists separate to record it). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
35 lines
1.4 KiB
C++
35 lines
1.4 KiB
C++
/**
|
|
* Hand-built input DATA for the scenarios (geometry containers, S3DMODEL,
|
|
* contours). Data only — everything that draws must be real KiCad code.
|
|
*/
|
|
|
|
#ifndef TEST_BOARD_DATA_H
|
|
#define TEST_BOARD_DATA_H
|
|
|
|
#include <plugins/3dapi/c3dmodel.h> // S3DMODEL / SMESH / SMATERIAL
|
|
#include <plugins/3dapi/xv3d_types.h>
|
|
|
|
#include <vector>
|
|
|
|
// The shapes2D constructors take a BOARD_ITEM& that is only stored for later
|
|
// identification, never dereferenced by any code the suite runs
|
|
// (object_2d.h:114). Only the forward declaration exists here.
|
|
class BOARD_ITEM;
|
|
|
|
/// An opaque never-dereferenced BOARD_ITEM reference for the shapes2D ctors.
|
|
const BOARD_ITEM& DummyBoardItem();
|
|
|
|
/// A small multi-mesh, multi-material widget: opaque box + transparent
|
|
/// octahedron + per-vertex-colored box. Arrays live in static storage; the
|
|
/// returned struct stays valid for the process lifetime.
|
|
const S3DMODEL& TestS3DModel();
|
|
|
|
/// Closed CCW square contour (first point repeated last) for AddToMiddleContours.
|
|
std::vector<SFVEC2F> MakeSquareContour( float aHalf, float aCenterX = 0.0f,
|
|
float aCenterY = 0.0f );
|
|
|
|
/// Closed regular-polygon contour approximating a circle.
|
|
std::vector<SFVEC2F> MakeCircleContour( float aRadius, int aSides, float aCenterX = 0.0f,
|
|
float aCenterY = 0.0f );
|
|
|
|
#endif // TEST_BOARD_DATA_H
|