Graphics Pipeline
Graphics Pipeline has 3 main components:
- Vertex Shader: Performs vertex transformations
- Rasterizer: Fills in the pixels for each visible 2D polygon
- Fragment Shader: Determines the colors of each pixel
In GPUs, the Rasterizer is fixed. That means programmer can not modify the logic of how rasterization is performed.
But programmer can modify the logic of Vertex and Fragment Shader.
These are written in a Shading Language like GLSL (OpenGL Shading Language)
These shaders codes are compiled and passed to the GPU, which then performs the necessary computations on the input data.
Not all GPUs are “graphical”
Data center grade GPUs like Nvidia A100, H100 , do not have display connectors, or Raytracing units, since they are supposed to be used for GPGPU / HPC workloads.
Nvidia’s data center kernel driver are used for both data center GPUs and Quadro GPUs (one with graphical ports). These drivers include libraries for graphics APIs like OpenGL or DirectX. But maybe the nvidia’s kernel driver disables these graphics libraries based on the available GPU. (See this video by LTT ).
Although TBH, an image in the end is just an array of integers. So you can still write your own algorithms for all components of graphics pipeline. This allows you to run graphic operations on GPUs without graphics capabilties (using all CUDA cores rather than relying on textures units for few tasks).
This approach is taken in the LBM solver library FluidX3D. Here is also a youtube video explaining how FluidX3D works.
References
- Intro to Graphics 07 - GPU Pipeline . This entire playlist of computer graphics lecture is GOLD. This course is more focused on the math behind computer graphics.
- Interactive Computer Graphics: A course specifically focused on the computational side of graphics, also talks about modern tools used.