mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
Fix p3d_ModelViewMatrix and p3d_ProjectionMatrix and variants. Also add p3d_NormalMatrix.
This commit is contained in:
parent
20a08aa8de
commit
30ef435607
@ -352,26 +352,48 @@ CLP(ShaderContext)(Shader *s, GSG *gsg) : ShaderContext(s) {
|
||||
bind._dep[1] = Shader::SSD_general | Shader::SSD_transform;
|
||||
|
||||
} else if (matrix_name == "ModelViewMatrix") {
|
||||
bind._func = Shader::SMF_first;
|
||||
bind._func = Shader::SMF_compose;
|
||||
if (inverse) {
|
||||
bind._part[0] = Shader::SMO_view_to_model;
|
||||
bind._part[0] = Shader::SMO_apiview_to_view;
|
||||
bind._part[1] = Shader::SMO_view_to_model;
|
||||
} else {
|
||||
bind._part[0] = Shader::SMO_model_to_view;
|
||||
bind._part[1] = Shader::SMO_view_to_apiview;
|
||||
}
|
||||
bind._part[1] = Shader::SMO_identity;
|
||||
bind._dep[0] = Shader::SSD_general | Shader::SSD_transform;
|
||||
bind._dep[1] = Shader::SSD_NONE;
|
||||
bind._dep[1] = Shader::SSD_general | Shader::SSD_transform;
|
||||
|
||||
} else if (matrix_name == "ProjectionMatrix") {
|
||||
bind._func = Shader::SMF_first;
|
||||
bind._func = Shader::SMF_compose;
|
||||
if (inverse) {
|
||||
bind._part[0] = Shader::SMO_apiclip_to_view;
|
||||
bind._part[1] = Shader::SMO_view_to_apiview;
|
||||
} else {
|
||||
bind._part[0] = Shader::SMO_view_to_apiclip;
|
||||
bind._part[0] = Shader::SMO_apiview_to_view;
|
||||
bind._part[1] = Shader::SMO_view_to_apiclip;
|
||||
}
|
||||
bind._part[1] = Shader::SMO_identity;
|
||||
bind._dep[0] = Shader::SSD_general | Shader::SSD_transform;
|
||||
bind._dep[1] = Shader::SSD_NONE;
|
||||
bind._dep[1] = Shader::SSD_general | Shader::SSD_transform;
|
||||
|
||||
} else if (matrix_name == "NormalMatrix") {
|
||||
// This is really the upper 3x3 of the ModelViewMatrixInverseTranspose.
|
||||
bind._func = Shader::SMF_compose;
|
||||
if (inverse) {
|
||||
bind._part[0] = Shader::SMO_model_to_view;
|
||||
bind._part[1] = Shader::SMO_view_to_apiview;
|
||||
} else {
|
||||
bind._part[0] = Shader::SMO_apiview_to_view;
|
||||
bind._part[1] = Shader::SMO_view_to_model;
|
||||
}
|
||||
bind._dep[0] = Shader::SSD_general | Shader::SSD_transform;
|
||||
bind._dep[1] = Shader::SSD_general | Shader::SSD_transform;
|
||||
|
||||
if (transpose) {
|
||||
bind._piece = Shader::SMP_whole;
|
||||
} else {
|
||||
bind._piece = Shader::SMP_transpose;
|
||||
}
|
||||
|
||||
} else {
|
||||
GLCAT.error() << "Unrecognized uniform matrix name '" << matrix_name << "'!\n";
|
||||
continue;
|
||||
|
Loading…
x
Reference in New Issue
Block a user