[Bf-blender-cvs] [84463317c6e] temp-lineart-embree: DRW: Port draw_common.c to use shared definition with GLSL
Clément Foucault
noreply at git.blender.org
Sat Mar 26 17:11:01 CET 2022
Commit: 84463317c6ea64c63bf8d3c025fe532fc74c010c
Author: Clément Foucault
Date: Sat Mar 26 11:53:24 2022 +0100
Branches: temp-lineart-embree
https://developer.blender.org/rB84463317c6ea64c63bf8d3c025fe532fc74c010c
DRW: Port draw_common.c to use shared definition with GLSL
===================================================================
M source/blender/draw/CMakeLists.txt
M source/blender/draw/intern/draw_common.c
M source/blender/draw/intern/draw_common.h
A source/blender/draw/intern/draw_common_shader_shared.h
M source/blender/draw/intern/shaders/draw_view_info.hh
===================================================================
diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt
index 38ae9e86585..2a2335aa44c 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -190,6 +190,7 @@ set(SRC
intern/draw_cache_inline.h
intern/draw_color_management.h
intern/draw_common.h
+ intern/draw_common_shader_shared.h
intern/draw_debug.h
intern/draw_hair_private.h
intern/draw_instance_data.h
diff --git a/source/blender/draw/intern/draw_common.c b/source/blender/draw/intern/draw_common.c
index c7edf003346..462ae6f7cf1 100644
--- a/source/blender/draw/intern/draw_common.c
+++ b/source/blender/draw/intern/draw_common.c
@@ -184,9 +184,10 @@ void DRW_globals_update(void)
gb->pixelFac = *DRW_viewport_pixelsize_get();
- copy_v2_v2(gb->sizeViewport, DRW_viewport_size_get());
- copy_v2_v2(gb->sizeViewportInv, gb->sizeViewport);
- invert_v2(gb->sizeViewportInv);
+ /* Deprecated, use drw_view.viewport_size instead */
+ copy_v2_v2(&gb->sizeViewport[0], DRW_viewport_size_get());
+ copy_v2_v2(&gb->sizeViewport[2], &gb->sizeViewport[0]);
+ invert_v2(&gb->sizeViewport[2]);
/* Color management. */
{
diff --git a/source/blender/draw/intern/draw_common.h b/source/blender/draw/intern/draw_common.h
index 53946c0cec5..e2dc91f64be 100644
--- a/source/blender/draw/intern/draw_common.h
+++ b/source/blender/draw/intern/draw_common.h
@@ -7,6 +7,8 @@
#pragma once
+#include "draw_common_shader_shared.h"
+
struct DRWShadingGroup;
struct FluidModifierData;
struct GPUMaterial;
@@ -16,126 +18,6 @@ struct ParticleSystem;
struct RegionView3D;
struct ViewLayer;
-#define UBO_FIRST_COLOR colorWire
-#define UBO_LAST_COLOR colorUVShadow
-
-/* Used as ubo but colors can be directly referenced as well */
-/* Keep in sync with: common_globals_lib.glsl (globalsBlock) */
-/* NOTE: Also keep all color as vec4 and between #UBO_FIRST_COLOR and #UBO_LAST_COLOR. */
-typedef struct GlobalsUboStorage {
- /* UBOs data needs to be 16 byte aligned (size of vec4) */
- float colorWire[4];
- float colorWireEdit[4];
- float colorActive[4];
- float colorSelect[4];
- float colorLibrarySelect[4];
- float colorLibrary[4];
- float colorTransform[4];
- float colorLight[4];
- float colorSpeaker[4];
- float colorCamera[4];
- float colorCameraPath[4];
- float colorEmpty[4];
- float colorVertex[4];
- float colorVertexSelect[4];
- float colorVertexUnreferenced[4];
- float colorVertexMissingData[4];
- float colorEditMeshActive[4];
- float colorEdgeSelect[4];
- float colorEdgeSeam[4];
- float colorEdgeSharp[4];
- float colorEdgeCrease[4];
- float colorEdgeBWeight[4];
- float colorEdgeFaceSelect[4];
- float colorEdgeFreestyle[4];
- float colorFace[4];
- float colorFaceSelect[4];
- float colorFaceFreestyle[4];
- float colorGpencilVertex[4];
- float colorGpencilVertexSelect[4];
- float colorNormal[4];
- float colorVNormal[4];
- float colorLNormal[4];
- float colorFaceDot[4];
- float colorSkinRoot[4];
-
- float colorDeselect[4];
- float colorOutline[4];
- float colorLightNoAlpha[4];
-
- float colorBackground[4];
- float colorBackgroundGradient[4];
- float colorCheckerPrimary[4];
- float colorCheckerSecondary[4];
- float colorClippingBorder[4];
- float colorEditMeshMiddle[4];
-
- float colorHandleFree[4];
- float colorHandleAuto[4];
- float colorHandleVect[4];
- float colorHandleAlign[4];
- float colorHandleAutoclamp[4];
- float colorHandleSelFree[4];
- float colorHandleSelAuto[4];
- float colorHandleSelVect[4];
- float colorHandleSelAlign[4];
- float colorHandleSelAutoclamp[4];
- float colorNurbUline[4];
- float colorNurbVline[4];
- float colorNurbSelUline[4];
- float colorNurbSelVline[4];
- float colorActiveSpline[4];
-
- float colorBonePose[4];
- float colorBonePoseActive[4];
- float colorBonePoseActiveUnsel[4];
- float colorBonePoseConstraint[4];
- float colorBonePoseIK[4];
- float colorBonePoseSplineIK[4];
- float colorBonePoseTarget[4];
- float colorBoneSolid[4];
- float colorBoneLocked[4];
- float colorBoneActive[4];
- float colorBoneActiveUnsel[4];
- float colorBoneSelect[4];
- float colorBoneIKLine[4];
- float colorBoneIKLineNoTarget[4];
- float colorBoneIKLineSpline[4];
-
- float colorText[4];
- float colorTextHi[4];
-
- float colorBundleSolid[4];
-
- float colorMballRadius[4];
- float colorMballRadiusSelect[4];
- float colorMballStiffness[4];
- float colorMballStiffnessSelect[4];
-
- float colorCurrentFrame[4];
-
- float colorGrid[4];
- float colorGridEmphasis[4];
- float colorGridAxisX[4];
- float colorGridAxisY[4];
- float colorGridAxisZ[4];
-
- float colorFaceBack[4];
- float colorFaceFront[4];
-
- float colorUVShadow[4];
-
- /* NOTE: Put all color before #UBO_LAST_COLOR. */
- float screenVecs[2][4]; /* Padded as vec4. */
- float sizeViewport[2], sizeViewportInv[2]; /* Packed as vec4 in GLSL. */
-
- /* Pack individual float at the end of the buffer to avoid alignment errors */
- float sizePixel, pixelFac;
- float sizeObjectCenter, sizeLightCenter, sizeLightCircle, sizeLightCircleShadow;
- float sizeVertex, sizeEdge, sizeEdgeFix, sizeFaceDot;
- float sizeChecker;
- float sizeVertexGpencil;
-} GlobalsUboStorage;
/* Keep in sync with globalsBlock in shaders */
BLI_STATIC_ASSERT_ALIGN(GlobalsUboStorage, 16)
diff --git a/source/blender/draw/intern/draw_common_shader_shared.h b/source/blender/draw/intern/draw_common_shader_shared.h
new file mode 100644
index 00000000000..c83af2eef84
--- /dev/null
+++ b/source/blender/draw/intern/draw_common_shader_shared.h
@@ -0,0 +1,245 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later
+ * Copyright 2022 Blender Foundation. */
+
+/** \file
+ * \ingroup draw
+ */
+
+#ifndef GPU_SHADER
+# include "GPU_shader_shared_utils.h"
+
+typedef struct GlobalsUboStorage GlobalsUboStorage;
+#endif
+
+/* Future Plan: These globals were once shared between multiple overlay engines. But now that they
+ * have been merged into one engine, there is no reasons to keep these globals out of the overlay
+ * engine. */
+
+#define UBO_FIRST_COLOR colorWire
+#define UBO_LAST_COLOR colorUVShadow
+
+/* Used as ubo but colors can be directly referenced as well */
+/* NOTE: Also keep all color as vec4 and between #UBO_FIRST_COLOR and #UBO_LAST_COLOR. */
+struct GlobalsUboStorage {
+ /* UBOs data needs to be 16 byte aligned (size of vec4) */
+ float4 colorWire;
+ float4 colorWireEdit;
+ float4 colorActive;
+ float4 colorSelect;
+ float4 colorLibrarySelect;
+ float4 colorLibrary;
+ float4 colorTransform;
+ float4 colorLight;
+ float4 colorSpeaker;
+ float4 colorCamera;
+ float4 colorCameraPath;
+ float4 colorEmpty;
+ float4 colorVertex;
+ float4 colorVertexSelect;
+ float4 colorVertexUnreferenced;
+ float4 colorVertexMissingData;
+ float4 colorEditMeshActive;
+ float4 colorEdgeSelect;
+ float4 colorEdgeSeam;
+ float4 colorEdgeSharp;
+ float4 colorEdgeCrease;
+ float4 colorEdgeBWeight;
+ float4 colorEdgeFaceSelect;
+ float4 colorEdgeFreestyle;
+ float4 colorFace;
+ float4 colorFaceSelect;
+ float4 colorFaceFreestyle;
+ float4 colorGpencilVertex;
+ float4 colorGpencilVertexSelect;
+ float4 colorNormal;
+ float4 colorVNormal;
+ float4 colorLNormal;
+ float4 colorFaceDot;
+ float4 colorSkinRoot;
+
+ float4 colorDeselect;
+ float4 colorOutline;
+ float4 colorLightNoAlpha;
+
+ float4 colorBackground;
+ float4 colorBackgroundGradient;
+ float4 colorCheckerPrimary;
+ float4 colorCheckerSecondary;
+ float4 colorClippingBorder;
+ float4 colorEditMeshMiddle;
+
+ float4 colorHandleFree;
+ float4 colorHandleAuto;
+ float4 colorHandleVect;
+ float4 colorHandleAlign;
+ float4 colorHandleAutoclamp;
+ float4 colorHandleSelFree;
+ float4 colorHandleSelAuto;
+ float4 colorHandleSelVect;
+ float4 colorHandleSelAlign;
+ float4 colorHandleSelAutoclamp;
+ float4 colorNurbUline;
+ float4 colorNurbVline;
+ float4 colorNurbSelUline;
+ float4 colorNurbSelVline;
+ float4 colorActiveSpline;
+
+ float4 colorBonePose;
+ float4 colorBonePoseActive;
+ float4 colorBonePoseActiveUnsel;
+ float4 colorBonePoseConstraint;
+ float4 colorBonePoseIK;
+ float4 colorBonePoseSplineIK;
+ float4 colorBonePoseTarget;
+ float4 colorBoneSolid;
+ float4 colorBoneLocked;
+ float4 colorBoneActive;
+ float4 colorBoneActiveUnsel;
+ float4 colorBoneSelect;
+ float4 colorBoneIKLine;
+ float4 colorBoneIKLineNoTarget;
+ float4 colorBoneIKLineSpline;
+
+ float4 colorText;
+ float4 colorTextHi;
+
+ float4 colorBundleSolid;
+
+ float4 colorMballRadius;
+ float4 colorMballRadiusSelect;
+ float4 colorMballStiffness;
+ float4 colorMballStiffnessSelect;
+
+ float4 colorCurrentFrame;
+
+ float4 colorGrid;
+ float4 colorGridEmphasis;
+ float4 colorGridAxisX;
+ float4 colorGridAxisY;
+ float4 colorGridAxisZ;
+
+ float4 colorFaceBack;
+ float4 colorFaceFront;
+
+ float4 colorUVShadow;
+
+ /* NOTE: Put all color before #UBO_LAST_COLOR. */
+ float4 screenVecs[2]; /* Padded as vec4. */
+ float4 sizeViewport; /* Packed as vec4. */
+
+ /* Pack individual float at the end of the buffer to avoid alignment errors */
+ float sizePixel, pixelFac;
+ float sizeObjectCenter, sizeLightCenter, sizeLightCircle, sizeLightCircleShadow;
+ float sizeVertex, sizeEdge, sizeEdgeFix, sizeFaceDot;
+ float sizeChecker;
+ float sizeVertexGpencil;
+};
+BLI_STATIC_ASSERT_ALIGN(GlobalsUboStorage, 16)
+
+#ifdef GPU_SHADER
+/* Keep compatibility_with old global scope syntax. */
+/* TODO(@fclem) Mass rename and remove the camel case. */
+# define colorWire drw_globals.colorWire
+# define colorWireEdit drw_globals.colorWireEdit
+# define colorActive drw_globals.colorActive
+# define colorSelect drw_globals.colorSelect
+# define colorLibrarySelect drw_globals.colorLibrarySelect
+# define colorLibrary drw_globals.colorLibrary
+# define colorTransform drw_globals.colorTransform
+# define colorLight drw_globals.colorLight
+# define colorSpeaker drw_globals.colorSpeaker
+# define colorCamera drw_globals.colorCamera
+# define colorCameraPath drw_globals.colorCameraPath
+# define colorEmpty drw_globals.colorEmpty
+# define colorVertex drw_globals.colorVertex
+# define colorVertexSelect drw_globals.colorV
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list