diff --git a/renderers/vulkan/tr_animation.c b/renderers/vulkan/tr_animation.c index 74aa8a49b..864d915aa 100644 --- a/renderers/vulkan/tr_animation.c +++ b/renderers/vulkan/tr_animation.c @@ -411,9 +411,6 @@ void RB_MDRSurfaceAnim( mdrSurface_t *surface ) tempVert[1] += w->boneWeight * ( DotProduct( bone->matrix[1], w->offset ) + bone->matrix[1][3] ); tempVert[2] += w->boneWeight * ( DotProduct( bone->matrix[2], w->offset ) + bone->matrix[2][3] ); -#ifdef USE_TESS_NEEDS_NORMAL - if ( tess.needsNormal ) -#endif { tempNormal[0] += w->boneWeight * DotProduct( bone->matrix[0], v->normal ); tempNormal[1] += w->boneWeight * DotProduct( bone->matrix[1], v->normal ); @@ -425,9 +422,6 @@ void RB_MDRSurfaceAnim( mdrSurface_t *surface ) tess.xyz[baseVertex + j][1] = tempVert[1]; tess.xyz[baseVertex + j][2] = tempVert[2]; -#ifdef USE_TESS_NEEDS_NORMAL - if ( tess.needsNormal ) -#endif { tess.normal[baseVertex + j][0] = tempNormal[0]; tess.normal[baseVertex + j][1] = tempNormal[1]; diff --git a/renderers/vulkan/tr_local.h b/renderers/vulkan/tr_local.h index 8f04592c8..bc70d70e6 100644 --- a/renderers/vulkan/tr_local.h +++ b/renderers/vulkan/tr_local.h @@ -24,15 +24,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define TR_LOCAL_H #define USE_VK_PBR -#ifdef USE_VK_PBR - #define VK_PBR_BRDFLUT // for inspecting codebase, does not toggle brdflut. - #define VK_CUBEMAP - - #ifdef VK_CUBEMAP - #define REF_CUBEMAP_IRRADIANCE_SIZE 64 - #define REF_CUBEMAP_SIZE 256 - #endif -#endif +#define VK_PBR_BRDFLUT // for inspecting codebase, does not toggle brdflut. +#define VK_CUBEMAP +#define REF_CUBEMAP_IRRADIANCE_SIZE 64 +#define REF_CUBEMAP_SIZE 256 #define USE_VBO // store static world geometry in VBO #define USE_FOG_COLLAPSE // not compatible with legacy dlights @@ -42,13 +37,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define MAX_TEXTURE_SIZE 32768 -#ifdef USE_VBO -#define USE_VBO_GRID /* put SF_GRID to VBO */ -#endif - -//#define USE_TESS_NEEDS_NORMAL -//#define USE_TESS_NEEDS_ST2 - #define SH_COEFF_COUNT 9 #include "../../qcommon/q_shared.h" @@ -867,11 +855,7 @@ typedef struct srfGridMesh_s { srfVert_t verts[1]; // variable sized } srfGridMesh_t; -#ifdef USE_VK_PBR - #define VERTEXSIZE 11 -#else - #define VERTEXSIZE 8 -#endif +#define VERTEXSIZE 11 typedef struct { surfaceType_t surfaceType; cplane_t plane; @@ -2086,9 +2070,7 @@ image_t *vk_create_pbr_albedo_srgb( const char *albedoMapName, imgFlags_t flags // // tr_surface.c // -#ifdef USE_VBO_GRID void RB_SurfaceGridEstimate( srfGridMesh_t *cv, int *numVertexes, int *numIndexes ); -#endif /* ==================================================================== @@ -2156,13 +2138,6 @@ typedef struct shaderCommands_s #endif // info extracted from current shader -#ifdef USE_TESS_NEEDS_NORMAL - int needsNormal; -#endif -#ifdef USE_TESS_NEEDS_ST2 - int needsST2; -#endif - int numPasses; shaderStage_t **xstages; diff --git a/renderers/vulkan/tr_main.c b/renderers/vulkan/tr_main.c index 1a1e1dd4a..fb62b25ce 100644 --- a/renderers/vulkan/tr_main.c +++ b/renderers/vulkan/tr_main.c @@ -1082,9 +1082,6 @@ static qboolean SurfIsOffscreen( const drawSurf_t *drawSurf, qboolean *isMirror RB_BeginSurface( shader, fogNum ); #ifdef USE_VBO tess.allowVBO = qfalse; -#endif -#ifdef USE_TESS_NEEDS_NORMAL - tess.needsNormal = qtrue; #endif rb_surfaceTable[ *drawSurf->surface ]( drawSurf->surface ); diff --git a/renderers/vulkan/tr_material_paint.c b/renderers/vulkan/tr_material_paint.c index 2b521f9f4..fe00af59f 100644 --- a/renderers/vulkan/tr_material_paint.c +++ b/renderers/vulkan/tr_material_paint.c @@ -66,11 +66,7 @@ static void MP_WriteFaceColor( srfSurfaceFace_t *face, int vertIndex, const byte if ( !face || vertIndex < 0 || vertIndex >= face->numPoints ) { return; } -#ifdef USE_VK_PBR dst = (byte *)&face->points[vertIndex][10]; -#else - dst = (byte *)&face->points[vertIndex][7]; -#endif dst[0] = rgba[0]; dst[1] = rgba[1]; dst[2] = rgba[2]; @@ -83,11 +79,7 @@ static void MP_ReadFaceColor( const srfSurfaceFace_t *face, int vertIndex, byte rgba[0] = rgba[1] = rgba[2] = rgba[3] = 0; return; } -#ifdef USE_VK_PBR src = (const byte *)&face->points[vertIndex][10]; -#else - src = (const byte *)&face->points[vertIndex][7]; -#endif rgba[0] = src[0]; rgba[1] = src[1]; rgba[2] = src[2]; diff --git a/renderers/vulkan/tr_shade.c b/renderers/vulkan/tr_shade.c index 666d9b0e8..b43f6d02f 100644 --- a/renderers/vulkan/tr_shade.c +++ b/renderers/vulkan/tr_shade.c @@ -395,18 +395,6 @@ void RB_BeginSurface( shader_t *shader, int fogNum ) { tess.dlightUpdateParams = qtrue; } -#ifdef USE_TESS_NEEDS_NORMAL - tess.needsNormal = state->needsNormal || tess.dlightPass || r_shownormals->integer || - ( backEnd.currentEntity == &tr.worldEntity && - ( ( r_shDebugView && r_shDebugView->integer ) || - ( r_shWorldLighting && r_shWorldLighting->integer && r_shLighting && r_shLighting->integer && - !R_ClassicLightingActive() ) ) ); -#endif - -#ifdef USE_TESS_NEEDS_ST2 - tess.needsST2 = state->needsST2; -#endif - tess.numIndexes = 0; tess.numVertexes = 0; tess.sdfUiEdge = -1.0f; diff --git a/renderers/vulkan/tr_surface.c b/renderers/vulkan/tr_surface.c index 84d4fd243..21f0132d8 100644 --- a/renderers/vulkan/tr_surface.c +++ b/renderers/vulkan/tr_surface.c @@ -390,10 +390,8 @@ static void RB_SurfaceTriangles( const srfTriangles_t *srf ) { int i; const srfVert_t *dv; float *xyz, *normal; -#ifdef USE_VK_PBR float *qtangent; float *lightdir; -#endif float *texCoords0; float *texCoords1; uint32_t *color; @@ -427,10 +425,8 @@ static void RB_SurfaceTriangles( const srfTriangles_t *srf ) { dv = srf->verts; xyz = tess.xyz[ tess.numVertexes ]; normal = tess.normal[ tess.numVertexes ]; -#ifdef USE_VK_PBR qtangent = tess.qtangent[ tess.numVertexes ]; lightdir = tess.lightdir[ tess.numVertexes ]; -#endif texCoords0 = tess.texCoords[0][ tess.numVertexes ]; texCoords1 = tess.texCoords[1][ tess.numVertexes ]; color = &tess.vertexColors[ tess.numVertexes ].u32; @@ -440,16 +436,12 @@ static void RB_SurfaceTriangles( const srfTriangles_t *srf ) { xyz[1] = dv->xyz[1]; xyz[2] = dv->xyz[2]; -#ifdef USE_TESS_NEEDS_NORMAL - if ( tess.needsNormal ) -#endif { normal[0] = dv->normal[0]; normal[1] = dv->normal[1]; normal[2] = dv->normal[2]; } -#ifdef USE_VK_PBR if( vk.pbrActive ) { qtangent[0] = dv->qtangent[0]; qtangent[1] = dv->qtangent[1]; @@ -463,14 +455,10 @@ static void RB_SurfaceTriangles( const srfTriangles_t *srf ) { lightdir[3] = 0.0; lightdir += 4; } -#endif texCoords0[0] = dv->st[0]; texCoords0[1] = dv->st[1]; -#ifdef USE_TESS_NEEDS_ST2 - if ( tess.needsST2 ) -#endif { texCoords1[0] = dv->lightmap[0]; texCoords1[1] = dv->lightmap[1]; @@ -1027,9 +1015,6 @@ static void RB_SurfaceFace( const srfSurfaceFace_t *surf ) { numPoints = surf->numPoints; -#ifdef USE_TESS_NEEDS_NORMAL - if ( tess.needsNormal ) -#endif { if ( surf->normals ) { // per-vertex normals for non-coplanar faces @@ -1042,23 +1027,17 @@ static void RB_SurfaceFace( const srfSurfaceFace_t *surf ) { } } -#ifdef USE_VK_PBR if( vk.pbrActive && surf->qtangents ) memcpy( &tess.qtangent[ tess.numVertexes ], surf->qtangents, numPoints * sizeof( vec4_t ) ); if( vk.pbrActive && surf->lightdir ) memcpy( &tess.lightdir[ tess.numVertexes ], surf->lightdir, numPoints * sizeof( vec4_t ) ); -#endif for ( i = 0, v = surf->points[0], ndx = tess.numVertexes; i < numPoints; i++, v += VERTEXSIZE, ndx++ ) { VectorCopy( v, tess.xyz[ndx]); -#ifdef USE_VK_PBR tess.texCoords[0][ndx][0] = v[6]; tess.texCoords[0][ndx][1] = v[7]; -#ifdef USE_TESS_NEEDS_ST2 - if ( tess.needsST2 ) -#endif { tess.texCoords[1][ndx][0] = v[8]; tess.texCoords[1][ndx][1] = v[9]; @@ -1068,22 +1047,6 @@ static void RB_SurfaceFace( const srfSurfaceFace_t *surf ) { Com_Memcpy( &color, &v[10], sizeof( color ) ); Com_Memcpy( &tess.vertexColors[ndx], &color, sizeof( color ) ); } -#else - tess.texCoords[0][ndx][0] = v[3]; - tess.texCoords[0][ndx][1] = v[4]; -#ifdef USE_TESS_NEEDS_ST2 - if ( tess.needsST2 ) -#endif - { - tess.texCoords[1][ndx][0] = v[5]; - tess.texCoords[1][ndx][1] = v[6]; - } - { - uint32_t color; - Com_Memcpy( &color, &v[7], sizeof( color ) ); - Com_Memcpy( &tess.vertexColors[ndx], &color, sizeof( color ) ); - } -#endif tess.vertexDlightBits[ndx] = dlightBits; } @@ -1126,7 +1089,6 @@ static float LodErrorForVolume( vec3_t local, float radius ) { return r_lodCurveError->value / d; } -#ifdef USE_VBO_GRID void RB_SurfaceGridEstimate( srfGridMesh_t *cv, int *numVertexes, int *numIndexes ) { int lodWidth, lodHeight; @@ -1190,7 +1152,6 @@ void RB_SurfaceGridEstimate( srfGridMesh_t *cv, int *numVertexes, int *numIndexe tess.numVertexes = 0; tess.numIndexes = 0; } -#endif // USE_VBO_GRID /* ============= @@ -1205,10 +1166,8 @@ static void RB_SurfaceGrid( srfGridMesh_t *cv ) { float *texCoords0; float *texCoords1; float *normal; -#ifdef USE_VK_PBR float *qtangent; float *lightdir; -#endif uint32_t *color; srfVert_t *dv; int rows, irows, vrows; @@ -1221,30 +1180,22 @@ static void RB_SurfaceGrid( srfGridMesh_t *cv ) { int dlightBits; int *vDlightBits; -#ifdef USE_VBO_GRID if ( tess.allowVBO && cv->vboItemIndex && !cv->dlightBits && RB_QueueSurfaceVBO( cv->vboItemIndex, SF_GRID ) ) { return; } VBO_Flush(); -#else -#ifdef USE_VBO - VBO_Flush(); -#endif -#endif dlightBits = cv->dlightBits; tess.dlightBits |= dlightBits; -#ifdef USE_VBO_GRID tess.surfType = SF_GRID; // determine the allowable discrepance if ( cv->vboItemIndex && ( tr.mapLoading || ( tess.dlightPass && tess.shader->isStaticShader ) ) ) lodError = r_lodCurveError->value; // fixed quality for VBO else -#endif // USE_VBO_GRID lodError = LodErrorForVolume( cv->lodOrigin, cv->lodRadius ); // determine which rows and columns of the subdivision @@ -1285,13 +1236,11 @@ static void RB_SurfaceGrid( srfGridMesh_t *cv ) { if ( vrows < 2 || irows < 1 ) { if ( tr.mapLoading ) { // estimate and flush -#ifdef USE_VBO_GRID if ( cv->vboItemIndex ) { VBO_PushData( cv->vboItemIndex, &tess ); tess.numIndexes = 0; tess.numVertexes = 0; } else -#endif // USE_VBO_GRID ri.Error( ERR_DROP, "Unexpected grid flush during map loading!\n" ); } else { RB_EndSurface(); @@ -1314,10 +1263,8 @@ static void RB_SurfaceGrid( srfGridMesh_t *cv ) { xyz = tess.xyz[numVertexes]; normal = tess.normal[numVertexes]; -#ifdef USE_VK_PBR qtangent = tess.qtangent[numVertexes]; lightdir = tess.lightdir[numVertexes]; -#endif texCoords0 = tess.texCoords[0][numVertexes]; texCoords1 = tess.texCoords[1][numVertexes]; color = &tess.vertexColors[numVertexes].u32; @@ -1332,17 +1279,11 @@ static void RB_SurfaceGrid( srfGridMesh_t *cv ) { xyz[2] = dv->xyz[2]; texCoords0[0] = dv->st[0]; texCoords0[1] = dv->st[1]; -#ifdef USE_TESS_NEEDS_ST2 - if ( tess.needsST2 ) -#endif { texCoords1[0] = dv->lightmap[0]; texCoords1[1] = dv->lightmap[1]; texCoords1 += 2; } -#ifdef USE_TESS_NEEDS_NORMAL - if ( tess.needsNormal ) -#endif { normal[0] = dv->normal[0]; normal[1] = dv->normal[1]; @@ -1350,7 +1291,6 @@ static void RB_SurfaceGrid( srfGridMesh_t *cv ) { normal += 4; } -#ifdef USE_VK_PBR if( vk.pbrActive ) { qtangent[0] = dv->qtangent[0]; qtangent[1] = dv->qtangent[1]; @@ -1364,7 +1304,6 @@ static void RB_SurfaceGrid( srfGridMesh_t *cv ) { lightdir[3] = 0.0; lightdir += 4; } -#endif *color = dv->color.u32; *vDlightBits++ = dlightBits; @@ -1560,7 +1499,6 @@ static void RB_SurfaceSkip( void *surf ) { (void)surf; } -#ifdef USE_VK_PBR /* ================ RB_GLTFRecomputeQtangentsForTessRange @@ -1656,8 +1594,7 @@ static void RB_GLTFRecomputeQtangentsForTessRange( int vertBase, int numVerts, i ri.Hunk_FreeTempMemory( btAcc ); ri.Hunk_FreeTempMemory( tanAcc ); -} -#endif /* USE_VK_PBR */ +} /* USE_VK_PBR */ /* ============= @@ -1807,7 +1744,6 @@ void RB_GLTFSurface( const surfaceType_t *surface ) { } } -#ifdef USE_VK_PBR if ( r_gltfGpu && r_gltfGpu->integer && vk.cmd && vk.pbrActive && tess.shader && tess.shader->hasPBR && surf->vbo_vertex != TR_GLTF_VBO_HANDLE_INVALID && surf->vbo_index != TR_GLTF_VBO_HANDLE_INVALID && ( haveJoints || useMorph ) && @@ -1965,8 +1901,7 @@ void RB_GLTFSurface( const surfaceType_t *surface ) { } tess.gltfUseGpuPipeline = qfalse; tess.gltfGpuMorphActive = qfalse; - tess.gltfGpuMorphCount = 0; -#endif /* USE_VK_PBR */ + tess.gltfGpuMorphCount = 0; /* USE_VK_PBR */ if ( surf->vbo_vertex != TR_GLTF_VBO_HANDLE_INVALID && surf->vbo_index != TR_GLTF_VBO_HANDLE_INVALID ) { /* VBO path: set gltfDrawSurface for vk_bind_geometry to use */ @@ -2082,11 +2017,9 @@ void RB_GLTFSurface( const surfaceType_t *surface ) { tess.indexes[tess.numIndexes + j] = (glIndex_t)( base + surf->indices[j] ); } tess.numIndexes += surf->numIndices; -#ifdef USE_VK_PBR if ( vk.pbrActive && tess.shader && tess.shader->hasPBR ) { RB_GLTFRecomputeQtangentsForTessRange( base, surf->numVertices, idxBase, surf->numIndices ); } -#endif } } diff --git a/renderers/vulkan/vk.h b/renderers/vulkan/vk.h index 834cf0fd5..707fbb467 100644 --- a/renderers/vulkan/vk.h +++ b/renderers/vulkan/vk.h @@ -82,27 +82,23 @@ typedef enum { #define VK_DESC_TEXTURE2 3 #define VK_DESC_FOG_COLLAPSE 4 -#ifdef USE_VK_PBR - typedef float mat4_t[16]; - #define VK_DESC_PBR_BRDFLUT 5 - #define VK_DESC_PBR_NORMAL 6 - #define VK_DESC_PBR_PHYSICAL 7 - #define VK_DESC_PBR_CUBEMAP 8 - #define VK_DESC_PBR_DELUXE 9 - #define VK_DESC_PBR_IRRADIANCE 10 - #define VK_DESC_PBR_EMISSIVE 11 - #define VK_DESC_PBR_CLEARCOAT 12 - #define VK_DESC_PBR_SHEEN 13 - #define VK_DESC_PBR_ANISOTROPY 14 - #define VK_DESC_PBR_TRANSMISSION 15 - #define VK_DESC_PBR_SUBSURFACE 16 - #define VK_DESC_PBR_DETAIL 17 - #define VK_DESC_FORWARD_PLUS 18 /* SSBO set: light + tile lists (PBR fragment) */ - #define VK_DESC_PBR_BLEND_LAYERS 19 /* array samplers: albedo/normal/orm × 8 */ - #define VK_DESC_COUNT 20 -#else - #define VK_DESC_COUNT 5 -#endif +typedef float mat4_t[16]; +#define VK_DESC_PBR_BRDFLUT 5 +#define VK_DESC_PBR_NORMAL 6 +#define VK_DESC_PBR_PHYSICAL 7 +#define VK_DESC_PBR_CUBEMAP 8 +#define VK_DESC_PBR_DELUXE 9 +#define VK_DESC_PBR_IRRADIANCE 10 +#define VK_DESC_PBR_EMISSIVE 11 +#define VK_DESC_PBR_CLEARCOAT 12 +#define VK_DESC_PBR_SHEEN 13 +#define VK_DESC_PBR_ANISOTROPY 14 +#define VK_DESC_PBR_TRANSMISSION 15 +#define VK_DESC_PBR_SUBSURFACE 16 +#define VK_DESC_PBR_DETAIL 17 +#define VK_DESC_FORWARD_PLUS 18 /* SSBO set: light + tile lists (PBR fragment) */ +#define VK_DESC_PBR_BLEND_LAYERS 19 /* array samplers: albedo/normal/orm × 8 */ +#define VK_DESC_COUNT 20 #include "vk_procs.h" @@ -575,14 +571,9 @@ typedef struct vk_tess_s { uint32_t iqm_skin_offset; uint32_t iqm_morph_offset; uint32_t gltf_topo_offset; -#ifdef USE_VK_PBR uint32_t camera_ubo_offset; VkDeviceSize buf_offset[10]; VkDeviceSize vbo_offset[10]; -#else - VkDeviceSize buf_offset[8]; - VkDeviceSize vbo_offset[8]; -#endif VkBuffer curr_index_buffer; uint32_t curr_index_offset; @@ -1384,17 +1375,11 @@ typedef struct { // struct { struct { -#ifdef USE_VK_PBR VkShaderModule gen[2][3][2][2][2]; // pbr[0,1], tx[0,1,2], cl[0,1] env0[0,1] fog[0,1] /* +USE_GLTF_GPU_SKIN; last dim: 0=bind T, 1=Gram–Schmidt, 2=topology+MikkT-inspired average */ VkShaderModule gen_gltf_gpu[2][3][2][2][2][3]; VkShaderModule ident1[2][2][2][2]; // pbr[0,1], tx[0,1], env0[0,1] fog[0,1] VkShaderModule fixed[2][2][2][2]; // pbr[0,1], tx[0,1], env0[0,1] fog[0,1] -#else - VkShaderModule gen[3][2][2][2]; // tx[0,1,2], cl[0,1] env0[0,1] fog[0,1] - VkShaderModule ident1[2][2][2]; // tx[0,1], env0[0,1] fog[0,1] - VkShaderModule fixed[2][2][2]; // tx[0,1], env0[0,1] fog[0,1] -#endif VkShaderModule light[2]; // fog[0,1] } vert; struct { @@ -1405,30 +1390,16 @@ typedef struct { VkShaderModule ui_vector_glyphlet_frag; VkShaderModule ui_subpixel_text; VkShaderModule flowmap[2]; // fog[0,1] - water flowmap -#ifdef USE_VK_PBR VkShaderModule gen[2][3][2][2]; // pbr[0,1], tx[0,1,2] cl[0,1] fog[0,1] VkShaderModule ident1[2][2][2]; // pbr[0,1], tx[0,1], fog[0,1] VkShaderModule fixed[2][2][2]; // pbr[0,1], tx[0,1], fog[0,1] VkShaderModule ent[2][1][2]; // pbr[0,1], tx[0], fog[0,1] -#else - VkShaderModule gen[3][2][2]; // tx[0,1,2] cl[0,1] fog[0,1] - VkShaderModule ident1[2][2]; // tx[0,1], fog[0,1] - VkShaderModule fixed[2][2]; // tx[0,1], fog[0,1] - VkShaderModule ent[1][2]; // tx[0], fog[0,1] -#endif VkShaderModule light[2][2]; // linear[0,1] fog[0,1] /* r_hdr 3 (64-bit) variants; used when color_format is RGBA64F */ -#ifdef USE_VK_PBR VkShaderModule gen_hdr64[2][3][2][2]; VkShaderModule ident1_hdr64[2][2][2]; VkShaderModule fixed_hdr64[2][2][2]; VkShaderModule ent_hdr64[2][1][2]; -#else - VkShaderModule gen_hdr64[3][2][2]; - VkShaderModule ident1_hdr64[2][2]; - VkShaderModule fixed_hdr64[2][2]; - VkShaderModule ent_hdr64[1][2]; -#endif VkShaderModule light_hdr64[2][2]; VkShaderModule flowmap_hdr64[2]; } frag; @@ -1775,9 +1746,7 @@ typedef struct { qboolean smaaActive; qboolean fxaaActive; qboolean lensFlareActive; -#ifdef USE_VK_PBR qboolean pbrActive; -#endif #ifdef VK_CUBEMAP qboolean cubemapActive; #endif diff --git a/renderers/vulkan/vk_attachments.c b/renderers/vulkan/vk_attachments.c index 2423df308..730f3f374 100644 --- a/renderers/vulkan/vk_attachments.c +++ b/renderers/vulkan/vk_attachments.c @@ -177,10 +177,7 @@ static void vk_alloc_attachments( void ) } -static void vk_add_attachment_desc( VkImage desc, VkImageView *image_view, VkImageUsageFlags usage, VkMemoryRequirements *reqs, VkFormat image_format, VkImageAspectFlags aspect_flags, VkImageLayout image_layout -#ifdef USE_VK_PBR - , VkImageViewType view_type ) -#endif +static void vk_add_attachment_desc( VkImage desc, VkImageView *image_view, VkImageUsageFlags usage, VkMemoryRequirements *reqs, VkFormat image_format, VkImageAspectFlags aspect_flags, VkImageLayout image_layout, VkImageViewType view_type ) { if ( num_attachments >= ARRAY_LEN( attachments ) ) { ri.Error( ERR_FATAL, "Attachments array overflow" ); @@ -261,15 +258,11 @@ static void create_color_attachment( vk_get_image_memory_erquirements( *image, &memory_requirements ); -#ifdef USE_VK_PBR VkImageViewType view_type = VK_IMAGE_VIEW_TYPE_2D; if ( flags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT ) view_type = VK_IMAGE_VIEW_TYPE_CUBE; vk_add_attachment_desc( *image, image_view, usage, &memory_requirements, format, VK_IMAGE_ASPECT_COLOR_BIT, image_layout, view_type ); -#else - vk_add_attachment_desc( *image, image_view, usage, &memory_requirements, format, VK_IMAGE_ASPECT_COLOR_BIT, image_layout ); -#endif } @@ -313,11 +306,7 @@ static void create_depth_attachment( uint32_t width, uint32_t height, VkSampleCo vk_get_image_memory_erquirements( *image, &memory_requirements ); -#ifdef USE_VK_PBR vk_add_attachment_desc( *image, image_view, create_desc.usage, &memory_requirements, vk.depth_format, image_aspect_flags, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_VIEW_TYPE_2D ); -#else - vk_add_attachment_desc( *image, image_view, create_desc.usage, &memory_requirements, vk.depth_format, image_aspect_flags, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL ); -#endif } static void vk_create_fullres_color_attachment( diff --git a/renderers/vulkan/vk_create_pipeline.c b/renderers/vulkan/vk_create_pipeline.c index 980886d16..7d458c2aa 100644 --- a/renderers/vulkan/vk_create_pipeline.c +++ b/renderers/vulkan/vk_create_pipeline.c @@ -17,13 +17,8 @@ static inline qboolean vk_hdr64_active( void ) return vk.color_format == VK_FORMAT_R64G64B64A64_SFLOAT; } -#ifdef USE_VK_PBR static VkVertexInputBindingDescription bindings[10]; static VkVertexInputAttributeDescription attribs[10]; -#else -static VkVertexInputBindingDescription bindings[8]; -static VkVertexInputAttributeDescription attribs[8]; -#endif static uint32_t num_binds; static uint32_t num_attrs; @@ -45,7 +40,6 @@ static void push_attr( uint32_t location, uint32_t binding, VkFormat format ) } -#ifdef USE_VK_PBR static VkShaderModule *vk_select_pbr_gen_vert( const Vk_Pipeline_Def *def, int use_pbr, int tx, int cl, int env ) { const int fog = def->fog_stage ? 1 : 0; @@ -55,7 +49,6 @@ static VkShaderModule *vk_select_pbr_gen_vert( const Vk_Pipeline_Def *def, int u } return &vk.modules.vert.gen[use_pbr][tx][cl][env][fog]; } -#endif VkPipeline vk_create_pipeline( const Vk_Pipeline_Def *def, renderPass_t renderPassIndex, uint32_t def_index ) { (void)def_index; // unused parameter @@ -65,16 +58,10 @@ VkPipeline vk_create_pipeline( const Vk_Pipeline_Def *def, renderPass_t renderPa //VkSpecializationInfo vert_spec_info; struct Vk_Pipeline_FragSpecData frag_spec_data; -#ifdef USE_VK_PBR /* ADD_FRAG_SPEC: 11 base (0..10) + 33 PBR (constant_id 11..43) = 44 entries. */ VkSpecializationMapEntry spec_entries[48]; _Static_assert( sizeof( spec_entries ) / sizeof( spec_entries[0] ) >= 44u, "vk_create_pipeline: spec_entries[] too small for PBR fragment specialization map" ); -#else - VkSpecializationMapEntry spec_entries[12]; - _Static_assert( sizeof( spec_entries ) / sizeof( spec_entries[0] ) >= 11u, - "vk_create_pipeline: spec_entries[] too small for non-PBR fragment specialization map" ); -#endif VkSpecializationInfo frag_spec_info; VkPipelineVertexInputStateCreateInfo vertex_input_state; @@ -100,7 +87,6 @@ VkPipeline vk_create_pipeline( const Vk_Pipeline_Def *def, renderPass_t renderPa unsigned int atest_bits; unsigned int state_bits = def->state_bits; -#ifdef USE_VK_PBR const int use_pbr = def->vk_pbr_flags ? 1 : 0; switch ( def->shader_type ) { @@ -305,205 +291,6 @@ VkPipeline vk_create_pipeline( const Vk_Pipeline_Def *def, renderPass_t renderPa ri.Error(ERR_DROP, "create_pipeline: unknown shader type %i\n", def->shader_type); return 0; } -#else - switch ( def->shader_type ) { - - case TYPE_SIGNLE_TEXTURE_LIGHTING: - vs_module = &vk.modules.vert.light[0]; - fs_module = &vk.modules.frag.light[0][0]; - break; - - case TYPE_SIGNLE_TEXTURE_LIGHTING_LINEAR: - vs_module = &vk.modules.vert.light[0]; - fs_module = &vk.modules.frag.light[1][0]; - break; - - case TYPE_SIGNLE_TEXTURE_DF: - state_bits |= GLS_DEPTHMASK_TRUE; - vs_module = &vk.modules.vert.ident1[0][0][0]; - fs_module = &vk.modules.frag.gen0_df; - break; - - case TYPE_SIGNLE_TEXTURE_UI_SDF: - vs_module = &vk.modules.vert.gen[0][0][0][0]; - fs_module = &vk.modules.frag.ui_sdf_text; - break; - - case TYPE_SIGNLE_TEXTURE_UI_VECTOR: - vs_module = &vk.modules.vert.gen[0][0][0][0]; - fs_module = &vk.modules.frag.ui_vector_text; - break; - - case TYPE_SIGNLE_TEXTURE_FIXED_COLOR: - vs_module = &vk.modules.vert.fixed[0][0][0]; - fs_module = &vk.modules.frag.fixed[0][0]; - break; - - case TYPE_SIGNLE_TEXTURE_FIXED_COLOR_ENV: - vs_module = &vk.modules.vert.fixed[0][1][0]; - fs_module = &vk.modules.frag.fixed[0][0]; - break; - - case TYPE_SIGNLE_TEXTURE_ENT_COLOR: - vs_module = &vk.modules.vert.fixed[0][0][0]; - fs_module = &vk.modules.frag.ent[0][0]; - break; - - case TYPE_SIGNLE_TEXTURE_ENT_COLOR_ENV: - vs_module = &vk.modules.vert.fixed[0][1][0]; - fs_module = &vk.modules.frag.ent[0][0]; - break; - - case TYPE_SIGNLE_TEXTURE: - if ( def->hasFlowmap ) { - const int fog = def->fog_stage ? 1 : 0; - vs_module = &vk.modules.vert.gen[0][0][0][fog]; - fs_module = &vk.modules.frag.flowmap[fog]; - } else { - vs_module = &vk.modules.vert.gen[0][0][0][0]; - fs_module = &vk.modules.frag.gen[0][0][0]; - } - break; - - case TYPE_SIGNLE_TEXTURE_ENV: - vs_module = &vk.modules.vert.gen[0][0][1][0]; - fs_module = &vk.modules.frag.gen[0][0][0]; - break; - - case TYPE_SIGNLE_TEXTURE_IDENTITY: - vs_module = &vk.modules.vert.ident1[0][0][0]; - fs_module = &vk.modules.frag.ident1[0][0]; - break; - - case TYPE_SIGNLE_TEXTURE_IDENTITY_ENV: - vs_module = &vk.modules.vert.ident1[0][1][0]; - fs_module = &vk.modules.frag.ident1[0][0]; - break; - - case TYPE_MULTI_TEXTURE_ADD2_IDENTITY: - case TYPE_MULTI_TEXTURE_MUL2_IDENTITY: - vs_module = &vk.modules.vert.ident1[1][0][0]; - fs_module = &vk.modules.frag.ident1[1][0]; - break; - - case TYPE_MULTI_TEXTURE_ADD2_IDENTITY_ENV: - case TYPE_MULTI_TEXTURE_MUL2_IDENTITY_ENV: - vs_module = &vk.modules.vert.ident1[1][1][0]; - fs_module = &vk.modules.frag.ident1[1][0]; - break; - - case TYPE_MULTI_TEXTURE_ADD2_FIXED_COLOR: - case TYPE_MULTI_TEXTURE_MUL2_FIXED_COLOR: - vs_module = &vk.modules.vert.fixed[1][0][0]; - fs_module = &vk.modules.frag.fixed[1][0]; - break; - - case TYPE_MULTI_TEXTURE_ADD2_FIXED_COLOR_ENV: - case TYPE_MULTI_TEXTURE_MUL2_FIXED_COLOR_ENV: - vs_module = &vk.modules.vert.fixed[1][1][0]; - fs_module = &vk.modules.frag.fixed[1][0]; - break; - - case TYPE_MULTI_TEXTURE_MUL2: - case TYPE_MULTI_TEXTURE_ADD2_1_1: - case TYPE_MULTI_TEXTURE_ADD2: - vs_module = &vk.modules.vert.gen[1][0][0][0]; - fs_module = &vk.modules.frag.gen[1][0][0]; - break; - - case TYPE_MULTI_TEXTURE_MUL2_ENV: - case TYPE_MULTI_TEXTURE_ADD2_1_1_ENV: - case TYPE_MULTI_TEXTURE_ADD2_ENV: - vs_module = &vk.modules.vert.gen[1][0][1][0]; - fs_module = &vk.modules.frag.gen[1][0][0]; - break; - - case TYPE_MULTI_TEXTURE_MUL3: - case TYPE_MULTI_TEXTURE_ADD3_1_1: - case TYPE_MULTI_TEXTURE_ADD3: - vs_module = &vk.modules.vert.gen[2][0][0][0]; - fs_module = &vk.modules.frag.gen[2][0][0]; - break; - - case TYPE_MULTI_TEXTURE_MUL3_ENV: - case TYPE_MULTI_TEXTURE_ADD3_1_1_ENV: - case TYPE_MULTI_TEXTURE_ADD3_ENV: - vs_module = &vk.modules.vert.gen[2][0][1][0]; - fs_module = &vk.modules.frag.gen[2][0][0]; - break; - - case TYPE_BLEND2_ADD: - case TYPE_BLEND2_MUL: - case TYPE_BLEND2_ALPHA: - case TYPE_BLEND2_ONE_MINUS_ALPHA: - case TYPE_BLEND2_MIX_ALPHA: - case TYPE_BLEND2_MIX_ONE_MINUS_ALPHA: - case TYPE_BLEND2_DST_COLOR_SRC_ALPHA: - vs_module = &vk.modules.vert.gen[1][1][0][0]; - fs_module = &vk.modules.frag.gen[1][1][0]; - break; - - case TYPE_BLEND2_ADD_ENV: - case TYPE_BLEND2_MUL_ENV: - case TYPE_BLEND2_ALPHA_ENV: - case TYPE_BLEND2_ONE_MINUS_ALPHA_ENV: - case TYPE_BLEND2_MIX_ALPHA_ENV: - case TYPE_BLEND2_MIX_ONE_MINUS_ALPHA_ENV: - case TYPE_BLEND2_DST_COLOR_SRC_ALPHA_ENV: - vs_module = &vk.modules.vert.gen[1][1][1][0]; - fs_module = &vk.modules.frag.gen[1][1][0]; - break; - - case TYPE_BLEND3_ADD: - case TYPE_BLEND3_MUL: - case TYPE_BLEND3_ALPHA: - case TYPE_BLEND3_ONE_MINUS_ALPHA: - case TYPE_BLEND3_MIX_ALPHA: - case TYPE_BLEND3_MIX_ONE_MINUS_ALPHA: - case TYPE_BLEND3_DST_COLOR_SRC_ALPHA: - vs_module = &vk.modules.vert.gen[2][1][0][0]; - fs_module = &vk.modules.frag.gen[2][1][0]; - break; - - case TYPE_BLEND3_ADD_ENV: - case TYPE_BLEND3_MUL_ENV: - case TYPE_BLEND3_ALPHA_ENV: - case TYPE_BLEND3_ONE_MINUS_ALPHA_ENV: - case TYPE_BLEND3_MIX_ALPHA_ENV: - case TYPE_BLEND3_MIX_ONE_MINUS_ALPHA_ENV: - case TYPE_BLEND3_DST_COLOR_SRC_ALPHA_ENV: - vs_module = &vk.modules.vert.gen[2][1][1][0]; - fs_module = &vk.modules.frag.gen[2][1][0]; - break; - - case TYPE_COLOR_BLACK: - case TYPE_COLOR_WHITE: - case TYPE_COLOR_GREEN: - case TYPE_COLOR_RED: - vs_module = &vk.modules.color_vs; - fs_module = &vk.modules.color_fs; - break; - - case TYPE_FOG_ONLY: - vs_module = &vk.modules.fog_vs; - fs_module = &vk.modules.fog_fs; - break; - - case TYPE_DOT: - vs_module = &vk.modules.dot_vs; - fs_module = &vk.modules.dot_fs; - break; - - case TYPE_OCCLUSION_BBOX: - vs_module = &vk.modules.color_vs; - fs_module = &vk.modules.color_fs; - break; - - default: - ri.Error(ERR_DROP, "create_pipeline: unknown shader type %i\n", def->shader_type); - return 0; - } -#endif if ( def->fog_stage ) { @@ -710,7 +497,6 @@ VkPipeline vk_create_pipeline( const Vk_Pipeline_Def *def, renderPass_t renderPa ADD_FRAG_SPEC( 9, identity_alpha ); ADD_FRAG_SPEC( 10, acff ); -#ifdef USE_VK_PBR ADD_FRAG_SPEC( 11, specularScale_x ); ADD_FRAG_SPEC( 12, specularScale_y ); ADD_FRAG_SPEC( 13, specularScale_z ); @@ -870,7 +656,6 @@ VkPipeline vk_create_pipeline( const Vk_Pipeline_Def *def, renderPass_t renderPa frag_spec_data.deluxe_mapping = 0; } } -#endif frag_spec_data.lightmap_scale = ( r_hdr_lightmap_scale && r_hdr_lightmap_scale->value > 0.0f ) ? r_hdr_lightmap_scale->value : 1.0f; @@ -1161,7 +946,6 @@ VkPipeline vk_create_pipeline( const Vk_Pipeline_Def *def, renderPass_t renderPa break; } - #ifdef USE_VK_PBR if( def->vk_pbr_flags ){ if ( !has_normal ) @@ -1183,7 +967,6 @@ VkPipeline vk_create_pipeline( const Vk_Pipeline_Def *def, renderPass_t renderPa push_bind( 9, sizeof(vec4_t) ); // lightdir push_attr( 9, 9, VK_FORMAT_R32G32B32A32_SFLOAT ); } -#endif vertex_input_state.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO; vertex_input_state.pNext = NULL; @@ -1454,7 +1237,6 @@ VkPipeline vk_create_pipeline( const Vk_Pipeline_Def *def, renderPass_t renderPa if ( r_vk_pipeline_debug && r_vk_pipeline_debug->integer ) { ri.Printf( PRINT_DEVELOPER, "vk pipeline def#%u render_pass=%u shader=%u fog=%d state=0x%x allow_discard=%d discard_mode=%d\n", def_index, renderPassIndex, def->shader_type, def->fog_stage, def->state_bits, def->allow_discard, frag_spec_data.discard_mode ); -#ifdef USE_VK_PBR if ( def->vk_pbr_flags ) { ri.Printf( PRINT_DEVELOPER, "vk pipeline PBR spec consts [19=%d 20=%d 21=%d 22=%d 23=%d 24=%d 25=%d 26=%d 27=%d 28=%d 29=%d]\n", frag_spec_data.normal_texture_set, @@ -1469,7 +1251,6 @@ VkPipeline vk_create_pipeline( const Vk_Pipeline_Def *def, renderPass_t renderPa frag_spec_data.transmission_texture_set, frag_spec_data.subsurface_texture_set ); } -#endif } blend_state.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; diff --git a/renderers/vulkan/vk_draw_state.c b/renderers/vulkan/vk_draw_state.c index 934dda551..3754fff92 100644 --- a/renderers/vulkan/vk_draw_state.c +++ b/renderers/vulkan/vk_draw_state.c @@ -9,15 +9,9 @@ Split from vk.c. #include "tr_local.h" -#ifdef USE_VK_PBR #include "vk_forward_plus.h" -#endif -#ifdef USE_VK_PBR static VkBuffer shade_bufs[10]; -#else -static VkBuffer shade_bufs[8]; -#endif static int bind_base; static int bind_count; @@ -192,10 +186,8 @@ void vk_bind_geometry( uint32_t flags ) shade_bufs[0] = shade_bufs[1] = shade_bufs[2] = shade_bufs[3] = shade_bufs[4] = shade_bufs[5] = shade_bufs[6] = shade_bufs[7] = vk.vbo.stream_vertex_buffer; -#ifdef USE_VK_PBR shade_bufs[8] = vk.vbo.stream_vertex_buffer; shade_bufs[9] = vk.vbo.stream_vertex_buffer; -#endif if ( flags & TESS_XYZ ) { vk.cmd->vbo_offset[0] = item->vboOffset; @@ -229,7 +221,6 @@ void vk_bind_geometry( uint32_t flags ) vk.cmd->vbo_offset[7] = stage->rgb_offset[2]; vk_bind_index_attr( 7 ); } -#ifdef USE_VK_PBR if ( flags & TESS_PBR ) { vk.cmd->vbo_offset[5] = item->normalOffset; vk_bind_index_attr( 5 ); @@ -238,17 +229,14 @@ void vk_bind_geometry( uint32_t flags ) vk.cmd->vbo_offset[9] = item->lightdirOffset; vk_bind_index_attr( 9 ); } -#endif qvkCmdBindVertexBuffers( vk.cmd->command_buffer, bind_base, bind_count, shade_bufs, vk.cmd->vbo_offset + bind_base ); return; } shade_bufs[0] = shade_bufs[1] = shade_bufs[2] = shade_bufs[3] = shade_bufs[4] = shade_bufs[5] = shade_bufs[6] = shade_bufs[7] = vk.vbo.vertex_buffer; -#ifdef USE_VK_PBR shade_bufs[8] = vk.vbo.vertex_buffer; shade_bufs[9] = vk.vbo.vertex_buffer; -#endif if ( flags & TESS_XYZ ) { // 0 vk.cmd->vbo_offset[0] = tess.shader->vboOffset + 0; @@ -289,7 +277,6 @@ void vk_bind_geometry( uint32_t flags ) vk.cmd->vbo_offset[7] = tess.shader->stages[ tess.vboStage ]->rgb_offset[2]; vk_bind_index_attr( 7 ); } -#ifdef USE_VK_PBR if (flags & TESS_PBR) { vk.cmd->vbo_offset[5] = tess.shader->normalOffset; vk_bind_index_attr( 5 ); @@ -300,7 +287,6 @@ void vk_bind_geometry( uint32_t flags ) vk.cmd->vbo_offset[9] = tess.shader->lightdirOffset; vk_bind_index_attr(9); } -#endif qvkCmdBindVertexBuffers( vk.cmd->command_buffer, bind_base, bind_count, shade_bufs, vk.cmd->vbo_offset + bind_base ); @@ -308,10 +294,8 @@ void vk_bind_geometry( uint32_t flags ) #endif // USE_VBO { shade_bufs[0] = shade_bufs[1] = shade_bufs[2] = shade_bufs[3] = shade_bufs[4] = shade_bufs[5] = shade_bufs[6] = shade_bufs[7] = vk.cmd->vertex_buffer; -#ifdef USE_VK_PBR shade_bufs[8] = vk.cmd->vertex_buffer; shade_bufs[9] = vk.cmd->vertex_buffer; -#endif if ( flags & TESS_XYZ ) { vk_bind_attr(0, sizeof(tess.xyz[0]), &tess.xyz[0]); @@ -344,13 +328,11 @@ void vk_bind_geometry( uint32_t flags ) if ( flags & TESS_RGBA2 ) { vk_bind_attr(7, sizeof( color4ub_t ), tess.svars.colors[2][0].rgba); } -#ifdef USE_VK_PBR if (flags & TESS_PBR) { vk_bind_attr(5, sizeof(tess.normal[0]), tess.normal); vk_bind_attr(8, sizeof(tess.qtangent[0]), tess.qtangent); vk_bind_attr(9, sizeof(tess.lightdir[0]), tess.lightdir); } -#endif qvkCmdBindVertexBuffers( vk.cmd->command_buffer, bind_base, bind_count, shade_bufs, vk.cmd->buf_offset + bind_base ); } @@ -449,14 +431,12 @@ void vk_bind_descriptor_sets( void ) count = end - start + 1; -#ifdef USE_VK_PBR if ( vk.maxBoundDescriptorSets >= VK_DESC_COUNT ) { VkDescriptorSet fp_set = vk_forward_plus_get_graphics_descriptor_set(); if ( fp_set != VK_NULL_HANDLE ) { vk.cmd->descriptor_set.current[VK_DESC_FORWARD_PLUS] = fp_set; } } -#endif // fill NULL descriptor gaps if ( tr.whiteImage ) { @@ -468,7 +448,6 @@ void vk_bind_descriptor_sets( void ) } } -#ifdef USE_VK_PBR if ( r_vk_pipeline_debug && r_vk_pipeline_debug->integer && vk.cmd ) { struct { int index; @@ -501,7 +480,6 @@ void vk_bind_descriptor_sets( void ) source ); } } -#endif if ( backEnd.oitAccumPass && vk.pipeline_layout_oit_accum != VK_NULL_HANDLE ) { /* OIT accum set 0 = tex0; set 1 = opaque depth for MSAA/manual rejection. */ diff --git a/renderers/vulkan/vk_forward_plus.c b/renderers/vulkan/vk_forward_plus.c index 1b27e7a31..e6564d765 100644 --- a/renderers/vulkan/vk_forward_plus.c +++ b/renderers/vulkan/vk_forward_plus.c @@ -1020,11 +1020,7 @@ void vk_forward_plus_upload_refdef( void ) VkDescriptorSet vk_forward_plus_get_graphics_descriptor_set( void ) { -#ifdef USE_VK_PBR return vk_fp_graphics_descriptor; -#else - return VK_NULL_HANDLE; -#endif } static void vk_forward_plus_dispatch_tile_cull_internal( qboolean use_depth_cull ) diff --git a/renderers/vulkan/vk_pbr_ibl_validate.c b/renderers/vulkan/vk_pbr_ibl_validate.c index 3d23ab6b2..77aaa6b86 100644 --- a/renderers/vulkan/vk_pbr_ibl_validate.c +++ b/renderers/vulkan/vk_pbr_ibl_validate.c @@ -12,7 +12,6 @@ Called from tr_init.c after pipeline creation. void vk_validate_pbr_ibl_resources( void ) { -#ifdef USE_VK_PBR if ( !vk.pbrActive ) { return; } @@ -43,5 +42,4 @@ void vk_validate_pbr_ibl_resources( void ) ri.Printf( PRINT_WARNING, "PBR IBL: empty cubemap fallback is missing\n" ); } } -#endif } diff --git a/renderers/vulkan/vk_shader_modules.c b/renderers/vulkan/vk_shader_modules.c index f4665baa6..f4bbd200f 100644 --- a/renderers/vulkan/vk_shader_modules.c +++ b/renderers/vulkan/vk_shader_modules.c @@ -37,9 +37,6 @@ static VkShaderModule vk_shader_module_from_spirv( const uint8_t *bytes, int cou void vk_create_shader_modules( void ) { int i, j, k; -#ifndef USE_VK_PBR - int l; -#endif vk.modules.frag.gen0_df = SHADER_MODULE( frag_tx0_df ); SET_OBJECT_NAME( vk.modules.frag.gen0_df, "single-texture df fragment module", VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT ); @@ -73,126 +70,7 @@ void vk_create_shader_modules( void ) } } -#ifdef USE_VK_PBR vk_bind_generated_shaders(); -#else - vk.modules.vert.gen[0][0][0][0] = SHADER_MODULE( vert_tx0 ); - vk.modules.vert.gen[0][0][0][1] = SHADER_MODULE( vert_tx0_fog ); - vk.modules.vert.gen[0][0][1][0] = SHADER_MODULE( vert_tx0_env ); - vk.modules.vert.gen[0][0][1][1] = SHADER_MODULE( vert_tx0_env_fog ); - - vk.modules.vert.gen[1][0][0][0] = SHADER_MODULE( vert_tx1 ); - vk.modules.vert.gen[1][0][0][1] = SHADER_MODULE( vert_tx1_fog ); - vk.modules.vert.gen[1][0][1][0] = SHADER_MODULE( vert_tx1_env ); - vk.modules.vert.gen[1][0][1][1] = SHADER_MODULE( vert_tx1_env_fog ); - - vk.modules.vert.gen[1][1][0][0] = SHADER_MODULE( vert_tx1_cl ); - vk.modules.vert.gen[1][1][0][1] = SHADER_MODULE( vert_tx1_cl_fog ); - vk.modules.vert.gen[1][1][1][0] = SHADER_MODULE( vert_tx1_cl_env ); - vk.modules.vert.gen[1][1][1][1] = SHADER_MODULE( vert_tx1_cl_env_fog ); - - vk.modules.vert.gen[2][0][0][0] = SHADER_MODULE( vert_tx2 ); - vk.modules.vert.gen[2][0][0][1] = SHADER_MODULE( vert_tx2_fog ); - vk.modules.vert.gen[2][0][1][0] = SHADER_MODULE( vert_tx2_env ); - vk.modules.vert.gen[2][0][1][1] = SHADER_MODULE( vert_tx2_env_fog ); - - vk.modules.vert.gen[2][1][0][0] = SHADER_MODULE( vert_tx2_cl ); - vk.modules.vert.gen[2][1][0][1] = SHADER_MODULE( vert_tx2_cl_fog ); - vk.modules.vert.gen[2][1][1][0] = SHADER_MODULE( vert_tx2_cl_env ); - vk.modules.vert.gen[2][1][1][1] = SHADER_MODULE( vert_tx2_cl_env_fog ); - - for ( i = 0; i < 3; i++ ) { - const char *tx[] = { "single", "double", "triple" }; - const char *cl[] = { "", "+cl" }; - const char *env[] = { "", "+env" }; - const char *fog[] = { "", "+fog" }; - for ( j = 0; j < 2; j++ ) { - for ( k = 0; k < 2; k++ ) { - for ( l = 0; l < 2; l++ ) { - const char *s = va( "%s-texture%s%s%s vertex module", tx[i], cl[j], env[k], fog[l] ); - SET_OBJECT_NAME( vk.modules.vert.gen[i][j][k][l], s, VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT ); - } - } - } - } - - vk.modules.vert.ident1[0][0][0] = SHADER_MODULE( vert_tx0_ident1 ); - vk.modules.vert.ident1[0][0][1] = SHADER_MODULE( vert_tx0_ident1_fog ); - vk.modules.vert.ident1[0][1][0] = SHADER_MODULE( vert_tx0_ident1_env ); - vk.modules.vert.ident1[0][1][1] = SHADER_MODULE( vert_tx0_ident1_env_fog ); - vk.modules.vert.ident1[1][0][0] = SHADER_MODULE( vert_tx1_ident1 ); - vk.modules.vert.ident1[1][0][1] = SHADER_MODULE( vert_tx1_ident1_fog ); - vk.modules.vert.ident1[1][1][0] = SHADER_MODULE( vert_tx1_ident1_env ); - vk.modules.vert.ident1[1][1][1] = SHADER_MODULE( vert_tx1_ident1_env_fog ); - for ( i = 0; i < 2; i++ ) { - const char *tx[] = { "single", "double" }; - const char *env[] = { "", "+env" }; - const char *fog[] = { "", "+fog" }; - for ( j = 0; j < 2; j++ ) { - for ( k = 0; k < 2; k++ ) { - const char *s = va( "%s-texture identity%s%s vertex module", tx[i], env[j], fog[k] ); - SET_OBJECT_NAME( vk.modules.vert.ident1[i][j][k], s, VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT ); - } - } - } - - vk.modules.frag.ident1[0][0] = SHADER_MODULE( frag_tx0_ident1 ); - vk.modules.frag.ident1[0][1] = SHADER_MODULE( frag_tx0_ident1_fog ); - vk.modules.frag.ident1[1][0] = SHADER_MODULE( frag_tx1_ident1 ); - vk.modules.frag.ident1[1][1] = SHADER_MODULE( frag_tx1_ident1_fog ); - for ( i = 0; i < 2; i++ ) { - const char *tx[] = { "single", "double" }; - const char *fog[] = { "", "+fog" }; - for ( j = 0; j < 2; j++ ) { - const char *s = va( "%s-texture identity%s fragment module", tx[i], fog[j] ); - SET_OBJECT_NAME( vk.modules.frag.ident1[i][j], s, VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT ); - } - } - - vk.modules.vert.fixed[0][0][0] = SHADER_MODULE( vert_tx0_fixed ); - vk.modules.vert.fixed[0][0][1] = SHADER_MODULE( vert_tx0_fixed_fog ); - vk.modules.vert.fixed[0][1][0] = SHADER_MODULE( vert_tx0_fixed_env ); - vk.modules.vert.fixed[0][1][1] = SHADER_MODULE( vert_tx0_fixed_env_fog ); - vk.modules.vert.fixed[1][0][0] = SHADER_MODULE( vert_tx1_fixed ); - vk.modules.vert.fixed[1][0][1] = SHADER_MODULE( vert_tx1_fixed_fog ); - vk.modules.vert.fixed[1][1][0] = SHADER_MODULE( vert_tx1_fixed_env ); - vk.modules.vert.fixed[1][1][1] = SHADER_MODULE( vert_tx1_fixed_env_fog ); - for ( i = 0; i < 2; i++ ) { - const char *tx[] = { "single", "double" }; - const char *env[] = { "", "+env" }; - const char *fog[] = { "", "+fog" }; - for ( j = 0; j < 2; j++ ) { - for ( k = 0; k < 2; k++ ) { - const char *s = va( "%s-texture fixed-color%s%s vertex module", tx[i], env[j], fog[k] ); - SET_OBJECT_NAME( vk.modules.vert.fixed[i][j][k], s, VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT ); - } - } - } - - vk.modules.frag.fixed[0][0] = SHADER_MODULE( frag_tx0_fixed ); - vk.modules.frag.fixed[0][1] = SHADER_MODULE( frag_tx0_fixed_fog ); - vk.modules.frag.fixed[1][0] = SHADER_MODULE( frag_tx1_fixed ); - vk.modules.frag.fixed[1][1] = SHADER_MODULE( frag_tx1_fixed_fog ); - for ( i = 0; i < 2; i++ ) { - const char *tx[] = { "single", "double" }; - const char *fog[] = { "", "+fog" }; - for ( j = 0; j < 2; j++ ) { - const char *s = va( "%s-texture fixed-color%s fragment module", tx[i], fog[j] ); - SET_OBJECT_NAME( vk.modules.frag.fixed[i][j], s, VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT ); - } - } - - vk.modules.frag.ent[0][0] = SHADER_MODULE( frag_tx0_ent ); - vk.modules.frag.ent[0][1] = SHADER_MODULE( frag_tx0_ent_fog ); - for ( i = 0; i < 1; i++ ) { - const char *tx[] = { "single" /*, "double" */}; - const char *fog[] = { "", "+fog" }; - for ( j = 0; j < 2; j++ ) { - const char *s = va( "%s-texture entity-color%s fragment module", tx[i], fog[j] ); - SET_OBJECT_NAME( vk.modules.frag.ent[i][j], s, VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT ); - } - } -#endif vk.modules.vert.light[0] = SHADER_MODULE( vert_light ); vk.modules.vert.light[1] = SHADER_MODULE( vert_light_fog ); diff --git a/renderers/vulkan/vk_shutdown.c b/renderers/vulkan/vk_shutdown.c index aabb70fbd..8b43b242e 100644 --- a/renderers/vulkan/vk_shutdown.c +++ b/renderers/vulkan/vk_shutdown.c @@ -36,11 +36,7 @@ void vk_release_vbo( void ); void vk_shutdown( refShutdownCode_t code ) { -#ifdef USE_VK_PBR int i, j, k, l, m; -#else - int i, j, k, l; -#endif if ( qvkQueuePresentKHR == NULL ) { /* not fully initialized */ goto __cleanup; @@ -186,9 +182,7 @@ void vk_shutdown( refShutdownCode_t code ) qvkDestroyPipelineLayout( vk.device, vk.pipeline_layout_atmosphere, NULL ); vk.pipeline_layout_atmosphere = VK_NULL_HANDLE; } -#ifdef USE_VK_PBR qvkDestroyPipelineLayout(vk.device, vk.pipeline_layout_brdflut, NULL); -#endif #ifdef USE_VBO vk_release_vbo(); @@ -210,7 +204,6 @@ void vk_shutdown( refShutdownCode_t code ) qvkDestroyBuffer( vk.device, vk.storage.buffer, NULL ); qvkFreeMemory( vk.device, vk.storage.memory, NULL ); -#ifdef USE_VK_PBR for (i = 0; i < 2; i++) { for (j = 0; j < 3; j++) { for (k = 0; k < 2; k++) { @@ -243,30 +236,6 @@ for (i = 0; i < 2; i++) { } } } -#else - for ( i = 0; i < 3; i++ ) { - for ( j = 0; j < 2; j++ ) { - for ( k = 0; k < 2; k++ ) { - for ( l = 0; l < 2; l++ ) { - if ( vk.modules.vert.gen[i][j][k][l] != VK_NULL_HANDLE ) { - qvkDestroyShaderModule( vk.device, vk.modules.vert.gen[i][j][k][l], NULL ); - vk.modules.vert.gen[i][j][k][l] = VK_NULL_HANDLE; - } - } - } - } - } - for ( i = 0; i < 3; i++ ) { - for ( j = 0; j < 2; j++ ) { - for ( k = 0; k < 2; k++ ) { - if ( vk.modules.frag.gen[i][j][k] != VK_NULL_HANDLE ) { - qvkDestroyShaderModule( vk.device, vk.modules.frag.gen[i][j][k], NULL ); - vk.modules.frag.gen[i][j][k] = VK_NULL_HANDLE; - } - } - } - } -#endif for ( i = 0; i < 2; i++ ) { if ( vk.modules.vert.light[i] != VK_NULL_HANDLE ) { @@ -281,7 +250,6 @@ for (i = 0; i < 2; i++) { } } -#ifdef USE_VK_PBR for ( i = 0; i < 2; i++ ) { for ( j = 0; j < 2; j++ ) { for ( k = 0; k < 2; k++ ) { @@ -316,36 +284,6 @@ for (i = 0; i < 2; i++) { } } } -#else - for ( i = 0; i < 2; i++ ) { - for ( j = 0; j < 2; j++ ) { - for ( k = 0; k < 2; k++ ) { - qvkDestroyShaderModule( vk.device, vk.modules.vert.ident1[i][j][k], NULL ); - vk.modules.vert.ident1[i][j][k] = VK_NULL_HANDLE; - } - qvkDestroyShaderModule( vk.device, vk.modules.frag.ident1[i][j], NULL ); - vk.modules.frag.ident1[i][j] = VK_NULL_HANDLE; - } - } - - for ( i = 0; i < 2; i++ ) { - for ( j = 0; j < 2; j++ ) { - for ( k = 0; k < 2; k++ ) { - qvkDestroyShaderModule( vk.device, vk.modules.vert.fixed[i][j][k], NULL ); - vk.modules.vert.fixed[i][j][k] = VK_NULL_HANDLE; - } - qvkDestroyShaderModule( vk.device, vk.modules.frag.fixed[i][j], NULL ); - vk.modules.frag.fixed[i][j] = VK_NULL_HANDLE; - } - } - - for ( i = 0; i < 1; i++ ) { - for ( j = 0; j < 2; j++ ) { - qvkDestroyShaderModule( vk.device, vk.modules.frag.ent[i][j], NULL ); - vk.modules.frag.ent[i][j] = VK_NULL_HANDLE; - } - } -#endif qvkDestroyShaderModule( vk.device, vk.modules.frag.gen0_df, NULL ); qvkDestroyShaderModule( vk.device, vk.modules.frag.ui_sdf_text, NULL ); @@ -474,9 +412,7 @@ for (i = 0; i < 2; i++) { VK_DESTROY_SHADER_MODULE_FIELD( vk.modules.irradiancecube_fs ); VK_DESTROY_SHADER_MODULE_FIELD( vk.modules.prefilterenvmap_fs ); -#ifdef USE_VK_PBR VK_DESTROY_SHADER_MODULE_FIELD( vk.modules.brdflut_fs ); -#endif #undef VK_DESTROY_SHADER_MODULE_FIELD diff --git a/renderers/vulkan/vk_vbo.c b/renderers/vulkan/vk_vbo.c index 7ced000a3..659012240 100644 --- a/renderers/vulkan/vk_vbo.c +++ b/renderers/vulkan/vk_vbo.c @@ -431,7 +431,6 @@ static void VBO_AddGeometry( vbo_t *vbo, vbo_item_t *vi, shaderCommands_t *input // go to first color offset offs = input->shader->normalOffset + input->shader->numVertexes * sizeof( input->normal[0] ); -#ifdef USE_VK_PBR if( vk.pbrActive ) { input->shader->qtangentOffset = input->shader->normalOffset + input->shader->numVertexes * sizeof(input->normal[0]); input->shader->lightdirOffset = input->shader->qtangentOffset + input->shader->numVertexes * sizeof(input->qtangent[0]); @@ -441,7 +440,6 @@ static void VBO_AddGeometry( vbo_t *vbo, vbo_item_t *vi, shaderCommands_t *input // go to first color offset offs = input->shader->lightdirOffset + input->shader->numVertexes * sizeof(input->qtangent[0]); } -#endif for ( i = 0; i < MAX_VBO_STAGES; i++ ) { @@ -538,7 +536,6 @@ static void VBO_AddGeometry( vbo_t *vbo, vbo_item_t *vi, shaderCommands_t *input //Com_Printf( "v offs=%i size=%i\n", offs, size ); memcpy( vbo->vbo_buffer + offs, input->normal, size ); -#ifdef USE_VK_PBR // qtangent if( vk.pbrActive ) { offs = input->shader->qtangentOffset + input->shader->curVertexes * sizeof(input->qtangent[0]); @@ -558,7 +555,6 @@ static void VBO_AddGeometry( vbo_t *vbo, vbo_item_t *vi, shaderCommands_t *input //Com_Printf( "v offs=%i size=%i\n", offs, size ); memcpy(vbo->vbo_buffer + offs, input->lightdir, size); } -#endif vi->num_indexes += input->numIndexes; vi->num_vertexes += input->numVertexes; @@ -671,9 +667,7 @@ void R_BuildWorldVBO( msurface_t *surf, int surfCount ) msurface_t **surfList; srfSurfaceFace_t *face; srfTriangles_t *tris; -#ifdef USE_VBO_GRID srfGridMesh_t *grid; -#endif msurface_t *sf; int ibo_size; int vbo_size; @@ -704,10 +698,8 @@ void R_BuildWorldVBO( msurface_t *surf, int surfCount ) numStaticIndexes += face->numIndices; vbo_size += face->numPoints * (sf->shader->svarsSize + sizeof( tess.xyz[0] ) + sizeof( tess.normal[0] ) ); -#ifdef USE_VK_PBR if ( vk.pbrActive ) vbo_size += face->numPoints * ( sizeof(tess.qtangent[0]) + sizeof(tess.lightdir[0]) ); -#endif sf->shader->numVertexes += face->numPoints; sf->shader->numIndexes += face->numIndices; continue; @@ -719,15 +711,12 @@ void R_BuildWorldVBO( msurface_t *surf, int surfCount ) numStaticIndexes += tris->numIndexes; vbo_size += tris->numVerts * (sf->shader->svarsSize + sizeof( tess.xyz[0] ) + sizeof( tess.normal[0] ) ); -#ifdef USE_VK_PBR if ( vk.pbrActive ) vbo_size += tris->numVerts * ( sizeof(tess.qtangent[0]) + sizeof(tess.lightdir[0]) ); -#endif sf->shader->numVertexes += tris->numVerts; sf->shader->numIndexes += tris->numIndexes; continue; } -#ifdef USE_VBO_GRID grid = (srfGridMesh_t *) sf->data; if ( grid->surfaceType == SF_GRID && isStaticShader( sf->shader ) ) { grid->vboItemIndex = ++numStaticSurfaces; @@ -736,15 +725,12 @@ void R_BuildWorldVBO( msurface_t *surf, int surfCount ) numStaticIndexes += grid->vboExpectIndices; vbo_size += grid->vboExpectVertices * (sf->shader->svarsSize + sizeof( tess.xyz[0] ) + sizeof( tess.normal[0] ) ); -#ifdef USE_VK_PBR if ( vk.pbrActive ) vbo_size += grid->vboExpectVertices * ( sizeof(tess.qtangent[0]) + sizeof(tess.lightdir[0]) ); -#endif sf->shader->numVertexes += grid->vboExpectVertices; sf->shader->numIndexes += grid->vboExpectIndices; continue; } -#endif // USE_VBO_GRID } if ( numStaticSurfaces == 0 ) { ri.Printf( PRINT_ALL, "...no static surfaces for VBO\n" ); @@ -798,13 +784,11 @@ void R_BuildWorldVBO( msurface_t *surf, int surfCount ) surfList[ n++ ] = sf; continue; } -#ifdef USE_VBO_GRID grid = (srfGridMesh_t *) sf->data; if ( grid->surfaceType == SF_GRID && grid->vboItemIndex ) { surfList[ n++ ] = sf; continue; } -#endif // USE_VBO_GRID } if ( n != numStaticSurfaces ) { @@ -825,41 +809,29 @@ void R_BuildWorldVBO( msurface_t *surf, int surfCount ) sf = surfList[ i ]; face = (srfSurfaceFace_t *) sf->data; tris = (srfTriangles_t *) sf->data; -#ifdef USE_VBO_GRID grid = (srfGridMesh_t *) sf->data; -#endif if ( face->surfaceType == SF_FACE ) face->vboItemIndex = i + 1; else if (tris->surfaceType == SF_TRIANGLES) { tris->vboItemIndex = i + 1; -#ifdef USE_VBO_GRID } else if (grid->surfaceType == SF_GRID) { grid->vboItemIndex = i + 1; -#endif } else { ri.Error( ERR_DROP, "Unexpected surface type" ); } initItem( vbo->items + i + 1 ); RB_BeginSurface( sf->shader, 0 ); tess.allowVBO = qfalse; // block execution of VBO path as we need to tesselate geometry -#ifdef USE_TESS_NEEDS_NORMAL - tess.needsNormal = qtrue; -#endif -#ifdef USE_TESS_NEEDS_ST2 - tess.needsST2 = qtrue; -#endif // tesselate rb_surfaceTable[ *sf->data ]( sf->data ); // VBO_PushData() may be called multiple times there // setup colors and texture coordinates VBO_PushData( i + 1, &tess ); -#ifdef USE_VBO_GRID if ( grid->surfaceType == SF_GRID ) { vbo_item_t *vi = vbo->items + i + 1; if ( vi->num_vertexes != grid->vboExpectVertices || vi->num_indexes != grid->vboExpectIndices ) { ri.Error( ERR_DROP, "Unexpected grid vertexes/indexes count" ); } } -#endif // USE_VBO_GRID tess.numIndexes = 0; tess.numVertexes = 0; } @@ -1231,11 +1203,9 @@ static void VBO_StreamWriteGeometry( stream_vbo_item_t *item, shaderCommands_t * int offs, size, i; svarsSize = input->shader->svarsSize; -#ifdef USE_VK_PBR if ( vk.pbrActive ) { svarsSize += (int)( input->numVertexes * ( sizeof( input->qtangent[0] ) + sizeof( input->lightdir[0] ) ) ); } -#endif VBO_StreamEnsureCapacity( input->numIndexes * (int)sizeof( input->indexes[0] ) + input->numVertexes * ( (int)sizeof( input->xyz[0] ) + (int)sizeof( input->normal[0] ) + svarsSize ) ); @@ -1247,13 +1217,11 @@ static void VBO_StreamWriteGeometry( stream_vbo_item_t *item, shaderCommands_t * item->normalOffset = item->vboOffset + input->numVertexes * (int)sizeof( input->xyz[0] ); offs = item->normalOffset + input->numVertexes * (int)sizeof( input->normal[0] ); -#ifdef USE_VK_PBR if ( vk.pbrActive ) { item->qtangentOffset = offs; item->lightdirOffset = offs + input->numVertexes * (int)sizeof( input->qtangent[0] ); offs = item->lightdirOffset + input->numVertexes * (int)sizeof( input->lightdir[0] ); } -#endif stream_vbo.vbo_offset = VBO_StreamLayoutStages( item, input, offs ); @@ -1269,7 +1237,6 @@ static void VBO_StreamWriteGeometry( stream_vbo_item_t *item, shaderCommands_t * size = input->numVertexes * (int)sizeof( input->normal[0] ); memcpy( stream_vbo.vbo_buffer + offs, input->normal, size ); -#ifdef USE_VK_PBR if ( vk.pbrActive ) { offs = item->qtangentOffset; size = input->numVertexes * (int)sizeof( input->qtangent[0] ); @@ -1279,7 +1246,6 @@ static void VBO_StreamWriteGeometry( stream_vbo_item_t *item, shaderCommands_t * size = input->numVertexes * (int)sizeof( input->lightdir[0] ); memcpy( stream_vbo.vbo_buffer + offs, input->lightdir, size ); } -#endif for ( i = 0; i < MAX_VBO_STAGES; i++ ) { pStage = input->xstages[i]; @@ -1396,12 +1362,6 @@ qboolean VBO_StreamUploadSurface( surfaceType_t *surface, shader_t *shader, int RB_BeginSurface( shader, 0 ); tess.allowVBO = qfalse; -#ifdef USE_TESS_NEEDS_NORMAL - tess.needsNormal = qtrue; -#endif -#ifdef USE_TESS_NEEDS_ST2 - tess.needsST2 = qtrue; -#endif rb_surfaceTable[*surface]( surface ); if ( tess.numIndexes <= 0 || tess.numVertexes <= 0 ) { tess.numIndexes = savedIndexes;