X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fmetaball-refrac%2Fmetaball-refrac-example.cpp;h=a25e5c350a6969a887e5472e597e77c6e92f02f9;hb=422d91612187d1a575b3ed00f7d33cb2d19e02ed;hp=1d1c0466bc09fbeb8e167044656d68afb21ea11b;hpb=39b38842b9558a3615accb8808888d369735428a;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/metaball-refrac/metaball-refrac-example.cpp b/examples/metaball-refrac/metaball-refrac-example.cpp index 1d1c046..a25e5c3 100644 --- a/examples/metaball-refrac/metaball-refrac-example.cpp +++ b/examples/metaball-refrac/metaball-refrac-example.cpp @@ -27,6 +27,10 @@ // INTERNAL INCLUDES #include "shared/utility.h" // DemoHelper::LoadTexture +#include "generated/metaball-vert.h" +#include "generated/metaball-frag.h" +#include "generated/metaball-refraction-frag.h" +#include "generated/fragment-frag.h" using namespace Dali; @@ -39,117 +43,6 @@ const float GRAVITY_Y(-0.09); // number of metaballs constexpr uint32_t METABALL_NUMBER = 6; -// clang-format off - -/** - * Vertex shader for metaballs - */ -const char* const METABALL_VERTEX_SHADER = DALI_COMPOSE_SHADER ( - attribute mediump vec2 aPosition;\n - attribute mediump vec2 aTexture;\n - uniform mediump mat4 uMvpMatrix;\n - uniform mediump vec3 uSize;\n - uniform lowp vec4 uColor;\n - varying mediump vec2 vTexCoord;\n - - void main()\n - {\n - mediump vec4 vertexPosition = vec4(aPosition.x, aPosition.y, 0.0, 1.0);\n - vertexPosition = uMvpMatrix * vertexPosition;\n - gl_Position = vertexPosition;\n - vTexCoord = aTexture;\n - }\n -); - -/** - * Fragment shader for metaballs - */ -const char* const METABALL_FRAG_SHADER = DALI_COMPOSE_SHADER ( - precision mediump float;\n - varying vec2 vTexCoord;\n - uniform vec2 uPositionMetaball;\n - uniform vec2 uPositionVar;\n - uniform vec2 uGravityVector;\n - uniform float uRadius;\n - uniform float uRadiusVar;\n - uniform float uAspect;\n - void main()\n - {\n - vec2 adjustedCoords = vTexCoord * 2.0 - 1.0;\n - vec2 finalMetaballPosition = uPositionMetaball + uGravityVector + uPositionVar;\n - - float distance = (adjustedCoords.x - finalMetaballPosition.x) * (adjustedCoords.x - finalMetaballPosition.x) + - (adjustedCoords.y - finalMetaballPosition.y) * (adjustedCoords.y - finalMetaballPosition.y);\n - float finalRadius = uRadius + uRadiusVar;\n - float color = finalRadius / sqrt( distance );\n - vec2 bordercolor = vec2(0.0,0.0);\n - if (vTexCoord.x < 0.1)\n - {\n - bordercolor.x = (0.1 - vTexCoord.x) * 0.8;\n - }\n - if (vTexCoord.x > 0.9)\n - {\n - bordercolor.x = (vTexCoord.x - 0.9) * 0.8;\n - }\n - if (vTexCoord.y < 0.1)\n - {\n - bordercolor.y = (0.1 - vTexCoord.y) * 0.8;\n - }\n - if (vTexCoord.y > (0.9 * uAspect))\n - {\n - bordercolor.y = (vTexCoord.y - (0.9 * uAspect)) * 0.8;\n - }\n - float border = (bordercolor.x + bordercolor.y) * 0.5;\n - gl_FragColor = vec4(color + border,color + border,color + border,1.0);\n - }\n -); - -/** - * Fragment shader code for metaball and background composition with refraction effect - */ -const char* const REFRACTION_FRAG_SHADER = DALI_COMPOSE_SHADER ( - precision mediump float;\n - varying vec2 vTexCoord;\n - uniform sampler2D sTexture;\n - uniform sampler2D sEffect;\n - void main()\n - {\n - vec4 metaColor = texture2D(sEffect, vTexCoord);\n - vec2 zoomCoords;\n - float bright = 1.0;\n - if (metaColor.r > 0.85)\n - {\n - zoomCoords = ((vTexCoord - 0.5) * 0.95) + 0.5;\n - }\n - else if (metaColor.r > 0.78)\n - {\n - float interpolation = mix(0.95, 1.05, (0.85 - metaColor.r) * 50.0);\n - zoomCoords = ((vTexCoord - 0.5) * interpolation) + 0.5;\n - bright = 1.2;\n - }\n - else\n - {\n - zoomCoords = vTexCoord;\n - }\n - - gl_FragColor = texture2D(sTexture, zoomCoords) * bright;\n - }\n - ); - -/** - * Fragment shader code when there's no effect - */ -const char* const FRAG_SHADER = DALI_COMPOSE_SHADER ( - precision mediump float;\n - varying vec2 vTexCoord;\n - uniform sampler2D sTexture;\n - void main()\n - {\n - gl_FragColor = texture2D(sTexture, vTexCoord);\n - }\n -); -// clang-format on - /** * Metadata for each ball */ @@ -405,7 +298,7 @@ void MetaballRefracController::CreateMetaballActors() const float aspect = mScreenSize.y / mScreenSize.x; // Create the renderer for the metaballs - Shader shader = Shader::New(METABALL_VERTEX_SHADER, METABALL_FRAG_SHADER, Shader::Hint::MODIFIES_GEOMETRY); + Shader shader = Shader::New(SHADER_METABALL_VERT, SHADER_METABALL_FRAG, Shader::Hint::MODIFIES_GEOMETRY); Geometry metaballGeometry = CreateGeometry(); Renderer renderer = Renderer::New(metaballGeometry, shader); renderer.SetProperty(Renderer::Property::BLEND_MODE, BlendMode::ON); @@ -471,7 +364,7 @@ void MetaballRefracController::CreateMetaballImage() void MetaballRefracController::CreateComposition() { // Create Refraction shader and renderer - mShaderRefraction = Shader::New(METABALL_VERTEX_SHADER, REFRACTION_FRAG_SHADER); + mShaderRefraction = Shader::New(SHADER_METABALL_VERT, SHADER_METABALL_REFRACTION_FRAG); // Create new texture set mTextureSetRefraction = TextureSet::New(); @@ -479,7 +372,7 @@ void MetaballRefracController::CreateComposition() mTextureSetRefraction.SetTexture(1u, mMetaballFBO.GetColorTexture()); // Create normal shader - mShaderNormal = Shader::New(METABALL_VERTEX_SHADER, FRAG_SHADER); + mShaderNormal = Shader::New(SHADER_METABALL_VERT, SHADER_FRAGMENT_FRAG); // Create new texture set mTextureSetNormal = TextureSet::New();