|
@@ -16,7 +16,7 @@
|
|
|
|
|
|
|
|
#ifndef OPENGLES_1
|
|
#ifndef OPENGLES_1
|
|
|
|
|
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
#include "Cg/cgGL.h"
|
|
#include "Cg/cgGL.h"
|
|
|
#endif
|
|
#endif
|
|
|
#include "pStatTimer.h"
|
|
#include "pStatTimer.h"
|
|
@@ -35,7 +35,7 @@ TypeHandle CLP(ShaderContext)::_type_handle;
|
|
|
#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
|
|
#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
#ifndef NDEBUG
|
|
#ifndef NDEBUG
|
|
|
#define cg_report_errors() { \
|
|
#define cg_report_errors() { \
|
|
|
CGerror err = cgGetError(); \
|
|
CGerror err = cgGetError(); \
|
|
@@ -59,7 +59,7 @@ CLP(ShaderContext)(Shader *s, GSG *gsg) : ShaderContext(s) {
|
|
|
_glsl_vshader = 0;
|
|
_glsl_vshader = 0;
|
|
|
_glsl_fshader = 0;
|
|
_glsl_fshader = 0;
|
|
|
_glsl_gshader = 0;
|
|
_glsl_gshader = 0;
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
_cg_context = 0;
|
|
_cg_context = 0;
|
|
|
if (s->get_language() == Shader::SL_Cg) {
|
|
if (s->get_language() == Shader::SL_Cg) {
|
|
|
|
|
|
|
@@ -369,7 +369,7 @@ CLP(ShaderContext)::
|
|
|
////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////
|
|
|
void CLP(ShaderContext)::
|
|
void CLP(ShaderContext)::
|
|
|
release_resources(GSG *gsg) {
|
|
release_resources(GSG *gsg) {
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
if (_cg_context) {
|
|
if (_cg_context) {
|
|
|
cgDestroyContext(_cg_context);
|
|
cgDestroyContext(_cg_context);
|
|
|
_cg_context = 0;
|
|
_cg_context = 0;
|
|
@@ -442,7 +442,7 @@ bind(GSG *gsg, bool reissue_parameters) {
|
|
|
issue_parameters(gsg, Shader::SSD_general);
|
|
issue_parameters(gsg, Shader::SSD_general);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
if (_cg_context != 0) {
|
|
if (_cg_context != 0) {
|
|
|
// Bind the shaders.
|
|
// Bind the shaders.
|
|
|
if (_cg_vprogram != 0) {
|
|
if (_cg_vprogram != 0) {
|
|
@@ -474,7 +474,7 @@ void CLP(ShaderContext)::
|
|
|
unbind(GSG *gsg) {
|
|
unbind(GSG *gsg) {
|
|
|
_last_gsg = gsg;
|
|
_last_gsg = gsg;
|
|
|
|
|
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
if (_cg_context != 0) {
|
|
if (_cg_context != 0) {
|
|
|
if (_cg_vprogram != 0) {
|
|
if (_cg_vprogram != 0) {
|
|
|
cgGLDisableProfile(cgGetProgramProfile(_cg_vprogram));
|
|
cgGLDisableProfile(cgGetProgramProfile(_cg_vprogram));
|
|
@@ -529,7 +529,7 @@ issue_parameters(GSG *gsg, int altered) {
|
|
|
release_resources(gsg);
|
|
release_resources(gsg);
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
else if (_shader->get_language() == Shader::SL_Cg) {
|
|
else if (_shader->get_language() == Shader::SL_Cg) {
|
|
|
const Shader::ShaderPtrSpec& _ptr = _shader->_ptr_spec[i];
|
|
const Shader::ShaderPtrSpec& _ptr = _shader->_ptr_spec[i];
|
|
|
Shader::ShaderPtrData* _ptr_data =
|
|
Shader::ShaderPtrData* _ptr_data =
|
|
@@ -645,7 +645,7 @@ issue_parameters(GSG *gsg, int altered) {
|
|
|
case Shader::SMP_row3x3: gsg->_glUniform3fv(p, 1, data+12); continue;
|
|
case Shader::SMP_row3x3: gsg->_glUniform3fv(p, 1, data+12); continue;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
else if (_shader->get_language() == Shader::SL_Cg) {
|
|
else if (_shader->get_language() == Shader::SL_Cg) {
|
|
|
CGparameter p = _cg_parameter_map[_shader->_mat_spec[i]._id._seqno];
|
|
CGparameter p = _cg_parameter_map[_shader->_mat_spec[i]._id._seqno];
|
|
|
switch (_shader->_mat_spec[i]._piece) {
|
|
switch (_shader->_mat_spec[i]._piece) {
|
|
@@ -667,7 +667,7 @@ issue_parameters(GSG *gsg, int altered) {
|
|
|
#endif
|
|
#endif
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
cg_report_errors();
|
|
cg_report_errors();
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
@@ -691,7 +691,7 @@ disable_shader_vertex_arrays(GSG *gsg) {
|
|
|
gsg->_glDisableVertexAttribArray(i);
|
|
gsg->_glDisableVertexAttribArray(i);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
else if (_shader->get_language() == Shader::SL_Cg) {
|
|
else if (_shader->get_language() == Shader::SL_Cg) {
|
|
|
for (int i=0; i<(int)_shader->_var_spec.size(); i++) {
|
|
for (int i=0; i<(int)_shader->_var_spec.size(); i++) {
|
|
|
CGparameter p = _cg_parameter_map[_shader->_var_spec[i]._id._seqno];
|
|
CGparameter p = _cg_parameter_map[_shader->_var_spec[i]._id._seqno];
|
|
@@ -724,7 +724,7 @@ update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg,
|
|
|
if (!valid()) {
|
|
if (!valid()) {
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
cg_report_errors();
|
|
cg_report_errors();
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
@@ -739,7 +739,7 @@ update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg,
|
|
|
int start, stride, num_values;
|
|
int start, stride, num_values;
|
|
|
int nvarying = _shader->_var_spec.size();
|
|
int nvarying = _shader->_var_spec.size();
|
|
|
for (int i=0; i<nvarying; i++) {
|
|
for (int i=0; i<nvarying; i++) {
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
if (_shader->get_language() == Shader::SL_Cg) {
|
|
if (_shader->get_language() == Shader::SL_Cg) {
|
|
|
if (_cg_parameter_map[_shader->_var_spec[i]._id._seqno] == 0) {
|
|
if (_cg_parameter_map[_shader->_var_spec[i]._id._seqno] == 0) {
|
|
|
continue;
|
|
continue;
|
|
@@ -775,7 +775,7 @@ update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg,
|
|
|
#ifndef OPENGLES_2
|
|
#ifndef OPENGLES_2
|
|
|
glDisableClientState(GL_VERTEX_ARRAY);
|
|
glDisableClientState(GL_VERTEX_ARRAY);
|
|
|
#endif
|
|
#endif
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
} else if (_shader->get_language() == Shader::SL_Cg) {
|
|
} else if (_shader->get_language() == Shader::SL_Cg) {
|
|
|
CGparameter p = _cg_parameter_map[_shader->_var_spec[i]._id._seqno];
|
|
CGparameter p = _cg_parameter_map[_shader->_var_spec[i]._id._seqno];
|
|
|
cgGLSetParameterPointer(p,
|
|
cgGLSetParameterPointer(p,
|
|
@@ -785,7 +785,7 @@ update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg,
|
|
|
#endif
|
|
#endif
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
else if (_shader->get_language() == Shader::SL_Cg) {
|
|
else if (_shader->get_language() == Shader::SL_Cg) {
|
|
|
CGparameter p = _cg_parameter_map[_shader->_var_spec[i]._id._seqno];
|
|
CGparameter p = _cg_parameter_map[_shader->_var_spec[i]._id._seqno];
|
|
|
cgGLDisableClientState(p);
|
|
cgGLDisableClientState(p);
|
|
@@ -794,7 +794,7 @@ update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg,
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
cg_report_errors();
|
|
cg_report_errors();
|
|
|
#endif
|
|
#endif
|
|
|
gsg->report_my_gl_errors();
|
|
gsg->report_my_gl_errors();
|
|
@@ -822,7 +822,7 @@ disable_shader_texture_bindings(GSG *gsg) {
|
|
|
} else {
|
|
} else {
|
|
|
gsg->_glActiveTexture(GL_TEXTURE0 + _shader->_tex_spec[i]._stage + _stage_offset);
|
|
gsg->_glActiveTexture(GL_TEXTURE0 + _shader->_tex_spec[i]._stage + _stage_offset);
|
|
|
}
|
|
}
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
} else if (_shader->get_language() == Shader::SL_Cg) {
|
|
} else if (_shader->get_language() == Shader::SL_Cg) {
|
|
|
CGparameter p = _cg_parameter_map[_shader->_tex_spec[i]._id._seqno];
|
|
CGparameter p = _cg_parameter_map[_shader->_tex_spec[i]._id._seqno];
|
|
|
if (p == 0) continue;
|
|
if (p == 0) continue;
|
|
@@ -855,7 +855,7 @@ disable_shader_texture_bindings(GSG *gsg) {
|
|
|
#endif // OPENGLES_2
|
|
#endif // OPENGLES_2
|
|
|
_stage_offset = 0;
|
|
_stage_offset = 0;
|
|
|
|
|
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
cg_report_errors();
|
|
cg_report_errors();
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
@@ -900,7 +900,7 @@ update_shader_texture_bindings(CLP(ShaderContext) *prev, GSG *gsg) {
|
|
|
texunit += _stage_offset;
|
|
texunit += _stage_offset;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
if (_shader->get_language() == Shader::SL_Cg) {
|
|
if (_shader->get_language() == Shader::SL_Cg) {
|
|
|
CGparameter p = _cg_parameter_map[_shader->_tex_spec[i]._id._seqno];
|
|
CGparameter p = _cg_parameter_map[_shader->_tex_spec[i]._id._seqno];
|
|
|
if (p == 0) {
|
|
if (p == 0) {
|
|
@@ -955,7 +955,7 @@ update_shader_texture_bindings(CLP(ShaderContext) *prev, GSG *gsg) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-#ifdef HAVE_CG
|
|
|
|
|
|
|
+#if defined(HAVE_CG) && !defined(OPENGLES)
|
|
|
cg_report_errors();
|
|
cg_report_errors();
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|