render changes

main
Dominik Madarász 2024-08-24 19:01:57 +02:00
parent 15a495ad8d
commit f47b9dea62
5 changed files with 48 additions and 9 deletions

View File

@ -17686,6 +17686,7 @@ API float model_animate_blends(model_t m, anim_t *primary, anim_t *secondary,
API aabb model_aabb(model_t, mat44 transform); API aabb model_aabb(model_t, mat44 transform);
API void model_lod(model_t*, float lo_detail, float hi_detail, float morph); API void model_lod(model_t*, float lo_detail, float hi_detail, float morph);
API void model_shading(model_t*, int shading); API void model_shading(model_t*, int shading);
API void model_shading_custom(model_t*, int shading, const char *vs, const char *fs, const char *defines);
API void model_skybox(model_t*, skybox_t sky, bool load_sh); API void model_skybox(model_t*, skybox_t sky, bool load_sh);
API void model_render(model_t, mat44 proj, mat44 view, mat44 model, int shader); API void model_render(model_t, mat44 proj, mat44 view, mat44 model, int shader);
API void model_render_skeleton(model_t, mat44 model); API void model_render_skeleton(model_t, mat44 model);
@ -386316,7 +386317,7 @@ void model_init_uniforms(model_t *m) {
m->uniforms[MODEL_UNIFORM_RESOLUTION] = loc; m->uniforms[MODEL_UNIFORM_RESOLUTION] = loc;
} }
void model_shading(model_t *m, int shading) { void model_shading_custom(model_t *m, int shading, const char *vs, const char *fs, const char *defines) {
m->shading = shading; m->shading = shading;
int flags = m->stored_flags; int flags = m->stored_flags;
@ -386327,18 +386328,30 @@ void model_shading(model_t *m, int shading) {
} }
} }
if (!vs) {
vs = vfs_read("shaders/vs_323444143_16_3322_model.glsl");
}
if (!fs) {
fs = vfs_read("shaders/fs_32_4_model.glsl");
}
// rebind shader // rebind shader
// @fixme: app crashes rn // @fixme: app crashes rn
// glUseProgram(0); // glUseProgram(0);
// glDeleteProgram(m->program); // glDeleteProgram(m->program);
const char *symbols[] = { "{{include-shadowmap}}", vfs_read("shaders/fs_0_0_shadowmap_lit.glsl") }; // #define RIM const char *symbols[] = { "{{include-shadowmap}}", vfs_read("shaders/fs_0_0_shadowmap_lit.glsl") }; // #define RIM
int shaderprog = shader(strlerp(1,symbols,vfs_read("shaders/vs_323444143_16_3322_model.glsl")), strlerp(1,symbols,vfs_read("shaders/fs_32_4_model.glsl")), //fs, int shaderprog = shader(strlerp(1,symbols,vs), strlerp(1,symbols,fs), //fs,
"att_position,att_texcoord,att_normal,att_tangent,att_instanced_matrix,,,,att_indexes,att_weights,att_vertexindex,att_color,att_bitangent,att_texcoord2","fragColor", "att_position,att_texcoord,att_normal,att_tangent,att_instanced_matrix,,,,att_indexes,att_weights,att_vertexindex,att_color,att_bitangent,att_texcoord2","fragColor",
va("%s,%s", shading == SHADING_PBR ? "SHADING_PBR" : shading == SHADING_VERTEXLIT ? "SHADING_VERTEXLIT" : "SHADING_PHONG", (flags&MODEL_RIMLIGHT)?"RIM":"")); va("%s,%s,%s", defines ? defines : "NO_CUSTOM_DEFINES", shading == SHADING_PBR ? "SHADING_PBR" : shading == SHADING_VERTEXLIT ? "SHADING_VERTEXLIT" : "SHADING_PHONG", (flags&MODEL_RIMLIGHT)?"RIM":""));
m->program = shaderprog; m->program = shaderprog;
model_init_uniforms(m); model_init_uniforms(m);
} }
void model_shading(model_t *m, int shading) {
model_shading_custom(m, shading, NULL, NULL, NULL);
}
void model_skybox(model_t *mdl, skybox_t sky, bool load_sh) { void model_skybox(model_t *mdl, skybox_t sky, bool load_sh) {
if (load_sh) { if (load_sh) {
shader_vec3v("u_coefficients_sh", 9, sky.cubemap.sh); shader_vec3v("u_coefficients_sh", 9, sky.cubemap.sh);

View File

@ -4660,7 +4660,7 @@ void model_init_uniforms(model_t *m) {
m->uniforms[MODEL_UNIFORM_RESOLUTION] = loc; m->uniforms[MODEL_UNIFORM_RESOLUTION] = loc;
} }
void model_shading(model_t *m, int shading) { void model_shading_custom(model_t *m, int shading, const char *vs, const char *fs, const char *defines) {
m->shading = shading; m->shading = shading;
int flags = m->stored_flags; int flags = m->stored_flags;
@ -4671,18 +4671,30 @@ void model_shading(model_t *m, int shading) {
} }
} }
if (!vs) {
vs = vfs_read("shaders/vs_323444143_16_3322_model.glsl");
}
if (!fs) {
fs = vfs_read("shaders/fs_32_4_model.glsl");
}
// rebind shader // rebind shader
// @fixme: app crashes rn // @fixme: app crashes rn
// glUseProgram(0); // glUseProgram(0);
// glDeleteProgram(m->program); // glDeleteProgram(m->program);
const char *symbols[] = { "{{include-shadowmap}}", vfs_read("shaders/fs_0_0_shadowmap_lit.glsl") }; // #define RIM const char *symbols[] = { "{{include-shadowmap}}", vfs_read("shaders/fs_0_0_shadowmap_lit.glsl") }; // #define RIM
int shaderprog = shader(strlerp(1,symbols,vfs_read("shaders/vs_323444143_16_3322_model.glsl")), strlerp(1,symbols,vfs_read("shaders/fs_32_4_model.glsl")), //fs, int shaderprog = shader(strlerp(1,symbols,vs), strlerp(1,symbols,fs), //fs,
"att_position,att_texcoord,att_normal,att_tangent,att_instanced_matrix,,,,att_indexes,att_weights,att_vertexindex,att_color,att_bitangent,att_texcoord2","fragColor", "att_position,att_texcoord,att_normal,att_tangent,att_instanced_matrix,,,,att_indexes,att_weights,att_vertexindex,att_color,att_bitangent,att_texcoord2","fragColor",
va("%s,%s", shading == SHADING_PBR ? "SHADING_PBR" : shading == SHADING_VERTEXLIT ? "SHADING_VERTEXLIT" : "SHADING_PHONG", (flags&MODEL_RIMLIGHT)?"RIM":"")); va("%s,%s,%s", defines ? defines : "NO_CUSTOM_DEFINES", shading == SHADING_PBR ? "SHADING_PBR" : shading == SHADING_VERTEXLIT ? "SHADING_VERTEXLIT" : "SHADING_PHONG", (flags&MODEL_RIMLIGHT)?"RIM":""));
m->program = shaderprog; m->program = shaderprog;
model_init_uniforms(m); model_init_uniforms(m);
} }
void model_shading(model_t *m, int shading) {
model_shading_custom(m, shading, NULL, NULL, NULL);
}
void model_skybox(model_t *mdl, skybox_t sky, bool load_sh) { void model_skybox(model_t *mdl, skybox_t sky, bool load_sh) {
if (load_sh) { if (load_sh) {
shader_vec3v("u_coefficients_sh", 9, sky.cubemap.sh); shader_vec3v("u_coefficients_sh", 9, sky.cubemap.sh);

View File

@ -718,6 +718,7 @@ API float model_animate_blends(model_t m, anim_t *primary, anim_t *secondary,
API aabb model_aabb(model_t, mat44 transform); API aabb model_aabb(model_t, mat44 transform);
API void model_lod(model_t*, float lo_detail, float hi_detail, float morph); API void model_lod(model_t*, float lo_detail, float hi_detail, float morph);
API void model_shading(model_t*, int shading); API void model_shading(model_t*, int shading);
API void model_shading_custom(model_t*, int shading, const char *vs, const char *fs, const char *defines);
API void model_skybox(model_t*, skybox_t sky, bool load_sh); API void model_skybox(model_t*, skybox_t sky, bool load_sh);
API void model_render(model_t, mat44 proj, mat44 view, mat44 model, int shader); API void model_render(model_t, mat44 proj, mat44 view, mat44 model, int shader);
API void model_render_skeleton(model_t, mat44 model); API void model_render_skeleton(model_t, mat44 model);

View File

@ -21459,7 +21459,7 @@ void model_init_uniforms(model_t *m) {
m->uniforms[MODEL_UNIFORM_RESOLUTION] = loc; m->uniforms[MODEL_UNIFORM_RESOLUTION] = loc;
} }
void model_shading(model_t *m, int shading) { void model_shading_custom(model_t *m, int shading, const char *vs, const char *fs, const char *defines) {
m->shading = shading; m->shading = shading;
int flags = m->stored_flags; int flags = m->stored_flags;
@ -21470,18 +21470,30 @@ void model_shading(model_t *m, int shading) {
} }
} }
if (!vs) {
vs = vfs_read("shaders/vs_323444143_16_3322_model.glsl");
}
if (!fs) {
fs = vfs_read("shaders/fs_32_4_model.glsl");
}
// rebind shader // rebind shader
// @fixme: app crashes rn // @fixme: app crashes rn
// glUseProgram(0); // glUseProgram(0);
// glDeleteProgram(m->program); // glDeleteProgram(m->program);
const char *symbols[] = { "{{include-shadowmap}}", vfs_read("shaders/fs_0_0_shadowmap_lit.glsl") }; // #define RIM const char *symbols[] = { "{{include-shadowmap}}", vfs_read("shaders/fs_0_0_shadowmap_lit.glsl") }; // #define RIM
int shaderprog = shader(strlerp(1,symbols,vfs_read("shaders/vs_323444143_16_3322_model.glsl")), strlerp(1,symbols,vfs_read("shaders/fs_32_4_model.glsl")), //fs, int shaderprog = shader(strlerp(1,symbols,vs), strlerp(1,symbols,fs), //fs,
"att_position,att_texcoord,att_normal,att_tangent,att_instanced_matrix,,,,att_indexes,att_weights,att_vertexindex,att_color,att_bitangent,att_texcoord2","fragColor", "att_position,att_texcoord,att_normal,att_tangent,att_instanced_matrix,,,,att_indexes,att_weights,att_vertexindex,att_color,att_bitangent,att_texcoord2","fragColor",
va("%s,%s", shading == SHADING_PBR ? "SHADING_PBR" : shading == SHADING_VERTEXLIT ? "SHADING_VERTEXLIT" : "SHADING_PHONG", (flags&MODEL_RIMLIGHT)?"RIM":"")); va("%s,%s,%s", defines ? defines : "NO_CUSTOM_DEFINES", shading == SHADING_PBR ? "SHADING_PBR" : shading == SHADING_VERTEXLIT ? "SHADING_VERTEXLIT" : "SHADING_PHONG", (flags&MODEL_RIMLIGHT)?"RIM":""));
m->program = shaderprog; m->program = shaderprog;
model_init_uniforms(m); model_init_uniforms(m);
} }
void model_shading(model_t *m, int shading) {
model_shading_custom(m, shading, NULL, NULL, NULL);
}
void model_skybox(model_t *mdl, skybox_t sky, bool load_sh) { void model_skybox(model_t *mdl, skybox_t sky, bool load_sh) {
if (load_sh) { if (load_sh) {
shader_vec3v("u_coefficients_sh", 9, sky.cubemap.sh); shader_vec3v("u_coefficients_sh", 9, sky.cubemap.sh);

View File

@ -3753,6 +3753,7 @@ API float model_animate_blends(model_t m, anim_t *primary, anim_t *secondary,
API aabb model_aabb(model_t, mat44 transform); API aabb model_aabb(model_t, mat44 transform);
API void model_lod(model_t*, float lo_detail, float hi_detail, float morph); API void model_lod(model_t*, float lo_detail, float hi_detail, float morph);
API void model_shading(model_t*, int shading); API void model_shading(model_t*, int shading);
API void model_shading_custom(model_t*, int shading, const char *vs, const char *fs, const char *defines);
API void model_skybox(model_t*, skybox_t sky, bool load_sh); API void model_skybox(model_t*, skybox_t sky, bool load_sh);
API void model_render(model_t, mat44 proj, mat44 view, mat44 model, int shader); API void model_render(model_t, mat44 proj, mat44 view, mat44 model, int shader);
API void model_render_skeleton(model_t, mat44 model); API void model_render_skeleton(model_t, mat44 model);