mirror of
https://github.com/libretro/RetroArch
synced 2025-04-09 21:45:45 +00:00
(D3D) Pass 'Pass' and 'LinkInfo' by pointer instead of reference
This commit is contained in:
parent
0a85e95d0d
commit
0de251079a
@ -117,22 +117,22 @@ bool renderchain_set_pass_size(void *data, unsigned pass_index,
|
|||||||
{
|
{
|
||||||
renderchain_t *chain = (renderchain_t*)data;
|
renderchain_t *chain = (renderchain_t*)data;
|
||||||
LPDIRECT3DDEVICE d3dr = chain->dev;
|
LPDIRECT3DDEVICE d3dr = chain->dev;
|
||||||
Pass &pass = chain->passes[pass_index];
|
Pass *pass = (Pass*)&chain->passes[pass_index];
|
||||||
if (width != pass.info.tex_w || height != pass.info.tex_h)
|
if (width != pass->info.tex_w || height != pass->info.tex_h)
|
||||||
{
|
{
|
||||||
pass.tex->Release();
|
pass->tex->Release();
|
||||||
pass.info.tex_w = width;
|
pass->info.tex_w = width;
|
||||||
pass.info.tex_h = height;
|
pass->info.tex_h = height;
|
||||||
|
|
||||||
if (FAILED(d3dr->CreateTexture(width, height, 1,
|
if (FAILED(d3dr->CreateTexture(width, height, 1,
|
||||||
D3DUSAGE_RENDERTARGET,
|
D3DUSAGE_RENDERTARGET,
|
||||||
chain->passes.back().info.pass->fbo.fp_fbo ?
|
chain->passes.back().info.pass->fbo.fp_fbo ?
|
||||||
D3DFMT_A32B32G32R32F : D3DFMT_A8R8G8B8,
|
D3DFMT_A32B32G32R32F : D3DFMT_A8R8G8B8,
|
||||||
D3DPOOL_DEFAULT,
|
D3DPOOL_DEFAULT,
|
||||||
&pass.tex, NULL)))
|
&pass->tex, NULL)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
d3d_set_texture(d3dr, 0, pass.tex);
|
d3d_set_texture(d3dr, 0, pass->tex);
|
||||||
d3d_set_sampler_address_u(d3dr, 0, D3DTADDRESS_BORDER);
|
d3d_set_sampler_address_u(d3dr, 0, D3DTADDRESS_BORDER);
|
||||||
d3d_set_sampler_address_v(d3dr, 0, D3DTADDRESS_BORDER);
|
d3d_set_sampler_address_v(d3dr, 0, D3DTADDRESS_BORDER);
|
||||||
d3d_set_texture(d3dr, 0, NULL);
|
d3d_set_texture(d3dr, 0, NULL);
|
||||||
@ -144,7 +144,7 @@ bool renderchain_set_pass_size(void *data, unsigned pass_index,
|
|||||||
bool renderchain_add_pass(void *data, const LinkInfo *info)
|
bool renderchain_add_pass(void *data, const LinkInfo *info)
|
||||||
{
|
{
|
||||||
renderchain_t *chain = (renderchain_t*)data;
|
renderchain_t *chain = (renderchain_t*)data;
|
||||||
LPDIRECT3DDEVICE d3dr = chain->dev;
|
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)chain->dev;
|
||||||
Pass pass;
|
Pass pass;
|
||||||
pass.info = *info;
|
pass.info = *info;
|
||||||
pass.last_width = 0;
|
pass.last_width = 0;
|
||||||
@ -153,7 +153,7 @@ bool renderchain_add_pass(void *data, const LinkInfo *info)
|
|||||||
renderchain_compile_shaders(chain, pass.fPrg,
|
renderchain_compile_shaders(chain, pass.fPrg,
|
||||||
pass.vPrg, info->pass->source.path);
|
pass.vPrg, info->pass->source.path);
|
||||||
|
|
||||||
if (!renderchain_init_shader_fvf(chain, pass))
|
if (!renderchain_init_shader_fvf(chain, &pass))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (FAILED(D3DDevice_CreateVertexBuffers(d3dr, 4 * sizeof(Vertex),
|
if (FAILED(D3DDevice_CreateVertexBuffers(d3dr, 4 * sizeof(Vertex),
|
||||||
@ -273,21 +273,21 @@ bool renderchain_render(void *chain_data, const void *data,
|
|||||||
// In-between render target passes.
|
// In-between render target passes.
|
||||||
for (unsigned i = 0; i < chain->passes.size() - 1; i++)
|
for (unsigned i = 0; i < chain->passes.size() - 1; i++)
|
||||||
{
|
{
|
||||||
Pass &from_pass = chain->passes[i];
|
Pass *from_pass = (Pass*)&chain->passes[i];
|
||||||
Pass &to_pass = chain->passes[i + 1];
|
Pass *to_pass = (Pass*)&chain->passes[i + 1];
|
||||||
|
|
||||||
LPDIRECT3DSURFACE target;
|
LPDIRECT3DSURFACE target;
|
||||||
to_pass.tex->GetSurfaceLevel(0, &target);
|
to_pass->tex->GetSurfaceLevel(0, &target);
|
||||||
d3dr->SetRenderTarget(0, target);
|
d3dr->SetRenderTarget(0, target);
|
||||||
|
|
||||||
renderchain_convert_geometry(chain, &from_pass.info,
|
renderchain_convert_geometry(chain, &from_pass->info,
|
||||||
out_width, out_height,
|
out_width, out_height,
|
||||||
current_width, current_height, chain->final_viewport);
|
current_width, current_height, chain->final_viewport);
|
||||||
|
|
||||||
// Clear out whole FBO.
|
/* Clear out whole FBO. */
|
||||||
D3DVIEWPORT viewport = {0};
|
D3DVIEWPORT viewport = {0};
|
||||||
viewport.Width = to_pass.info.tex_w;
|
viewport.Width = to_pass->info.tex_w;
|
||||||
viewport.Height = to_pass.info.tex_h;
|
viewport.Height = to_pass->info.tex_h;
|
||||||
viewport.MinZ = 0.0f;
|
viewport.MinZ = 0.0f;
|
||||||
viewport.MaxZ = 1.0f;
|
viewport.MaxZ = 1.0f;
|
||||||
d3d_set_viewport(d3dr, &viewport);
|
d3d_set_viewport(d3dr, &viewport);
|
||||||
@ -309,11 +309,11 @@ bool renderchain_render(void *chain_data, const void *data,
|
|||||||
target->Release();
|
target->Release();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Final pass
|
/* Final pass */
|
||||||
d3dr->SetRenderTarget(0, back_buffer);
|
d3dr->SetRenderTarget(0, back_buffer);
|
||||||
Pass &last_pass = chain->passes.back();
|
Pass *last_pass = (Pass*)&chain->passes.back();
|
||||||
|
|
||||||
renderchain_convert_geometry(chain, &last_pass.info,
|
renderchain_convert_geometry(chain, &last_pass->info,
|
||||||
out_width, out_height,
|
out_width, out_height,
|
||||||
current_width, current_height, chain->final_viewport);
|
current_width, current_height, chain->final_viewport);
|
||||||
renderchain_set_viewport(chain, chain->final_viewport);
|
renderchain_set_viewport(chain, chain->final_viewport);
|
||||||
@ -385,28 +385,28 @@ bool renderchain_create_first_pass(void *data, const LinkInfo *info,
|
|||||||
renderchain_compile_shaders(chain, pass.fPrg,
|
renderchain_compile_shaders(chain, pass.fPrg,
|
||||||
pass.vPrg, info->pass->source.path);
|
pass.vPrg, info->pass->source.path);
|
||||||
|
|
||||||
if (!renderchain_init_shader_fvf(chain, pass))
|
if (!renderchain_init_shader_fvf(chain, &pass))
|
||||||
return false;
|
return false;
|
||||||
chain->passes.push_back(pass);
|
chain->passes.push_back(pass);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void renderchain_set_vertices(void *data, Pass &pass,
|
void renderchain_set_vertices(void *data, Pass *pass,
|
||||||
unsigned width, unsigned height,
|
unsigned width, unsigned height,
|
||||||
unsigned out_width, unsigned out_height,
|
unsigned out_width, unsigned out_height,
|
||||||
unsigned vp_width, unsigned vp_height,
|
unsigned vp_width, unsigned vp_height,
|
||||||
unsigned rotation)
|
unsigned rotation)
|
||||||
{
|
{
|
||||||
renderchain_t *chain = (renderchain_t*)data;
|
renderchain_t *chain = (renderchain_t*)data;
|
||||||
const LinkInfo &info = pass.info;
|
const LinkInfo *info = (const LinkInfo*)&pass->info;
|
||||||
|
|
||||||
if (pass.last_width != width || pass.last_height != height)
|
if (pass->last_width != width || pass->last_height != height)
|
||||||
{
|
{
|
||||||
pass.last_width = width;
|
pass->last_width = width;
|
||||||
pass.last_height = height;
|
pass->last_height = height;
|
||||||
|
|
||||||
float _u = static_cast<float>(width) / info.tex_w;
|
float _u = static_cast<float>(width) / info->tex_w;
|
||||||
float _v = static_cast<float>(height) / info.tex_h;
|
float _v = static_cast<float>(height) / info->tex_h;
|
||||||
Vertex vert[4];
|
Vertex vert[4];
|
||||||
for (unsigned i = 0; i < 4; i++)
|
for (unsigned i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
@ -449,15 +449,15 @@ void renderchain_set_vertices(void *data, Pass &pass,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void *verts;
|
void *verts;
|
||||||
pass.vertex_buf->Lock(0, sizeof(vert), &verts, 0);
|
pass->vertex_buf->Lock(0, sizeof(vert), &verts, 0);
|
||||||
memcpy(verts, vert, sizeof(vert));
|
memcpy(verts, vert, sizeof(vert));
|
||||||
pass.vertex_buf->Unlock();
|
pass->vertex_buf->Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
renderchain_set_mvp(chain, pass.vPrg, vp_width, vp_height, rotation);
|
renderchain_set_mvp(chain, pass->vPrg, vp_width, vp_height, rotation);
|
||||||
renderchain_set_shader_params(chain, pass,
|
renderchain_set_shader_params(chain, pass,
|
||||||
width, height,
|
width, height,
|
||||||
info.tex_w, info.tex_h,
|
info->tex_w, info->tex_h,
|
||||||
vp_width, vp_height);
|
vp_width, vp_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -542,26 +542,26 @@ void renderchain_blit_to_texture(void *data, const void *frame,
|
|||||||
&d3dlr, frame, width, height, pitch);
|
&d3dlr, frame, width, height, pitch);
|
||||||
}
|
}
|
||||||
|
|
||||||
void renderchain_render_pass(void *data, Pass &pass, unsigned pass_index)
|
void renderchain_render_pass(void *data, Pass *pass, unsigned pass_index)
|
||||||
{
|
{
|
||||||
renderchain_t *chain = (renderchain_t*)data;
|
renderchain_t *chain = (renderchain_t*)data;
|
||||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)chain->dev;
|
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)chain->dev;
|
||||||
renderchain_set_shaders(chain, pass.fPrg, pass.vPrg);
|
renderchain_set_shaders(chain, pass->fPrg, pass->vPrg);
|
||||||
|
|
||||||
d3d_set_texture(d3dr, 0, pass.tex);
|
d3d_set_texture(d3dr, 0, pass->tex);
|
||||||
d3d_set_sampler_minfilter(d3dr, 0,
|
d3d_set_sampler_minfilter(d3dr, 0,
|
||||||
translate_filter(pass.info.pass->filter));
|
translate_filter(pass->info.pass->filter));
|
||||||
d3d_set_sampler_magfilter(d3dr, 0,
|
d3d_set_sampler_magfilter(d3dr, 0,
|
||||||
translate_filter(pass.info.pass->filter));
|
translate_filter(pass->info.pass->filter));
|
||||||
|
|
||||||
#ifdef _XBOX1
|
#ifdef _XBOX1
|
||||||
d3d_set_vertex_shader(d3dr, D3DFVF_XYZ | D3DFVF_TEX1, NULL);
|
d3d_set_vertex_shader(d3dr, D3DFVF_XYZ | D3DFVF_TEX1, NULL);
|
||||||
#else
|
#else
|
||||||
d3dr->SetVertexDeclaration(pass.vertex_decl);
|
d3dr->SetVertexDeclaration(pass->vertex_decl);
|
||||||
#endif
|
#endif
|
||||||
for (unsigned i = 0; i < 4; i++)
|
for (unsigned i = 0; i < 4; i++)
|
||||||
d3d_set_stream_source(d3dr, i,
|
d3d_set_stream_source(d3dr, i,
|
||||||
pass.vertex_buf, 0, sizeof(Vertex));
|
pass->vertex_buf, 0, sizeof(Vertex));
|
||||||
|
|
||||||
renderchain_bind_orig(chain, pass);
|
renderchain_bind_orig(chain, pass);
|
||||||
renderchain_bind_prev(chain, pass);
|
renderchain_bind_prev(chain, pass);
|
||||||
|
@ -139,7 +139,7 @@ D3DTEXTUREFILTERTYPE renderchain_translate_filter(bool smooth);
|
|||||||
bool renderchain_create_first_pass(void *data,
|
bool renderchain_create_first_pass(void *data,
|
||||||
const LinkInfo *info, PixelFormat fmt);
|
const LinkInfo *info, PixelFormat fmt);
|
||||||
|
|
||||||
void renderchain_set_vertices(void *data, Pass &pass,
|
void renderchain_set_vertices(void *data, Pass *pass,
|
||||||
unsigned width, unsigned height,
|
unsigned width, unsigned height,
|
||||||
unsigned out_width, unsigned out_height,
|
unsigned out_width, unsigned out_height,
|
||||||
unsigned vp_width, unsigned vp_height,
|
unsigned vp_width, unsigned vp_height,
|
||||||
@ -160,7 +160,7 @@ void renderchain_blit_to_texture(void *data, const void *frame,
|
|||||||
unsigned width, unsigned height,
|
unsigned width, unsigned height,
|
||||||
unsigned pitch);
|
unsigned pitch);
|
||||||
|
|
||||||
void renderchain_render_pass(void *data, Pass &pass, unsigned pass_index);
|
void renderchain_render_pass(void *data, Pass *pass, unsigned pass_index);
|
||||||
|
|
||||||
void renderchain_log_info(void *data, const LinkInfo *info);
|
void renderchain_log_info(void *data, const LinkInfo *info);
|
||||||
|
|
||||||
@ -177,22 +177,22 @@ void renderchain_destroy_shader(void *data, int i);
|
|||||||
|
|
||||||
void renderchain_set_shader_mvp(void *data, CGprogram &vPrg, D3DXMATRIX &tmp);
|
void renderchain_set_shader_mvp(void *data, CGprogram &vPrg, D3DXMATRIX &tmp);
|
||||||
|
|
||||||
void renderchain_set_shader_params(void *data, Pass &pass,
|
void renderchain_set_shader_params(void *data, Pass *pass,
|
||||||
unsigned video_w, unsigned video_h,
|
unsigned video_w, unsigned video_h,
|
||||||
unsigned tex_w, unsigned tex_h,
|
unsigned tex_w, unsigned tex_h,
|
||||||
unsigned viewport_w, unsigned viewport_h);
|
unsigned viewport_w, unsigned viewport_h);
|
||||||
|
|
||||||
void renderchain_bind_tracker(void *data, Pass &pass, unsigned pass_index);
|
void renderchain_bind_tracker(void *data, Pass *pass, unsigned pass_index);
|
||||||
|
|
||||||
bool renderchain_init_shader_fvf(void *data, Pass &pass);
|
bool renderchain_init_shader_fvf(void *data, Pass *pass);
|
||||||
|
|
||||||
void renderchain_bind_orig(void *data, Pass &pass);
|
void renderchain_bind_orig(void *data, Pass *pass);
|
||||||
|
|
||||||
void renderchain_bind_prev(void *data, Pass &pass);
|
void renderchain_bind_prev(void *data, Pass *pass);
|
||||||
|
|
||||||
void renderchain_bind_luts(void *data, Pass &pass);
|
void renderchain_bind_luts(void *data, Pass *pass);
|
||||||
|
|
||||||
void renderchain_bind_pass(void *data, Pass &pass, unsigned pass_index);
|
void renderchain_bind_pass(void *data, Pass *pass, unsigned pass_index);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ void renderchain_set_shader_mvp(void *data, CGprogram &vPrg, D3DXMATRIX &tmp)
|
|||||||
cgD3D9SetUniform(cgp, &val); \
|
cgD3D9SetUniform(cgp, &val); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
void renderchain_set_shader_params(void *data, Pass &pass,
|
void renderchain_set_shader_params(void *data, Pass *pass,
|
||||||
unsigned video_w, unsigned video_h,
|
unsigned video_w, unsigned video_h,
|
||||||
unsigned tex_w, unsigned tex_h,
|
unsigned tex_w, unsigned tex_h,
|
||||||
unsigned viewport_w, unsigned viewport_h)
|
unsigned viewport_w, unsigned viewport_h)
|
||||||
@ -191,22 +191,22 @@ void renderchain_set_shader_params(void *data, Pass &pass,
|
|||||||
output_size.x = viewport_w;
|
output_size.x = viewport_w;
|
||||||
output_size.y = viewport_h;
|
output_size.y = viewport_h;
|
||||||
|
|
||||||
set_cg_param(pass.vPrg, "IN.video_size", video_size);
|
set_cg_param(pass->vPrg, "IN.video_size", video_size);
|
||||||
set_cg_param(pass.fPrg, "IN.video_size", video_size);
|
set_cg_param(pass->fPrg, "IN.video_size", video_size);
|
||||||
set_cg_param(pass.vPrg, "IN.texture_size", texture_size);
|
set_cg_param(pass->vPrg, "IN.texture_size", texture_size);
|
||||||
set_cg_param(pass.fPrg, "IN.texture_size", texture_size);
|
set_cg_param(pass->fPrg, "IN.texture_size", texture_size);
|
||||||
set_cg_param(pass.vPrg, "IN.output_size", output_size);
|
set_cg_param(pass->vPrg, "IN.output_size", output_size);
|
||||||
set_cg_param(pass.fPrg, "IN.output_size", output_size);
|
set_cg_param(pass->fPrg, "IN.output_size", output_size);
|
||||||
|
|
||||||
float frame_cnt = chain->frame_count;
|
float frame_cnt = chain->frame_count;
|
||||||
if (pass.info.pass->frame_count_mod)
|
if (pass->info.pass->frame_count_mod)
|
||||||
frame_cnt = chain->frame_count % pass.info.pass->frame_count_mod;
|
frame_cnt = chain->frame_count % pass->info.pass->frame_count_mod;
|
||||||
set_cg_param(pass.fPrg, "IN.frame_count", frame_cnt);
|
set_cg_param(pass->fPrg, "IN.frame_count", frame_cnt);
|
||||||
set_cg_param(pass.vPrg, "IN.frame_count", frame_cnt);
|
set_cg_param(pass->vPrg, "IN.frame_count", frame_cnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void renderchain_bind_tracker(void *data, Pass &pass, unsigned pass_index)
|
void renderchain_bind_tracker(void *data, Pass *pass, unsigned pass_index)
|
||||||
{
|
{
|
||||||
renderchain_t *chain = (renderchain_t*)data;
|
renderchain_t *chain = (renderchain_t*)data;
|
||||||
if (!chain->tracker)
|
if (!chain->tracker)
|
||||||
@ -218,9 +218,9 @@ void renderchain_bind_tracker(void *data, Pass &pass, unsigned pass_index)
|
|||||||
|
|
||||||
for (unsigned i = 0; i < chain->uniform_cnt; i++)
|
for (unsigned i = 0; i < chain->uniform_cnt; i++)
|
||||||
{
|
{
|
||||||
set_cg_param(pass.fPrg, chain->uniform_info[i].id,
|
set_cg_param(pass->fPrg, chain->uniform_info[i].id,
|
||||||
chain->uniform_info[i].value);
|
chain->uniform_info[i].value);
|
||||||
set_cg_param(pass.vPrg, chain->uniform_info[i].id,
|
set_cg_param(pass->vPrg, chain->uniform_info[i].id,
|
||||||
chain->uniform_info[i].value);
|
chain->uniform_info[i].value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -236,7 +236,7 @@ void renderchain_bind_tracker(void *data, Pass &pass, unsigned pass_index)
|
|||||||
D3DDECLUSAGE_COLOR, (BYTE)(index) } \
|
D3DDECLUSAGE_COLOR, (BYTE)(index) } \
|
||||||
|
|
||||||
|
|
||||||
bool renderchain_init_shader_fvf(void *data, Pass &pass)
|
bool renderchain_init_shader_fvf(void *data, Pass *pass)
|
||||||
{
|
{
|
||||||
renderchain_t *chain = (renderchain_t*)data;
|
renderchain_t *chain = (renderchain_t*)data;
|
||||||
static const D3DVERTEXELEMENT decl_end = D3DDECL_END();
|
static const D3DVERTEXELEMENT decl_end = D3DDECL_END();
|
||||||
@ -246,7 +246,7 @@ bool renderchain_init_shader_fvf(void *data, Pass &pass)
|
|||||||
static const D3DVERTEXELEMENT color = DECL_FVF_COLOR(3, 7, 0);
|
static const D3DVERTEXELEMENT color = DECL_FVF_COLOR(3, 7, 0);
|
||||||
|
|
||||||
D3DVERTEXELEMENT decl[MAXD3DDECLLENGTH] = {{0}};
|
D3DVERTEXELEMENT decl[MAXD3DDECLLENGTH] = {{0}};
|
||||||
if (cgD3D9GetVertexDeclaration(pass.vPrg, decl) == CG_FALSE)
|
if (cgD3D9GetVertexDeclaration(pass->vPrg, decl) == CG_FALSE)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
unsigned count;
|
unsigned count;
|
||||||
@ -270,9 +270,9 @@ bool renderchain_init_shader_fvf(void *data, Pass &pass)
|
|||||||
bool texcoord1_taken = false;
|
bool texcoord1_taken = false;
|
||||||
bool stream_taken[4] = {false};
|
bool stream_taken[4] = {false};
|
||||||
|
|
||||||
CGparameter param = find_param_from_semantic(pass.vPrg, "POSITION");
|
CGparameter param = find_param_from_semantic(pass->vPrg, "POSITION");
|
||||||
if (!param)
|
if (!param)
|
||||||
param = find_param_from_semantic(pass.vPrg, "POSITION0");
|
param = find_param_from_semantic(pass->vPrg, "POSITION0");
|
||||||
if (param)
|
if (param)
|
||||||
{
|
{
|
||||||
stream_taken[0] = true;
|
stream_taken[0] = true;
|
||||||
@ -282,9 +282,9 @@ bool renderchain_init_shader_fvf(void *data, Pass &pass)
|
|||||||
indices[index] = true;
|
indices[index] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
param = find_param_from_semantic(pass.vPrg, "TEXCOORD");
|
param = find_param_from_semantic(pass->vPrg, "TEXCOORD");
|
||||||
if (!param)
|
if (!param)
|
||||||
param = find_param_from_semantic(pass.vPrg, "TEXCOORD0");
|
param = find_param_from_semantic(pass->vPrg, "TEXCOORD0");
|
||||||
if (param)
|
if (param)
|
||||||
{
|
{
|
||||||
stream_taken[1] = true;
|
stream_taken[1] = true;
|
||||||
@ -295,7 +295,7 @@ bool renderchain_init_shader_fvf(void *data, Pass &pass)
|
|||||||
indices[index] = true;
|
indices[index] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
param = find_param_from_semantic(pass.vPrg, "TEXCOORD1");
|
param = find_param_from_semantic(pass->vPrg, "TEXCOORD1");
|
||||||
if (param)
|
if (param)
|
||||||
{
|
{
|
||||||
stream_taken[2] = true;
|
stream_taken[2] = true;
|
||||||
@ -306,9 +306,9 @@ bool renderchain_init_shader_fvf(void *data, Pass &pass)
|
|||||||
indices[index] = true;
|
indices[index] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
param = find_param_from_semantic(pass.vPrg, "COLOR");
|
param = find_param_from_semantic(pass->vPrg, "COLOR");
|
||||||
if (!param)
|
if (!param)
|
||||||
param = find_param_from_semantic(pass.vPrg, "COLOR0");
|
param = find_param_from_semantic(pass->vPrg, "COLOR0");
|
||||||
if (param)
|
if (param)
|
||||||
{
|
{
|
||||||
stream_taken[3] = true;
|
stream_taken[3] = true;
|
||||||
@ -334,10 +334,10 @@ bool renderchain_init_shader_fvf(void *data, Pass &pass)
|
|||||||
for (unsigned i = 0; i < count; i++)
|
for (unsigned i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
if (indices[i])
|
if (indices[i])
|
||||||
pass.attrib_map.push_back(0);
|
pass->attrib_map.push_back(0);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pass.attrib_map.push_back(index);
|
pass->attrib_map.push_back(index);
|
||||||
D3DVERTEXELEMENT elem = DECL_FVF_TEXCOORD(index, 3, tex_index);
|
D3DVERTEXELEMENT elem = DECL_FVF_TEXCOORD(index, 3, tex_index);
|
||||||
decl[i] = elem;
|
decl[i] = elem;
|
||||||
|
|
||||||
@ -352,13 +352,13 @@ bool renderchain_init_shader_fvf(void *data, Pass &pass)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FAILED(chain->dev->CreateVertexDeclaration(decl, &pass.vertex_decl)))
|
if (FAILED(chain->dev->CreateVertexDeclaration(decl, &pass->vertex_decl)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void renderchain_bind_orig(void *data, Pass &pass)
|
void renderchain_bind_orig(void *data, Pass *pass)
|
||||||
{
|
{
|
||||||
renderchain_t *chain = (renderchain_t*)data;
|
renderchain_t *chain = (renderchain_t*)data;
|
||||||
D3DXVECTOR2 video_size, texture_size;
|
D3DXVECTOR2 video_size, texture_size;
|
||||||
@ -367,12 +367,12 @@ void renderchain_bind_orig(void *data, Pass &pass)
|
|||||||
texture_size.x = chain->passes[0].info.tex_w;
|
texture_size.x = chain->passes[0].info.tex_w;
|
||||||
texture_size.y = chain->passes[0].info.tex_h;
|
texture_size.y = chain->passes[0].info.tex_h;
|
||||||
|
|
||||||
set_cg_param(pass.vPrg, "ORIG.video_size", video_size);
|
set_cg_param(pass->vPrg, "ORIG.video_size", video_size);
|
||||||
set_cg_param(pass.fPrg, "ORIG.video_size", video_size);
|
set_cg_param(pass->fPrg, "ORIG.video_size", video_size);
|
||||||
set_cg_param(pass.vPrg, "ORIG.texture_size", texture_size);
|
set_cg_param(pass->vPrg, "ORIG.texture_size", texture_size);
|
||||||
set_cg_param(pass.fPrg, "ORIG.texture_size", texture_size);
|
set_cg_param(pass->fPrg, "ORIG.texture_size", texture_size);
|
||||||
|
|
||||||
CGparameter param = cgGetNamedParameter(pass.fPrg, "ORIG.texture");
|
CGparameter param = cgGetNamedParameter(pass->fPrg, "ORIG.texture");
|
||||||
if (param)
|
if (param)
|
||||||
{
|
{
|
||||||
unsigned index = cgGetParameterResourceIndex(param);
|
unsigned index = cgGetParameterResourceIndex(param);
|
||||||
@ -386,16 +386,16 @@ void renderchain_bind_orig(void *data, Pass &pass)
|
|||||||
chain->bound_tex.push_back(index);
|
chain->bound_tex.push_back(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
param = cgGetNamedParameter(pass.vPrg, "ORIG.tex_coord");
|
param = cgGetNamedParameter(pass->vPrg, "ORIG.tex_coord");
|
||||||
if (param)
|
if (param)
|
||||||
{
|
{
|
||||||
unsigned index = pass.attrib_map[cgGetParameterResourceIndex(param)];
|
unsigned index = pass->attrib_map[cgGetParameterResourceIndex(param)];
|
||||||
chain->dev->SetStreamSource(index, chain->passes[0].vertex_buf, 0, sizeof(Vertex));
|
chain->dev->SetStreamSource(index, chain->passes[0].vertex_buf, 0, sizeof(Vertex));
|
||||||
chain->bound_vert.push_back(index);
|
chain->bound_vert.push_back(index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void renderchain_bind_prev(void *data, Pass &pass)
|
void renderchain_bind_prev(void *data, Pass *pass)
|
||||||
{
|
{
|
||||||
renderchain_t *chain = (renderchain_t*)data;
|
renderchain_t *chain = (renderchain_t*)data;
|
||||||
static const char *prev_names[] = {
|
static const char *prev_names[] = {
|
||||||
@ -425,12 +425,12 @@ void renderchain_bind_prev(void *data, Pass &pass)
|
|||||||
video_size.x = chain->prev.last_width[(chain->prev.ptr - (i + 1)) & TEXTURESMASK];
|
video_size.x = chain->prev.last_width[(chain->prev.ptr - (i + 1)) & TEXTURESMASK];
|
||||||
video_size.y = chain->prev.last_height[(chain->prev.ptr - (i + 1)) & TEXTURESMASK];
|
video_size.y = chain->prev.last_height[(chain->prev.ptr - (i + 1)) & TEXTURESMASK];
|
||||||
|
|
||||||
set_cg_param(pass.vPrg, attr_input_size, video_size);
|
set_cg_param(pass->vPrg, attr_input_size, video_size);
|
||||||
set_cg_param(pass.fPrg, attr_input_size, video_size);
|
set_cg_param(pass->fPrg, attr_input_size, video_size);
|
||||||
set_cg_param(pass.vPrg, attr_tex_size, texture_size);
|
set_cg_param(pass->vPrg, attr_tex_size, texture_size);
|
||||||
set_cg_param(pass.fPrg, attr_tex_size, texture_size);
|
set_cg_param(pass->fPrg, attr_tex_size, texture_size);
|
||||||
|
|
||||||
CGparameter param = cgGetNamedParameter(pass.fPrg, attr_texture);
|
CGparameter param = cgGetNamedParameter(pass->fPrg, attr_texture);
|
||||||
if (param)
|
if (param)
|
||||||
{
|
{
|
||||||
unsigned index = cgGetParameterResourceIndex(param);
|
unsigned index = cgGetParameterResourceIndex(param);
|
||||||
@ -449,10 +449,10 @@ void renderchain_bind_prev(void *data, Pass &pass)
|
|||||||
chain->dev->SetSamplerState(index, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
|
chain->dev->SetSamplerState(index, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
|
||||||
}
|
}
|
||||||
|
|
||||||
param = cgGetNamedParameter(pass.vPrg, attr_coord);
|
param = cgGetNamedParameter(pass->vPrg, attr_coord);
|
||||||
if (param)
|
if (param)
|
||||||
{
|
{
|
||||||
unsigned index = pass.attrib_map[cgGetParameterResourceIndex(param)];
|
unsigned index = pass->attrib_map[cgGetParameterResourceIndex(param)];
|
||||||
LPDIRECT3DVERTEXBUFFER vert_buf = (LPDIRECT3DVERTEXBUFFER)
|
LPDIRECT3DVERTEXBUFFER vert_buf = (LPDIRECT3DVERTEXBUFFER)
|
||||||
chain->prev.vertex_buf[(chain->prev.ptr - (i + 1)) & TEXTURESMASK];
|
chain->prev.vertex_buf[(chain->prev.ptr - (i + 1)) & TEXTURESMASK];
|
||||||
chain->bound_vert.push_back(index);
|
chain->bound_vert.push_back(index);
|
||||||
@ -462,13 +462,13 @@ void renderchain_bind_prev(void *data, Pass &pass)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void renderchain_bind_luts(void *data, Pass &pass)
|
void renderchain_bind_luts(void *data, Pass *pass)
|
||||||
{
|
{
|
||||||
renderchain_t *chain = (renderchain_t*)data;
|
renderchain_t *chain = (renderchain_t*)data;
|
||||||
for (unsigned i = 0; i < chain->luts.size(); i++)
|
for (unsigned i = 0; i < chain->luts.size(); i++)
|
||||||
{
|
{
|
||||||
CGparameter fparam = cgGetNamedParameter(
|
CGparameter fparam = cgGetNamedParameter(
|
||||||
pass.fPrg, chain->luts[i].id.c_str());
|
pass->fPrg, chain->luts[i].id.c_str());
|
||||||
int bound_index = -1;
|
int bound_index = -1;
|
||||||
|
|
||||||
if (fparam)
|
if (fparam)
|
||||||
@ -488,7 +488,7 @@ void renderchain_bind_luts(void *data, Pass &pass)
|
|||||||
}
|
}
|
||||||
|
|
||||||
CGparameter vparam = cgGetNamedParameter(
|
CGparameter vparam = cgGetNamedParameter(
|
||||||
pass.vPrg, chain->luts[i].id.c_str());
|
pass->vPrg, chain->luts[i].id.c_str());
|
||||||
|
|
||||||
if (vparam)
|
if (vparam)
|
||||||
{
|
{
|
||||||
@ -510,7 +510,7 @@ void renderchain_bind_luts(void *data, Pass &pass)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void renderchain_bind_pass(void *data, Pass &pass, unsigned pass_index)
|
void renderchain_bind_pass(void *data, Pass *pass, unsigned pass_index)
|
||||||
{
|
{
|
||||||
renderchain_t *chain = (renderchain_t*)data;
|
renderchain_t *chain = (renderchain_t*)data;
|
||||||
|
|
||||||
@ -540,12 +540,12 @@ void renderchain_bind_pass(void *data, Pass &pass, unsigned pass_index)
|
|||||||
texture_size.x = chain->passes[i].info.tex_w;
|
texture_size.x = chain->passes[i].info.tex_w;
|
||||||
texture_size.y = chain->passes[i].info.tex_h;
|
texture_size.y = chain->passes[i].info.tex_h;
|
||||||
|
|
||||||
set_cg_param(pass.vPrg, attr_video_size.c_str(), video_size);
|
set_cg_param(pass->vPrg, attr_video_size.c_str(), video_size);
|
||||||
set_cg_param(pass.fPrg, attr_video_size.c_str(), video_size);
|
set_cg_param(pass->fPrg, attr_video_size.c_str(), video_size);
|
||||||
set_cg_param(pass.vPrg, attr_texture_size.c_str(), texture_size);
|
set_cg_param(pass->vPrg, attr_texture_size.c_str(), texture_size);
|
||||||
set_cg_param(pass.fPrg, attr_texture_size.c_str(), texture_size);
|
set_cg_param(pass->fPrg, attr_texture_size.c_str(), texture_size);
|
||||||
|
|
||||||
CGparameter param = cgGetNamedParameter(pass.fPrg, attr_texture.c_str());
|
CGparameter param = cgGetNamedParameter(pass->fPrg, attr_texture.c_str());
|
||||||
if (param)
|
if (param)
|
||||||
{
|
{
|
||||||
unsigned index = cgGetParameterResourceIndex(param);
|
unsigned index = cgGetParameterResourceIndex(param);
|
||||||
@ -562,10 +562,10 @@ void renderchain_bind_pass(void *data, Pass &pass, unsigned pass_index)
|
|||||||
D3DTADDRESS_BORDER);
|
D3DTADDRESS_BORDER);
|
||||||
}
|
}
|
||||||
|
|
||||||
param = cgGetNamedParameter(pass.vPrg, attr_tex_coord.c_str());
|
param = cgGetNamedParameter(pass->vPrg, attr_tex_coord.c_str());
|
||||||
if (param)
|
if (param)
|
||||||
{
|
{
|
||||||
unsigned index = pass.attrib_map[cgGetParameterResourceIndex(param)];
|
unsigned index = pass->attrib_map[cgGetParameterResourceIndex(param)];
|
||||||
chain->dev->SetStreamSource(index, chain->passes[i].vertex_buf,
|
chain->dev->SetStreamSource(index, chain->passes[i].vertex_buf,
|
||||||
0, sizeof(Vertex));
|
0, sizeof(Vertex));
|
||||||
chain->bound_vert.push_back(index);
|
chain->bound_vert.push_back(index);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user