Skip to content

[BUG] Panon crashes semi-often with a visualizer py error #111

@KenwoodFox

Description

@KenwoodFox

OS: Manjaro (Bug also noticed on stock arch build too with same python version)

Panon crashes semi-often and throws this error in journal

Jul 10 09:59:48 Hydroxonium /home/joe/.local/share/plasma/plasmoids/panon/contents/scripts/panon/effect/build_shader_source.py[8228]: effect_arguments: ['5', '2', '0.018', '', '']
Jul 10 09:59:48 Hydroxonium /home/joe/.local/share/plasma/plasmoids/panon/contents/scripts/panon/effect/build_shader_source.py[8228]: obj : {"image_shader": "#version 130\n/*\nHSLUV-GLSL v4.2\nHSLUV is a human-friendly alternative to HSL. ( http://www.hsluv.org )\nGLSL port by William Malo ( https://github.com/williammalo )\nPut this code in your fragment shader.\n*/\n\nvec3 hsluv_intersectLineLine(vec3 line1x, vec3 line1y, vec3 line2x, vec3 line2y) {\n    return (line1y - line2y) / (line2x - line1x);\n}\n\nvec3 hsluv_distanceFromPole(vec3 pointx,vec3 pointy) {\n    return sqrt(pointx*pointx + pointy*pointy);\n}\n\nvec3 hsluv_lengthOfRayUntilIntersect(float theta, vec3 x, vec3 y) {\n    vec3 len = y / (sin(theta) - x * cos(theta));\n    if (len.r < 0.0) {len.r=1000.0;}\n    if (len.g < 0.0) {len.g=1000.0;}\n    if (len.b < 0.0) {len.b=1000.0;}\n    return len;\n}\n\nfloat hsluv_maxSafeChromaForL(float L){\n    mat3 m2 = mat3(\n         3.2409699419045214  ,-0.96924363628087983 , 0.055630079696993609,\n        -1.5373831775700935  , 1.8759675015077207  ,-0.20397695888897657 ,\n        -0.49861076029300328 , 0.041555057407175613, 1.0569715142428786  \n    );\n    float sub0 = L + 16.0;\n    float sub1 = sub0 * sub0 * sub0 * .000000641;\n    float sub2 = sub1 > 0.0088564516790356308 ? sub1 : L / 903.2962962962963;\n\n    vec3 top1   = (284517.0 * m2[0] - 94839.0  * m2[2]) * sub2;\n    vec3 bottom = (632260.0 * m2[2] - 126452.0 * m2[1]) * sub2;\n    vec3 top2   = (838422.0 * m2[2] + 769860.0 * m2[1] + 731718.0 * m2[0]) * L * sub2;\n\n    vec3 bounds0x = top1 / bottom;\n    vec3 bounds0y = top2 / bottom;\n\n    vec3 bounds1x =              top1 / (bottom+126452.0);\n    vec3 bounds1y = (top2-769860.0*L) / (bottom+126452.0);\n\n    vec3 xs0 = hsluv_intersectLineLine(bounds0x, bounds0y, -1.0/bounds0x, vec3(0.0) );\n    vec3 xs1 = hsluv_intersectLineLine(bounds1x, bounds1y, -1.0/bounds1x, vec3(0.0) );\n\n    vec3 lengths0 = hsluv_distanceFromPole( xs0, bounds0y + xs0 * bounds0x );\n    vec3 lengths1 = hsluv_distanceFromPole( xs1, bounds1y + xs1 * bounds1x );\n\n    return  min(lengths0.r,\n            min(lengths1.r,\n            min(lengths0.g,\n            min(lengths1.g,\n            min(lengths0.b,\n                lengths1.b)))));\n}\n\nfloat hsluv_maxChromaForLH(float L, float H) {\n\n    float hrad = radians(H);\n\n    mat3 m2 = mat3(\n         3.2409699419045214  ,-0.96924363628087983 , 0.055630079696993609,\n        -1.5373831775700935  , 1.8759675015077207  ,-0.20397695888897657 ,\n        -0.49861076029300328 , 0.041555057407175613, 1.0569715142428786  \n    );\n    float sub1 = pow(L + 16.0, 3.0) / 1560896.0;\n    float sub2 = sub1 > 0.0088564516790356308 ? sub1 : L / 903.2962962962963;\n\n    vec3 top1   = (284517.0 * m2[0] - 94839.0  * m2[2]) * sub2;\n    vec3 bottom = (632260.0 * m2[2] - 126452.0 * m2[1]) * sub2;\n    vec3 top2   = (838422.0 * m2[2] + 769860.0 * m2[1] + 731718.0 * m2[0]) * L * sub2;\n\n    vec3 bound0x = top1 / bottom;\n    vec3 bound0y = top2 / bottom;\n\n    vec3 bound1x =              top1 / (bottom+126452.0);\n    vec3 bound1y = (top2-769860.0*L) / (bottom+126452.0);\n\n    vec3 lengths0 = hsluv_lengthOfRayUntilIntersect(hrad, bound0x, bound0y );\n    vec3 lengths1 = hsluv_lengthOfRayUntilIntersect(hrad, bound1x, bound1y );\n\n    return  min(lengths0.r,\n            min(lengths1.r,\n            min(lengths0.g,\n            min(lengths1.g,\n            min(lengths0.b,\n                lengths1.b)))));\n}\n\nfloat hsluv_fromLinear(float c) {\n    return c <= 0.0031308 ? 12.92 * c : 1.055 * pow(c, 1.0 / 2.4) - 0.055;\n}\nvec3 hsluv_fromLinear(vec3 c) {\n    return vec3( hsluv_fromLinear(c.r), hsluv_fromLinear(c.g), hsluv_fromLinear(c.b) );\n}\n\nfloat hsluv_toLinear(float c) {\n    return c > 0.04045 ? pow((c + 0.055) / (1.0 + 0.055), 2.4) : c / 12.92;\n}\n\nvec3 hsluv_toLinear(vec3 c) {\n    return vec3( hsluv_toLinear(c.r), hsluv_toLinear(c.g), hsluv_toLinear(c.b) );\n}\n\nfloat hsluv_yToL(float Y){\n    return Y <= 0.0088564516790356308 ? Y * 903.2962962962963 : 116.0 * pow(Y, 1.0 / 3.0) - 16.0;\n}\n\nfloat hsluv_lToY(float L) {\n    return L <= 8.0 ? L / 903.2962962962963 : pow((L + 16.0) / 116.0, 3.0);\n}\n\nvec3 xyzToRgb(vec3 tuple) {\n    const mat3 m = mat3( \n        3.2409699419045214  ,-1.5373831775700935 ,-0.49861076029300328 ,\n       -0.96924363628087983 , 1.8759675015077207 , 0.041555057407175613,\n        0.055630079696993609,-0.20397695888897657, 1.0569715142428786  );\n    \n    return hsluv_fromLinear(tuple*m);\n}\n\nvec3 rgbToXyz(vec3 tuple) {\n    const mat3 m = mat3(\n        0.41239079926595948 , 0.35758433938387796, 0.18048078840183429 ,\n        0.21263900587151036 , 0.71516867876775593, 0.072192315360733715,\n        0.019330818715591851, 0.11919477979462599, 0.95053215224966058 \n    );\n    return hsluv_toLinear(tuple) * m;\n}\n\nvec3 xyzToLuv(vec3 tuple){\n    float X = tuple.x;\n    float Y = tuple.y;\n    float Z = tuple.z;\n\n    float L = hsluv_yToL(Y);\n    \n    float div = 1./dot(tuple,vec3(1,15,3)); \n\n    return vec3(\n        1.,\n        (52. * (X*div) - 2.57179),\n        (117.* (Y*div) - 6.08816)\n    ) * L;\n}\n\n\nvec3 luvToXyz(vec3 tuple) {\n    float L = tuple.x;\n\n    float U = tuple.y / (13.0 * L) + 0.19783000664283681;\n    float V = tuple.z / (13.0 * L) + 0.468319994938791;\n\n    float Y = hsluv_lToY(L);\n    float X = 2.25 * U * Y / V;\n    float Z = (3./V - 5.)*Y - (X/3.);\n\n    return vec3(X, Y, Z);\n}\n\nvec3 luvToLch(vec3 tuple) {\n    float L = tuple.x;\n    float U = tuple.y;\n    float V = tuple.z;\n\n    float C = length(tuple.yz);\n    float H = degrees(atan(V,U));\n    if (H < 0.0) {\n        H = 360.0 + H;\n    }\n    \n    return vec3(L, C, H);\n}\n\nvec3 lchToLuv(vec3 tuple) {\n    float hrad = radians(tuple.b);\n    return vec3(\n        tuple.r,\n        cos(hrad) * tuple.g,\n        sin(hrad) * tuple.g\n    );\n}\n\nvec3 hsluvToLch(vec3 tuple) {\n    tuple.g *= hsluv_maxChromaForLH(tuple.b, tuple.r) * .01;\n    return tuple.bgr;\n}\n\nvec3 lchToHsluv(vec3 tuple) {\n    tuple.g /= hsluv_maxChromaForLH(tuple.r, tuple.b) * .01;\n    return tuple.bgr;\n}\n\nvec3 hpluvToLch(vec3 tuple) {\n    tuple.g *= hsluv_maxSafeChromaForL(tuple.b) * .01;\n    return tuple.bgr;\n}\n\nvec3 lchToHpluv(vec3 tuple) {\n    tuple.g /= hsluv_maxSafeChromaForL(tuple.r) * .01;\n    return tuple.bgr;\n}\n\nvec3 lchToRgb(vec3 tuple) {\n    return xyzToRgb(luvToXyz(lchToLuv(tuple)));\n}\n\nvec3 rgbToLch(vec3 tuple) {\n    return luvToLch(xyzToLuv(rgbToXyz(tuple)));\n}\n\nvec3 hsluvToRgb(vec3 tuple) {\n    return lchToRgb(hsluvToLch(tuple));\n}\n\nvec3 rgbToHsluv(vec3 tuple) {\n    return lchToHsluv(rgbToLch(tuple));\n}\n\nvec3 hpluvToRgb(vec3 tuple) {\n    return lchToRgb(hpluvToLch(tuple));\n}\n\nvec3 rgbToHpluv(vec3 tuple) {\n    return lchToHpluv(rgbToLch(tuple));\n}\n\nvec3 luvToRgb(vec3 tuple){\n    return xyzToRgb(luvToXyz(tuple));\n}\n\n// allow vec4's\nvec4   xyzToRgb(vec4 c) {return vec4(   xyzToRgb( vec3(c.x,c.y,c.z) ), c.a);}\nvec4   rgbToXyz(vec4 c) {return vec4(   rgbToXyz( vec3(c.x,c.y,c.z) ), c.a);}\nvec4   xyzToLuv(vec4 c) {return vec4(   xyzToLuv( vec3(c.x,c.y,c.z) ), c.a);}\nvec4   luvToXyz(vec4 c) {return vec4(   luvToXyz( vec3(c.x,c.y,c.z) ), c.a);}\nvec4   luvToLch(vec4 c) {return vec4(   luvToLch( vec3(c.x,c.y,c.z) ), c.a);}\nvec4   lchToLuv(vec4 c) {return vec4(   lchToLuv( vec3(c.x,c.y,c.z) ), c.a);}\nvec4 hsluvToLch(vec4 c) {return vec4( hsluvToLch( vec3(c.x,c.y,c.z) ), c.a);}\nvec4 lchToHsluv(vec4 c) {return vec4( lchToHsluv( vec3(c.x,c.y,c.z) ), c.a);}\nvec4 hpluvToLch(vec4 c) {return vec4( hpluvToLch( vec3(c.x,c.y,c.z) ), c.a);}\nvec4 lchToHpluv(vec4 c) {return vec4( lchToHpluv( vec3(c.x,c.y,c.z) ), c.a);}\nvec4   lchToRgb(vec4 c) {return vec4(   lchToRgb( vec3(c.x,c.y,c.z) ), c.a);}\nvec4   rgbToLch(vec4 c) {return vec4(   rgbToLch( vec3(c.x,c.y,c.z) ), c.a);}\nvec4 hsluvToRgb(vec4 c) {return vec4( hsluvToRgb( vec3(c.x,c.y,c.z) ), c.a);}\nvec4 rgbToHsluv(vec4 c) {return vec4( rgbToHsluv( vec3(c.x,c.y,c.z) ), c.a);}\nvec4 hpluvToRgb(vec4 c) {return vec4( hpluvToRgb( vec3(c.x,c.y,c.z) ), c.a);}\nvec4 rgbToHpluv(vec4 c) {return vec4( rgbToHpluv( vec3(c.x,c.y,c.z) ), c.a);}\nvec4   luvToRgb(vec4 c) {return vec4(   luvToRgb( vec3(c.x,c.y,c.z) ), c.a);}\n// allow 3 floats\nvec3   xyzToRgb(float x, float y, float z) {return   xyzToRgb( vec3(x,y,z) );}\nvec3   rgbToXyz(float x, float y, float z) {return   rgbToXyz( vec3(x,y,z) );}\nvec3   xyzToLuv(float x, float y, float z) {return   xyzToLuv( vec3(x,y,z) );}\nvec3   luvToXyz(float x, float y, float z) {return   luvToXyz( vec3(x,y,z) );}\nvec3   luvToLch(float x, float y, float z) {return   luvToLch( vec3(x,y,z) );}\nvec3   lchToLuv(float x, float y, float z) {return   lchToLuv( vec3(x,y,z) );}\nvec3 hsluvToLch(float x, float y, float z) {return hsluvToLch( vec3(x,y,z) );}\nvec3 lchToHsluv(float x, float y, float z) {return lchToHsluv( vec3(x,y,z) );}\nvec3 hpluvToLch(float x, float y, float z) {return hpluvToLch( vec3(x,y,z) );}\nvec3 lchToHpluv(float x, float y, float z) {return lchToHpluv( vec3(x,y,z) );}\nvec3   lchToRgb(float x, float y, float z) {return   lchToRgb( vec3(x,y,z) );}\nvec3   rgbToLch(float x, float y, float z) {return   rgbToLch( vec3(x,y,z) );}\nvec3 hsluvToRgb(float x, float y, float z) {return hsluvToRgb( vec3(x,y,z) );}\nvec3 rgbToHsluv(float x, float y, float z) {return rgbToHsluv( vec3(x,y,z) );}\nvec3 hpluvToRgb(float x, float y, float z) {return hpluvToRgb( vec3(x,y,z) );}\nvec3 rgbToHpluv(float x, float y, float z) {return rgbToHpluv( vec3(x,y,z) );}\nvec3   luvToRgb(float x, float y, float z) {return   luvToRgb( vec3(x,y,z) );}\n// allow 4 floats\nvec4   xyzToRgb(float x, float y, float z, float a) {return   xyzToRgb( vec4(x,y,z,a) );}\nvec4   rgbToXyz(float x, float y, float z, float a) {return   rgbToXyz( vec4(x,y,z,a) );}\nvec4   xyzToLuv(float x, float y, float z, float a) {return   xyzToLuv( vec4(x,y,z,a) );}\nvec4   luvToXyz(float x, float y, float z, float a) {return   luvToXyz( vec4(x,y,z,a) );}\nvec4   luvToLch(float x, float y, float z, float a) {return   luvToLch( vec4(x,y,z,a) );}\nvec4   lchToLuv(float x, float y, float z, float a) {return   lchToLuv( vec4(x,y,z,a) );}\nvec4 hsluvToLch(float x, float y, float z, float a) {return hsluvToLch( vec4(x,y,z,a) );}\nvec4 lchToHsluv(float x, float y, float z, float a) {return lchToHsluv( vec4(x,y,z,a) );}\nvec4 hpluvToLch(float x, float y, float z, float a) {return hpluvToLch( vec4(x,y,z,a) );}\nvec4 lchToHpluv(float x, float y, float z, float a) {return lchToHpluv( vec4(x,y,z,a) );}\nvec4   lchToRgb(float x, float y, float z, float a) {return   lchToRgb( vec4(x,y,z,a) );}\nvec4   rgbToLch(float x, float y, float z, float a) {return   rgbToLch( vec4(x,y,z,a) );}\nvec4 hsluvToRgb(float x, float y, float z, float a) {return hsluvToRgb( vec4(x,y,z,a) );}\nvec4 rgbToHslul(float x, float y, float z, float a) {return rgbToHsluv( vec4(x,y,z,a) );}\nvec4 hpluvToRgb(float x, float y, float z, float a) {return hpluvToRgb( vec4(x,y,z,a) );}\nvec4 rgbToHpluv(float x, float y, float z, float a) {return rgbToHpluv( vec4(x,y,z,a) );}\nvec4   luvToRgb(float x, float y, float z, float a) {return   luvToRgb( vec4(x,y,z,a) );}\n\n/*\nEND HSLUV-GLSL\n*/// vim: set ft=glsl:\nuniform bool colorSpaceHSL;\nuniform bool colorSpaceHSLuv;\nuniform int hueFrom;\nuniform int hueTo;\nuniform int saturation;\nuniform int lightness;\n\n\n\nvec3 hsv2rgb(vec3 c) {\n    vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n    vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n    return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\nvec3 getRGB(float x) {\n    if(colorSpaceHSL) {\n        return hsv2rgb(vec3(x*(hueTo-hueFrom)/360.0+hueFrom/360.0,saturation/100.0,lightness/100.0));\n    } else if(colorSpaceHSLuv) {\n        return hsluvToRgb(vec3(x*(hueTo-hueFrom)+hueFrom,saturation,lightness));\n    }\n}\n// vim: set ft=glsl:\nuniform vec3      iResolution;           // viewport resolution (in pixels)\nuniform float     iTime;                 // shader playback time (in seconds)\nuniform float     iTimeDelta;            // render time (in seconds)\nuniform float     iBeat;                // Is this frame a beat? (provided by aubio)\nuniform int       iFrame;                // shader playback frame\n//uniform float     iChannelTime[4];       // channel playback time (in seconds)\n#define iChannelTime (float[4](iTime,iTime,iTime,iTime))\nuniform vec3      iChannelResolution0; // channel resolution (in pixels)\nuniform vec3      iChannelResolution1; // channel resolution (in pixels)\nuniform vec3      iChannelResolution2; // channel resolution (in pixels)\nuniform vec3      iChannelResolution3; // channel resolution (in pixels)\n#define iChannelResolution (vec3[4](iChannelResolution0,iChannelResolution1,iChannelResolution2,iChannelResolution3))\nuniform vec4      iMouse;                // mouse pixel coords. xy: current (if MLB down), zw: click\nuniform sampler2D iChannel0;          // input channel. XX = 2D/Cube\nuniform sampler2D iChannel1;          // input channel. XX = 2D/Cube\nuniform sampler2D iChannel2;          // input channel. XX = 2D/Cube\nuniform sampler2D iChannel3;          // input channel. XX = 2D/Cube\n//uniform vec4      iDate;                 // (year, month, day, time in seconds)\n#define iDate vec4(0,0,0,0)\n//uniform float     iSampleRate;           // sound sample rate (i.e., 44100)\n#define iSampleRate 44100\n\n\n\n#define pixel_fill int(5)\n#define pixel_empty int(2)\n\nvoid mainImage( out vec4 fragColor, in vec2 fragCoord ) {\n    int pixel_x= int( fragCoord.x);\n    int pixel_y= int( fragCoord.y);\n\n    float h=fragCoord.y/iResolution.y;\n\n\n    fragColor=vec4(0,0,0,0);\n    if(pixel_x%(pixel_fill+pixel_empty)<pixel_fill) {\n        float x=pixel_x/(pixel_fill+pixel_empty) /1.0/iResolution.x*(pixel_fill+pixel_empty) ;\n        vec3 rgb=getRGB(x);\n\n        vec4 sample1= texture(iChannel1, vec2(x,0)) ;\n        float max_=sample1.g*.5+sample1.r*.5;\n        if(h<=max_)\n            fragColor=vec4(rgb*1.,1.);\n\n        vec4 sample2= texelFetch(iChannel2,ivec2(x*iResolution.x,0) , 0);\n        int max_2=int(iResolution.y*(sample2.g+sample2.r)/2);\n        if((max_2-1)<pixel_y && pixel_y <max_2+1)\n            fragColor=vec4(rgb*1.,1.);\n    }\n}\n// vim: set ft=glsl:\nout vec4 out_Color;\nin mediump vec2 qt_TexCoord0;\n// gravity property: North (1), West (4), East (3), South (2)\nuniform int coord_gravity;\nuniform float qt_Opacity;\nuniform bool coord_inversion;\n\nvec2 getCoord() {\n    switch(coord_gravity) {\n    case 1:\n        return vec2(coord_inversion?(1-qt_TexCoord0.x): qt_TexCoord0.x,1-qt_TexCoord0.y);\n    case 2:\n        return vec2(coord_inversion?(1-qt_TexCoord0.x):qt_TexCoord0.x,qt_TexCoord0.y);\n    case 3:\n        return vec2(coord_inversion?qt_TexCoord0.y:(1-qt_TexCoord0.y),1-qt_TexCoord0.x);\n    case 4:\n        return vec2(coord_inversion?qt_TexCoord0.y:(1-qt_TexCoord0.y),qt_TexCoord0.x);\n    }\n}\n\nvoid main() {\n    mainImage( out_Color,floor(getCoord()*iResolution.xy) );\n}\n", "buffer_shader": "#version 130\n// vim: set ft=glsl:\nuniform vec3      iResolution;           // viewport resolution (in pixels)\nuniform float     iTime;                 // shader playback time (in seconds)\nuniform float     iTimeDelta;            // render time (in seconds)\nuniform float     iBeat;                // Is this frame a beat? (provided by aubio)\nuniform int       iFrame;                // shader playback frame\n//uniform float     iChannelTime[4];       // channel playback time (in seconds)\n#define iChannelTime (float[4](iTime,iTime,iTime,iTime))\nuniform vec3      iChannelResolution0; // channel resolution (in pixels)\nuniform vec3      iChannelResolution1; // channel resolution (in pixels)\nuniform vec3      iChannelResolution2; // channel resolution (in pixels)\nuniform vec3      iChannelResolution3; // channel resolution (in pixels)\n#define iChannelResolution (vec3[4](iChannelResolution0,iChannelResolution1,iChannelResolution2,iChannelResolution3))\nuniform vec4      iMouse;                // mouse pixel coords. xy: current (if MLB down), zw: click\nuniform sampler2D iChannel0;          // input channel. XX = 2D/Cube\nuniform sampler2D iChannel1;          // input channel. XX = 2D/Cube\nuniform sampler2D iChannel2;          // input channel. XX = 2D/Cube\nuniform sampler2D iChannel3;          // input channel. XX = 2D/Cube\n//uniform vec4      iDate;                 // (year, month, day, time in seconds)\n#define iDate vec4(0,0,0,0)\n//uniform float     iSampleRate;           // sound sample rate (i.e., 44100)\n#define iSampleRate 44100\n\n\n\n#define decay float(0.018)\n\nvoid mainImage( out vec4 fragColor, in vec2 fragCoord ) {\n    float x=fragCoord.x/iResolution.x;\n    vec4 newdata= texture(iChannel1, vec2(x,0));\n    vec4 olddata= texelFetch(iChannel2,ivec2(fragCoord.x,0) , 0);\n    fragColor=max(newdata,olddata-decay);\n}\n// vim: set ft=glsl:\nout vec4 out_Color;\nin mediump vec2 qt_TexCoord0;\n\nvec2 getCoord() {\n    return qt_TexCoord0;\n}\n\nvoid main() {\n    mainImage( out_Color,floor(getCoord()*iResolution.xy) );\n}\n", "texture": "", "wave_buffer": "#version 130\n\nout vec4 out_Color;\nin mediump vec2 qt_TexCoord0;\n\nuniform sampler2D newWave; \nuniform sampler2D waveBuffer; \n\nuniform int     bufferSize;\nuniform int     newWaveSize;\n\nvoid main() {\n    float x=qt_TexCoord0.x*bufferSize;\n    float y=qt_TexCoord0.y*2;\n    \n    if(y<2){\n        if(x>= bufferSize-newWaveSize ){\n            out_Color=texelFetch(newWave,ivec2(x-bufferSize+newWaveSize,y),0);\n        }else{\n            out_Color=texelFetch(waveBuffer,ivec2(x+newWaveSize,y),0);\n        }\n    }\n}\n", "gldft": "#version 130\n\nout vec4 out_Color;\nin mediump vec2 qt_TexCoord0;\n\nuniform sampler2D waveBuffer; \n\nuniform int     dftSize;\nuniform int     bufferSize;\n\n#define PI 3.14159265359\n\nstruct Data{float r;float g;};\n\nData fun(float k){\n\n    int N=bufferSize;\n        float vrc=0.0,vrs=0.0,vgc=0.0,vgs=0.0;\n        for(int m=0;m<N;m++){\n            vec4 s0=texelFetch(waveBuffer,ivec2(m,0),0);\n            vec4 s1=texelFetch(waveBuffer,ivec2(m,1),0);\n            float sr=s0.r/256.0+s1.r;\n            float sg=s0.g/256.0+s1.g;\n            sr=sr<0.5?sr:sr-1;\n            sg=sg<0.5?sg:sg-1;\n            vrc+=sr*cos(-2.0*PI*m*k/N);\n            vrs+=sr*sin(-2.0*PI*m*k/N);\n            vgc+=sg*cos(-2.0*PI*m*k/N);\n            vgs+=sg*sin(-2.0*PI*m*k/N);\n        }\n    return Data(length(vec2(vrc,vrs)),length(vec2(vgc,vgs)));\n}\n\nvoid main() {\n    float x=qt_TexCoord0.x*dftSize;\n    if(x<dftSize ){\n        out_Color.a=1;\n        Data data=fun(x);\n        out_Color.r=data.r*0.05; ///fun(0);\n        out_Color.g=data.g*0.05; ///fun(0);\n    }\n}\n//l=np.dot(d[:,0],np.cos( np.outer( -2*np.pi*m/n,k)))\n", "enable_iChannel0": false, "enable_iChannel1": true}

Let me know if any more data would be helpful!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions