diff --git a/360/xdk360_video.cpp b/360/xdk360_video.cpp index 083e5348e6..91011507ef 100644 --- a/360/xdk360_video.cpp +++ b/360/xdk360_video.cpp @@ -436,7 +436,7 @@ static bool xdk360_gfx_frame(void *data, const void *frame, hlsl_use(0); hlsl_set_params(width, height, 512, 512, vid->d3dpp.BackBufferWidth, - vid->d3dpp.BackBufferHeight); + vid->d3dpp.BackBufferHeight, g_frame_count); D3DLOCKED_RECT d3dlr; D3DTexture_LockRect(vid->lpTexture, 0, &d3dlr, NULL, D3DLOCK_NOSYSLOCK); diff --git a/driver.c b/driver.c index 268c44a156..8c6bb9b51e 100644 --- a/driver.c +++ b/driver.c @@ -506,6 +506,16 @@ void init_video_input(void) if (g_extern.filter.active) scale = g_extern.filter.scale; + if (g_settings.video.aspect_ratio < 0.0f) + { + if (geom->aspect_ratio > 0.0f && g_settings.video.aspect_ratio_auto) + g_settings.video.aspect_ratio = geom->aspect_ratio; + else + g_settings.video.aspect_ratio = (float)geom->base_width / geom->base_height; // 1:1 PAR. + + SSNES_LOG("Adjusting aspect ratio to %.2f\n", g_settings.video.aspect_ratio); + } + unsigned width; unsigned height; if (g_settings.video.fullscreen) @@ -515,7 +525,7 @@ void init_video_input(void) } else { - if (g_settings.video.force_aspect && (g_settings.video.aspect_ratio > 0.0f)) + if (g_settings.video.force_aspect) { width = roundf(geom->base_height * g_settings.video.xscale * g_settings.video.aspect_ratio); height = roundf(geom->base_height * g_settings.video.yscale); @@ -527,16 +537,6 @@ void init_video_input(void) } } - if (g_settings.video.aspect_ratio < 0.0f) - { - if (geom->aspect_ratio > 0.0f && g_settings.video.aspect_ratio_auto) - g_settings.video.aspect_ratio = geom->aspect_ratio; - else - g_settings.video.aspect_ratio = (float)geom->base_width / geom->base_height; // 1:1 PAR. - - SSNES_LOG("Adjusting aspect ratio to %.2f\n", g_settings.video.aspect_ratio); - } - SSNES_LOG("Video @ %ux%u\n", width, height); video_info_t video = {0}; diff --git a/gfx/shader_hlsl.c b/gfx/shader_hlsl.c index 23d01b2061..739ae746c7 100644 --- a/gfx/shader_hlsl.c +++ b/gfx/shader_hlsl.c @@ -86,10 +86,13 @@ void hlsl_set_proj_matrix(XMMATRIX rotation_value) #define set_param_2f(param, xy, constanttable) \ if (param) constanttable->SetFloatArray(d3d_device_ptr, param, xy, 2); +#define set_param_1f(param, x, constanttable) \ + if (param) constanttable->SetFloat(d3d_device_ptr, param, x); void hlsl_set_params(unsigned width, unsigned height, unsigned tex_width, unsigned tex_height, - unsigned out_width, unsigned out_height) + unsigned out_width, unsigned out_height, + unsigned frame_count) { if (!hlsl_active) return; @@ -101,13 +104,14 @@ void hlsl_set_params(unsigned width, unsigned height, set_param_2f(prg[active_index].vid_size_f, ori_size, prg[active_index].f_ctable); set_param_2f(prg[active_index].tex_size_f, tex_size, prg[active_index].f_ctable); set_param_2f(prg[active_index].out_size_f, out_size, prg[active_index].f_ctable); + set_param_1f(prg[active_index].frame_cnt_f, (float)frame_count, prg[active_index].f_ctable); set_param_2f(prg[active_index].vid_size_v, ori_size, prg[active_index].v_ctable); set_param_2f(prg[active_index].tex_size_v, tex_size, prg[active_index].v_ctable); set_param_2f(prg[active_index].out_size_v, out_size, prg[active_index].v_ctable); + set_param_1f(prg[active_index].frame_cnt_v, (float)frame_count, prg[active_index].v_ctable); prg[active_index].v_ctable->SetMatrix(d3d_device_ptr, prg[active_index].mvp, (D3DXMATRIX*)&prg[active_index].mvp_val); - //prg[active_index].f_ctable->SetFloatArray(d3d_device_ptr, prg[active_index].out_size_f, val, 2); } static bool load_program(unsigned index, const char *prog, bool path_is_file) diff --git a/gfx/shader_hlsl.h b/gfx/shader_hlsl.h index 90653d1c02..47d704baf0 100644 --- a/gfx/shader_hlsl.h +++ b/gfx/shader_hlsl.h @@ -29,7 +29,8 @@ void hlsl_set_proj_matrix(XMMATRIX rotation_value); void hlsl_set_params(unsigned width, unsigned height, unsigned tex_width, unsigned tex_height, - unsigned out_width, unsigned out_height); + unsigned out_width, unsigned out_height, + unsigned frame_count); void hlsl_use(unsigned index);