mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
fix cg shader arrays
This commit is contained in:
parent
f23f2a0ea7
commit
230b65c58a
@ -211,13 +211,13 @@ cp_errchk_parameter_ptr(ShaderArgInfo &p) {
|
|||||||
case SAC_vector: return true;
|
case SAC_vector: return true;
|
||||||
case SAC_matrix: return true;
|
case SAC_matrix: return true;
|
||||||
case SAC_array:
|
case SAC_array:
|
||||||
switch (p._subclass){
|
switch (p._subclass) {
|
||||||
case SAC_scalar: return true;
|
case SAC_scalar: return true;
|
||||||
case SAC_vector: return true;
|
case SAC_vector: return true;
|
||||||
case SAC_matrix: return true;
|
case SAC_matrix: return true;
|
||||||
default:
|
default:
|
||||||
string msg = "unsupported array subclass.";
|
string msg = "unsupported array subclass.";
|
||||||
cp_report_error(p,msg);
|
cp_report_error(p, msg);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -495,23 +495,20 @@ void Shader::cg_recurse_parameters(CGparameter parameter,
|
|||||||
|
|
||||||
CGenum vbl = cgGetParameterVariability(parameter);
|
CGenum vbl = cgGetParameterVariability(parameter);
|
||||||
|
|
||||||
if ((vbl==CG_VARYING)||(vbl==CG_UNIFORM)){
|
if ((vbl==CG_VARYING)||(vbl==CG_UNIFORM)) {
|
||||||
switch (cgGetParameterType(parameter)) {
|
switch (cgGetParameterType(parameter)) {
|
||||||
case CG_STRUCT:
|
case CG_STRUCT:
|
||||||
cg_recurse_parameters(
|
cg_recurse_parameters(
|
||||||
cgGetFirstStructParameter(parameter),type,success); break;
|
cgGetFirstStructParameter(parameter), type, success);
|
||||||
|
break;
|
||||||
|
|
||||||
case CG_ARRAY:
|
case CG_ARRAY:
|
||||||
arg_type = cg_parameter_type(cgGetFirstStructParameter(parameter));
|
arg_type = cg_parameter_type(cgGetArrayParameter(parameter, 0));
|
||||||
arg_subclass = cg_parameter_class(cgGetFirstStructParameter(parameter));
|
arg_subclass = cg_parameter_class(cgGetArrayParameter(parameter, 0));
|
||||||
|
|
||||||
arg_dim[0] = cgGetArraySize(parameter,0);
|
arg_dim[0] = cgGetArraySize(parameter, 0);
|
||||||
|
|
||||||
//Uncomment this to parse the array[n] as n separeted elements
|
default: {
|
||||||
//recurse_program_parameters(
|
|
||||||
// cgGetFirstStructParameter(parameter),type,success); break;
|
|
||||||
|
|
||||||
default:{
|
|
||||||
arg_dim[1] = cgGetParameterRows(parameter);
|
arg_dim[1] = cgGetParameterRows(parameter);
|
||||||
arg_dim[2] = cgGetParameterColumns(parameter);
|
arg_dim[2] = cgGetParameterColumns(parameter);
|
||||||
|
|
||||||
@ -1233,11 +1230,10 @@ clear_parameters() {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
Shader::ShaderArgType Shader::
|
Shader::ShaderArgType Shader::
|
||||||
cg_parameter_type(CGparameter p) {
|
cg_parameter_type(CGparameter p) {
|
||||||
|
|
||||||
switch (cgGetParameterClass(p)) {
|
switch (cgGetParameterClass(p)) {
|
||||||
case CG_PARAMETERCLASS_SCALAR: return SAT_scalar;
|
case CG_PARAMETERCLASS_SCALAR: return SAT_scalar;
|
||||||
case CG_PARAMETERCLASS_VECTOR:
|
case CG_PARAMETERCLASS_VECTOR:
|
||||||
switch (cgGetParameterColumns(p)){
|
switch (cgGetParameterColumns(p)) {
|
||||||
case 1: return SAT_vec1;
|
case 1: return SAT_vec1;
|
||||||
case 2: return SAT_vec2;
|
case 2: return SAT_vec2;
|
||||||
case 3: return SAT_vec3;
|
case 3: return SAT_vec3;
|
||||||
@ -1245,9 +1241,9 @@ cg_parameter_type(CGparameter p) {
|
|||||||
default: return SAT_unknown;
|
default: return SAT_unknown;
|
||||||
}
|
}
|
||||||
case CG_PARAMETERCLASS_MATRIX:
|
case CG_PARAMETERCLASS_MATRIX:
|
||||||
switch (cgGetParameterRows(p)){
|
switch (cgGetParameterRows(p)) {
|
||||||
case 1:
|
case 1:
|
||||||
switch (cgGetParameterColumns(p)){
|
switch (cgGetParameterColumns(p)) {
|
||||||
case 1: return SAT_mat1x1;
|
case 1: return SAT_mat1x1;
|
||||||
case 2: return SAT_mat1x2;
|
case 2: return SAT_mat1x2;
|
||||||
case 3: return SAT_mat1x3;
|
case 3: return SAT_mat1x3;
|
||||||
@ -1255,7 +1251,7 @@ cg_parameter_type(CGparameter p) {
|
|||||||
default: return SAT_unknown;
|
default: return SAT_unknown;
|
||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
switch (cgGetParameterColumns(p)){
|
switch (cgGetParameterColumns(p)) {
|
||||||
case 1: return SAT_mat2x1;
|
case 1: return SAT_mat2x1;
|
||||||
case 2: return SAT_mat2x2;
|
case 2: return SAT_mat2x2;
|
||||||
case 3: return SAT_mat2x3;
|
case 3: return SAT_mat2x3;
|
||||||
@ -1263,7 +1259,7 @@ cg_parameter_type(CGparameter p) {
|
|||||||
default: return SAT_unknown;
|
default: return SAT_unknown;
|
||||||
}
|
}
|
||||||
case 3:
|
case 3:
|
||||||
switch (cgGetParameterColumns(p)){
|
switch (cgGetParameterColumns(p)) {
|
||||||
case 1: return SAT_mat3x1;
|
case 1: return SAT_mat3x1;
|
||||||
case 2: return SAT_mat3x2;
|
case 2: return SAT_mat3x2;
|
||||||
case 3: return SAT_mat3x3;
|
case 3: return SAT_mat3x3;
|
||||||
@ -1271,7 +1267,7 @@ cg_parameter_type(CGparameter p) {
|
|||||||
default: return SAT_unknown;
|
default: return SAT_unknown;
|
||||||
}
|
}
|
||||||
case 4:
|
case 4:
|
||||||
switch (cgGetParameterColumns(p)){
|
switch (cgGetParameterColumns(p)) {
|
||||||
case 1: return SAT_mat4x1;
|
case 1: return SAT_mat4x1;
|
||||||
case 2: return SAT_mat4x2;
|
case 2: return SAT_mat4x2;
|
||||||
case 3: return SAT_mat4x3;
|
case 3: return SAT_mat4x3;
|
||||||
@ -1281,7 +1277,7 @@ cg_parameter_type(CGparameter p) {
|
|||||||
default: return SAT_unknown;
|
default: return SAT_unknown;
|
||||||
}
|
}
|
||||||
case CG_PARAMETERCLASS_SAMPLER:
|
case CG_PARAMETERCLASS_SAMPLER:
|
||||||
switch (cgGetParameterType(p)){
|
switch (cgGetParameterType(p)) {
|
||||||
case CG_SAMPLER1D: return Shader::SAT_sampler1d;
|
case CG_SAMPLER1D: return Shader::SAT_sampler1d;
|
||||||
case CG_SAMPLER2D: return Shader::SAT_sampler2d;
|
case CG_SAMPLER2D: return Shader::SAT_sampler2d;
|
||||||
case CG_SAMPLER3D: return Shader::SAT_sampler3d;
|
case CG_SAMPLER3D: return Shader::SAT_sampler3d;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user