|
Blender V4.5
|
#include "gpu_context_private.hh"#include "gpu_matrix_private.hh"#include "GPU_matrix.hh"#include "BLI_math_matrix.h"#include "BLI_math_rotation.h"#include "BLI_math_vector.h"#include "MEM_guardedalloc.h"Go to the source code of this file.
Classes | |
| struct | MatrixStack |
| struct | GPUMatrixState |
Macros | |
| #define | SUPPRESS_GENERIC_MATRIX_API |
| #define | USE_GPU_PY_MATRIX_API /* only so values are declared */ |
| #define | ModelViewStack Context::get()->matrix_state->model_view_stack |
| #define | ModelView ModelViewStack.stack[ModelViewStack.top] |
| #define | ProjectionStack Context::get()->matrix_state->projection_stack |
| #define | Projection ProjectionStack.stack[ProjectionStack.top] |
| #define | MATRIX_4X4_IDENTITY |
| #define | CHECKMAT(m) |
Typedefs | |
| using | Mat4 = float[4][4] |
| using | Mat3 = float[3][3] |
Functions | |
| GPUMatrixState * | GPU_matrix_state_create () |
| void | GPU_matrix_state_discard (GPUMatrixState *state) |
| static void | gpu_matrix_state_active_set_dirty (bool value) |
| void | GPU_matrix_reset () |
| void | GPU_matrix_push () |
| void | GPU_matrix_pop () |
| void | GPU_matrix_push_projection () |
| void | GPU_matrix_pop_projection () |
| void | GPU_matrix_set (const float m[4][4]) |
| void | GPU_matrix_identity_projection_set () |
| void | GPU_matrix_projection_set (const float m[4][4]) |
| void | GPU_matrix_identity_set () |
| void | GPU_matrix_translate_2f (float x, float y) |
| void | GPU_matrix_translate_2fv (const float vec[2]) |
| void | GPU_matrix_translate_3f (float x, float y, float z) |
| void | GPU_matrix_translate_3fv (const float vec[3]) |
| void | GPU_matrix_scale_1f (float factor) |
| void | GPU_matrix_scale_2f (float x, float y) |
| void | GPU_matrix_scale_2fv (const float vec[2]) |
| void | GPU_matrix_scale_3f (float x, float y, float z) |
| void | GPU_matrix_scale_3fv (const float vec[3]) |
| void | GPU_matrix_mul (const float m[4][4]) |
| void | GPU_matrix_rotate_2d (float deg) |
| void | GPU_matrix_rotate_3f (float deg, float x, float y, float z) |
| void | GPU_matrix_rotate_3fv (float deg, const float axis[3]) |
| void | GPU_matrix_rotate_axis (float deg, char axis) |
| static void | mat4_ortho_set (float m[4][4], float left, float right, float bottom, float top, float near, float far) |
| static void | mat4_frustum_set (float m[4][4], float left, float right, float bottom, float top, float near, float far) |
| static void | mat4_look_from_origin (float m[4][4], float lookdir[3], float camup[3]) |
| void | GPU_matrix_ortho_set (float left, float right, float bottom, float top, float near, float far) |
| void | GPU_matrix_ortho_set_z (float near, float far) |
| void | GPU_matrix_ortho_2d_set (float left, float right, float bottom, float top) |
| void | GPU_matrix_frustum_set (float left, float right, float bottom, float top, float near, float far) |
| void | GPU_matrix_perspective_set (float fovy, float aspect, float near, float far) |
| void | GPU_matrix_look_at (float eyeX, float eyeY, float eyeZ, float centerX, float centerY, float centerZ, float upX, float upY, float upZ) |
| void | GPU_matrix_project_3fv (const float world[3], const float model[4][4], const float proj[4][4], const int view[4], float r_win[3]) |
| void | GPU_matrix_project_2fv (const float world[3], const float model[4][4], const float proj[4][4], const int view[4], float r_win[2]) |
| bool | GPU_matrix_unproject_3fv (const float win[3], const float model_inverted[4][4], const float proj[4][4], const int view[4], float r_world[3]) |
| const float(* | GPU_matrix_model_view_get (float m[4][4]))[4] |
| const float(* | GPU_matrix_projection_get (float m[4][4]))[4] |
| const float(* | GPU_matrix_model_view_projection_get (float m[4][4]))[4] |
| const float(* | GPU_matrix_normal_get (float m[3][3]))[3] |
| const float(* | GPU_matrix_normal_inverse_get (float m[3][3]))[3] |
| void | GPU_matrix_bind (GPUShader *shader) |
| bool | GPU_matrix_dirty_get () |
Python API Helpers | |
| BLI_STATIC_ASSERT (GPU_PY_MATRIX_STACK_LEN+1==MATRIX_STACK_DEPTH, "define mismatch") | |
| int | GPU_matrix_stack_level_get_model_view () |
| int | GPU_matrix_stack_level_get_projection () |
Polygon Offset Hack | |
Workaround the fact that polygon-offset is implementation dependent. We modify the projection matrix winmat in order to change the final depth a tiny amount. | |
| float | GPU_polygon_offset_calc (const float(*winmat)[4], float viewdist, float dist) |
| void | GPU_polygon_offset (float viewdist, float dist) |
Variables | |
| static constexpr int | MATRIX_STACK_DEPTH = 32 |
| #define CHECKMAT | ( | m | ) |
Definition at line 116 of file gpu_matrix.cc.
Referenced by GPU_matrix_frustum_set(), GPU_matrix_identity_projection_set(), GPU_matrix_mul(), GPU_matrix_ortho_2d_set(), GPU_matrix_ortho_set(), GPU_matrix_ortho_set_z(), GPU_matrix_projection_set(), GPU_matrix_rotate_axis(), GPU_matrix_set(), and GPU_matrix_translate_3f().
| #define MATRIX_4X4_IDENTITY |
Referenced by GPU_matrix_state_create().
| #define ModelView ModelViewStack.stack[ModelViewStack.top] |
Definition at line 50 of file gpu_matrix.cc.
Referenced by GPU_matrix_identity_set(), GPU_matrix_model_view_get(), GPU_matrix_model_view_projection_get(), GPU_matrix_mul(), GPU_matrix_push(), GPU_matrix_reset(), GPU_matrix_rotate_2d(), GPU_matrix_rotate_axis(), GPU_matrix_set(), and GPU_matrix_translate_3f().
| #define ModelViewStack Context::get()->matrix_state->model_view_stack |
Definition at line 49 of file gpu_matrix.cc.
Referenced by GPU_matrix_pop(), and GPU_matrix_push().
| #define Projection ProjectionStack.stack[ProjectionStack.top] |
Definition at line 53 of file gpu_matrix.cc.
Referenced by GPU_matrix_frustum_set(), GPU_matrix_identity_projection_set(), GPU_matrix_model_view_projection_get(), GPU_matrix_ortho_set(), GPU_matrix_ortho_set_z(), GPU_matrix_projection_get(), GPU_matrix_projection_set(), GPU_matrix_push_projection(), GPU_matrix_reset(), and HdCyclesCamera::Sync().
| #define ProjectionStack Context::get()->matrix_state->projection_stack |
Definition at line 52 of file gpu_matrix.cc.
Referenced by GPU_matrix_pop_projection(), and GPU_matrix_push_projection().
| #define SUPPRESS_GENERIC_MATRIX_API |
Definition at line 12 of file gpu_matrix.cc.
| #define USE_GPU_PY_MATRIX_API /* only so values are declared */ |
Definition at line 13 of file gpu_matrix.cc.
| using Mat3 = float[3][3] |
Definition at line 28 of file gpu_matrix.cc.
| using Mat4 = float[4][4] |
Definition at line 27 of file gpu_matrix.cc.
| BLI_STATIC_ASSERT | ( | GPU_PY_MATRIX_STACK_LEN+ | 1 = =MATRIX_STACK_DEPTH, |
| "define mismatch" | ) |
References MATRIX_STACK_DEPTH.
| void GPU_matrix_bind | ( | GPUShader * | shader | ) |
Set uniform values for currently bound shader.
Definition at line 612 of file gpu_matrix.cc.
References GPU_matrix_model_view_get, GPU_matrix_model_view_projection_get, GPU_matrix_normal_get, GPU_matrix_projection_get, gpu_matrix_state_active_set_dirty(), GPU_shader_get_builtin_uniform(), GPU_shader_uniform_float_ex(), GPU_UNIFORM_MODELVIEW, GPU_UNIFORM_MODELVIEW_INV, GPU_UNIFORM_MVP, GPU_UNIFORM_NORMAL, GPU_UNIFORM_PROJECTION, GPU_UNIFORM_PROJECTION_INV, invert_m4(), N, and P.
Referenced by blender::gpu::VKImmediate::end(), GPU_shader_bind(), and immBindShader().
| bool GPU_matrix_dirty_get | ( | ) |
Definition at line 657 of file gpu_matrix.cc.
References blender::gpu::Context::get(), blender::gpu::Context::matrix_state, and state.
Referenced by GPU_shader_bind().
| void GPU_matrix_frustum_set | ( | float | left, |
| float | right, | ||
| float | bottom, | ||
| float | top, | ||
| float | near, | ||
| float | far ) |
Definition at line 423 of file gpu_matrix.cc.
References CHECKMAT, gpu_matrix_state_active_set_dirty(), left, mat4_frustum_set(), Projection, and top.
Referenced by GPU_matrix_perspective_set(), and view3d_winmatrix_set().
| void GPU_matrix_identity_projection_set | ( | ) |
Definition at line 155 of file gpu_matrix.cc.
References CHECKMAT, gpu_matrix_state_active_set_dirty(), Projection, and unit_m4().
Referenced by blender::ed::greasepencil::image_render::clear_projection_matrix(), DRW_draw_render_loop_offscreen(), GPU_viewport_stereo_composite(), blender::ed::greasepencil::image_render::image_render_begin(), and playanim_toscreen_ex().
| void GPU_matrix_identity_set | ( | ) |
Set the model-view to an identity matrix.
Definition at line 169 of file gpu_matrix.cc.
References gpu_matrix_state_active_set_dirty(), ModelView, and unit_m4().
Referenced by blender::ed::greasepencil::image_render::clear_view_matrix(), blender::ed::space_node::draw_nodespace_back_pix(), blender::ed::transform::drawVertSlide(), DRW_draw_render_loop_offscreen(), drw_text_cache_draw_ex(), ED_region_pixelspace(), ED_view3d_draw_offscreen(), gizmo_ruler_draw(), GPU_viewport_stereo_composite(), blender::ed::greasepencil::image_render::image_render_begin(), knifetool_draw_angle(), knifetool_draw_visible_distances(), blender::ed::space_node::node_draw_space(), playanim_toscreen_ex(), pygpu_matrix_load_identity(), UI_block_draw(), UI_view2d_view_restore(), wmPartialViewport(), wmViewport(), and wmWindowViewport_ex().
| void GPU_matrix_look_at | ( | float | eyeX, |
| float | eyeY, | ||
| float | eyeZ, | ||
| float | centerX, | ||
| float | centerY, | ||
| float | centerZ, | ||
| float | upX, | ||
| float | upY, | ||
| float | upZ ) |
Definition at line 438 of file gpu_matrix.cc.
References GPU_matrix_mul, GPU_matrix_translate_3f(), and mat4_look_from_origin().
| const float(* GPU_matrix_model_view_get | ( | float | m[4][4] | ) | )[4] |
Definition at line 553 of file gpu_matrix.cc.
References copy_m4_m4(), and ModelView.
| const float(* GPU_matrix_model_view_projection_get | ( | float | m[4][4] | ) | )[4] |
Definition at line 573 of file gpu_matrix.cc.
References ModelView, mul_m4_m4m4(), and Projection.
| void GPU_matrix_mul | ( | const float | m[4][4] | ) |
Definition at line 247 of file gpu_matrix.cc.
References CHECKMAT, gpu_matrix_state_active_set_dirty(), ModelView, and mul_m4_m4_post().
| const float(* GPU_matrix_normal_get | ( | float | m[3][3] | ) | )[3] |
Definition at line 584 of file gpu_matrix.cc.
References copy_m3_m4(), GPU_matrix_model_view_get, invert_m3(), and transpose_m3().
| const float(* GPU_matrix_normal_inverse_get | ( | float | m[3][3] | ) | )[3] |
Definition at line 599 of file gpu_matrix.cc.
References GPU_matrix_normal_get, and invert_m3().
| void GPU_matrix_ortho_2d_set | ( | float | left, |
| float | right, | ||
| float | bottom, | ||
| float | top ) |
Definition at line 415 of file gpu_matrix.cc.
References CHECKMAT, gpu_matrix_state_active_set_dirty(), left, mat4_ortho_set(), and top.
| void GPU_matrix_ortho_set | ( | float | left, |
| float | right, | ||
| float | bottom, | ||
| float | top, | ||
| float | near, | ||
| float | far ) |
Definition at line 400 of file gpu_matrix.cc.
References CHECKMAT, gpu_matrix_state_active_set_dirty(), left, mat4_ortho_set(), Projection, and top.
Referenced by playanim_gpu_matrix(), view3d_winmatrix_set(), and wmOrtho2().
| void GPU_matrix_ortho_set_z | ( | float | near, |
| float | far ) |
Definition at line 407 of file gpu_matrix.cc.
References CHECKMAT, gpu_matrix_state_active_set_dirty(), and Projection.
Referenced by gizmo_axis_draw(), and ui_draw_but_UNITVEC().
| void GPU_matrix_perspective_set | ( | float | fovy, |
| float | aspect, | ||
| float | near, | ||
| float | far ) |
Definition at line 431 of file gpu_matrix.cc.
References GPU_matrix_frustum_set(), M_PI, and tanf.
| void GPU_matrix_pop | ( | ) |
Definition at line 127 of file gpu_matrix.cc.
References BLI_assert, gpu_matrix_state_active_set_dirty(), and ModelViewStack.
Referenced by arrow_draw_geom(), arrow_draw_intern(), blf_batch_draw_begin(), blf_draw_gpu__end(), button2d_draw_intern(), clip_draw_grease_pencil(), clip_main_region_draw(), cursor_point_draw(), blender::ed::curves::curve_draw_stroke_3d(), curve_draw_stroke_3d(), dial_3d_draw_util(), dial_ghostarc_draw_helpline(), blender::render::hydra::DrawTexture::draw(), blender::ed::vse::draw_channel_headers(), draw_cross(), blender::ed::vse::draw_cursor_2d(), draw_distortion(), draw_fcurve(), draw_fcurve_curve_keys(), draw_fcurve_curve_samples(), draw_marker_areas(), draw_marker_outline(), draw_marker_slide_zones(), blender::ed::space_node::draw_nodespace_back_pix(), draw_plane_marker_image(), draw_render_info(), blender::ed::vse::draw_seq_in_view(), draw_stabilization_border(), draw_tracking_tracks(), blender::ed::transform::drawEdgeSlide(), blender::ed::transform::drawLine(), blender::ed::transform::drawPropCircle(), blender::ed::transform::drawVertSlide(), drw_text_cache_draw_ex(), blender::ed::sculpt_paint::dyntopo::dyntopo_detail_size_edit_draw(), ed_gizmo_draw_preset_geometry(), ED_markers_draw(), ED_mask_draw_region(), ED_region_image_metadata_draw(), ED_region_image_render_region_draw(), ED_view3d_draw_offscreen(), EDBM_preselect_edgering_draw(), EDBM_preselect_elem_draw(), gizmo_axis_draw(), gizmo_cage2d_draw_intern(), gizmo_cage3d_draw_intern(), gizmo_primitive_draw_intern(), gizmo_ruler_draw(), GPU_viewport_stereo_composite(), blender::ed::greasepencil::image_render::image_render_end(), knifetool_draw_angle(), knifetool_draw_visible_distances(), blender::ed::sculpt_paint::min_distance_edit::min_distance_edit_draw(), move3d_draw_intern(), blender::ed::space_node::node_draw_space(), blender::ed::sculpt_paint::paint_cursor_cursor_draw_3d_view_brush_cursor_active(), blender::ed::sculpt_paint::paint_cursor_draw_3d_view_brush_cursor_inactive(), blender::ed::sculpt_paint::paint_draw_alpha_overlay(), blender::ed::sculpt_paint::paint_draw_cursor_overlay(), blender::ed::sculpt_paint::paint_draw_curve_cursor(), blender::ed::sculpt_paint::paint_draw_tex_overlay(), playanim_toscreen_ex(), pygpu_matrix_pop(), pygpu_matrix_stack_context_exit(), radial_control_paint_cursor(), radial_control_paint_tex(), region_draw_azones(), blender::ed::sculpt_paint::SCULPT_layer_brush_height_preview_draw(), blender::ed::sculpt_paint::cloth::simulation_limits_draw(), timeline_cache_draw_geometry_nodes(), timeline_cache_draw_single(), tracking_segment_knot_cb(), blender::ed::transform::transform_draw_cursor_draw(), UI_block_draw(), ui_draw_but_TRACKPREVIEW(), ui_draw_but_UNITVEC(), ui_draw_but_VECTORSCOPE(), ui_draw_but_WAVEFORM(), ui_draw_pie_center(), blender::ed::object::voxel_size_edit_draw(), wm_software_cursor_draw_bitmap(), and wm_xr_controller_model_draw().
| void GPU_matrix_pop_projection | ( | ) |
Definition at line 141 of file gpu_matrix.cc.
References BLI_assert, gpu_matrix_state_active_set_dirty(), and ProjectionStack.
Referenced by action_main_region_draw_overlay(), draw_horizontal_scale_indicators(), blender::ed::space_node::draw_nodespace_back_pix(), blender::ed::vse::draw_retiming_continuity_ranges(), blender::ed::vse::draw_strip_thumbnails(), blender::ed::vse::draw_strips_background(), blender::ed::vse::draw_strips_foreground(), blender::ed::space_node::draw_tree_path(), draw_vertical_scale_indicators(), blender::ed::transform::drawSnapping(), blender::ed::transform::drawVertSlide(), drw_callbacks_post_scene_2D(), ED_time_scrub_channel_search_draw(), ED_time_scrub_draw(), ED_time_scrub_draw_current_frame(), ED_view3d_draw_offscreen(), gizmo_axis_draw(), gizmo_ruler_draw(), GPU_viewport_stereo_composite(), blender::ed::greasepencil::image_render::image_render_end(), knifetool_draw(), knifetool_draw_angle(), knifetool_draw_visible_distances(), blender::ed::sculpt_paint::min_distance_edit::min_distance_edit_draw(), blender::ed::sculpt_paint::paint_cursor_cursor_draw_3d_view_brush_cursor_active(), blender::ed::sculpt_paint::paint_cursor_draw_3d_view_brush_cursor_inactive(), playanim_toscreen_ex(), pygpu_matrix_pop_projection(), pygpu_matrix_stack_context_exit(), blender::ed::vse::sequencer_retiming_keys_draw(), UI_block_draw(), ui_draw_but_UNITVEC(), and view2d_draw_lines_internal().
| void GPU_matrix_project_2fv | ( | const float | world[3], |
| const float | model[4][4], | ||
| const float | proj[4][4], | ||
| const int | view[4], | ||
| float | r_win[2] ) |
Definition at line 482 of file gpu_matrix.cc.
References mul_m4_v4(), mul_v2_fl(), mul_v4_m4v3(), v, and view.
Referenced by ED_view3d_project_v2().
| void GPU_matrix_project_3fv | ( | const float | world[3], |
| const float | model[4][4], | ||
| const float | proj[4][4], | ||
| const int | view[4], | ||
| float | r_win[3] ) |
Definition at line 462 of file gpu_matrix.cc.
References mul_m4_v4(), mul_v3_fl(), mul_v4_m4v3(), v, and view.
Referenced by ED_view3d_project_v3().
| const float(* GPU_matrix_projection_get | ( | float | m[4][4] | ) | )[4] |
Definition at line 563 of file gpu_matrix.cc.
References copy_m4_m4(), and Projection.
| void GPU_matrix_projection_set | ( | const float | m[4][4] | ) |
Definition at line 162 of file gpu_matrix.cc.
References CHECKMAT, copy_m4_m4(), gpu_matrix_state_active_set_dirty(), and Projection.
| void GPU_matrix_push | ( | ) |
Push a new matrix unto the stack (copying the previous matrix).
Definition at line 120 of file gpu_matrix.cc.
References BLI_assert, copy_m4_m4(), MATRIX_STACK_DEPTH, ModelView, and ModelViewStack.
Referenced by arrow_draw_geom(), arrow_draw_intern(), blf_batch_draw_begin(), blf_draw_gpu__start(), button2d_draw_intern(), clip_draw_grease_pencil(), clip_main_region_draw(), cursor_point_draw(), blender::ed::curves::curve_draw_stroke_3d(), curve_draw_stroke_3d(), dial_3d_draw_util(), dial_ghostarc_draw_helpline(), blender::render::hydra::DrawTexture::draw(), blender::ed::vse::draw_channel_headers(), draw_cross(), blender::ed::vse::draw_cursor_2d(), draw_distortion(), draw_fcurve(), draw_fcurve_curve_keys(), draw_fcurve_curve_samples(), draw_marker_areas(), draw_marker_outline(), draw_marker_slide_zones(), blender::ed::space_node::draw_nodespace_back_pix(), draw_plane_marker_image(), draw_render_info(), blender::ed::vse::draw_seq_in_view(), draw_stabilization_border(), draw_tracking_tracks(), blender::ed::transform::drawEdgeSlide(), blender::ed::transform::drawLine(), blender::ed::transform::drawPropCircle(), blender::ed::transform::drawVertSlide(), drw_text_cache_draw_ex(), blender::ed::sculpt_paint::dyntopo::dyntopo_detail_size_edit_draw(), ed_gizmo_draw_preset_geometry(), ED_markers_draw(), ED_mask_draw_region(), ED_region_image_metadata_draw(), ED_region_image_render_region_draw(), ED_view3d_draw_offscreen(), EDBM_preselect_edgering_draw(), EDBM_preselect_elem_draw(), gizmo_axis_draw(), gizmo_cage2d_draw_intern(), gizmo_cage3d_draw_intern(), gizmo_primitive_draw_intern(), gizmo_ruler_draw(), GPU_viewport_stereo_composite(), blender::ed::greasepencil::image_render::image_render_begin(), knifetool_draw_angle(), knifetool_draw_visible_distances(), blender::ed::sculpt_paint::min_distance_edit::min_distance_edit_draw(), move3d_draw_intern(), blender::ed::space_node::node_draw_space(), blender::ed::sculpt_paint::paint_cursor_cursor_draw_3d_view_brush_cursor_active(), blender::ed::sculpt_paint::paint_cursor_draw_3d_view_brush_cursor_inactive(), blender::ed::sculpt_paint::paint_draw_alpha_overlay(), blender::ed::sculpt_paint::paint_draw_cursor_overlay(), blender::ed::sculpt_paint::paint_draw_curve_cursor(), blender::ed::sculpt_paint::paint_draw_tex_overlay(), playanim_toscreen_ex(), pygpu_matrix_push(), pygpu_matrix_stack_context_enter(), radial_control_paint_cursor(), radial_control_paint_tex(), region_draw_azones(), blender::ed::sculpt_paint::SCULPT_layer_brush_height_preview_draw(), blender::ed::sculpt_paint::cloth::simulation_limits_draw(), timeline_cache_draw_geometry_nodes(), timeline_cache_draw_single(), tracking_segment_knot_cb(), blender::ed::transform::transform_draw_cursor_draw(), UI_block_draw(), ui_draw_but_TRACKPREVIEW(), ui_draw_but_UNITVEC(), ui_draw_but_VECTORSCOPE(), ui_draw_but_WAVEFORM(), ui_draw_pie_center(), blender::ed::object::voxel_size_edit_draw(), wm_software_cursor_draw_bitmap(), and wm_xr_controller_model_draw().
| void GPU_matrix_push_projection | ( | ) |
Definition at line 134 of file gpu_matrix.cc.
References BLI_assert, copy_m4_m4(), MATRIX_STACK_DEPTH, Projection, and ProjectionStack.
Referenced by action_main_region_draw_overlay(), draw_horizontal_scale_indicators(), blender::ed::space_node::draw_nodespace_back_pix(), blender::ed::vse::draw_retiming_continuity_ranges(), blender::ed::vse::draw_strip_thumbnails(), blender::ed::vse::draw_strips_background(), blender::ed::vse::draw_strips_foreground(), blender::ed::space_node::draw_tree_path(), draw_vertical_scale_indicators(), blender::ed::transform::drawSnapping(), blender::ed::transform::drawVertSlide(), drw_callbacks_post_scene_2D(), ED_time_scrub_channel_search_draw(), ED_time_scrub_draw(), ED_time_scrub_draw_current_frame(), ED_view3d_draw_offscreen(), gizmo_axis_draw(), gizmo_ruler_draw(), GPU_viewport_stereo_composite(), blender::ed::greasepencil::image_render::image_render_begin(), knifetool_draw(), knifetool_draw_angle(), knifetool_draw_visible_distances(), blender::ed::sculpt_paint::min_distance_edit::min_distance_edit_draw(), blender::ed::sculpt_paint::paint_cursor_cursor_draw_3d_view_brush_cursor_active(), blender::ed::sculpt_paint::paint_cursor_draw_3d_view_brush_cursor_inactive(), playanim_toscreen_ex(), pygpu_matrix_push_projection(), pygpu_matrix_stack_context_enter(), blender::ed::vse::sequencer_retiming_keys_draw(), UI_block_draw(), ui_draw_but_UNITVEC(), and view2d_draw_lines_internal().
| void GPU_matrix_reset | ( | ) |
To Identity transform & empty stack.
Definition at line 87 of file gpu_matrix.cc.
References blender::gpu::Context::get(), gpu_matrix_state_active_set_dirty(), blender::gpu::Context::matrix_state, ModelView, Projection, state, and unit_m4().
Referenced by pygpu_matrix_reset(), and screen_opengl_render_doit().
| void GPU_matrix_rotate_2d | ( | float | deg | ) |
Definition at line 254 of file gpu_matrix.cc.
References DEG2RADF, ModelView, and rotate_m4().
Referenced by blf_draw_gpu__start(), blender::ed::sculpt_paint::paint_draw_tex_overlay(), and radial_control_paint_tex().
| void GPU_matrix_rotate_3f | ( | float | deg, |
| float | x, | ||
| float | y, | ||
| float | z ) |
Axis of rotation should be a unit vector.
Definition at line 262 of file gpu_matrix.cc.
References GPU_matrix_rotate_3fv(), x, y, and z().
Referenced by dial_ghostarc_draw_helpline(), and radial_control_paint_cursor().
| void GPU_matrix_rotate_3fv | ( | float | deg, |
| const float | axis[3] ) |
Axis of rotation should be a unit vector.
Definition at line 268 of file gpu_matrix.cc.
References axis_angle_to_mat4(), DEG2RADF, and GPU_matrix_mul.
Referenced by GPU_matrix_rotate_3f().
| void GPU_matrix_rotate_axis | ( | float | deg, |
| char | axis ) |
Definition at line 275 of file gpu_matrix.cc.
References CHECKMAT, DEG2RADF, gpu_matrix_state_active_set_dirty(), ModelView, and rotate_m4().
Referenced by blender::ed::transform::transform_draw_cursor_draw().
| void GPU_matrix_scale_1f | ( | float | factor | ) |
Scale the model-view matrix.
Definition at line 210 of file gpu_matrix.cc.
References GPU_matrix_mul, and scale_m4_fl().
Referenced by blender::ed::curves::curve_draw_stroke_3d(), curve_draw_stroke_3d(), gizmo_axis_draw(), blender::ed::sculpt_paint::paint_draw_cursor_overlay(), pygpu_matrix_scale_uniform(), ui_draw_but_UNITVEC(), ui_draw_but_VECTORSCOPE(), and wm_xr_controller_model_draw().
| void GPU_matrix_scale_2f | ( | float | x, |
| float | y ) |
Definition at line 217 of file gpu_matrix.cc.
References GPU_matrix_mul, x, and y.
Referenced by button2d_draw_intern(), clip_main_region_draw(), blender::render::hydra::DrawTexture::draw(), draw_cross(), blender::ed::vse::draw_cursor_2d(), draw_distortion(), draw_fcurve(), draw_fcurve_curve_keys(), draw_fcurve_curve_samples(), draw_render_info(), draw_stabilization_border(), draw_tracking_tracks(), blender::ed::transform::drawPropCircle(), blender::ed::transform::drawVertSlide(), ED_markers_draw(), ED_mask_draw_region(), ED_region_image_metadata_draw(), ED_region_image_render_region_draw(), GPU_matrix_scale_2fv(), blender::ed::sculpt_paint::paint_draw_tex_overlay(), playanim_toscreen_ex(), timeline_cache_draw_geometry_nodes(), timeline_cache_draw_single(), tracking_segment_knot_cb(), and ui_draw_but_WAVEFORM().
| void GPU_matrix_scale_2fv | ( | const float | vec[2] | ) |
Definition at line 227 of file gpu_matrix.cc.
References GPU_matrix_scale_2f().
Referenced by pygpu_matrix_scale(), and radial_control_paint_cursor().
| void GPU_matrix_scale_3f | ( | float | x, |
| float | y, | ||
| float | z ) |
Definition at line 232 of file gpu_matrix.cc.
References GPU_matrix_mul, x, y, and z().
Referenced by arrow_draw_geom(), and GPU_matrix_scale_3fv().
| void GPU_matrix_scale_3fv | ( | const float | vec[3] | ) |
Definition at line 242 of file gpu_matrix.cc.
References GPU_matrix_scale_3f().
Referenced by blf_draw_gpu__start(), and pygpu_matrix_scale().
| void GPU_matrix_set | ( | const float | m[4][4] | ) |
Definition at line 148 of file gpu_matrix.cc.
References CHECKMAT, copy_m4_m4(), gpu_matrix_state_active_set_dirty(), and ModelView.
| int GPU_matrix_stack_level_get_model_view | ( | ) |
Definition at line 671 of file gpu_matrix.cc.
References blender::gpu::Context::get(), blender::gpu::Context::matrix_state, and state.
Referenced by pygpu_matrix_stack_context_enter(), pygpu_matrix_stack_context_exit(), pygpu_stack_is_pop_model_view_ok_or_error(), and pygpu_stack_is_push_model_view_ok_or_error().
| int GPU_matrix_stack_level_get_projection | ( | ) |
Definition at line 677 of file gpu_matrix.cc.
References blender::gpu::Context::get(), blender::gpu::Context::matrix_state, and state.
Referenced by pygpu_matrix_stack_context_enter(), pygpu_matrix_stack_context_exit(), pygpu_stack_is_pop_projection_ok_or_error(), and pygpu_stack_is_push_projection_ok_or_error().
|
static |
Definition at line 81 of file gpu_matrix.cc.
References blender::gpu::Context::get(), blender::gpu::Context::matrix_state, and state.
Referenced by GPU_matrix_bind(), GPU_matrix_frustum_set(), GPU_matrix_identity_projection_set(), GPU_matrix_identity_set(), GPU_matrix_mul(), GPU_matrix_ortho_2d_set(), GPU_matrix_ortho_set(), GPU_matrix_ortho_set_z(), GPU_matrix_pop(), GPU_matrix_pop_projection(), GPU_matrix_projection_set(), GPU_matrix_reset(), GPU_matrix_rotate_axis(), GPU_matrix_set(), GPU_matrix_translate_3f(), mat4_frustum_set(), mat4_look_from_origin(), and mat4_ortho_set().
| GPUMatrixState * GPU_matrix_state_create | ( | ) |
Definition at line 55 of file gpu_matrix.cc.
References MATRIX_4X4_IDENTITY, MEM_mallocN(), and state.
Referenced by blender::gpu::Context::Context().
| void GPU_matrix_state_discard | ( | GPUMatrixState * | state | ) |
Definition at line 76 of file gpu_matrix.cc.
References MEM_freeN(), and state.
Referenced by blender::gpu::Context::~Context().
| void GPU_matrix_translate_2f | ( | float | x, |
| float | y ) |
Definition at line 175 of file gpu_matrix.cc.
References GPU_matrix_mul, unit_m4(), x, and y.
Referenced by button2d_draw_intern(), clip_main_region_draw(), blender::render::hydra::DrawTexture::draw(), blender::ed::vse::draw_cursor_2d(), draw_distortion(), draw_fcurve(), draw_fcurve_curve_keys(), draw_fcurve_curve_samples(), draw_render_info(), draw_stabilization_border(), draw_tracking_tracks(), ED_image_draw_cursor(), ED_mask_draw_region(), ED_region_image_metadata_draw(), ED_region_image_render_region_draw(), GPU_matrix_translate_2fv(), blender::ed::sculpt_paint::min_distance_edit::min_distance_edit_draw(), blender::ed::sculpt_paint::paint_draw_alpha_overlay(), blender::ed::sculpt_paint::paint_draw_cursor_overlay(), blender::ed::sculpt_paint::paint_draw_curve_cursor(), blender::ed::sculpt_paint::paint_draw_tex_overlay(), playanim_toscreen_ex(), radial_control_paint_cursor(), region_draw_azones(), screen_opengl_render_doit(), timeline_cache_draw_geometry_nodes(), timeline_cache_draw_single(), tracking_segment_knot_cb(), ui_draw_but_TRACKPREVIEW(), ui_draw_but_UNITVEC(), ui_draw_but_VECTORSCOPE(), ui_draw_but_WAVEFORM(), and ui_draw_pie_center().
| void GPU_matrix_translate_2fv | ( | const float | vec[2] | ) |
Definition at line 184 of file gpu_matrix.cc.
References GPU_matrix_translate_2f().
Referenced by clip_draw_grease_pencil(), draw_cross(), draw_marker_areas(), draw_marker_outline(), draw_marker_slide_zones(), ED_image_draw_cursor(), blender::ed::sculpt_paint::paint_draw_cursor_overlay(), blender::ed::sculpt_paint::paint_draw_tex_overlay(), and pygpu_matrix_translate().
| void GPU_matrix_translate_3f | ( | float | x, |
| float | y, | ||
| float | z ) |
Definition at line 189 of file gpu_matrix.cc.
References CHECKMAT, GPU_matrix_mul, gpu_matrix_state_active_set_dirty(), ModelView, translate_m4(), unit_m4(), x, y, and z().
Referenced by arrow_draw_geom(), blf_draw_gpu__start(), blender::ed::curves::curve_draw_stroke_3d(), curve_draw_stroke_3d(), GPU_matrix_look_at(), GPU_matrix_translate_3fv(), and blender::ed::transform::transform_draw_cursor_draw().
| void GPU_matrix_translate_3fv | ( | const float | vec[3] | ) |
Definition at line 205 of file gpu_matrix.cc.
References GPU_matrix_translate_3f().
Referenced by gizmo_axis_draw(), and pygpu_matrix_translate().
| bool GPU_matrix_unproject_3fv | ( | const float | win[3], |
| const float | model_inverted[4][4], | ||
| const float | proj[4][4], | ||
| const int | view[4], | ||
| float | r_world[3] ) |
The same result could be obtained as follows:
But that solution loses much precision. Therefore, get the same result without inverting the project view matrix.
Definition at line 501 of file gpu_matrix.cc.
References FLT_MAX, in, is_finite_v3(), isinf, mul_v3_m4v3(), out, view, and zero_v3().
Referenced by ED_view3d_unproject_v3(), and gizmo_find_intersected_3d_intern().
| void GPU_polygon_offset | ( | float | viewdist, |
| float | dist ) |
Definition at line 723 of file gpu_matrix.cc.
References GPU_matrix_projection_get, GPU_matrix_projection_set, and GPU_polygon_offset_calc().
Referenced by annotation_draw_strokes(), blender::ed::greasepencil::image_render::draw_grease_pencil_strokes(), ED_view3d_polygon_offset(), and knifetool_draw().
| float GPU_polygon_offset_calc | ( | const float(*) | winmat[4], |
| float | viewdist, | ||
| float | dist ) |
Own working polygon offset.
Definition at line 692 of file gpu_matrix.cc.
References UNUSED_VARS.
Referenced by GPU_polygon_offset(), blender::draw::View::OffsetData::polygon_offset_factor(), and blender::draw::View::OffsetData::winmat_polygon_offset().
|
static |
Definition at line 309 of file gpu_matrix.cc.
References gpu_matrix_state_active_set_dirty(), left, and top.
Referenced by GPU_matrix_frustum_set().
|
static |
Definition at line 335 of file gpu_matrix.cc.
References cross_v3_v3v3(), gpu_matrix_state_active_set_dirty(), and normalize_v3().
Referenced by GPU_matrix_look_at().
|
static |
Definition at line 283 of file gpu_matrix.cc.
References gpu_matrix_state_active_set_dirty(), left, and top.
Referenced by GPU_matrix_ortho_2d_set(), and GPU_matrix_ortho_set().
|
staticconstexpr |
Definition at line 25 of file gpu_matrix.cc.
Referenced by BLI_STATIC_ASSERT(), GPU_matrix_push(), and GPU_matrix_push_projection().