mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
Implement broken apiclip_of_x
This commit is contained in:
parent
2142fbb45b
commit
5d1e507aef
@ -1269,15 +1269,32 @@ fetch_specified_part(Shader::ShaderMatInput part, InternalName *name, LMatrix4 &
|
|||||||
return &t;
|
return &t;
|
||||||
}
|
}
|
||||||
case Shader::SMO_apiclip_x_to_view: {
|
case Shader::SMO_apiclip_x_to_view: {
|
||||||
// NOT IMPLEMENTED
|
// LIMITATION: only takes the first lens.
|
||||||
return &LMatrix4::ident_mat();
|
const NodePath &np = _target_shader->get_shader_input_nodepath(name);
|
||||||
|
nassertr(!np.is_empty(), &LMatrix4::ident_mat());
|
||||||
|
LensNode *ln;
|
||||||
|
DCAST_INTO_R(ln, np.node(), &LMatrix4::ident_mat());
|
||||||
|
Lens *lens = ln->get_lens();
|
||||||
|
nassertr(lens != (Lens *)NULL, &LMatrix4::ident_mat());
|
||||||
|
CPT(TransformState) ts = calc_projection_mat(lens);
|
||||||
|
t = ts->get_inverse()->get_mat() * _inv_cs_transform->get_mat();
|
||||||
|
return &t;
|
||||||
}
|
}
|
||||||
case Shader::SMO_view_to_apiclip_x: {
|
case Shader::SMO_view_to_apiclip_x: {
|
||||||
// NOT IMPLEMENTED
|
// LIMITATION: only takes the first lens.
|
||||||
return &LMatrix4::ident_mat();
|
const NodePath &np = _target_shader->get_shader_input_nodepath(name);
|
||||||
|
nassertr(!np.is_empty(), &LMatrix4::ident_mat());
|
||||||
|
LensNode *ln;
|
||||||
|
DCAST_INTO_R(ln, np.node(), &LMatrix4::ident_mat());
|
||||||
|
Lens *lens = ln->get_lens();
|
||||||
|
nassertr(lens != (Lens *)NULL, &LMatrix4::ident_mat());
|
||||||
|
CPT(TransformState) ts = calc_projection_mat(lens);
|
||||||
|
nassertr(ts != NULL, &LMatrix4::ident_mat());
|
||||||
|
t = _cs_transform->get_mat() * ts->get_mat();
|
||||||
|
return &t;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
// should never get here
|
nassertr(false /*should never get here*/, &LMatrix4::ident_mat());
|
||||||
return &LMatrix4::ident_mat();
|
return &LMatrix4::ident_mat();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user