shensunbo Blog

「离开世界之前 一切都是过程」

测量OpenGL指令执行时间

CPU和GPU的执行是异步的,CPU发出OpenGL指令后,并不会等待GPU执行完成,而是继续执行后续代码。因此,直接在CPU端测量OpenGL指令的执行时间是不准确的。 glFlush() vs glFinish() 方面 glFlush() glFinish() 作用 发送命...

汽车360环视-SVM

BEV 在2D俯视图布局中,车模和雷达UI可以使用正交投影 可以省略view矩阵和投影矩阵,直接根据2D视图的实际画布代表的物理距离,修改模型矩阵,将3D模型画上去 在2D视图中使用投影矩阵,会导致Z轴深度不同,看到的模型大小就不一致,当背景和模型不使用一个相机的时候,很难将模型放到正确的位置 直接使用模型矩阵的话,相当于去掉了相机,就不会产生远近的问题了,而是在一个平面上根据...

使用FreeType字体库为NV12的图像叠加水印

reference CPU方案,仅适用于简单的字符水印,比如时间戳等。复杂的水印建议使用GPU方案。 这个方案存在字体边缘有黑色边框的问题 😁 fixed TODO list 优化处理速度,目前X86上叠花费大概300us,FT_Load_Char总共占了200us,后续修改为将字符预渲染到查找表中,查表替代实时渲染。 已经修改...

HDRI图像制作skybox cubemap

使用到的网站 HDRI资源网站:Poly Haven 立方体贴图制作网站:HDRI to CubeMap 制作流程 从Poly Haven网站下载HDRI图像资源,选择合适的分辨率和格式(建议使用HDR格式以保留高动态范围信息)。 打开HDRI to CubeMap网站,上传下载的HDRI图像。 CUBEMAP VIEW可以调整显示区域和曝光度 点击sav...

尝试的优化渲染速度的方法-启动速度

加载模型-assimp 😫aiProcessPreset_TargetRealtime_Quality,这个配置包含了大量的计算 aiProcess_CalcTangentSpace:计算切线空间 🔴 高 aiProcess_JoinIdenticalVertices - 合并重复顶点 🔴 高 aiProcess_GenSmoothNorm...

blender制作各种纹理

AO 贴图 使用 使用乘法器与漫反射贴图相乘,增强阴影效果 制作 创建一个image texture 节点 new 一个纹理,命名为 *.png 选择render→cycles, 使用GPU计算 找到bake选项,bake type 选择 ambient occlusion, 点击其中的bake按钮开始制作AO贴图 切换至texture节点,保存纹理图片到...

renderer渲染器问题及解决方案

模型加载速度问题 assimp的aiProcessPreset_TargetRealtime_Quality配置加载速度慢 问题: aiProcessPreset_TargetRealtime_Quality 包含了 CalcTangentSpace 这个选项,会计算切线空间,导致加载速度变慢 解决方案:使用DCC工具预先计算好切线空间,导出模型时选择包含切线空间的数据,然后在加载...

使用PS修改图像中一个元素的位置

TODO: 尝试了使用一些AI软件去做一个简单的修改需求,把上图中女孩手中的气球绳子长度缩短五分之二,让气球离女孩更近一些。但不知道为什么AI给出的结果总是修改了很多东西,包括但不限于气球飞到头顶了、手的位置变了、气球的样子变了和自动美颜了等等😇用的是豆包和腾讯元宝,简直让我对这类软件的图像处理能力刮目相看,还是自己研究一下怎么使用PS吧,以后可能还会用到这种能力 待办列表 理解为什...

尝试的优化渲染速度的方法

使用perf等工具看一下火焰图,检查一下时间都去哪了👀 减少uniform更新次数 使用UBO将多个uniform打包,并绑定到相应的mesh上,比如材质属性和纹理加载状态 TODO:会增加GPU内存开销,没具体验证过实际影响,也不一定是最佳实践 🤷‍♂️ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 layout (std140) uniform M...

valgrind 使用

install 1 sudo apt-get install valgrind basic usage 1 valgrind --leak-check=full ./your_program 1 2 3 4 5 6 valgrind --leak-check=full \ --show-leak-kinds=all \ --track-origin...