Blender
V3.3
|
#include <stdio.h>
#include <string.h>
#include "DNA_userdef_types.h"
#include "DNA_vec_types.h"
#include "BLI_math.h"
#include "BLI_utildefines.h"
#include "BKE_context.h"
#include "BIF_glutil.h"
#include "IMB_colormanagement.h"
#include "IMB_imbuf_types.h"
#include "GPU_immediate.h"
#include "GPU_matrix.h"
#include "GPU_texture.h"
#include "UI_interface.h"
Go to the source code of this file.
Macros | |
#define | DATA(_y, _x) ((char *)rect + stride * ((size_t)(_y)*img_w + (_x))) |
void ED_draw_imbuf | ( | ImBuf * | ibuf, |
float | x, | ||
float | y, | ||
bool | use_filter, | ||
ColorManagedViewSettings * | view_settings, | ||
ColorManagedDisplaySettings * | display_settings, | ||
float | zoom_x, | ||
float | zoom_y | ||
) |
Definition at line 540 of file glutil.c.
References ED_draw_imbuf_clipping(), x, and y.
void ED_draw_imbuf_clipping | ( | struct ImBuf * | ibuf, |
float | x, | ||
float | y, | ||
bool | use_filter, | ||
struct ColorManagedViewSettings * | view_settings, | ||
struct ColorManagedDisplaySettings * | display_settings, | ||
float | clip_min_x, | ||
float | clip_min_y, | ||
float | clip_max_x, | ||
float | clip_max_y, | ||
float | zoom_x, | ||
float | zoom_y | ||
) |
Draw given image buffer on a screen using GLSL for display transform.
Definition at line 401 of file glutil.c.
References BLI_assert_msg, ImBuf::channels, ImBuf::dither, ED_draw_imbuf_method(), ImBuf::float_colorspace, GPU_RGB16F, GPU_RGBA16F, GPU_RGBA8, GPU_SHADER_2D_IMAGE_COLOR, IMAGE_DRAW_METHOD_GLSL, IMB_colormanagement_finish_glsl_draw(), IMB_colormanagement_setup_glsl_draw(), IMB_colormanagement_setup_glsl_draw_from_space(), IMB_display_buffer_acquire(), IMB_display_buffer_release(), immDrawPixelsTexSetup(), immDrawPixelsTexSetupAttributes(), immDrawPixelsTexTiled_clipping(), NULL, ImBuf::rect, ImBuf::rect_colorspace, ImBuf::rect_float, state, x, ImBuf::x, y, and ImBuf::y.
Referenced by ED_draw_imbuf(), and ED_draw_imbuf_ctx_clipping().
void ED_draw_imbuf_ctx_clipping | ( | const bContext * | C, |
ImBuf * | ibuf, | ||
float | x, | ||
float | y, | ||
bool | use_filter, | ||
float | clip_min_x, | ||
float | clip_min_y, | ||
float | clip_max_x, | ||
float | clip_max_y, | ||
float | zoom_x, | ||
float | zoom_y | ||
) |
Definition at line 563 of file glutil.c.
References C, ED_draw_imbuf_clipping(), IMB_colormanagement_display_settings_from_ctx(), x, and y.
Referenced by ED_draw_imbuf_ctx().
int ED_draw_imbuf_method | ( | ImBuf * | ibuf | ) |
Definition at line 600 of file glutil.c.
References ImBuf::channels, IMAGE_DRAW_METHOD_2DTEXTURE, IMAGE_DRAW_METHOD_AUTO, IMAGE_DRAW_METHOD_GLSL, ImBuf::rect_float, size(), threshold, ImBuf::x, and ImBuf::y.
Referenced by ED_draw_imbuf_clipping(), image_rect_update(), ocio_transform_ibuf(), and sequencer_OCIO_transform_ibuf().
Definition at line 614 of file glutil.c.
References border, GPU_PRIM_LINE_STRIP, immBegin(), immEnd(), immVertex2f(), min_ff(), pos, and UI_DPI_FAC.
void immDrawPixelsTexScaledFullSize | ( | const IMMDrawPixelsTexState * | state, |
float | x, | ||
float | y, | ||
int | img_w, | ||
int | img_h, | ||
eGPUTextureFormat | gpu_format, | ||
bool | use_filter, | ||
const void * | rect, | ||
float | scaleX, | ||
float | scaleY, | ||
float | xzoom, | ||
float | yzoom, | ||
const float | color[4] | ||
) |
Unlike the immDrawPixelsTexTiled
functions, this doesn't do tiled drawing, but draws into a full texture.
Use the currently bound shader.
Use immDrawPixelsTexSetup to bind the shader you want before calling #immDrawPixelsTex.
If using a special shader double check it uses the same attributes "pos" "texCoord" and uniform "image".
If color is NULL then use white by default
Unless state->do_shader_unbind is explicitly set to false
, the shader is unbound when finished.
Definition at line 59 of file glutil.c.
References color, ELEM, GPU_DATA_FLOAT, GPU_DATA_UBYTE, GPU_PRIM_TRI_FAN, GPU_R16F, GPU_RGB16F, GPU_RGBA16F, GPU_shader_get_uniform(), GPU_texture_bind(), GPU_texture_create_2d(), GPU_texture_filter_mode(), GPU_texture_free(), GPU_texture_generate_mipmap(), GPU_texture_mipmap_mode(), GPU_texture_unbind(), GPU_texture_update(), GPU_texture_wrap_mode(), immAttr2f(), immBegin(), immEnd(), immUnbindProgram(), immUniformColor4fv(), immVertex2f(), NULL, pos, state, tex, x, and y.
Referenced by icon_draw_rect().
IMMDrawPixelsTexState immDrawPixelsTexSetup | ( | int | builtin | ) |
To be used before calling #immDrawPixelsTex Default shader is GPU_SHADER_2D_IMAGE_COLOR You can still set uniforms with: GPU_shader_uniform_int(shader, GPU_shader_get_uniform(shader, "name"), 0);
Definition at line 44 of file glutil.c.
References GPU_shader_get_builtin_shader(), immBindBuiltinProgram(), immDrawPixelsTexSetupAttributes(), immUniform1i(), and state.
Referenced by draw_filled_lasso(), ED_draw_imbuf_clipping(), ED_mask_draw_region(), ed_preview_draw_rect(), file_draw_preview(), icon_draw_rect(), blender::ed::space_node::node_draw_preview(), ui_draw_but_IMAGE(), and wm_drag_draw_icon().
|
static |
Definition at line 36 of file glutil.c.
References GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_vertformat_attr_add(), immVertexFormat(), and state.
Referenced by ED_draw_imbuf_clipping(), and immDrawPixelsTexSetup().
void immDrawPixelsTexTiled | ( | IMMDrawPixelsTexState * | state, |
float | x, | ||
float | y, | ||
int | img_w, | ||
int | img_h, | ||
eGPUTextureFormat | gpu_format, | ||
bool | use_filter, | ||
void * | rect, | ||
float | xzoom, | ||
float | yzoom, | ||
const float | color[4] | ||
) |
#immDrawPixelsTex - Functions like a limited glDrawPixels, but actually draws the image using textures, which can be tremendously faster on low-end cards, and also avoids problems with the raster position being clipped when off-screen. Pixel unpacking parameters and the glPixelZoom values are not respected.
rect
data is expected to be in RGBA byte or float format, and the model-view and projection matrices are assumed to define a 1-to-1 mapping to screen space. Definition at line 333 of file glutil.c.
References color, immDrawPixelsTexTiled_scaling_clipping(), state, x, and y.
Referenced by draw_filled_lasso(), ED_mask_draw_region(), ed_preview_draw_rect(), blender::ed::space_node::node_draw_preview(), and ui_draw_but_IMAGE().
void immDrawPixelsTexTiled_clipping | ( | IMMDrawPixelsTexState * | state, |
float | x, | ||
float | y, | ||
int | img_w, | ||
int | img_h, | ||
eGPUTextureFormat | gpu_format, | ||
bool | use_filter, | ||
void * | rect, | ||
float | clip_min_x, | ||
float | clip_min_y, | ||
float | clip_max_x, | ||
float | clip_max_y, | ||
float | xzoom, | ||
float | yzoom, | ||
const float | color[4] | ||
) |
Definition at line 364 of file glutil.c.
References color, immDrawPixelsTexTiled_scaling_clipping(), state, x, and y.
Referenced by ED_draw_imbuf_clipping().
void immDrawPixelsTexTiled_scaling | ( | IMMDrawPixelsTexState * | state, |
float | x, | ||
float | y, | ||
int | img_w, | ||
int | img_h, | ||
eGPUTextureFormat | gpu_format, | ||
bool | use_filter, | ||
void * | rect, | ||
float | scaleX, | ||
float | scaleY, | ||
float | xzoom, | ||
float | yzoom, | ||
const float | color[4] | ||
) |
Definition at line 300 of file glutil.c.
References color, immDrawPixelsTexTiled_scaling_clipping(), state, x, and y.
Referenced by file_draw_preview(), and wm_drag_draw_icon().
void immDrawPixelsTexTiled_scaling_clipping | ( | IMMDrawPixelsTexState * | state, |
float | x, | ||
float | y, | ||
int | img_w, | ||
int | img_h, | ||
eGPUTextureFormat | gpu_format, | ||
bool | use_filter, | ||
void * | rect, | ||
float | scaleX, | ||
float | scaleY, | ||
float | clip_min_x, | ||
float | clip_min_y, | ||
float | clip_max_x, | ||
float | clip_max_y, | ||
float | xzoom, | ||
float | yzoom, | ||
const float | color[4] | ||
) |
Use the currently bound shader.
Use immDrawPixelsTexSetup to bind the shader you want before calling #immDrawPixelsTex.
If using a special shader double check it uses the same attributes "pos" "texCoord" and uniform "image".
If color is NULL then use white by default
Unless state->do_shader_unbind is explicitly set to false
, the shader is unbound when finished.
Definition at line 130 of file glutil.c.
References BLI_assert_msg, bottom, color, data, DATA, ELEM, GPU_DATA_FLOAT, GPU_DATA_UBYTE, GPU_flush(), GPU_PRIM_TRI_FAN, GPU_R16F, GPU_R8, GPU_RGB16F, GPU_RGBA16F, GPU_RGBA8, GPU_shader_get_uniform(), GPU_texture_bind(), GPU_texture_create_2d(), GPU_texture_filter_mode(), GPU_texture_free(), GPU_texture_unbind(), GPU_texture_update_sub(), GPU_texture_wrap_mode(), GPU_unpack_row_length_set(), immAttr2f(), immBegin(), immEnd(), immUnbindProgram(), immUniformColor4fv(), immVertex2f(), left, NULL, offset, pos, right, state, stride, tex, top, UNPACK2, x, and y.
Referenced by immDrawPixelsTexTiled(), immDrawPixelsTexTiled_clipping(), and immDrawPixelsTexTiled_scaling().