formatting

This commit is contained in:
jacob 2026-02-24 12:09:38 -06:00
parent e9176147f3
commit 95b182ae1e
5 changed files with 43 additions and 81 deletions

View File

@ -47,9 +47,9 @@ u32 countof(T arr[N])
//~ C -> HLSL interoperability stubs //~ C -> HLSL interoperability stubs
//- Constructors //- Constructors
#define CompVec2(x, y) { (x), (y) } #define CompVec2(...) Vec2(__VA_ARGS__)
#define CompVec3(x, y, z) { (x), (y), (z) } #define CompVec3(...) Vec3(__VA_ARGS__)
#define CompVec4(x, y, z, w) { (x), (y), (z), (w) } #define CompVec4(...) Vec4(__VA_ARGS__)
#define VEC2(...) Vec2(__VA_ARGS__) #define VEC2(...) Vec2(__VA_ARGS__)
#define VEC3(...) Vec3(__VA_ARGS__) #define VEC3(...) Vec3(__VA_ARGS__)
#define VEC4(...) Vec4(__VA_ARGS__) #define VEC4(...) Vec4(__VA_ARGS__)

View File

@ -1657,8 +1657,6 @@ u32 G_PushRef(G_ArenaHandle arena_handle, G_ResourceHandle resource_handle, G_Re
b32 is_raw = kind == G_RefKind_ByteAddressBuffer; b32 is_raw = kind == G_RefKind_ByteAddressBuffer;
b32 is_writable = resource->flags & G_ResourceFlag_AllowShaderReadWrite; b32 is_writable = resource->flags & G_ResourceFlag_AllowShaderReadWrite;
b32 ok = 1;
G_D12_Descriptor *descriptor = 0; G_D12_Descriptor *descriptor = 0;
if (is_buffer || is_texture) if (is_buffer || is_texture)
{ {

View File

@ -195,7 +195,6 @@ ImplComputeShader2D(V_BackdropDownCS)
} }
RWTexture2D<Vec4> bd_down = G_DereferenceRW<Vec4>(frame.backdrop_mips[mip_idx]); RWTexture2D<Vec4> bd_down = G_DereferenceRW<Vec4>(frame.backdrop_mips[mip_idx]);
Vec2 down_dims = countof(bd_down); Vec2 down_dims = countof(bd_down);
Vec2 bd_pos = SV_DispatchThreadID + 0.5; Vec2 bd_pos = SV_DispatchThreadID + 0.5;
@ -400,7 +399,7 @@ ImplComputeShader(V_SimParticlesCS)
V_SharedFrame frame = G_Dereference<V_SharedFrame>(V_GpuConst_Frame)[0]; V_SharedFrame frame = G_Dereference<V_SharedFrame>(V_GpuConst_Frame)[0];
Texture2D<P_TileKind> tiles = G_Dereference<P_TileKind>(frame.tiles); Texture2D<P_TileKind> tiles = G_Dereference<P_TileKind>(frame.tiles);
RWStructuredBuffer<V_Particle> particles = G_DereferenceRW<V_Particle>(frame.particles); RWStructuredBuffer<V_Particle> particles = G_DereferenceRW<V_Particle>(frame.particles);
RWTexture2D<u32> occluders = G_DereferenceRW<u32>(frame.occluders); Texture2D<u32> occluders = G_Dereference<u32>(frame.occluders);
u32 particle_idx = SV_DispatchThreadID; u32 particle_idx = SV_DispatchThreadID;
if (particle_idx < V_ParticlesCap) if (particle_idx < V_ParticlesCap)
@ -679,7 +678,7 @@ ImplComputeShader2D(V_ShadeCS)
Texture2D<P_TileKind> tiles = G_Dereference<P_TileKind>(frame.tiles); Texture2D<P_TileKind> tiles = G_Dereference<P_TileKind>(frame.tiles);
Texture2D<Vec4> albedo_tex = G_Dereference<Vec4>(frame.albedo); Texture2D<Vec4> albedo_tex = G_Dereference<Vec4>(frame.albedo);
RWTexture2D<Vec4> shade_tex = G_DereferenceRW<Vec4>(frame.shade); RWTexture2D<Vec4> shade_tex = G_DereferenceRW<Vec4>(frame.shade);
RWTexture2D<f32> drynesses = G_DereferenceRW<f32>(frame.drynesses); Texture2D<f32> drynesses = G_Dereference<f32>(frame.drynesses);
Vec2 shade_pos = SV_DispatchThreadID + 0.5; Vec2 shade_pos = SV_DispatchThreadID + 0.5;
Vec2 world_pos = mul(frame.af.shade_to_world, Vec3(shade_pos, 1)); Vec2 world_pos = mul(frame.af.shade_to_world, Vec3(shade_pos, 1));
@ -716,12 +715,12 @@ ImplComputeShader2D(V_CompositeCS)
SamplerState bilinear_sampler = G_Dereference(frame.basic_samplers[G_BasicSamplerKind_BilinearClamp]); SamplerState bilinear_sampler = G_Dereference(frame.basic_samplers[G_BasicSamplerKind_BilinearClamp]);
Texture2D<Vec4> albedo_tex = G_Dereference<Vec4>(frame.albedo); Texture2D<Vec4> albedo_tex = G_Dereference<Vec4>(frame.albedo);
RWTexture2D<Vec4> screen_tex = G_DereferenceRW<Vec4>(frame.screen); RWTexture2D<Vec4> screen_tex = G_DereferenceRW<Vec4>(frame.screen);
RWTexture2D<Vec4> stains = G_DereferenceRW<Vec4>(frame.stains); Texture2D<Vec4> stains = G_Dereference<Vec4>(frame.stains);
RWTexture2D<Vec4> dry_stains = G_DereferenceRW<Vec4>(frame.dry_stains); Texture2D<Vec4> dry_stains = G_Dereference<Vec4>(frame.dry_stains);
RWTexture2D<f32> drynesses = G_DereferenceRW<f32>(frame.drynesses); Texture2D<f32> drynesses = G_Dereference<f32>(frame.drynesses);
Texture2D<P_TileKind> tiles = G_Dereference<P_TileKind>(frame.tiles); Texture2D<P_TileKind> tiles = G_Dereference<P_TileKind>(frame.tiles);
Texture2D<Vec4> backdrop = G_Dereference<Vec4>(frame.backdrop_mips[0]); Texture2D<Vec4> backdrop = G_Dereference<Vec4>(frame.backdrop_mips[0]);
RWStructuredBuffer<V_Particle> particles = G_DereferenceRW<V_Particle>(frame.particles); StructuredBuffer<V_Particle> particles = G_Dereference<V_Particle>(frame.particles);
Vec2 screen_pos = SV_DispatchThreadID.xy + 0.5; Vec2 screen_pos = SV_DispatchThreadID.xy + 0.5;
Vec2 world_pos = mul(frame.af.screen_to_world, Vec3(screen_pos, 1)); Vec2 world_pos = mul(frame.af.screen_to_world, Vec3(screen_pos, 1));
@ -858,8 +857,8 @@ ImplComputeShader2D(V_CompositeCS)
for (V_ParticleLayer layer = (V_ParticleLayer)0; layer < V_ParticleLayer_COUNT; layer += (V_ParticleLayer)1) for (V_ParticleLayer layer = (V_ParticleLayer)0; layer < V_ParticleLayer_COUNT; layer += (V_ParticleLayer)1)
{ {
RWTexture2D<u32> cells = G_DereferenceRW<u32>(frame.particle_cells[layer]); Texture2D<u32> cells = G_Dereference<u32>(frame.particle_cells[layer]);
RWTexture2D<u32> densities = G_DereferenceRW<u32>(frame.particle_densities[layer]); Texture2D<u32> densities = G_Dereference<u32>(frame.particle_densities[layer]);
u32 packed = cells[cell_pos]; u32 packed = cells[cell_pos];
V_ParticleKind particle_kind = (V_ParticleKind)((packed >> 24) & 0x7F); V_ParticleKind particle_kind = (V_ParticleKind)((packed >> 24) & 0x7F);
if (particle_kind != V_ParticleKind_None) if (particle_kind != V_ParticleKind_None)

View File

@ -1,6 +1,3 @@
////////////////////////////////////////////////////////////
//~ Helpers
V_ParticleDesc V_DescFromParticleKind(V_ParticleKind kind) V_ParticleDesc V_DescFromParticleKind(V_ParticleKind kind)
{ {
if (kind < 0 || kind >= V_ParticleKind_COUNT) if (kind < 0 || kind >= V_ParticleKind_COUNT)
@ -10,55 +7,23 @@ V_ParticleDesc V_DescFromParticleKind(V_ParticleKind kind)
V_ParticleDesc result; V_ParticleDesc result;
{ {
PERSIST Readonly V_ParticleFlag flags[V_ParticleKind_COUNT] = { V_ParticleDesc descs[V_ParticleKind_COUNT] = {
#define X(name, flags, layer, stain_rate, pen_rate, lifetime, prune_speed_threshold, base_color, dry_factor) flags, #define X(name, flags, layer, stain_rate, pen_rate, lifetime, prune_speed_threshold, base_color, dry_factor) \
{ \
V_ParticleKind_##name, \
flags, \
layer, \
stain_rate, \
pen_rate, \
lifetime, \
prune_speed_threshold, \
LinearFromSrgb(base_color), \
LinearFromSrgb(dry_factor) \
},
V_ParticlesXList(X) V_ParticlesXList(X)
#undef X #undef X
}; };
PERSIST Readonly V_ParticleLayer layers[V_ParticleKind_COUNT] = { result = descs[kind];
#define X(name, flags, layer, stain_rate, pen_rate, lifetime, prune_speed_threshold, base_color, dry_factor) layer,
V_ParticlesXList(X)
#undef X
};
PERSIST Readonly f32 stain_rates[V_ParticleKind_COUNT] = {
#define X(name, flags, layer, stain_rate, pen_rate, lifetime, prune_speed_threshold, base_color, dry_factor) stain_rate,
V_ParticlesXList(X)
#undef X
};
PERSIST Readonly f32 pen_rates[V_ParticleKind_COUNT] = {
#define X(name, flags, layer, stain_rate, pen_rate, lifetime, prune_speed_threshold, base_color, dry_factor) pen_rate,
V_ParticlesXList(X)
#undef X
};
PERSIST Readonly f32 lifetimes[V_ParticleKind_COUNT] = {
#define X(name, flags, layer, stain_rate, pen_rate, lifetime, prune_speed_threshold, base_color, dry_factor) lifetime,
V_ParticlesXList(X)
#undef X
};
PERSIST Readonly f32 prune_speed_thresholds[V_ParticleKind_COUNT] = {
#define X(name, flags, layer, stain_rate, pen_rate, lifetime, prune_speed_threshold, base_color, dry_factor) prune_speed_threshold,
V_ParticlesXList(X)
#undef X
};
PERSIST Readonly Vec4 base_colors[V_ParticleKind_COUNT] = {
#define X(name, flags, layer, stain_rate, pen_rate, lifetime, prune_speed_threshold, base_color, dry_factor) base_color,
V_ParticlesXList(X)
#undef X
};
PERSIST Readonly Vec4 dry_factor[V_ParticleKind_COUNT] = {
#define X(name, flags, layer, stain_rate, pen_rate, lifetime, prune_speed_threshold, base_color, dry_factor) dry_factor,
V_ParticlesXList(X)
#undef X
};
result.kind = kind;
result.flags = flags[kind];
result.layer = layers[kind];
result.stain_rate = stain_rates[kind];
result.pen_rate = pen_rates[kind];
result.lifetime = lifetimes[kind];
result.prune_speed_threshold = prune_speed_thresholds[kind];
result.base_color = LinearFromSrgb(base_colors[kind]);
result.dry_factor = LinearFromSrgb(dry_factor[kind]);
} }
return result; return result;
} }

View File

@ -52,8 +52,8 @@ Enum(V_ParticleLayer)
/* Stain rate, pen chance */ 30, 0, \ /* Stain rate, pen chance */ 30, 0, \
/* Lifetime */ Inf, \ /* Lifetime */ Inf, \
/* Prune speed threshold */ 0.01, \ /* Prune speed threshold */ 0.01, \
/* Base color */ CompVec4(0, 0, 0, 0), \ /* Base color */ VEC4(0, 0, 0, 0), \
/* Dry color factor */ CompVec4(1, 1, 1, 1) \ /* Dry color factor */ VEC4(1, 1, 1, 1) \
) \ ) \
\ \
/* Ground particles */ \ /* Ground particles */ \
@ -64,8 +64,8 @@ Enum(V_ParticleLayer)
/* Stain rate, pen chance */ 100, 0.25, \ /* Stain rate, pen chance */ 100, 0.25, \
/* Lifetime */ Inf, \ /* Lifetime */ Inf, \
/* Prune speed threshold */ 0.5, \ /* Prune speed threshold */ 0.5, \
/* Base color */ CompVec4(0.6, 0.1, 0.1, 0.05), \ /* Base color */ VEC4(0.6, 0.1, 0.1, 0.05), \
/* Dry color factor */ CompVec4(0.4, 0.4, 0.4, 1) \ /* Dry color factor */ VEC4(0.4, 0.4, 0.4, 1) \
) \ ) \
X( \ X( \
/* Name */ BloodDebris, \ /* Name */ BloodDebris, \
@ -74,8 +74,8 @@ Enum(V_ParticleLayer)
/* Stain rate, pen chance */ 30, 0, \ /* Stain rate, pen chance */ 30, 0, \
/* Lifetime */ Inf, \ /* Lifetime */ Inf, \
/* Prune speed threshold */ 0.01, \ /* Prune speed threshold */ 0.01, \
/* Base color */ CompVec4(0.5, 0.1, 0.1, 0.8), \ /* Base color */ VEC4(0.5, 0.1, 0.1, 0.8), \
/* Dry color factor */ CompVec4(1, 1, 1, 1) \ /* Dry color factor */ VEC4(1, 1, 1, 1) \
) \ ) \
X( \ X( \
/* Name */ Debris, \ /* Name */ Debris, \
@ -84,8 +84,8 @@ Enum(V_ParticleLayer)
/* Stain rate, pen chance */ 0, 0, \ /* Stain rate, pen chance */ 0, 0, \
/* Lifetime */ Inf, \ /* Lifetime */ Inf, \
/* Prune speed threshold */ 0.01, \ /* Prune speed threshold */ 0.01, \
/* Base color */ CompVec4(0.4, 0.3, 0.2, 1), \ /* Base color */ VEC4(0.4, 0.3, 0.2, 1), \
/* Dry color factor */ CompVec4(1, 1, 1, 1) \ /* Dry color factor */ VEC4(1, 1, 1, 1) \
) \ ) \
X( \ X( \
/* Name */ Fire, \ /* Name */ Fire, \
@ -94,8 +94,8 @@ Enum(V_ParticleLayer)
/* Stain rate, pen chance */ 0, 0, \ /* Stain rate, pen chance */ 0, 0, \
/* Lifetime */ Inf, \ /* Lifetime */ Inf, \
/* Prune speed threshold */ 0.1, \ /* Prune speed threshold */ 0.1, \
/* Base color */ CompVec4(2, 0.5, 0, 1), \ /* Base color */ VEC4(2, 0.5, 0, 1), \
/* Dry color factor */ CompVec4(0.2, 0.1, 0.0, 1) \ /* Dry color factor */ VEC4(0.2, 0.1, 0.0, 1) \
) \ ) \
\ \
/* Air particles */ \ /* Air particles */ \
@ -106,8 +106,8 @@ Enum(V_ParticleLayer)
/* Stain rate, pen chance */ 0, 0, \ /* Stain rate, pen chance */ 0, 0, \
/* Lifetime */ 0.075, \ /* Lifetime */ 0.075, \
/* Prune speed threshold */ 0.01, \ /* Prune speed threshold */ 0.01, \
/* Base color */ CompVec4(0.8, 0.6, 0.2, 0.25), \ /* Base color */ VEC4(0.8, 0.6, 0.2, 0.25), \
/* Dry color factor */ CompVec4(1, 1, 1, 1) \ /* Dry color factor */ VEC4(1, 1, 1, 1) \
) \ ) \
X( \ X( \
/* Name */ Smoke, \ /* Name */ Smoke, \
@ -116,8 +116,8 @@ Enum(V_ParticleLayer)
/* Stain rate, pen chance */ 0, 0, \ /* Stain rate, pen chance */ 0, 0, \
/* Lifetime */ Inf, \ /* Lifetime */ Inf, \
/* Prune speed threshold */ 0.01, \ /* Prune speed threshold */ 0.01, \
/* Base color */ CompVec4(0.25, 0.25, 0.25, 0.75), \ /* Base color */ VEC4(0.25, 0.25, 0.25, 0.75), \
/* Dry color factor */ CompVec4(1, 1, 1, 1) \ /* Dry color factor */ VEC4(1, 1, 1, 1) \
) \ ) \
\ \
/* Test particles */ \ /* Test particles */ \
@ -128,8 +128,8 @@ Enum(V_ParticleLayer)
/* Stain rate, pen chance */ 0, 0, \ /* Stain rate, pen chance */ 0, 0, \
/* Lifetime */ Inf, \ /* Lifetime */ Inf, \
/* Prune speed threshold */ 0.01, \ /* Prune speed threshold */ 0.01, \
/* Base color */ CompVec4(1, 1, 0, 1), \ /* Base color */ VEC4(1, 1, 0, 1), \
/* Dry color factor */ CompVec4(1, 1, 1, 1) \ /* Dry color factor */ VEC4(1, 1, 1, 1) \
) \ ) \
/* ----------------------------------------------------------------------------------------------------------------------------------- */ /* ----------------------------------------------------------------------------------------------------------------------------------- */
@ -156,7 +156,7 @@ Struct(V_Emitter)
// TODO: Pack this efficiently // TODO: Pack this efficiently
Struct(V_Particle) Struct(V_Particle)
{ {
i32 kind; // If >= 0, then map to V_ParticleKind. Otherwize initialize particle using emitter at index [abs(kind) - 1] i32 kind; // If >= 0, then this maps to V_ParticleKind. Otherwise it represent a particle to be initialized using emitter at index [abs(kind) - 1]
u32 origin_occluder; u32 origin_occluder;
u32 prev_occluder; // TODO: Remove this u32 prev_occluder; // TODO: Remove this
f32 life; f32 life;