|
|
@@ -79,7 +79,8 @@ public:
|
|
|
INLINE bool valid(GSG *gsg);
|
|
|
void bind(GSG *gsg);
|
|
|
void unbind(GSG *gsg);
|
|
|
- void issue_parameters(GSG *gsg);
|
|
|
+
|
|
|
+ void issue_parameters(GSG *gsg, bool altered);
|
|
|
void issue_transform(GSG *gsg);
|
|
|
void disable_shader_vertex_arrays(GSG *gsg);
|
|
|
void update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg);
|
|
|
@@ -99,30 +100,6 @@ public:
|
|
|
private:
|
|
|
|
|
|
#ifdef HAVE_CGDX9
|
|
|
- enum ShaderAutoValue {
|
|
|
- // This first batch of constants cleverly lines up
|
|
|
- // with the Cg constant values. Don't insert anything.
|
|
|
- SIC_mat_modelview,
|
|
|
- SIC_inv_modelview,
|
|
|
- SIC_tps_modelview,
|
|
|
- SIC_itp_modelview,
|
|
|
- SIC_mat_projection,
|
|
|
- SIC_inv_projection,
|
|
|
- SIC_tps_projection,
|
|
|
- SIC_itp_projection,
|
|
|
- SIC_mat_texture,
|
|
|
- SIC_inv_texture,
|
|
|
- SIC_tps_texture,
|
|
|
- SIC_itp_texture,
|
|
|
- SIC_mat_modelproj,
|
|
|
- SIC_inv_modelproj,
|
|
|
- SIC_tps_modelproj,
|
|
|
- SIC_itp_modelproj,
|
|
|
- // From this point forward, it's okay to insert stuff.
|
|
|
- SIC_sys_windowsize,
|
|
|
- SIC_sys_pixelsize,
|
|
|
- SIC_sys_cardcenter,
|
|
|
- };
|
|
|
struct ShaderAutoBind {
|
|
|
CGparameter parameter;
|
|
|
int value;
|
|
|
@@ -158,35 +135,12 @@ private:
|
|
|
// CGcontext _cg_context;
|
|
|
CGprofile _cg_profile[2];
|
|
|
CGprogram _cg_program[2];
|
|
|
- string _cg_errors;
|
|
|
-
|
|
|
- // These arrays contain lists of "bindings." They
|
|
|
- // tell us how to fill the shader's input parameters.
|
|
|
- vector <ShaderAutoBind> _cg_auto_trans;
|
|
|
- vector <ShaderAutoBind> _cg_auto_param;
|
|
|
- vector <ShaderArgBind> _cg_fbind;
|
|
|
- vector <ShaderArgBind> _cg_npbind;
|
|
|
- vector <ShaderTexBind> _cg_texbind;
|
|
|
- vector <ShaderTransBind> _cg_transform_bind;
|
|
|
- vector <ShaderTransBind> _cg_parameter_bind;
|
|
|
- vector <ShaderVarying> _cg_varying;
|
|
|
+
|
|
|
+ void report_cg_compile_errors(const string &file, CGcontext ctx);
|
|
|
|
|
|
bool try_cg_compile(ShaderExpansion *s, GSG *gsg);
|
|
|
- void bind_cg_transform(const ShaderTransBind &stb,
|
|
|
- CLP(GraphicsStateGuardian) *gsg);
|
|
|
void suggest_cg_profile(const string &vpro, const string &fpro);
|
|
|
CGprofile parse_cg_profile(const string &id, bool vertex);
|
|
|
- void issue_cg_auto_bind(const ShaderAutoBind &bind, GSG *gsg);
|
|
|
- bool compile_cg_parameter(CGparameter p, DX_PARAMETER *dx_parameter);
|
|
|
- bool errchk_cg_parameter_words(CGparameter p, int len);
|
|
|
- bool errchk_cg_parameter_direction(CGparameter p, CGenum dir);
|
|
|
- bool errchk_cg_parameter_variance(CGparameter p, CGenum var);
|
|
|
- bool errchk_cg_parameter_prog(CGparameter p, CGprogram prog, const string &msg);
|
|
|
- bool errchk_cg_parameter_type(CGparameter p, CGtype dt);
|
|
|
- bool errchk_cg_parameter_float(CGparameter p);
|
|
|
- bool errchk_cg_parameter_sampler(CGparameter p);
|
|
|
- void errchk_cg_output(CGparameter p, const string &msg);
|
|
|
- void print_cg_compile_errors(const string &file, CGcontext ctx);
|
|
|
#endif
|
|
|
|
|
|
public:
|