wip(standalone): GPU step 13 -- near base/skirts/connectors cheaper to compile; warm-up still ~2.0 s

Cold first use: near base 4.2 ms, near detail 1,595 ms (the floor), connector
rings 630 -> 409, skirt classify+emit ~1,409 -> 366. Production warm-up is
still ~2.03-2.06 s; whole view median CPU 1.356 s vs hybrid 3.044 s.
Near 960 + far 1,114 tiles: 0 topology/protected/thin diffs vs CPU and WARP;
hashes, walk 5,642/5,642, survival pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-07 07:41:31 +02:00
1 parent 05b1523c54
commit a96fd0b95b
18 files changed
+776 -75

No files matched your search

@@ -5,6 +5,7 @@
// containers, engine types, and vector intrinsics so it remains usable by both compilers.
#if defined(VF_FIELD_HLSL)
#define VF_FIELD_INLINE
#define VF_FIELD_LOOP [loop]
typedef int VF_FieldI32;
typedef uint VF_FieldU32;
typedef float VF_FieldReal;
@@ -23,6 +24,7 @@
#include <cmath>
#include <cstdint>
#define VF_FIELD_INLINE inline
#define VF_FIELD_LOOP
typedef std::int32_t VF_FieldI32;
typedef std::uint32_t VF_FieldU32;
typedef double VF_FieldReal;
@@ -333,6 +335,7 @@ VF_FIELD_INLINE float VF_FieldOwnerFractal(float x,float y,float z,VF_FieldI32 o
VF_FieldI32 mode)
{
float total=0.0f,maxValue=0.0f,frequency=1.0f,amplitude=1.0f,weight=1.0f;
VF_FIELD_LOOP
for(VF_FieldI32 i=0;i<octaves;++i)
{
const float noise=VF_FieldPerlin3D(x*frequency,y*frequency,z*frequency);
@@ -362,6 +365,7 @@ VF_FIELD_INLINE float VF_FieldOwnerCellular(float x,float y,float z)
const float fracX=x-VF_FIELD_CAST_F32(cellX),fracY=y-VF_FIELD_CAST_F32(cellY),
fracZ=z-VF_FIELD_CAST_F32(cellZ);
float first=3.402823466e+38f,second=3.402823466e+38f;
VF_FIELD_LOOP
for(VF_FieldI32 dz=-1;dz<=1;++dz)
for(VF_FieldI32 dy=-1;dy<=1;++dy)
for(VF_FieldI32 dx=-1;dx<=1;++dx)