- 博客(127)
- 资源 (11)
- 收藏
- 关注

原创 Wasm的简介
由于公司项目的需求,现在主要是做脱Flash的工作(历史原因用AS3.0做的)!现在全部转为C++, 并且发布PC版与Web版。其中Web的版本就是使用的Wasm(WebAssembly技术)。 WASM ,全称:WebAssembly ,是一种可以使用非 Java 编程语言编写代码并且能在浏览器上运行的技术方案,也是自 Web 诞生以来首个 Java 原生替代方案( 程序本质上都是脚本程序,...
2019-01-31 23:59:42
62964
3
原创 skia的学习与研究
最近在研究skia,发现skia的资料再国内是真的少!技术交流群、生态也是少得可怜。这里特地把skia学习笔记发布出来,完善资料。
2025-03-03 00:21:25
908
原创 移动端GPU 带宽功耗优化
主要是讲述移动端GPU的带宽优化,减少移动端的功耗,根据GPU的硬件架构与load/store操作,还举例arm 的mali的性能分析。根据需求修改代码设置修改load/store actoin
2024-09-07 23:16:52
1340
原创 GPU的shader分支跳转性能总结
在很多的博客或者教科书方式的说GPU的跳转分支会中断GPU的并行,会增加耗时等,哪现代的GPU对于分支跳转的性能是怎么样的!这里将深入的讨论并且实测。
2024-07-29 23:38:24
1563
2
原创 移动端的HSR技术
主要是介绍移动端的HSR技术以及early-z技术,它们都是为了解决overdraw问题,也会提到涉及HSR的on-chip内存。
2024-06-22 19:00:57
1224
原创 三维大场景管理-3Dtiles规范
这篇文章都是三年前写的了,一直在笔记库存中,今天把他放出来。主要是讲Cesium 的3Dtiles 格式,当然3Dtiles主要是解决场景管理+大场景的LOD实现的问题,
2024-05-28 01:36:33
1208
原创 动画原理:表面形变算法的思考与总结
之前我的文章有大致的讨论过形变算法,介绍的也比较粗略!现在主要是想在Triangulated Surface Mesh Deformation方向上更深入的讨论一下!结合今年我对这一块的学习谈谈我的理解~下面要介绍大致几种算法,不管是拉普拉斯形变算法或者它的形变还是ARAP的形变,本质上都是,通过在网格人为的定义一些控制点或控制边,然后根据控制点或控制边的移动来影响网格的形状。
2024-03-01 00:08:58
2355
2
原创 移动端或游戏布料的解算
主要介绍PBD算法,目标是移动端能实现布料的模拟与仿真,讲述布料模拟的基础理论原理,数学公式,PBD算法的详解;有Nvcloth、GPU等的实现方案。
2023-11-30 23:59:34
2366
原创 Z-Fighting问题解决(二) - Reverse-z
开头梳理cg的Z的基本知识,然后介绍由于深度精度分布不均导致Z-Fighting等问题及其使用Reversed-Z 的解决方案。
2023-10-16 20:09:40
1085
原创 C++ 高级特性:右值与new
在现代的C++中,左值表示一个可修改并具有持久身份的对象,而右值表示一个临时对象,其值可以用作初始化其他对象左值:表示对象的内存位置,可以在赋值操作符的左边,例如变量名、数组元素或解引用指针。右值:表示一个临时的、短暂存在的值,例如字面量或结果为临时对象的表达式。它们通常不能在赋值操作符的左边。右值引用(通过&&符号表示)是 C++11 引入的一种新类型的引用,右值引用主要用于捕获临时对象(右值),这些对象通常在表达式求值后就被销毁。
2023-08-07 01:23:40
435
原创 传统图形学对nerf的对比与应用落地
传统图形学:显示表达几何表达方式:网格(Mesh)、点云(Point cloud)、体素(Voxel)、隐式函数(Implicit),渲染主要包括两种:1、渲染管线(主实时);2、光线追踪(主离线,现也出现PC的实时光追)nerf:nerf本质上提供了一种新的逆渲染方式,通过神经网络模拟连续的场+体渲染的方式。同时也是隐式可微渲染,创造性的引进神经网络达到惊艳的效果。
2023-06-01 00:01:04
2381
原创 Mesh形变算法
作者正好因为动画、模拟仿真等等的重大需求需要预先研发离散形的模型Mesh的形变算法,这里做一个总结与分享分享。这里主要是讲1、空间形变、2表面形变
2023-04-29 03:26:16
4366
1
原创 粒子系统实现与原理
先简单讲述粒子的基本概念,包括分类等等,结合本人做过,在公司实现的粒子系统的思路、总结等等,包括未来也是比较新的粒子系统实现方式,根据需求制作一个粒子系统。
2022-09-30 23:59:32
4866
原创 PBR学习笔记
PBR更通俗一些的称呼是指基于物理的渲染(Physically Based Rendering),它指的是一些在不同程度上都基于与现实世界的物理原理更相符的基本理论所构成的渲染技术的集合。值得特别注意的是:需要FBO,立方体贴图,Gamma校正,HDR和法线贴图相关知识同时实时渲染PBR与BRDF 等等相关是 探讨的内容属于渲染的相当高端的领域;
2022-08-20 10:00:00
1433
原创 图形管线(一)后处理阶段 alpha测试 模版测试 深度测试 混合
在实时渲染中不管是TA、游戏特效等等,工作中或者面试经常用到或者问道,所以本人今天来梳理总结一番!光栅化一般分为 三大阶段,应用程序阶段->几何阶段->光栅化阶段,也可以四大阶段 应用程序阶段->几何阶段->光栅化阶段->后处理阶段.........
2022-07-19 02:54:53
1773
原创 gltf 格式二
gltf按照图形编程所需的格式来存储数据,借以二进制编码提高传输速度。**gltf不再使用面向对象的思维存储三维模型、贴图纹理,而是按显卡的思维存储,存的是顶点、法线、顶点颜色等最基础的信息,只不过组织结构上进行了精心的设计!它面向终点,就意味着可编辑性差,因为渲染性能的提高牺牲了可编辑性。**它不再像fbx、obj一样容易编辑和转换。glTF的核心优势就是对于Buffer的读取, Buffer中读取的数据可以直接用memcpy的方式作为BufferGeometry数据传到GPU中。gltf的形式:g
2022-03-19 20:04:57
1590
原创 精度丢失导致扭曲与抖动
数据的问题准确说是 精度问题导致的,最好用相对坐标系别用绝对的,相对相机或者项目初始配置一个左下角点,然后所有的顶点减去这个左下角点,最好是用相对相机的,这样不用管顶点多大,最后都是小坐标 (工程人员干图形都是糙快猛,啥都不懂 数据用double,不知道GPU是float 精度损失常事了)相机对数深度缓冲:(解决Z-fight)(首先猜测是否是Z-fight) 这个有点类式于这吧顶点位置的数值太大,gpu运算的精度不够,会导致顶点位置错乱 相机有个对数 就是根据相机的近截面显示的详细一些,远截.
2022-02-25 01:40:43
2260
5
原创 透明的渲染
透明分为两种:透明测试(Alpha Test),透明混合(Alpha blending),其中透明度测试只是根据Alpha通道 阈值把对应的像素discard丢弃,得到的并不是真正的透明!Alpha blending是得到真正的透明.
2022-01-27 18:36:10
5928
原创 曲面细分(subdivision)&曲面细分着色器&GPU的LOD
曲面细分是指将一个模型的面合理的分成更多小的面,从而提升模型精度,提高渲染效果 曲面简化是指将一个模型的面合理的合成更少的面,从而降低模型精度,为特定情形下提供使用(如LOD技术) 。这一过程是可以在CPU中完成的,但组织多个点的动态添加和删除,并且更新同步到着色器所需的vb中,这一过程比较消耗性能,并且实现起来也不能算是特别容易的事情。一个比较理想的做法应该是在GPU硬件中完成相关的操作(曲面细分做色器),并且给用户提供一些可编程的接口。曲面细分着色器(GPU):带着这一目的,DirectX 11引入
2021-12-07 00:15:09
3582
原创 合批/批量渲染 (Batch)、实例化Instancing
可以简单的理解为:批量渲染是通过减少CPU向GPU发送渲染命令(DrawCall)的次数,以及减少GPU切换渲染状态的次数,尽量让GPU一次多做一些事情,来提升逻辑线和渲染线的整体效率。但这是建立在GPU相对空闲,而CPU把更多的时间都耗费在渲染命令的提交上时,才有意义。合批最重要的前提:材质必须相同!!!合批是节省了CPU的相关准备工作的工作量。合批后,经过VS,PS,尝试测试,模板测试后,此时已没有了纹理,顶点,索引的概念,只剩下一个个孤立的像素,各像素间没有任何关系了。像素送到GPU后进行批
2021-11-15 19:32:27
8447
原创 纹理优化三-KTX纹理压缩
KTX (Khronos Texture) 是一种纹理存储格式,大部分移动设备的 GPU 均支持这种格式。可以有效降低设备的显存占用,提高运行效率和稳定性。ktx是容器,astc是算法。ktx存的图像可以是BCn,astc,etc,astc存储的结果也可以放在ktx或者dds,或者自己随便弄个raw buffer存。 如果网络流式传输完全不需要这些gpu用的压缩啊(只需要体积减少)有压缩比更高还无损的比如zip(纹理压缩体积会变大,这个是给你GPU读取更快的算法) 这个是给你GPU读取更快的算法.纹.
2021-11-10 23:40:22
7850
原创 空间数据结构
前言:空间分割、引擎场景图、场景管理,CSG、光追加速等等都需要用到空间数据结构,它是一些通用的算法抽象,主要用于空间2D 、3D等等所以才称为空间数据结构,我这次是做了PPT、研究讨论最后演讲也分享部分出来~
2021-10-25 14:47:36
3597
原创 Web图形从flash到webgl次世代Webgpu
我刚刚大学毕业的时候第一份工作就是要脱flash,搞成webgl+wasm+C+++自研引擎,也算有缘分最后能碰到了第一代flash,然后是现在webgl1.0 ,下一代的也出来了兴奋,耳闻webgpu是移动端web的救星!!!WebGPU 是用于加速图形和计算的未来 Web 标准和 JavaScript API 的工作名称,旨在提供“现代 3D 图形和计算能力”。 它由 W3C GPU 为 Web 社区组开发,工程师来自 Apple、Mozilla、Microsoft、Google 等。与 WebGL
2021-10-01 16:30:50
1752
原创 HLSL & CG 与glsl着色器编译及其原理
Shader简介:Shader Language的发展方向是设计出在便携性方面可以和C++、Java等相比的高级语言,“赋予程序员灵活而方便的编程方式”,并“尽可能的控制渲染过程”同时“利用图形硬件的并行性,提高算法效率”。Shader Language目前主要有3种语言:基于 OpenGL 的 OpenGL Shading Language,简称 GLSL;基于 DirectX 的 High Level Shading Language, 简称 HLSL;还有 NVIDIA 公司的 CG
2021-09-09 23:44:18
5679
原创 GPU的架构(一)
gpu的驱动框架:1、窗口标准的实现是与操作系统强相关的,它为图形渲染提供目标内存。一般来说,只要支持的标准不变,操作系统更换/升级,对驱动的代码影响就只限在窗口这一块。2、编译器用于编译shader或kernel,编译kernel需要用llvm预编译,编译器会大一些。低端GPU的编译器特别容易出现各种语法不支持,让写shader的人痛苦万分。3、通用计算的实现就是把kernel编译后转成任务扔给内核去跑,相对简单。4、图形渲染的实现则需要考虑到一帧中可能有重复渲染/过度绘制的情况,为了这方面做优
2021-09-05 06:13:54
12704
原创 渲染性能优化之Culling 剔除
几种剔除:背面裁剪(Backface Culling)视锥裁剪(View Frustum Culling)遮挡剔除(Occlusion Culling)层次视锥裁剪(Hierarchical View Frustum Culling)入口裁剪(Portal Culling)细节裁剪(Detail Culling)像素剔除(Pixel Culling)在计算机图形学中,相对应的就是裁剪技术(Culling Techniques)所要做的工作——“从大量游戏事物中进行删除”。所谓的“大量事物”就
2021-06-18 20:04:29
3129
原创 渲染性能优化之几种LOD层次细节总结
LOD细节层次(Level of Detail,LOD)的基本思想是当物体对渲染出图像贡献越少,使用越简单的形式来表达该物体。这是一个已经在各种游戏中广泛使用的基本优化技术。一般情况下,完整的LOD算法包含3个主要部分:生成Generation(手动生成可以也可以减面生成)选择Selection切换Switching(切换不同精度的模型)从一个细节层次转换到另一个细节层次,而这个过程便称为LOD切换。LOD的切换 | LODSwitching当从一个LOD切换到另一个LOD的时
2021-06-02 01:08:57
14024
原创 移动端GPGPU 架构
最近在面试的时候发现移动端现在是越来越热,然后就有被问到GPU的框架什么的PC端的这个可以参考这个:GPU硬件架构及其运行机制移动端的与PC端有很大的区别!比如移动端可以说没有独立的显存只有些寄存器cache 和on-chip memory!立即渲染模式IMR :IMR(Immediate Mode Rendering)就如字面意思一样——提交的每个渲染要求都会立即开始,这是一种简单而又粗暴的思路,优点缺点都非常明显,如果不用为性能担忧,这种方式会很省事,但是IMR的渲染实行的是无差别对待,那些遮蔽处
2021-05-10 10:34:04
891
2
原创 RenderDoc 调试web
由于学习闫老师的GAMES202 用到了webgl所以需要webgl抓帧调试一下~配置:会弹出小窗口,记住PID:然后files->inject into process 输进去刚刚小窗口弹出来的点击注入当然弹出的小窗口点击确定就可以了;当然有的可能会出现配置不成功就需要方式二:需要写个DEBUG_CHROME.bat脚本:set RENDERDOC_HOOK_EGL=0"C:\Program Files (x86)\Google\Chrome\Application\chrom
2021-04-02 15:59:45
5561
12
原创 BRDF(一)
辐射度量学:辐射通量(Radiant Flux,又译作光通量,辐射功率)描述的是在单位时间穿过截面的光能,或每单位时间的辐射能量,通常用Φ来表示,单位是W,瓦特。其中的Q表示辐射能(Radiant energy),单位是J,焦耳。对一个点(比如说点光源)来说,辐射强度表示每单位立体角的辐射通量,用符号I表示,单位 :概括一下:辐射强度(Radiant intensity,又译作发光强度),表示每单位立体角的辐射通量,通常用符号I表示,单位 ,瓦特每球面度。辐射率(Radiance,又译作光亮
2021-03-26 15:30:09
2105
原创 Z-Fighting问题解决方案实例(一)
三角形mesh出错边拓扑结构乱掉导致的,这里大量的建筑模型都出现问题),再重面触发被动fitting! 既然由重面引发的,解决重面就可以Z-Fighting啦。Z-Buffer使用深度缓冲(Z-Buffer),Z-Buffer又名 Depth buffer来完成场景可见性计算,即确定场景哪部分可见,哪部分不可见。深度缓冲(Z-Buffer)是一个二维数组,其中的每一个元素对应屏幕上的一个像素,如果场景中的两个模型在同一个像素生成渲染结果,那么图形处理卡就会比较二者的深度,并且保留距离观察者较近的物体.
2021-02-02 11:06:13
8398
7
原创 Mesh平滑处理的几种算法比较
平滑(smooth)3D平滑处理是一种减少锯齿(阶梯状线条)的技术。 平滑处理可设置为有利于提高系统性能或改进图象质量。(功能可以查看3Dmaxblender等等)网格平滑属于数字几何处理领域的问题,计算机图形学和计算机辅助设计中,用多边形网格可以表示复杂的三维实体。随着三维扫描和曲面重建技术的发展,得到这些实体表面的多边形网格表示已经不是难事,但所得到的表面往往包含含噪声。在形状设计领域,在散乱点拟合和光滑形伏、纹理映射等应用领域,都有对平滑曲面的极大需求。故产生了网格平滑这一个研究点。如下图
2021-01-05 00:06:49
18549
2
转载 纹理优化二-模型贴图优化
在大型的场景下,不然城市模型或者建筑等等顶点face居多单单做减面还是远远不够的,但是单单这里还远远不够,比如给的模型一个房子就非常多的纹理然而很多时候贴图文件往往大于模型。此时则需要将模型和贴图分开进行处理(建模时分开输出一个打好 UVtag 纹理坐标的“白模”和需要用到的纹理贴图)。下面介绍如何优化用于应用程序渲染的贴图文件。
2020-12-14 11:39:42
2667
原创 gltf格式一、简介
GLTF介绍:glTF 称为“ 3D 界的 JPEG”,使用了更优的数据结构,为应用程序实时渲染而生。glTF 有以下几大特点:由现有 OpenGL 的维护组织 Khronos 推出,目的就是为了统一用于应用程序渲染的 3D 格式,更适用于基于 OpenGL 的引擎;减少了 3D 格式中除了与渲染无关的冗余信息,最小化 3D 文件资源;优化了应用程序读取效率和和减少渲染模型的运行时间;支持 3D 模型几何体、材质、动画及场景、摄影机等信息(因为gltf已经把整个场景都放到里面去了所以当然支持动画
2020-12-10 11:24:44
16867
原创 纹理优化一、纹理压缩
通常无人机拍摄生成的地形模型文件较大(倾斜摄影),要将三维模型显示到网页上,先要压缩模型(可以减面删除重复点、重复的面),前面这些已经实现了再来就是进行的纹理压缩!像我们做CIM,智慧城市场景主要是室外当然也有部分室内的功能与展示那一部分是BIM只有在高精度模型才能使用 BIM 的功能,平时比如漫游或者在城市模型比如广州这种特大城市场景里面非常多的模型建筑数据消耗内存还有卡顿问题资源的管理与优化是非常重要的以及使用LOD,来回切换高精度与低精度的模型,但是单单这里还远远不够比如给的模型一个房子就非常多的纹理
2020-12-07 19:13:19
3864
2
原创 三角网格(Triangle Mesh)与四角mesh网格理解总结
由于公司项目要求用opengl实现减面与曲面细分,所以整理总结了一下三角网与四角网的一般特性与特点优缺点等等~
2020-11-09 22:59:18
25529
2
斯坦福龙、斯坦福兔子 、弥勒佛 、犹他茶壶等等经典图形学3D模型Obj格式
2020-10-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人