diff --git a/src/client/defs.h b/src/client/defs.h index 550cdb96..824b6e87 100644 --- a/src/client/defs.h +++ b/src/client/defs.h @@ -46,6 +46,8 @@ var vector autocvar_cl_logocolor = [255,0,0]; var vector autocvar_con_color = [255,150,0]; var vector autocvar_vgui_color = [255,170,0]; var vector autocvar_v_gunofs = [0,0,0]; +var int autocvar_r_viewmodelpass = 0; +var float autocvar_r_viewmodelfov = 90.0f; /* particle descriptors */ var float PARTICLE_BLOOD; diff --git a/src/client/entry.c b/src/client/entry.c index 28b3ce14..ccad9434 100644 --- a/src/client/entry.c +++ b/src/client/entry.c @@ -267,19 +267,22 @@ CSQC_UpdateView(float w, float h, float focus) setproperty(VF_SKYROOM_CAMERA, g_skypos + realpos); } - /* draw the world/entities */ - renderscene(); - - /* Now we draw the viewmodel in a second pass */ - clearscene(); - setproperty(VF_MIN, video_mins); - setproperty(VF_SIZE, video_res); - setproperty(VF_ANGLES, view_angles + pl.punchangle); - setproperty(VF_DRAWWORLD, 0); - setproperty(VF_AFOV, cvar("cl_viewmodelfov")); - setproperty(VF_ORIGIN, pSeat->vPlayerOrigin + pl.view_ofs); - View_DrawViewModel(); - renderscene(); + /* draw the viewmodel in a second pass if desired */ + if (autocvar_r_viewmodelpass) { + renderscene(); + clearscene(); + setproperty(VF_MIN, video_mins); + setproperty(VF_SIZE, video_res); + setproperty(VF_ANGLES, view_angles + pl.punchangle); + setproperty(VF_DRAWWORLD, 0); + setproperty(VF_AFOV, autocvar_r_viewmodelfov); + setproperty(VF_ORIGIN, pSeat->vPlayerOrigin + pl.view_ofs); + View_DrawViewModel(); + renderscene(); + } else { + View_DrawViewModel(); + renderscene(); + } /* Run this on all players */ for (entity b = world; (b = find(b, ::classname, "player"));) {