summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/d3d/d3dhlsl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/render/d3d/d3dhlsl.cpp')
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.cpp417
1 files changed, 159 insertions, 258 deletions
diff --git a/src/osd/modules/render/d3d/d3dhlsl.cpp b/src/osd/modules/render/d3d/d3dhlsl.cpp
index fa07e1f4592..8c099c23dbf 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.cpp
+++ b/src/osd/modules/render/d3d/d3dhlsl.cpp
@@ -52,116 +52,12 @@ static file_error open_next(d3d::renderer *d3d, emu_file &file, const char *temp
namespace d3d
{
-hlsl_options shaders::s_hlsl_presets[4] =
-{
- { // 25% Shadow mask, 50% Scanlines, 3% Pincushion, 0 defocus, No Tint, 0.9 Exponent, 5% Floor, 25% Phosphor Return, 120% Saturation
- true,
- 0.25f, { "adapture-grill.png" }, 6, 6, 0.1875f, 0.1875f, 0.0f, 0.0f,
- 0.03f, 0.0f, 0.0f, 0.0f, 0.0f,
- 0.5f, 1.0f, 0.5f, 1.0f, 0.0f, 0.0f,
- { 0.0f, 0.0f },
- { 0.0f, 0.0f, 0.0f },
- { 0.0f, 0.0f, 0.0f },
- { 0.0f, 0.0f, 0.0f },
- { 0.0f, 0.0f, 0.0f },
- { 1.0f, 0.0f, 0.0f },
- { 0.0f, 1.0f, 0.0f },
- { 0.0f, 0.0f, 1.0f },
- { 0.0f, 0.0f, 0.0f },
- { 1.0f, 1.0f, 1.0f },
- { 0.9f, 0.9f, 0.9f },
- { 0.05f,0.05f,0.05f},
- { 0.25f,0.25f,0.25f},
- 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.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,
- 0.25f, { "adapture-grill.png" }, 6, 6, 0.1875f, 0.1875f, 0.0f, 0.0f,
- 0.03f, 0.0f, 0.0f, 0.0f, 0.0f,
- 0.0f, 1.0f, 0.5f, 1.0f, 0.0f, 0.0f,
- { 0.0f, 0.0f },
- { 0.0f, 0.0f, 0.0f },
- { 0.0f, 0.0f, 0.0f },
- { 0.0f, 0.0f, 0.0f },
- { 0.0f, 0.0f, 0.0f },
- { 1.0f, 0.0f, 0.0f },
- { 0.0f, 1.0f, 0.0f },
- { 0.0f, 0.0f, 1.0f },
- { 0.0f, 0.0f, 0.0f },
- { 1.0f, 1.0f, 1.0f },
- { 0.9f, 0.9f, 0.9f },
- { 0.05f,0.05f,0.05f},
- { 0.25f,0.25f,0.25f},
- 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.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,
- 0.25f, { "adapture-grill.png" }, 6, 6, 0.1875f, 0.1875f, 0.0f, 0.0f,
- 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
- 0.0f, 1.0f, 0.5f, 1.0f, 0.0f, 0.0f,
- { 0.0f, 0.0f },
- { 0.0f, 0.0f, 0.0f },
- { 0.0f, 0.0f, 0.0f },
- { 0.0f, 0.0f, 0.0f },
- { 0.0f, 0.0f, 0.0f },
- { 1.0f, 0.0f, 0.0f },
- { 0.0f, 1.0f, 0.0f },
- { 0.0f, 0.0f, 1.0f },
- { 0.0f, 0.0f, 0.0f },
- { 1.0f, 1.0f, 1.0f },
- { 0.9f, 0.9f, 0.9f },
- { 0.05f,0.05f,0.05f},
- { 0.25f,0.25f,0.25f},
- 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.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,
- 0.25f, { "adapture-grill.png" }, 6, 6, 0.1875f, 0.1875f, 0.0f, 0.0f,
- 0.15f, 0.0f, 0.0f, 0.0f, 0.0f,
- 1.0f, 1.0f, 0.5f, 1.0f, 0.0f, 0.5f,
- { 3.0f, 3.0f },
- { 0.5f,-0.33f,0.7f },
- { 0.0f,-1.0f, 0.5f },
- { 0.0f, 0.2f, 0.3f },
- { 0.0f, 0.2f, 0.0f },
- { 0.8f, 0.2f, 0.0f },
- { 0.0f, 0.8f, 0.2f},
- { 0.2f, 0.0f, 0.8f},
- { 0.0f, 0.0f, 0.0f },
- { 1.0f, 1.0f, 1.0f },
- { 1.5f, 1.5f, 1.5f },
- { 0.05f,0.05f,0.05f},
- { 0.7f, 0.7f, 0.7f},
- 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.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
- },
-};
-
//============================================================
// PROTOTYPES
//============================================================
-static void get_vector(const char *data, int count, float *out, int report_error);
+static void get_vector(const char *data, int count, float *out, bool report_error);
//============================================================
@@ -187,10 +83,8 @@ shaders::shaders():
{
master_enable = false;
vector_enable = true;
- prescale_size_x = 1;
- prescale_size_y = 1;
- prescale_force_x = 0;
- prescale_force_y = 0;
+ hlsl_prescale_x = 1;
+ hlsl_prescale_x = 1;
preset = -1;
shadow_texture = NULL;
options = NULL;
@@ -208,7 +102,8 @@ shaders::shaders():
shaders::~shaders()
{
- global_free(options);
+ options = NULL;
+
cache_target *currcache = cachehead;
while(cachehead != NULL)
{
@@ -524,24 +419,38 @@ void shaders::toggle()
{
if (initialized)
{
+ // free shader resources before renderer resources
delete_resources(false);
+
+ g_slider_list = NULL;
}
+
master_enable = !master_enable;
+
+ // free shader resources and re-create
+ d3d->device_delete_resources();
+ d3d->device_create_resources();
}
else
{
+ master_enable = !master_enable;
+
+ // free shader resources and re-create
+ d3d->device_delete_resources();
+ d3d->device_create_resources();
+
if (!initialized)
{
- master_enable = !master_enable;
+ // re-create shader resources after renderer resources
bool failed = create_resources(false);
if (failed)
{
master_enable = false;
}
- }
- else
- {
- master_enable = !master_enable;
+ else
+ {
+ g_slider_list = init_slider_list();
+ }
}
}
}
@@ -758,32 +667,19 @@ void shaders::init(base *d3dintf, running_machine *machine, d3d::renderer *rende
this->d3dintf = d3dintf;
this->machine = machine;
this->d3d = renderer;
-
- master_enable = downcast<windows_options &>(machine->options()).d3d_hlsl_enable();
- prescale_size_x = 1;
- prescale_size_y = 1;
- preset = downcast<windows_options &>(machine->options()).d3d_hlsl_preset();
- if (preset < -1 || preset > 3)
- {
- preset = -1;
- }
-
- snap_width = downcast<windows_options &>(machine->options()).d3d_snap_width();
- snap_height = downcast<windows_options &>(machine->options()).d3d_snap_height();
- prescale_force_x = 0;
- prescale_force_y = 0;
+ this->options = renderer->get_shaders_options();
windows_options &winoptions = downcast<windows_options &>(machine->options());
- options = (hlsl_options*)global_alloc_clear(hlsl_options);
+ master_enable = winoptions.d3d_hlsl_enable();
+ hlsl_prescale_x = winoptions.d3d_hlsl_prescale_x();
+ hlsl_prescale_y = winoptions.d3d_hlsl_prescale_y();
+ snap_width = winoptions.d3d_snap_width();
+ snap_height = winoptions.d3d_snap_height();
- options->params_dirty = true;
- strcpy(options->shadow_mask_texture, downcast<windows_options &>(machine->options()).screen_shadow_mask_texture()); // unsafe
-
- prescale_force_x = winoptions.d3d_hlsl_prescale_x();
- prescale_force_y = winoptions.d3d_hlsl_prescale_y();
- if (preset == -1)
+ if (!options->params_init)
{
+ strncpy(options->shadow_mask_texture, winoptions.screen_shadow_mask_texture(), sizeof(options->shadow_mask_texture));
options->shadow_mask_alpha = winoptions.screen_shadow_mask_alpha();
options->shadow_mask_count_x = winoptions.screen_shadow_mask_count_x();
options->shadow_mask_count_y = winoptions.screen_shadow_mask_count_y();
@@ -816,39 +712,36 @@ void shaders::init(base *d3dintf, running_machine *machine, d3d::renderer *rende
get_vector(winoptions.screen_floor(), 3, options->floor, TRUE);
get_vector(winoptions.screen_phosphor(), 3, options->phosphor, TRUE);
options->saturation = winoptions.screen_saturation();
+ options->yiq_enable = winoptions.screen_yiq_enable();
+ options->yiq_cc = winoptions.screen_yiq_cc();
+ options->yiq_a = winoptions.screen_yiq_a();
+ options->yiq_b = winoptions.screen_yiq_b();
+ options->yiq_o = winoptions.screen_yiq_o();
+ options->yiq_p = winoptions.screen_yiq_p();
+ options->yiq_n = winoptions.screen_yiq_n();
+ options->yiq_y = winoptions.screen_yiq_y();
+ options->yiq_i = winoptions.screen_yiq_i();
+ options->yiq_q = winoptions.screen_yiq_q();
+ options->yiq_scan_time = winoptions.screen_yiq_scan_time();
+ options->yiq_phase_count = winoptions.screen_yiq_phase_count();
+ 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();
+ options->bloom_level3_weight = winoptions.screen_bloom_lvl3_weight();
+ options->bloom_level4_weight = winoptions.screen_bloom_lvl4_weight();
+ options->bloom_level5_weight = winoptions.screen_bloom_lvl5_weight();
+ options->bloom_level6_weight = winoptions.screen_bloom_lvl6_weight();
+ options->bloom_level7_weight = winoptions.screen_bloom_lvl7_weight();
+ options->bloom_level8_weight = winoptions.screen_bloom_lvl8_weight();
+ options->bloom_level9_weight = winoptions.screen_bloom_lvl9_weight();
+ options->bloom_level10_weight = winoptions.screen_bloom_lvl10_weight();
+
+ options->params_init = true;
}
- else
- {
- options = &s_hlsl_presets[preset];
- }
-
- options->yiq_enable = winoptions.screen_yiq_enable();
- options->yiq_cc = winoptions.screen_yiq_cc();
- options->yiq_a = winoptions.screen_yiq_a();
- options->yiq_b = winoptions.screen_yiq_b();
- options->yiq_o = winoptions.screen_yiq_o();
- options->yiq_p = winoptions.screen_yiq_p();
- options->yiq_n = winoptions.screen_yiq_n();
- options->yiq_y = winoptions.screen_yiq_y();
- options->yiq_i = winoptions.screen_yiq_i();
- options->yiq_q = winoptions.screen_yiq_q();
- options->yiq_scan_time = winoptions.screen_yiq_scan_time();
- options->yiq_phase_count = winoptions.screen_yiq_phase_count();
- 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();
- options->bloom_level3_weight = winoptions.screen_bloom_lvl3_weight();
- options->bloom_level4_weight = winoptions.screen_bloom_lvl4_weight();
- options->bloom_level5_weight = winoptions.screen_bloom_lvl5_weight();
- options->bloom_level6_weight = winoptions.screen_bloom_lvl6_weight();
- options->bloom_level7_weight = winoptions.screen_bloom_lvl7_weight();
- options->bloom_level8_weight = winoptions.screen_bloom_lvl8_weight();
- options->bloom_level9_weight = winoptions.screen_bloom_lvl9_weight();
- options->bloom_level10_weight = winoptions.screen_bloom_lvl10_weight();
options->params_dirty = true;
@@ -995,7 +888,7 @@ int shaders::create_resources(bool reset)
texture.palette = NULL;
texture.seqid = 0;
- // now create it (no prescale, but wrap)
+ // now create it (no prescale, but wrap)
shadow_texture = new texture_info(d3d->get_texture_manager(), &texture, 1, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXFORMAT(TEXFORMAT_ARGB32) | PRIMFLAG_TEXWRAP_MASK);
}
@@ -1461,7 +1354,9 @@ int shaders::post_pass(render_target *rt, int source_index, poly_info *poly, int
texture_info *texture = poly->get_texture();
bool prepare_vector =
- PRIMFLAG_GET_VECTORBUF(poly->get_flags()) && vector_enable;
+ (machine->first_screen()->screen_type() & SCREEN_TYPE_VECTOR) == SCREEN_TYPE_VECTOR;
+ bool prepare_raster =
+ (machine->first_screen()->screen_type() & SCREEN_TYPE_RASTER) == SCREEN_TYPE_RASTER;
bool orientation_swap_xy =
(d3d->window().machine().system().flags & ORIENTATION_SWAP_XY) == ORIENTATION_SWAP_XY;
bool rotation_swap_xy =
@@ -1486,6 +1381,7 @@ int shaders::post_pass(render_target *rt, int source_index, poly_info *poly, int
curr_effect->set_int("RotationType", rotation_type); // backward compatibility
curr_effect->set_bool("PrepareBloom", prepare_bloom);
curr_effect->set_bool("PrepareVector", prepare_vector);
+ curr_effect->set_bool("PrepareRaster", prepare_raster);
next_index = rt->next_index(next_index);
blit(prepare_bloom ? rt->native_target[next_index] : rt->prescale_target[next_index], true, poly->get_type(), vertnum, poly->get_count());
@@ -1498,7 +1394,7 @@ int shaders::downsample_pass(render_target *rt, int source_index, poly_info *pol
int next_index = source_index;
bool prepare_vector =
- PRIMFLAG_GET_VECTORBUF(poly->get_flags()) && vector_enable;
+ (machine->first_screen()->screen_type() & SCREEN_TYPE_VECTOR) == SCREEN_TYPE_VECTOR;
float bloom_rescale = options->bloom_scale;
// skip downsample if no influencing settings
@@ -1702,7 +1598,8 @@ int shaders::screen_pass(render_target *rt, int source_index, poly_info *poly, i
{
int next_index = source_index;
- bool prepare_vector = PRIMFLAG_GET_VECTORBUF(poly->get_flags()) && vector_enable;
+ bool prepare_vector =
+ (machine->first_screen()->screen_type() & SCREEN_TYPE_VECTOR) == SCREEN_TYPE_VECTOR;
curr_effect = default_effect;
curr_effect->update_uniforms();
@@ -2063,9 +1960,6 @@ bool shaders::register_texture(texture_info *texture)
enumerate_screens();
- hlsl_prescale_x = prescale_force_x;
- hlsl_prescale_y = prescale_force_y;
-
// Find the nearest prescale factor that is over our screen size
if (hlsl_prescale_x == 0)
{
@@ -2245,7 +2139,7 @@ void shaders::delete_resources(bool reset)
// get_vector
//============================================================
-static void get_vector(const char *data, int count, float *out, int report_error)
+static void get_vector(const char *data, int count, float *out, bool report_error)
{
if (count > 3 &&
sscanf(data, "%f,%f,%f,%f", &out[0], &out[1], &out[2], &out[3]) < 4 && report_error)
@@ -2270,11 +2164,11 @@ static void get_vector(const char *data, int count, float *out, int report_error
}
-/*-------------------------------------------------
- slider_alloc - allocate a new slider entry
- currently duplicated from ui.c, this could
- be done in a more ideal way.
--------------------------------------------------*/
+//============================================================
+// slider_alloc - allocate a new slider entry
+// currently duplicated from ui.c, this could
+// be done in a more ideal way.
+//============================================================
static slider_state *slider_alloc(running_machine &machine, const char *title, INT32 minval, INT32 defval, INT32 maxval, INT32 incval, slider_update update, void *arg)
{
@@ -2781,81 +2675,81 @@ static INT32 slider_bloom_lvl10_scale(running_machine &machine, void *arg, std::
shaders::slider_desc shaders::s_sliders[] =
{
- { "Shadow Mask Darkness", 0, 0, 100, 1, slider_shadow_mask_alpha },
- { "Shadow Mask X Count", 1, 6, 1024, 1, slider_shadow_mask_x_count },
- { "Shadow Mask Y Count", 1, 6, 1024, 1, slider_shadow_mask_y_count },
- { "Shadow Mask Pixel Count X", 1, 6, 64, 1, slider_shadow_mask_usize },
- { "Shadow Mask Pixel Count Y", 1, 6, 64, 1, slider_shadow_mask_vsize },
- { "Shadow Mask Offset X", -100, 0, 100, 1, slider_shadow_mask_uoffset },
- { "Shadow Mask Offset Y", -100, 0, 100, 1, slider_shadow_mask_voffset },
- { "Screen Curvature", 0, 0, 100, 1, slider_curvature },
- { "Screen Round Corner", 0, 0, 100, 1, slider_round_corner },
- { "Screen Smooth Border", 0, 0, 100, 1, slider_smooth_border },
- { "Screen Reflection", 0, 0, 100, 1, slider_reflection },
- { "Image Vignetting", 0, 0, 100, 1, slider_vignetting },
- { "Scanline Darkness", 0, 100, 100, 1, slider_scanline_alpha },
- { "Scanline Screen Height", 1, 20, 80, 1, slider_scanline_scale },
- { "Scanline Indiv. Height", 1, 20, 80, 1, slider_scanline_height },
- { "Scanline Brightness", 0, 20, 40, 1, slider_scanline_bright_scale },
- { "Scanline Brightness Overdrive", 0, 0, 20, 1, slider_scanline_bright_offset },
- { "Scanline Jitter", 0, 0, 40, 1, slider_scanline_offset },
- { "Defocus X", 0, 0, 64, 1, slider_defocus_x },
- { "Defocus Y", 0, 0, 64, 1, slider_defocus_y },
- { "Red Position Offset X", -1500, 3, 1500, 1, slider_red_converge_x },
- { "Red Position Offset Y", -1500, 0, 1500, 1, slider_red_converge_y },
- { "Green Position Offset X", -1500, 0, 1500, 1, slider_green_converge_x },
- { "Green Position Offset Y", -1500, 3, 1500, 1, slider_green_converge_y },
- { "Blue Position Offset X", -1500, 3, 1500, 1, slider_blue_converge_x },
- { "Blue Position Offset Y", -1500, 3, 1500, 1, slider_blue_converge_y },
- { "Red Convergence X", -1500, 0, 1500, 1, slider_red_radial_converge_x },
- { "Red Convergence Y", -1500, 0, 1500, 1, slider_red_radial_converge_y },
- { "Green Convergence X", -1500, 0, 1500, 1, slider_green_radial_converge_x },
- { "Green Convergence Y", -1500, 0, 1500, 1, slider_green_radial_converge_y },
- { "Blue Convergence X", -1500, 0, 1500, 1, slider_blue_radial_converge_x },
- { "Blue Convergence Y", -1500, 0, 1500, 1, slider_blue_radial_converge_y },
- { "Red Output from Red Input", -400, 0, 400, 5, slider_red_from_r },
- { "Red Output from Green Input", -400, 0, 400, 5, slider_red_from_g },
- { "Red Output from Blue Input", -400, 0, 400, 5, slider_red_from_b },
- { "Green Output from Red Input", -400, 0, 400, 5, slider_green_from_r },
- { "Green Output from Green Input", -400, 0, 400, 5, slider_green_from_g },
- { "Green Output from Blue Input", -400, 0, 400, 5, slider_green_from_b },
- { "Blue Output from Red Input", -400, 0, 400, 5, slider_blue_from_r },
- { "Blue Output from Green Input", -400, 0, 400, 5, slider_blue_from_g },
- { "Blue Output from Blue Input", -400, 0, 400, 5, slider_blue_from_b },
- { "Saturation", 0, 140, 400, 1, slider_saturation },
- { "Red DC Offset", -100, 0, 100, 1, slider_red_offset },
- { "Green DC Offset", -100, 0, 100, 1, slider_green_offset },
- { "Blue DC Offset", -100, 0, 100, 1, slider_blue_offset },
- { "Red Scale", -200, 95, 200, 1, slider_red_scale },
- { "Green Scale", -200, 95, 200, 1, slider_green_scale },
- { "Blue Scale", -200, 95, 200, 1, slider_blue_scale },
- { "Red Gamma", -80, 16, 80, 1, slider_red_power },
- { "Green Gamma", -80, 16, 80, 1, slider_green_power },
- { "Blue Gamma", -80, 16, 80, 1, slider_blue_power },
- { "Red Floor", 0, 5, 100, 1, slider_red_floor },
- { "Green Floor", 0, 5, 100, 1, slider_green_floor },
- { "Blue Floor", 0, 5, 100, 1, slider_blue_floor },
- { "Red Phosphor Life", 0, 40, 100, 1, slider_red_phosphor_life },
- { "Green Phosphor Life", 0, 40, 100, 1, slider_green_phosphor_life },
- { "Blue Phosphor Life", 0, 40, 100, 1, slider_blue_phosphor_life },
- { "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 },
- { "Bloom Level 3 Scale", 0, 17, 100, 1, slider_bloom_lvl3_scale },
- { "Bloom Level 4 Scale", 0, 15, 100, 1, slider_bloom_lvl4_scale },
- { "Bloom Level 5 Scale", 0, 14, 100, 1, slider_bloom_lvl5_scale },
- { "Bloom Level 6 Scale", 0, 13, 100, 1, slider_bloom_lvl6_scale },
- { "Bloom Level 7 Scale", 0, 12, 100, 1, slider_bloom_lvl7_scale },
- { "Bloom Level 8 Scale", 0, 11, 100, 1, slider_bloom_lvl8_scale },
- { "Bloom Level 9 Scale", 0, 10, 100, 1, slider_bloom_lvl9_scale },
- { "Bloom Level 10 Scale", 0, 9, 100, 1, slider_bloom_lvl10_scale },
- { NULL, 0, 0, 0, 0, NULL },
+ { "Vector Length Attenuation", 0, 80, 100, 1, 2, slider_vector_attenuation },
+ { "Vector Attenuation Length Limit", 1, 500, 1000, 1, 2, slider_vector_length_max },
+ { "Shadow Mask Darkness", 0, 0, 100, 1, 7, slider_shadow_mask_alpha },
+ { "Shadow Mask X Count", 1, 6, 1024, 1, 7, slider_shadow_mask_x_count },
+ { "Shadow Mask Y Count", 1, 6, 1024, 1, 7, slider_shadow_mask_y_count },
+ { "Shadow Mask Pixel Count X", 1, 6, 64, 1, 7, slider_shadow_mask_usize },
+ { "Shadow Mask Pixel Count Y", 1, 6, 64, 1, 7, slider_shadow_mask_vsize },
+ { "Shadow Mask Offset X", -100, 0, 100, 1, 7, slider_shadow_mask_uoffset },
+ { "Shadow Mask Offset Y", -100, 0, 100, 1, 7, slider_shadow_mask_voffset },
+ { "Screen Curvature", 0, 0, 100, 1, 7, slider_curvature },
+ { "Screen Round Corner", 0, 0, 100, 1, 7, slider_round_corner },
+ { "Screen Smooth Border", 0, 0, 100, 1, 7, slider_smooth_border },
+ { "Screen Reflection", 0, 0, 100, 1, 7, slider_reflection },
+ { "Image Vignetting", 0, 0, 100, 1, 7, slider_vignetting },
+ { "Scanline Darkness", 0, 100, 100, 1, 1, slider_scanline_alpha },
+ { "Scanline Screen Height", 1, 20, 80, 1, 1, slider_scanline_scale },
+ { "Scanline Indiv. Height", 1, 20, 80, 1, 1, slider_scanline_height },
+ { "Scanline Brightness", 0, 20, 40, 1, 1, slider_scanline_bright_scale },
+ { "Scanline Brightness Overdrive", 0, 0, 20, 1, 1, slider_scanline_bright_offset },
+ { "Scanline Jitter", 0, 0, 40, 1, 1, slider_scanline_offset },
+ { "Defocus X", 0, 0, 64, 1, 3, slider_defocus_x },
+ { "Defocus Y", 0, 0, 64, 1, 3, slider_defocus_y },
+ { "Red Position Offset X", -1500, 3, 1500, 1, 3, slider_red_converge_x },
+ { "Red Position Offset Y", -1500, 0, 1500, 1, 3, slider_red_converge_y },
+ { "Green Position Offset X", -1500, 0, 1500, 1, 3, slider_green_converge_x },
+ { "Green Position Offset Y", -1500, 3, 1500, 1, 3, slider_green_converge_y },
+ { "Blue Position Offset X", -1500, 3, 1500, 1, 3, slider_blue_converge_x },
+ { "Blue Position Offset Y", -1500, 3, 1500, 1, 3, slider_blue_converge_y },
+ { "Red Convergence X", -1500, 0, 1500, 1, 3, slider_red_radial_converge_x },
+ { "Red Convergence Y", -1500, 0, 1500, 1, 3, slider_red_radial_converge_y },
+ { "Green Convergence X", -1500, 0, 1500, 1, 3, slider_green_radial_converge_x },
+ { "Green Convergence Y", -1500, 0, 1500, 1, 3, slider_green_radial_converge_y },
+ { "Blue Convergence X", -1500, 0, 1500, 1, 3, slider_blue_radial_converge_x },
+ { "Blue Convergence Y", -1500, 0, 1500, 1, 3, slider_blue_radial_converge_y },
+ { "Red Output from Red Input", -400, 0, 400, 5, 7, slider_red_from_r },
+ { "Red Output from Green Input", -400, 0, 400, 5, 7, slider_red_from_g },
+ { "Red Output from Blue Input", -400, 0, 400, 5, 7, slider_red_from_b },
+ { "Green Output from Red Input", -400, 0, 400, 5, 7, slider_green_from_r },
+ { "Green Output from Green Input", -400, 0, 400, 5, 7, slider_green_from_g },
+ { "Green Output from Blue Input", -400, 0, 400, 5, 7, slider_green_from_b },
+ { "Blue Output from Red Input", -400, 0, 400, 5, 7, slider_blue_from_r },
+ { "Blue Output from Green Input", -400, 0, 400, 5, 7, slider_blue_from_g },
+ { "Blue Output from Blue Input", -400, 0, 400, 5, 7, slider_blue_from_b },
+ { "Saturation", 0, 140, 400, 1, 7, slider_saturation },
+ { "Red DC Offset", -100, 0, 100, 1, 7, slider_red_offset },
+ { "Green DC Offset", -100, 0, 100, 1, 7, slider_green_offset },
+ { "Blue DC Offset", -100, 0, 100, 1, 7, slider_blue_offset },
+ { "Red Scale", -200, 95, 200, 1, 7, slider_red_scale },
+ { "Green Scale", -200, 95, 200, 1, 7, slider_green_scale },
+ { "Blue Scale", -200, 95, 200, 1, 7, slider_blue_scale },
+ { "Red Gamma", -80, 16, 80, 1, 7, slider_red_power },
+ { "Green Gamma", -80, 16, 80, 1, 7, slider_green_power },
+ { "Blue Gamma", -80, 16, 80, 1, 7, slider_blue_power },
+ { "Red Floor", 0, 5, 100, 1, 7, slider_red_floor },
+ { "Green Floor", 0, 5, 100, 1, 7, slider_green_floor },
+ { "Blue Floor", 0, 5, 100, 1, 7, slider_blue_floor },
+ { "Red Phosphor Life", 0, 40, 100, 1, 7, slider_red_phosphor_life },
+ { "Green Phosphor Life", 0, 40, 100, 1, 7, slider_green_phosphor_life },
+ { "Blue Phosphor Life", 0, 40, 100, 1, 7, slider_blue_phosphor_life },
+ { "Bloom Scale", 0, 250, 2000, 5, 7, slider_bloom_scale },
+ { "Bloom Red Overdrive", 0, 250, 2000, 5, 7, slider_bloom_red_overdrive },
+ { "Bloom Green Overdrive", 0, 250, 2000, 5, 7, slider_bloom_green_overdrive },
+ { "Bloom Blue Overdrive", 0, 250, 2000, 5, 7, slider_bloom_blue_overdrive },
+ { "Bloom Level 0 Scale", 0, 100, 100, 1, 7, slider_bloom_lvl0_scale },
+ { "Bloom Level 1 Scale", 0, 21, 100, 1, 7, slider_bloom_lvl1_scale },
+ { "Bloom Level 2 Scale", 0, 19, 100, 1, 7, slider_bloom_lvl2_scale },
+ { "Bloom Level 3 Scale", 0, 17, 100, 1, 7, slider_bloom_lvl3_scale },
+ { "Bloom Level 4 Scale", 0, 15, 100, 1, 7, slider_bloom_lvl4_scale },
+ { "Bloom Level 5 Scale", 0, 14, 100, 1, 7, slider_bloom_lvl5_scale },
+ { "Bloom Level 6 Scale", 0, 13, 100, 1, 7, slider_bloom_lvl6_scale },
+ { "Bloom Level 7 Scale", 0, 12, 100, 1, 7, slider_bloom_lvl7_scale },
+ { "Bloom Level 8 Scale", 0, 11, 100, 1, 7, slider_bloom_lvl8_scale },
+ { "Bloom Level 9 Scale", 0, 10, 100, 1, 7, slider_bloom_lvl9_scale },
+ { "Bloom Level 10 Scale", 0, 9, 100, 1, 7, slider_bloom_lvl10_scale },
+ { NULL, 0, 0, 0, 0, 0, NULL },
};
slider_state *shaders::init_slider_list()
@@ -2872,8 +2766,15 @@ slider_state *shaders::init_slider_list()
for (int index = 0; s_sliders[index].name != NULL; index++)
{
slider_desc *slider = &s_sliders[index];
- *tailptr = slider_alloc(*machine, slider->name, slider->minval, slider->defval, slider->maxval, slider->step, slider->adjustor, (void*)options);
- tailptr = &(*tailptr)->next;
+
+ int screen_type = machine->first_screen()->screen_type();
+ if ((screen_type == SCREEN_TYPE_VECTOR && (slider->screen_type & SLIDER_SCREEN_TYPE_VECTOR) == SLIDER_SCREEN_TYPE_VECTOR) ||
+ (screen_type == SCREEN_TYPE_RASTER && (slider->screen_type & SLIDER_SCREEN_TYPE_RASTER) == SLIDER_SCREEN_TYPE_RASTER) ||
+ (screen_type == SCREEN_TYPE_LCD && (slider->screen_type & SLIDER_SCREEN_TYPE_LCD) == SLIDER_SCREEN_TYPE_LCD))
+ {
+ *tailptr = slider_alloc(*machine, slider->name, slider->minval, slider->defval, slider->maxval, slider->step, slider->adjustor, (void*)options);
+ tailptr = &(*tailptr)->next;
+ }
}
return listhead;