浏览器的渲染技术 v.s. CG渲染器的渲染技术

看了两篇文章: 浏览器的渲染原理简介, How browsers work(译文), 想到了一些东西, 对比两者, 或许有些东西能想得更明白些.

以下CG Rendering 简称R, Browser简称B.

共同点:

-两者都有文本描述文件

R: rib, ass, ....

B: html

-两者的任务都是渲染

R:从文本描述文件得到一张图片(图片里包含了模型, 材质, 灯光,....)

B:从文本描述文件得到一个网页, 包含文字, 图片(位置, 布局, 放缩), 视频, 音频, flash,....

不同点:

- 最根本的不同是两者的渲染方式. 比如两者如何渲染带动画的元素(R渲染带动画的模型, B渲染带动画的文字或图片). R和B对动画的解决方法完全不同, 这个最根本的分歧导致两者发展出各自的技术.

对于R来说, 要渲染一个24fps的动画, 就要生成每一帧的图片, 然后把这些图片按顺序播放, 使得人们看到一段动画. 这是电影胶片的思路. 无论游戏(OpenGL/Dirext3D)还是动画/VFX都是这么做的.

比如, 场景描述文件要渲染24帧(f0~f23), 场景里包含2个元素A0, A1(A0做平移, A1是静止的). 那么渲染第0帧f0的时候要计算A0和A1的数据, 渲染f1的时候同样要重新计算A0和A1的数据, 只不过A0的位置不同而已(所以才产生了动画), f2~f23也是类似, 即每一帧都要重新计算A0和A1的数据.

对于B来说, 它基于操作系统的window manager(比如XWindow)来显示元素, 而window manager不借助于opengl/d3d来显示(渲染)一个元素.

比如, B要渲染2个元素A0, A1(A0做平移, A1是静止的). 那么, 初始时A0和A1都被渲染出来. 之后把A0的像素平移到下一个位置, 而A1的大部分(或者说没有被A0影响到的)像素并不改变. 所以A1的大部分(或者说没有被A0影响到的)像素并没有被重新计算!

(是否可以说B里的A0和A1的渲染是异步的? )

- R的优势在于, R的渲染方式能hold住更复杂的场景(你看看那些游戏和电影场景).

- B的优势在于, 如果你要滚动页面, 页面上的所有静止元素(比如静态文字, 静态图片)都不需要重新渲染, window manager只需做平移就可以了, 这个计算量很小.

- shader

我是站在R的角度来说的, 所以R里的shader的概念不必多说. 那么, B里有没有什么类似的东西对应于R里的shader呢?

先想想R里的shader到底是什么, 是做什么的.

我想, 最简单的情况, A0和A1, A0是红色,A1是蓝色. A0和A1需要两个不同的shader.

我猜, 起初, 人们可能把红色和蓝色写死在shader里, 于是, shader0是一段代码, 赋给了A0并渲染出红色; shader1是另一段代码, 赋给了A1并渲染出蓝色.

后来, shader写的多了, 人们为了方便, 把不变的代码提出来形成shader函数体, 而把变化的代码(红色值和蓝色值)提出来作为shader的参数.

那么, 我想B里的这些代码就类似与R里的shader:

<font color="#FF0000">我是红色字体</font>
<font color="#0000FF">我是蓝色字体</font> 

- CG行业里的shader一直在发展, 比B里的"shader"要复杂得多. 如果把R里的shader的概念和技术引入到B里, 会怎样?

(未完, 待续)

References:

[1] 浏览器的渲染原理简介

[2] How browsers work, (译文)

转载于:https://www.cnblogs.com/yaoyansi/p/4006592.html

CG Rendering v.s. Browser Rendering相关推荐

  1. Your WebGL implementation doesn't seem to support hardware accelerated rendering. Check your browser

    报错原因 电脑不支持gpu硬件加速 首先检查电脑是否支持硬件加速,检查方法见以下链接 https://jingyan.baidu.com/article/148a1921f009fb4d70c3b17 ...

  2. Forward vs Deferred vs Forward+ Rendering with DirectX 11

    原文:http://www.3dgep.com/forward-plus/ Introduction Forward rendering works by rasterizing each geome ...

  3. OpenGL 文本渲染Text Rendering

    OpenGL文本渲染Text Rendering 文本渲染Text Rendering简介 经典文本渲染:位图字体 现代文本渲染:FreeType 着色器 渲染一行文本 更进一步 文本渲染Text R ...

  4. 前向渲染路径细节 Forward Rendering Path Details

    正向渲染路径细节 Forward Rendering Path Details Forward Rendering path renders each object in one or more pa ...

  5. 各Rendering Path技术以及其在Unity中的实现

    Rendering Path其实指的就是渲染场景中光照的方式.由于场景中的光源可能很多,甚至是动态的光源.所以怎么在速度和效果上达到一个最好的结果确实很困难.以当今的显卡发展为契机,人们才衍生出了这么 ...

  6. EGL Off-Screen rendering using GBM

    https://blog.csdn.net/weixin_42263483/article/details/100576577 最近研究EGL的off-screen rendering,特别是使用GB ...

  7. android6.0原生brower_Android Browser学习一 application的初始化

    Android Browser 是一个非常好的学习资料, 使用了自己设计的MVC架构,来管理书签, 浏览器 等各个功能,有具有一定的稳定性,知道我们学习 Browser是从Application开始启 ...

  8. next.js_Next.js手册

    next.js I wrote this tutorial to help you quickly learn Next.js and get familiar with how it works. ...

  9. 理论计算机图形渲染技术是否已经到了没有什么可以研究的地步了?

    理论计算机图形渲染技术是否已经到了没有什么可以研究的地步了? Offline渲染的各种技术理论已经完备,实时渲染技术除了实时GI之外已经没有研究价值? 添加评论 分享 按投票排序按时间排序 12 个回 ...

最新文章

  1. 学习《Linux设备模型浅析之设备篇》笔记(二)
  2. 刀模图是什么意思_“吃鸡”光子公布神秘图,海岛图上有44个坐标,暗示信号值取消?...
  3. 深入Java中文编码乱码问题及最优解决方法
  4. 访问进程环境变量environ时的一个坑
  5. cocos2d-x初探学习笔记(9)--粒子系统
  6. 视觉目标检测和识别之过去,现在及可能
  7. 谈软件测试---一年测试工作总结
  8. 微信浏览器发送ajax请求执行多次解决方法
  9. 大数据||MapReduce编程模板
  10. TensorFlow学习笔记(一)——入门资源整理
  11. java实现ftp连接、登陆、上传、下载、删除文件、获取目录、文件列表
  12. 一些常用SQL语句大全
  13. python 中关于系统路径的事项;
  14. 20170910算法工程师在线笔试之求第n个丑数
  15. [论文总结] 深度学习在农业领域应用论文笔记10
  16. 电脑android模拟器哪个好用,安卓模拟器哪个好用
  17. 学会感恩,学会分享,开始总结自己的职场经验
  18. CentOS 7安装并启动Google浏览器
  19. IBM WebSphere Portal宕机或性能低常见问题分析 及解决措施
  20. Visual Studio2017常用快快捷键

热门文章

  1. 统计出每个班分别有男女生各多少名
  2. 目标跟踪之光流法---光流法简单介绍
  3. 剑指OFFER之包含min函数的栈(九度OJ1522)
  4. mfc mfc100ud.dll丢失问题
  5. 移动互联网“去哪儿”?
  6. nginx热升级实现
  7. 09基于对象编程风格
  8. 科技社计算机部长竞选演讲稿,护理组长竞聘演讲稿_计算机专业组长竞聘演讲稿范文...
  9. javamailsender注入失败_Springboot 之 JavaMailSender发送电子邮件
  10. c语言怎么删掉一个空格,新人提问:如何将输出时每行最后一个空格删除