Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func _sign(inp: float) -> float:
- if inp >= 0.0:
- return 1.0
- else:
- return -1.0
- func _multiply_point(m: Transform, point: Vector3) -> Vector3:
- return m.xform(point)
- func _multiply_vector(m: Basis, pos: Vector3) -> Vector3:
- return m * pos;
- func _process(delta):
- var clip_plane: Transform = portal.transform
- var clip_plane_forward: Vector3 = -clip_plane.basis.z
- var dot: int = _sign(clip_plane_forward.dot(portal.transform.origin - transform.origin))
- var cam_space_pos: = _multiply_point(get_camera_transform(), clip_plane.origin)
- var cam_space_normal: = _multiply_vector(get_camera_transform().basis, clip_plane_forward) * dot
- var cam_space_dst = - cam_space_pos.dot(cam_space_normal) + near_clip_offset;
- if abs(cam_space_dst) > near_clip_limit:
- projection = PROJECTION_OBLIQUE_PERSPECTIVE
- oblique_near_plane = Quat (cam_space_normal.x, cam_space_normal.y, cam_space_normal.z, cam_space_dst)
- else:
- projection = PROJECTION_PERSPECTIVE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement