Advertisement
Guest User

Godot near clip plane calculation

a guest
Mar 19th, 2020
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. func _sign(inp: float) -> float:
  2. if inp >= 0.0:
  3. return 1.0
  4. else:
  5. return -1.0
  6.  
  7. func _multiply_point(m: Transform, point: Vector3) -> Vector3:
  8. return m.xform(point)
  9.  
  10. func _multiply_vector(m: Basis, pos: Vector3) -> Vector3:
  11. return m * pos;
  12.  
  13. func _process(delta):
  14. var clip_plane: Transform = portal.transform
  15. var clip_plane_forward: Vector3 = -clip_plane.basis.z
  16. var dot: int = _sign(clip_plane_forward.dot(portal.transform.origin - transform.origin))
  17.  
  18. var cam_space_pos: = _multiply_point(get_camera_transform(), clip_plane.origin)
  19. var cam_space_normal: = _multiply_vector(get_camera_transform().basis, clip_plane_forward) * dot
  20. var cam_space_dst = - cam_space_pos.dot(cam_space_normal) + near_clip_offset;
  21.  
  22. if abs(cam_space_dst) > near_clip_limit:
  23. projection = PROJECTION_OBLIQUE_PERSPECTIVE
  24. oblique_near_plane = Quat (cam_space_normal.x, cam_space_normal.y, cam_space_normal.z, cam_space_dst)
  25. else:
  26. projection = PROJECTION_PERSPECTIVE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement