La demoscene es una subcultura informática. Las demos comenzaron siendo una firma de los crackers de software, quienes se daban crédito modificando los programas para que, cuando se iniciaran, se viera una presentación gráfica impresionante, también llamada “intro”. Más adelante, estas intros evolucionaron hacia una cultura independiente de los grupos de cracking. Muchos de los jóvenes talentos que crecieron programando demos, y de esa forma adquiriendo experiencia en programación de gráficos de computadora, luego terminaron trabajando para la industria de los videojuegos, cuyos productos habían violado anteriormente. El objetivo principal de una demo es demostrar que se es mejor programador, y se tienen mejores habilidades gráficas y musicales respecto a otros demo-groups.
Procedural generation is a widely used term in the production of media, indicating the possibility to create content on the fly rather than prior to distribution. This is often related to computer graphics applications and video game level design.
The term procedural refers to the process that computes a particular function. Fractals, an example of procedural generation, dramatically expresses this concept, around which a whole body of mathematics—fractal geometry—has evolved. Commonplace procedural content includes textures and meshes. Sound is often procedurally generated as well and has applications in both speech synthesis as well as music. It has been used to create compositions in various genres of electronic music by artists such as Brian Eno who popularized the term “generative music”.
While software developers have applied procedural generation techniques for years, few products have employed this approach extensively.
The modern demoscene uses procedural generation to package a great deal of audiovisual content into relatively small programs. Farbrausch is a team famous for such achievements, although many similar techniques were already implemented by The Black Lotus in the 1990s.
Procedurally generated content such as textures and landscapes may exhibit variation, but the generation of a particular item or landscape must be identical from frame to frame. Accordingly, the functions used must be referentially transparent, always returning the same result for the same point, so that they may be called in any order and their results freely cached as necessary. This is similar to lazy evaluation in functional programming languages.
Procedural modeling is an umbrella term for a number of techniques in computer graphics to create 3D models and textures from sets of rules. L-Systems, fractals, and generative modeling are procedural modeling techniques since they apply algorithms for producing scenes. The set of rules may either be embedded into the algorithm, configurable by parameters, or the set of rules is separate from the evaluation engine. Although all modeling techniques on a computer require algorithms to manage and store data at some point, procedural modeling focuses on creating a model from a rule set, rather than editing the model via user input. Procedural modeling is often applied when it would be too cumbersome to create a 3D model using generic 3D modelers, or when more specialized tools are required. This is often the case for plants, architecture or landscapes.
Textures are stored as texture descriptors. These descriptors describe how to reproduce the texture, not the image itself. They may, for example, describe a series of mathematical functions that applied in a specific order, reproduce the image.
Geometry is specified by a geometry descriptor which can be very small. A piece of code expands the geometry descriptor into points, polygons, normals and texture co-ordinates.
A comon technique used to combine simple geometric shapes is sometimes called multiplicative geometry. The idea is to repeatedly draw the same base shape over and over, constructing a large complex scene of geometry from some simple base geometry. We will often use loops or recursion.
What are Procedural Graphics?
The basic idea is to create, on-the-fly all graphics. Data structures are created and then filled with data generated from the code itself, rather than being loaded from files as above.
Nearly all procedural graphics start with some very small base data. This base data should be as small as possible. The base data forms the seed for the code which then expands it into much larger pieces of data.
Imagine that an object is animated across the screen. We would not store all of the points the object goes to but only some key points. We then use code to generate intermediate points using spline based interpolation or something similar. The key points can be seen as the base data, the spline interpolator as the procedural graphics code and the resulting points the object is draw at as the procedural data generated.
So, procedural graphics has three main parts:
1 Base data, compact as possible.
2 Code that expands the base data.
3 The resulting generated procedural data.
