A screensaver that animates various julia set fractals morphing at high resolution in real time. Now with support for Windows XP!!
Be the first to post a text review of GPU Julia Screensaver. Rate and review a project by clicking thumbs up or thumbs down in the right column.
Fixed a very minor UI bug, and added a couple more coloration functions for you all to play with. Check it out!
Version 1.26: -Minor bugfix involving the new resolution control not resizing properly with the rest of the setup window. -Added two new coloration functions based on supershape orbit traps: --Sea Urchin --Jellyfish Version 1.25: -Added option to select display resolution to the settings dialog. Version 1.24: -Added iteration function (z^2+c)^2+d Version 1.23: -Made some changes to the palette texture in DirectX 9 build. Hopefully it should work with older graphics cards now. -Optimized Newton(cos(cz)) -Tweaked Curvature Estimation -Added multimonitor support for DirectX 9 Version 1.22: -Added adaptive anti-aliasing to DirectX 9 version - note that there are some bugs in the DX9 HLSL compiler which will cause various problems with some combinations. Also, the code produced by the DX9 compiler is a fair amount alower than the DX10 counterpart. The compiler itself is also slower for that matter. -Added a couple new iteration functions: --Newton(cos(cz)) --Newton(c*cos(dz)+e*cos(fz)) -Added a couple coloration functions: --Iterations --Curvature Estimation -The new functions weren't any more diffucult to add now that there's an additional DX9 target - the relevant code is fully shared between platforms. Version 1.20: -Added backport to DirectX 9.0c! Now you can run the program without Windows Vista! --Adaptive anti-alaising is not supported in DirectX 9 version, even though the check box is still there. Checking it does nothing right now. --There's currently no support for multiple monitors with the DirectX 9 version. Version 1.12: -Added Newton's method fractal for z^3+a*z^2+b*z+c -Added Directional Decomposition coloration method -Added Continuous palette - this one has no seam when wrapping around the border Version 1.11: -Added a few new palettes --Muted --Fighting Channels --Vivid --Vivid 2 -Did some work on the Sawtooth palette - it's now analytically anti-aliased, which helps the jittering, at least to a fair extent. Version 1.10: -Added support for palettes! --Currently there are 3 palettes to choose from: ---Default (this should be fairly close to original functionallity) ---Sawtooth ---Black and White --Palettes can simply use a 1-D texture with 8092 texels generated each frame (all current palette functions do this), or can implement their own function based on the input value. Each palette can use its own seperate function in the shader code - the only restriction is that the function signature has to be the same (also, no automatic gradient based sampling, or else the HLSL compiler will blow up for certain coloration functions - i.e. those that potentially get palette values each iteration, such as blended orbit traps. Use SampleLevel or SampleGrad (should work) instead of Sample.) --Of course, there's nothing that says that coloration functions have to use the palette function. They can still compute their colors the old way, but won't respond to the user's choice of palette, of course! --Palette Notes: ---Sawtooth currently "stutters" when the palette animates. This is due to sharp discontinuities in the palette, which jump from one texel to the next during animation. The easiest way to fix this is probably just to add some brute force supersampling to the palette generation, since 8092 is the maximum dimension for textures with Directx 10. After all, the amount of calculation involved in calculating the palette is incredibly tiny compared to the rest of the image. ---Default differs from the original color calculation since it uses sine instead of a tent map to calculate each color channel. This results in the color bands looking smoother than before, and also affects the saturation of colors a little bit since the proportion of time a given color channel spends at any given intensity is a bit different. Specifically, sine spends more time at high and low values than at middle values, whereas the tent map, being piecewise linear, spends the same amount of time at one intensity as at any other. The ultimate result is that colors also tend to be bolder, and more saturated. ---If any of you liked the original colors better than the default palette, let me know, and I'll add a truely equivilent palette. Version 1.03: -Added support for custom bailout code for each iteration function. -Wrote custom bailouts for each function where it was needed. This basically means every function using exponentiation in some form, i.e. e^z, z^z, sin(z) (behaves exponentially for imaginary values), ect. This prevents black areas in the image where the function increases so fast that it goes from within the bailout to overflowing the floating point number in a single iteration - consider 1000^1000 for instance. -Split up shader code into several files for ease of code reading. Iteration functions are now in Iteration.fx, and coloration functions in Coloration.fx, which leaves the core shader template by itself in Shader.fx. Version 1.01: Hotfix release -Fixed cTan() and cCot() this affects c*atan(z)+d*tan(z) Version 1.0: The big 1.0 release! -Fixed iteration text box bug where it would crash if you entered something other than a number. -The framework for loading shader include files from resources is now fully working. -Added inverse trig functions to math library, as well as factorial: --Arcsine cAsin() --Arccosine cAcos() --Arctangent cAtan() --Arcsecant cAsec() --Arccosecant cAcsc() --Arccotangent cAcot() --Factorial cFactorial() -Added new iteration functions: --n!+c --c*atan(z)+d*tan(z) Version 0.99: Getting close to the 1.0 release... -Fixed minor bug with adaptive anti-aliasing coverage detection -Added a complex number library for the convience of anyone writing new iteration functions. The library includes: --Addition cAdd() --Subtraction cSub() --Multiplication cMul() --Division cDiv() --Reciprocal cRcp() --Exponential Function e^z cExp() --General Exponetiation a^b cPow() --Natural Logarithm cLn() --Sine cSin() --Cosine cCos() --Tangent cTan() --Secant cSec() --Cosecant cCsc() --Cotangent cCot() --Hyperbolic Sine cSinh() --Hyperbolic Cosine cCosh() --Hyperbolic Tangent cTanh() --Hyperbolic Secant cSech() --Hyperbolic Cosecant cCsch() --Hyperbolic Cotangent cCoth() --Hyperbolic Arcsine cAsinh() --Hyperbolic Arccosine cAcosh() --Hyperbolic Arctangent cAtanh() --Hyperbolic Arcsecant cAsech() --Hyperbolic Arccosecant cAcsch() --Hyperbolic Arccotangent cAcoth() -To be added in the future: --Square sqr() --Square Root sqrt() --Arcsine asin() --Arccosine acos() --Arctangent atan() --Arcsecant asec() --Arccosecant acsc() --Arccotangent acot() -There are probably other important functions not on this list. Tell me if you want any in particular. --Factorial? --Norm? --Modulus? --Conjugate? -Added several new iteration functions: --z^1.5+c --e^cos(cz) --sin(cz)+d --cz*ln(z) --c^z --e*(sin(cz)+cos(dz)) Version 0.97: Major update! -Added adaptive anti-aliasing. -Added toggle for anti-aliasing -Added control for number of iterations -Added Orbit Trap (Sphere) Version 0.94: -Added Orbit Trap (Cross) and Orbit Trap (Circle) to coloration algorithms. -Added z^(1+i)+c and (z^2+1+c)/(z^2-1-c) to iteration functions. -Adjusted the zoom level for az^3+bz^2+cz+d Version 0.93: -Added partial support for multiple monitors. All secondary monitors should now at least black out when the screensaver runs, but in general only if they're plugged into the same graphics card. -Workaround for the loss of focus/ revert to windowed mode bug. Now windowed mode is a WM_POPUP window that covers the whole screen, thus at least *looks* like fullscreen. Version 0.92: Added in iteration functions z^a+c, z^c+z^-(c-1)+d, and z^c+d*z^-(c-1). Version 0.91: FIRST RELEASE!
Version 1.26: -Minor bugfix involving the new resolution control not resizing properly with the rest of the setup window. -Added two new coloration functions based on supershape orbit traps: --Sea Urchin --Jellyfish Version 1.25: -Added option to select display resolution to the settings dialog. Version 1.24: -Added iteration function (z^2+c)^2+d Version 1.23: -Made some changes to the palette texture in DirectX 9 build. Hopefully it should work with older graphics cards now. -Optimized Newton(cos(cz)) -Tweaked Curvature Estimation -Added multimonitor support for DirectX 9 Version 1.22: -Added adaptive anti-aliasing to DirectX 9 version - note that there are some bugs in the DX9 HLSL compiler which will cause various problems with some combinations. Also, the code produced by the DX9 compiler is a fair amount alower than the DX10 counterpart. The compiler itself is also slower for that matter. -Added a couple new iteration functions: --Newton(cos(cz)) --Newton(c*cos(dz)+e*cos(fz)) -Added a couple coloration functions: --Iterations --Curvature Estimation -The new functions weren't any more diffucult to add now that there's an additional DX9 target - the relevant code is fully shared between platforms. Version 1.20: -Added backport to DirectX 9.0c! Now you can run the program without Windows Vista! --Adaptive anti-alaising is not supported in DirectX 9 version, even though the check box is still there. Checking it does nothing right now. --There's currently no support for multiple monitors with the DirectX 9 version. Version 1.12: -Added Newton's method fractal for z^3+a*z^2+b*z+c -Added Directional Decomposition coloration method -Added Continuous palette - this one has no seam when wrapping around the border Version 1.11: -Added a few new palettes --Muted --Fighting Channels --Vivid --Vivid 2 -Did some work on the Sawtooth palette - it's now analytically anti-aliased, which helps the jittering, at least to a fair extent. Version 1.10: -Added support for palettes! --Currently there are 3 palettes to choose from: ---Default (this should be fairly close to original functionallity) ---Sawtooth ---Black and White --Palettes can simply use a 1-D texture with 8092 texels generated each frame (all current palette functions do this), or can implement their own function based on the input value. Each palette can use its own seperate function in the shader code - the only restriction is that the function signature has to be the same (also, no automatic gradient based sampling, or else the HLSL compiler will blow up for certain coloration functions - i.e. those that potentially get palette values each iteration, such as blended orbit traps. Use SampleLevel or SampleGrad (should work) instead of Sample.) --Of course, there's nothing that says that coloration functions have to use the palette function. They can still compute their colors the old way, but won't respond to the user's choice of palette, of course! --Palette Notes: ---Sawtooth currently "stutters" when the palette animates. This is due to sharp discontinuities in the palette, which jump from one texel to the next during animation. The easiest way to fix this is probably just to add some brute force supersampling to the palette generation, since 8092 is the maximum dimension for textures with Directx 10. After all, the amount of calculation involved in calculating the palette is incredibly tiny compared to the rest of the image. ---Default differs from the original color calculation since it uses sine instead of a tent map to calculate each color channel. This results in the color bands looking smoother than before, and also affects the saturation of colors a little bit since the proportion of time a given color channel spends at any given intensity is a bit different. Specifically, sine spends more time at high and low values than at middle values, whereas the tent map, being piecewise linear, spends the same amount of time at one intensity as at any other. The ultimate result is that colors also tend to be bolder, and more saturated. ---If any of you liked the original colors better than the default palette, let me know, and I'll add a truely equivilent palette. Version 1.03: -Added support for custom bailout code for each iteration function. -Wrote custom bailouts for each function where it was needed. This basically means every function using exponentiation in some form, i.e. e^z, z^z, sin(z) (behaves exponentially for imaginary values), ect. This prevents black areas in the image where the function increases so fast that it goes from within the bailout to overflowing the floating point number in a single iteration - consider 1000^1000 for instance. -Split up shader code into several files for ease of code reading. Iteration functions are now in Iteration.fx, and coloration functions in Coloration.fx, which leaves the core shader template by itself in Shader.fx. Version 1.01: Hotfix release -Fixed cTan() and cCot() this affects c*atan(z)+d*tan(z) Version 1.0: The big 1.0 release! -Fixed iteration text box bug where it would crash if you entered something other than a number. -The framework for loading shader include files from resources is now fully working. -Added inverse trig functions to math library, as well as factorial: --Arcsine cAsin() --Arccosine cAcos() --Arctangent cAtan() --Arcsecant cAsec() --Arccosecant cAcsc() --Arccotangent cAcot() --Factorial cFactorial() -Added new iteration functions: --n!+c --c*atan(z)+d*tan(z) Version 0.99: Getting close to the 1.0 release... -Fixed minor bug with adaptive anti-aliasing coverage detection -Added a complex number library for the convience of anyone writing new iteration functions. The library includes: --Addition cAdd() --Subtraction cSub() --Multiplication cMul() --Division cDiv() --Reciprocal cRcp() --Exponential Function e^z cExp() --General Exponetiation a^b cPow() --Natural Logarithm cLn() --Sine cSin() --Cosine cCos() --Tangent cTan() --Secant cSec() --Cosecant cCsc() --Cotangent cCot() --Hyperbolic Sine cSinh() --Hyperbolic Cosine cCosh() --Hyperbolic Tangent cTanh() --Hyperbolic Secant cSech() --Hyperbolic Cosecant cCsch() --Hyperbolic Cotangent cCoth() --Hyperbolic Arcsine cAsinh() --Hyperbolic Arccosine cAcosh() --Hyperbolic Arctangent cAtanh() --Hyperbolic Arcsecant cAsech() --Hyperbolic Arccosecant cAcsch() --Hyperbolic Arccotangent cAcoth() -To be added in the future: --Square sqr() --Square Root sqrt() --Arcsine asin() --Arccosine acos() --Arctangent atan() --Arcsecant asec() --Arccosecant acsc() --Arccotangent acot() -There are probably other important functions not on this list. Tell me if you want any in particular. --Factorial? --Norm? --Modulus? --Conjugate? -Added several new iteration functions: --z^1.5+c --e^cos(cz) --sin(cz)+d --cz*ln(z) --c^z --e*(sin(cz)+cos(dz)) Version 0.97: Major update! -Added adaptive anti-aliasing. -Added toggle for anti-aliasing -Added control for number of iterations -Added Orbit Trap (Sphere) Version 0.94: -Added Orbit Trap (Cross) and Orbit Trap (Circle) to coloration algorithms. -Added z^(1+i)+c and (z^2+1+c)/(z^2-1-c) to iteration functions. -Adjusted the zoom level for az^3+bz^2+cz+d Version 0.93: -Added partial support for multiple monitors. All secondary monitors should now at least black out when the screensaver runs, but in general only if they're plugged into the same graphics card. -Workaround for the loss of focus/ revert to windowed mode bug. Now windowed mode is a WM_POPUP window that covers the whole screen, thus at least *looks* like fullscreen. Version 0.92: Added in iteration functions z^a+c, z^c+z^-(c-1)+d, and z^c+d*z^-(c-1). Version 0.91: FIRST RELEASE!
Now you can select your own screen resolution from the settings dialog.
Version 1.25: -Added option to select display resolution to the settings dialog. Version 1.24: -Added iteration function (z^2+c)^2+d Version 1.23: -Made some changes to the palette texture in DirectX 9 build. Hopefully it should work with older graphics cards now. -Optimized Newton(cos(cz)) -Tweaked Curvature Estimation -Added multimonitor support for DirectX 9 Version 1.22: -Added adaptive anti-aliasing to DirectX 9 version - note that there are some bugs in the DX9 HLSL compiler which will cause various problems with some combinations. Also, the code produced by the DX9 compiler is a fair amount alower than the DX10 counterpart. The compiler itself is also slower for that matter. -Added a couple new iteration functions: --Newton(cos(cz)) --Newton(c*cos(dz)+e*cos(fz)) -Added a couple coloration functions: --Iterations --Curvature Estimation -The new functions weren't any more diffucult to add now that there's an additional DX9 target - the relevant code is fully shared between platforms. Version 1.20: -Added backport to DirectX 9.0c! Now you can run the program without Windows Vista! --Adaptive anti-alaising is not supported in DirectX 9 version, even though the check box is still there. Checking it does nothing right now. --There's currently no support for multiple monitors with the DirectX 9 version. Version 1.12: -Added Newton's method fractal for z^3+a*z^2+b*z+c -Added Directional Decomposition coloration method -Added Continuous palette - this one has no seam when wrapping around the border Version 1.11: -Added a few new palettes --Muted --Fighting Channels --Vivid --Vivid 2 -Did some work on the Sawtooth palette - it's now analytically anti-aliased, which helps the jittering, at least to a fair extent. Version 1.10: -Added support for palettes! --Currently there are 3 palettes to choose from: ---Default (this should be fairly close to original functionallity) ---Sawtooth ---Black and White --Palettes can simply use a 1-D texture with 8092 texels generated each frame (all current palette functions do this), or can implement their own function based on the input value. Each palette can use its own seperate function in the shader code - the only restriction is that the function signature has to be the same (also, no automatic gradient based sampling, or else the HLSL compiler will blow up for certain coloration functions - i.e. those that potentially get palette values each iteration, such as blended orbit traps. Use SampleLevel or SampleGrad (should work) instead of Sample.) --Of course, there's nothing that says that coloration functions have to use the palette function. They can still compute their colors the old way, but won't respond to the user's choice of palette, of course! --Palette Notes: ---Sawtooth currently "stutters" when the palette animates. This is due to sharp discontinuities in the palette, which jump from one texel to the next during animation. The easiest way to fix this is probably just to add some brute force supersampling to the palette generation, since 8092 is the maximum dimension for textures with Directx 10. After all, the amount of calculation involved in calculating the palette is incredibly tiny compared to the rest of the image. ---Default differs from the original color calculation since it uses sine instead of a tent map to calculate each color channel. This results in the color bands looking smoother than before, and also affects the saturation of colors a little bit since the proportion of time a given color channel spends at any given intensity is a bit different. Specifically, sine spends more time at high and low values than at middle values, whereas the tent map, being piecewise linear, spends the same amount of time at one intensity as at any other. The ultimate result is that colors also tend to be bolder, and more saturated. ---If any of you liked the original colors better than the default palette, let me know, and I'll add a truely equivilent palette. Version 1.03: -Added support for custom bailout code for each iteration function. -Wrote custom bailouts for each function where it was needed. This basically means every function using exponentiation in some form, i.e. e^z, z^z, sin(z) (behaves exponentially for imaginary values), ect. This prevents black areas in the image where the function increases so fast that it goes from within the bailout to overflowing the floating point number in a single iteration - consider 1000^1000 for instance. -Split up shader code into several files for ease of code reading. Iteration functions are now in Iteration.fx, and coloration functions in Coloration.fx, which leaves the core shader template by itself in Shader.fx. Version 1.01: Hotfix release -Fixed cTan() and cCot() this affects c*atan(z)+d*tan(z) Version 1.0: The big 1.0 release! -Fixed iteration text box bug where it would crash if you entered something other than a number. -The framework for loading shader include files from resources is now fully working. -Added inverse trig functions to math library, as well as factorial: --Arcsine cAsin() --Arccosine cAcos() --Arctangent cAtan() --Arcsecant cAsec() --Arccosecant cAcsc() --Arccotangent cAcot() --Factorial cFactorial() -Added new iteration functions: --n!+c --c*atan(z)+d*tan(z) Version 0.99: Getting close to the 1.0 release... -Fixed minor bug with adaptive anti-aliasing coverage detection -Added a complex number library for the convience of anyone writing new iteration functions. The library includes: --Addition cAdd() --Subtraction cSub() --Multiplication cMul() --Division cDiv() --Reciprocal cRcp() --Exponential Function e^z cExp() --General Exponetiation a^b cPow() --Natural Logarithm cLn() --Sine cSin() --Cosine cCos() --Tangent cTan() --Secant cSec() --Cosecant cCsc() --Cotangent cCot() --Hyperbolic Sine cSinh() --Hyperbolic Cosine cCosh() --Hyperbolic Tangent cTanh() --Hyperbolic Secant cSech() --Hyperbolic Cosecant cCsch() --Hyperbolic Cotangent cCoth() --Hyperbolic Arcsine cAsinh() --Hyperbolic Arccosine cAcosh() --Hyperbolic Arctangent cAtanh() --Hyperbolic Arcsecant cAsech() --Hyperbolic Arccosecant cAcsch() --Hyperbolic Arccotangent cAcoth() -To be added in the future: --Square sqr() --Square Root sqrt() --Arcsine asin() --Arccosine acos() --Arctangent atan() --Arcsecant asec() --Arccosecant acsc() --Arccotangent acot() -There are probably other important functions not on this list. Tell me if you want any in particular. --Factorial? --Norm? --Modulus? --Conjugate? -Added several new iteration functions: --z^1.5+c --e^cos(cz) --sin(cz)+d --cz*ln(z) --c^z --e*(sin(cz)+cos(dz)) Version 0.97: Major update! -Added adaptive anti-aliasing. -Added toggle for anti-aliasing -Added control for number of iterations -Added Orbit Trap (Sphere) Version 0.94: -Added Orbit Trap (Cross) and Orbit Trap (Circle) to coloration algorithms. -Added z^(1+i)+c and (z^2+1+c)/(z^2-1-c) to iteration functions. -Adjusted the zoom level for az^3+bz^2+cz+d Version 0.93: -Added partial support for multiple monitors. All secondary monitors should now at least black out when the screensaver runs, but in general only if they're plugged into the same graphics card. -Workaround for the loss of focus/ revert to windowed mode bug. Now windowed mode is a WM_POPUP window that covers the whole screen, thus at least *looks* like fullscreen. Version 0.92: Added in iteration functions z^a+c, z^c+z^-(c-1)+d, and z^c+d*z^-(c-1). Version 0.91: FIRST RELEASE!
Be the first person to add a text review.
Copyright © 2009 Geeknet, Inc. All rights reserved. Terms of Use
Thanks for your rating!
Would you also like to write a review?