Logo by mauxuam - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Check out the originating "3d Mandelbulb" thread here
 
*
Welcome, Guest. Please login or register. September 21, 2019, 06:04:39 AM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: [1] 2   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: How to burn a few teraflops  (Read 10041 times)
0 Members and 1 Guest are viewing this topic.
lycium
Fractal Supremo
*****
Posts: 1158



WWW
« on: August 13, 2015, 11:09:45 PM »



(Click for full 4K resolution PNG image.)


Pretty sure I'm still doing it wrong:

Code:
float base_DE = KaleidoIcosaDE(p);
float DE_scale = 0.1f;

return base_DE * DE_scale;

Isn't 0.1 "fudge factor" really bad? Anyway, that's 3 bounces diffuse GI (there is a full material system, but only using diffuse/Lambertian), 8 minutes rendering on a single GTX 970 in 34 C ambient temperature  fiery

At some point I wish to beg the gods of distance estimation for help figuring out how I'm doing DE so badly...
Logged

lycium
Fractal Supremo
*****
Posts: 1158



WWW
« Reply #1 on: August 16, 2015, 07:07:47 PM »



(Click for full 4K resolution high quality JPG image.)


5 bounces, 1024 samples per pixel, 5 minutes rendering.
« Last Edit: August 16, 2015, 07:55:12 PM by lycium » Logged

hobold
Fractal Bachius
*
Posts: 573


« Reply #2 on: August 16, 2015, 07:32:56 PM »

8 minutes rendering on a single GTX 970 in 34 C ambient temperature  fiery
That's fast; I'm still below two frames per hour. :-)
Logged
lycium
Fractal Supremo
*****
Posts: 1158



WWW
« Reply #3 on: August 16, 2015, 07:37:05 PM »

I think on a pair of overclocked Titan X this thing would be near realtime at 1080p if using a few spp and temporal reprojection.

The last image is just (?) 5 minutes, again on a single GTX 970 at stock clocks. I can't wait for winter to overclock this GPU, but goddamn is it hot/humid in Berlin at the moment...
« Last Edit: August 17, 2015, 12:03:20 AM by lycium » Logged

cKleinhuis
Administrator
Fractal Senior
*******
Posts: 7044


formerly known as 'Trifox'


WWW
« Reply #4 on: August 16, 2015, 07:43:21 PM »

pics look promising, as far as i understand, the fudge factor can be used to avoid overstepping, having a concrete distance estimation allows it for beeing 1.0 e.g simple geometry like balls/squares and some fractals deliver mostly correct distances, so stepping the amoung returned by the de is just fine

there has been an improvement algorithm to take bigger steps, which has eiffie visualised in this shadertoy and gives 10 percent stepping improvement
https://www.shadertoy.com/view/lsBSDK

Logged

---

divide and conquer - iterate and rule - chaos is No random!
lycium
Fractal Supremo
*****
Posts: 1158



WWW
« Reply #5 on: August 16, 2015, 07:50:58 PM »

I tried the SOR approach from cupe/mercury, but it's sort of tuned for screenspace not indirect rays... will give that another try later (since it's something like cone tracing with analytic LOD, which is great).

What's really needed for specular reflections is root refinement, which he also covers in the paper.
Logged

lycium
Fractal Supremo
*****
Posts: 1158



WWW
« Reply #6 on: August 16, 2015, 08:20:53 PM »

Logged

lycium
Fractal Supremo
*****
Posts: 1158



WWW
« Reply #7 on: August 17, 2015, 12:40:34 AM »

Logged

lycium
Fractal Supremo
*****
Posts: 1158



WWW
« Reply #8 on: August 21, 2015, 05:30:17 AM »

(deleted)
« Last Edit: August 21, 2015, 05:23:29 PM by lycium » Logged

lycium
Fractal Supremo
*****
Posts: 1158



WWW
« Reply #9 on: August 21, 2015, 05:25:14 PM »



(Click for full 5760 x 3240 resolution high quality JPG image.)
Logged

lycium
Fractal Supremo
*****
Posts: 1158



WWW
« Reply #10 on: August 22, 2015, 04:54:51 PM »



Logged

kram1032
Fractal Senior
******
Posts: 1863


« Reply #11 on: August 23, 2015, 01:26:36 PM »

Those are weirdly pretty and pretty weird cheesy
Logged
lycium
Fractal Supremo
*****
Posts: 1158



WWW
« Reply #12 on: December 20, 2015, 03:15:24 AM »

Logged

knighty
Fractal Iambus
***
Posts: 819


« Reply #13 on: December 20, 2015, 11:18:49 AM »

Cool!

Quote
Pretty sure I'm still doing it wrong:
Code:
   
Code:
float base_DE = KaleidoIcosaDE(p);
float DE_scale = 0.1f;

return base_DE * DE_scale;
Isn't 0.1 "fudge factor" really bad?
For a Kaleidoscopic IFS DE_scale should be set to 1 or a slightly less than that. Could we see KaleidoIcosaDE(p)'s implementation?
Logged
lycium
Fractal Supremo
*****
Posts: 1158



WWW
« Reply #14 on: December 23, 2015, 12:16:33 AM »

// http://www.fractalforums.com/3d-fractal-generation/kaleidoscopic-%28escape-time-ifs%29/

// Return reflection matrix for plane with normal 'n'
float3x3 reflectionMatrix(float3 n)
{
   const float3 n1_x = (float3)(1 - 2 * n.x * n.x, -2 * n.y * n.x, -2 * n.z * n.x);
   const float3 n1_y = (float3)(-2 * n.x * n.y, 1 - 2 * n.y * n.y, -2 * n.z * n.y);
   const float3 n1_z = (float3)(-2 * n.x * n.z, -2 * n.y * n.z, 1 - 2 * n.z * n.z);
}

float KaleidoIcosaDE(const float3 z0, float t)
{
   const float scale = 2.393331f;

   const float phi = 1.6180339887498948482045868343656f;

   const float3 offset = normalize((float3)(1, phi - 1, 0));

   //const float3 n1 = normalize((float3)(-phi, phi - 1, 1));
   //const float3 n2 = normalize((float3)(1, -phi, phi + 1));

   //const float3 offset = normalize((float3)(1, phi - 1, 0));
   //const float3 offset = normalize((float3)(1.01f, phi - 1 + 0.21f + m, -0.1f + q));

   const float3 n1 = normalize((float3)(-0.8652f, 0.752f, 1.25f));
   const float3 n2 = normalize((float3)(0.6152f, -0.23521f, 1.325f));

   //n1Mat = reflectionMatrix(n1);
   const float3 n1_x = (float3)(1 - 2 * n1.x * n1.x, -2 * n1.y * n1.x, -2 * n1.z * n1.x);
   const float3 n1_y = (float3)(-2 * n1.x * n1.y, 1 - 2 * n1.y * n1.y, -2 * n1.z * n1.y);
   const float3 n1_z = (float3)(-2 * n1.x * n1.z, -2 * n1.y * n1.z, 1 - 2 * n1.z * n1.z);
   //n2Mat = reflectionMatrix(n2);
   const float3 n2_x = (float3)(1 - 2 * n2.x * n2.x, -2 * n2.y * n2.x, -2 * n2.z * n2.x);
   const float3 n2_y = (float3)(-2 * n2.x * n2.y, 1 - 2 * n2.y * n2.y, -2 * n2.z * n2.y);
   const float3 n2_z = (float3)(-2 * n2.x * n2.z, -2 * n2.y * n2.z, 1 - 2 * n2.z * n2.z);


   const float bailout2 = 1e9f; // 1e32f
   const int max_iterations = 22; // 28

   int n = 0;
   float3 p = z0;
   while (n < max_iterations)
   {
      p.y = fabs(p.y);
      p.z = fabs(p.z);

      if (dot(p, n2) > 0)
      {
         //p *= n2Mat;
         p = (float3)(dot(p, n2_x), dot(p, n2_y), dot(p, n2_z));
      }

      p.x = fabs(p.x);
      p.z = fabs(p.z);

      if (dot(p, n1) > 0)
      {
         //p *= n1Mat;
         p = (float3)(dot(p, n1_x), dot(p, n1_y), dot(p, n1_z));
      }

      p = p * scale - offset * (scale - 1);

      if (dot(p, p) > bailout2) break;

      n++;
   }

   return length(p) * pow(scale, (float)-n);
}
Logged

Pages: [1] 2   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
burn buggy glynn Images Showcase (Rate My Fractal) yv3 0 954 Last post January 13, 2011, 08:23:40 PM
by yv3
Burn the ship down Movies Showcase (Rate My Movie) teamfresh 2 749 Last post January 28, 2015, 01:18:43 PM
by teamfresh

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.159 seconds with 28 queries. (Pretty URLs adds 0.011s, 2q)