zoukankan      html  css  js  c++  java
  • Rendering Pipeline(3)The Rasterization & Pixel Shader &Output Merger Stage

    1. The Rasterization Stage(光栅处理阶段)

        The Rasterization Stage(光栅处理阶段) 是渲染管道的第四个阶段,这个阶段的主要工作是,根据摄像机镜头的区域裁剪几何体, 把3D几何体映射到屏幕上。

    1. 1 The Clipping Stage(裁剪阶段)。

        裁剪过程发生在光处阶段。如图 1所示。一个摄像机的镜头区域是一个锥形体(frustum),如果一个几何体,其完全在frustum外部,则需要完全地抛弃它, 如果部分在frustum外部, 则需要裁剪它。这个裁剪过程就是在Clipping stage 发生的。

    Clip图 1

    1.2 Viewport Transform(视口转换)

        当裁剪一个几何图形完毕以后,我们需要把这个图形从裁剪坐标系映射到设备坐标系中。一个点一旦位于设备坐标系中,其2D X坐标和Y坐标就会在back buffer 中转化在一个矩形区域内。这个过程叫做视口转换。在转换完毕之后。X 坐标和Y 坐标就在单位像素内。通常视口转不影响Z坐标。其值会被depth buffer所使用,当然在视口转换中我们可以调用 D3D10_VIEWPORT结构体中的MinDepth和MaxDepth值。

    1.3 Backface culling

        一个三角形有两个面,我们把面对摄像机镜头的面称为front-facing,而被对镜头的面称为back-facing。因为一个3D物体是有N多三角形形成的封闭的实体,摄像机是观察不到这个物体的back-facing的,所以这个back-facing是不必要被渲染的。而所谓Backface cilling就是渲染管道丢弃back-facing渲染的过程。

    1.4 Vertex Attribute Interpolation(顶点属性插值)

        如果要画一个三角形,我们首先会定义一个点的结构体。这个结构体有关于点的位置,颜色,纹理坐标等相关的属性。但进行视口转换的时候,我们需要把这些属性全部转换到像素中。顶点的深度值也需要得到这些插值,然后把这些插值用到depth buffer中。这个过程叫做perspective correct interpolation这样我们就把顶点的属性转换为屏幕的显示了。

    2. The Pixel Shader Stage(像素着色阶段)

        一个顶点的属性从顶点着色器(或者几何着色器)出来以后,被插值到三角形中, 然后这个插值会作为像素着色器的输入。

        像素着色和顶点着色非常相似。它为每一个像素执行一次。像素着色器的主要功能是为每一个像素点计算颜色。需要注意的是一个顶点对应的像素点可能无法存在,因为这个像素点可能被裁剪到或者被其他像素点覆盖。

    如我们可以写下如下HLSL语言的像素着色器

    1 float4 PS(float4 posH : SV_POSITION,
    2 float4 color : COLOR) : SV_TARGET
    3 {
    4 return color;
    5 }

    在上面的例子中,像素着色器只是返回了插值中的颜色值。

    3. The Output Merger Stage(输出合并阶段)

        当像素被像素着色器处理了之后,其就会被输入到输出合成器中。在这个阶段有点像素点可能被丢弃。没有被丢弃的像素写入back buffer中,Belending(混合)也是在这个阶段做的。

  • 相关阅读:
    我的浏览器收藏夹分类
    我的浏览器收藏夹分类
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 315 计算右侧小于当前元素的个数
    Java实现 LeetCode 315 计算右侧小于当前元素的个数
  • 原文地址:https://www.cnblogs.com/sld666666/p/1832744.html
Copyright © 2011-2022 走看看