Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions src/renderers/vulkan/tr_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,6 @@ cvar_t *r_firstPersonScaleEnabled;
cvar_t *r_firstPersonZNear;

cvar_t *r_skipBackEnd;
#ifdef USE_IMGUI
cvar_t *r_imgui;
cvar_t *r_imguiTheme;
#endif

cvar_t *r_greyscale;
cvar_t *r_dither;
Expand Down
2 changes: 1 addition & 1 deletion src/renderers/vulkan/tr_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1248,7 +1248,7 @@ static qboolean R_MirrorViewBySurface( const drawSurf_t *drawSurf, int entityNum
return qfalse;
}

if ( r_noportals->integer > 1 /*|| r_fastsky->integer == 1 */ ) {
if ( r_noportals->integer > 1 ) {
return qfalse;
}

Expand Down
51 changes: 0 additions & 51 deletions src/renderers/vulkan/tr_model_gltf.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,53 +41,9 @@ float R_GLTFPackGpuVertexMeta( int morphVertexIndex )
Com_Memcpy( &out, &packed, sizeof( out ) );
return out;
}
#ifdef RENDERER_VULKAN
#include "vk.h"
#endif
#include <math.h>

#ifdef RENDERER_OPENGL
/*
OpenGL: glTF materials only carry texture paths; engine shaders are separate .shader files.
When `normalTexture` is set, try **`stripExtension(path) + "_norm"`** first. If that shader is
missing and the stripped path ends with **`_n`** (e.g. `.../diffuse_n` from `diffuse_n.tga`),
also try **`strip trailing _n` + `_norm`** so `foo_norm` shaders resolve. Fall back to the
base-color texture shader name.
*/
static shader_t *R_GLTF_RegisterSurfaceShader( const gltfMaterial_t *mat ) {
char normName[MAX_QPATH];
size_t len;
qhandle_t h;

if ( mat->normalTexture[0] ) {
COM_StripExtension( mat->normalTexture, normName, sizeof( normName ) );
Q_strcat( normName, sizeof( normName ), "_norm" );
h = RE_RegisterShaderNoMip( normName );
if ( h ) {
return R_GetShaderByHandle( h );
}
COM_StripExtension( mat->normalTexture, normName, sizeof( normName ) );
len = strlen( normName );
if ( len >= 2 && normName[len - 2] == '_' &&
( normName[len - 1] == 'n' || normName[len - 1] == 'N' ) ) {
normName[len - 2] = '\0';
Q_strcat( normName, sizeof( normName ), "_norm" );
h = RE_RegisterShaderNoMip( normName );
if ( h ) {
return R_GetShaderByHandle( h );
}
}
}
if ( mat->baseColorTexture[0] ) {
h = RE_RegisterShaderNoMip( mat->baseColorTexture );
if ( h ) {
return R_GetShaderByHandle( h );
}
}
return tr.defaultShader;
}
#endif

static qboolean gltf_load_materials(const cgltf_data *data, gltfModel_t *model);
static qboolean gltf_load_meshes(const cgltf_data *data, gltfModel_t *model);
static qboolean gltf_load_skeleton(const cgltf_data *data, gltfModel_t *model);
Expand Down Expand Up @@ -1117,18 +1073,12 @@ qboolean R_RegisterGLTF(const char *name, model_t *mod) {

if (prim->materialIndex >= 0 && prim->materialIndex < gltfModel.numMaterials) {
gltfMaterial_t *mat = &rdata->model.materials[prim->materialIndex];
#ifdef RENDERER_OPENGL
surf->shader = R_GLTF_RegisterSurfaceShader( mat );
#else
if (mat->baseColorTexture[0]) {
qhandle_t h = RE_RegisterShaderNoMip(mat->baseColorTexture);
surf->shader = R_GetShaderByHandle(h);
}
#endif
}

/* VBO: pack vertex data (Vulkan only; OpenGL uses CPU tess path) */
#ifdef RENDERER_VULKAN
if (prim->numVertices > 0 && prim->numIndices > 0) {
int offXyz, offRgba, offSt, offNorm, offJoint, offWeight;
int n = prim->numVertices;
Expand Down Expand Up @@ -1182,7 +1132,6 @@ qboolean R_RegisterGLTF(const char *name, model_t *mod) {
}
ri.Hunk_FreeTempMemory(vboPack);
}
#endif /* RENDERER_VULKAN */
}
}

Expand Down
122 changes: 0 additions & 122 deletions src/renderers/vulkan/vk_shader_modules.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 );
Expand Down Expand Up @@ -69,126 +66,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 );
Expand Down
Loading