Games202-P1-2 Basic

  • L2 Preview
    • Recap of CG Basics
      • Basic GPU hardware pipeline
      • OpenGL
      • OpenGL Shading Language (GLSL)
      • The Rendering Equation
      • Calculus

L1 Basic

Real-time High Quality Rendering

  • Real-time

    • Speed: > 30fps; AR/VR field: > 90fps
    • Interactive
  • High quality

    • Realism: By trade-off, but advanced approach
    • Dependability: Artifacts。模拟物理正确。多数时间正确(精确或近似),或可容忍的、不可控的少量错误

Course Topic

  • 阴影 & 环境光贴图
  • Interactive Global Illumination Techinques
  • Precomputerd Radiance Transfer - 空间换时间
  • Real-time ray tracing
  • Participating Media Rendering, Image Space Effect, etc
    • 截屏2023-09-02 16.47.59
  • Non-Photorealistic Rendering 非真实感渲染NPR

  • Anti-Aliasing and Super-Sampling

How to Study

截屏2023-09-02 17.09.46

Evolution of Real-Time Rendering

  • 判断画面渲染好坏
    • 画面是否明亮——全局光照 阴影
    • 油(不自然的高光)——材质细节 粗糙度
  • Today
    • VR&AR
    • 电影

Technological and Algorithmic Milestones

  • 可编程shader
  • 预计算:在进行复杂渲染前完成计算,空间换时间
    • Complex visual effects are (partially) pre-computed
    • Minimum rendering cost at run time
  • 预计算方法:Relighting

    • image-20230905205333960
  • Interactive Ray Tracing: 在GPU上先以很低的采样率得到噪声较高的图,而后快速降噪

    • image-20230905205615709

L2 Recap of CG Basic

图形渲染管线

image-20230905212107286

  • 顶点阶段

    • 针对每一个顶点,MVP变换
    • vertex shader
  • 光栅化阶段

    • 将三角形里三成像素
  • Fragment Processing

    • Z-Buffer
  • 片元着色
    • Fragment shader
    • 纹理映射

OpenGL

  • 一系列API
  • 在CPU执行,调动GPU

工作流——类比oil paint

Step1: Place objects and models

  • 输入

    • 什么模型:用户定义的模型被传递给VBO

      • Vertex buffer object(VBO):GPU中负责存储模型的区域(存储vertices、normals、texture、coords,类似.obj文件)
    • 模型transformation:调用OpenGL中方法

Step2: Set an easel

  • 目的
    • 视图变换:画架位置是观察位置
      • image-20230907203113714
    • 创建/指定framebuffer:理解为需要使用哪一个画架

Step3: Attach a canvas to the easel

  • 指定一个framebuffer可以渲染出多个纹理(multiple render target),光栅化一次,渲染出多种纹理(如深度、basecolor、etc),由fragment shader告知GPU渲染到对应纹理

  • 对于将一个framebuffer渲染目标设置成屏幕

    • 上一帧没渲染完的画面会被下一帧覆盖,从而造成画面撕裂
    • 垂直同步:开启,则可避免上述状况
    • 双重缓冲:先将渲染结果存入一个纹理or缓冲区,确认没问题后再显示

Step4: Paint to the canvas

  • 理解

    • i.e., how to perform shading

    • This is when vertex / fragment shaders will be used

  • 对于每一个Vertex

    • Vertex shader:顶点的变换 (Model Vie Projection),顶点插值到对应fragment
  • 对于每一个fragment

    • fragment shader:shading & lighting
    • 深度测试

Step5: (Attach other canvases to the easel and continue painting)

  • 结合Step3

Step6: (Use previous paintings for reference)

  • 帧缓冲,结合Steps3
  • 上一次渲染结果可作为下一次渲染参考(e.g. shadow map,光追中,光线可以看到哪些fragment,摄影机看到的fragment能否也被光线看到,确定阴影区域)

Summary: in each pass

  • 定义objects, camera, MVP, etc,
  • 定义Framebuffer and input/output textures

  • 定义vertex shaders & fragment shaders

  • (When you have everything specified on the GPU) Render!

OpenGL Shading Language (GLSL)

image-20230907212151264