From 32fc79bc399822f2fbb79e4172776112dbb07579 Mon Sep 17 00:00:00 2001 From: "Eunki, Hong" Date: Thu, 29 Feb 2024 14:25:04 +0900 Subject: [PATCH] ImageVisualShader debug script make to add custom attribute / varying / uniform Let we allow to set some extra uniform and attribute , varying if user need to debug. Change-Id: I0c98358fe22e6678fcfa352d33c61308597bcfe0 Signed-off-by: Eunki, Hong --- .../src/dali-toolkit/utc-Dali-ImageVisual.cpp | 6 +- .../graphics/shaders/image-visual-shader.frag | 7 ++ .../graphics/shaders/image-visual-shader.vert | 24 ++++ .../internal/visuals/image-visual-shader-debug.cpp | 138 +++++++++++++++------ .../internal/visuals/image-visual-shader-debug.h | 9 +- .../visuals/image-visual-shader-factory.cpp | 2 +- .../styles/debug-image-visual-shader-script.json | 31 +++++ 7 files changed, 174 insertions(+), 43 deletions(-) diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp index 63222a0..0bd455b 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -81,7 +81,11 @@ constexpr auto DALI_DEBUG_IMAGE_VISUAL_SHADER_SCRIPT_FILE_NAME_ENV = "DALI_DEBUG const char* VALID_DEBUG_SHADER_SCRIPT = "{\n" + " \"version\": \"1.0.0\",\n" " \"maximumColorRate\": 0.5,\n" + " \"extraVaryings\": [\"mediump vec3 vDebug;\"],\n" + " \"extraUniforms\": \"mediump float uDebug;\",\n" + " \"applyVaryingsCode\": \"vDebug = gl_Position.xyz / gl_Position.w;\",\n" " \"redChannelCodes\":\n" " {\n" " \"triggerCode\":[\"return\",\" false;\"],\n" diff --git a/dali-toolkit/internal/graphics/shaders/image-visual-shader.frag b/dali-toolkit/internal/graphics/shaders/image-visual-shader.frag index fda1465..bf9f787 100644 --- a/dali-toolkit/internal/graphics/shaders/image-visual-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/image-visual-shader.frag @@ -8,6 +8,10 @@ INPUT highp float vAliasMargin; INPUT highp vec4 vCornerRadius; #endif #endif +#ifdef IS_REQUIRED_DEBUG_VISUAL_SHADER +#define DEBUG_EXTRA_VARYINGS +DEBUG_EXTRA_VARYINGS +#endif uniform sampler2D sTexture; #if defined(IS_REQUIRED_YUV_TO_RGB) || defined(IS_REQUIRED_UNIFIED_YUV_AND_RGB) @@ -297,6 +301,9 @@ const bool ATLAS_CUSTOM_WARP_BOOL = false; #define DEBUG_RATIO_RED_CODE #define DEBUG_RATIO_GREEN_CODE #define DEBUG_RATIO_BLUE_CODE +#define DEBUG_EXTRA_UNIFORMS + +DEBUG_EXTRA_UNIFORMS const mediump float gMinDebugColorRate = MINIMUM_DEBUG_COLOR_RATE; const mediump float gMaxDebugColorRate = MAXIMUM_DEBUG_COLOR_RATE; diff --git a/dali-toolkit/internal/graphics/shaders/image-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/image-visual-shader.vert index 7e5f164..187b6dd 100644 --- a/dali-toolkit/internal/graphics/shaders/image-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/image-visual-shader.vert @@ -10,6 +10,14 @@ OUTPUT highp vec4 vCornerRadius; #endif #endif +#ifdef IS_REQUIRED_DEBUG_VISUAL_SHADER +#define DEBUG_EXTRA_ATTRIBUTES +#define DEBUG_EXTRA_VARYINGS + +DEBUG_EXTRA_ATTRIBUTES +DEBUG_EXTRA_VARYINGS +#endif + uniform highp mat4 uMvpMatrix; uniform highp vec3 uSize; uniform highp vec4 pixelArea; @@ -119,7 +127,23 @@ vec4 ComputeVertexPosition() return vec4(vPosition + anchorPoint * visualSize + visualOffset + origin * uSize.xy, 0.0, 1.0); } +#ifdef IS_REQUIRED_DEBUG_VISUAL_SHADER +// These lines in the shader may be replaced with actual definitions by the debug-image-visual-shader-script.json. +#define DEBUG_APPLY_VARYING_CODE +#define DEBUG_EXTRA_UNIFORMS + +DEBUG_EXTRA_UNIFORMS + +void ApplyDebugVarying() +{ + DEBUG_APPLY_VARYING_CODE +} +#endif void main() { gl_Position = uMvpMatrix * ComputeVertexPosition(); + +#ifdef IS_REQUIRED_DEBUG_VISUAL_SHADER + ApplyDebugVarying(); +#endif } diff --git a/dali-toolkit/internal/visuals/image-visual-shader-debug.cpp b/dali-toolkit/internal/visuals/image-visual-shader-debug.cpp index 776b42b..bc2f930 100644 --- a/dali-toolkit/internal/visuals/image-visual-shader-debug.cpp +++ b/dali-toolkit/internal/visuals/image-visual-shader-debug.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ // EXTERNAL INCLUDES #include #include ///< for load json file. +#include #include ///< for redefine shader #include @@ -106,17 +107,31 @@ bool LoadJsonScript(std::string& stringOut) return false; } // Json keywords what we will get information from json. +constexpr std::string_view DEBUG_SCRIPT_VERSION_JSON_KEY = "version"; + +constexpr std::string_view DEBUG_EXTRA_ATTRIBUTES_JSON_KEY = "extraAttributes"; +constexpr std::string_view DEBUG_EXTRA_VARYINGS_JSON_KEY = "extraVaryings"; +constexpr std::string_view DEBUG_EXTRA_UNIFORMS_JSON_KEY = "extraUniforms"; +constexpr std::string_view DEBUG_APPLY_VARYINGS_CODE_JSON_KEY = "applyVaryingsCode"; + constexpr std::string_view MINIMUM_DEBUG_COLOR_RATE_JSON_KEY = "minimumColorRate"; constexpr std::string_view MAXIMUM_DEBUG_COLOR_RATE_JSON_KEY = "maximumColorRate"; + constexpr std::string_view DEBUG_RED_CHANNEL_CODE_JSON_KEY = "redChannelCodes"; constexpr std::string_view DEBUG_GREEN_CHANNEL_CODE_JSON_KEY = "greenChannelCodes"; constexpr std::string_view DEBUG_BLUE_CHANNEL_CODE_JSON_KEY = "blueChannelCodes"; constexpr std::string_view DEBUG_TRIGGER_CODE_JSON_KEY = "triggerCode"; constexpr std::string_view DEBUG_RATIO_CODE_JSON_KEY = "ratioCode"; -// Macro keywords what we will replace at fragment shader. +// Macro keywords what we will replace at vertex/fragment shader. +constexpr std::string_view DEBUG_EXTRA_ATTRIBUTES_MACRO_KEY = "DEBUG_EXTRA_ATTRIBUTES"; +constexpr std::string_view DEBUG_EXTRA_VARYINGS_MACRO_KEY = "DEBUG_EXTRA_VARYINGS"; +constexpr std::string_view DEBUG_EXTRA_UNIFORMS_MACRO_KEY = "DEBUG_EXTRA_UNIFORMS"; +constexpr std::string_view DEBUG_APPLY_VARYINGS_CODE_MACRO_KEY = "DEBUG_APPLY_VARYING_CODE"; + constexpr std::string_view MINIMUM_DEBUG_COLOR_RATE_MACRO_KEY = "MINIMUM_DEBUG_COLOR_RATE"; constexpr std::string_view MAXIMUM_DEBUG_COLOR_RATE_MACRO_KEY = "MAXIMUM_DEBUG_COLOR_RATE"; + constexpr std::string_view DEBUG_TRIGGER_RED_CODE_MACRO_KEY = "DEBUG_TRIGGER_RED_CODE"; constexpr std::string_view DEBUG_TRIGGER_GREEN_CODE_MACRO_KEY = "DEBUG_TRIGGER_GREEN_CODE"; constexpr std::string_view DEBUG_TRIGGER_BLUE_CODE_MACRO_KEY = "DEBUG_TRIGGER_BLUE_CODE"; @@ -125,11 +140,18 @@ constexpr std::string_view DEBUG_RATIO_GREEN_CODE_MACRO_KEY = "DEBUG_RATIO_GRE constexpr std::string_view DEBUG_RATIO_BLUE_CODE_MACRO_KEY = "DEBUG_RATIO_BLUE_CODE"; // Default macro keywords when we fail to parse script. -constexpr std::string_view DEFAULT_DEBUG_COLOR_RATE_MACRO_VALUE = "0.0"; -constexpr std::string_view DEFAULT_DEBUG_TRIGGER_CODE_MACRO_VALUE = "return false;"; -constexpr std::string_view DEFAULT_DEBUG_RATIO_CODE_MACRO_VALUE = "return 0.0;"; - -bool ParseScriptInfomation(Property::Map& result) +constexpr std::string_view DEFAULT_DEBUG_COLOR_RATE_MACRO_VALUE = "0.0"; +constexpr std::string_view DEFAULT_DEBUG_TRIGGER_CODE_MACRO_VALUE = "return false;"; +constexpr std::string_view DEFAULT_DEBUG_RATIO_CODE_MACRO_VALUE = "return 0.0;"; +constexpr std::string_view DEFAULT_DEBUG_APPLY_VARYINGS_CODE_MACRO_VALUE = "return;"; + +constexpr std::string_view EMPTY_STRING = ""; +constexpr std::string_view VERTEX_SHADER_ATTRIBUTES_PREFIX = "INPUT"; +constexpr std::string_view VERTEX_SHADER_VARYINGS_PREFIX = "OUTPUT"; +constexpr std::string_view FRAGMENT_SHADER_VARYINGS_PREFIX = "INPUT"; +constexpr std::string_view UNIFORMS_PREFIX = "uniform"; + +bool ParseScriptInfomation(Property::Map& vertexResult, Property::Map& fragmentResult) { std::string stringOut; if(!LoadJsonScript(stringOut)) @@ -158,7 +180,7 @@ bool ParseScriptInfomation(Property::Map& result) return false; } - auto InsertScriptMap = [](Property::Map& result, const TreeNode* node, const std::string_view& jsonKey, const std::string_view& macroKey, const std::string_view& defaultValue) { + auto InsertScriptMap = [](Property::Map& result, const TreeNode* node, const std::string_view& jsonKey, const std::string_view& macroKey, const std::string_view& defaultValue, const std::string_view& prefixString) { std::ostringstream oss; oss.clear(); @@ -174,6 +196,10 @@ bool ParseScriptInfomation(Property::Map& result) } else if(childNode->GetType() == TreeNode::STRING) { + if(!prefixString.empty()) + { + oss << prefixString << " "; + } oss << childNode->GetString(); } else if(childNode->GetType() == TreeNode::ARRAY) @@ -192,6 +218,10 @@ bool ParseScriptInfomation(Property::Map& result) { oss << "\n"; } + if(!prefixString.empty()) + { + oss << prefixString << " "; + } oss << (*iter).second.GetString(); } } @@ -199,54 +229,80 @@ bool ParseScriptInfomation(Property::Map& result) } } - if(oss.str().empty()) + if(oss.str().empty() && !defaultValue.empty()) { oss << defaultValue; } - result.Insert(std::string(macroKey), oss.str()); + + if(!oss.str().empty()) + { + result.Insert(std::string(macroKey), oss.str()); + } }; auto InsertChannelScriptMap = [&InsertScriptMap](Property::Map& result, const TreeNode* node, const std::string_view& channelJsonKey, const std::string_view& triggerMacroKey, const std::string_view& ratioMacroKey) { const auto* channelNode = node->GetChild(channelJsonKey); - InsertScriptMap(result, channelNode, DEBUG_TRIGGER_CODE_JSON_KEY, triggerMacroKey, DEFAULT_DEBUG_TRIGGER_CODE_MACRO_VALUE); - InsertScriptMap(result, channelNode, DEBUG_RATIO_CODE_JSON_KEY, ratioMacroKey, DEFAULT_DEBUG_RATIO_CODE_MACRO_VALUE); + InsertScriptMap(result, channelNode, DEBUG_TRIGGER_CODE_JSON_KEY, triggerMacroKey, DEFAULT_DEBUG_TRIGGER_CODE_MACRO_VALUE, EMPTY_STRING); + InsertScriptMap(result, channelNode, DEBUG_RATIO_CODE_JSON_KEY, ratioMacroKey, DEFAULT_DEBUG_RATIO_CODE_MACRO_VALUE, EMPTY_STRING); }; + // Get attribute value code + InsertScriptMap(vertexResult, rootNode, DEBUG_EXTRA_ATTRIBUTES_JSON_KEY, DEBUG_EXTRA_ATTRIBUTES_MACRO_KEY, EMPTY_STRING, VERTEX_SHADER_ATTRIBUTES_PREFIX); + + // Get varying value code + InsertScriptMap(vertexResult, rootNode, DEBUG_EXTRA_VARYINGS_JSON_KEY, DEBUG_EXTRA_VARYINGS_MACRO_KEY, EMPTY_STRING, VERTEX_SHADER_VARYINGS_PREFIX); + InsertScriptMap(fragmentResult, rootNode, DEBUG_EXTRA_VARYINGS_JSON_KEY, DEBUG_EXTRA_VARYINGS_MACRO_KEY, EMPTY_STRING, FRAGMENT_SHADER_VARYINGS_PREFIX); + + // Get uniform value code + InsertScriptMap(vertexResult, rootNode, DEBUG_EXTRA_UNIFORMS_JSON_KEY, DEBUG_EXTRA_UNIFORMS_MACRO_KEY, EMPTY_STRING, UNIFORMS_PREFIX); + InsertScriptMap(fragmentResult, rootNode, DEBUG_EXTRA_UNIFORMS_JSON_KEY, DEBUG_EXTRA_UNIFORMS_MACRO_KEY, EMPTY_STRING, UNIFORMS_PREFIX); + + // Get apply varying code + InsertScriptMap(vertexResult, rootNode, DEBUG_APPLY_VARYINGS_CODE_JSON_KEY, DEBUG_APPLY_VARYINGS_CODE_MACRO_KEY, DEFAULT_DEBUG_APPLY_VARYINGS_CODE_MACRO_VALUE, EMPTY_STRING); + // Get color rate - InsertScriptMap(result, rootNode, MINIMUM_DEBUG_COLOR_RATE_JSON_KEY, MINIMUM_DEBUG_COLOR_RATE_MACRO_KEY, DEFAULT_DEBUG_COLOR_RATE_MACRO_VALUE); - InsertScriptMap(result, rootNode, MAXIMUM_DEBUG_COLOR_RATE_JSON_KEY, MAXIMUM_DEBUG_COLOR_RATE_MACRO_KEY, DEFAULT_DEBUG_COLOR_RATE_MACRO_VALUE); + InsertScriptMap(fragmentResult, rootNode, MINIMUM_DEBUG_COLOR_RATE_JSON_KEY, MINIMUM_DEBUG_COLOR_RATE_MACRO_KEY, DEFAULT_DEBUG_COLOR_RATE_MACRO_VALUE, EMPTY_STRING); + InsertScriptMap(fragmentResult, rootNode, MAXIMUM_DEBUG_COLOR_RATE_JSON_KEY, MAXIMUM_DEBUG_COLOR_RATE_MACRO_KEY, DEFAULT_DEBUG_COLOR_RATE_MACRO_VALUE, EMPTY_STRING); // Get each color ChannelCodes - InsertChannelScriptMap(result, rootNode, DEBUG_RED_CHANNEL_CODE_JSON_KEY, DEBUG_TRIGGER_RED_CODE_MACRO_KEY, DEBUG_RATIO_RED_CODE_MACRO_KEY); - InsertChannelScriptMap(result, rootNode, DEBUG_GREEN_CHANNEL_CODE_JSON_KEY, DEBUG_TRIGGER_GREEN_CODE_MACRO_KEY, DEBUG_RATIO_GREEN_CODE_MACRO_KEY); - InsertChannelScriptMap(result, rootNode, DEBUG_BLUE_CHANNEL_CODE_JSON_KEY, DEBUG_TRIGGER_BLUE_CODE_MACRO_KEY, DEBUG_RATIO_BLUE_CODE_MACRO_KEY); + InsertChannelScriptMap(fragmentResult, rootNode, DEBUG_RED_CHANNEL_CODE_JSON_KEY, DEBUG_TRIGGER_RED_CODE_MACRO_KEY, DEBUG_RATIO_RED_CODE_MACRO_KEY); + InsertChannelScriptMap(fragmentResult, rootNode, DEBUG_GREEN_CHANNEL_CODE_JSON_KEY, DEBUG_TRIGGER_GREEN_CODE_MACRO_KEY, DEBUG_RATIO_GREEN_CODE_MACRO_KEY); + InsertChannelScriptMap(fragmentResult, rootNode, DEBUG_BLUE_CHANNEL_CODE_JSON_KEY, DEBUG_TRIGGER_BLUE_CODE_MACRO_KEY, DEBUG_RATIO_BLUE_CODE_MACRO_KEY); return true; } -const Property::Map& GetScriptInfomation() +const std::vector& GetScriptInfomation() { - static Property::Map result; + static std::vector results; - if(DALI_UNLIKELY(result.Empty())) + if(DALI_UNLIKELY(results.empty())) { - if(!ParseScriptInfomation(result)) + results.resize(2); + + auto& vertexShaderResult = results[0]; + auto& fragmentShaderResult = results[1]; + + if(!ParseScriptInfomation(vertexShaderResult, fragmentShaderResult)) { // Use default script information if parse failed. - result.Clear(); - - result.Insert(std::string(MINIMUM_DEBUG_COLOR_RATE_MACRO_KEY), std::string(DEFAULT_DEBUG_COLOR_RATE_MACRO_VALUE)); - result.Insert(std::string(MAXIMUM_DEBUG_COLOR_RATE_MACRO_KEY), std::string(DEFAULT_DEBUG_COLOR_RATE_MACRO_VALUE)); - result.Insert(std::string(DEBUG_TRIGGER_RED_CODE_MACRO_KEY), std::string(DEFAULT_DEBUG_TRIGGER_CODE_MACRO_VALUE)); - result.Insert(std::string(DEBUG_TRIGGER_GREEN_CODE_MACRO_KEY), std::string(DEFAULT_DEBUG_TRIGGER_CODE_MACRO_VALUE)); - result.Insert(std::string(DEBUG_TRIGGER_BLUE_CODE_MACRO_KEY), std::string(DEFAULT_DEBUG_TRIGGER_CODE_MACRO_VALUE)); - result.Insert(std::string(DEBUG_RATIO_RED_CODE_MACRO_KEY), std::string(DEFAULT_DEBUG_RATIO_CODE_MACRO_VALUE)); - result.Insert(std::string(DEBUG_RATIO_GREEN_CODE_MACRO_KEY), std::string(DEFAULT_DEBUG_RATIO_CODE_MACRO_VALUE)); - result.Insert(std::string(DEBUG_RATIO_BLUE_CODE_MACRO_KEY), std::string(DEFAULT_DEBUG_RATIO_CODE_MACRO_VALUE)); + vertexShaderResult.Clear(); + fragmentShaderResult.Clear(); + + vertexShaderResult.Insert(std::string(DEBUG_APPLY_VARYINGS_CODE_MACRO_KEY), std::string(DEFAULT_DEBUG_APPLY_VARYINGS_CODE_MACRO_VALUE)); + + fragmentShaderResult.Insert(std::string(MINIMUM_DEBUG_COLOR_RATE_MACRO_KEY), std::string(DEFAULT_DEBUG_COLOR_RATE_MACRO_VALUE)); + fragmentShaderResult.Insert(std::string(MAXIMUM_DEBUG_COLOR_RATE_MACRO_KEY), std::string(DEFAULT_DEBUG_COLOR_RATE_MACRO_VALUE)); + fragmentShaderResult.Insert(std::string(DEBUG_TRIGGER_RED_CODE_MACRO_KEY), std::string(DEFAULT_DEBUG_TRIGGER_CODE_MACRO_VALUE)); + fragmentShaderResult.Insert(std::string(DEBUG_TRIGGER_GREEN_CODE_MACRO_KEY), std::string(DEFAULT_DEBUG_TRIGGER_CODE_MACRO_VALUE)); + fragmentShaderResult.Insert(std::string(DEBUG_TRIGGER_BLUE_CODE_MACRO_KEY), std::string(DEFAULT_DEBUG_TRIGGER_CODE_MACRO_VALUE)); + fragmentShaderResult.Insert(std::string(DEBUG_RATIO_RED_CODE_MACRO_KEY), std::string(DEFAULT_DEBUG_RATIO_CODE_MACRO_VALUE)); + fragmentShaderResult.Insert(std::string(DEBUG_RATIO_GREEN_CODE_MACRO_KEY), std::string(DEFAULT_DEBUG_RATIO_CODE_MACRO_VALUE)); + fragmentShaderResult.Insert(std::string(DEBUG_RATIO_BLUE_CODE_MACRO_KEY), std::string(DEFAULT_DEBUG_RATIO_CODE_MACRO_VALUE)); } } - return result; + return results; } void RedefineMacro(std::string& shaderCode, std::string macro, std::string value) @@ -277,14 +333,22 @@ bool DebugImageVisualShaderEnabled() return DebugImageVisualShaderEnvironmentEnabled(); } -void ApplyImageVisualShaderDebugScriptCode(std::string& fragmentShader) +void ApplyImageVisualShaderDebugScriptCode(std::string& vertexShader, std::string& fragmentShader) { - const auto& resultMap = GetScriptInfomation(); + const auto& resultMaps = GetScriptInfomation(); + + for(std::size_t i = 0u; i < resultMaps[0].Count(); ++i) + { + auto key = resultMaps[0].GetKeyAt(i); + const auto& value = resultMaps[0].GetValue(i); + + RedefineMacro(vertexShader, std::move(key.stringKey), value.Get()); + } - for(std::size_t i = 0u; i < resultMap.Count(); ++i) + for(std::size_t i = 0u; i < resultMaps[1].Count(); ++i) { - auto key = resultMap.GetKeyAt(i); - const auto& value = resultMap.GetValue(i); + auto key = resultMaps[1].GetKeyAt(i); + const auto& value = resultMaps[1].GetValue(i); RedefineMacro(fragmentShader, std::move(key.stringKey), value.Get()); } diff --git a/dali-toolkit/internal/visuals/image-visual-shader-debug.h b/dali-toolkit/internal/visuals/image-visual-shader-debug.h index 972ff56..aff6130 100644 --- a/dali-toolkit/internal/visuals/image-visual-shader-debug.h +++ b/dali-toolkit/internal/visuals/image-visual-shader-debug.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_IMAGE_VISUAL_SHADER_DEBUG_H /* - * Copyright (c) 2023 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,11 +36,12 @@ namespace ImageVisualShaderDebug bool DebugImageVisualShaderEnabled(); /** - * @brief Apply fragment shader use debug script. + * @brief Apply vertex / fragment shader use debug script. * - * @param[in, out] fragmentShader Shader code to apply debug script. + * @param[in, out] vertexShader Vertex shader code to apply debug script. + * @param[in, out] fragmentShader Fragment shader code to apply debug script. */ -void ApplyImageVisualShaderDebugScriptCode(std::string& fragmentShader); +void ApplyImageVisualShaderDebugScriptCode(std::string& vertexShader, std::string& fragmentShader); } // namespace ImageVisualShaderDebug diff --git a/dali-toolkit/internal/visuals/image-visual-shader-factory.cpp b/dali-toolkit/internal/visuals/image-visual-shader-factory.cpp index e3e8115..cef0f45 100644 --- a/dali-toolkit/internal/visuals/image-visual-shader-factory.cpp +++ b/dali-toolkit/internal/visuals/image-visual-shader-factory.cpp @@ -111,7 +111,7 @@ Shader ImageVisualShaderFactory::GetShader(VisualFactoryCache& factoryCache, Ima if(Dali::Toolkit::Internal::ImageVisualShaderDebug::DebugImageVisualShaderEnabled()) { - Dali::Toolkit::Internal::ImageVisualShaderDebug::ApplyImageVisualShaderDebugScriptCode(fragmentShader); + Dali::Toolkit::Internal::ImageVisualShaderDebug::ApplyImageVisualShaderDebugScriptCode(vertexShader, fragmentShader); } if(featureBuilder.NeedToChangeFragmentShader() == ImageVisualShaderFeature::ChangeFragmentShader::NEED_CHANGE) diff --git a/dali-toolkit/styles/debug-image-visual-shader-script.json b/dali-toolkit/styles/debug-image-visual-shader-script.json index eb53e94..2960524 100644 --- a/dali-toolkit/styles/debug-image-visual-shader-script.json +++ b/dali-toolkit/styles/debug-image-visual-shader-script.json @@ -5,10 +5,41 @@ // //****************************************************************************** { + // Version of this debug script + "version" : "1.0.0", + // Range of color rate for debug "minimumColorRate": 0.2, "maximumColorRate": "0.7", + // Extra attributes for debug + // It is list of attributes' type and name what you want to add, include semi-colon. + // For example, "extraAttributes": ["mediump float aDebug;", "highp vec3 aDebug2;"] + "extraAttributes": + [ + ], + + // Extra varyings for debug + // It is list of varyings' type and name what you want to add, include semi-colon. + // For example, "extraVaryings": ["mediump float vDebug;", "highp vec3 vDebug2;"] + "extraVaryings": + [ + ], + + // Extra uniforms for debug + // It is list of uniforms' type and name what you want to add, include semi-colon. + // For example, "extraUniforms": ["mediump float uDebug;", "highp vec3 uDebug2;"] + "extraUniforms": + [ + ], + + // Logic for varying calculation + // For example, "applyVaryingsCode" : ["vDebug = aDebug;", "vDebug2 = aDebug2 * gl_Position.xyz / gl_Position.w;"] + "applyVaryingsCode": + [ + ], + + // Logic for red. (It show if we use YUV image) // We can use macro keyword was defined or not by ~~_BOOL value. "redChannelCodes": -- 2.7.4