<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jupiter_Dev</title>
    <description>The latest articles on DEV Community by Jupiter_Dev (@jupitertav).</description>
    <link>https://dev.to/jupitertav</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3177437%2F1b6d5669-afbd-4404-b481-2d0273de8749.png</url>
      <title>DEV Community: Jupiter_Dev</title>
      <link>https://dev.to/jupitertav</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jupitertav"/>
    <language>en</language>
    <item>
      <title>Notes on [Real-Time] Graphics Rendering Pipeline pt.1</title>
      <dc:creator>Jupiter_Dev</dc:creator>
      <pubDate>Fri, 16 Oct 2026 07:23:51 +0000</pubDate>
      <link>https://dev.to/jupitertav/notes-on-real-time-graphics-rendering-pipeline-pt1-2k3a</link>
      <guid>https://dev.to/jupitertav/notes-on-real-time-graphics-rendering-pipeline-pt1-2k3a</guid>
      <description>&lt;p&gt;The &lt;em&gt;graphics pipeline&lt;/em&gt;, or simply  &lt;em&gt;the pipeline&lt;/em&gt; is the core subsystem on modern computers that efficiently draws a 2D image given a collection of raw data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffm6vuasgym2ms0vqg6pt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffm6vuasgym2ms0vqg6pt.png" alt="The Raw Data circle is often called Input Assembler" width="799" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pipeline's architecture
&lt;/h2&gt;

&lt;p&gt;The pipeline stages runs in parallel, though each stage is dependent of the previous one. In a way that the render time lower bound is the slowest stage, this stage is then called bottleneck.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The render time is directly connected with FPS (Frames per second) that is the number of images rendered per second.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fah1uwkyapp7o36cb0m3v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fah1uwkyapp7o36cb0m3v.png" alt="Pipeline stages" width="800" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the image above we present four functional stages - each one is in itself  a pipeline that is has several sub-stages responsible for functional implementation. &lt;/p&gt;

&lt;h3&gt;
  
  
  Application Stage
&lt;/h3&gt;

&lt;p&gt;The Application Stage is the one that runs on CPU Side thus we have full control over this process. The most important function of the application stage is to prepare and send geometry data into the geometry processing stage (other important things like collision detection, input handling are also performed here).&lt;/p&gt;

&lt;h3&gt;
  
  
  Geometry Processing
&lt;/h3&gt;

&lt;p&gt;Like the name implies, the geometry processing is a GPU Side stage responsible for compute geometry data (primarily Vertex) like a vertex's position or whatever the programmer has coded into it. We can split this stage in four implementation stages:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwuymtj9s43sgc12a0s81.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwuymtj9s43sgc12a0s81.png" alt="Geometry Processing Stages" width="800" height="82"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A big part of Projection, Clipping and Screen Mapping it is done by the GPU , but can have some customization via an API. Although, output and configurations of what to do with each vertex in the Vertex Shading (it's called Shading by historical reasons) can is done via coding, like model's material, light properties, transforms, texture coordinates etc.&lt;br&gt;
Another task of vertex shading is more mathematical: VS will do a series of transformations moving from one space to another, like the image below:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fymce5gcwck49kne4544l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fymce5gcwck49kne4544l.png" alt="Vertex transformations" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgefiz1icqob6azj8ix10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgefiz1icqob6azj8ix10.png" alt="View Frustrum" width="652" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After this the GPU will compute a &lt;em&gt;Orthographic or Perspective Projection&lt;/em&gt; these two has important geometry and visualization consequences, and then move the object to Clip Space, which is a unit cube. Next, &lt;em&gt;Clipping&lt;/em&gt; is performed: which consists in cutting geometry that is out-of-camera-bounds, called sectioning. Finally , perspective division is performed, which places the resulting triangle's positions into three-dimensional normalized device coordinates (NDC) ranging from (-1, -1, -1) to (1, 1, 1).&lt;br&gt;
After that, clipped primitives inside the view are passed to screen mapping (in general, the coordinates depends upon the API) to set geometry position in &lt;em&gt;window coordinates&lt;/em&gt;. &lt;br&gt;
Until here, we still don't get nothing renderer, for this we need more two stages: Rasterization and Pixel/Fragment Processing. These two will be discussed in a pt.2  &lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>graphics</category>
      <category>beginners</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
