Blender V5.0
GPU_shader_shared.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2022 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#ifndef USE_GPU_SHADER_CREATE_INFO
12
14
16#endif
17
18/* NOTE: float3 has differing stride and alignment rules across different GPU back-ends. If 12 byte
19 * stride and alignment is essential, use `packed_float3` to avoid data read issues. This is
20 * required in the common use-case where a float3 and an int/float are paired together for optimal
21 * data transfer. */
22
35
36#define MAX_SOCKET_PARAMETERS 4
37#define MAX_SOCKET_INSTANCE 32
38
39/* Node Socket shader parameters. Must match the shader layout of "gpu_shader_2D_node_socket". */
50
51/* Per link data. */
73
74/* Data common to all links. */
82
96
102
109
110#define MAX_CALLS 16
111
116
117#define GPU_SEQ_STRIP_DRAW_DATA_LEN 256
118
138
139/* Glyph for text rendering. */
140struct GlyphQuad {
142 float4 glyph_color; /* Cannot be name `color` because of metal macros. */
146};
148
149/* VSE per-strip data for timeline rendering. */
151 /* Horizontal strip positions (1.0 is one frame). */
152 float left_handle, right_handle; /* Left and right strip sides. */
153 float content_start, content_end; /* Start and end of actual content (only relevant for strips
154 * that have holdout regions). */
156 /* Vertical strip positions (1.0 is one channel). */
157 float bottom;
158 float top;
159 float strip_content_top; /* Content coordinate, i.e. below title bar if there is one. */
160 uint flags; /* GPUSeqFlags bitmask. */
161 /* Strip colors, each is uchar4 packed with equivalent of packUnorm4x8. */
166 float _pad0, _pad1;
167};
170 "SeqStripDrawData UBO must not exceed minspec UBO size (16384)")
171
172/* VSE per-thumbnail data for timeline rendering. */
173struct SeqStripThumbData {
174 float left, right, bottom, top; /* Strip rectangle positions. */
175 float x1, y1, x2, y2; /* Thumbnail rectangle positions. */
176 float u1, v1, u2, v2; /* Thumbnail UVs. */
177 float4 tint_color;
178};
179BLI_STATIC_ASSERT_ALIGN(SeqStripThumbData, 16)
181 "SeqStripThumbData UBO must not exceed minspec UBO size (16384)")
182
183/* VSE global data for timeline rendering. */
184struct SeqContextDrawData {
185 float round_radius;
186 float pixelsize;
187 uint col_back;
188 float _pad0;
189};
190BLI_STATIC_ASSERT_ALIGN(SeqContextDrawData, 16)
191
192/* VSE scope point rasterizer data. */
199
206
236
240};
242
255
256#ifdef GPU_SHADER
257TestOutput test_output(
258 TestOutputRawData expect, TestOutputRawData result, bool status, int line, uint type)
259{
260 TestOutput test;
261 test.expect = expect;
262 test.result = result;
264 test.line = line;
265 test.type = type;
266 return test;
267}
268#endif
#define BLI_STATIC_ASSERT(a, msg)
Definition BLI_assert.h:83
#define BLI_STATIC_ASSERT_ALIGN(st, align)
Definition BLI_assert.h:86
unsigned int uint
@ TEST_TYPE_IVEC2
@ TEST_TYPE_UINT
@ TEST_TYPE_INT
@ TEST_TYPE_IVEC4
@ TEST_TYPE_MAT2X2
@ TEST_TYPE_VEC2
@ TEST_TYPE_FLOAT
@ TEST_TYPE_VEC3
@ TEST_TYPE_BOOL
@ TEST_TYPE_IVEC3
@ TEST_TYPE_UVEC3
@ TEST_TYPE_MAT3X3
@ TEST_TYPE_UVEC2
@ TEST_TYPE_MAT4X4
@ TEST_TYPE_MAT2X3
@ TEST_TYPE_MAT4X3
@ TEST_TYPE_MAT3X2
@ TEST_TYPE_MAT4X2
@ TEST_TYPE_UVEC4
@ TEST_TYPE_MAT2X4
@ TEST_TYPE_VEC4
@ TEST_TYPE_MAT3X4
#define MAX_CALLS
GPUKeyframeShapes
@ GPU_KEYFRAME_SHAPE_INNER_DOT
@ GPU_KEYFRAME_SHAPE_CIRCLE
@ GPU_KEYFRAME_SHAPE_SQUARE
@ GPU_KEYFRAME_SHAPE_CLIPPED_HORIZONTAL
@ GPU_KEYFRAME_SHAPE_ARROW_END_MIXED
@ GPU_KEYFRAME_SHAPE_DIAMOND
@ GPU_KEYFRAME_SHAPE_ARROW_END_MAX
@ GPU_KEYFRAME_SHAPE_ARROW_END_MIN
@ GPU_KEYFRAME_SHAPE_CLIPPED_VERTICAL
#define GPU_SEQ_STRIP_DRAW_DATA_LEN
@ TEST_STATUS_NONE
@ TEST_STATUS_PASSED
@ TEST_STATUS_FAILED
@ GPU_SEQ_FLAG_HIGHLIGHT
@ GPU_SEQ_FLAG_BACKGROUND
@ GPU_SEQ_FLAG_SINGLE_IMAGE
@ GPU_SEQ_FLAG_LOCKED
@ GPU_SEQ_FLAG_MISSING_CONTENT
@ GPU_SEQ_FLAG_SELECTED
@ GPU_SEQ_FLAG_CLAMPED
@ GPU_SEQ_FLAG_ANY_HANDLE
@ GPU_SEQ_FLAG_BORDER
@ GPU_SEQ_FLAG_COLOR_BAND
@ GPU_SEQ_FLAG_TRANSITION
@ GPU_SEQ_FLAG_SELECTED_LH
@ GPU_SEQ_FLAG_SELECTED_RH
@ GPU_SEQ_FLAG_OVERLAP
@ GPU_SEQ_FLAG_ACTIVE
@ GPU_SEQ_FLAG_MISSING_TITLE
int32_t bool32_t
ATTR_WARN_UNUSED_RESULT const BMVert * v2
uint top
#define sizeof
static int left
VecBase< int32_t, 4 > int4
MatBase< float, 4, 4 > float4x4
VecBase< float, 4 > float4
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
const int status
float4 calls_data[MAX_CALLS *3]
TestOutputRawData expect
TestOutputRawData result