111 viewport->
size[0] = viewport->
size[1] = -1;
131 float const empty_pixel[4] = {0.0f, 0.0f, 0.0f, 0.0f};
142 blender::gpu::TextureFormat::SFLOAT_16_16_16_16,
146 "dtxl_color_overlay",
149 blender::gpu::TextureFormat::SRGBA_8_8_8_8,
162 blender::gpu::TextureFormat::SFLOAT_16_16_16_16,
166 "dtxl_color_overlay_stereo",
169 blender::gpu::TextureFormat::SRGBA_8_8_8_8,
178 if (viewport->
depth_tx ==
nullptr) {
184 blender::gpu::TextureFormat::SFLOAT_32_DEPTH_UINT_8,
188 const int depth_clear = 0;
203 for (
int i = 0;
i < 2;
i++) {
242 if (!is_xr_surface) {
287 viewport->
dither = dither;
307 GPU_ATTACHMENT_TEXTURE(viewport->color_overlay_tx[0]),
308 GPU_ATTACHMENT_TEXTURE(viewport->color_render_tx[0]),
373 format,
"pos", blender::gpu::VertAttrType::SFLOAT_32_32);
375 format,
"texCoord", blender::gpu::VertAttrType::SFLOAT_32_32);
383 const uint vbo_len = 4;
411 const rctf *rect_pos,
414 const float compare_limit = 0.0001f;
415 const bool parameters_changed =
420 if (viewport->
batch.
batch && parameters_changed) {
445 const rctf *rect_pos,
447 bool display_colorspace,
448 bool do_overlay_merge)
453 bool use_ocio =
false;
497 bool display_colorspace,
498 bool do_overlay_merge)
502 if (color ==
nullptr) {
510 rcti sanitized_rect = *rect;
521 pos_rect.
xmin = sanitized_rect.
xmin;
522 pos_rect.
ymin = sanitized_rect.
ymin;
524 pos_rect.
ymax = sanitized_rect.
ymin + h;
527 uv_rect.
xmin = halfx;
528 uv_rect.
ymin = halfy;
529 uv_rect.
xmax = halfx + 1.0f;
530 uv_rect.
ymax = halfy + 1.0f;
535 std::swap(uv_rect.
xmin, uv_rect.
xmax);
538 std::swap(uv_rect.
ymin, uv_rect.
ymax);
542 viewport,
view, &pos_rect, &uv_rect, display_colorspace, do_overlay_merge);
552 bool display_colorspace,
553 bool do_overlay_merge)
565 pos_rect.
xmin = -1.0f;
566 pos_rect.
ymin = -1.0f;
567 pos_rect.
xmax = 1.0f;
568 pos_rect.
ymax = 1.0f;
577 viewport,
view, &pos_rect, &uv_rect, display_colorspace, do_overlay_merge);
619 GPU_ATTACHMENT_TEXTURE(viewport->depth_tx),
620 GPU_ATTACHMENT_TEXTURE(viewport->color_render_tx[viewport->active_view]),
630 GPU_ATTACHMENT_TEXTURE(viewport->depth_tx),
631 GPU_ATTACHMENT_TEXTURE(viewport->color_overlay_tx[viewport->active_view]),
MINLINE void copy_v2_fl2(float v[2], float x, float y)
MINLINE void copy_v2_v2_int(int r[2], const int a[2])
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
void BLI_rcti_sanitize(struct rcti *rect)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
bool BLI_rctf_compare(const struct rctf *rect_a, const struct rctf *rect_b, float limit)
#define SET_FLAG_FROM_TEST(value, test, flag)
@ S3D_ANAGLYPH_YELLOWBLUE
@ S3D_ANAGLYPH_GREENMAGENTA
void DRW_gpu_context_disable()
void DRW_gpu_context_enable()
void DRW_viewport_data_free(DRWData *drw_data)
void GPU_batch_discard(blender::gpu::Batch *batch)
void GPU_batch_program_set_imm_shader(blender::gpu::Batch *batch)
void GPU_batch_program_set_builtin(blender::gpu::Batch *batch, GPUBuiltinShader shader_id)
blender::gpu::Batch * GPU_batch_create_ex(GPUPrimType primitive_type, blender::gpu::VertBuf *vertex_buf, blender::gpu::IndexBuf *index_buf, GPUBatchFlag owns_flag)
void GPU_batch_draw(blender::gpu::Batch *batch)
#define GPU_batch_uniform_1i(batch, name, x)
#define GPU_FRAMEBUFFER_FREE_SAFE(fb)
int GPU_offscreen_width(const GPUOffScreen *offscreen)
void GPU_offscreen_bind(GPUOffScreen *offscreen, bool save)
void GPU_framebuffer_restore()
int GPU_offscreen_height(const GPUOffScreen *offscreen)
void GPU_offscreen_viewport_data_get(GPUOffScreen *offscreen, blender::gpu::FrameBuffer **r_fb, blender::gpu::Texture **r_color, blender::gpu::Texture **r_depth)
#define GPU_framebuffer_ensure_config(_fb,...)
void GPU_framebuffer_bind(blender::gpu::FrameBuffer *fb)
void GPU_matrix_identity_projection_set()
void GPU_matrix_identity_set()
void GPU_matrix_push_projection()
void GPU_matrix_pop_projection()
@ GPU_SHADER_2D_IMAGE_OVERLAYS_STEREO_MERGE
@ GPU_SHADER_2D_IMAGE_OVERLAYS_MERGE
void GPU_depth_test(GPUDepthTest test)
void GPU_color_mask(bool r, bool g, bool b, bool a)
void GPU_texture_clear(blender::gpu::Texture *texture, eGPUDataFormat data_format, const void *data)
int GPU_texture_height(const blender::gpu::Texture *texture)
void GPU_texture_unbind(blender::gpu::Texture *texture)
int GPU_texture_width(const blender::gpu::Texture *texture)
@ GPU_DATA_UINT_24_8_DEPRECATED
@ GPU_TEXTURE_USAGE_SHADER_READ
@ GPU_TEXTURE_USAGE_SHADER_WRITE
@ GPU_TEXTURE_USAGE_HOST_READ
@ GPU_TEXTURE_USAGE_ATTACHMENT
@ GPU_TEXTURE_USAGE_FORMAT_VIEW
#define GPU_TEXTURE_FREE_SAFE(texture)
blender::gpu::Texture * GPU_texture_create_2d(const char *name, int width, int height, int mip_len, blender::gpu::TextureFormat format, eGPUTextureUsage usage, const float *data)
void GPU_texture_bind(blender::gpu::Texture *texture, int unit)
void GPU_vertbuf_attr_get_raw_data(blender::gpu::VertBuf *, uint a_idx, GPUVertBufRaw *access)
GPU_INLINE void * GPU_vertbuf_raw_step(GPUVertBufRaw *a)
static blender::gpu::VertBuf * GPU_vertbuf_create_with_format(const GPUVertFormat &format)
void GPU_vertbuf_data_alloc(blender::gpu::VertBuf &verts, uint v_len)
bool IMB_colormanagement_display_is_hdr(const ColorManagedDisplaySettings *display_settings, const char *view_name)
void IMB_colormanagement_finish_glsl_draw()
bool IMB_colormanagement_setup_glsl_draw_from_space(const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, const ColorSpace *from_colorspace, float dither, bool predivide, bool do_overlay_merge)
Read Guarded memory(de)allocation.
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
struct @021025263243242147216143265077100330027142264337::@225245033123204053237120173316075113304004012000 batch
struct @021025263243242147216143265077100330027142264337::@240232116316110053135047106323056371161236243121 attr_id
void GPU_viewport_bind(GPUViewport *viewport, int view, const rcti *rect)
void GPU_viewport_unbind(GPUViewport *)
static struct @143276202321147171301317056035115223245173355305 g_viewport
static const GPUVertFormat & gpu_viewport_batch_format()
void GPU_viewport_unbind_from_offscreen(GPUViewport *viewport, GPUOffScreen *ofs, bool display_colorspace, bool do_overlay_merge)
void GPU_viewport_draw_to_screen(GPUViewport *viewport, int view, const rcti *rect)
void GPU_viewport_draw_to_screen_ex(GPUViewport *viewport, int view, const rcti *rect, bool display_colorspace, bool do_overlay_merge)
GPUViewport * GPU_viewport_create()
GPUViewport * GPU_viewport_stereo_create()
static blender::gpu::Batch * gpu_viewport_batch_create(const rctf *rect_pos, const rctf *rect_uv)
static void gpu_viewport_draw_colormanaged(GPUViewport *viewport, int view, const rctf *rect_pos, const rctf *rect_uv, bool display_colorspace, bool do_overlay_merge)
void GPU_viewport_bind_from_offscreen(GPUViewport *viewport, GPUOffScreen *ofs, bool is_xr_surface)
static void gpu_viewport_textures_create(GPUViewport *viewport)
bool GPU_viewport_is_stereo_get(GPUViewport *viewport)
bool GPU_viewport_do_update(GPUViewport *viewport)
static blender::gpu::Batch * gpu_viewport_batch_get(GPUViewport *viewport, const rctf *rect_pos, const rctf *rect_uv)
blender::gpu::FrameBuffer * GPU_viewport_framebuffer_overlay_get(GPUViewport *viewport)
int GPU_viewport_active_view_get(GPUViewport *viewport)
static void gpu_viewport_textures_free(GPUViewport *viewport)
void GPU_viewport_free(GPUViewport *viewport)
blender::gpu::Texture * GPU_viewport_overlay_texture(GPUViewport *viewport, int view)
blender::gpu::FrameBuffer * GPU_viewport_framebuffer_render_get(GPUViewport *viewport)
void GPU_viewport_colorspace_set(GPUViewport *viewport, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, float dither)
void GPU_viewport_stereo_composite(GPUViewport *viewport, Stereo3dFormat *stereo_format)
static void gpu_viewport_batch_free(GPUViewport *viewport)
void GPU_viewport_tag_update(GPUViewport *viewport)
blender::gpu::Texture * GPU_viewport_color_texture(GPUViewport *viewport, int view)
blender::gpu::Texture * GPU_viewport_depth_texture(GPUViewport *viewport)
DRWData ** GPU_viewport_data_get(GPUViewport *viewport)
BLI_INLINE float fb(float length, float L)
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
VecBase< int32_t, 2 > int2
ccl_device_inline int rect_size(const int4 rect)
struct CurveMapping * curve_mapping
blender::gpu::Batch * batch
struct GPUViewportBatch::@221355136133224036012321245236337260300076357225 last_used_parameters
blender::gpu::Texture * color_overlay_tx[2]
blender::gpu::FrameBuffer * render_fb
blender::gpu::FrameBuffer * overlay_fb
ColorManagedViewSettings view_settings
ColorManagedDisplaySettings display_settings
blender::gpu::Texture * depth_tx
blender::gpu::FrameBuffer * stereo_comp_fb
blender::gpu::Texture * color_render_tx[2]
CurveMapping * orig_curve_mapping