This commit is contained in:
Miloslav Ciz 2021-12-30 18:28:42 -06:00
parent 17836a8daf
commit 23fea4dd89

20
graphics.md Normal file
View file

@ -0,0 +1,20 @@
# Computer Graphics
Computer graphics (CG or just graphics) is a field of [computer science](compsci.md) that deals with visual information. The field doesn't have strict boundaries and can blend and overlap with other possibly separate topics such as physical simulations, multimedia and machine learning. It usually deals with creating or analyzing 2D and 3D images and as such CG is used in data visualization, [game](game.md) development, [virtual reality](vr.md), [optical character recognition](ocr.md) and even astrophysics or medicine.
We can divide computer graphics in different ways, traditionally e.g.:
- by direction:
- **[rendering](rendering.md)**: Creating images.
- **[computer vision](computer_vision.md)**: Extracting information from existing images.
- by basic elements:
- **raster**: Deals with images composed of a uniform grid of points called [pixels](pixel.md) (in 2D) or [voxels](voxel.md) (in 3D).
- **vector**: Deals with images composed of geometrical primitives such as curves or triangles.
- by dimension:
- **[2D](2d.md)**: Deals with images of a 2D plane.
- **[3D](3d.md)**: Deals with images that capture three dimensional space.
- by speed:
- **[real time](real_time.md)**: Trying to work with images in real time, e.g. being able to produce or analyze 60 frames per second.
- **offline**: Processes or creates images over longer time-spans, e.g. hours or days.
Since the 90s computers started using a dedicated hardware to accelerate graphics: so called [GPU](gpu.md)s. These have allowed rendering of high quality images in high FPS, and due to the entertainment and media industry (especially gaming), GPUs have been pushed towards greater performance each year. Nowadays they are one of the most consumerist [hardware](hardware.md), also due to the emergence of general purpose computations being moved to GPUs (GPGPU) and lately the mining of [cryptocurrencies](crypto.md). Most lazy programs dealing with graphics nowadays simply expect and require a GPU, which creates a bad [dependency](dependency.md). At [LRS](lrs.md) we try to prefer the [suckless](suckless.md) **software [rendering](rendering.md)**, i.e. rendering on the [CPU](cpu.md), without GPU, or at least offer this as an option in case GPU isn't available. This many times leads us to old and forgotten algorithms used in times before GPUs.