From: Mircea Kitsune Date: Fri, 13 May 2011 20:11:06 +0000 (+0300) Subject: Merge branch 'master' into mirceakitsune/hud_postprocessing X-Git-Tag: xonotic-v0.5.0~173^2~3^2~9 X-Git-Url: http://de.git.xonotic.org/?a=commitdiff_plain;h=c0749beee99dad58e1d00ae03026a6564dea0d39;hp=-c;p=xonotic%2Fxonotic-data.pk3dir.git Merge branch 'master' into mirceakitsune/hud_postprocessing --- c0749beee99dad58e1d00ae03026a6564dea0d39 diff --combined defaultXonotic.cfg index 9b9eb6098,7a7daae6d..4019abc65 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@@ -205,6 -205,9 +205,9 @@@ seta crosshair_ring_nex_currentcharge_m seta crosshair_ring_minelayer 1 seta crosshair_ring_minelayer_alpha 0.15 + seta crosshair_ring_hagar 1 + seta crosshair_ring_hagar_alpha 0.15 + seta crosshair_ring_reload 1 "main cvar to enable or disable ammo crosshair rings" seta crosshair_ring_reload_size 2.5 "reload ring size" seta crosshair_ring_reload_alpha 0.2 "reload ring alpha" @@@ -278,7 -281,7 +281,7 @@@ cl_rollangle 0 // amount of view tilt w v_kicktime 0 // how long damage kicks of the view last, default is 0 seconds gl_polyblend 0 // whether to use screen tints, this has now been replaced by a better system in CSQC r_motionblur 0 // motion blur value, default is 0 -r_damageblur 0 // motion blur when damaged, default is 0 +r_damageblur 0 // motion blur when damaged, default is 0 (removed in Xonotic) r_bloom_blur 8 r_bloom_brighten 3 @@@ -894,7 -897,6 +897,7 @@@ set g_multijump_add 0 "0 = make the cur set g_multijump_speed -999999 "Minimum vertical speed a player must have in order to jump again" // effects +r_glsl_postprocess 1 r_picmipsprites 0 // Xonotic uses sprites that should never be picmipped (team mate, typing, waypoints) r_picmipworld 1 gl_picmip_world 0 @@@ -1454,8 -1456,6 +1457,8 @@@ seta hud_showbinds_limit 2 "maximum num seta hud_colorflash_alpha 0.5 "starting alpha of the color flash" seta hud_damage 0.55 "an improved version of gl_polyblend for damage, draw an image instead when hurt" +seta hud_damage_blur 10 "Use postprocessing to blur the screen when you have taken damage. This can be paired with current hud damage or just used alone. Higher values = more blur" +seta hud_damage_blur_alpha 0.5 "Amount of alpha to use when merging the blurred layers back into the render. Turning this up higher will remove bloom, so it's best to find a balance" seta hud_damage_gentle_alpha_multiplier 0.10 "how much to multiply alpha of flash when using the cl_gentle version, it's much more opaque than the non-gentle version" seta hud_damage_gentle_color "1 0.7 1" "color of flash for cl_gentle version" seta hud_damage_color "1 0 0" "color of flash" @@@ -1468,15 -1468,7 +1471,15 @@@ seta hud_damage_pain_threshold_lower_he seta hud_damage_pain_threshold_pulsating_min 0.6 "minimum value when calculating the pulse: max(pulsating_min, fabs(sin(PI * time / period))" seta hud_damage_pain_threshold_pulsating_period 0.8 "one pulse every X seconds" +seta hud_powerup 0 "power of the sharpen effect when owning the shield or strength powerups, default is 0.5" + +seta hud_postprocessing 1 "enables the ability for effects such as hud_damage_blur and hud_contents to apply a postprocessing method upon the screen - enabling this disables manual editing of the postprocess cvars" +seta hud_postprocessing_maxbluralpha 0 "maximum alpha which the blur postprocess can be, default is 0.5" +seta hud_postprocessing_maxblurradius 8 "maximum radius which the blur postprocess can be, default is 8" + seta hud_contents 1 "an improved version of gl_polyblend for liquids such as water/lava/slime, draw a filler when inside the liquid" +seta hud_contents_blur 10 "Use postprocessing to blur the screen when you are inside a liquid. Higher values = more blur" +seta hud_contents_blur_alpha 0.5 "Amount of alpha to use when merging the blurred layers back into the render. Turning this up higher will remove bloom, so it's best to find a balance" seta hud_contents_factor 1 "factor at which to multiply the current faded value." seta hud_contents_fadeintime 0.02 "factor of time it takes for the alpha level to reach normal value when entering the liquid" seta hud_contents_fadeouttime 0.1 "factor of time it takes for the alpha level to reach normal value when leaving the liquid" diff --combined qcsrc/client/View.qc index d47d86e50,f1352472b..7e694514c --- a/qcsrc/client/View.qc +++ b/qcsrc/client/View.qc @@@ -361,9 -361,6 +361,9 @@@ float use_nex_chargepool float myhealth, myhealth_prev; float myhealth_flash; +float old_blurradius, old_bluralpha; +float old_sharpen_intensity; + vector myhealth_gentlergb; float contentavgalpha, liquidalpha_prev; @@@ -371,8 -368,6 +371,8 @@@ vector liquidcolor_prev float eventchase_current_distance; +vector damage_blurpostprocess, content_blurpostprocess; + float checkfail[16]; void CSQC_UpdateView(float w, float h) @@@ -779,22 -774,6 +779,22 @@@ if(contentavgalpha) drawfill('0 0 0', eX * vid_conwidth + eY * vid_conheight, liquidcolor_prev, contentavgalpha * liquidalpha_prev, DRAWFLAG_NORMAL); + + if(autocvar_hud_postprocessing) + { + if(autocvar_hud_contents_blur && contentavgalpha) + { + content_blurpostprocess_x = 1; + content_blurpostprocess_y = contentavgalpha * autocvar_hud_contents_blur; + content_blurpostprocess_z = contentavgalpha * autocvar_hud_contents_blur_alpha; + } + else + { + content_blurpostprocess_x = 0; + content_blurpostprocess_y = 0; + content_blurpostprocess_z = 0; + } + } } if(autocvar_hud_damage) @@@ -861,74 -840,6 +861,74 @@@ } else drawpic(splash_pos, "gfx/blood", splash_size, stov(autocvar_hud_damage_color), bound(0, myhealth_flash_temp, 1) * autocvar_hud_damage, DRAWFLAG_NORMAL); + + if(autocvar_hud_postprocessing) + { + if(autocvar_hud_damage_blur && myhealth_flash_temp) + { + damage_blurpostprocess_x = 1; + damage_blurpostprocess_y = bound(0, myhealth_flash_temp, 1) * autocvar_hud_damage_blur; + damage_blurpostprocess_z = bound(0, myhealth_flash_temp, 1) * autocvar_hud_damage_blur_alpha; + } + else + { + damage_blurpostprocess_x = 0; + damage_blurpostprocess_y = 0; + damage_blurpostprocess_z = 0; + } + } + } + + if(autocvar_hud_postprocessing) + { + // all of this should be done in the engine eventually + + // enable or disable rendering types if they are used or not + if(cvar("r_glsl_postprocess_uservec1_enable") != (cvar("hud_postprocessing_maxbluralpha") != 0)) + cvar_set("r_glsl_postprocess_uservec1_enable", ftos(cvar("hud_postprocessing_maxbluralpha") != 0)); + if(cvar("r_glsl_postprocess_uservec2_enable") != (cvar("hud_powerup") != 0)) + cvar_set("r_glsl_postprocess_uservec2_enable", ftos(cvar("hud_powerup") != 0)); + + // lets apply the postprocess effects from the previous two functions if needed + if(damage_blurpostprocess_x || content_blurpostprocess_x) + { + float blurradius = bound(0, damage_blurpostprocess_y + content_blurpostprocess_y, autocvar_hud_postprocessing_maxblurradius); + float bluralpha = bound(0, damage_blurpostprocess_z + content_blurpostprocess_z, autocvar_hud_postprocessing_maxbluralpha); + if(blurradius != old_blurradius || bluralpha != old_bluralpha) // reduce cvar_set spam as much as possible + { + cvar_set("r_glsl_postprocess_uservec1", strcat(ftos(blurradius), " ", ftos(bluralpha), " 0 0")); + old_blurradius = blurradius; + old_bluralpha = bluralpha; + } + } + else if(cvar_string("r_glsl_postprocess_uservec1") != "0 0 0 0") // reduce cvar_set spam as much as possible + { + cvar_set("r_glsl_postprocess_uservec1", "0 0 0 0"); + old_blurradius = 0; + old_bluralpha = 0; + } + + float sharpen_intensity; + if (getstatf(STAT_STRENGTH_FINISHED) - time > 0) + sharpen_intensity += (getstatf(STAT_STRENGTH_FINISHED) - time); + if (getstatf(STAT_INVINCIBLE_FINISHED) - time > 0) + sharpen_intensity += (getstatf(STAT_INVINCIBLE_FINISHED) - time); + + if(autocvar_hud_powerup && sharpen_intensity > 0) + { + sharpen_intensity = bound(0, sharpen_intensity, 5); // powerup warning time is 5 seconds, so fade the effect from there + + if(sharpen_intensity != old_sharpen_intensity) // reduce cvar_set spam as much as possible + { + cvar_set("r_glsl_postprocess_uservec2", strcat("0 ", ftos(-sharpen_intensity * cvar("hud_powerup")), " 0 0")); + old_sharpen_intensity = sharpen_intensity; + } + } + else if(cvar_string("r_glsl_postprocess_uservec2") != "0 0 0 0") // reduce cvar_set spam as much as possible + { + cvar_set("r_glsl_postprocess_uservec2", "0 0 0 0"); + old_sharpen_intensity = 0; + } } // Draw the mouse cursor @@@ -1260,6 -1171,13 +1260,13 @@@ ring_rgb = wcross_color; ring_image = "gfx/crosshair_ring.tga"; } + else if (activeweapon == WEP_HAGAR && getstati(STAT_HAGAR_LOAD) && autocvar_crosshair_ring_hagar) + { + ring_value = bound(0, getstati(STAT_HAGAR_LOAD) / hagar_maxrockets, 1); + ring_alpha = autocvar_crosshair_ring_hagar_alpha; + ring_rgb = wcross_color; + ring_image = "gfx/crosshair_ring.tga"; + } if(autocvar_crosshair_ring_reload && weapon_clipsize) // forces there to be only an ammo ring { diff --combined qcsrc/client/autocvars.qh index a528455ab,50b3e5bd9..88a0547a7 --- a/qcsrc/client/autocvars.qh +++ b/qcsrc/client/autocvars.qh @@@ -112,6 -112,8 +112,8 @@@ float autocvar_crosshair_ring float autocvar_crosshair_ring_inner; float autocvar_crosshair_ring_minelayer; float autocvar_crosshair_ring_minelayer_alpha; + float autocvar_crosshair_ring_hagar; + float autocvar_crosshair_ring_hagar_alpha; float autocvar_crosshair_ring_nex; float autocvar_crosshair_ring_nex_alpha; float autocvar_crosshair_ring_nex_currentcharge_movingavg_rate; @@@ -157,8 -159,6 +159,8 @@@ float autocvar_hud_configure_grid_xsize float autocvar_hud_configure_grid_ysize; float autocvar_hud_configure_teamcolorforced; float autocvar_hud_contents; +float autocvar_hud_contents_blur; +float autocvar_hud_contents_blur_alpha; float autocvar_hud_contents_factor; float autocvar_hud_contents_fadeintime; float autocvar_hud_contents_fadeouttime; @@@ -169,8 -169,6 +171,8 @@@ string autocvar_hud_contents_slime_colo float autocvar_hud_contents_water_alpha; string autocvar_hud_contents_water_color; float autocvar_hud_damage; +float autocvar_hud_damage_blur; +float autocvar_hud_damage_blur_alpha; string autocvar_hud_damage_color; float autocvar_hud_damage_factor; float autocvar_hud_damage_fade_rate; @@@ -182,10 -180,6 +184,10 @@@ float autocvar_hud_damage_pain_threshol float autocvar_hud_damage_pain_threshold_lower_health; float autocvar_hud_damage_pain_threshold_pulsating_min; float autocvar_hud_damage_pain_threshold_pulsating_period; +float autocvar_hud_powerup; +float autocvar_hud_postprocessing; +float autocvar_hud_postprocessing_maxbluralpha; +float autocvar_hud_postprocessing_maxblurradius; string autocvar_hud_dock; float autocvar_hud_dock_alpha; string autocvar_hud_dock_color;