mirror of
https://github.com/godotengine/godot.git
synced 2026-01-03 18:11:19 +03:00
Merge pull request #26064 from JFonS/add_frustum_camera_mode
Add FRUSTUM camera mode, allowing tilted frustums
This commit is contained in:
@@ -61,6 +61,16 @@ void VisualServerScene::camera_set_orthogonal(RID p_camera, float p_size, float
|
||||
camera->zfar = p_z_far;
|
||||
}
|
||||
|
||||
void VisualServerScene::camera_set_frustum(RID p_camera, float p_size, Vector2 p_offset, float p_z_near, float p_z_far) {
|
||||
Camera *camera = camera_owner.get(p_camera);
|
||||
ERR_FAIL_COND(!camera);
|
||||
camera->type = Camera::FRUSTUM;
|
||||
camera->size = p_size;
|
||||
camera->offset = p_offset;
|
||||
camera->znear = p_z_near;
|
||||
camera->zfar = p_z_far;
|
||||
}
|
||||
|
||||
void VisualServerScene::camera_set_transform(RID p_camera, const Transform &p_transform) {
|
||||
|
||||
Camera *camera = camera_owner.get(p_camera);
|
||||
@@ -1730,6 +1740,17 @@ void VisualServerScene::render_camera(RID p_camera, RID p_scenario, Size2 p_view
|
||||
ortho = false;
|
||||
|
||||
} break;
|
||||
case Camera::FRUSTUM: {
|
||||
|
||||
camera_matrix.set_frustum(
|
||||
camera->size,
|
||||
p_viewport_size.width / (float)p_viewport_size.height,
|
||||
camera->offset,
|
||||
camera->znear,
|
||||
camera->zfar,
|
||||
camera->vaspect);
|
||||
ortho = false;
|
||||
} break;
|
||||
}
|
||||
|
||||
_prepare_scene(camera->transform, camera_matrix, ortho, camera->env, camera->visible_layers, p_scenario, p_shadow_atlas, RID());
|
||||
|
||||
Reference in New Issue
Block a user