Blender  V2.93
draw_common.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * Copyright 2016, Blender Foundation.
17  */
18 
23 #pragma once
24 
25 struct DRWShadingGroup;
26 struct FluidModifierData;
27 struct ModifierData;
28 struct Object;
29 struct ParticleSystem;
30 struct RegionView3D;
31 struct ViewLayer;
32 
33 #define UBO_FIRST_COLOR colorWire
34 #define UBO_LAST_COLOR colorUVShadow
35 
36 /* Used as ubo but colors can be directly referenced as well */
37 /* Keep in sync with: common_globals_lib.glsl (globalsBlock) */
38 /* NOTE! Also keep all color as vec4 and between UBO_FIRST_COLOR and UBO_LAST_COLOR */
39 typedef struct GlobalsUboStorage {
40  /* UBOs data needs to be 16 byte aligned (size of vec4) */
41  float colorWire[4];
42  float colorWireEdit[4];
43  float colorActive[4];
44  float colorSelect[4];
45  float colorDupliSelect[4];
46  float colorDupli[4];
48  float colorLibrary[4];
49  float colorTransform[4];
50  float colorLight[4];
51  float colorSpeaker[4];
52  float colorCamera[4];
53  float colorCameraPath[4];
54  float colorEmpty[4];
55  float colorVertex[4];
60  float colorEdgeSelect[4];
61  float colorEdgeSeam[4];
62  float colorEdgeSharp[4];
63  float colorEdgeCrease[4];
64  float colorEdgeBWeight[4];
67  float colorFace[4];
68  float colorFaceSelect[4];
72  float colorNormal[4];
73  float colorVNormal[4];
74  float colorLNormal[4];
75  float colorFaceDot[4];
76  float colorSkinRoot[4];
77 
78  float colorDeselect[4];
79  float colorOutline[4];
81 
82  float colorBackground[4];
88 
89  float colorHandleFree[4];
90  float colorHandleAuto[4];
91  float colorHandleVect[4];
92  float colorHandleAlign[4];
99  float colorNurbUline[4];
100  float colorNurbVline[4];
104 
105  float colorBonePose[4];
109  float colorBonePoseIK[4];
112  float colorBoneSolid[4];
113  float colorBoneLocked[4];
114  float colorBoneActive[4];
116  float colorBoneSelect[4];
117  float colorBoneIKLine[4];
120 
121  float colorText[4];
122  float colorTextHi[4];
123 
125 
130 
132 
133  float colorGrid[4];
135  float colorGridAxisX[4];
136  float colorGridAxisY[4];
137  float colorGridAxisZ[4];
138 
139  float colorFaceBack[4];
140  float colorFaceFront[4];
141 
142  float colorUVShadow[4];
143 
144  /* NOTE! Put all color before UBO_LAST_COLOR */
145  float screenVecs[2][4]; /* padded as vec4 */
146  float sizeViewport[2], sizeViewportInv[2]; /* packed as vec4 in glsl */
147 
148  /* Pack individual float at the end of the buffer to avoid alignment errors */
152  float sizeChecker;
155 /* Keep in sync with globalsBlock in shaders */
157 
158 void DRW_globals_update(void);
159 void DRW_globals_free(void);
160 
161 struct DRWView *DRW_view_create_with_zoffset(const struct DRWView *parent_view,
162  const struct RegionView3D *rv3d,
163  float offset);
164 
165 int DRW_object_wire_theme_get(struct Object *ob, struct ViewLayer *view_layer, float **r_color);
166 float *DRW_color_background_blend_get(int theme_id);
167 
168 bool DRW_object_is_flat(struct Object *ob, int *r_axis);
169 bool DRW_object_axis_orthogonal_to_view(struct Object *ob, int axis);
170 
171 /* draw_hair.c */
172 
173 /* This creates a shading group with display hairs.
174  * The draw call is already added by this function, just add additional uniforms. */
175 struct DRWShadingGroup *DRW_shgroup_hair_create_sub(struct Object *object,
176  struct ParticleSystem *psys,
177  struct ModifierData *md,
178  struct DRWShadingGroup *shgrp);
179 struct GPUVertBuf *DRW_hair_pos_buffer_get(struct Object *object,
180  struct ParticleSystem *psys,
181  struct ModifierData *md);
182 void DRW_hair_duplimat_get(struct Object *object,
183  struct ParticleSystem *psys,
184  struct ModifierData *md,
185  float (*dupli_mat)[4]);
186 
187 void DRW_hair_init(void);
188 void DRW_hair_update(void);
189 void DRW_hair_free(void);
190 
191 /* draw_fluid.c */
192 
193 /* Fluid simulation. */
194 void DRW_smoke_ensure(struct FluidModifierData *fmd, int highres);
197 void DRW_fluid_ensure_flags(struct FluidModifierData *fmd);
199 
200 void DRW_smoke_free(struct FluidModifierData *fmd);
202 
203 /* draw_common.c */
204 struct DRW_Global {
211 
212  struct GPUTexture *ramp;
214 
216 };
217 extern struct DRW_Global G_draw;
#define BLI_STATIC_ASSERT_ALIGN(st, align)
Definition: BLI_assert.h:89
struct GPUTexture GPUTexture
Definition: GPU_texture.h:33
struct GPUUniformBuf GPUUniformBuf
struct GPUVertBuf GPUVertBuf
void DRW_hair_duplimat_get(struct Object *object, struct ParticleSystem *psys, struct ModifierData *md, float(*dupli_mat)[4])
void DRW_globals_update(void)
Definition: draw_common.c:52
void DRW_fluid_ensure_flags(struct FluidModifierData *fmd)
Definition: draw_fluid.c:560
float * DRW_color_background_blend_get(int theme_id)
Definition: draw_common.c:401
void DRW_hair_update(void)
Definition: draw_hair.c:300
struct DRWView * DRW_view_create_with_zoffset(const struct DRWView *parent_view, const struct RegionView3D *rv3d, float offset)
void DRW_smoke_free_velocity(struct FluidModifierData *fmd)
Definition: draw_fluid.c:593
struct GlobalsUboStorage GlobalsUboStorage
void DRW_smoke_free(struct FluidModifierData *fmd)
Definition: draw_fluid.c:438
void DRW_smoke_ensure_velocity(struct FluidModifierData *fmd)
Definition: draw_fluid.c:530
void DRW_smoke_ensure_coba_field(struct FluidModifierData *fmd)
Definition: draw_fluid.c:478
int DRW_object_wire_theme_get(struct Object *ob, struct ViewLayer *view_layer, float **r_color)
Definition: draw_common.c:299
struct DRW_Global G_draw
Definition: draw_common.c:45
void DRW_smoke_ensure(struct FluidModifierData *fmd, int highres)
Definition: draw_fluid.c:502
struct GPUVertBuf * DRW_hair_pos_buffer_get(struct Object *object, struct ParticleSystem *psys, struct ModifierData *md)
Definition: draw_hair.c:175
struct DRWShadingGroup * DRW_shgroup_hair_create_sub(struct Object *object, struct ParticleSystem *psys, struct ModifierData *md, struct DRWShadingGroup *shgrp)
Definition: draw_hair.c:222
bool DRW_object_axis_orthogonal_to_view(struct Object *ob, int axis)
Definition: draw_common.c:474
void DRW_hair_init(void)
Definition: draw_hair.c:103
bool DRW_object_is_flat(struct Object *ob, int *r_axis)
Definition: draw_common.c:441
void DRW_fluid_ensure_range_field(struct FluidModifierData *fmd)
Definition: draw_fluid.c:577
void DRW_globals_free(void)
Definition: draw_common.c:267
void DRW_hair_free(void)
Definition: draw_hair.c:376
GlobalsUboStorage block
Definition: draw_common.h:208
struct GPUUniformBuf * block_ubo
Definition: draw_common.h:210
struct GPUTexture * weight_ramp
Definition: draw_common.h:213
struct GPUTexture * ramp
Definition: draw_common.h:212
struct GPUUniformBuf * view_ubo
Definition: draw_common.h:215
float colorLight[4]
Definition: draw_common.h:50
float colorHandleAuto[4]
Definition: draw_common.h:90
float sizeViewportInv[2]
Definition: draw_common.h:146
float colorBonePoseTarget[4]
Definition: draw_common.h:111
float colorMballRadius[4]
Definition: draw_common.h:126
float colorHandleVect[4]
Definition: draw_common.h:91
float colorGridAxisZ[4]
Definition: draw_common.h:137
float colorBoneSelect[4]
Definition: draw_common.h:116
float colorDupli[4]
Definition: draw_common.h:46
float colorMballRadiusSelect[4]
Definition: draw_common.h:127
float colorEditMeshMiddle[4]
Definition: draw_common.h:87
float colorVertexMissingData[4]
Definition: draw_common.h:58
float colorGridAxisY[4]
Definition: draw_common.h:136
float colorNurbSelUline[4]
Definition: draw_common.h:101
float colorEdgeCrease[4]
Definition: draw_common.h:63
float colorBoneIKLineSpline[4]
Definition: draw_common.h:119
float colorEdgeBWeight[4]
Definition: draw_common.h:64
float colorBoneIKLine[4]
Definition: draw_common.h:117
float colorHandleAlign[4]
Definition: draw_common.h:92
float colorHandleSelFree[4]
Definition: draw_common.h:94
float colorGpencilVertexSelect[4]
Definition: draw_common.h:71
float colorEmpty[4]
Definition: draw_common.h:54
float colorOutline[4]
Definition: draw_common.h:79
float colorBoneIKLineNoTarget[4]
Definition: draw_common.h:118
float colorGridEmphasis[4]
Definition: draw_common.h:134
float colorBonePoseActive[4]
Definition: draw_common.h:106
float colorEdgeSeam[4]
Definition: draw_common.h:61
float colorSkinRoot[4]
Definition: draw_common.h:76
float colorHandleSelAlign[4]
Definition: draw_common.h:97
float colorNurbVline[4]
Definition: draw_common.h:100
float colorLightNoAlpha[4]
Definition: draw_common.h:80
float colorBonePoseIK[4]
Definition: draw_common.h:109
float colorEdgeFreestyle[4]
Definition: draw_common.h:66
float colorHandleFree[4]
Definition: draw_common.h:89
float colorFaceFreestyle[4]
Definition: draw_common.h:69
float colorClippingBorder[4]
Definition: draw_common.h:86
float colorVertex[4]
Definition: draw_common.h:55
float colorNurbUline[4]
Definition: draw_common.h:99
float colorWireEdit[4]
Definition: draw_common.h:42
float colorHandleSelVect[4]
Definition: draw_common.h:96
float colorBonePoseActiveUnsel[4]
Definition: draw_common.h:107
float colorFaceSelect[4]
Definition: draw_common.h:68
float colorBoneLocked[4]
Definition: draw_common.h:113
float colorCameraPath[4]
Definition: draw_common.h:53
float colorVertexSelect[4]
Definition: draw_common.h:56
float colorCamera[4]
Definition: draw_common.h:52
float colorBoneActiveUnsel[4]
Definition: draw_common.h:115
float colorSelect[4]
Definition: draw_common.h:44
float colorSpeaker[4]
Definition: draw_common.h:51
float colorActiveSpline[4]
Definition: draw_common.h:103
float colorBonePoseConstraint[4]
Definition: draw_common.h:108
float colorFaceBack[4]
Definition: draw_common.h:139
float colorUVShadow[4]
Definition: draw_common.h:142
float colorCheckerPrimary[4]
Definition: draw_common.h:84
float colorFaceFront[4]
Definition: draw_common.h:140
float colorEditMeshActive[4]
Definition: draw_common.h:59
float colorGridAxisX[4]
Definition: draw_common.h:135
float colorDeselect[4]
Definition: draw_common.h:78
float screenVecs[2][4]
Definition: draw_common.h:145
float colorBonePose[4]
Definition: draw_common.h:105
float colorText[4]
Definition: draw_common.h:121
float colorTransform[4]
Definition: draw_common.h:49
float colorNormal[4]
Definition: draw_common.h:72
float sizeViewport[2]
Definition: draw_common.h:146
float colorLibrary[4]
Definition: draw_common.h:48
float colorLNormal[4]
Definition: draw_common.h:74
float colorMballStiffness[4]
Definition: draw_common.h:128
float colorFace[4]
Definition: draw_common.h:67
float colorGpencilVertex[4]
Definition: draw_common.h:70
float colorMballStiffnessSelect[4]
Definition: draw_common.h:129
float colorHandleSelAuto[4]
Definition: draw_common.h:95
float colorBundleSolid[4]
Definition: draw_common.h:124
float colorVNormal[4]
Definition: draw_common.h:73
float colorBoneSolid[4]
Definition: draw_common.h:112
float colorHandleSelAutoclamp[4]
Definition: draw_common.h:98
float colorGrid[4]
Definition: draw_common.h:133
float colorEdgeSharp[4]
Definition: draw_common.h:62
float colorLibrarySelect[4]
Definition: draw_common.h:47
float colorWire[4]
Definition: draw_common.h:41
float colorNurbSelVline[4]
Definition: draw_common.h:102
float colorEdgeFaceSelect[4]
Definition: draw_common.h:65
float colorBackground[4]
Definition: draw_common.h:82
float colorBackgroundGradient[4]
Definition: draw_common.h:83
float colorBonePoseSplineIK[4]
Definition: draw_common.h:110
float colorHandleAutoclamp[4]
Definition: draw_common.h:93
float colorBoneActive[4]
Definition: draw_common.h:114
float colorCheckerSecondary[4]
Definition: draw_common.h:85
float colorTextHi[4]
Definition: draw_common.h:122
float colorEdgeSelect[4]
Definition: draw_common.h:60
float colorFaceDot[4]
Definition: draw_common.h:75
float colorDupliSelect[4]
Definition: draw_common.h:45
float colorVertexUnreferenced[4]
Definition: draw_common.h:57
float colorCurrentFrame[4]
Definition: draw_common.h:131
float sizeLightCircleShadow
Definition: draw_common.h:150
float colorActive[4]
Definition: draw_common.h:43