Update
parent
a33d8f64b0
commit
bd0c3c0580
@ -0,0 +1,12 @@
|
||||
# Deferred Shading
|
||||
|
||||
In computer [graphics](graphics.md) programming deferred shading is a technique for speeding up the rendering of (mainly) [shaded](shading.md) 3D graphics (i.e. graphics with textures, materials, [normal maps](normal_mapping.md) etc.). It is nowadays used in many advanced 3D engines. In principle of course the idea may also be used in 2D graphics and outside graphics.
|
||||
|
||||
The principle is following: in normal forward shading (non-deferred) the shading computation is applied immediately to any rendered pixel (fragment) as they are rendered. However, as objects can overlap, many of these expensively computed pixels may be overwritten by pixels of other objects, so many pixels end up being expensively computed but invisible. This is of course wasted computation. Deferred shading only computes shading of the pixels that will end up actually being visible -- this is achieved by **two rendering passes**:
|
||||
|
||||
1. At first geometry is rendered without shading, only with information that is needed for shading (for example [normals](normal.md), material IDs, texture IDs etc.). The rendered image is stored in so called G-buffer which is basically an image in which every pixel stores the above mentioned shading information.
|
||||
2. The second pass applies the shading effects by applying the pixel/fragment [shader](shader.md) on each pixel of the G-buffer.
|
||||
|
||||
This is especially effective when we're using very expensive/complex pixel/fragment shaders AND we have many overlapping objects. **Sometimes deferred shading may be replaced by simply ordering the rendered models**, i.e. rendering front-to-back, which may achieve practically the same speed up. In simple cases deferred shading may not even be worth it -- in [LRS](lrs.md) programs we may use it only rarely.
|
||||
|
||||
Deferred shading also comes with complications, for example **rasterization [anti aliasing](anti_aliasing.md) can't be used** because, of course, anti-aliasing in G-buffer doesn't really make sense. This is usually solved by some [screen-space](screen_space.md) antialiasing technique such as [FXAA](fxaa.md), but of course that may be a bit inferior. **Transparency also poses an issue**.
|
@ -0,0 +1,11 @@
|
||||
# Frameless Rendering
|
||||
|
||||
Frameless rendering is a technique of [rendering](rendering.md) animation by continuously updating an image on the screen by updating single "randomly" selected pixels rather than by showing a quick sequence of discrete frames. This is an alternative to the mainstream [double buffered](double_buffering.md) frame-based rendering traditionally used nowadays.
|
||||
|
||||
Typically this is done with [image order](image_order.md) rendering methods, i.e. methods that can immediately and independently compute the final color of any pixel on the screen -- for example with [raytracing](raytracing.md).
|
||||
|
||||
The main advantage of frameless rendering is of course saving a huge amount of memory usually needed for double buffering, and usually also increased performance (fewer pixels are processed per second). The animation may also seem more smooth and responsive -- reaction to input is seen faster. Another advantage, and possibly a disadvantage as well, is a **[motion blur](motion_blur.md)** effect that arises as a side effect of updating by individual pixels spread over the screen: some pixels show the scene at a newer time than others, so the previous images kind of blend with the newer ones. This may add realism and also prevent temporal [aliasing](aliasing.md), but blur may sometimes be undesirable, and also the kind of blur we get is "pixelated" and noisy.
|
||||
|
||||
Selecting the pixels to update can be done in many ways, usually with some [pseudorandom](pseudorandom.md) selection, but regular patterns may also be used. There have been papers that implemented adaptive frameless rendering that detected where it is best to update pixels to achieve low noise.
|
||||
|
||||
Historically similar (though different) techniques were used on computers that didn't have enough memory for a double buffer or redrawing the whole screen each frame was too intensive on the CPU; programmers had to identify which pixels had to be redrawn and only update those. This resulted in techniques like *adaptive tile refresh* used in scrolling games such as [Commander Keen](commander_keen.md).
|
@ -0,0 +1,3 @@
|
||||
# Social Inertia
|
||||
|
||||
Social inertia appears when a social group continues to behave in an established way mainly because it has behaved that way for a long time, even if such behavior is no longer justified.
|
@ -0,0 +1,9 @@
|
||||
# Viznut
|
||||
|
||||
Viznut (real name Ville-Matias Heikkilä) is a Finnish [demoscene](demoscene.md) programmer, [hacker](hacking.md) and [artist](art.md) that advocated high technological [minimalism](minimalism.md). He is known for example for his [countercomplex](countercomplex.md) blog, co-discovering [bytebeat](bytebeat.md) and creating [IBNIZ](ibniz.md). In his own words, he believes much more can be done with much less. He also warns of [collapse](collapse.md) (http://viznut.fi/en/future.html). According to his [Fediverse](fediverse.md) page he lives in Turku, Finland, was born around 1977 and has been programming since the age of seven.
|
||||
|
||||
His work is pretty based, in many ways aligned with [LRS](lrs.md), he contributed a great deal to minimalist technology. Unfortunately in some ways he also seems pretty retarded: he uses [facebook](facebook.md), [twitter](twitter.md) and [github](github.md) and also mentions "personal pronouns" on his twitter xD Pretty disappointing TBH.
|
||||
|
||||
His personal site is at http://viznut.fi/en/ and his blog at http://countercomplex.blogspot.com/. He collects many files at http://viznut.fi/files/, including very interesting writings about demoscene, programming experiments etc.
|
||||
|
||||
In 2011 he released [IBNIZ](ibniz.md), a tiny [SDL](sdl.md) [virtual machine](vm.md) and a language that's meant as a platform for creating [demos](demoscene.md). Also in 2011 he was involved in the discovery of [bytebeat](bytebeat.md), a way of creating music with extremely simple [C](c.md) expressions -- later he published a paper about it. In 2012 he founded [Skrolli](skrolli.md), a magazine about sustainable/non-consumerist technology. In about 2019 he released PC-lamerit, an animated series about 90s computer hackers, made as an executable computer program -- it looks pretty cool. He also created UNSCII, a fixed-width font usable for [ANSI art](ansi_art.md).
|
Loading…
Reference in New Issue