use '.g' & '.gh' extensions for shader source files

This commit is contained in:
jacob 2025-12-09 13:03:34 -06:00
parent b8ba0d7ec0
commit a54b9c62c8
23 changed files with 72 additions and 83 deletions

View File

@ -6,7 +6,8 @@ pushd build
for %%a in (%*) do set "%%a=1" for %%a in (%*) do set "%%a=1"
set program_build_cmd=meta.exe %* set program_build_cmd=meta.exe %*
set meta_build_cmd=cl.exe ../src/meta/meta.c -Od -Z7 -nologo -diagnostics:column -WX -link -DEBUG:FULL -INCREMENTAL:NO set meta_build_warnings=-W4 -WX -wd4244 -wd4201 -wd4324 -wd4100 -wd4101 -wd4189
set meta_build_cmd=cl.exe ../src/meta/meta.c -Od -Z7 -nologo -diagnostics:column %meta_build_warnings% -link -DEBUG:FULL -INCREMENTAL:NO
set meta_rebuild_code=1317212284 set meta_rebuild_code=1317212284
if "%--force_meta_build%"=="1" ( if "%--force_meta_build%"=="1" (

View File

@ -54,10 +54,10 @@
//- Language //- Language
#if defined(__HLSL_VERSION) #if defined(__HLSL_VERSION)
#define IsLanguageC 0 #define IsLanguageC 0
#define IsLanguageHlsl 1 #define IsLanguageG 1
#else #else
#define IsLanguageC 1 #define IsLanguageC 1
#define IsLanguageHlsl 0 #define IsLanguageG 0
#endif #endif
//- Platform system //- Platform system
@ -73,7 +73,7 @@
#define IsPlatformWindows 0 #define IsPlatformWindows 0
#define IsPlatformMac 0 #define IsPlatformMac 0
#define IsPlatformLinux 1 #define IsPlatformLinux 1
#elif IsLanguageHlsl #elif IsLanguageG
#define IsPlatformWindows 0 #define IsPlatformWindows 0
#define IsPlatformMac 0 #define IsPlatformMac 0
#define IsPlatformLinux 0 #define IsPlatformLinux 0
@ -88,7 +88,7 @@
#elif defined(_M_ARM64) || defined(__aarch64__) #elif defined(_M_ARM64) || defined(__aarch64__)
#define IsArchX64 0 #define IsArchX64 0
#define IsArchArm64 1 #define IsArchArm64 1
#elif IsLanguageHlsl #elif IsLanguageG
#define IsArchX64 0 #define IsArchX64 0
#define IsArchArm64 0 #define IsArchArm64 0
#else #else
@ -187,7 +187,7 @@
#pragma section(".rdata$", read) #pragma section(".rdata$", read)
#define Readonly __declspec(allocate(".rdata$")) #define Readonly __declspec(allocate(".rdata$"))
#else #else
#define Readonly __declspec(allocate(".rdata")) #define Readonly __declspec(allocate(".rdata$"))
#endif #endif
#elif IsPlatformMac #elif IsPlatformMac
#define Readonly __attribute((section("__TEXT,__const"))) #define Readonly __attribute((section("__TEXT,__const")))
@ -196,24 +196,15 @@
#endif #endif
//- Thread-local //- Thread-local
#if IsCompilerMsvc #if IsCompilerMsvc
#define ThreadLocal __declspec(thread) #define ThreadLocal __declspec(thread)
#endif #endif
//- Compiler memory barriers
//- Memory barriers
#if IsCompilerMsvc #if IsCompilerMsvc
#define WriteBarrier() _WriteBarrier() #define CompilerBarrier() _ReadWriteBarrier()
#define ReadBarrier() _ReadBarrier() #elif IsArchX64
#elif defined(__x86_64) || defined(__i386__) #define CompilerBarrier() __asm__ volatile("" ::: "memory")
#define WriteBarrier() __asm__ volatile("" ::: "memory")
#define ReadBarrier() __asm__ volatile("" ::: "memory")
#elif IsLanguageHlsl
#define WriteBarrier()
#define ReadBarrier()
#else
#error Memory barriers not implemented
#endif #endif
//- Fallthrough //- Fallthrough
@ -461,7 +452,7 @@
#define Packed(s) __pragma(pack(push, 1)) s __pragma(pack(pop)) #define Packed(s) __pragma(pack(push, 1)) s __pragma(pack(pop))
#elif IsCompilerClang #elif IsCompilerClang
#define Packed(s) s __attribute((__packed__)) #define Packed(s) s __attribute((__packed__))
#elif IsLanguageHlsl #elif IsLanguageG
#define Packed(s) s #define Packed(s) s
#endif #endif
@ -492,7 +483,7 @@
typedef i8 b8; typedef i8 b8;
typedef u32 b32; typedef u32 b32;
Struct(U128) { u64 hi; u64 lo; }; Struct(U128) { u64 hi; u64 lo; };
#elif IsLanguageHlsl #elif IsLanguageG
typedef int i32; typedef int i32;
typedef uint u32; typedef uint u32;
typedef float f32; typedef float f32;
@ -558,37 +549,34 @@
StaticAssert(alignof(Atomic64Padded) == CachelineSize && sizeof(Atomic64Padded) % CachelineSize == 0); StaticAssert(alignof(Atomic64Padded) == CachelineSize && sizeof(Atomic64Padded) % CachelineSize == 0);
#if IsPlatformWindows && IsArchX64 #if IsPlatformWindows && IsArchX64
//- Memory barriers
# define CompilerMemoryBarrier() _ReadWriteBarrier()
# define HardwareMemoryBarrier() MemoryBarrier()
//- 8 bit atomic operations //- 8 bit atomic operations
ForceInline i8 Atomic8Fetch (Atomic8 *x) { i8 result = (x)->_v; CompilerMemoryBarrier(); return result; } ForceInline i8 Atomic8Fetch (Atomic8 *x) { CompilerBarrier(); i8 result = x->_v; CompilerBarrier(); return result; }
ForceInline void Atomic8Set (Atomic8 *x, i8 e) { CompilerMemoryBarrier(); (x)->_v = e; } ForceInline void Atomic8Set (Atomic8 *x, i8 e) { CompilerBarrier(); x->_v = e; CompilerBarrier(); }
ForceInline i8 Atomic8FetchSet (Atomic8 *x, i8 e) { return (i8)_InterlockedExchange8((volatile char *)&(x)->_v, (e)); } ForceInline i8 Atomic8FetchSet (Atomic8 *x, i8 e) { return (i8)_InterlockedExchange8((volatile char *)&x->_v, e); }
ForceInline i8 Atomic8FetchTestSet (Atomic8 *x, i8 c, i8 e) { return (i8)_InterlockedCompareExchange8((volatile char *)&(x)->_v, (e), (c)); } ForceInline i8 Atomic8FetchTestSet (Atomic8 *x, i8 c, i8 e) { return (i8)_InterlockedCompareExchange8((volatile char *)&x->_v, e, c); }
ForceInline i8 Atomic8FetchXor (Atomic8 *x, i8 c) { return (i8)_InterlockedXor8((volatile char *)&(x)->_v, (c)); } ForceInline i8 Atomic8FetchXor (Atomic8 *x, i8 c) { return (i8)_InterlockedXor8((volatile char *)&x->_v, c); }
ForceInline i8 Atomic8FetchAdd (Atomic8 *x, i8 a) { return (i8)_InterlockedExchangeAdd8((volatile char *)&(x)->_v, (a)); } ForceInline i8 Atomic8FetchAdd (Atomic8 *x, i8 a) { return (i8)_InterlockedExchangeAdd8((volatile char *)&x->_v, a); }
//- 16 bit atomic operations //- 16 bit atomic operations
ForceInline i16 Atomic16Fetch (Atomic16 *x) { i16 result = (x)->_v; CompilerMemoryBarrier(); return result; } ForceInline i16 Atomic16Fetch (Atomic16 *x) { CompilerBarrier(); i16 result = x->_v; CompilerBarrier(); return result; }
ForceInline void Atomic16Set (Atomic16 *x, i16 e) { CompilerMemoryBarrier(); (x)->_v = e; } ForceInline void Atomic16Set (Atomic16 *x, i16 e) { CompilerBarrier(); x->_v = e; CompilerBarrier(); }
ForceInline i16 Atomic16FetchSet (Atomic16 *x, i16 e) { return (i16)_InterlockedExchange16(&(x)->_v, (e)); } ForceInline i16 Atomic16FetchSet (Atomic16 *x, i16 e) { return (i16)_InterlockedExchange16(&x->_v, e); }
ForceInline i16 Atomic16FetchTestSet (Atomic16 *x, i16 c, i16 e) { return (i16)_InterlockedCompareExchange16(&(x)->_v, (e), (c)); } ForceInline i16 Atomic16FetchTestSet (Atomic16 *x, i16 c, i16 e) { return (i16)_InterlockedCompareExchange16(&x->_v, e, c); }
ForceInline i16 Atomic16FetchXor (Atomic16 *x, i16 c) { return (i16)_InterlockedXor16(&(x)->_v, (c)); } ForceInline i16 Atomic16FetchXor (Atomic16 *x, i16 c) { return (i16)_InterlockedXor16(&x->_v, c); }
ForceInline i16 Atomic16FetchAdd (Atomic16 *x, i16 a) { return (i16)_InterlockedExchangeAdd16(&(x)->_v, (a)); } ForceInline i16 Atomic16FetchAdd (Atomic16 *x, i16 a) { return (i16)_InterlockedExchangeAdd16(&x->_v, a); }
//- 32 bit atomic operations //- 32 bit atomic operations
ForceInline i32 Atomic32Fetch (Atomic32 *x) { i32 result = (x)->_v; CompilerMemoryBarrier(); return result; } ForceInline i32 Atomic32Fetch (Atomic32 *x) { CompilerBarrier(); i32 result = x->_v; CompilerBarrier(); return result; }
ForceInline void Atomic32Set (Atomic32 *x, i32 e) { CompilerMemoryBarrier(); (x)->_v = e; } ForceInline void Atomic32Set (Atomic32 *x, i32 e) { CompilerBarrier(); x->_v = e; CompilerBarrier(); }
ForceInline i32 Atomic32FetchSet (Atomic32 *x, i32 e) { return (i32)_InterlockedExchange((volatile long *)&(x)->_v, (e)); } ForceInline i32 Atomic32FetchSet (Atomic32 *x, i32 e) { return (i32)_InterlockedExchange((volatile long *)&x->_v, e); }
ForceInline i32 Atomic32FetchTestSet (Atomic32 *x, i32 c, i32 e) { return (i32)_InterlockedCompareExchange((volatile long *)&(x)->_v, (e), (c)); } ForceInline i32 Atomic32FetchTestSet (Atomic32 *x, i32 c, i32 e) { return (i32)_InterlockedCompareExchange((volatile long *)&x->_v, e, c); }
ForceInline i32 Atomic32FetchXor (Atomic32 *x, i32 c) { return (i32)_InterlockedXor((volatile long *)&(x)->_v, (c)); } ForceInline i32 Atomic32FetchXor (Atomic32 *x, i32 c) { return (i32)_InterlockedXor((volatile long *)&x->_v, c); }
ForceInline i32 Atomic32FetchAdd (Atomic32 *x, i32 a) { return (i32)_InterlockedExchangeAdd((volatile long *)&(x)->_v, (a)); } ForceInline i32 Atomic32FetchAdd (Atomic32 *x, i32 a) { return (i32)_InterlockedExchangeAdd((volatile long *)&x->_v, a); }
//- 64 bit atomic operations //- 64 bit atomic operations
ForceInline i64 Atomic64Fetch (Atomic64 *x) { i64 result = (x)->_v; CompilerMemoryBarrier(); return result; } ForceInline i64 Atomic64Fetch (Atomic64 *x) { CompilerBarrier(); i64 result = x->_v; CompilerBarrier(); return result; }
ForceInline void Atomic64Set (Atomic64 *x, i64 e) { CompilerMemoryBarrier(); (x)->_v = e; } ForceInline void Atomic64Set (Atomic64 *x, i64 e) { CompilerBarrier(); x->_v = e; CompilerBarrier(); }
ForceInline i64 Atomic64FetchSet (Atomic64 *x, i64 e) { return (i64)_InterlockedExchange64(&(x)->_v, (e)); } ForceInline i64 Atomic64FetchSet (Atomic64 *x, i64 e) { return (i64)_InterlockedExchange64(&x->_v, e); }
ForceInline i64 Atomic64FetchTestSet (Atomic64 *x, i64 c, i64 e) { return (i64)_InterlockedCompareExchange64(&(x)->_v, (e), (c)); } ForceInline i64 Atomic64FetchTestSet (Atomic64 *x, i64 c, i64 e) { return (i64)_InterlockedCompareExchange64(&x->_v, e, c); }
ForceInline i64 Atomic64FetchXor (Atomic64 *x, i64 c) { return (i64)_InterlockedXor64(&(x)->_v, (c)); } ForceInline i64 Atomic64FetchXor (Atomic64 *x, i64 c) { return (i64)_InterlockedXor64(&x->_v, c); }
ForceInline i64 Atomic64FetchAdd (Atomic64 *x, i64 a) { return (i64)_InterlockedExchangeAdd64(&(x)->_v, (a)); } ForceInline i64 Atomic64FetchAdd (Atomic64 *x, i64 a) { return (i64)_InterlockedExchangeAdd64(&x->_v, a); }
#else #else
#error Atomics not implemented #error Atomics not implemented
#endif #endif
@ -717,7 +705,7 @@
Struct(VertexShader) { ResourceKey resource; }; Struct(VertexShader) { ResourceKey resource; };
Struct(PixelShader) { ResourceKey resource; }; Struct(PixelShader) { ResourceKey resource; };
Struct(ComputeShader) { ResourceKey resource; }; Struct(ComputeShader) { ResourceKey resource; };
#elif IsLanguageHlsl #elif IsLanguageG
#define Semantic(t, n) t n : n #define Semantic(t, n) t n : n
#define ComputeShader(name, x) [numthreads(x, 1, 1)] void name(Semantic(u32, SV_DispatchThreadID)) #define ComputeShader(name, x) [numthreads(x, 1, 1)] void name(Semantic(u32, SV_DispatchThreadID))
#define ComputeShader2D(name, x, y) [numthreads(x, y, 1)] void name(Semantic(Vec2U32, SV_DispatchThreadID)) #define ComputeShader2D(name, x, y) [numthreads(x, y, 1)] void name(Semantic(Vec2U32, SV_DispatchThreadID))
@ -772,7 +760,7 @@ Struct(SamplerStateHandle) { u32 v; };
StaticAssert(slot < MaxDeclarableShaderConstants); \ StaticAssert(slot < MaxDeclarableShaderConstants); \
Enum(name##__shaderconstantenum) { name = slot }; \ Enum(name##__shaderconstantenum) { name = slot }; \
Struct(name##__shaderconstanttype) { type v; } Struct(name##__shaderconstanttype) { type v; }
#elif IsLanguageHlsl #elif IsLanguageG
#define ShaderConstant(type, name, slot) cbuffer name : register(b##slot) { type name; } #define ShaderConstant(type, name, slot) cbuffer name : register(b##slot) { type name; }
cbuffer IsAsyncCompute : register(b31) { b32 IsAsyncCompute; } cbuffer IsAsyncCompute : register(b31) { b32 IsAsyncCompute; }

View File

@ -3,7 +3,7 @@
// that it may be depended on by the metaprogram. // that it may be depended on by the metaprogram.
//- Api //- Api
#include "base.h" #include "base.cgh"
#if IsLanguageC #if IsLanguageC
# include "base_intrinsics.h" # include "base_intrinsics.h"
# include "base_memory.h" # include "base_memory.h"
@ -26,8 +26,8 @@
# include "base_bitbuff.h" # include "base_bitbuff.h"
# include "base_resource.h" # include "base_resource.h"
# include "base_controller.h" # include "base_controller.h"
#elif IsLanguageHlsl #elif IsLanguageG
# include "base_gpu.hlsl" # include "base_shader.gh"
#endif #endif
//- Impl //- Impl

View File

@ -1,5 +1,5 @@
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
//~ Gpu math types //~ Shader math types
#define Pi ((f32)3.14159265358979323846) #define Pi ((f32)3.14159265358979323846)
#define Tau ((f32)6.28318530717958647693) #define Tau ((f32)6.28318530717958647693)

View File

@ -5,13 +5,13 @@
//- Api //- Api
@IncludeC gpu_core.h @IncludeC gpu_core.h
@IncludeC gpu_shader_extras.h @IncludeC gpu_shader_extras.cgh
@IncludeC gpu_common.h @IncludeC gpu_common.h
@IncludeGpu gpu_shader_extras.h @IncludeG gpu_shader_extras.cgh
@IncludeG gpu_shader_extras.gh
//- Impl //- Impl
@IncludeC gpu_common.c @IncludeC gpu_common.c
@IncludeGpu gpu_shader_extras.hlsl
//- Dx12 impl //- Dx12 impl
@DefaultWindowsImpl gpu_dx12 @DefaultWindowsImpl gpu_dx12

View File

@ -83,7 +83,7 @@ GPU_ResourceHandle GPU_PushBufferFromCpu(GPU_ArenaHandle gpu_arena, GPU_CommandL
GPU_MemorySync( GPU_MemorySync(
cl, buffer, cl, buffer,
GPU_Stage_Copy, GPU_Access_CopyWrite, GPU_Stage_Copy, GPU_Access_CopyWrite,
GPU_Stage_AllShading, GPU_Access_ShaderRead GPU_Stage_All, GPU_Access_All
); );
return buffer; return buffer;
} }

View File

@ -3,7 +3,7 @@
#if IsLanguageC #if IsLanguageC
#define GPU_SharedHandle(type, v) ((type) { (v) }) #define GPU_SharedHandle(type, v) ((type) { (v) })
#elif IsLanguageHlsl #elif IsLanguageG
#define GPU_SharedHandle(type, v) (type(v)) #define GPU_SharedHandle(type, v) (type(v))
#endif #endif

View File

@ -5,7 +5,8 @@
* https://therealmjp.github.io/posts/hlsl-printf/ * https://therealmjp.github.io/posts/hlsl-printf/
*/ */
template<typename T> u32 U32FromChar(in T c) template<typename T>
u32 U32FromChar(in T c)
{ {
if(c == ' ') if(c == ' ')
return 32; return 32;

View File

@ -38,7 +38,7 @@ LineCol LineColFromPos(String data, i64 pos)
{ {
TempArena scratch = BeginScratchNoConflict(); TempArena scratch = BeginScratchNoConflict();
LineCol result = ZI; LineCol result = ZI;
for (u64 cur = 0; cur < data.len && cur <= pos; ++cur) for (u64 cur = 0; cur < data.len && cur <= (u64)pos; ++cur)
{ {
u8 c = data.text[cur]; u8 c = data.text[cur];
if (c == '\n') if (c == '\n')
@ -356,7 +356,7 @@ void BuildEntryPoint(WaveLaneCtx *lane)
PushStringToList(perm, &cp.warnings_msvc, Lit("-W4")); PushStringToList(perm, &cp.warnings_msvc, Lit("-W4"));
PushStringToList(perm, &cp.warnings_msvc, Lit("-WX")); PushStringToList(perm, &cp.warnings_msvc, Lit("-WX"));
// PushStringToList(perm, &cp.warnings_msvc, Lit("-we4013")); /* function undefined; assuming extern returning int */ // PushStringToList(perm, &cp.warnings_msvc, Lit("-we4013")); /* function undefined; assuming extern returning int */
PushStringToList(perm, &cp.warnings_msvc, Lit("-we4668")); /* 'X' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif' PushStringToList(perm, &cp.warnings_msvc, Lit("-we4668")); /* 'X' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif' */
/* Disable warnings */ /* Disable warnings */
PushStringToList(perm, &cp.warnings_msvc, Lit("-wd4244")); /* 'function': conversion from 'int' to 'f32', possible loss of data */ PushStringToList(perm, &cp.warnings_msvc, Lit("-wd4244")); /* 'function': conversion from 'int' to 'f32', possible loss of data */
@ -437,8 +437,8 @@ void BuildEntryPoint(WaveLaneCtx *lane)
/* TODO: Dispatch OS commands asynchronously */ /* TODO: Dispatch OS commands asynchronously */
String shader_store_name = Lit("ShadersStore"); String shader_store_name = Lit("ShadersStore");
String c_out_file = F_GetFull(perm, StringF(perm, "%F_gen_c.c", FmtString(cmdline.leaf_layer_name))); String c_out_file = F_GetFull(perm, StringF(perm, "%F_gen.c", FmtString(cmdline.leaf_layer_name)));
String gpu_out_file = F_GetFull(perm, StringF(perm, "%F_gen_gpu.hlsl", FmtString(cmdline.leaf_layer_name))); String gpu_out_file = F_GetFull(perm, StringF(perm, "%F_gen.g", FmtString(cmdline.leaf_layer_name)));
if (lane->idx == 0 && GetBuildStatus() == 0) if (lane->idx == 0 && GetBuildStatus() == 0)
{ {
@ -462,7 +462,6 @@ void BuildEntryPoint(WaveLaneCtx *lane)
//- Generate C file //- Generate C file
{ {
String c_out_file = F_GetFull(perm, StringF(perm, "%F_gen_c.c", FmtString(cmdline.leaf_layer_name)));
StringList c_store_lines = ZI; StringList c_store_lines = ZI;
StringList c_shader_lines = ZI; StringList c_shader_lines = ZI;
StringList c_include_lines = ZI; StringList c_include_lines = ZI;
@ -663,7 +662,7 @@ void BuildEntryPoint(WaveLaneCtx *lane)
switch (kind) switch (kind)
{ {
default: break; default: break;
case M_EntryKind_IncludeGpu: case M_EntryKind_IncludeG:
{ {
if (arg0_tok->valid) if (arg0_tok->valid)
{ {

View File

@ -75,7 +75,7 @@ Enum(M_EntryKind)
M_EntryKind_Layer, M_EntryKind_Layer,
M_EntryKind_Dep, M_EntryKind_Dep,
M_EntryKind_IncludeC, M_EntryKind_IncludeC,
M_EntryKind_IncludeGpu, M_EntryKind_IncludeG,
M_EntryKind_DefaultWindowsImpl, M_EntryKind_DefaultWindowsImpl,
M_EntryKind_Startup, M_EntryKind_Startup,
M_EntryKind_VertexShader, M_EntryKind_VertexShader,
@ -88,7 +88,7 @@ Global Readonly char *M_entry_kind_rules[] = {
[M_EntryKind_Layer] = "@Layer", [M_EntryKind_Layer] = "@Layer",
[M_EntryKind_Dep] = "@Dep", [M_EntryKind_Dep] = "@Dep",
[M_EntryKind_IncludeC] = "@IncludeC", [M_EntryKind_IncludeC] = "@IncludeC",
[M_EntryKind_IncludeGpu] = "@IncludeGpu", [M_EntryKind_IncludeG] = "@IncludeG",
[M_EntryKind_DefaultWindowsImpl] = "@DefaultWindowsImpl", [M_EntryKind_DefaultWindowsImpl] = "@DefaultWindowsImpl",
[M_EntryKind_Startup] = "@Startup", [M_EntryKind_Startup] = "@Startup",
[M_EntryKind_VertexShader] = "@VertexShader", [M_EntryKind_VertexShader] = "@VertexShader",

View File

@ -84,7 +84,7 @@ String OS_ReadEntireFile(Arena *arena, OS_File file)
for (;;) for (;;)
{ {
u8 *chunk = PushStructsNoZero(arena, u8, chunk_size); u8 *chunk = PushStructsNoZero(arena, u8, chunk_size);
u32 chunk_bytes_read = 0; DWORD chunk_bytes_read = 0;
ReadFile(handle, chunk, chunk_size, &chunk_bytes_read, 0); ReadFile(handle, chunk, chunk_size, &chunk_bytes_read, 0);
result.len += chunk_bytes_read; result.len += chunk_bytes_read;
if (chunk_bytes_read < chunk_size) if (chunk_bytes_read < chunk_size)
@ -302,7 +302,7 @@ OS_CommandResult OS_RunCommand(Arena *arena, String cmd)
{ {
result.output.text = ArenaNext(arena, u8); result.output.text = ArenaNext(arena, u8);
b32 exit_code_valid = 0; b32 exit_code_valid = 0;
i32 exit_code = 0; DWORD exit_code = 0;
b32 stdout_finished = 0; b32 stdout_finished = 0;
while (!stdout_finished) while (!stdout_finished)
{ {

View File

@ -10,16 +10,16 @@
//- Api //- Api
@IncludeC pp_vis_widgets.h @IncludeC pp_vis_widgets.h
@IncludeC pp_vis_shaders.h @IncludeC pp_vis_shaders.cgh
@IncludeC pp_vis_draw.h @IncludeC pp_vis_draw.h
@IncludeC pp_vis_core.h @IncludeC pp_vis_core.h
@IncludeGpu pp_vis_shaders.h @IncludeG pp_vis_shaders.cgh
//- Impl //- Impl
@IncludeC pp_vis_widgets.c @IncludeC pp_vis_widgets.c
@IncludeC pp_vis_draw.c @IncludeC pp_vis_draw.c
@IncludeC pp_vis_core.c @IncludeC pp_vis_core.c
@IncludeGpu pp_vis_shaders.hlsl @IncludeG pp_vis_shaders.g
//- Embeds //- Embeds
@EmbedDir V_Resources pp_vis_res @EmbedDir V_Resources pp_vis_res

View File

@ -20,9 +20,9 @@
@IncludeC pp_ent.h @IncludeC pp_ent.h
@IncludeC pp_step.h @IncludeC pp_step.h
@IncludeC pp_widgets.h @IncludeC pp_widgets.h
@IncludeC pp_draw.h @IncludeC pp_draw.cgh
@IncludeG pp_draw.cgh
@IncludeC pp.h @IncludeC pp.h
@IncludeGpu pp_draw.h
//- Impl //- Impl
@IncludeC pp_sim.c @IncludeC pp_sim.c
@ -32,7 +32,7 @@
@IncludeC pp_step.c @IncludeC pp_step.c
@IncludeC pp_widgets.c @IncludeC pp_widgets.c
@IncludeC pp.c @IncludeC pp.c
@IncludeGpu pp_draw.gpu @IncludeG pp_draw.g
//- Embeds //- Embeds
@EmbedDir PP_Resources pp_res @EmbedDir PP_Resources pp_res

View File

@ -7,11 +7,11 @@
//- Api //- Api
@IncludeC proto_shaders.h @IncludeC proto_shaders.h
@IncludeGpu proto_shaders.h @IncludeG proto_shaders.h
//- Impl //- Impl
@IncludeC proto.c @IncludeC proto.c
@IncludeGpu proto_shaders.hlsl @IncludeG proto_shaders.g
//- Shaders //- Shaders
@ComputeShader PT_TestCS @ComputeShader PT_TestCS

View File

@ -8,13 +8,13 @@
//- Api //- Api
@IncludeC ui_core.h @IncludeC ui_core.h
@IncludeC ui_extras.h @IncludeC ui_extras.h
@IncludeC ui_shaders.h @IncludeC ui_shaders.cgh
@IncludeGpu ui_shaders.h @IncludeG ui_shaders.cgh
//- Impl //- Impl
@IncludeC ui_core.c @IncludeC ui_core.c
@IncludeC ui_extras.c @IncludeC ui_extras.c
@IncludeGpu ui_shaders.hlsl @IncludeG ui_shaders.g
//- Shaders //- Shaders
@VertexShader UI_DRectVS @VertexShader UI_DRectVS