From a8af68217f20d4d2fbe6a70baeed6c458b6b33d9 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Mon, 16 Apr 2012 04:21:49 +0200 Subject: [PATCH] (360) Frame count in shaders works now --- 360/xdk360_video.cpp | 2 +- gfx/shader_hlsl.c | 8 ++++++-- gfx/shader_hlsl.h | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) 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/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);