diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/emuopts.c | 6 | ||||
-rw-r--r-- | src/osd/modules/render/d3d/d3dhlsl.c | 40 | ||||
-rw-r--r-- | src/osd/modules/render/d3d/d3dhlsl.h | 1 | ||||
-rw-r--r-- | src/osd/windows/winmain.c | 1 | ||||
-rw-r--r-- | src/osd/windows/winmain.h | 2 |
5 files changed, 46 insertions, 4 deletions
diff --git a/src/emu/emuopts.c b/src/emu/emuopts.c index 8d2e6c0e56f..b0efd442101 100644 --- a/src/emu/emuopts.c +++ b/src/emu/emuopts.c @@ -452,6 +452,12 @@ void emu_options::parse_standard_inis(std::string &error_string) parse_one_ini("vector", OPTION_PRIORITY_SCREEN_INI, &error_string); break; } + // parse "lcd.ini" for lcd games + if (device->screen_type() == SCREEN_TYPE_LCD) + { + parse_one_ini("lcd", OPTION_PRIORITY_SCREEN_INI, &error_string); + break; + } } // next parse "source/<sourcefile>.ini"; if that doesn't exist, try <sourcefile>.ini diff --git a/src/osd/modules/render/d3d/d3dhlsl.c b/src/osd/modules/render/d3d/d3dhlsl.c index f03ba272e01..2a42c8f9a0e 100644 --- a/src/osd/modules/render/d3d/d3dhlsl.c +++ b/src/osd/modules/render/d3d/d3dhlsl.c @@ -77,7 +77,9 @@ hlsl_options shaders::s_hlsl_presets[4] = 1.2f, false, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0.9f, 4.0f, - 1.0f, 0.21f, 0.19f, 0.17f, 0.15f, 0.14f, 0.13f, 0.12f, 0.11f, 0.10f, 0.09f + 1.0f, + { 0.0f, 0.0f, 0.0f }, + 0.21f, 0.19f, 0.17f, 0.15f, 0.14f, 0.13f, 0.12f, 0.11f, 0.10f, 0.09f }, { // 25% Shadow mask, 0% Scanlines, 3% Pincushion, 0 defocus, No Tint, 0.9 Exponent, 5% Floor, 25% Phosphor Return, 120% Saturation true, @@ -100,7 +102,9 @@ hlsl_options shaders::s_hlsl_presets[4] = 1.2f, false, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0.9f, 4.0f, - 1.0f, 0.21f, 0.19f, 0.17f, 0.15f, 0.14f, 0.13f, 0.12f, 0.11f, 0.10f, 0.09f + 1.0f, + { 0.0f, 0.0f, 0.0f }, + 0.21f, 0.19f, 0.17f, 0.15f, 0.14f, 0.13f, 0.12f, 0.11f, 0.10f, 0.09f }, { // 25% Shadow mask, 0% Scanlines, 0% Pincushion, 0 defocus, No Tint, 0.9 Exponent, 5% Floor, 25% Phosphor Return, 120% Saturation true, @@ -123,7 +127,9 @@ hlsl_options shaders::s_hlsl_presets[4] = 1.2f, false, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0.9f, 4.0f, - 1.0f, 0.21f, 0.19f, 0.17f, 0.15f, 0.14f, 0.13f, 0.12f, 0.11f, 0.10f, 0.09f + 1.0f, + { 0.0f, 0.0f, 0.0f }, + 0.21f, 0.19f, 0.17f, 0.15f, 0.14f, 0.13f, 0.12f, 0.11f, 0.10f, 0.09f }, { // 25% Shadow mask, 100% Scanlines, 15% Pincushion, 3 defocus, 24-degree Tint Out, 1.5 Exponent, 5% Floor, 70% Phosphor Return, 80% Saturation, Bad Convergence true, @@ -146,7 +152,9 @@ hlsl_options shaders::s_hlsl_presets[4] = 0.8f, false, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0.9f, 4.0f, - 1.0f, 0.21f, 0.19f, 0.17f, 0.15f, 0.14f, 0.13f, 0.12f, 0.11f, 0.10f, 0.09f + 1.0f, + { 0.0f, 0.0f, 0.0f }, + 0.21f, 0.19f, 0.17f, 0.15f, 0.14f, 0.13f, 0.12f, 0.11f, 0.10f, 0.09f }, }; @@ -824,6 +832,7 @@ void shaders::init(base *d3dintf, running_machine *machine, d3d::renderer *rende options->vector_length_scale = winoptions.screen_vector_length_scale(); options->vector_length_ratio = winoptions.screen_vector_length_ratio(); options->bloom_scale = winoptions.screen_bloom_scale(); + get_vector(winoptions.screen_bloom_overdrive(), 3, options->bloom_overdrive, TRUE); options->bloom_level0_weight = winoptions.screen_bloom_lvl0_weight(); options->bloom_level1_weight = winoptions.screen_bloom_lvl1_weight(); options->bloom_level2_weight = winoptions.screen_bloom_lvl2_weight(); @@ -1550,6 +1559,8 @@ int shaders::bloom_pass(render_target *rt, int source_index, poly_info *poly, in curr_effect->set_vector("Level89Size", 4, bloom_dims[8]); curr_effect->set_vector("LevelASize", 2, bloom_dims[10]); + curr_effect->set_vector("OverdriveWeight", 3, options->bloom_overdrive); + curr_effect->set_texture("DiffuseA", rt->prescale_texture[next_index]); char name[9] = "Diffuse*"; @@ -2656,6 +2667,24 @@ static INT32 slider_bloom_scale(running_machine &machine, void *arg, std::string return slider_set(&(((hlsl_options*)arg)->bloom_scale), 0.001f, "%1.3f", str, newval); } +static INT32 slider_bloom_red_overdrive(running_machine &machine, void *arg, std::string *str, INT32 newval) +{ + ((hlsl_options*)arg)->params_dirty = true; + return slider_set(&(((hlsl_options*)arg)->bloom_overdrive[0]), 0.001f, "%1.3f", str, newval); +} + +static INT32 slider_bloom_green_overdrive(running_machine &machine, void *arg, std::string *str, INT32 newval) +{ + ((hlsl_options*)arg)->params_dirty = true; + return slider_set(&(((hlsl_options*)arg)->bloom_overdrive[1]), 0.001f, "%1.3f", str, newval); +} + +static INT32 slider_bloom_blue_overdrive(running_machine &machine, void *arg, std::string *str, INT32 newval) +{ + ((hlsl_options*)arg)->params_dirty = true; + return slider_set(&(((hlsl_options*)arg)->bloom_overdrive[2]), 0.001f, "%1.3f", str, newval); +} + static INT32 slider_bloom_lvl0_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; @@ -2789,6 +2818,9 @@ shaders::slider_desc shaders::s_sliders[] = { "Vector Length Attenuation", 0, 80, 100, 1, slider_vector_attenuation }, { "Vector Attenuation Length Limit", 1, 500, 1000, 1, slider_vector_length_max }, { "Bloom Scale", 0, 250, 2000, 5, slider_bloom_scale }, + { "Bloom Red Overdrive", 0, 250, 2000, 5, slider_bloom_red_overdrive }, + { "Bloom Green Overdrive", 0, 250, 2000, 5, slider_bloom_green_overdrive }, + { "Bloom Blue Overdrive", 0, 250, 2000, 5, slider_bloom_blue_overdrive }, { "Bloom Level 0 Scale", 0, 100, 100, 1, slider_bloom_lvl0_scale }, { "Bloom Level 1 Scale", 0, 21, 100, 1, slider_bloom_lvl1_scale }, { "Bloom Level 2 Scale", 0, 19, 100, 1, slider_bloom_lvl2_scale }, diff --git a/src/osd/modules/render/d3d/d3dhlsl.h b/src/osd/modules/render/d3d/d3dhlsl.h index 3a337d21a87..6c9c14faaf5 100644 --- a/src/osd/modules/render/d3d/d3dhlsl.h +++ b/src/osd/modules/render/d3d/d3dhlsl.h @@ -239,6 +239,7 @@ struct hlsl_options // Bloom float bloom_scale; + float bloom_overdrive[3]; float bloom_level0_weight; float bloom_level1_weight; float bloom_level2_weight; diff --git a/src/osd/windows/winmain.c b/src/osd/windows/winmain.c index 7096f95f20e..f06b5204dc0 100644 --- a/src/osd/windows/winmain.c +++ b/src/osd/windows/winmain.c @@ -352,6 +352,7 @@ const options_entry windows_options::s_option_entries[] = /* Bloom below this line */ { NULL, NULL, OPTION_HEADER, "BLOOM POST-PROCESSING OPTIONS" }, { WINOPTION_BLOOM_SCALE, "0.25", OPTION_FLOAT, "Intensity factor for bloom" }, + { WINOPTION_BLOOM_OVERDRIVE, "0.0,0.0,0.0",OPTION_STRING, "Overdrive factor for bloom" }, { WINOPTION_BLOOM_LEVEL0_WEIGHT, "1.0", OPTION_FLOAT, "Bloom level 0 (full-size target) weight" }, { WINOPTION_BLOOM_LEVEL1_WEIGHT, "0.21", OPTION_FLOAT, "Bloom level 1 (half-size target) weight" }, { WINOPTION_BLOOM_LEVEL2_WEIGHT, "0.19", OPTION_FLOAT, "Bloom level 2 (quarter-size target) weight" }, diff --git a/src/osd/windows/winmain.h b/src/osd/windows/winmain.h index dcb2fdcd1c0..71f0056915b 100644 --- a/src/osd/windows/winmain.h +++ b/src/osd/windows/winmain.h @@ -86,6 +86,7 @@ #define WINOPTION_VECTOR_LENGTH_RATIO "vector_length_ratio" #define WINOPTION_VECTOR_TIME_PERIOD "vector_time_period" #define WINOPTION_BLOOM_SCALE "bloom_scale" +#define WINOPTION_BLOOM_OVERDRIVE "bloom_overdrive" #define WINOPTION_BLOOM_LEVEL0_WEIGHT "bloom_lvl0_weight" #define WINOPTION_BLOOM_LEVEL1_WEIGHT "bloom_lvl1_weight" #define WINOPTION_BLOOM_LEVEL2_WEIGHT "bloom_lvl2_weight" @@ -181,6 +182,7 @@ public: float screen_vector_length_ratio() const { return float_value(WINOPTION_VECTOR_LENGTH_RATIO); } float screen_vector_time_period() const { return float_value(WINOPTION_VECTOR_TIME_PERIOD); } float screen_bloom_scale() const { return float_value(WINOPTION_BLOOM_SCALE); } + const char *screen_bloom_overdrive() const { return value(WINOPTION_BLOOM_OVERDRIVE); } float screen_bloom_lvl0_weight() const { return float_value(WINOPTION_BLOOM_LEVEL0_WEIGHT); } float screen_bloom_lvl1_weight() const { return float_value(WINOPTION_BLOOM_LEVEL1_WEIGHT); } float screen_bloom_lvl2_weight() const { return float_value(WINOPTION_BLOOM_LEVEL2_WEIGHT); } |