GAMES101-08-2:Shading - Graphics Pipeline


Graphics Pipeline

从真实世界场景中的物体到最终的一张图的整个过程,其中涉及不同的操作。

Graphics Pipeline

  • Vertex Processing:其实就是MVP变换对应的过程;
  • Triangle Processing:是将三维物体中的点全部完成投影后,根据存储的点之间的连接信息,形成三角形,这只是不同的处理方法而已,也可以在投影过程中直接连接。

具体过程

Graphics Pipeline各个步骤

所有这些过程均已经在GPU硬件上实现,其中对于具体的shading方法可以通过对硬件编程实现,这个编程是判断如何对三角形的顶点和像素进行着色,可以通过代码实现不同的着色结果,这部分代码称之为shader。

Shader Programs

  • Program vertex and fragment processing stages
  • Describe operation on a single vertex (or fragment) 只需要针对一个顶点或者像素写shader即可;

例子

openGL中实现漫反射shader。

uniform sampler2D myTexture;      // program parameter
uniform vec3 lightDir;            // program parameter
varying vec2 uv;                  // per fragment value (interp. by rasterizer)
varying vec3 norm;                // per fragment value (interp. by rasterizer)

void diffuseShader()
{
    vec3 kd;
    kd = texture2d(myTexture, uv);                 // material color from texture
    kd *= clamp(dot(–lightDir, norm), 0.0, 1.0);   // Lambertian shading model
    gl_FragColor = vec4(kd, 1.0);                  // output fragment color
}
  • Shader function executes once per fragment.
  • Outputs color of surface at the current fragment’s screen sample position.
  • This shader performs a texture lookup to obtain the surface’s material color at this point, then performs a diffuse lighting calculation.

Graphics Pipeline Implementation: GPUs

Specialized processors for executing graphics pipeline computations:

  • Discrete GPU Card
  • Integrated GPU (Part of Intel CPU die)

GPUs


文章作者: alex Li
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 alex Li !
  目录