zoukankan      html  css  js  c++  java
  • 【图形学】图形管道

      多数渲染系统有极大的共性,图形管道伪代码可以说明带有光照的单个图象的渲染过程,这样会对渲染过程有一个整体认识。

    图形管道伪代码  

     1 //设置场景:渲染的出发点——视点,输出——视图,设置光照和雾化
     2 //设置观察场景的方式——摄像机
     3 setupTheCamera();
     4 //清除深度缓冲
     5 clearZBuffer();
     6 //设置光源和雾化
     7 setGlobalLightingAndFog();
     8 //得到可见物体列表
     9 visibleObjList = visibleDetermination(scene);
    10 //开始渲染
    11 for (obj in visibleObjList) {
    12     //使用包围体执行VSD检测
    13     if (!obj.isBoundingVisible()) continue;
    14     trimesh = obj.getGeometry();
    15     for (triangle in trimesh){
    16         //变换顶点到裁剪空间,执行顶点级别光照
    17         clipSpaceTriangle = transformAndLighting(triangle);
    18         //背面剔除
    19         if (clipSpaceTriangle.isBackFacing()) continue;
    20         //视锥体裁剪
    21         clippedTriangle = clipToViewVolume(clipSpaceTriangle);
    22         if (clippedTriangle.isEmpty()) continue;
    23         //三角形投影至屏幕坐标,并且光栅化
    24         clippedTriangle.projectToScreenSpace();
    25         for (pixel in triangle) {
    26             //插值颜色,z-Buffer和纹理纹理映射坐标
    27             //执行z-Buffer和alpha检测
    28             if (!zbufferTest()) continue;
    29             if (!alphaTest()) continue;
    30             //像素着色
    31             color = shadePixel();
    32             //写内容到帧缓冲区
    33             writePixel(color, interpolatedZ);
    34         }
    35     }    
    36 }

    渲染管线

    渲染管线流程图:

    渲染过程示意图

  • 相关阅读:
    熟悉常用的Linux操作
    Python基础之五星红旗
    类似于铁道部12306的城市选择框的实现
    使用Django操作数据库入门
    进程和线程
    线程、进程、携程理解
    CentOS6.8部署Python3.6.8的Django项目
    爬取妹子图片
    聚类算法之DBSCAN
    机器学习算法优缺点总结
  • 原文地址:https://www.cnblogs.com/liustdelphi/p/3874026.html
Copyright © 2011-2022 走看看