Blender V4.3
GPU_matrix.hh File Reference
#include "BLI_sys_types.h"

Go to the source code of this file.

Classes

struct  GPUMatrixUnproject_Precalc
 

Macros

#define _GPU_MAT3_CONST_CAST(x)   (const float(*)[3])(x)
 
#define _GPU_MAT3_CAST(x)   (float(*)[3])(x)
 
#define _GPU_MAT4_CONST_CAST(x)   (const float(*)[4])(x)
 
#define _GPU_MAT4_CAST(x)   (float(*)[4])(x)
 
#define GPU_matrix_mul(x)   GPU_matrix_mul(_GPU_MAT4_CONST_CAST(x))
 
#define GPU_matrix_set(x)   GPU_matrix_set(_GPU_MAT4_CONST_CAST(x))
 
#define GPU_matrix_projection_set(x)   GPU_matrix_projection_set(_GPU_MAT4_CONST_CAST(x))
 
#define GPU_matrix_model_view_get(x)   GPU_matrix_model_view_get(_GPU_MAT4_CAST(x))
 
#define GPU_matrix_projection_get(x)   GPU_matrix_projection_get(_GPU_MAT4_CAST(x))
 
#define GPU_matrix_model_view_projection_get(x)    GPU_matrix_model_view_projection_get(_GPU_MAT4_CAST(x))
 
#define GPU_matrix_normal_get(x)   GPU_matrix_normal_get(_GPU_MAT3_CAST(x))
 
#define GPU_matrix_normal_inverse_get(x)   GPU_matrix_normal_inverse_get(_GPU_MAT3_CAST(x))
 
#define GPU_MATRIX_ORTHO_CLIP_NEAR_DEFAULT   (-100)
 
#define GPU_MATRIX_ORTHO_CLIP_FAR_DEFAULT   (100)
 

Functions

void GPU_matrix_reset ()
 
void GPU_matrix_push ()
 
void GPU_matrix_pop ()
 
void GPU_matrix_identity_set ()
 
void GPU_matrix_scale_1f (float factor)
 
void GPU_matrix_set (const float m[4][4])
 
void GPU_matrix_mul (const float m[4][4])
 
void GPU_matrix_translate_3f (float x, float y, float z)
 
void GPU_matrix_translate_3fv (const float vec[3])
 
void GPU_matrix_scale_3f (float x, float y, float z)
 
void GPU_matrix_scale_3fv (const float vec[3])
 
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)
 
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_translate_2f (float x, float y)
 
void GPU_matrix_translate_2fv (const float vec[2])
 
void GPU_matrix_scale_2f (float x, float y)
 
void GPU_matrix_scale_2fv (const float vec[2])
 
void GPU_matrix_rotate_2d (float deg)
 
void GPU_matrix_push_projection ()
 
void GPU_matrix_pop_projection ()
 
void GPU_matrix_identity_projection_set ()
 
void GPU_matrix_projection_set (const float m[4][4])
 
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_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)
 
bool GPU_matrix_unproject_precalc (GPUMatrixUnproject_Precalc *unproj_precalc, const float model[4][4], const float proj[4][4], const int view[4])
 
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])
 
void GPU_matrix_ortho_2d_set (float left, float right, float bottom, float top)
 
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 ()
 
float GPU_polygon_offset_calc (const float(*winmat)[4], float viewdist, float dist)
 
void GPU_polygon_offset (float viewdist, float dist)
 

Macro Definition Documentation

◆ _GPU_MAT3_CAST

#define _GPU_MAT3_CAST ( x)    (float(*)[3])(x)

Definition at line 207 of file GPU_matrix.hh.

◆ _GPU_MAT3_CONST_CAST

#define _GPU_MAT3_CONST_CAST ( x)    (const float(*)[3])(x)

Definition at line 206 of file GPU_matrix.hh.

◆ _GPU_MAT4_CAST

#define _GPU_MAT4_CAST ( x)    (float(*)[4])(x)

Definition at line 209 of file GPU_matrix.hh.

◆ _GPU_MAT4_CONST_CAST

#define _GPU_MAT4_CONST_CAST ( x)    (const float(*)[4])(x)

Definition at line 208 of file GPU_matrix.hh.

◆ GPU_matrix_model_view_get

#define GPU_matrix_model_view_get ( x)    GPU_matrix_model_view_get(_GPU_MAT4_CAST(x))

◆ GPU_matrix_model_view_projection_get

#define GPU_matrix_model_view_projection_get ( x)     GPU_matrix_model_view_projection_get(_GPU_MAT4_CAST(x))

Definition at line 218 of file GPU_matrix.hh.

Referenced by GPU_matrix_bind().

◆ GPU_matrix_mul

#define GPU_matrix_mul ( x)    GPU_matrix_mul(_GPU_MAT4_CONST_CAST(x))

Definition at line 213 of file GPU_matrix.hh.

Referenced by arrow_draw_intern(), button2d_draw_intern(), clip_draw_grease_pencil(), clip_main_region_draw(), blender::ed::curves::curve_draw_stroke_3d(), curve_draw_stroke_3d(), dial_3d_draw_util(), draw_distortion(), draw_plane_marker_image(), draw_stabilization_border(), draw_tracking_tracks(), drawEdgeSlide(), drawVertSlide(), DRW_draw_depth_object(), blender::ed::sculpt_paint::dyntopo::dyntopo_detail_size_edit_draw(), ed_gizmo_draw_preset_geometry(), ED_mask_draw_region(), ED_view3d_init_mats_rv3d_gl(), EDBM_preselect_edgering_draw(), EDBM_preselect_elem_draw(), gizmo_axis_draw(), gizmo_cage2d_draw_intern(), gizmo_cage3d_draw_intern(), gizmo_primitive_draw_intern(), GPU_matrix_look_at(), GPU_matrix_rotate_3fv(), GPU_matrix_scale_1f(), GPU_matrix_scale_2f(), GPU_matrix_scale_3f(), GPU_matrix_translate_2f(), GPU_matrix_translate_3f(), move3d_draw_intern(), blender::ed::sculpt_paint::multiplane_scrape_preview_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(), blender::ed::sculpt_paint::paint_cursor_drawing_setup_cursor_space(), blender::ed::sculpt_paint::cloth::plane_falloff_preview_draw(), pygpu_matrix_multiply_matrix(), blender::ed::sculpt_paint::SCULPT_layer_brush_height_preview_draw(), blender::ed::sculpt_paint::cloth::simulation_limits_draw(), v3d_cursor_snap_draw_fn(), blender::ed::object::voxel_size_edit_draw(), wm_software_cursor_draw_bitmap(), and wm_xr_controller_model_draw().

◆ GPU_matrix_normal_get

#define GPU_matrix_normal_get ( x)    GPU_matrix_normal_get(_GPU_MAT3_CAST(x))

◆ GPU_matrix_normal_inverse_get

#define GPU_matrix_normal_inverse_get ( x)    GPU_matrix_normal_inverse_get(_GPU_MAT3_CAST(x))

Definition at line 221 of file GPU_matrix.hh.

◆ GPU_MATRIX_ORTHO_CLIP_FAR_DEFAULT

#define GPU_MATRIX_ORTHO_CLIP_FAR_DEFAULT   (100)

Definition at line 227 of file GPU_matrix.hh.

Referenced by wmGetProjectionMatrix(), and wmOrtho2().

◆ GPU_MATRIX_ORTHO_CLIP_NEAR_DEFAULT

#define GPU_MATRIX_ORTHO_CLIP_NEAR_DEFAULT   (-100)

◆ GPU_matrix_projection_get

◆ GPU_matrix_projection_set

◆ GPU_matrix_set

Function Documentation

◆ GPU_matrix_bind()

◆ GPU_matrix_dirty_get()

bool GPU_matrix_dirty_get ( )

◆ GPU_matrix_frustum_set()

void GPU_matrix_frustum_set ( float left,
float right,
float bottom,
float top,
float near,
float far )

◆ GPU_matrix_identity_projection_set()

◆ GPU_matrix_identity_set()

◆ GPU_matrix_look_at()

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().

◆ GPU_matrix_model_view_get()

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.

◆ GPU_matrix_model_view_projection_get()

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.

◆ GPU_matrix_mul()

void GPU_matrix_mul ( const float m[4][4])

◆ GPU_matrix_normal_get()

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().

◆ GPU_matrix_normal_inverse_get()

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().

◆ GPU_matrix_ortho_2d_set()

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(), and mat4_ortho_set().

◆ GPU_matrix_ortho_set()

void GPU_matrix_ortho_set ( float left,
float right,
float bottom,
float top,
float near,
float far )

◆ GPU_matrix_ortho_set_z()

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().

◆ GPU_matrix_perspective_set()

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.

◆ GPU_matrix_pop()

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(), draw_channel_headers(), draw_cross(), 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(), draw_seq_in_view(), draw_stabilization_border(), draw_tracking_tracks(), drawEdgeSlide(), drawLine(), drawPropCircle(), drawVertSlide(), DRW_draw_cursor(), DRW_draw_cursor_2d_ex(), 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_view3d_draw_offscreen(), EDBM_preselect_edgering_draw(), EDBM_preselect_elem_draw(), external_draw_scene_do_image(), external_draw_scene_do_v3d(), 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(), panel_draw_aligned_widgets(), 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(), sequencer_draw_display_buffer(), blender::ed::sculpt_paint::cloth::simulation_limits_draw(), timeline_cache_draw_geometry_nodes(), timeline_cache_draw_single(), tracking_segment_knot_cb(), 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().

◆ GPU_matrix_pop_projection()

◆ GPU_matrix_project_2fv()

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(), and v.

Referenced by ED_view3d_project_v2().

◆ GPU_matrix_project_3fv()

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(), and v.

Referenced by ED_view3d_project_v3().

◆ GPU_matrix_projection_get()

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.

◆ GPU_matrix_projection_set()

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.

◆ GPU_matrix_push()

void GPU_matrix_push ( )

Push a new matrix unto the stack (copying the previous matrix).

Note
A function GPU_matrix_push_identity could be added instead of calling GPU_matrix_identity_set after pushing.

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(), draw_channel_headers(), draw_cross(), 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(), draw_seq_in_view(), draw_stabilization_border(), draw_tracking_tracks(), drawEdgeSlide(), drawLine(), drawPropCircle(), drawVertSlide(), DRW_draw_cursor(), DRW_draw_cursor_2d_ex(), 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_view3d_draw_offscreen(), EDBM_preselect_edgering_draw(), EDBM_preselect_elem_draw(), external_draw_scene_do_image(), external_draw_scene_do_v3d(), 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(), panel_draw_aligned_widgets(), 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(), sequencer_draw_display_buffer(), blender::ed::sculpt_paint::cloth::simulation_limits_draw(), timeline_cache_draw_geometry_nodes(), timeline_cache_draw_single(), tracking_segment_knot_cb(), 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().

◆ GPU_matrix_push_projection()

◆ GPU_matrix_reset()

◆ GPU_matrix_rotate_2d()

void GPU_matrix_rotate_2d ( float deg)

◆ GPU_matrix_rotate_3f()

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().

◆ GPU_matrix_rotate_3fv()

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().

◆ GPU_matrix_rotate_axis()

void GPU_matrix_rotate_axis ( float deg,
char axis )

◆ GPU_matrix_scale_1f()

◆ GPU_matrix_scale_2f()

◆ GPU_matrix_scale_2fv()

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().

◆ GPU_matrix_scale_3f()

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().

◆ 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().

◆ GPU_matrix_set()

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.

◆ GPU_matrix_translate_2f()

◆ GPU_matrix_translate_2fv()

◆ GPU_matrix_translate_3f()

◆ GPU_matrix_translate_3fv()

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().

◆ GPU_matrix_unproject_3fv()

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:

float projinv[4][4];
invert_m4_m4(projinv, projview);
copy_v3_v3(r_world, in);
mul_project_m4_v3(projinv, r_world);
void mul_project_m4_v3(const float mat[4][4], float vec[3])
bool invert_m4_m4(float inverse[4][4], const float mat[4][4])
MINLINE void copy_v3_v3(float r[3], const float a[3])

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, is_finite_v3(), mul_v3_m4v3(), and zero_v3().

Referenced by ED_view3d_unproject_v3(), and gizmo_find_intersected_3d_intern().

◆ GPU_matrix_unproject_precalc()

bool GPU_matrix_unproject_precalc ( GPUMatrixUnproject_Precalc * unproj_precalc,
const float model[4][4],
const float proj[4][4],
const int view[4] )

◆ GPU_polygon_offset()

void GPU_polygon_offset ( float viewdist,
float dist )

◆ GPU_polygon_offset_calc()

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 float, and UNUSED_VARS.

Referenced by DRW_view_create_with_zoffset(), GPU_polygon_offset(), and blender::draw::overlay::winmat_polygon_offset().