三种图元

  • Point
  • Line
  • Triangle

WebGL绘制流程

  1. 准备数据阶段:提供顶点坐标、索引(三角形绘制顺序)、uv(决定贴图坐标)、法线(决定光照效果),以及各种矩阵(比如投影矩阵)
  2. 生成顶点着色器
  3. 图元装配:坐标转换
  4. 生成片元着色器:模型是什么颜色,看起来是什么质地,光照效果,阴影(流程较复杂,需要先渲染到纹理,可以先不关注),都在这个阶段处理。
  5. 光栅化

顶点提取器

获取顶点坐标, 并写入缓存区

 由于顶点数据往往成千上万,在获取到顶点坐标后,我们通常会将它存储在显存,即缓存区内,方便GPU更快读取。

顶点着色器

顶点着色器需要完成的工作主要有:坐标变换和逐顶点光照。除此之外,顶点着色器还可以输出后续阶段所需的数据。

图元组装

  1. 画三角形
  2. 把顶点组装成三角形组

光栅化

 计算机的图像的都是用像素表示的,无论是点、直线、圆或其他图形最终都会以点的形式显示。人们看到屏幕的直线只不过是模拟出来的,人眼不能分辨出来而已。

光栅化其实是一种将几何图元变为二维图像的过程。
该过程包含了两部分的工作:
- 第一部分工作:决定窗口坐标中的哪些整型栅格区域被基本图元占用;
- 第二部分工作:分配一个颜色值和一个深度值到各个区域。
光栅化过程产生的是片元

片元着色

光栅化阶段并不影响屏幕上每个像素的颜色值,而是产生一系列的数据信息,用来表述一个三角网格是怎么覆盖每个像素的。而每个片元就是负责存储这一系列数据。真正会对像素产生影响的阶段是下一个流水线阶段–逐片元操作

 片元着色器的输入是上一个阶段对顶点信息插值得到的结果,具体来说,是根据那些从顶点着色器中输出的数据插值得到的。而它的输出是一个或者多个颜色值。

 这一阶段可以完成很多重要的渲染技术,最重要的技术之一就是纹理采样。为了在片元着色器中进行纹理采样。通常在顶点着色器阶段输出每个顶点的纹理坐标,然后经过光栅化阶段对三角形网格的3个顶点的纹理坐标进行插值后,就可以得到其覆盖的片元的纹理坐标了。

顶点着色器和片元着色器的区别

 Fragment Shader是在光栅化之后。在Vertex Shader阶段,我们要处理的数据只是顶点,而在Fragment Shader阶段,我们要处理的则是(大 致上)被这三个顶点围住的所有像素对应的Fragments。

WebGL光栅化流水线相关推荐

  1. 基于Unity的软光栅实现(3):基于Job system的多核加速光栅化

    文章目录 系列文章导航 拥抱CPU多核计算 Job System简介 ParallelFor Job JobRasterizer 数据准备:JobRenderObjectData 缓冲区表示和Clea ...

  2. SoftRendererRenderPipeline(从迷你光栅化软渲染器的实现看渲染流水线)

    简介 这是可能一篇没有什么实际作用的文章,因为没有任何shader效果实现,整篇文章到最后,我只实现了一个旋转的立方体(o(╯□╰)o,好弱),和游戏引擎渲染的万紫千红的3D世界显得有很大落差,仿佛一 ...

  3. 图形流水线中光栅化原理与实现

    图形流水线中光栅化原理与实现 光栅化主要解决的问题 光栅化原理 判断像素在三角形内部or外部 顶点属性插值 重心坐标系 插值深度 直接插值Z值的问题 正确的深度插值公式推导 透视校正 代码实现 光栅化 ...

  4. WebGL编程指南11-varying变量,图形装配与光栅化

    1.demo效果 如上图,绘制了一个顶点不同颜色的三角形.是使用varying变量在顶点着色器给片元着色器传值绘制的图形 2.varying介绍 之前已经学习了attribute变量和uniform变 ...

  5. DirectX 3D_基础之模型表示 顶点格式 三角形 索引 虚拟摄像机 投影窗口 绘制流水线 局部坐标系 观察坐标系 世界坐标系 背面消隐 光照 裁剪 投影 视口变换 光栅化

    每日一语: 当一切都安于现状后,这个社会就无法发展,也就无法从原始社会发展到现代社会,对于人也是一样,如果我们一直安于现状,就无法有更大更好的发展,我们不要想着,一直可以过安逸的生活,程序员这个职业, ...

  6. 谈谈Hybird3D中的光栅化优化

    看到空明流转分享了他的SALVIA 0.5.2优化谈,我也来说说Hybird3D中和光栅化相关的一些优化技术. Hybird3D的设计目标是打造一款准实时的软件高质量渲染器,采用了光栅化和光线跟踪混合 ...

  7. 用C#实现一个简易的软件光栅化渲染器

    这是一个用C#+winform实现的软件光栅化渲染器,今天拿出来与大家分享一下,希望能起到抛砖引玉的作用,给新人一点启发(结构比较简单,注释比较详细^_^),也欢迎司机们拍砖指点和交流~ 目的: 巩固 ...

  8. NVidia Maxwell GPU Tile-based 光栅化模式分析

    前言 因为最近的工作重点是Nintendo Switch上的图形优化,所以需要对其GPU架构以及硬件流水线有一定的了解.而NS使用的是NVidia的Tegra X1 SoC芯片,其GPU是Maxwel ...

  9. D3D12渲染技术之光栅化与管道

    光栅化状态 虽然渲染管道的许多部分都是可编程的,但某些部分只是可配置的, 由D3D12_RASTERIZER_DESC结构表示的光栅化器状态组用于配置渲染管道的光栅化阶段: typedef struc ...

最新文章

  1. 【转】Luajit-2.1.0-beta1的发布和生成arm64用bytecode的解脱
  2. 三年级学生计算机学情分析,三年级上学期学生学情分析
  3. Node.js学习笔记8
  4. 吴恩达发布了大型X光数据集,斯坦福AI诊断部分超越人类 | AAAI 2019
  5. 深度学习笔记_基本概念_逆卷积的详细解释ConvTranspose2d(fractionally-strided convolutions)
  6. java jxls_jxls教程
  7. Java关键字this的使用方法解析大全
  8. 制作整人计算机病毒,bat整人电脑病毒代码是怎样的.docx
  9. 如何安装浏览器广告拦截屏蔽的插件?
  10. Android 滑动放大,Android多点触控实现对图片放大缩小平移,惯性滑动等功能
  11. 网络安全实战之植入后门程序
  12. 二十一世纪大学英语读写教程(第四册)学习笔记(原文)——2 - The Gratitude We Need(我们所需要的感激)
  13. 杨韬的Markdown自定义CSS样式
  14. 计算机基础知识精品课程,校级精品课程《大学计算机基础》简介
  15. OneNET麒麟座应用开发之十:空气质量数据监测站项目总结
  16. 纯CSS实现多行文本溢出显示省略号(兼容不同浏览器)
  17. 2020年整理的大数据基础入门教程总结和学习路线
  18. 光伏电站远程监控应用方案
  19. 教你如何用免费软件来发布活动直播
  20. YOLO之父宣布退出CV界,坦言无法忽视自己工作带来的负面影响

热门文章

  1. 373. Find K Pairs with Smallest Sums (java,优先队列)
  2. LVS详解及基于LVS实现web服务器负载均衡
  3. 苹果手机在火车站被偷的状况下如何定位找回
  4. node.js(一)
  5. Service Manager 的系统要求
  6. Windows Server 2008正式版[微软官方下载地址+官方语言包]
  7. Ansible05-部署文件
  8. 小程序前端性能测试_如何提高前端应用程序的性能
  9. devkit_如何使用NodeMCU Devkit和Firebase数据库开始物联网
  10. 如何使您的Kotlin Android动画可访问