summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author ImJezze <jezze@gmx.net>2015-11-07 12:03:13 +0100
committer ImJezze <jezze@gmx.net>2015-11-07 12:03:36 +0100
commit2a3bd8b8d0b99316e18f5685767d76afb788a6d5 (patch)
tree1919af22fa6d39942c62ad38ceb47dd37fb3e2be
parentd70ccc7ba30af5f60c54b94e3d169f3da9d06d79 (diff)
Cleanup
- removed duplicate prescale fields - made visibility of HLSL options depending on screen type - disabled scanlines for LCD screen type
-rw-r--r--hlsl/post.fx5
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.c206
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.h13
3 files changed, 116 insertions, 108 deletions
diff --git a/hlsl/post.fx b/hlsl/post.fx
index 70b374179c4..b457b9687e2 100644
--- a/hlsl/post.fx
+++ b/hlsl/post.fx
@@ -87,6 +87,7 @@ uniform bool RotationSwapXY = false; // swapped default screen orientation due t
uniform bool PrepareBloom = false; // disables some effects for rendering bloom textures
uniform bool PrepareVector = false;
+uniform bool PrepareRaster = false;
VS_OUTPUT vs_main(VS_INPUT Input)
{
@@ -204,8 +205,8 @@ float4 ps_main(PS_INPUT Input) : COLOR
// Scanline Simulation (may not affect bloom)
if (!PrepareBloom)
{
- // Scanline Simulation (disabled for vector)
- if (!PrepareVector)
+ // Scanline Simulation (only for raster screen)
+ if (PrepareRaster)
{
float InnerSine = BaseCoord.y * ScanlineScale * SourceDims.y;
float ScanJitter = ScanlineOffset * SourceDims.y;
diff --git a/src/osd/modules/render/d3d/d3dhlsl.c b/src/osd/modules/render/d3d/d3dhlsl.c
index 00603e45e82..35922e8ec35 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.c
+++ b/src/osd/modules/render/d3d/d3dhlsl.c
@@ -182,10 +182,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;
@@ -754,29 +752,25 @@ void shaders::init(base *d3dintf, running_machine *machine, d3d::renderer *rende
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();
+ windows_options &winoptions = downcast<windows_options &>(machine->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();
+ preset = winoptions.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;
-
- windows_options &winoptions = downcast<windows_options &>(machine->options());
-
options = (hlsl_options*)global_alloc_clear(hlsl_options);
- options->params_dirty = true;
- strcpy(options->shadow_mask_texture, downcast<windows_options &>(machine->options()).screen_shadow_mask_texture()); // unsafe
+ // unsafe
+ strcpy(options->shadow_mask_texture, winoptions.screen_shadow_mask_texture());
- prescale_force_x = winoptions.d3d_hlsl_prescale_x();
- prescale_force_y = winoptions.d3d_hlsl_prescale_y();
if (preset == -1)
{
options->shadow_mask_alpha = winoptions.screen_shadow_mask_alpha();
@@ -1456,7 +1450,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 =
@@ -1481,6 +1477,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());
@@ -1493,7 +1490,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
@@ -1697,7 +1694,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();
@@ -2058,9 +2056,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)
{
@@ -2776,81 +2771,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()
@@ -2867,8 +2862,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;
diff --git a/src/osd/modules/render/d3d/d3dhlsl.h b/src/osd/modules/render/d3d/d3dhlsl.h
index 6c9c14faaf5..2f514e84cf0 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.h
+++ b/src/osd/modules/render/d3d/d3dhlsl.h
@@ -307,6 +307,14 @@ public:
// slider-related functions
slider_state *init_slider_list();
+ enum slider_screen_type
+ {
+ SLIDER_SCREEN_TYPE_NONE = 0,
+ SLIDER_SCREEN_TYPE_RASTER = 1,
+ SLIDER_SCREEN_TYPE_VECTOR = 2,
+ SLIDER_SCREEN_TYPE_LCD = 4
+ };
+
struct slider_desc
{
const char * name;
@@ -314,6 +322,7 @@ public:
int defval;
int maxval;
int step;
+ int screen_type;
INT32(*adjustor)(running_machine &, void *, std::string *, INT32);
};
@@ -360,10 +369,6 @@ private:
int lastidx; // index of the last-encountered target
bool write_ini; // enable external ini saving
bool read_ini; // enable external ini loading
- int prescale_force_x; // prescale force x
- int prescale_force_y; // prescale force y
- int prescale_size_x; // prescale size x
- int prescale_size_y; // prescale size y
int hlsl_prescale_x; // hlsl prescale x
int hlsl_prescale_y; // hlsl prescale y
float bloom_dims[11][2]; // bloom texture dimensions