diff --git a/bind/v4k.lua b/bind/v4k.lua index 309983b..6595c6b 100644 --- a/bind/v4k.lua +++ b/bind/v4k.lua @@ -1420,6 +1420,7 @@ enum BILLBOARD_MODE { aabb model_aabb(model_t, mat44 transform); void model_lod(model_t*, float lo_detail, float hi_detail, float morph); void model_shading(model_t*, int shading); + void model_shading_custom(model_t*, int shading, const char *vs, const char *fs, const char *defines); void model_skybox(model_t*, skybox_t sky, bool load_sh); void model_render(model_t, mat44 proj, mat44 view, mat44 model, int shader); void model_render_skeleton(model_t, mat44 model); diff --git a/engine/art/shaderlib/lightmap.glsl b/engine/art/shaderlib/lightmap.glsl index c602c9d..3a3875a 100644 --- a/engine/art/shaderlib/lightmap.glsl +++ b/engine/art/shaderlib/lightmap.glsl @@ -1,5 +1,5 @@ +bool do_lightmap() { #ifdef LIGHTMAP_BAKING -void main() { vec3 n = normalize(v_normal_ws); vec4 diffuse; @@ -15,5 +15,8 @@ void main() { } fragcolor = vec4(diffuse.rgb*u_litboost, 1.0); -} -#endif \ No newline at end of file + return true; +#else + return false; +#endif +} \ No newline at end of file diff --git a/engine/art/shaders/fs_32_4_model.glsl b/engine/art/shaders/fs_32_4_model.glsl index 5faffe9..7e79b6d 100644 --- a/engine/art/shaders/fs_32_4_model.glsl +++ b/engine/art/shaders/fs_32_4_model.glsl @@ -2,9 +2,9 @@ #include "lightmap.glsl" #include "surface.glsl" -#ifndef LIGHTMAP_BAKING void main() { + if (do_lightmap()) + return; surface_t surf = surface(); fragcolor = surf.fragcolor; } -#endif