]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into mirceakitsune/hud_postprocessing
authorMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Wed, 8 Jun 2011 19:47:46 +0000 (22:47 +0300)
committerMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Wed, 8 Jun 2011 19:47:46 +0000 (22:47 +0300)
1  2 
defaultXonotic.cfg
qcsrc/client/View.qc
qcsrc/menu/xonotic/dialog_settings_effects.c

diff --combined defaultXonotic.cfg
index 2ef5294f8ebccb5b9fadfd510ef941a8a6f79f6f,8cc42a7cae86459df2ec169c05c0e5d6931abc1d..fee2e6b752ecd68b6e6f53069a071a6e69812229
@@@ -281,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
@@@ -898,7 -898,6 +898,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
@@@ -1472,8 -1471,6 +1472,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"
@@@ -1486,15 -1483,7 +1486,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"
@@@ -2047,8 -2036,8 +2047,8 @@@ scr_conforcewhiledisconnected 
  scr_infobar_height 12
  
  // DP cannot properly detect this, so rather turn off the detection
- r_texture_dds_load_dxt1_noalpha 1
- r_texture_dds_load_swdecode 1 // SW decode to quarter res if we want to load DDS but don't support the extension for it
+ r_texture_dds_load_alphamode 2
+ r_texture_dds_swdecode 1 // SW decode to quarter res if we want to load DDS but don't support the extension for it
  r_texture_dds_load_logfailure 0 // this engine feature SUCKS
  set vid_netwmfullscreen 0 // doesn't support non-native res
  
diff --combined qcsrc/client/View.qc
index 13051f4ef2b0cfb02de488322b87a90700179ace,8c7f87c984c089b187d380164cdf9e3d3a7e023a..8a862f5d77fbab730f58f25cb56a47500eb48e1a
@@@ -360,9 -360,6 +360,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;
@@@ -370,8 -367,6 +370,8 @@@ vector liquidcolor_prev
  
  float eventchase_current_distance;
  
 +vector damage_blurpostprocess, content_blurpostprocess;
 +
  float checkfail[16];
  
  void CSQC_UpdateView(float w, float h)
        TargetMusic_Advance();
        Fog_Force();
  
-       drawframetime = max(0.000001, time - drawtime);
+       if(drawtime == 0)
+               drawframetime = 0.01666667; // when we don't know fps yet, we assume 60fps
+       else
+               drawframetime = bound(0.000001, time - drawtime, 1);
        drawtime = time;
  
        // watch for gametype changes here...
                
                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 && !autocvar_chase_active)
                }
                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) && autocvar_chase_active >= 0) // not while the event chase camera is active
 +              {
 +                      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 && autocvar_chase_active >= 0) // not while the event chase camera is active
 +              {
 +                      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;
 +              }
        }
  
        if(menu_visible)
index 9988fb850ce2751060734fc35bde40457d293c57,fd252a54abdd5d181e14045cacfbd9415d9ac64c..66f863cd48cc7cc00f135e3c3be54d9234f51391
@@@ -132,8 -132,8 +132,8 @@@ void XonoticEffectsSettingsTab_fill(ent
        me.TD(me, 1, 1.2, e = makeXonoticCheckBox(1, "mod_q3bsp_nolightmaps", _("Use lightmaps")));
        me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "r_glsl_deluxemapping", _("Deluxe mapping")));
                setDependentAND(e, "vid_gl20", 1, 1, "mod_q3bsp_nolightmaps", 0, 0);
-       me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "r_shadow_gloss", _("Gloss")));
-               setDependentAND3(e, "vid_gl20", 1, 1, "r_glsl_deluxemapping", 1, 2, "mod_q3bsp_nolightmaps", 0, 0);
+       me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "r_shadow_gloss", _("Gloss"))); // FIXME move this box elsewhere, it has nothing to do with Q3BSP lightmaps
+               setDependent(e, "vid_gl20", 1, 1);
        me.TR(me);
                me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping", _("Offset mapping")));
                        setDependent(e, "vid_gl20", 1, 1);
                        e.savedValue = 0.5; // default
                me.TD(me, 1, 2, s);
        me.TR(me);
 -              s = makeXonoticSlider(0.1, 1, 0.1, "r_damageblur");
 -              me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, s, _("Damage blur:")));
 -              if(s.value != e.savedValue)
 -                      e.savedValue = 0.4; // default
 -              me.TD(me, 1, 2, s);
 +              me.TD(me, 1, 2, e = makeXonoticCheckBoxEx(0.5, 0, "hud_postprocessing_maxbluralpha", "Damage & water blur"));
 +              me.TD(me, 1, 1, e = makeXonoticCheckBoxEx(0.5, 0, "hud_powerup", "Powerup sharpen"));
        
        me.gotoRC(me, me.rows - 1, 0);
                me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "vid_restart", COMMANDBUTTON_APPLY));