(HLSL) Implement constant table for HLSL

This commit is contained in:
TwinAphex51224 2012-04-14 22:44:46 +02:00
parent 2a8ea913c0
commit dee9b69661
2 changed files with 8 additions and 5 deletions

View File

@ -29,6 +29,8 @@ struct hlsl_program
D3DXHANDLE vid_size_v; D3DXHANDLE vid_size_v;
D3DXHANDLE tex_size_v; D3DXHANDLE tex_size_v;
D3DXHANDLE out_size_v; D3DXHANDLE out_size_v;
LPD3DXCONSTANTTABLE v_ctable;
LPD3DXCONSTANTTABLE f_ctable;
XMMATRIX mvp; XMMATRIX mvp;
}; };
@ -99,17 +101,17 @@ static bool load_program(unsigned index, const char *prog, bool path_is_file)
if (path_is_file) if (path_is_file)
{ {
ret_fp = D3DXCompileShaderFromFile(prog, NULL, NULL, "main_fragment", "ps_2_0", 0, &code_f, &listing_f, NULL); ret_fp = D3DXCompileShaderFromFile(prog, NULL, NULL, "main_fragment", "ps_2_0", 0, &code_f, &listing_f, &prg[index].f_ctable);
ret_vp = D3DXCompileShaderFromFile(prog, NULL, NULL, "main_vertex", "vs_2_0", 0, &code_v, &listing_v, NULL); ret_vp = D3DXCompileShaderFromFile(prog, NULL, NULL, "main_vertex", "vs_2_0", 0, &code_v, &listing_v, &prg[index].v_ctable);
} }
else else
{ {
/* TODO - crashes currently - to do with 'end of line' of stock shader */ /* TODO - crashes currently - to do with 'end of line' of stock shader */
ret_fp = D3DXCompileShader(prog, (UINT)strlen(prog), NULL, NULL, "main_fragment", "ps_2_0", 0, &code_f, &listing_f, NULL ); ret_fp = D3DXCompileShader(prog, (UINT)strlen(prog), NULL, NULL, "main_fragment", "ps_2_0", 0, &code_f, &listing_f, &prg[index].f_ctable );
ret_vp = D3DXCompileShader(prog, (UINT)strlen(prog), NULL, NULL, "main_vertex", "vs_2_0", 0, &code_v, &listing_v, NULL ); ret_vp = D3DXCompileShader(prog, (UINT)strlen(prog), NULL, NULL, "main_vertex", "vs_2_0", 0, &code_v, &listing_v, &prg[index].v_ctable );
} }
if (FAILED(ret_fp) || FAILED(ret_vp)) if (FAILED(ret_fp) || FAILED(ret_vp) || listing_v || listing_f)
{ {
SSNES_ERR("HLSL error:\n"); SSNES_ERR("HLSL error:\n");
if(listing_f) if(listing_f)

View File

@ -1,5 +1,6 @@
/* SSNES - A frontend for libretro. /* SSNES - A frontend for libretro.
* Copyright (C) 2010-2012 - Hans-Kristian Arntzen * Copyright (C) 2010-2012 - Hans-Kristian Arntzen
* Copyright (C) 2011-2012 - Daniel De Matteis
* *
* SSNES is free software: you can redistribute it and/or modify it under the terms * SSNES is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found- * of the GNU General Public License as published by the Free Software Found-