diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2020-05-02 14:27:13 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2020-06-02 15:16:46 +0200 |
commit | b87b3d3d43c200f22f0799ca59ab366d851b5db6 (patch) | |
tree | fb8258e0659a91934d2c77c359295da92e4221cd /src/particles/shaders/imageparticle_core.vert | |
parent | 1f0b3a54ffa2ab0dc0cdff1345980ea68d749d24 (diff) |
Make QSGMaterialRhiShader become QSGMaterialShader
After a symbiotic relationship in Qt 5.14 and 5.15, it is time for
QSGMaterialRhiShader to devour its older sibling and take its place.
This makes the direct OpenGL rendering path disfunctional. All
QSGMaterial Qt 6 TODOs are solved, the API is clean and straightforward
again: a QSGMaterial creates a QSGMaterialShader, no special flags and
options needed. (it's just that QSGMaterialShader now has a slightly
different API)
Task-number: QTBUG-79268
Task-number: QTBUG-82997
Change-Id: I545ca8d796c5535e81957c706e7832133be15b7d
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Diffstat (limited to 'src/particles/shaders/imageparticle_core.vert')
-rw-r--r-- | src/particles/shaders/imageparticle_core.vert | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/src/particles/shaders/imageparticle_core.vert b/src/particles/shaders/imageparticle_core.vert deleted file mode 100644 index cfa0d57dfd..0000000000 --- a/src/particles/shaders/imageparticle_core.vert +++ /dev/null @@ -1,141 +0,0 @@ -#version 150 core - -#if defined(DEFORM) -in vec4 vPosTex; -#else -in vec2 vPos; -#endif - -in vec4 vData; // x = time, y = lifeSpan, z = size, w = endSize -in vec4 vVec; // x,y = constant velocity, z,w = acceleration -uniform float entry; - -#if defined(COLOR) -in vec4 vColor; -#endif - -#if defined(DEFORM) -in vec4 vDeformVec; // x,y x unit vector; z,w = y unit vector -in vec3 vRotation; // x = radians of rotation, y = rotation velocity, z = bool autoRotate -#endif - -#if defined(SPRITE) -in vec3 vAnimData; // w,h(premultiplied of anim), interpolation progress -in vec4 vAnimPos; // x,y, x,y (two frames for interpolation) -#endif - -uniform mat4 qt_Matrix; -uniform float timestamp; - -#if defined(TABLE) -out vec2 tt;//y is progress if Sprite mode -uniform float sizetable[64]; -uniform float opacitytable[64]; -#endif - -#if defined(SPRITE) -out vec4 fTexS; -#elif defined(DEFORM) -out vec2 fTex; -#endif - -#if defined(COLOR) -out vec4 fColor; -#else -out float fFade; -#endif - - -void main() -{ - float t = (timestamp - vData.x) / vData.y; - if (t < 0. || t > 1.) { -#if defined(DEFORM) - gl_Position = qt_Matrix * vec4(vPosTex.x, vPosTex.y, 0., 1.); -#else - gl_PointSize = 0.; -#endif - } else { -#if defined(SPRITE) - tt.y = vAnimData.z; - - // Calculate frame location in texture - fTexS.xy = vAnimPos.xy + vPosTex.zw * vAnimData.xy; - - // Next frame is also passed, for interpolation - fTexS.zw = vAnimPos.zw + vPosTex.zw * vAnimData.xy; - -#elif defined(DEFORM) - fTex = vPosTex.zw; -#endif - float currentSize = mix(vData.z, vData.w, t * t); - float fade = 1.; - float fadeIn = min(t * 10., 1.); - float fadeOut = 1. - clamp((t - 0.75) * 4.,0., 1.); - -#if defined(TABLE) - currentSize = currentSize * sizetable[int(floor(t*64.))]; - fade = fade * opacitytable[int(floor(t*64.))]; -#endif - - if (entry == 1.) - fade = fade * fadeIn * fadeOut; - else if (entry == 2.) - currentSize = currentSize * fadeIn * fadeOut; - - if (currentSize <= 0.) { -#if defined(DEFORM) - gl_Position = qt_Matrix * vec4(vPosTex.x, vPosTex.y, 0., 1.); -#else - gl_PointSize = 0.; -#endif - } else { - if (currentSize < 3.) // Sizes too small look jittery as they move - currentSize = 3.; - - vec2 pos; -#if defined(DEFORM) - float rotation = vRotation.x + vRotation.y * t * vData.y; - if (vRotation.z == 1.0) { - vec2 curVel = vVec.zw * t * vData.y + vVec.xy; - if (length(curVel) > 0.) - rotation += atan(curVel.y, curVel.x); - } - vec2 trigCalcs = vec2(cos(rotation), sin(rotation)); - vec4 deform = vDeformVec * currentSize * (vPosTex.zzww - 0.5); - vec4 rotatedDeform = deform.xxzz * trigCalcs.xyxy; - rotatedDeform = rotatedDeform + (deform.yyww * trigCalcs.yxyx * vec4(-1.,1.,-1.,1.)); - /* The readable version: - vec2 xDeform = vDeformVec.xy * currentSize * (vTex.x-0.5); - vec2 yDeform = vDeformVec.zw * currentSize * (vTex.y-0.5); - vec2 xRotatedDeform; - xRotatedDeform.x = trigCalcs.x*xDeform.x - trigCalcs.y*xDeform.y; - xRotatedDeform.y = trigCalcs.y*xDeform.x + trigCalcs.x*xDeform.y; - vec2 yRotatedDeform; - yRotatedDeform.x = trigCalcs.x*yDeform.x - trigCalcs.y*yDeform.y; - yRotatedDeform.y = trigCalcs.y*yDeform.x + trigCalcs.x*yDeform.y; - */ - pos = vPosTex.xy - + rotatedDeform.xy - + rotatedDeform.zw - + vVec.xy * t * vData.y // apply velocity - + 0.5 * vVec.zw * pow(t * vData.y, 2.); // apply acceleration -#else - pos = vPos - + vVec.xy * t * vData.y // apply velocity vector.. - + 0.5 * vVec.zw * pow(t * vData.y, 2.); - gl_PointSize = currentSize; -#endif - gl_Position = qt_Matrix * vec4(pos.x, pos.y, 0, 1); - -#if defined(COLOR) - fColor = vColor * fade; -#else - fFade = fade; -#endif -#if defined(TABLE) - tt.x = t; -#endif - } - } -} |