blog.hvidtfeldts.netSyntopia | Generative Art, 3D Fractals, Creative Computing

blog.hvidtfeldts.net Profile

Blog.hvidtfeldts.net is a subdomain of Hvidtfeldts.net, which was created on 2006-04-16,making it 18 years ago.

Discover blog.hvidtfeldts.net website stats, rating, details and status online.Use our online tools to find owner and admin contact info. Find out where is server located.Read and write reviews or vote to improve it ranking. Check alliedvsaxis duplicates with related css, domain relations, most used words, social networks references. Go to regular site

blog.hvidtfeldts.net Information

HomePage size: 124.157 KB
Page Load Time: 0.742402 Seconds
Website IP Address: 94.231.103.142

blog.hvidtfeldts.net Similar Website

Omens - Multipurpose Creative Theme
omens.la-studioweb.com
Trusted Computing Group – Trusted Computing Group
develop.trustedcomputinggroup.org
Digipede : Grid Computing for Windows : Distributed Computing : Cluster Computing : Grid Computing f
support.digipede.net
College of Computing | Ying Wu College of Computing
ccs.njit.edu
Kahlert School of Computing – School of Computing at The University of Utah
cs.utah.edu
ART F261X: World History of Art I – Prehistoric to Medieval Art
art261.community.uaf.edu
Creative Blogs | Creative Writing | Creative Thoughts
creative.sulekha.com
Fine Art World | A Fine Art Community & Marketplace | Browse, Buy, & Sell Fine Art
knoxgalleries.fineaw.com
DINO LAB by ABCDino - Generative Hybrid Dinosaur NFTs
lab.abcdino.com
American Art Therapy Association (Art Therapy), Art Therapy Career Center|Find Your Career Here
careercenter.americanarttherapyassociation.org
Buy Art Prints, Framed Art, Canvas Art | Van Gogh Gallery Store
store.vangoghgallery.com
Art and Canvas | Canvas Art Prints and Framed Art | Easy Home Decor
posterservice.frameusa.com
Picarto.TV – Help Center & FAQ – Your #1 Creative Community – Art Streams – Art Gallery – Art Commis
help.picarto.tv
Department of Computing | Department of Computing, Imperial College
wp.doc.ic.ac.uk
Persado AI: Leading Generative AI Text Content Generation for
info.persado.com

blog.hvidtfeldts.net PopUrls

Syntopia | Generative Art, 3D Fractals, Creative Computing
http://blog.hvidtfeldts.net/
Raytracing | Syntopia - Hvidtfeldts.net
http://blog.hvidtfeldts.net/index.php/category/raytracing/
Distance Estimation | Syntopia
http://blog.hvidtfeldts.net/index.php/category/distance-estimation/
Fractals | Syntopia - Hvidtfeldts.net
http://blog.hvidtfeldts.net/index.php/category/fractals/
Distance Estimated 3D Fractals (V): The Mandelbulb & Different DE ...
http://blog.hvidtfeldts.net/index.php/2011/09/distance-estimated-3d-fractals-v-the-mandelbulb-different-de-approximations/
Distance Estimated 3D Fractals (VI): The Mandelbox
http://blog.hvidtfeldts.net/index.php/2011/11/distance-estimated-3d-fractals-vi-the-mandelbox/
About | Syntopia - Hvidtfeldts.net
http://blog.hvidtfeldts.net/index.php/about/
Distance Estimated 3D Fractals (Part VIII): Epilogue
http://blog.hvidtfeldts.net/index.php/2012/05/distance-estimated-3d-fractals-part-viii-epilogue/
Grammar | Syntopia - Hvidtfeldts.net
http://blog.hvidtfeldts.net/index.php/category/grammar/
Distance Estimated 3D Fractals (II): Lighting and Coloring
http://blog.hvidtfeldts.net/index.php/2011/08/distance-estimated-3d-fractals-ii-lighting-and-coloring/
Folding | Syntopia
https://blog.hvidtfeldts.net/index.php/category/folding/
Reaction-Diffusion Systems | Syntopia - Hvidtfeldts.net
http://blog.hvidtfeldts.net/index.php/2012/08/reaction-diffusion-systems/
Distance Estimated 3D Fractals (Part I) | Syntopia - Hvidtfeldts.net
http://blog.hvidtfeldts.net/index.php/2011/06/distance-estimated-3d-fractals-part-i/
Distance Estimated 3D Fractals (III): Folding Space
http://blog.hvidtfeldts.net/index.php/2011/08/distance-estimated-3d-fractals-iii-folding-space/
Art | Syntopia
http://blog.hvidtfeldts.net/index.php/category/art/

blog.hvidtfeldts.net Httpheader

Date: Tue, 14 May 2024 09:06:40 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Server: Apache
Link: http://blog.hvidtfeldts.net/index.php/wp-json/; rel="https://api.w.org/"
X-Content-Type-Options: nosniff
SimplyCom-Server: Apache, nginx

blog.hvidtfeldts.net Meta Info

charset="utf-8"/
content="width=device-width" name="viewport"/
content="WordPress 4.9.25" name="generator"

blog.hvidtfeldts.net Ip Information

Ip Country: Denmark
Latitude: 55.7123
Longitude: 12.0564

blog.hvidtfeldts.net Html To Plain Text

Syntopia Generative Art, 3D Fractals, Creative Computing Menu About Generative Art Links Search for: Building 4D Polytopes March 28, 2018 OpenGL , WebGL 4D , Coxeter , Polychora , Polytopes , Stereographic Mikael Hvidtfeldt Christensen The idea behind this post goes back to a Fractal Forums discussion back in 2012, where Knighty came up with a clever scheme for ray marching polytopes. It also discusses the mathematics behind Jenn 3D (a tool for creating explicit geometry). It is probably my most ambitious post yet – lots of interactive WebGL components – which also means it not very mobile friendly, I’m afraid. Due to the complexity of the post, I did not use WordPress for this. Instead the blog post is hosted on GitHub, and can be found here: https://syntopia.github.io/Polytopia/polytopes.html Please let me know if you have ideas for improvements or corrections! View all 4 comments Strange Attractors March 28, 2018 WebGL Strange Attractors , WebGL Mikael Hvidtfeldt Christensen ‘Strange Attractors’ is an experiment I did a couple of months ago: https://syntopia.github.io/StrangeAttractors It renders Strange Attractors using WebGL, and can export high resolution PNG’s and OBJ/STL 3D objects. Chrome is strongly preferred, and a good GPU helps as well. Leave a comment Path Tracing 3D Fractals January 18, 2015 Fragmentarium , GPU , Mandelbulb , Raytracing Mikael Hvidtfeldt Christensen In some ways path tracing is one of the simplest and most intuitive ways to do ray tracing. Imagine you want to simulate how the photons from one or more light sources bounce around a scene before reaching a camera. Each time a photon hits a surface, we choose a new randomly reflected direction and continue, adjusting the intensity according to how likely the chosen reflection is. Though this approach works, only a very tiny fraction of paths would terminate at the camera. So instead, we might start from the camera and trace the ray from here and until we hit a light source. And, if the light source is large and slowly varying (for instance when using Image Based Lighting), this may provide good results. But if the light source is small, e.g. like the sun, we have the same problem: the chance that we hit a light source using a path of random reflections is very low, and our image will be very noisy and slowly converging. There are ways around this: one way is to trace rays starting from both the camera and the lights, and connect them (bidirectional path tracing), another is to test for possible direct lighting at each surface intersection (this is sometimes called ‘next event estimation’). Even though the concept of path tracing might be simple, introductions to path tracing often get very mathematical. This blog post is an attempt to introduce path tracing as an operational tool without going through too many formal definitions. The examples are built around Fragmentarium (and thus GLSL) snippets, but the discussion should be quite general. Let us start by considering how light behaves when hitting a very simple material: a perfect diffuse material. Diffuse reflections A Lambertian material is an ideal diffuse material, which has the same radiance when viewed from any angle. Imagine that a Lambertian surface is hit by a light source. Consider the image above, showing some photons hitting a patch of a surface. By pure geometrical reasoning, we can see that the amount of light that hits this patch of the surface will be proportional to the cosine of the angle between the surface normal and the light ray: \( cos(\theta)=\vec{n} \cdot \vec{l} \) By definition of a Lambertian material this amount of incoming light will then be reflected with the same probability in all directions. Now, to find the total light intensity in a given (outgoing) direction, we need to integrate over all possible incoming directions in the hemisphere: \( L_{out}(\vec\omega_o) = \int K*L_{in}(\vec\omega_i)cos(\theta)d\vec\omega_i \) where K is a constant that determines how much of the incoming light is absorbed in the material, and how much is reflected. Notice, that there must be an upper bound to the value of K – too high a value would mean we emitted more light than we received. This is referred to as the ‘conservation of energy’ constraint, which puts the following bound on K: \( \int Kcos(\theta)d\vec\omega_i \leq 1 \) Since K is a constant, this integral is easy to solve (see e.g. equation 30 here ): \( K \leq 1/\pi \) Instead of using the constant K, when talking about a diffuse materials reflectivity, it is common to use the Albedo, defined as \( Albedo = K\pi \). The Albedo is thus always between 0 and 1 for a physical diffuse materials. Using the Albedo definition, we have: \( L_{out}(\vec\omega_o) = \int (Albedo/\pi)*L_{in}(\vec\omega_i)cos(\theta)d\vec\omega_i \) The above is the Rendering Equation for a diffuse material. It describes how light scatters at a single point. Our diffuse material is a special case of the more general formula: \( L_{out}(\vec\omega_o) = \int BRDF(\vec\omega_i,\vec\omega_o)*L_{in}(\vec\omega_i)cos(\theta)d\vec\omega_i \) Where the BRDF (Bidirectional Reflectance Distribution Function) is a function that describes the reflection properties of the given material: i.e. do we have a shiny, metallic surface or a diffuse material. Completely diffuse material (click for large version) How to solve the rendering equation An integral is a continuous quantity, which we must turn into something discrete before we can handle it on the computer. To evaluate the integral, we will use Monte Carlo sampling , which is a very simple: to provide an estimate for an integral, we will take a number of samples and use the average values of these samples multiplied by the integration interval length. \( \int_a^b f(x)dx \approx \frac{b-a}{N}\sum _{i=1}^N f(X_i) \) If we apply this to our diffuse rendering equation above, we get the following discrete summation: \( \begin{align} L_{out}(\vec\omega_o) &= \int (Albedo/\pi)*L_{in}(\vec\omega_i)cos(\theta)d\vec\omega_i \\ & = \frac{2\pi}{N}\sum_{\vec\omega_i} (\frac{Albedo}{\pi}) L_{in}(\vec\omega_i) (\vec{n} \cdot \vec\omega_i) \\ & = \frac{2 Albedo}{N}\sum_{\vec\omega_i} L_{in}(\vec\omega_i) (\vec{n} \cdot \vec\omega_i) \end{align} \) Test render (click for large version) Building a path tracer (in GLSL) Now we are able to build a simple path tracer for diffuse materials. All we need to do is to shoot rays starting from the camera, and when a ray hits a surface, we will choose a random direction in the hemisphere defined by the surface normal. We will continue with this until we hit a light source. Each time the ray changes direction, we will modulate the light intensity by the factor found above: \( 2*Color*Albedo*L_{in}(\vec\omega_i) (\vec{n} \cdot \vec\omega_i) \) The idea is to repeat this many times for each pixel, and then average the samples. This is why the sum and the division by N is no longer present in the formula. Also notice, that we have added a (material specific) color. Until now we have assumed that our materials handled all wavelengths the same way, but of course some materials absorb some wavelengths, while reflecting others. We will describe this using a three-component material color, which will modulate the light ray at each surface intersection. All of this boils down to very few lines of codes: vec3 color(vec3 from, vec3 dir) { vec3 hit = vec3(0.0); vec3 hitNormal = vec3(0.0); vec3 luminance = vec3(1.0); for (int i=0; iRayDepth; i++) { if (trace(from,dir,hit,hitNormal)) { dir = getSample(hitNormal); // new direction (towards light) luminance *= getColor()*2.0*Albedo*dot(dir,hitNormal); from = hit + hitNormal*minDist*2.0; // new start point } else { return luminance * getBackground( dir ); } } return vec3(0.0); // Ray never reached a light source } The getBackground() method simulates the light sources in a given direction (i.e. infinitely far away). As we will see below, this fits nicely together with using...

blog.hvidtfeldts.net Whois

Domain Name: HVIDTFELDTS.NET Registry Domain ID: 413406455_DOMAIN_NET-VRSN Registrar WHOIS Server: whois.rrpproxy.net Registrar URL: http://www.key-systems.net Updated Date: 2024-04-09T17:47:12Z Creation Date: 2006-04-16T08:54:09Z Registry Expiry Date: 2025-04-16T08:54:09Z Registrar: Key-Systems GmbH Registrar IANA ID: 269 Registrar Abuse Contact Email: abuse@key-systems.net Registrar Abuse Contact Phone: +49.68949396850 Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited Name Server: NS1.SIMPLY.COM Name Server: NS2.SIMPLY.COM Name Server: NS3.SIMPLY.COM Name Server: NS4.SIMPLY.COM DNSSEC: signedDelegation DNSSEC DS Data: 14355 13 2 C358DC0735A0CD318E7704E7638A0793F5478DDEA041EE41C650025F47B45B8A DNSSEC DS Data: 14355 13 4 990C3AC1500AB59AA07E84AAFBDAA35B614E8F300AB1DB26823A83B8DFAD49FD7F5508FE101AA301E550DA42AB9F822A >>> Last update of whois database: 2024-05-17T23:22:49Z <<<