webgl核心要素
WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。显然,WebGL技术标准免去了开发网页专用渲染插件的麻烦,可被用于创建具有复杂3D结构的网站页面,甚至可以用来设计3D网页游戏等等。
渲染流水线设计如下:应用程序层 -> 硬件抽象层 -> 硬件层

为什么要选择GPU

CPU: 它的优点在于调度、管理、协调能力强,计算能力则位于其次,对同一数据做许多事。
GPU:相当于一个接受CPU调度的“拥有大量计算能力”的员工,对大量数据做同一样事,图形处理,矩阵运算,机器学习
Webgl核心要素
- 顶点着色器,片元着色器
- 坐标转换
- 申请缓存区 像素传递
- 光照(光源和反射)
- 纹理(坐标转换和像素映射)
- 观察者的视图矩阵 透视矩阵与正射矩阵
- 图形变换,平移,缩放,旋转
- 模型
- 游戏引擎Babylon.js,3D渲染引擎three.js
两大着色器
顶点着色器(Vertex shader):描述顶点(像素)特性比如的大小和位置,
片段着色器(Fragment shader):描述顶点点的颜色信息,处理像素点,使其显示在屏幕上

坐标系
webgl坐标系:中心原点在canvas坐标系的中心,右手定则坐标,范围从0到1,纹理坐标系:左下角为原点,范围从0到1,
canvas坐标系:左上角为原点
本地坐标系:模型被设计时的坐标系
世界坐标系:模型被放入到场景中时,场景的坐标系

光照
每个物体的光照由两个因素决定:
发出光线的光源的类型,平行光(太阳光);点光源(人造灯)聚光灯
物体表面如何反射光线,漫反射和环境反射
三维图形学术语着色:根据光照条件重建‘物体各表面明暗不一的效果’
视角投影
- 正射投影
也称盒状空间投影,物体看上去的大小与所在位置没有关系,适用于建筑模型等

- 透视投影
也称金字塔可视投影。近大远小,符合人眼观察

图形变换
缩放:gl_Position.w中的w值代表缩放比,齐次线性方程里的w
数学表达式:
平移:这个一个逐顶点操作,发生在顶点着色器上,用原始坐标的每个分量加上偏移量, 将声明的Tx,Ty,Tz偏移数值赋值给gl_Position,
数学表达式:
旋转:需要对顶点坐标进行三个步骤考虑:
旋转轴:你要指明通过哪个轴进行旋转;
旋转方向:逆时针还是顺时针旋转;
旋转的角度


利用数学的两角和公式:

更科学的方式是使用变换矩阵

webgl核心要素的更多相关文章
- CODING 敏捷实战系列课第二讲:Scrum 敏捷项目管理核心要素之 3355
Scrum 是敏捷开发流派中最著名和最落地的一支,全球 70% 以上公司的敏捷转型都是以 Scrum 起步.CODING 特邀敏捷顾问.CST & CTC 认证敏捷教练申健老师将在本课程< ...
- unittest自动化测试框架核心要素以及应用
1. unittest核心要素 unittest介绍 测试框架,不仅仅用于单元测试 python自动的测试包 用法和django.test.TestCase类似 1.1.unitest介绍和核心要素 ...
- 独立开发一个云(PaaS)的核心要素, Go, Go, Go!!!
最近一年的工作,有很大的比重在做云平台的事情,简单来说,就是为公司内用户提供一个PaaS,用户可以在我们的云平台上方便的将单机服务程序扩展为多实例程序,以平台服务化的方式对外提供.在这里简单分享一下. ...
- 基于.NetCore3.1系列 —— 日志记录之日志核心要素揭秘
一.前言 在上一篇中,我们已经了解了内置系统的默认配置和自定义配置的方式,在学习了配置的基础上,我们进一步的对日志在程序中是如何使用的深入了解学习.所以在这一篇中,主要是对日志记录的核心机制进行学习说 ...
- unittest核心要素
1 TestCase 一个TestCase的实例就是一个测试用例.什么是测试用例呢?就是一个完整的测试流程, 包括测试环境的准备(setUp),执行测试代码(run),以及测试后环境的还原(tearD ...
- kubernetes核心概念
摘抄自: https://www.cnblogs.com/zhenyuyaodidiao/p/6500720.html 1.基础架构 1.1 Master Master节点上面主要由四个模块组成:A ...
- Kubernetes核心概念总结
目录贴:Kubernetes学习系列 1.基础架构 1.1 Master Master节点上面主要由四个模块组成:APIServer.scheduler.controller manager.etcd ...
- Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理
Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理 说明:Java生鲜电商平台中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务 ...
- 游戏数值——LOL篇 以LOL为起点-说游戏数值设计核心思路
附 文 文档在今年三月份我动笔写了一小部分,但当时思路凌乱,行文梗阻,于是丢在一边构思了半年,现在又回过头来慢慢写,希望能写好写完吧,初衷是希望即时萌新也能看懂,但是好像并不能行——本 ...
随机推荐
- Jsoup配合 htmlunit 爬取异步加载的网页
加入 jsoup 和 htmlunit 的依赖 <dependency> <groupId>org.jsoup</groupId> <artifactId&g ...
- mysql计算日期之间相差的天数
TO_DAYS(NOW()) - TO_DAYS(createTime) as dayFactor,
- java word转html 报错 org/apache/poi/xwpf/usermodel/IRunBody
最终解决的办法是修改jar包版本,一定要对应上. <dependency> <groupId>org.apache.poi</groupId> <artifa ...
- vue集成百度富文本编辑器
1.前期工作,访问百度富文本官网下载相应的百度富文本文件,根据后端用的技术下载相应的版本,建议下载最新版UTF-8版 (有图有真相,看图) https://ueditor.baidu.com/webs ...
- 微服务SpringCloud之熔断器
学习SpringCloud微服务是参考纯洁的微笑博客,看到他提到股市的熔断我也忍不住吐槽一下,记得当时实施熔断第一天就熔断了,现在想想也还是搞笑,从之前的全民炒股到现在的全民炒房,都是一个炒字,问题是 ...
- py+selenium 老是定位不到文本内容【已解决】
问题:定位不到文本内容,路径也正确,该加frame也有加,等待时间也够长 测试: 上图看不出差异,但是测试1就定位得到,测试2就定位不到,为什么? 看下图就知道了 区别就在于,测试2后面多了个空格!! ...
- Netty(DotNetty)原理解析
一.背景介绍 DotNetty是微软的Azure团队,使用C#实现的Netty的版本发布.不但使用了C#和.Net平台的技术特点,并且保留了Netty原来绝大部分的编程接口.让我们在使用时,完全可以依 ...
- 前端手势控制图片插件书写四(图片上传及Ios图片方向问题)
1.在图片上传中,使用的input的type为File的属性.使用filereader的Api let that = this; var file = document.getElementById( ...
- Cocos2d-x 3.x中自定义渲染功能
1.第一种方法针对的是整个图层的渲染 重写visit()函数,并且在visit()函数中直接向CommandQueue添加CustomCommand,设置好回调函数. ...
- 你真的熟练使用webpack吗?
https://www.webpackjs.com/ 官网地址 当自己在简历中写着熟练使用webpack的时候,殊不知自己只是在vue脚手架,react脚手架的路上走着比较轻松而已. 当面试官问你这几 ...