Files
2021-07-02 16:04:51 +02:00

459 lines
12 KiB
C

#pragma once
// Common blendmodes used across multiple systems
enum BLENDMODE
{
BLENDMODE_OPAQUE,
BLENDMODE_ALPHA,
BLENDMODE_PREMULTIPLIED,
BLENDMODE_ADDITIVE,
BLENDMODE_MULTIPLY,
BLENDMODE_COUNT
};
enum GBUFFER
{
GBUFFER_COLOR,
GBUFFER_NORMAL_ROUGHNESS,
GBUFFER_VELOCITY,
GBUFFER_COUNT
};
// Do not alter order or value because it is bound to lua manually!
enum RENDERTYPE
{
RENDERTYPE_VOID = 0,
RENDERTYPE_OPAQUE = 1 << 0,
RENDERTYPE_TRANSPARENT = 1 << 1,
RENDERTYPE_WATER = 1 << 2,
RENDERTYPE_ALL = RENDERTYPE_OPAQUE | RENDERTYPE_TRANSPARENT | RENDERTYPE_WATER
};
enum RENDERPASS
{
RENDERPASS_MAIN,
RENDERPASS_PREPASS,
RENDERPASS_ENVMAPCAPTURE,
RENDERPASS_SHADOW,
RENDERPASS_SHADOWCUBE,
RENDERPASS_VOXELIZE,
RENDERPASS_COUNT
};
enum OBJECT_VERTEXINPUT
{
INPUT_SLOT_POSITION_NORMAL_WIND,
INPUT_SLOT_PREVPOS,
INPUT_SLOT_UV0,
INPUT_SLOT_UV1,
INPUT_SLOT_ATLAS,
INPUT_SLOT_COLOR,
INPUT_SLOT_TANGENT,
INPUT_SLOT_INSTANCEDATA,
INPUT_SLOT_COUNT,
};
enum INSTANCETYPE
{
INSTANCETYPE_MATRIX_USERDATA,
INSTANCETYPE_MATRIX_USERDATA_ATLAS,
INSTANCETYPE_MATRIX_USERDATA_MATRIXPREV,
};
static const INSTANCETYPE instanceTypes[RENDERPASS_COUNT] = {
INSTANCETYPE_MATRIX_USERDATA_ATLAS, // RENDERPASS_MAIN,
INSTANCETYPE_MATRIX_USERDATA_MATRIXPREV, // RENDERPASS_PREPASS,
INSTANCETYPE_MATRIX_USERDATA_ATLAS, // RENDERPASS_ENVMAPCAPTURE,
INSTANCETYPE_MATRIX_USERDATA, // RENDERPASS_SHADOW,
INSTANCETYPE_MATRIX_USERDATA, // RENDERPASS_SHADOWCUBE,
INSTANCETYPE_MATRIX_USERDATA_ATLAS, // RENDERPASS_VOXELIZE,
};
// There are two different kinds of stencil refs:
// ENGINE : managed by the engine systems (STENCILREF enum values between 0-15)
// USER : managed by the user (raw numbers between 0-15)
enum STENCILREF_MASK
{
STENCILREF_MASK_ENGINE = 0x0F,
STENCILREF_MASK_USER = 0xF0,
STENCILREF_MASK_ALL = STENCILREF_MASK_ENGINE | STENCILREF_MASK_USER,
};
// engine stencil reference values. These can be in range of [0, 15].
// Do not alter order or value because it is bound to lua manually!
enum STENCILREF
{
STENCILREF_EMPTY = 0,
STENCILREF_DEFAULT = 1,
STENCILREF_CUSTOMSHADER = 2,
STENCILREF_LAST = 15
};
// constant buffers
enum CBTYPES
{
CBTYPE_FRAME,
CBTYPE_CAMERA,
CBTYPE_MISC,
CBTYPE_VOLUMELIGHT,
CBTYPE_CUBEMAPRENDER,
CBTYPE_TESSELLATION,
CBTYPE_RAYTRACE,
CBTYPE_MIPGEN,
CBTYPE_FILTERENVMAP,
CBTYPE_COPYTEXTURE,
CBTYPE_FORWARDENTITYMASK,
CBTYPE_POSTPROCESS,
CBTYPE_POSTPROCESS_MSAO,
CBTYPE_POSTPROCESS_MSAO_UPSAMPLE,
CBTYPE_LENSFLARE,
CBTYPE_PAINTRADIUS,
CBTYPE_SHADINGRATECLASSIFICATION,
CBTYPE_VOLUMETRICCLOUDS,
CBTYPE_COUNT
};
// resource buffers (StructuredBuffer, Buffer, etc.)
enum RBTYPES
{
RBTYPE_ENTITYARRAY,
RBTYPE_VOXELSCENE,
RBTYPE_MATRIXARRAY,
RBTYPE_COUNT
};
// textures
enum TEXTYPES
{
TEXTYPE_3D_VOXELRADIANCE,
TEXTYPE_3D_VOXELRADIANCE_HELPER,
TEXTYPE_2D_SKYATMOSPHERE_TRANSMITTANCELUT,
TEXTYPE_2D_SKYATMOSPHERE_MULTISCATTEREDLUMINANCELUT,
TEXTYPE_2D_SKYATMOSPHERE_SKYVIEWLUT,
TEXTYPE_2D_SKYATMOSPHERE_SKYLUMINANCELUT,
TEXTYPE_2D_SHEENLUT,
TEXTYPE_COUNT
};
// shaders
enum SHADERTYPE
{
// vertex shaders
VSTYPE_OBJECT_DEBUG,
VSTYPE_OBJECT_COMMON,
VSTYPE_OBJECT_SIMPLE,
VSTYPE_OBJECT_PREPASS,
VSTYPE_OBJECT_PREPASS_ALPHATEST,
VSTYPE_OBJECT_COMMON_TESSELLATION,
VSTYPE_OBJECT_PREPASS_TESSELLATION,
VSTYPE_OBJECT_PREPASS_ALPHATEST_TESSELLATION,
VSTYPE_OBJECT_SIMPLE_TESSELLATION,
VSTYPE_SHADOW,
VSTYPE_SHADOW_ALPHATEST,
VSTYPE_SHADOW_TRANSPARENT,
VSTYPE_SHADOWCUBEMAPRENDER,
VSTYPE_SHADOWCUBEMAPRENDER_ALPHATEST,
VSTYPE_SHADOWCUBEMAPRENDER_TRANSPARENT,
VSTYPE_IMPOSTOR,
VSTYPE_VERTEXCOLOR,
VSTYPE_VOLUMETRICLIGHT_DIRECTIONAL,
VSTYPE_VOLUMETRICLIGHT_POINT,
VSTYPE_VOLUMETRICLIGHT_SPOT,
VSTYPE_LIGHTVISUALIZER_SPOTLIGHT,
VSTYPE_LIGHTVISUALIZER_POINTLIGHT,
VSTYPE_SKY,
VSTYPE_ENVMAP,
VSTYPE_ENVMAP_SKY,
VSTYPE_SPHERE,
VSTYPE_CUBE,
VSTYPE_VOXELIZER,
VSTYPE_VOXEL,
VSTYPE_FORCEFIELDVISUALIZER_POINT,
VSTYPE_FORCEFIELDVISUALIZER_PLANE,
VSTYPE_RENDERLIGHTMAP,
VSTYPE_RAYTRACE_SCREEN,
VSTYPE_SCREEN,
VSTYPE_LENSFLARE,
// pixel shaders
PSTYPE_OBJECT,
PSTYPE_OBJECT_TRANSPARENT,
PSTYPE_OBJECT_PLANARREFLECTION,
PSTYPE_OBJECT_TRANSPARENT_PLANARREFLECTION,
PSTYPE_OBJECT_POM,
PSTYPE_OBJECT_TRANSPARENT_POM,
PSTYPE_OBJECT_ANISOTROPIC,
PSTYPE_OBJECT_TRANSPARENT_ANISOTROPIC,
PSTYPE_OBJECT_CLOTH,
PSTYPE_OBJECT_TRANSPARENT_CLOTH,
PSTYPE_OBJECT_CLEARCOAT,
PSTYPE_OBJECT_TRANSPARENT_CLEARCOAT,
PSTYPE_OBJECT_CLOTH_CLEARCOAT,
PSTYPE_OBJECT_TRANSPARENT_CLOTH_CLEARCOAT,
PSTYPE_OBJECT_CARTOON,
PSTYPE_OBJECT_TRANSPARENT_CARTOON,
PSTYPE_OBJECT_UNLIT,
PSTYPE_OBJECT_TRANSPARENT_UNLIT,
PSTYPE_OBJECT_WATER,
PSTYPE_OBJECT_TERRAIN,
PSTYPE_IMPOSTOR,
PSTYPE_OBJECT_HOLOGRAM,
PSTYPE_OBJECT_DEBUG,
PSTYPE_OBJECT_PAINTRADIUS,
PSTYPE_OBJECT_SIMPLE,
PSTYPE_OBJECT_PREPASS,
PSTYPE_OBJECT_PREPASS_ALPHATEST,
PSTYPE_IMPOSTOR_PREPASS,
PSTYPE_IMPOSTOR_SIMPLE,
PSTYPE_IMPOSTOR_WIRE,
PSTYPE_SHADOW_ALPHATEST,
PSTYPE_SHADOW_TRANSPARENT,
PSTYPE_SHADOW_WATER,
PSTYPE_VERTEXCOLOR,
PSTYPE_LIGHTVISUALIZER,
PSTYPE_VOLUMETRICLIGHT_DIRECTIONAL,
PSTYPE_VOLUMETRICLIGHT_POINT,
PSTYPE_VOLUMETRICLIGHT_SPOT,
PSTYPE_SKY_STATIC,
PSTYPE_SKY_DYNAMIC,
PSTYPE_SKY_VELOCITY,
PSTYPE_SUN,
PSTYPE_ENVMAP,
PSTYPE_ENVMAP_TERRAIN,
PSTYPE_ENVMAP_SKY_STATIC,
PSTYPE_ENVMAP_SKY_DYNAMIC,
PSTYPE_CUBEMAP,
PSTYPE_CAPTUREIMPOSTOR_ALBEDO,
PSTYPE_CAPTUREIMPOSTOR_NORMAL,
PSTYPE_CAPTUREIMPOSTOR_SURFACE,
PSTYPE_VOXELIZER,
PSTYPE_VOXELIZER_TERRAIN,
PSTYPE_VOXEL,
PSTYPE_FORCEFIELDVISUALIZER,
PSTYPE_RENDERLIGHTMAP,
PSTYPE_RAYTRACE_DEBUGBVH,
PSTYPE_DOWNSAMPLEDEPTHBUFFER,
PSTYPE_POSTPROCESS_UPSAMPLE_BILATERAL,
PSTYPE_POSTPROCESS_OUTLINE,
PSTYPE_LENSFLARE,
// geometry shaders
GSTYPE_SHADOWCUBEMAPRENDER_EMULATION,
GSTYPE_SHADOWCUBEMAPRENDER_ALPHATEST_EMULATION,
GSTYPE_SHADOWCUBEMAPRENDER_TRANSPARENT_EMULATION,
GSTYPE_ENVMAP_EMULATION,
GSTYPE_ENVMAP_SKY_EMULATION,
GSTYPE_VOXELIZER,
GSTYPE_VOXEL,
// hull shaders
HSTYPE_OBJECT,
HSTYPE_OBJECT_PREPASS,
HSTYPE_OBJECT_PREPASS_ALPHATEST,
HSTYPE_OBJECT_SIMPLE,
// domain shaders
DSTYPE_OBJECT,
DSTYPE_OBJECT_PREPASS,
DSTYPE_OBJECT_PREPASS_ALPHATEST,
DSTYPE_OBJECT_SIMPLE,
// compute shaders
CSTYPE_LUMINANCE_PASS1,
CSTYPE_LUMINANCE_PASS2,
CSTYPE_SHADINGRATECLASSIFICATION,
CSTYPE_SHADINGRATECLASSIFICATION_DEBUG,
CSTYPE_TILEFRUSTUMS,
CSTYPE_LIGHTCULLING,
CSTYPE_LIGHTCULLING_DEBUG,
CSTYPE_LIGHTCULLING_ADVANCED,
CSTYPE_LIGHTCULLING_ADVANCED_DEBUG,
CSTYPE_RESOLVEMSAADEPTHSTENCIL,
CSTYPE_VOXELSCENECOPYCLEAR,
CSTYPE_VOXELSCENECOPYCLEAR_TEMPORALSMOOTHING,
CSTYPE_VOXELRADIANCESECONDARYBOUNCE,
CSTYPE_VOXELCLEARONLYNORMAL,
CSTYPE_SKYATMOSPHERE_TRANSMITTANCELUT,
CSTYPE_SKYATMOSPHERE_MULTISCATTEREDLUMINANCELUT,
CSTYPE_SKYATMOSPHERE_SKYVIEWLUT,
CSTYPE_SKYATMOSPHERE_SKYLUMINANCELUT,
CSTYPE_GENERATEMIPCHAIN2D_UNORM4,
CSTYPE_GENERATEMIPCHAIN2D_FLOAT4,
CSTYPE_GENERATEMIPCHAIN3D_UNORM4,
CSTYPE_GENERATEMIPCHAIN3D_FLOAT4,
CSTYPE_GENERATEMIPCHAINCUBE_UNORM4,
CSTYPE_GENERATEMIPCHAINCUBE_FLOAT4,
CSTYPE_GENERATEMIPCHAINCUBEARRAY_UNORM4,
CSTYPE_GENERATEMIPCHAINCUBEARRAY_FLOAT4,
CSTYPE_FILTERENVMAP,
CSTYPE_COPYTEXTURE2D_UNORM4,
CSTYPE_COPYTEXTURE2D_FLOAT4,
CSTYPE_COPYTEXTURE2D_UNORM4_BORDEREXPAND,
CSTYPE_COPYTEXTURE2D_FLOAT4_BORDEREXPAND,
CSTYPE_SKINNING,
CSTYPE_SKINNING_LDS,
CSTYPE_RAYTRACE,
CSTYPE_PAINT_TEXTURE,
CSTYPE_POSTPROCESS_BLUR_GAUSSIAN_FLOAT1,
CSTYPE_POSTPROCESS_BLUR_GAUSSIAN_FLOAT3,
CSTYPE_POSTPROCESS_BLUR_GAUSSIAN_FLOAT4,
CSTYPE_POSTPROCESS_BLUR_GAUSSIAN_UNORM1,
CSTYPE_POSTPROCESS_BLUR_GAUSSIAN_UNORM4,
CSTYPE_POSTPROCESS_BLUR_GAUSSIAN_WIDE_FLOAT1,
CSTYPE_POSTPROCESS_BLUR_GAUSSIAN_WIDE_FLOAT3,
CSTYPE_POSTPROCESS_BLUR_GAUSSIAN_WIDE_FLOAT4,
CSTYPE_POSTPROCESS_BLUR_GAUSSIAN_WIDE_UNORM1,
CSTYPE_POSTPROCESS_BLUR_GAUSSIAN_WIDE_UNORM4,
CSTYPE_POSTPROCESS_BLUR_BILATERAL_FLOAT1,
CSTYPE_POSTPROCESS_BLUR_BILATERAL_FLOAT3,
CSTYPE_POSTPROCESS_BLUR_BILATERAL_FLOAT4,
CSTYPE_POSTPROCESS_BLUR_BILATERAL_UNORM1,
CSTYPE_POSTPROCESS_BLUR_BILATERAL_UNORM4,
CSTYPE_POSTPROCESS_BLUR_BILATERAL_WIDE_FLOAT1,
CSTYPE_POSTPROCESS_BLUR_BILATERAL_WIDE_FLOAT3,
CSTYPE_POSTPROCESS_BLUR_BILATERAL_WIDE_FLOAT4,
CSTYPE_POSTPROCESS_BLUR_BILATERAL_WIDE_UNORM1,
CSTYPE_POSTPROCESS_BLUR_BILATERAL_WIDE_UNORM4,
CSTYPE_POSTPROCESS_SSAO,
CSTYPE_POSTPROCESS_HBAO,
CSTYPE_POSTPROCESS_MSAO_PREPAREDEPTHBUFFERS1,
CSTYPE_POSTPROCESS_MSAO_PREPAREDEPTHBUFFERS2,
CSTYPE_POSTPROCESS_MSAO_INTERLEAVE,
CSTYPE_POSTPROCESS_MSAO,
CSTYPE_POSTPROCESS_MSAO_BLURUPSAMPLE,
CSTYPE_POSTPROCESS_MSAO_BLURUPSAMPLE_BLENDOUT,
CSTYPE_POSTPROCESS_MSAO_BLURUPSAMPLE_PREMIN,
CSTYPE_POSTPROCESS_MSAO_BLURUPSAMPLE_PREMIN_BLENDOUT,
CSTYPE_POSTPROCESS_SSR_RAYTRACE,
CSTYPE_POSTPROCESS_SSR_RESOLVE,
CSTYPE_POSTPROCESS_SSR_TEMPORAL,
CSTYPE_POSTPROCESS_SSR_MEDIAN,
CSTYPE_POSTPROCESS_LIGHTSHAFTS,
CSTYPE_POSTPROCESS_DEPTHOFFIELD_TILEMAXCOC_HORIZONTAL,
CSTYPE_POSTPROCESS_DEPTHOFFIELD_TILEMAXCOC_VERTICAL,
CSTYPE_POSTPROCESS_DEPTHOFFIELD_NEIGHBORHOODMAXCOC,
CSTYPE_POSTPROCESS_DEPTHOFFIELD_KICKJOBS,
CSTYPE_POSTPROCESS_DEPTHOFFIELD_PREPASS,
CSTYPE_POSTPROCESS_DEPTHOFFIELD_PREPASS_EARLYEXIT,
CSTYPE_POSTPROCESS_DEPTHOFFIELD_MAIN,
CSTYPE_POSTPROCESS_DEPTHOFFIELD_MAIN_EARLYEXIT,
CSTYPE_POSTPROCESS_DEPTHOFFIELD_MAIN_CHEAP,
CSTYPE_POSTPROCESS_DEPTHOFFIELD_POSTFILTER,
CSTYPE_POSTPROCESS_DEPTHOFFIELD_UPSAMPLE,
CSTYPE_POSTPROCESS_MOTIONBLUR_TILEMAXVELOCITY_HORIZONTAL,
CSTYPE_POSTPROCESS_MOTIONBLUR_TILEMAXVELOCITY_VERTICAL,
CSTYPE_POSTPROCESS_MOTIONBLUR_NEIGHBORHOODMAXVELOCITY,
CSTYPE_POSTPROCESS_MOTIONBLUR_KICKJOBS,
CSTYPE_POSTPROCESS_MOTIONBLUR,
CSTYPE_POSTPROCESS_MOTIONBLUR_EARLYEXIT,
CSTYPE_POSTPROCESS_MOTIONBLUR_CHEAP,
CSTYPE_POSTPROCESS_BLOOMSEPARATE,
CSTYPE_POSTPROCESS_BLOOMCOMBINE,
CSTYPE_POSTPROCESS_VOLUMETRICCLOUDS_SHAPENOISE,
CSTYPE_POSTPROCESS_VOLUMETRICCLOUDS_DETAILNOISE,
CSTYPE_POSTPROCESS_VOLUMETRICCLOUDS_CURLNOISE,
CSTYPE_POSTPROCESS_VOLUMETRICCLOUDS_WEATHERMAP,
CSTYPE_POSTPROCESS_VOLUMETRICCLOUDS_RENDER,
CSTYPE_POSTPROCESS_VOLUMETRICCLOUDS_REPROJECT,
CSTYPE_POSTPROCESS_FXAA,
CSTYPE_POSTPROCESS_TEMPORALAA,
CSTYPE_POSTPROCESS_LINEARDEPTH,
CSTYPE_POSTPROCESS_SHARPEN,
CSTYPE_POSTPROCESS_TONEMAP,
CSTYPE_POSTPROCESS_CHROMATIC_ABERRATION,
CSTYPE_POSTPROCESS_UPSAMPLE_BILATERAL_FLOAT1,
CSTYPE_POSTPROCESS_UPSAMPLE_BILATERAL_UNORM1,
CSTYPE_POSTPROCESS_UPSAMPLE_BILATERAL_FLOAT4,
CSTYPE_POSTPROCESS_UPSAMPLE_BILATERAL_UNORM4,
CSTYPE_POSTPROCESS_UPSAMPLE_BILATERAL_UINT4,
CSTYPE_POSTPROCESS_DOWNSAMPLE4X,
CSTYPE_POSTPROCESS_NORMALSFROMDEPTH,
CSTYPE_POSTPROCESS_CHAMFERNORMALS_EDGEDETECT,
CSTYPE_POSTPROCESS_CHAMFERNORMALS_JUMPFLOOD,
CSTYPE_POSTPROCESS_CHAMFERNORMALS_TWIST,
CSTYPE_POSTPROCESS_SCREENSPACESHADOW,
CSTYPE_POSTPROCESS_RTSHADOW,
CSTYPE_POSTPROCESS_RTSHADOW_DENOISE_TILECLASSIFICATION,
CSTYPE_POSTPROCESS_RTSHADOW_DENOISE_FILTER,
CSTYPE_POSTPROCESS_RTSHADOW_DENOISE_TEMPORAL,
CSTYPE_POSTPROCESS_RTAO,
CSTYPE_POSTPROCESS_RTAO_DENOISE_TILECLASSIFICATION,
CSTYPE_POSTPROCESS_RTAO_DENOISE_FILTER,
// raytracing pipelines:
RTTYPE_RTREFLECTION,
SHADERTYPE_COUNT,
};
// input layouts
enum ILTYPES
{
ILTYPE_OBJECT_POS,
ILTYPE_OBJECT_POS_TEX,
ILTYPE_OBJECT_POS_PREVPOS,
ILTYPE_OBJECT_POS_PREVPOS_TEX,
ILTYPE_OBJECT_COMMON,
ILTYPE_OBJECT_DEBUG,
ILTYPE_RENDERLIGHTMAP,
ILTYPE_VERTEXCOLOR,
ILTYPE_COUNT
};
// rasterizer states
enum RSTYPES
{
RSTYPE_FRONT,
RSTYPE_BACK,
RSTYPE_DOUBLESIDED,
RSTYPE_WIRE,
RSTYPE_WIRE_SMOOTH,
RSTYPE_WIRE_DOUBLESIDED,
RSTYPE_WIRE_DOUBLESIDED_SMOOTH,
RSTYPE_SHADOW,
RSTYPE_SHADOW_DOUBLESIDED,
RSTYPE_OCCLUDEE,
RSTYPE_VOXELIZE,
RSTYPE_SKY,
RSTYPE_COUNT
};
// depth-stencil states
enum DSSTYPES
{
DSSTYPE_DEFAULT,
DSSTYPE_SHADOW,
DSSTYPE_XRAY,
DSSTYPE_DEPTHREAD,
DSSTYPE_DEPTHREADEQUAL,
DSSTYPE_ENVMAP,
DSSTYPE_CAPTUREIMPOSTOR,
DSSTYPE_WRITEONLY,
DSSTYPE_HOLOGRAM,
DSSTYPE_COUNT
};
// blend states
enum BSTYPES
{
BSTYPE_OPAQUE,
BSTYPE_TRANSPARENT,
BSTYPE_INVERSE,
BSTYPE_ADDITIVE,
BSTYPE_PREMULTIPLIED,
BSTYPE_COLORWRITEDISABLE,
BSTYPE_ENVIRONMENTALLIGHT,
BSTYPE_DECAL,
BSTYPE_MULTIPLY,
BSTYPE_TRANSPARENTSHADOW,
BSTYPE_COUNT
};