Add d3d_set_pixel_shader

This commit is contained in:
twinaphex 2018-01-06 22:49:17 +01:00
parent 7b040a52b6
commit e03e578212
4 changed files with 31 additions and 14 deletions

View File

@ -1023,22 +1023,41 @@ void d3d_set_texture(LPDIRECT3DDEVICE dev, unsigned sampler,
#endif
}
HRESULT d3d_set_vertex_shader(LPDIRECT3DDEVICE dev, unsigned index,
bool d3d_set_pixel_shader(LPDIRECT3DDEVICE dev, void *data)
{
#ifdef HAVE_D3D9
if (!dev)
return false;
#if defined(__cplusplus)
if (dev->SetPixelShader(data) != D3D_OK)
return true;
#else
if (IDirect3DDevice9_SetPixelShader(dev, data) != D3D_OK)
return true;
#endif
#endif
return false;
}
bool d3d_set_vertex_shader(LPDIRECT3DDEVICE dev, unsigned index,
void *data)
{
#if defined(_XBOX360)
LPDIRECT3DVERTEXSHADER shader = (LPDIRECT3DVERTEXSHADER)data;
D3DDevice_SetVertexShader(dev, shader);
return S_OK;
#elif defined(HAVE_D3D8) && !defined(__cplusplus)
return IDirect3DDevice8_SetVertexShader(dev, index);
if (IDirect3DDevice8_SetVertexShader(dev, index) != D3D_OK)
return false;
#elif defined(HAVE_D3D9) && !defined(__cplusplus)
LPDIRECT3DVERTEXSHADER shader = (LPDIRECT3DVERTEXSHADER)data;
return IDirect3DDevice9_SetVertexShader(dev, shader);
if (IDirect3DDevice9_SetVertexShader(dev, shader) != D3D_OK)
return false;
#else
LPDIRECT3DVERTEXSHADER shader = (LPDIRECT3DVERTEXSHADER)data;
return dev->SetVertexShader(shader);
if (dev->SetVertexShader(shader) != D3D_OK)
return false;
#endif
return true;
}

View File

@ -93,7 +93,9 @@ void d3d_unlock_rectangle(LPDIRECT3DTEXTURE tex);
void d3d_set_texture(LPDIRECT3DDEVICE dev, unsigned sampler,
void *tex_data);
HRESULT d3d_set_vertex_shader(LPDIRECT3DDEVICE dev, unsigned index,
bool d3d_set_pixel_shader(LPDIRECT3DDEVICE dev, void *data);
bool d3d_set_vertex_shader(LPDIRECT3DDEVICE dev, unsigned index,
void *data);
void d3d_texture_blit(unsigned pixel_size,

View File

@ -632,7 +632,7 @@ static void xdk360_render_msg_post(xdk360_video_font_t * font)
d3d_set_texture(d3dr, 0, NULL);
d3d_set_vertex_declaration(d3dr, NULL);
d3d_set_vertex_shader(d3dr, 0, NULL);
D3DDevice_SetPixelShader(d3dr, NULL);
d3d_set_pixel_shader(d3dr, NULL);
d3d_set_render_state(d3dr, D3DRS_VIEWPORTENABLE, font->m_dwSavedState);
}
@ -661,7 +661,7 @@ static void xdk360_render_msg_pre(xdk360_video_font_t * font)
d3d_set_render_state(d3dr, D3DRS_VIEWPORTENABLE, FALSE);
d3d_set_vertex_declaration(d3dr, font->s_FontLocals.m_pFontVertexDecl);
d3d_set_vertex_shader(d3dr, 0, font->s_FontLocals.m_pFontVertexShader);
d3dr->SetPixelShader(font->s_FontLocals.m_pFontPixelShader);
d3d_set_pixel_shader(d3dr, font->s_FontLocals.m_pFontPixelShader);
/* Set the texture scaling factor as a vertex shader constant.
* Call here to avoid load hit store from writing to vTexScale above

View File

@ -89,10 +89,6 @@ typedef struct hlsl_shader_data hlsl_shader_data_t;
#define IDirect3DDevice9_CreateVertexShader(p, a, b) ((p)->CreateVertexShader(a, b))
#endif
#ifndef IDirect3DDevice9_SetPixelShader
#define IDirect3DDevice9_SetPixelShader(p, a) ((p)->SetPixelShader(a))
#endif
#ifndef IDirect3DPixelShader9_Release
#define IDirect3DPixelShader9_Release(p) ((p)->Release())
#endif
@ -512,7 +508,7 @@ static void *hlsl_init(void *data, const char *path)
hlsl_set_program_attributes(hlsl_data, i);
d3d_set_vertex_shader(d3d->dev, 1, hlsl_data->prg[1].vprg);
IDirect3DDevice9_SetPixelShader(d3d->dev, hlsl_data->prg[1].fprg);
d3d_set_pixel_shader(d3d->dev, hlsl_data->prg[1].fprg);
return hlsl_data;
@ -544,7 +540,7 @@ static void hlsl_use(void *data, void *shader_data, unsigned idx, bool set_activ
hlsl_data->active_idx = idx;
d3d_set_vertex_shader(d3dr, idx, hlsl_data->prg[idx].vprg);
IDirect3DDevice9_SetPixelShader(d3dr, hlsl_data->prg[idx].fprg);
d3d_set_pixel_shader(d3dr, hlsl_data->prg[idx].fprg);
}
}