CG Rendering v.s. Browser Rendering
浏览器的渲染技术 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相关推荐
- Your WebGL implementation doesn't seem to support hardware accelerated rendering. Check your browser
报错原因 电脑不支持gpu硬件加速 首先检查电脑是否支持硬件加速,检查方法见以下链接 https://jingyan.baidu.com/article/148a1921f009fb4d70c3b17 ...
- Forward vs Deferred vs Forward+ Rendering with DirectX 11
原文:http://www.3dgep.com/forward-plus/ Introduction Forward rendering works by rasterizing each geome ...
- OpenGL 文本渲染Text Rendering
OpenGL文本渲染Text Rendering 文本渲染Text Rendering简介 经典文本渲染:位图字体 现代文本渲染:FreeType 着色器 渲染一行文本 更进一步 文本渲染Text R ...
- 前向渲染路径细节 Forward Rendering Path Details
正向渲染路径细节 Forward Rendering Path Details Forward Rendering path renders each object in one or more pa ...
- 各Rendering Path技术以及其在Unity中的实现
Rendering Path其实指的就是渲染场景中光照的方式.由于场景中的光源可能很多,甚至是动态的光源.所以怎么在速度和效果上达到一个最好的结果确实很困难.以当今的显卡发展为契机,人们才衍生出了这么 ...
- EGL Off-Screen rendering using GBM
https://blog.csdn.net/weixin_42263483/article/details/100576577 最近研究EGL的off-screen rendering,特别是使用GB ...
- android6.0原生brower_Android Browser学习一 application的初始化
Android Browser 是一个非常好的学习资料, 使用了自己设计的MVC架构,来管理书签, 浏览器 等各个功能,有具有一定的稳定性,知道我们学习 Browser是从Application开始启 ...
- next.js_Next.js手册
next.js I wrote this tutorial to help you quickly learn Next.js and get familiar with how it works. ...
- 理论计算机图形渲染技术是否已经到了没有什么可以研究的地步了?
理论计算机图形渲染技术是否已经到了没有什么可以研究的地步了? Offline渲染的各种技术理论已经完备,实时渲染技术除了实时GI之外已经没有研究价值? 添加评论 分享 按投票排序按时间排序 12 个回 ...
最新文章
- 学习《Linux设备模型浅析之设备篇》笔记(二)
- 刀模图是什么意思_“吃鸡”光子公布神秘图,海岛图上有44个坐标,暗示信号值取消?...
- 深入Java中文编码乱码问题及最优解决方法
- 访问进程环境变量environ时的一个坑
- cocos2d-x初探学习笔记(9)--粒子系统
- 视觉目标检测和识别之过去,现在及可能
- 谈软件测试---一年测试工作总结
- 微信浏览器发送ajax请求执行多次解决方法
- 大数据||MapReduce编程模板
- TensorFlow学习笔记(一)——入门资源整理
- java实现ftp连接、登陆、上传、下载、删除文件、获取目录、文件列表
- 一些常用SQL语句大全
- python 中关于系统路径的事项;
- 20170910算法工程师在线笔试之求第n个丑数
- [论文总结] 深度学习在农业领域应用论文笔记10
- 电脑android模拟器哪个好用,安卓模拟器哪个好用
- 学会感恩,学会分享,开始总结自己的职场经验
- CentOS 7安装并启动Google浏览器
- IBM WebSphere Portal宕机或性能低常见问题分析 及解决措施
- Visual Studio2017常用快快捷键
热门文章
- 统计出每个班分别有男女生各多少名
- 目标跟踪之光流法---光流法简单介绍
- 剑指OFFER之包含min函数的栈(九度OJ1522)
- mfc mfc100ud.dll丢失问题
- 移动互联网“去哪儿”?
- nginx热升级实现
- 09基于对象编程风格
- 科技社计算机部长竞选演讲稿,护理组长竞聘演讲稿_计算机专业组长竞聘演讲稿范文...
- javamailsender注入失败_Springboot 之 JavaMailSender发送电子邮件
- c语言怎么删掉一个空格,新人提问:如何将输出时每行最后一个空格删除