第六章:反走样与深度缓冲
反走样和深度缓冲 上节课提到: MVP变换后,把得到的[-1,1]3区域映射到屏幕上。光栅化的思想:用像素的中心对三角形的可见行函数进行采样。 本节课学习的主要内容: 反走样 采样理论 实际图形学中怎么做反走样 可见性/遮挡 深度缓冲 采样在图形学中是一种广泛的做法: ...
反走样和深度缓冲 上节课提到: MVP变换后,把得到的[-1,1]3区域映射到屏幕上。光栅化的思想:用像素的中心对三角形的可见行函数进行采样。 本节课学习的主要内容: 反走样 采样理论 实际图形学中怎么做反走样 可见性/遮挡 深度缓冲 采样在图形学中是一种广泛的做法: ...
光栅化(三角形) 上节课提到了观测变换:包含视图变换和投影变换。当完成观测矩阵变换后,下一步需要怎么绘制到屏幕上?这就是光栅化 上节课提到透视投影转换为正交投影,近平面和远平面 z 轴位置不变,远平面大小变成和近平面一样大。 正交投影里:x 轴定义左(l)和右(r),y 轴定义上(t)和下(b),z 轴定义远(f)和近(n)。 锥体定义 n 和 f 在正交投影和透视投影里面都是一样...
补充知识:旋转矩阵的逆等于它的转置,如果一个矩阵的逆等于它的转置,数学上称为正交矩阵 本章知识: 3D 变换 viewing(观测)变换 View(视图)/Camera transformation Projection(投影) tranformation Ortho...
一般性原则 依据数据而不是凭空猜测 这是前端性能优化的第一原则,当我们怀疑前端性能有问题的时候,应该通过测试、浏览器开发者工具、性能分析工具来分析出哪里有问题,有的放矢,而不是凭感觉、撞运气。一个前端页面有了性能问题,瓶颈有可能是 JavaScript 执行时间过长,有可能是网络请求过多或请求资源过大,有可能是 DOM 操作频繁导致重排重绘,大方向的定位可以使用浏览器开发者工具的 Per...
变换 本章学习内容: 为什么学习变换 2 维空间变换:旋转、缩放和切片 齐次坐标 变换组合(不同的变换组合形新的变换) 3 维空间变换 为什么学习变换 变换分为:模型变换、视图变换 变换的重要应用: modeling translation:描述摄像机的运动(位置移动) modeling rotation:机器人动画关节转动,逆运动学 modeling...
第一章 图形学概述 1.图形学应用场景 游戏场景渲染、电影特效、动画、设计、可视化(人体三维扫描)、虚拟现实、数字绘图、模拟、GUI、字体排版等 2.图形学包含内容: 数学:矩阵、曲线、曲面 物理学:光学、着色 描述、操作三维的不同形体 动画、仿真 3.本课程包含的内容: 光栅化 ...
最佳实践 按需做事-不提前做 按需做事,即在代码中计算和取值应该在需要的地方进行,而不是提前进行。这是因为如果在逻辑判断之前就进行计算,而后面的逻辑判断没有进入,那么这段代码就会白白消耗时间,从而降低了代码的效率。因此,按需做事是一种更加高效的编程方式。 在函数中,有时我们会提前获取或计算所有属性,但是如果后面的逻辑判断没有用到这些属性,那么这部分计算就是无效的,浪费了时间和资源。因此...
最佳实践 按需做事-不提前做 按需做事,即在代码中计算和取值应该在需要的地方进行,而不是提前进行。这是因为如果在逻辑判断之前就进行计算,而后面的逻辑判断没有进入,那么这段代码就会白白消耗时间,从而降低了代码的效率。因此,按需做事是一种更加高效的编程方式。 在函数中,有时我们会提前获取或计算所有属性,但是如果后面的逻辑判断没有用到这些属性,那么这部分计算就是无效的,浪费了时间和资源。因此...
拦截器是一个函数 async (ctx, next) => { do sth... } 它有两个参数。第一个参数是一个上下文,这个上下文在多个拦截切面中是共享的。第二个参数是一个 next 函数,调用它会进入下一个拦截切面。 class Interceptor { constructor() { this.aspects = []; // 用于存储拦截切面 ...
使用 node 构建 web 应用时,并不单单响应一个简单的 hello world,在一个实际的业务中,我们也许会做这些: 请求方法的判断。 URL 的路径解析。 URL 中查询字符串解析。 Cookie 的解析。 Basic 认证。 表单数据的解析。 任意格式文件的上传处理。 这样一个完整的项目中需要处理很多的细节,当然你也可以都写在一起,但这样代码...