自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 UE Mesh Draw Pipeline 解析

具体在gpu侧会将所有的数据对齐到float4cpu侧的gpuscene中的数据和gpu侧中的scenedate的buffer对应关系为:(左侧蓝色为gpu,右侧为cpu)

2023-08-23 00:36:57 318

原创 SIGGRAPH 2022--岩鸽彩虹色羽毛渲染阅读笔记:Rendering Iridescent Rock Dove Neck Feathers

论文核心观点:①论文作者提出了一个参数化的羽毛双向散射分布函数(BSDF),它封装了微尺度结构(单支羽毛)的统计。它在渲染时被完全评估和并进行了重要性采样。②论文作者通过改变局部阴影框架,在毫米级尺度(羽毛每根毛)上应用BSDF,提供丰富的细节,而不必明确地建模微观结构。③论文作者在模型中加入了彩虹色,减轻了混合头发和彩虹色着色器的需要。④论文作者使用测量和渲染的BSDF以及照片之间的一对一比较来验证作者的模型。...

2022-07-14 00:15:46 772 1

原创 UE源码阅读[1]---由问题入手UE中的延迟渲染

延迟渲染:问题:1.UE 延迟渲染的Gbuffer是什么样的?2.怎么样处理多光源3.怎么样处理同屏不同的光照模型UE渲染部分的起点:UE的渲染部分从GameEngine.h 和 GameEngine.cpp

2022-07-02 16:59:06 1725

原创 CUDA入门:硬件模型入门与性能优化

最上方是主机端内存(host memory),指的就是我们常说的内存。一般主机端内存通过PCI-E总线与设备端内存交换数据。数据交换的速度等于PCI-E总线的速度。全局内存(global memory) 、常量内存(constant memory)、纹理内存(texture memory)、本地内存(local memory)。都位于GPU板上,但不在片内。因此速度相对片内内存较慢。常量内存和纹理内存对于GPU来说是只读的。GPU上有 L2 cache和 L1 cahce。其中L2 cache为所有流

2022-05-21 23:30:00 1585

原创 Games104笔记---LE7--渲染系统4:渲染管线,后处理

​普通项:这一个部分主要做fragshader的修改,我就不粘代码了,大家可以去手写一下我们可以分析一下这个lut图(关注01-06,因为格式一样)基本思路:他是十六块(假定资产规格都是这样),我们以color.b来采样块数,color.r为块内uv.u偏移,color.g为块内uv.v偏移。需要注意:①我们需要对块数采样做双线性插值。②uv.u偏移需要按照块数做除法,采样块数需要从原本uv的0-1映射到0到块数减一。提高项:加一个pass,这个问题其实有点难,如果没学

2022-05-15 23:22:15 1148

原创 OpenGL学习-----实用技术:场景管理与视锥体剔除

场景树建立:场景树的建立,这里讲一下建树,树里面保存根据自己的model矩阵,这个矩阵需要根据父物体的model矩阵做出相对变化。出于学习目的:代码会以欧拉角的形式展示,也是只是用oop,而不是odp属性的定义:

2022-05-07 18:16:43 1530

原创 实时高清渲染:全局光照(Global Illumination)[2]---漫反射/高光全局光照

预先计算的辐照度值通常与漫反射颜色或反照率映射相乘,存储在一个单独的纹理集。虽然从理论上讲,出射度(辐照度时间漫反射颜色)可以预先计算并存储在一组纹理中,但在大多数情况下,许多实际考虑排除了这种选择。颜色映射通常是相当高的频率,它们利用各种各样的平铺,并且它们的部分经常在模型中重复使用,所有这些都是为了保持合理的内存使用。辐照度值通常要低得多,而且不容易重复使用。将光照和表面颜色分开会消耗更少的内存。除了最严格的硬件平台外,现在很少使用预先计算的辐照度。根据定义,辐照度是针对给定法线方向计算的,因此我们

2022-04-27 19:43:03 2736

原创 Games104笔记---LE6--渲染系统3:游戏中的地形/天空/云渲染

​LE5--渲染系统2:光照、材质、Shadow:Games104笔记---LE5--渲染系统2:光照、材质、Shadow_This is MX的博客-CSDN博客LE4--渲染系统1:渲染基础:Games104笔记---LE4--渲染系统1:渲染基础_This is MX的博客-CSDN博客_渲染系统LE3--基础架构2:数据组织与管理:Games104笔记---LE3--基础架构2:数据组织与管理_This is MX的博客-CSDN博客LE2--基础架构1:引擎架构分层整体Pipeli

2022-04-22 15:55:55 4868

原创 寒霜PBR阅读与实践[1]:Material材质--Physically Based Rendering 3.0 --SIGGRAPH 2014

​Material材质:一个Material model,通常用BSDF(双向散射分布函数)进行模拟,可以分解为两部分:反射部分(BRDF)和透射部分(BTDF)。Material Model 材质模型:在这个标准材料模型的背景下,一个表面响应f通常被分解成两个不同的项称为“漫反射”(fd)的低角频率信号和称为“镜面”(fr)的低到高角频率信号。

2022-04-18 14:04:34 793

原创 光追渲染器开发记录:BVH加速结构构建与射线求交

目录为什么需要加速:BVH概念:BVH的一个节点:轴对称包围盒AABB:BVH的构建:核心思想:求取最大的包围盒:BVH求交:包围盒求交:基本思想:平面求交:具体做法:具体的物体求交:三角面求交:基本思想:球体求交:方法一:方法二:学习资料:上一篇:光追渲染器开发记录:基础渲染架构/线程池/泛型单例_This is MX的博客-CSDN博客https://blog.csdn.net/m0_56399931/article/det

2022-04-13 12:30:46 1562

原创 Games104笔记---LE5--渲染系统2:光照、材质、Shadow

LE6--渲染系统3:游戏中的地形/天空/云渲染:https://blog.csdn.net/m0_56399931/article/details/124347682 LE5--渲染系统2:光照、材质、Shadow:https://blog.csdn.net/m0_56399931/article/details/124113652LE4--渲染系统1:渲染基础:https://blog.csdn.net/m0_56399931/article/details/124026577LE3--基础架构2

2022-04-12 00:48:37 974

原创 Games104笔记---LE4--渲染系统1:渲染基础

LE6--渲染系统3:游戏中的地形/天空/云渲染:https://blog.csdn.net/m0_56399931/article/details/124347682 LE5--渲染系统2:光照、材质、Shadow:https://blog.csdn.net/m0_56399931/article/details/124113652LE4--渲染系统1:渲染基础:https://blog.csdn.net/m0_56399931/article/details/124026577LE3--基础架构2

2022-04-07 21:05:36 1139

原创 光追渲染器开发记录:基础渲染架构/线程池/泛型单例

目录程序的主入口:构建BVH:渲染循环:核心功能:多线程加速:泛型单例:消息队列:线程池:学习资料:上一篇记录:光追渲染器开发记录:开发环境配置Cmake+Vcpkg进行集成_This is MX的博客-CSDN博客https://blog.csdn.net/m0_56399931/article/details/123835101前记:个人水平有限,如果有改进的建议欢迎提出-------------------------------------------

2022-04-05 20:53:51 1135

原创 OpenGL学习---高级光照---法线贴图

增强纹理细节。例如,砖块的表面。砖块的表面非常粗糙,显然不是完全平坦的:它包含着接缝处水泥凹痕,以及非常多的细小的空洞。如果只用普通的纹理贴图,只有一件事决定物体的形状,这就是垂直于它的法线向量。砖块表面只有一个法线向量,表面完全根据这个法线向量被以一致的方式照亮。

2022-04-02 19:24:44 1904

原创 RealTimeRayTracing:光追降噪[2]--新的解决方案ATAA

虽然DXR解决了结合光栅化和光线跟踪的技术难题,但通过超采样应用光线跟踪来解决走样问题并非易事:当只给出1个SPP输入时,要知道哪些像素需要进行超采样,将成本降低到一定程度 ,这并不是单纯的光线追踪所能解决的。上面的内容演示了一个实用的解决方案来解决这个问题,它可以运行在一个商业游戏引擎中,甚至在第一代实时光线追踪商品硬件和软件上,并连接到完整的着色管线。在电影级渲染器中选择像素进行自适应超采样的地方,首先每个像素投射许多射线,而我们则通过利用TAA的历史缓冲区来检测走样,将成本分摊到许多帧中。我们进一步识

2022-04-02 16:55:08 1381

原创 光追渲染器开发记录:开发环境配置Cmake+Vcpkg进行集成

​目录目前Cmake里面的内容:Cmake语句简单解释:如何构建项目:题外话:为什么接入SDL?目前Cmake里面的内容:cmake_minimum_required(VERSION 3.22)set(VCPKG_ROOT "${CMAKE_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE PATH "")set(CMAKE_TOOLCHAIN_FILE ${VCPKG_ROOT})MESSAGE("th

2022-03-29 23:15:40 646

原创 Games104笔记---LE3--基础架构2:数据组织与管理

LE6--渲染系统3:游戏中的地形/天空/云渲染:https://blog.csdn.net/m0_56399931/article/details/124347682 LE5--渲染系统2:光照、材质、Shadow:https://blog.csdn.net/m0_56399931/article/details/124113652LE4--渲染系统1:渲染基础:https://blog.csdn.net/m0_56399931/article/details/124026577LE3--基础架构2

2022-03-28 21:52:00 3521

原创 光追渲染器开发记录----基础数学库建设

​前记:写渲染器的核心层需要有什么呢?肯定是数学库支持啊,所以我就打算先干个数学库。来看看我的基础数学库大概干了什么吧!(Github仓库应该会在我全部写完之后再开放)向量库基本功能:向量库主要包含什么功能呢· 基础的数学运算加减乘除· 点乘· 叉乘· 归一化· 长度· 后续还要有和矩阵库的算法(这一个部分就放到矩阵库里面弄了)vec3:将其改为一个泛型类vec4:将其改为一个泛型类vec2:同理vec2,直接做成泛型类

2022-03-27 00:49:44 215

原创 RealTimeRayTracing:光追降噪[1]--UE4中的光追降噪

目录UE4中的光追降噪:主要思想:Shadow 降噪:Glossy反射降噪:AO和Diffuse GI 降噪:前记:主要是前几天看到了一个问题就是光追怎么降噪,毕竟在实时渲染中光追不可能采用高的spp。所以由这个问题,自己就跑去翻了一波书,做一下记录。------------------------博主:mxUE4中的光追降噪:主要思想:在场景中,当试图解决渲染方程时,ue将出现的光路径分割开来。然后从不同的射线类型,例如,阴影,反射和漫反射射线,应用自定义过滤器。.

2022-03-24 13:31:35 2638 1

原创 Games101作业补全--所有作业含提高项

作业地址:https://github.com/1393650770/Games101-Homework包含作业零、作业一、作业二、作业三、作业四、作业五、作业六、作业七、作业八、大作业作业0:作业1:展示:普通要求:提高项:作业2展示:未抗锯齿:抗锯齿:以下代码一个图截图截不完,就只粘贴关键代码,需要的可以前往文章开头的作业地址查看普通要求:提高项:作业3:展示:normal:

2022-03-23 16:51:02 7817 3

原创 Games104笔记---LE2--基础架构1:引擎架构分层整体Pipeline

游戏引擎分层:游戏引擎自身【五层架构】:工具层--功能层--资源层--核心层--平台层还有第三方库为什么要分层呢?这个其实很好想,主要还是解耦,降低复杂性,让下层独立于上层,便于管理。并且层次之间的调用一般只允许上层调用下层的接口,不允许下层调用上层的接口工具层:核心功能:是更好地让开发者开发游戏,提高生成效率。比如地形编辑器,UI编辑器,Shader编辑器。这一层还有一个重要的功能就是DCC,让其他软件的资产无损导入我们的引擎,需要做资产导出器,资产导入器

2022-03-21 21:46:09 4021 1

原创 算法复现:OpenGL-ShadowMap/PCSS/CSM

前记:这篇文章将会实现普通的ShadowMap --- PCSS(Percentage-Closer Soft Shadows) --- CSM (Cascaded Shadow Maps)学不可以已-----------------------------博主:MX常规ShadowMap实现:问题:Shadow Acne(自重叠):

2022-03-19 13:39:40 1767 1

原创 Games104笔记---LE1--现代游戏引擎导论

前记:这个系列算是新开的坑吧,和网友们一同追完Games104这么课,做完作业,每次上完课三天内发出笔记基础理论:现代游戏引擎当代一些专业的引擎(物理、动画、渲染、等其他中间件)什么是游戏引擎:•矩阵的技术基础•创造的生产力工具•复杂性的艺术游戏里面的模拟,复杂的系统现代的游戏引擎需要有可扩展的API接口,允许程序员在不改变核心的情况下定义各种玩法。并且可以为数百名不同学科的开发人员顺利地一起工作。书籍推荐课程内

2022-03-14 22:43:22 4647

原创 OpenGL学习-高级OpenGL-ComputeShader

-----------------------博主:mx基本概念:OpenGL的Compute shader几乎可以被认为是独立于其他面向图形的阶段运行的独立管道。Compute shader是一种获得系统中图形处理器所拥有的计算能力的方法,不像Vertex 、Tessellation、Geometry、Fragment Shader,Compute shader可以被认为是一种特殊的、每个Compute shader都运行在单个工作单元上,称为工作项。而这些工作项被收集到一起,形成一个称为工.

2022-03-12 11:29:07 3442 1

原创 实时高清渲染:全局光照(Global Illumination)[1]

基础知识:这个部分简单介绍一下辐射度量学的基础概念,这个部分的中文翻译比较多,尽量在英文语境下理解Radiance:辐射率/辐亮度,指的是单位投影面积、单位立体角上的辐射亮度Irradiance:辐照度,指单位面积接收到的辐射通量Radiant flux:辐射通量,又称辐射功率,指单位时间内通过某一截面的辐射能量Radiant Intensity:辐射强度,表示的是在单位球面上,一个光源向每单位立体角所投送的辐射通量。Solid Angle:立体角,可以为

2022-03-05 22:38:50 1394

原创 OpenGL学习-高级OpenGL-实例化

简述:如果我们想以前一样渲染几千个物体,调用几千个渲染函数会极大的影响性能。与绘制顶点本身相比,使用glDrawArrays或glDrawElements函数告诉GPU去绘制你的顶点数据会消耗更多的性能,因为OpenGL在绘制顶点数据之前需要做很多准备工作(比如告诉GPU该从哪个缓冲读取数据,从哪寻找顶点属性,而且这些都是在相对缓慢的CPU到GPU总线(CPU to GPU Bus)上进行的)。所以,即便渲染顶点非常快,命令GPU去渲染却未必。如果我们能够将数据一次性发送给GPU,然后使用一个绘

2022-03-01 18:03:25 1290 2

原创 OpenGL学习-----高级OpenGL:几何着色器

简述:几何着色器在顶点着色器(以及曲面细分着色器)之后,专门处理场景里的几何图形,可以将创建或销毁几何图元,可以根据顶点的信息批量处理几何图形,对顶点附近的数据进行函数的处理,快速创造出新的多边形(Vertex Shader是专门处理多边形顶点的,而Geometry shader就是专门用来处理场景中的几何图形)输入输出:输入:图元—顶点,边,三角形等points:GL_POINTS (1)lines:GL_LINES, GL_LINE_STRIP, GL_LINE_LIST (

2022-02-24 08:00:00 1229

原创 UE Niagara---SPH流体模拟

--------------------------------------------------------------------------博主 :mx基础概念:SPH(Smoothed Particle Hydrodynamics)算法是一种流体模拟算法。SPH算法的基本设想,就是将连续的流体想象成一个个相互作用的微粒,这些例子相互影响,共同形成了复杂的流体运动,对于每个单独的流体微粒,依旧遵循最基本的牛顿第二定律。但是在SPH算法里,流体的质量是由流体单元的密度决定的,所以一般.

2022-02-08 19:52:45 2518 1

原创 OpenGL---基于四元数的摄像机系统

---------------------------------------------------------博主:mx基础概念:摄象机:OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉,而不是场景在移动。当我们讨论摄像机/观察空间(Camera/View Space)的时候,是在讨论以摄像机的视角作为场景原点时场景中所有的顶点坐标:观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向的观察坐标

2022-02-01 02:25:28 3930 1

原创 实时高清渲染:Shadows

--------------------------------------------------博主:mxShadow Volume(阴影体)基本流程:1.先画出Shadow Volume(阴影区域)从交点V0,V1向外延申得到V2,V3,这样就能生成一个四边形面,其他几个面也是这样生成,并且只画轮廓,而不是每个区域内的三角形都画2.z-Pass算法:我们使用模板缓冲区,首先先清除模板缓冲区,然后将场景绘制入帧缓冲区中并得到深度图,然后关闭zbuffer和关闭颜色输出,然后打开模板测试

2022-01-26 16:51:05 870

原创 实时高清渲染:详细介绍Deferrend Rendering技术

做一下笔记-----------------------------------博主:mx基本概念:在前向渲染中,会先把所有的物体都先渲染着色再对进行深度测试,这种方式复杂度与场景复杂度、光源个数有很大的关系,假设有n个物体,m个光源,且每个每个物体受所有光源的影响,那么复杂度就是O(m*n)。Forward Rendering的管线流程如下:延迟渲染:延迟渲染会使用一个pass将物体的深度、法线、纹理、材质信息等存入Gbuffer中,之后渲染着色的时候直接从Gbuffer中获取到信息进行着色,

2021-12-02 15:29:02 535

原创 OpenGL学习---1.3 创建窗口

前记:冲冲冲------------------博主:mx必需头文件/引用#include <glad/glad.h>#include <GLFW/glfw3.h>------博主:mx相关函数glfwInit():初始化GLFWglfwWindowHint():配置GLFW,有两个参数第一个参数代表选项的名称,我们可以从很多以GLFW_开头的枚举值中选择第二个参数接受一个整形,用来设置这个选项的值选项和对应值的文档:http://www.glfw.org/d

2021-09-12 20:10:16 276

原创 OpenGL学习---1.2 配置运行环境

前记:学习学习学习---------------------博主:mxGLFW简介:GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文,定义窗口参数以及处理用户输入下载链接:https://learnopengl-cn.github.io/01%20Getting%20started/02%20Creating%20a%20window/CMake简述:CMake是一个工程文件生成工具。用户可以使用预定义好的CMake脚本

2021-09-12 20:08:25 241

原创 OpenGL学习---1.1 OpenGL基本介绍

前记:非常有乐趣,学!!!-------------------------------博主:mx核心模式与立即渲染模式立即渲染模式(Immediate mode,也就是固定渲染管线):优点:这种模式下绘制图形方便,容易使用和理解缺点:OpenGL的大多数功能都被库隐藏起来了,开发者很少有控制OpenGL如何进行计算的自由,效率低核心模式(Core-profile mode):当使用OpenGL的核心模式时,OpenGL迫使我们使用现代的函数。当我们试图使用一个已废弃的函数时,OpenGL会抛出

2021-09-12 20:02:28 927

原创 Xlua学习笔记

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-09-12 20:00:18 706

原创 图形学入门---纹理压缩

图形学入门—纹理压缩前记:快学啊----------------------------------------mx基础:图片压缩格式基于整张图片进行压缩,无法直接实现单个像素的解析图片压缩格式无法被GPU识别,还需要经过CPU解压缩成非压缩纹理格式才能被识别纹理压缩格式基于块压缩,能够更快读取像素所属的字节块进行解压缩以支持随机访问ASTC纹理压缩格式介绍ASTC是在OpenGL ES3.0出现后在2012年中产生的一种业界领先的纹理压缩格式,它的压缩分块从4x4到12

2021-08-03 10:35:56 645

原创 Shader入门---曲面细分着色器和几何着色器

Shader入门—曲面细分着色器和几何着色器前记:学不可以停止-------------------------------mx基础知识:曲面细分着色器:可以将一个几何体细化为一个球体也能将一根直线无限向曲线逼近使用曲面细分的好处:直接使用顶点数更多的模型会带来更高的性能消耗,曲面细分能根据规则来动态调整模型的复杂度,达到对应的效果曲面细分着色器的输入输出:输入:Patch,可以看成是多个顶点的集合,包含每个顶点的属性,可以指定一个Patch包含的顶点数以及自己的属性功能:将图元细分(可以是

2021-07-31 16:55:49 2221

原创 URP---自定义后处理流程

URP—自定义后处理流程前记:默认的build-in管线的后处理挺简单,但是换了urp还想上后处理,使用这几天进行了学习---------------------mx屏幕后处理:通常指在渲染完整个场景得到屏幕图像之后再对这个图像进行一系列操作,实现各种屏幕特效。在build-in的管线中,后处理的基本流程是:预处理—用于提前检查各种资源和条件是否满足在OnRenderImage函数中对shader中的变量进行赋值,并根据shader对源图像进行处理URP后处理前期准备在包管理器中导入Uni

2021-07-22 14:48:46 1953

原创 Shader入门-------屏幕后处理

Shader入门-------屏幕后处理前记:需求需要,快速学习--------------------mx屏幕后处理:通常指在渲染完整个场景得到屏幕图像之后再对这个图像进行一系列操作,实现各种屏幕特效。Unity中提供一个接口OnRenderImage函数。声明如下:OnRenderImage(RenderTexture src ,RenderTexture dest) Unity会把当前渲染得到的图像存储在第一个参数对应的源渲染纹理中,通过函数中一系列操作后,再把目标渲染纹理,即第二个参数对应的渲

2021-07-19 11:09:51 437 1

原创 Unity相关--lua语法

笔记相关–lua语法前记:很久之前看的了,发到博客里记录一下-------------------mxprint("----------字符串---------")Str = “双引号字符串”Str2=‘单引号字符串’–获取字符串的长度print("----------字符串长度---------")S=“ACSsdad”S2=“速度”print(“字符长度”…#S)print(“汉字长度”…#S2)–字符串拼接通过 … 或者string提供的方法–[[string.forma

2021-06-25 20:50:15 249

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除