DRW: Port draw_common.c to use shared definition with GLSL

# Conflicts:
#	source/blender/draw/intern/draw_common_shader_shared.h
#	source/blender/draw/intern/shaders/draw_view_info.hh
This commit is contained in:
Clément Foucault 2022-03-30 12:04:29 +02:00
parent fb524d1675
commit 4cd409ca98
4 changed files with 130 additions and 104 deletions

View File

@ -393,6 +393,7 @@ set(GLSL_SRC
intern/shaders/common_subdiv_vbo_sculpt_data_comp.glsl intern/shaders/common_subdiv_vbo_sculpt_data_comp.glsl
intern/draw_shader_shared.h intern/draw_shader_shared.h
intern/draw_common_shader_shared.h
engines/gpencil/shaders/gpencil_frag.glsl engines/gpencil/shaders/gpencil_frag.glsl
engines/gpencil/shaders/gpencil_vert.glsl engines/gpencil/shaders/gpencil_vert.glsl

View File

@ -139,107 +139,131 @@ BLI_STATIC_ASSERT_ALIGN(GlobalsUboStorage, 16)
#ifdef GPU_SHADER #ifdef GPU_SHADER
/* Keep compatibility_with old global scope syntax. */ /* Keep compatibility_with old global scope syntax. */
/* TODO(@fclem) Mass rename and remove the camel case. */ /* TODO(@fclem) Mass rename and remove the camel case. */
# define colorWire drw_globals.colorWire # define colorWire globalsBlock.colorWire
# define colorWireEdit drw_globals.colorWireEdit # define colorWireEdit globalsBlock.colorWireEdit
# define colorActive drw_globals.colorActive # define colorActive globalsBlock.colorActive
# define colorSelect drw_globals.colorSelect # define colorSelect globalsBlock.colorSelect
# define colorLibrarySelect drw_globals.colorLibrarySelect # define colorLibrarySelect globalsBlock.colorLibrarySelect
# define colorLibrary drw_globals.colorLibrary # define colorLibrary globalsBlock.colorLibrary
# define colorTransform drw_globals.colorTransform # define colorTransform globalsBlock.colorTransform
# define colorLight drw_globals.colorLight # define colorLight globalsBlock.colorLight
# define colorSpeaker drw_globals.colorSpeaker # define colorSpeaker globalsBlock.colorSpeaker
# define colorCamera drw_globals.colorCamera # define colorCamera globalsBlock.colorCamera
# define colorCameraPath drw_globals.colorCameraPath # define colorCameraPath globalsBlock.colorCameraPath
# define colorEmpty drw_globals.colorEmpty # define colorEmpty globalsBlock.colorEmpty
# define colorVertex drw_globals.colorVertex # define colorVertex globalsBlock.colorVertex
# define colorVertexSelect drw_globals.colorVertexSelect # define colorVertexSelect globalsBlock.colorVertexSelect
# define colorVertexUnreferenced drw_globals.colorVertexUnreferenced # define colorVertexUnreferenced globalsBlock.colorVertexUnreferenced
# define colorVertexMissingData drw_globals.colorVertexMissingData # define colorVertexMissingData globalsBlock.colorVertexMissingData
# define colorEditMeshActive drw_globals.colorEditMeshActive # define colorEditMeshActive globalsBlock.colorEditMeshActive
# define colorEdgeSelect drw_globals.colorEdgeSelect # define colorEdgeSelect globalsBlock.colorEdgeSelect
# define colorEdgeSeam drw_globals.colorEdgeSeam # define colorEdgeSeam globalsBlock.colorEdgeSeam
# define colorEdgeSharp drw_globals.colorEdgeSharp # define colorEdgeSharp globalsBlock.colorEdgeSharp
# define colorEdgeCrease drw_globals.colorEdgeCrease # define colorEdgeCrease globalsBlock.colorEdgeCrease
# define colorEdgeBWeight drw_globals.colorEdgeBWeight # define colorEdgeBWeight globalsBlock.colorEdgeBWeight
# define colorEdgeFaceSelect drw_globals.colorEdgeFaceSelect # define colorEdgeFaceSelect globalsBlock.colorEdgeFaceSelect
# define colorEdgeFreestyle drw_globals.colorEdgeFreestyle # define colorEdgeFreestyle globalsBlock.colorEdgeFreestyle
# define colorFace drw_globals.colorFace # define colorFace globalsBlock.colorFace
# define colorFaceSelect drw_globals.colorFaceSelect # define colorFaceSelect globalsBlock.colorFaceSelect
# define colorFaceFreestyle drw_globals.colorFaceFreestyle # define colorFaceFreestyle globalsBlock.colorFaceFreestyle
# define colorGpencilVertex drw_globals.colorGpencilVertex # define colorGpencilVertex globalsBlock.colorGpencilVertex
# define colorGpencilVertexSelect drw_globals.colorGpencilVertexSelect # define colorGpencilVertexSelect globalsBlock.colorGpencilVertexSelect
# define colorNormal drw_globals.colorNormal # define colorNormal globalsBlock.colorNormal
# define colorVNormal drw_globals.colorVNormal # define colorVNormal globalsBlock.colorVNormal
# define colorLNormal drw_globals.colorLNormal # define colorLNormal globalsBlock.colorLNormal
# define colorFaceDot drw_globals.colorFaceDot # define colorFaceDot globalsBlock.colorFaceDot
# define colorSkinRoot drw_globals.colorSkinRoot # define colorSkinRoot globalsBlock.colorSkinRoot
# define colorDeselect drw_globals.colorDeselect # define colorDeselect globalsBlock.colorDeselect
# define colorOutline drw_globals.colorOutline # define colorOutline globalsBlock.colorOutline
# define colorLightNoAlpha drw_globals.colorLightNoAlpha # define colorLightNoAlpha globalsBlock.colorLightNoAlpha
# define colorBackground drw_globals.colorBackground # define colorBackground globalsBlock.colorBackground
# define colorBackgroundGradient drw_globals.colorBackgroundGradient # define colorBackgroundGradient globalsBlock.colorBackgroundGradient
# define colorCheckerPrimary drw_globals.colorCheckerPrimary # define colorCheckerPrimary globalsBlock.colorCheckerPrimary
# define colorCheckerSecondary drw_globals.colorCheckerSecondary # define colorCheckerSecondary globalsBlock.colorCheckerSecondary
# define colorClippingBorder drw_globals.colorClippingBorder # define colorClippingBorder globalsBlock.colorClippingBorder
# define colorEditMeshMiddle drw_globals.colorEditMeshMiddle # define colorEditMeshMiddle globalsBlock.colorEditMeshMiddle
# define colorHandleFree drw_globals.colorHandleFree # define colorHandleFree globalsBlock.colorHandleFree
# define colorHandleAuto drw_globals.colorHandleAuto # define colorHandleAuto globalsBlock.colorHandleAuto
# define colorHandleVect drw_globals.colorHandleVect # define colorHandleVect globalsBlock.colorHandleVect
# define colorHandleAlign drw_globals.colorHandleAlign # define colorHandleAlign globalsBlock.colorHandleAlign
# define colorHandleAutoclamp drw_globals.colorHandleAutoclamp # define colorHandleAutoclamp globalsBlock.colorHandleAutoclamp
# define colorHandleSelFree drw_globals.colorHandleSelFree # define colorHandleSelFree globalsBlock.colorHandleSelFree
# define colorHandleSelAuto drw_globals.colorHandleSelAuto # define colorHandleSelAuto globalsBlock.colorHandleSelAuto
# define colorHandleSelVect drw_globals.colorHandleSelVect # define colorHandleSelVect globalsBlock.colorHandleSelVect
# define colorHandleSelAlign drw_globals.colorHandleSelAlign # define colorHandleSelAlign globalsBlock.colorHandleSelAlign
# define colorHandleSelAutoclamp drw_globals.colorHandleSelAutoclamp # define colorHandleSelAutoclamp globalsBlock.colorHandleSelAutoclamp
# define colorNurbUline drw_globals.colorNurbUline # define colorNurbUline globalsBlock.colorNurbUline
# define colorNurbVline drw_globals.colorNurbVline # define colorNurbVline globalsBlock.colorNurbVline
# define colorNurbSelUline drw_globals.colorNurbSelUline # define colorNurbSelUline globalsBlock.colorNurbSelUline
# define colorNurbSelVline drw_globals.colorNurbSelVline # define colorNurbSelVline globalsBlock.colorNurbSelVline
# define colorActiveSpline drw_globals.colorActiveSpline # define colorActiveSpline globalsBlock.colorActiveSpline
# define colorBonePose drw_globals.colorBonePose # define colorBonePose globalsBlock.colorBonePose
# define colorBonePoseActive drw_globals.colorBonePoseActive # define colorBonePoseActive globalsBlock.colorBonePoseActive
# define colorBonePoseActiveUnsel drw_globals.colorBonePoseActiveUnsel # define colorBonePoseActiveUnsel globalsBlock.colorBonePoseActiveUnsel
# define colorBonePoseConstraint drw_globals.colorBonePoseConstraint # define colorBonePoseConstraint globalsBlock.colorBonePoseConstraint
# define colorBonePoseIK drw_globals.colorBonePoseIK # define colorBonePoseIK globalsBlock.colorBonePoseIK
# define colorBonePoseSplineIK drw_globals.colorBonePoseSplineIK # define colorBonePoseSplineIK globalsBlock.colorBonePoseSplineIK
# define colorBonePoseTarget drw_globals.colorBonePoseTarget # define colorBonePoseTarget globalsBlock.colorBonePoseTarget
# define colorBoneSolid drw_globals.colorBoneSolid # define colorBoneSolid globalsBlock.colorBoneSolid
# define colorBoneLocked drw_globals.colorBoneLocked # define colorBoneLocked globalsBlock.colorBoneLocked
# define colorBoneActive drw_globals.colorBoneActive # define colorBoneActive globalsBlock.colorBoneActive
# define colorBoneActiveUnsel drw_globals.colorBoneActiveUnsel # define colorBoneActiveUnsel globalsBlock.colorBoneActiveUnsel
# define colorBoneSelect drw_globals.colorBoneSelect # define colorBoneSelect globalsBlock.colorBoneSelect
# define colorBoneIKLine drw_globals.colorBoneIKLine # define colorBoneIKLine globalsBlock.colorBoneIKLine
# define colorBoneIKLineNoTarget drw_globals.colorBoneIKLineNoTarget # define colorBoneIKLineNoTarget globalsBlock.colorBoneIKLineNoTarget
# define colorBoneIKLineSpline drw_globals.colorBoneIKLineSpline # define colorBoneIKLineSpline globalsBlock.colorBoneIKLineSpline
# define colorText drw_globals.colorText # define colorText globalsBlock.colorText
# define colorTextHi drw_globals.colorTextHi # define colorTextHi globalsBlock.colorTextHi
# define colorBundleSolid drw_globals.colorBundleSolid # define colorBundleSolid globalsBlock.colorBundleSolid
# define colorMballRadius drw_globals.colorMballRadius # define colorMballRadius globalsBlock.colorMballRadius
# define colorMballRadiusSelect drw_globals.colorMballRadiusSelect # define colorMballRadiusSelect globalsBlock.colorMballRadiusSelect
# define colorMballStiffness drw_globals.colorMballStiffness # define colorMballStiffness globalsBlock.colorMballStiffness
# define colorMballStiffnessSelect drw_globals.colorMballStiffnessSelect # define colorMballStiffnessSelect globalsBlock.colorMballStiffnessSelect
# define colorCurrentFrame drw_globals.colorCurrentFrame # define colorCurrentFrame globalsBlock.colorCurrentFrame
# define colorGrid drw_globals.colorGrid # define colorGrid globalsBlock.colorGrid
# define colorGridEmphasis drw_globals.colorGridEmphasis # define colorGridEmphasis globalsBlock.colorGridEmphasis
# define colorGridAxisX drw_globals.colorGridAxisX # define colorGridAxisX globalsBlock.colorGridAxisX
# define colorGridAxisY drw_globals.colorGridAxisY # define colorGridAxisY globalsBlock.colorGridAxisY
# define colorGridAxisZ drw_globals.colorGridAxisZ # define colorGridAxisZ globalsBlock.colorGridAxisZ
# define colorFaceBack drw_globals.colorFaceBack # define colorFaceBack globalsBlock.colorFaceBack
# define colorFaceFront drw_globals.colorFaceFront # define colorFaceFront globalsBlock.colorFaceFront
# define colorUVShadow drw_globals.colorUVShadow # define colorUVShadow globalsBlock.colorUVShadow
# define screenVecs drw_globals.screenVecs # define screenVecs globalsBlock.screenVecs
# define sizeViewport drw_globals.sizeViewport # define sizeViewport globalsBlock.sizeViewport.xy
# define sizePixel drw_globals.sizePixel # define sizeViewportInv globalsBlock.sizeViewport.zw
# define pixelFac drw_globals.pixelFac # define sizePixel globalsBlock.sizePixel
# define sizeObjectCenter drw_globals.sizeObjectCenter # define pixelFac globalsBlock.pixelFac
# define sizeLightCenter drw_globals.sizeLightCenter # define sizeObjectCenter globalsBlock.sizeObjectCenter
# define sizeLightCircle drw_globals.sizeLightCircle # define sizeLightCenter globalsBlock.sizeLightCenter
# define sizeLightCircleShadow drw_globals.sizeLightCircleShadow # define sizeLightCircle globalsBlock.sizeLightCircle
# define sizeVertex drw_globals.sizeVertex # define sizeLightCircleShadow globalsBlock.sizeLightCircleShadow
# define sizeEdge drw_globals.sizeEdge # define sizeVertex globalsBlock.sizeVertex
# define sizeEdgeFix drw_globals.sizeEdgeFix # define sizeEdge globalsBlock.sizeEdge
# define sizeFaceDot drw_globals.sizeFaceDot # define sizeEdgeFix globalsBlock.sizeEdgeFix
# define sizeChecker drw_globals.sizeChecker # define sizeFaceDot globalsBlock.sizeFaceDot
# define sizeVertexGpencil drw_globals.sizeVertexGpencil # define sizeChecker globalsBlock.sizeChecker
# define sizeVertexGpencil globalsBlock.sizeVertexGpencil
#endif #endif
/* See: 'draw_cache_impl.h' for matching includes. */
#define VERT_GPENCIL_BEZT_HANDLE (1 << 30)
/* data[0] (1st byte flags) */
#define FACE_ACTIVE (1 << 0)
#define FACE_SELECTED (1 << 1)
#define FACE_FREESTYLE (1 << 2)
#define VERT_UV_SELECT (1 << 3)
#define VERT_UV_PINNED (1 << 4)
#define EDGE_UV_SELECT (1 << 5)
#define FACE_UV_ACTIVE (1 << 6)
#define FACE_UV_SELECT (1 << 7)
/* data[1] (2st byte flags) */
#define VERT_ACTIVE (1 << 0)
#define VERT_SELECTED (1 << 1)
#define VERT_SELECTED_BEZT_HANDLE (1 << 2)
#define EDGE_ACTIVE (1 << 3)
#define EDGE_SELECTED (1 << 4)
#define EDGE_SEAM (1 << 5)
#define EDGE_SHARP (1 << 6)
#define EDGE_FREESTYLE (1 << 7)
#define COMMON_GLOBALS_LIB

View File

@ -47,6 +47,7 @@ layout(std140) uniform viewBlock
#endif #endif
#ifdef COMMON_GLOBALS_LIB #ifdef COMMON_GLOBALS_LIB
/* TODO move to overlay engine. */
float mul_project_m4_v3_zfac(in vec3 co) float mul_project_m4_v3_zfac(in vec3 co)
{ {
return pixelFac * ((ViewProjectionMatrix[0][3] * co.x) + (ViewProjectionMatrix[1][3] * co.y) + return pixelFac * ((ViewProjectionMatrix[0][3] * co.x) + (ViewProjectionMatrix[1][3] * co.y) +

View File

@ -80,7 +80,7 @@ GPU_SHADER_CREATE_INFO(drw_clipped).define("USE_WORLD_CLIP_PLANES");
GPU_SHADER_CREATE_INFO(draw_globals) GPU_SHADER_CREATE_INFO(draw_globals)
.typedef_source("draw_common_shader_shared.h") .typedef_source("draw_common_shader_shared.h")
.uniform_buf(1, "ObjectMatrices", "drw_globals", Frequency::PASS); .uniform_buf(1, "GlobalsUboStorage", "globalsBlock", Frequency::PASS);
/** \} */ /** \} */