Previous 199869 Revisions Next

r41774 Saturday 7th November, 2015 at 11:03:36 UTC by Jezze
Cleanup

- removed duplicate prescale fields
- made visibility of HLSL options depending on screen type
- disabled scanlines for LCD screen type
[hlsl]post.fx
[src/osd/modules/render/d3d]d3dhlsl.c d3dhlsl.h

trunk/hlsl/post.fx
r250285r250286
8787
8888uniform bool PrepareBloom = false; // disables some effects for rendering bloom textures
8989uniform bool PrepareVector = false;
90uniform bool PrepareRaster = false;
9091
9192VS_OUTPUT vs_main(VS_INPUT Input)
9293{
r250285r250286
204205   // Scanline Simulation (may not affect bloom)
205206   if (!PrepareBloom)
206207   {
207      // Scanline Simulation (disabled for vector)
208      if (!PrepareVector)
208      // Scanline Simulation (only for raster screen)
209      if (PrepareRaster)
209210      {
210211         float InnerSine = BaseCoord.y * ScanlineScale * SourceDims.y;
211212         float ScanJitter = ScanlineOffset * SourceDims.y;
trunk/src/osd/modules/render/d3d/d3dhlsl.c
r250285r250286
182182{
183183   master_enable = false;
184184   vector_enable = true;
185   prescale_size_x = 1;
186   prescale_size_y = 1;
187   prescale_force_x = 0;
188   prescale_force_y = 0;
185   hlsl_prescale_x = 1;
186   hlsl_prescale_x = 1;
189187   preset = -1;
190188   shadow_texture = NULL;
191189   options = NULL;
r250285r250286
754752   this->machine = machine;
755753   this->d3d = renderer;
756754
757   master_enable = downcast<windows_options &>(machine->options()).d3d_hlsl_enable();
758   prescale_size_x = 1;
759   prescale_size_y = 1;
760   preset = downcast<windows_options &>(machine->options()).d3d_hlsl_preset();
755   windows_options &winoptions = downcast<windows_options &>(machine->options());
756
757   master_enable = winoptions.d3d_hlsl_enable();
758   hlsl_prescale_x = winoptions.d3d_hlsl_prescale_x();
759   hlsl_prescale_y = winoptions.d3d_hlsl_prescale_y();
760   snap_width = winoptions.d3d_snap_width();
761   snap_height = winoptions.d3d_snap_height();
762   preset = winoptions.d3d_hlsl_preset();
763
761764   if (preset < -1 || preset > 3)
762765   {
763766      preset = -1;
764767   }
765768
766   snap_width = downcast<windows_options &>(machine->options()).d3d_snap_width();
767   snap_height = downcast<windows_options &>(machine->options()).d3d_snap_height();
768   prescale_force_x = 0;
769   prescale_force_y = 0;
770
771   windows_options &winoptions = downcast<windows_options &>(machine->options());
772
773769   options = (hlsl_options*)global_alloc_clear(hlsl_options);
774770
775   options->params_dirty = true;
776   strcpy(options->shadow_mask_texture, downcast<windows_options &>(machine->options()).screen_shadow_mask_texture()); // unsafe
771   // unsafe
772   strcpy(options->shadow_mask_texture, winoptions.screen_shadow_mask_texture());
777773
778   prescale_force_x = winoptions.d3d_hlsl_prescale_x();
779   prescale_force_y = winoptions.d3d_hlsl_prescale_y();
780774   if (preset == -1)
781775   {
782776      options->shadow_mask_alpha = winoptions.screen_shadow_mask_alpha();
r250285r250286
14561450   texture_info *texture = poly->get_texture();
14571451
14581452   bool prepare_vector =
1459      PRIMFLAG_GET_VECTORBUF(poly->get_flags()) && vector_enable;
1453      (machine->first_screen()->screen_type() &  SCREEN_TYPE_VECTOR) == SCREEN_TYPE_VECTOR;
1454   bool prepare_raster =
1455      (machine->first_screen()->screen_type() &  SCREEN_TYPE_RASTER) == SCREEN_TYPE_RASTER;
14601456   bool orientation_swap_xy =
14611457      (d3d->window().machine().system().flags & ORIENTATION_SWAP_XY) == ORIENTATION_SWAP_XY;
14621458   bool rotation_swap_xy =
r250285r250286
14811477   curr_effect->set_int("RotationType", rotation_type); // backward compatibility
14821478   curr_effect->set_bool("PrepareBloom", prepare_bloom);
14831479   curr_effect->set_bool("PrepareVector", prepare_vector);
1480   curr_effect->set_bool("PrepareRaster", prepare_raster);
14841481
14851482   next_index = rt->next_index(next_index);
14861483   blit(prepare_bloom ? rt->native_target[next_index] : rt->prescale_target[next_index], true, poly->get_type(), vertnum, poly->get_count());
r250285r250286
14931490   int next_index = source_index;
14941491
14951492   bool prepare_vector =
1496      PRIMFLAG_GET_VECTORBUF(poly->get_flags()) && vector_enable;
1493      (machine->first_screen()->screen_type() &  SCREEN_TYPE_VECTOR) == SCREEN_TYPE_VECTOR;
14971494   float bloom_rescale = options->bloom_scale;
14981495
14991496   // skip downsample if no influencing settings
r250285r250286
16971694{
16981695   int next_index = source_index;
16991696
1700   bool prepare_vector = PRIMFLAG_GET_VECTORBUF(poly->get_flags()) && vector_enable;
1697   bool prepare_vector =
1698      (machine->first_screen()->screen_type() &  SCREEN_TYPE_VECTOR) == SCREEN_TYPE_VECTOR;
17011699
17021700   curr_effect = default_effect;
17031701   curr_effect->update_uniforms();
r250285r250286
20582056
20592057   enumerate_screens();
20602058
2061   hlsl_prescale_x = prescale_force_x;
2062   hlsl_prescale_y = prescale_force_y;
2063
20642059   // Find the nearest prescale factor that is over our screen size
20652060   if (hlsl_prescale_x == 0)
20662061   {
r250285r250286
27762771
27772772shaders::slider_desc shaders::s_sliders[] =
27782773{
2779   { "Shadow Mask Darkness",                0,     0,   100, 1, slider_shadow_mask_alpha },
2780   { "Shadow Mask X Count",                 1,     6,  1024, 1, slider_shadow_mask_x_count },
2781   { "Shadow Mask Y Count",                 1,     6,  1024, 1, slider_shadow_mask_y_count },
2782   { "Shadow Mask Pixel Count X",           1,     6,    64, 1, slider_shadow_mask_usize },
2783   { "Shadow Mask Pixel Count Y",           1,     6,    64, 1, slider_shadow_mask_vsize },
2784   { "Shadow Mask Offset X",             -100,     0,   100, 1, slider_shadow_mask_uoffset },
2785   { "Shadow Mask Offset Y",             -100,     0,   100, 1, slider_shadow_mask_voffset },
2786   { "Screen Curvature",                    0,     0,   100, 1, slider_curvature },
2787   { "Screen Round Corner",                 0,     0,   100, 1, slider_round_corner },
2788   { "Screen Smooth Border",                0,     0,   100, 1, slider_smooth_border },
2789   { "Screen Reflection",                   0,     0,   100, 1, slider_reflection },
2790   { "Image Vignetting",                    0,     0,   100, 1, slider_vignetting },
2791   { "Scanline Darkness",                   0,   100,   100, 1, slider_scanline_alpha },
2792   { "Scanline Screen Height",              1,    20,    80, 1, slider_scanline_scale },
2793   { "Scanline Indiv. Height",              1,    20,    80, 1, slider_scanline_height },
2794   { "Scanline Brightness",                 0,    20,    40, 1, slider_scanline_bright_scale },
2795   { "Scanline Brightness Overdrive",       0,     0,    20, 1, slider_scanline_bright_offset },
2796   { "Scanline Jitter",                     0,     0,    40, 1, slider_scanline_offset },
2797   { "Defocus X",                           0,     0,    64, 1, slider_defocus_x },
2798   { "Defocus Y",                           0,     0,    64, 1, slider_defocus_y },
2799   { "Red Position Offset X",           -1500,     3,  1500, 1, slider_red_converge_x },
2800   { "Red Position Offset Y",           -1500,     0,  1500, 1, slider_red_converge_y },
2801   { "Green Position Offset X",         -1500,     0,  1500, 1, slider_green_converge_x },
2802   { "Green Position Offset Y",         -1500,     3,  1500, 1, slider_green_converge_y },
2803   { "Blue Position Offset X",          -1500,     3,  1500, 1, slider_blue_converge_x },
2804   { "Blue Position Offset Y",          -1500,     3,  1500, 1, slider_blue_converge_y },
2805   { "Red Convergence X",               -1500,     0,  1500, 1, slider_red_radial_converge_x },
2806   { "Red Convergence Y",               -1500,     0,  1500, 1, slider_red_radial_converge_y },
2807   { "Green Convergence X",             -1500,     0,  1500, 1, slider_green_radial_converge_x },
2808   { "Green Convergence Y",             -1500,     0,  1500, 1, slider_green_radial_converge_y },
2809   { "Blue Convergence X",              -1500,     0,  1500, 1, slider_blue_radial_converge_x },
2810   { "Blue Convergence Y",              -1500,     0,  1500, 1, slider_blue_radial_converge_y },
2811   { "Red Output from Red Input",        -400,     0,   400, 5, slider_red_from_r },
2812   { "Red Output from Green Input",      -400,     0,   400, 5, slider_red_from_g },
2813   { "Red Output from Blue Input",       -400,     0,   400, 5, slider_red_from_b },
2814   { "Green Output from Red Input",      -400,     0,   400, 5, slider_green_from_r },
2815   { "Green Output from Green Input",    -400,     0,   400, 5, slider_green_from_g },
2816   { "Green Output from Blue Input",     -400,     0,   400, 5, slider_green_from_b },
2817   { "Blue Output from Red Input",       -400,     0,   400, 5, slider_blue_from_r },
2818   { "Blue Output from Green Input",     -400,     0,   400, 5, slider_blue_from_g },
2819   { "Blue Output from Blue Input",      -400,     0,   400, 5, slider_blue_from_b },
2820   { "Saturation",                          0,   140,   400, 1, slider_saturation },
2821   { "Red DC Offset",                    -100,     0,   100, 1, slider_red_offset },
2822   { "Green DC Offset",                  -100,     0,   100, 1, slider_green_offset },
2823   { "Blue DC Offset",                   -100,     0,   100, 1, slider_blue_offset },
2824   { "Red Scale",                        -200,    95,   200, 1, slider_red_scale },
2825   { "Green Scale",                      -200,    95,   200, 1, slider_green_scale },
2826   { "Blue Scale",                       -200,    95,   200, 1, slider_blue_scale },
2827   { "Red Gamma",                         -80,    16,    80, 1, slider_red_power },
2828   { "Green Gamma",                       -80,    16,    80, 1, slider_green_power },
2829   { "Blue Gamma",                        -80,    16,    80, 1, slider_blue_power },
2830   { "Red Floor",                           0,     5,   100, 1, slider_red_floor },
2831   { "Green Floor",                         0,     5,   100, 1, slider_green_floor },
2832   { "Blue Floor",                          0,     5,   100, 1, slider_blue_floor },
2833   { "Red Phosphor Life",                   0,    40,   100, 1, slider_red_phosphor_life },
2834   { "Green Phosphor Life",                 0,    40,   100, 1, slider_green_phosphor_life },
2835   { "Blue Phosphor Life",                  0,    40,   100, 1, slider_blue_phosphor_life },
2836   { "Vector Length Attenuation",           0,    80,   100, 1, slider_vector_attenuation },
2837   { "Vector Attenuation Length Limit",     1,   500,  1000, 1, slider_vector_length_max },
2838   { "Bloom Scale",                         0,   250,  2000, 5, slider_bloom_scale },
2839   { "Bloom Red Overdrive",                 0,   250,  2000, 5, slider_bloom_red_overdrive },
2840   { "Bloom Green Overdrive",               0,   250,  2000, 5, slider_bloom_green_overdrive },
2841   { "Bloom Blue Overdrive",                0,   250,  2000, 5, slider_bloom_blue_overdrive },
2842   { "Bloom Level 0 Scale",                 0,   100,   100, 1, slider_bloom_lvl0_scale },
2843   { "Bloom Level 1 Scale",                 0,    21,   100, 1, slider_bloom_lvl1_scale },
2844   { "Bloom Level 2 Scale",                 0,    19,   100, 1, slider_bloom_lvl2_scale },
2845   { "Bloom Level 3 Scale",                 0,    17,   100, 1, slider_bloom_lvl3_scale },
2846   { "Bloom Level 4 Scale",                 0,    15,   100, 1, slider_bloom_lvl4_scale },
2847   { "Bloom Level 5 Scale",                 0,    14,   100, 1, slider_bloom_lvl5_scale },
2848   { "Bloom Level 6 Scale",                 0,    13,   100, 1, slider_bloom_lvl6_scale },
2849   { "Bloom Level 7 Scale",                 0,    12,   100, 1, slider_bloom_lvl7_scale },
2850   { "Bloom Level 8 Scale",                 0,    11,   100, 1, slider_bloom_lvl8_scale },
2851   { "Bloom Level 9 Scale",                 0,    10,   100, 1, slider_bloom_lvl9_scale },
2852   { "Bloom Level 10 Scale",                0,     9,   100, 1, slider_bloom_lvl10_scale },
2853   { NULL, 0, 0, 0, 0, NULL },
2774   { "Vector Length Attenuation",           0,    80,   100, 1, 2, slider_vector_attenuation },
2775   { "Vector Attenuation Length Limit",     1,   500,  1000, 1, 2, slider_vector_length_max },
2776   { "Shadow Mask Darkness",                0,     0,   100, 1, 7, slider_shadow_mask_alpha },
2777   { "Shadow Mask X Count",                 1,     6,  1024, 1, 7, slider_shadow_mask_x_count },
2778   { "Shadow Mask Y Count",                 1,     6,  1024, 1, 7, slider_shadow_mask_y_count },
2779   { "Shadow Mask Pixel Count X",           1,     6,    64, 1, 7, slider_shadow_mask_usize },
2780   { "Shadow Mask Pixel Count Y",           1,     6,    64, 1, 7, slider_shadow_mask_vsize },
2781   { "Shadow Mask Offset X",             -100,     0,   100, 1, 7, slider_shadow_mask_uoffset },
2782   { "Shadow Mask Offset Y",             -100,     0,   100, 1, 7, slider_shadow_mask_voffset },
2783   { "Screen Curvature",                    0,     0,   100, 1, 7, slider_curvature },
2784   { "Screen Round Corner",                 0,     0,   100, 1, 7, slider_round_corner },
2785   { "Screen Smooth Border",                0,     0,   100, 1, 7, slider_smooth_border },
2786   { "Screen Reflection",                   0,     0,   100, 1, 7, slider_reflection },
2787   { "Image Vignetting",                    0,     0,   100, 1, 7, slider_vignetting },
2788   { "Scanline Darkness",                   0,   100,   100, 1, 1, slider_scanline_alpha },
2789   { "Scanline Screen Height",              1,    20,    80, 1, 1, slider_scanline_scale },
2790   { "Scanline Indiv. Height",              1,    20,    80, 1, 1, slider_scanline_height },
2791   { "Scanline Brightness",                 0,    20,    40, 1, 1, slider_scanline_bright_scale },
2792   { "Scanline Brightness Overdrive",       0,     0,    20, 1, 1, slider_scanline_bright_offset },
2793   { "Scanline Jitter",                     0,     0,    40, 1, 1, slider_scanline_offset },
2794   { "Defocus X",                           0,     0,    64, 1, 3, slider_defocus_x },
2795   { "Defocus Y",                           0,     0,    64, 1, 3, slider_defocus_y },
2796   { "Red Position Offset X",           -1500,     3,  1500, 1, 3, slider_red_converge_x },
2797   { "Red Position Offset Y",           -1500,     0,  1500, 1, 3, slider_red_converge_y },
2798   { "Green Position Offset X",         -1500,     0,  1500, 1, 3, slider_green_converge_x },
2799   { "Green Position Offset Y",         -1500,     3,  1500, 1, 3, slider_green_converge_y },
2800   { "Blue Position Offset X",          -1500,     3,  1500, 1, 3, slider_blue_converge_x },
2801   { "Blue Position Offset Y",          -1500,     3,  1500, 1, 3, slider_blue_converge_y },
2802   { "Red Convergence X",               -1500,     0,  1500, 1, 3, slider_red_radial_converge_x },
2803   { "Red Convergence Y",               -1500,     0,  1500, 1, 3, slider_red_radial_converge_y },
2804   { "Green Convergence X",             -1500,     0,  1500, 1, 3, slider_green_radial_converge_x },
2805   { "Green Convergence Y",             -1500,     0,  1500, 1, 3, slider_green_radial_converge_y },
2806   { "Blue Convergence X",              -1500,     0,  1500, 1, 3, slider_blue_radial_converge_x },
2807   { "Blue Convergence Y",              -1500,     0,  1500, 1, 3, slider_blue_radial_converge_y },
2808   { "Red Output from Red Input",        -400,     0,   400, 5, 7, slider_red_from_r },
2809   { "Red Output from Green Input",      -400,     0,   400, 5, 7, slider_red_from_g },
2810   { "Red Output from Blue Input",       -400,     0,   400, 5, 7, slider_red_from_b },
2811   { "Green Output from Red Input",      -400,     0,   400, 5, 7, slider_green_from_r },
2812   { "Green Output from Green Input",    -400,     0,   400, 5, 7, slider_green_from_g },
2813   { "Green Output from Blue Input",     -400,     0,   400, 5, 7, slider_green_from_b },
2814   { "Blue Output from Red Input",       -400,     0,   400, 5, 7, slider_blue_from_r },
2815   { "Blue Output from Green Input",     -400,     0,   400, 5, 7, slider_blue_from_g },
2816   { "Blue Output from Blue Input",      -400,     0,   400, 5, 7, slider_blue_from_b },
2817   { "Saturation",                          0,   140,   400, 1, 7, slider_saturation },
2818   { "Red DC Offset",                    -100,     0,   100, 1, 7, slider_red_offset },
2819   { "Green DC Offset",                  -100,     0,   100, 1, 7, slider_green_offset },
2820   { "Blue DC Offset",                   -100,     0,   100, 1, 7, slider_blue_offset },
2821   { "Red Scale",                        -200,    95,   200, 1, 7, slider_red_scale },
2822   { "Green Scale",                      -200,    95,   200, 1, 7, slider_green_scale },
2823   { "Blue Scale",                       -200,    95,   200, 1, 7, slider_blue_scale },
2824   { "Red Gamma",                         -80,    16,    80, 1, 7, slider_red_power },
2825   { "Green Gamma",                       -80,    16,    80, 1, 7, slider_green_power },
2826   { "Blue Gamma",                        -80,    16,    80, 1, 7, slider_blue_power },
2827   { "Red Floor",                           0,     5,   100, 1, 7, slider_red_floor },
2828   { "Green Floor",                         0,     5,   100, 1, 7, slider_green_floor },
2829   { "Blue Floor",                          0,     5,   100, 1, 7, slider_blue_floor },
2830   { "Red Phosphor Life",                   0,    40,   100, 1, 7, slider_red_phosphor_life },
2831   { "Green Phosphor Life",                 0,    40,   100, 1, 7, slider_green_phosphor_life },
2832   { "Blue Phosphor Life",                  0,    40,   100, 1, 7, slider_blue_phosphor_life },
2833   { "Bloom Scale",                         0,   250,  2000, 5, 7, slider_bloom_scale },
2834   { "Bloom Red Overdrive",                 0,   250,  2000, 5, 7, slider_bloom_red_overdrive },
2835   { "Bloom Green Overdrive",               0,   250,  2000, 5, 7, slider_bloom_green_overdrive },
2836   { "Bloom Blue Overdrive",                0,   250,  2000, 5, 7, slider_bloom_blue_overdrive },
2837   { "Bloom Level 0 Scale",                 0,   100,   100, 1, 7, slider_bloom_lvl0_scale },
2838   { "Bloom Level 1 Scale",                 0,    21,   100, 1, 7, slider_bloom_lvl1_scale },
2839   { "Bloom Level 2 Scale",                 0,    19,   100, 1, 7, slider_bloom_lvl2_scale },
2840   { "Bloom Level 3 Scale",                 0,    17,   100, 1, 7, slider_bloom_lvl3_scale },
2841   { "Bloom Level 4 Scale",                 0,    15,   100, 1, 7, slider_bloom_lvl4_scale },
2842   { "Bloom Level 5 Scale",                 0,    14,   100, 1, 7, slider_bloom_lvl5_scale },
2843   { "Bloom Level 6 Scale",                 0,    13,   100, 1, 7, slider_bloom_lvl6_scale },
2844   { "Bloom Level 7 Scale",                 0,    12,   100, 1, 7, slider_bloom_lvl7_scale },
2845   { "Bloom Level 8 Scale",                 0,    11,   100, 1, 7, slider_bloom_lvl8_scale },
2846   { "Bloom Level 9 Scale",                 0,    10,   100, 1, 7, slider_bloom_lvl9_scale },
2847   { "Bloom Level 10 Scale",                0,     9,   100, 1, 7, slider_bloom_lvl10_scale },
2848   { NULL, 0, 0, 0, 0, 0, NULL },
28542849};
28552850
28562851slider_state *shaders::init_slider_list()
r250285r250286
28672862   for (int index = 0; s_sliders[index].name != NULL; index++)
28682863   {
28692864      slider_desc *slider = &s_sliders[index];
2870      *tailptr = slider_alloc(*machine, slider->name, slider->minval, slider->defval, slider->maxval, slider->step, slider->adjustor, (void*)options);
2871      tailptr = &(*tailptr)->next;
2865
2866      int screen_type = machine->first_screen()->screen_type();
2867      if ((screen_type == SCREEN_TYPE_VECTOR && (slider->screen_type & SLIDER_SCREEN_TYPE_VECTOR) == SLIDER_SCREEN_TYPE_VECTOR) ||
2868         (screen_type == SCREEN_TYPE_RASTER && (slider->screen_type & SLIDER_SCREEN_TYPE_RASTER) == SLIDER_SCREEN_TYPE_RASTER) ||
2869         (screen_type == SCREEN_TYPE_LCD    && (slider->screen_type & SLIDER_SCREEN_TYPE_LCD)    == SLIDER_SCREEN_TYPE_LCD))
2870      {
2871         *tailptr = slider_alloc(*machine, slider->name, slider->minval, slider->defval, slider->maxval, slider->step, slider->adjustor, (void*)options);
2872         tailptr = &(*tailptr)->next;
2873      }
28722874   }
28732875
28742876   return listhead;
trunk/src/osd/modules/render/d3d/d3dhlsl.h
r250285r250286
307307   // slider-related functions
308308   slider_state *init_slider_list();
309309
310   enum slider_screen_type
311   {
312      SLIDER_SCREEN_TYPE_NONE = 0,
313      SLIDER_SCREEN_TYPE_RASTER = 1,
314      SLIDER_SCREEN_TYPE_VECTOR = 2,
315      SLIDER_SCREEN_TYPE_LCD = 4
316   };
317
310318   struct slider_desc
311319   {
312320      const char *        name;
r250285r250286
314322      int                 defval;
315323      int                 maxval;
316324      int                 step;
325      int                 screen_type;             
317326      INT32(*adjustor)(running_machine &, void *, std::string *, INT32);
318327   };
319328
r250285r250286
360369   int                     lastidx;                    // index of the last-encountered target
361370   bool                    write_ini;                  // enable external ini saving
362371   bool                    read_ini;                   // enable external ini loading
363   int                     prescale_force_x;           // prescale force x
364   int                     prescale_force_y;           // prescale force y
365   int                     prescale_size_x;            // prescale size x
366   int                     prescale_size_y;            // prescale size y
367372   int                     hlsl_prescale_x;            // hlsl prescale x
368373   int                     hlsl_prescale_y;            // hlsl prescale y
369374   float                   bloom_dims[11][2];          // bloom texture dimensions


Previous 199869 Revisions Next


© 1997-2024 The MAME Team