| @@ -135,7 +135,7 @@ public: | |||
| f64cmplx oldcenter = m_center; | |||
| double oldradius = m_radius; | |||
| #ifdef __CELLOS_LV2__ | |||
| m_radius *= pow(2.0, -deltams * 0.00015); | |||
| m_radius *= pow(2.0, -deltams * 0.0005); | |||
| m_center = f64cmplx(0.001643721971153, 0.822467633298876); | |||
| #else | |||
| double zoom = pow(2.0, (buttons[0] ? -deltams : deltams) * 0.0025); | |||
| @@ -314,7 +314,7 @@ public: | |||
| /* Slightly shift our pixel so that it does not lie at | |||
| * an exact texel boundary. This would lead to visual | |||
| * artifacts. */ | |||
| "coord -= 0.1 * in_PixelDelta.x;" | |||
| " coord -= 0.1 * in_PixelDelta.xy;" | |||
| /* Get a pixel from each slice */ | |||
| " vec4 p0 = texture2D(in_Texture, nearest0(coord).xy);" | |||
| " vec4 p1 = texture2D(in_Texture, nearest1(coord).xy);" | |||
| @@ -332,19 +332,50 @@ public: | |||
| " out_Position = in_Position;" | |||
| "}", | |||
| "void main(float4 in_FragCoord : WPOS," | |||
| " float2 in_TexCoord : TEXCOORD0," | |||
| "float3 nearest0(float2 p, float4 in_PixelDelta) {" | |||
| " float2 q = p + 0.5 * in_PixelDelta.xy;" | |||
| " q -= fmod(q, 2.0 * in_PixelDelta.xy);" | |||
| " q += 0.5 * in_PixelDelta.xy;" | |||
| " return float3(q * float2(1.0, 0.25)," | |||
| " length(q - p));" | |||
| "}" | |||
| "" | |||
| "float3 nearest1(float2 p, float4 in_PixelDelta) {" | |||
| " float2 q = p - 0.5 * in_PixelDelta.xy;" | |||
| " q -= fmod(q, 2.0 * in_PixelDelta.xy);" | |||
| " q += 1.5 * in_PixelDelta.xy;" | |||
| " return float3(q * float2(1.0, 0.25) + float2(0.0, 0.25)," | |||
| " length(q - p));" | |||
| "}" | |||
| "" | |||
| "float3 nearest2(float2 p, float4 in_PixelDelta) {" | |||
| " float2 q = p + float2(0.5, -0.5) * in_PixelDelta.xy;" | |||
| " q -= fmod(q, 2.0 * in_PixelDelta.xy);" | |||
| " q += float2(0.5, 1.5) * in_PixelDelta.xy;" | |||
| " return float3(q * float2(1.0, 0.25) + float2(0.0, 0.50)," | |||
| " length(q - p));" | |||
| "}" | |||
| "" | |||
| "float3 nearest3(float2 p, float4 in_PixelDelta) {" | |||
| " float2 q = p + float2(-0.5, 0.5) * in_PixelDelta.xy;" | |||
| " q -= fmod(q, 2.0 * in_PixelDelta.xy);" | |||
| " q += float2(1.5, 0.5) * in_PixelDelta.xy;" | |||
| " return float3(q * float2(1.0, 0.25) + float2(0.0, 0.75)," | |||
| " length(q - p));" | |||
| "}" | |||
| "" | |||
| "void main(float2 in_TexCoord : TEXCOORD0," | |||
| " uniform float4 in_PixelDelta," | |||
| " uniform sampler2D in_Texture," | |||
| " out float4 out_FragColor : COLOR)" | |||
| "{" | |||
| " float2 coord = in_TexCoord.xy;" | |||
| " float i = frac((in_FragCoord.x - 0.5) * 0.5) * 2.0;" | |||
| " float j = frac((in_FragCoord.y - 0.5 + i) * 0.5) * 2.0;" | |||
| " coord.y += i + j * 2;" | |||
| " coord.y *= 0.25;" | |||
| " float4 p = tex2D(in_Texture, coord);" | |||
| " out_FragColor = p;" | |||
| " coord -= 0.1 * in_PixelDelta.xy;" | |||
| " float4 p0 = tex2D(in_Texture, nearest0(coord, in_PixelDelta).xy);" | |||
| " float4 p1 = tex2D(in_Texture, nearest1(coord, in_PixelDelta).xy);" | |||
| " float4 p2 = tex2D(in_Texture, nearest2(coord, in_PixelDelta).xy);" | |||
| " float4 p3 = tex2D(in_Texture, nearest3(coord, in_PixelDelta).xy);" | |||
| " out_FragColor = 0.25 * (p0 + p1 + p2 + p3);" | |||
| "}" | |||
| #endif | |||
| ); | |||