Musing about Deferred Shading.

One of the subjects which fascinate me is, Computer-Generated Images, CGI, specifically, that render a 3D scene to a 2D perspective. But that subject is still rather vast. One could narrow it by first suggesting an interest in the hardware-accelerated form of CGI, which is also referred to as “Raster-Based Graphics”, and which works differently from ‘Ray-Tracing’. And after that, a further specialization can be made, into a modern form of it, known a “Deferred Shading”.

What happens with Deferred Shading is, that an entire scene is Rendered To Texture, but in such a way that, in addition to surface colours, separate output images also hold normal-vectors, and a distance-value (a depth-value), for each fragment of this initial rendering. And then, the resulting ‘G-Buffer’ can be put through post-processing, which results in the final 2D image. What advantages can this bring?

  • It allows for a virtually unlimited number of dynamic lights,
  • It allows for ‘SSAO’ – “Screen Space Ambient Occlusion” – to be implemented,
  • It allows for more-efficient reflections to be implemented, in the form of ‘SSR’s – “Screen-Space Reflections”.
  • (There could be more benefits.)

One fact which people should be aware of, given traditional strategies for computing lighting, is, that by default, the fragment shader would need to perform a separate computation for each light source that strikes the surface of a model. An exception to this has been possible with some game engines in the past, where a virtually unlimited number of static lights can be incorporated into a level map, by being baked in, as additional shadow-maps. But when it comes to computing dynamic lights – lights that can move and change intensity during a 3D game – there have traditionally been limits to how many of those may illuminate a given surface simultaneously. This was defined by how complex a fragment shader could be made, procedurally.

(Updated 1/15/2020, 14h45 … )

Continue reading Musing about Deferred Shading.

A butterfly is being oppressed by 6 evil spheroids!

As this previous posting of mine chronicles, I have acquired an Open-Source Tool, which enables me to create 3D / CGI content, and to distribute that in the form of a WebGL Scene.

The following URL will therefore test the ability of the reader’s browser more, to render WebGL properly:

And this is a complete rundown of my source files:


(Updated 01/07/2020, 17h00 … )

(As of 01/04/2020, 22h35 : )

On one of my alternate computers, I also have Firefox ESR running under Linux, and that browser was reluctant to Initialize WebGL. There is a workaround, but I’d only try it if I’m sure that graphics hardware / GPU is strong on a given computer, and properly installed, meaning, stable…

Continue reading A butterfly is being oppressed by 6 evil spheroids!


I’ve read, that essentially there exist three types of reflections in Physics:

  1. Metallic
  2. Non-Metallic
  3. Total Internal Reflection (See Below)

Metallic reflections (almost) tend to preserve the polarization of the light (except for what’s written below), while non-metallic reflections tend to polarize the light. The latter are also the basis for “polarizing mirrors”.

Beam-splitters are essentially polarizing mirrors:

  • When randomly-polarized light hits them, the deflected beam will be plane-polarized in one direction, while the transmitted beam will contain, what the deflected beam does not contain.
  • When circularly-polarized light hits them, nothing really prevents them from splitting the beam.
  • When plane-polarized light hits them, depending on the angle of polarization, the amplitude of one emerging beam can become much lower, than that of the other. This is probably also why, linear polarizers can interfere with the physical auto-focus of a DSLR-camera.

(Edit 02/25/2018 :

Even though the articles I gave above ‘seem complete’, only today I’ve learned that they need to be modified. Specifically, the deflected beam is only polarized perfectly, when the incident beam strikes a non-metallic mirror at Brewster’s Angle. And I have no reason to think, that this account is wrong. )

From what I read, reflection, according to the particle depiction, takes place, because photons couple with plasmons, to form surface-polaritons.

From what I read, refraction takes place, according to the particle depiction, because photons couple with excitons, to form photon-excition polaritons.

(Updated 02/27/2018 : )

Continue reading Mirrors