mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
fix lights and clip planes when render is transformed
This commit is contained in:
parent
0560375cbb
commit
6daef3bd29
@ -3937,7 +3937,7 @@ bind_light(PointLight *light_obj, const NodePath &light, int light_id) {
|
||||
|
||||
// Position needs to specify x, y, z, and w
|
||||
// w == 1 implies non-infinite position
|
||||
CPT(TransformState) transform = light.get_transform(_scene_setup->get_scene_root());
|
||||
CPT(TransformState) transform = light.get_transform(_scene_setup->get_scene_root().get_parent());
|
||||
LPoint3f pos = light_obj->get_point() * transform->get_mat();
|
||||
|
||||
LPoint4f fpos(pos[0], pos[1], pos[2], 1.0f);
|
||||
@ -3977,7 +3977,7 @@ bind_light(DirectionalLight *light_obj, const NodePath &light, int light_id) {
|
||||
|
||||
// Position needs to specify x, y, z, and w.
|
||||
// w == 0 implies light is at infinity
|
||||
CPT(TransformState) transform = light.get_transform(_scene_setup->get_scene_root());
|
||||
CPT(TransformState) transform = light.get_transform(_scene_setup->get_scene_root().get_parent());
|
||||
LVector3f dir = light_obj->get_direction() * transform->get_mat();
|
||||
LPoint4f fdir(-dir[0], -dir[1], -dir[2], 0);
|
||||
GLP(Lightfv)(id, GL_POSITION, fdir.get_data());
|
||||
@ -4021,7 +4021,7 @@ bind_light(Spotlight *light_obj, const NodePath &light, int light_id) {
|
||||
|
||||
// Position needs to specify x, y, z, and w
|
||||
// w == 1 implies non-infinite position
|
||||
CPT(TransformState) transform = light.get_transform(_scene_setup->get_scene_root());
|
||||
CPT(TransformState) transform = light.get_transform(_scene_setup->get_scene_root().get_parent());
|
||||
const LMatrix4f &light_mat = transform->get_mat();
|
||||
LPoint3f pos = lens->get_nodal_point() * light_mat;
|
||||
LVector3f dir = lens->get_view_vector() * light_mat;
|
||||
@ -5203,7 +5203,7 @@ void CLP(GraphicsStateGuardian)::
|
||||
bind_clip_plane(const NodePath &plane, int plane_id) {
|
||||
GLenum id = get_clip_plane_id(plane_id);
|
||||
|
||||
CPT(TransformState) transform = plane.get_transform(_scene_setup->get_scene_root());
|
||||
CPT(TransformState) transform = plane.get_transform(_scene_setup->get_scene_root().get_parent());
|
||||
const PlaneNode *plane_node;
|
||||
DCAST_INTO_V(plane_node, plane.node());
|
||||
Planef xformed_plane = plane_node->get_plane() * transform->get_mat();
|
||||
|
Loading…
x
Reference in New Issue
Block a user