/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Data/Base/Shaders/Common/ConstantBufferMacros.h
131 строка
4 KB
Jan Krassnigg
Debug and gizmo rendering improvements (#1916)
27 апр 2026, 13:00
Не верифицирован
27 апр 2026, 13:00
8ed384f
Код
Авторство
О чём код?
#pragma once #include "Platforms.h" #if EZ_ENABLED(PLATFORM_SHADER) // HLSL # define EZ_SHADER_STRUCT struct Transform { float4 r0; float4 r1; float4 r2; }; float4x4 TransformToMatrix(Transform t) { return float4x4(t.r0, t.r1, t.r2, float4(0, 0, 0, 1)); } float4 TransformToPosition(Transform t) { return float4(t.r0.w, t.r1.w, t.r2.w, 1); } float3x3 TransformToRotation(Transform t) { return float3x3(t.r0.xyz, t.r1.xyz, t.r2.xyz); } # define CONSTANT_BUFFER(Name, Slot) cbuffer Name BIND_RESOURCE(Slot, BG_FRAME) # define CONSTANT_BUFFER2(Name, Slot, Set) cbuffer Name BIND_RESOURCE(Slot, Set) # define STRUCTURED_BUFFER(Name, Type) StructuredBuffer<Type> Name // Note: If extended, you need to extend Engine/RendererCore/ShaderCompiler/Implementation/ShaderParser.cpp as well as ezShaderConstant::Type. # define FLOAT1(Name) float Name # define FLOAT2(Name) float2 Name # define FLOAT3(Name) float3 Name # define FLOAT4(Name) float4 Name # define INT1(Name) int Name # define INT2(Name) int2 Name # define INT3(Name) int3 Name # define INT4(Name) int4 Name # define UINT1(Name) uint Name # define UINT2(Name) uint2 Name # define UINT3(Name) uint3 Name # define UINT4(Name) uint4 Name # define MAT3(Name) float3x3 Name # define MAT4(Name) float4x4 Name # define TRANSFORM(Name) Transform Name # define COLOR4F(Name) float4 Name // # define COLOR4UB(Name) uint Name // TODO: this doesn't actually work # define BOOL1(Name) bool Name // ### The types below are not supported for material constants ### # define PACKEDHALF2(Name1, Name2, CombinedName) uint CombinedName # define UNPACKHALF2(Name1, Name2, CombinedName) \ float Name1 = f16tof32(CombinedName); \ float Name2 = f16tof32(CombinedName >> 16) # define PACKEDCOLOR4H(Name) \ uint EZ_PP_CONCAT(Name, RG); \ uint EZ_PP_CONCAT(Name, GB) # define UNPACKCOLOR4H(Name) RGBA16FToFloat4(EZ_PP_CONCAT(Name, RG), EZ_PP_CONCAT(Name, GB)) # define PACKEDUINT16(Name1, Name2, CombinedName) uint CombinedName # define UNPACKUINT16(Name1, Name2, CombinedName) \ uint Name1 = CombinedName & 0xFFFF; \ uint Name2 = CombinedName >> 16 # define PACKEDUINT8(Name1, Name2, Name3, Name4, CombinedName) uint CombinedName # define UNPACKUINT8(Name1, Name2, Name3, Name4, CombinedName) \ uint Name1 = CombinedName & 0xFF; \ uint Name2 = (CombinedName >> 8) & 0xFF; \ uint Name3 = (CombinedName >> 16) & 0xFF; \ uint Name4 = (CombinedName >> 24) & 0xFF #else // C++ # include <Foundation/Basics/Platform/Common.h> # include <RendererFoundation/Shader/Types.h> # define EZ_SHADER_STRUCT alignas(16) # define CONSTANT_BUFFER(Name, Slot) struct alignas(16) Name # define CONSTANT_BUFFER2(Name, Slot, Set) struct alignas(16) Name # define STRUCTURED_BUFFER(Name, Type) # define BEGIN_PUSH_CONSTANTS(Name) struct EZ_SHADER_STRUCT Name # define END_PUSH_CONSTANTS(Name) ; # define FLOAT1(Name) float Name # define FLOAT2(Name) ezVec2 Name # define FLOAT3(Name) ezVec3 Name # define FLOAT4(Name) ezVec4 Name # define INT1(Name) int Name # define INT2(Name) ezVec2I32 Name # define INT3(Name) ezVec3I32 Name # define INT4(Name) ezVec4I32 Name # define UINT1(Name) ezUInt32 Name # define UINT2(Name) ezVec2U32 Name # define UINT3(Name) ezVec3U32 Name # define UINT4(Name) ezVec4U32 Name # define MAT3(Name) ezShaderMat3 Name # define MAT4(Name) ezShaderMat4 Name # define TRANSFORM(Name) ezShaderTransform Name # define COLOR4F(Name) ezColor Name // # define COLOR4UB(Name) ezColorGammaUB Name // TODO: this doesn't actually work (in the shader) # define BOOL1(Name) ezShaderBool Name # define PACKEDHALF2(Name1, Name2, CombinedName) \ ezFloat16 Name1; \ ezFloat16 Name2 # define PACKEDCOLOR4H(Name) ezColorLinear16f Name # define PACKEDUINT16(Name1, Name2, CombinedName) \ ezUInt16 Name1; \ ezUInt16 Name2 # define PACKEDUINT8(Name1, Name2, Name3, Name4, CombinedName) \ ezUInt8 Name1; \ ezUInt8 Name2; \ ezUInt8 Name3; \ ezUInt8 Name4 #endif