Set LUT uniforms for vertex shader as well.

This commit is contained in:
Themaister 2013-04-16 14:27:24 +02:00
parent a0f7a184fd
commit 2b0697205d
2 changed files with 33 additions and 7 deletions

View File

@ -831,10 +831,12 @@ void RenderChain::bind_luts(Pass &pass)
{
for (unsigned i = 0; i < luts.size(); i++)
{
CGparameter param = cgGetNamedParameter(pass.fPrg, luts[i].id.c_str());
if (param)
CGparameter fparam = cgGetNamedParameter(pass.fPrg, luts[i].id.c_str());
int bound_index = -1;
if (fparam)
{
unsigned index = cgGetParameterResourceIndex(param);
unsigned index = cgGetParameterResourceIndex(fparam);
bound_index = index;
dev->SetTexture(index, luts[i].tex);
dev->SetSamplerState(index, D3DSAMP_MAGFILTER,
luts[i].smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT);
@ -844,6 +846,23 @@ void RenderChain::bind_luts(Pass &pass)
dev->SetSamplerState(index, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
bound_tex.push_back(index);
}
CGparameter vparam = cgGetNamedParameter(pass.vPrg, luts[i].id.c_str());
if (vparam)
{
unsigned index = cgGetParameterResourceIndex(vparam);
if (index != (unsigned)bound_index)
{
dev->SetTexture(index, luts[i].tex);
dev->SetSamplerState(index, D3DSAMP_MAGFILTER,
luts[i].smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT);
dev->SetSamplerState(index, D3DSAMP_MINFILTER,
luts[i].smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT);
dev->SetSamplerState(index, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER);
dev->SetSamplerState(index, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
bound_tex.push_back(index);
}
}
}
}

View File

@ -264,11 +264,18 @@ static void gl_cg_set_params(unsigned width, unsigned height,
// Set lookup textures.
for (unsigned i = 0; i < cg_shader->luts; i++)
{
CGparameter param = cgGetNamedParameter(prg[active_index].fprg, cg_shader->lut[i].id);
if (param)
CGparameter fparam = cgGetNamedParameter(prg[active_index].fprg, cg_shader->lut[i].id);
if (fparam)
{
cgGLSetTextureParameter(param, lut_textures[i]);
cgGLEnableTextureParameter(param);
cgGLSetTextureParameter(fparam, lut_textures[i]);
cgGLEnableTextureParameter(fparam);
}
CGparameter vparam = cgGetNamedParameter(prg[active_index].vprg, cg_shader->lut[i].id);
if (vparam)
{
cgGLSetTextureParameter(vparam, lut_textures[i]);
cgGLEnableTextureParameter(vparam);
}
}