- 博客(22)
- 收藏
- 关注
原创 < 山东大学软件学院项目实训 > 渲染引擎系统(七)
目录前言创建窗口展示帧率窗口设置窗口大小窗口本节主要补全了前文实现的菜单选项的具体功能,其中包括创建窗口、按钮的步骤。Gui文件中window类用于创建窗口,其中包含两个构造函数,主要参数包括Gui实例对象、窗口名称、窗口大小、窗口坐标、窗口特性等。其中,窗口特性WindowFlags包括如下选项:了解基础的底层函数后,就可以用以创建窗口。窗口名称为FPS,大小为{0,0},坐标为{10,25},窗口的特性包括允许移动 | 允许自动调整大小 | 窗口出现时自动聚焦。之后使用帧对象gpFramew
2022-06-07 16:24:14
171
1
原创 < 山东大学软件学院项目实训 > 渲染引擎系统(六)
目录前言主要工作具体代码本节的主要内容为点击下拉菜单选项后的功能实现。掌握信息显示的方法,并结合UI选项尝试实现了文本信息窗口。在上文的代码中实现了下拉菜单的UI布局,并编写了与之对应的功能函数shortcuts(快捷键提示)、about(相关信息提示)。代码主要使用msgBox函数生成消息显示框,具体参数如下:在shortcut是函数中,需要访问系统框架中自带的快捷键内容,例如退出界面、隐藏全部UI、捕捉当前相机位置等(这些信息为系统自定义,需要使用函数访问)。在msgBox函数中传入字
2022-06-06 20:00:00
142
原创 < 山东大学软件学院项目实训 > 渲染引擎系统(五)
目录前言主要工作一、具体实现最近访问script选项最近访问scene选项二、结果展示前几节中实现了加载script与scene的功能,为了方便使用,增添了最近访问目录以便快速读取。了解底层的功能函数,编写记录与访问最近访问文件的功能。首先,使用 mpRenderer 父对象的 getAppData函数 获取当前的应用数据对象,该对象拥有成员函数getRecentScripts 函数,由于在每次加载函数时使用appData.addRecentScript函数,将访问过的文件路径写入json文件中。每次生成渲
2022-06-06 14:31:19
131
原创 < 山东大学软件学院项目实训 > 渲染引擎系统(四)
目录前言主要工作一、生成菜单与次级菜单二、完成基础的菜单布局三、实现键盘快捷键本节主要讲述菜单、次级菜单、分隔符等的运用,以及工具栏UI的实现,并实现快捷键功能。本项目使用的软件框架中,包含了UI组件的使用方法,本节的主要工作就是使用对应的函数,实现UI界面的布局以及界面的开启、关闭、快捷键的功能。菜单等组件的生成可以在void MogwaiSettings::renderMainMenu(Gui* pGui)函数中实现。函数的最开始保留了鼠标操作的判定,如果隐藏工具栏或鼠标坐标y值大于等于20时,该
2022-06-06 13:49:54
149
原创 < 山东大学软件学院项目实训 > 渲染引擎系统(三)
目录前言本节内容用于transform功能的实现渲染器包括了基础的模型信息系统,因此图形学中关键的坐标系变化相关的功能是必要的。本节主要讲解平移、旋转、缩放的相关函数与数据结构的实现。1、头文件包含了transform类,包括translate、scale、rotate等,并且编写了将欧拉角转化为四元数的功能,此外还包括了基础的lookat视锥体变化函数。2、函数体的内容如下以上就是本节的全部内容......
2022-06-04 14:29:13
216
原创 < 山东大学软件学院项目实训 > 渲染引擎系统(二)
目录一、主要工作二、具体实现三、结果展示本节内容用于讲解点云生成的相关工作。为了实现预计算,第一步是要在场景模型上分布点云,传统的采样过程随机,生成的点云不够均匀,所以要用一些更好的方法,例如依靠泊松圆盘的采样方法。这里是一个不错的采样方式,它与传统采样方式不同,通过给采样分配权重,在给定点集上自动进行泊松圆盘采样,生成的样本较之原先更满足蓝噪声性质。1、首先确定初始点集数量与希望得到点云数 2、计算每个mesh中每个三角面片面积3、确定每个mesh上的 输入点云和输出点云数4、根据三角形面积确定采样权重(
2022-06-04 14:24:15
98
原创 < 山东大学软件学院项目实训 > 渲染引擎系统(一)
目录前言本阶段任务一、主要工作二、具体实现1.获取预计算输出图片2.逐像素获取BRDF数据3.还原图像前言本项目希望实现一个基础渲染器,同时能够支持使用预计算。项目地址本阶段任务本月主要任务为技术准备,从而为后续研究提供技术支持:1、辐射预计算的研究;2、市场现有的后降噪处理 SDK 的技术探究。一、主要工作处理光照预结算结果,应用双向反射分布函数(BRDF)将其还原为实时渲染的最终结果。二、具体实现1.获取预计算输出图片具体流
2022-04-23 16:30:33
440
原创 【Overload游戏引擎】源码分析之十三:OvRendering函数库(十一)
2021SC@SDUSC目录1.Driver1.1构造函数1.2InitGlew1.3GLDebugMessageCallback2.Renderer2.1Draw2.2FetchGLState2.3ApplyStateMask前面的文章中,我们大致梳理了一遍与图形学渲染相关了一些代码,本节我们就来看看游戏引擎是怎样呈现出我们所看到的这样的窗口的。1.DriverDriver类为我们创建了一个OpenGL的环境来显示窗口。class Driver {.
2021-12-23 00:00:00
284
原创 【Overload游戏引擎】源码分析之十二:OvRendering函数库(十)
2021SC@SDUSC目录1.投光物1.1平行光1.2点光源1.3衰减1.4聚光1.5平滑/软化边缘2.Light2.1GenerateMatrix2.2Pack2.3CalculatePointLightRadius2.4CalculateAmbientBoxLightRadius2.5GetEffectRangeOvRendering中剩余的重要内容已经不多,本节将讨论light(灯光)的相关内容。但在讨论代码之前,我们需要先了解一下投光物相关的
2021-12-17 10:49:45
2201
原创 【Overload游戏引擎】源码分析之十一:OvRendering函数库(九)
2021SC@SDUSC目录Camera1.矩阵计算1.1CalculateProjectionMatrix1.2CalculateViewMatrix2.Cache函数本节我们来讨论游戏引擎中一个很重要的内容camera(摄像机),在了解相关的代码时,我们需要用到OvTools函数库中的工具,可点击ReferenceOrValue前往了解。CameraCamera类中包含的成员变量较多,大多数数据类型都已在前文提到,例如m_frustum(视锥体对象)、m_viewM.
2021-12-07 15:44:54
2218
原创 【Overload游戏引擎】源码分析之十:OvRendering函数库(八)
2021SC@SDUSC目录Model1.构造与析构2.GetBoundingSphere和ComputeBoundingSphere在前几节的内容中提到了ModelLoaeder类,本节就正式来讲Model类的内容。Model与Shader与Texture一样,Model同样在最开始将自身的loader作为友元类,同时我们可以看到所谓的模型(model)就是一系列网格的结合。 namespace Loaders { class ModelLoader; } /**
2021-12-03 10:53:12
2641
原创 【Overload游戏引擎】源码分析之八:OvRendering函数库(六)
2021SC@SDUSC目录Loaders1.ModelLoader1.1Create1.2Reload1.3Destroy2.ShaderLoader2.1CreateProgram2.2CompileShader2.3ParseShader上一节我们分析了Parser的相关代码,这一节就来看与资源导入相关的另一类工具——Loader。Loaders1.ModelLoader首先是ModelLoader,它的作用是处理模型的创建和销毁,我们来看具体.
2021-11-27 20:33:39
843
原创 【Overload游戏引擎】源码分析之七:OvRendering函数库(五)
2021SC@SDUSC目录Parser1.IModelParser2.EModelParserFlags3.AssimpParser3.1LoadModel3.2ProcessMaterials3.3ProcessNode3.4ProcessMesh本章我们继续来讲OvRendering中的函数。首先需要简单了解两种类型的函数,这将会对以后的章节有所帮助。Parser1.IModelParser /** * Interface for any mod
2021-11-20 20:20:51
1256
原创 【Overload游戏引擎】源码分析之六:OvRendering函数库(四)
2021SC@SDUSC目录1.Uniform1.1UniformType1.2UniformInfo2.Shader2.1SetUniform和GetUniform2.2GetUniformLocation本章我们继续来讲OvRendering中与shader(着色器)有关的函数。1.Uniform首先我们来介绍一下什么是uniform。uniform是一种从CPU中的应用向GPU中的着色器发送数据的方式,但uniform和顶点属性有些不同。首先,unifo
2021-11-12 21:25:51
2252
原创 【Overload游戏引擎】源码分析之五:OvRendering函数库(三)
2021SC@SDUSC回顾一下前几篇文章,我们讲到了有关图形学三维空间的变换的函数,接下来就是关于三维空间中物体的网格表示。与网格相关的类有两个其中IMesh是一个基类,定义了4个纯虚函数用于子类继承。1.IMesh.h与Mesh.h而重点则是以下这个Mesh类,它对IMesh进行公有继承,用于实现网格的相关操作。namespace OvRendering::Resources{ /** * Interface for any mesh */ class IMesh {
2021-11-07 17:17:45
1587
原创 【Overload游戏引擎】源码分析之四:OvRendering函数库(二)
2021SC@SDUSC本章继续讨论OvRending中的函数。本章主要讨论顶点着色器与片段着色器的相关函数。1.Vertex相关数据结构在讨论此节之前,建议将这三个单词先记下来:顶点数组对象:Vertex Array Object,VAO 顶点缓冲对象:Vertex Buffer Object,VBO 索引缓冲对象:Element Buffer Object,EBO或Index Buffer Object,IBO本文所讨论的函数将会调用大量OpenGL相关API,关于OpenGL的.
2021-10-31 00:23:26
1421
原创 【Overload游戏引擎】源码分析之三:OvRendering函数库(一)
2021SC@SDUSC目录1.Geometry1.1BoundingSphere.h1.2Vertex.h2.Data/Frustum.hOvRendering函数库主要包括了几乎全部实现渲染管线的函数。以下是正文部分。1.GeometryGeometry中包含了两个函数BoundingSphere.h与Vertex.h,其中分别定义了一个数据结构。1.1BoundingSphere.hnamespace OvRendering::Geometry{ /**
2021-10-24 01:12:07
386
原创 【Overload游戏引擎】源码分析之二:OvMaths函数库(下)
2021SC@SDUSC书接上回,这次我们来讲一下矩阵在图形变换中最重要的变换,就是怎么将3维空间的物体转换为2维的图像。透视矩阵(Perspective)在显示生活中,我们的眼睛观察到的物体会呈现近大远小的效果,为了达成同样的效果,我们需要对3维空间中的图形进行一个矩阵变换,使其呈现透视效果。为了将摄像机观察到的范围投影在屏幕上,我们建立了上图这样的视锥体,其中near plane与far plane之间的锥体是最终会被投影在屏幕上的范围。OvMaths::FMatrix4 ..
2021-10-16 01:00:50
133
原创 【Overload游戏引擎】源码分析之一:OvMaths函数库(上)
2021SC@SDUSCOvMaths函数库主要包含了关于矩阵、向量等操作的函数,同时作为游戏引擎的数学库,OvMaths中还包含了计算机图形渲染所需的转化矩阵等的计算方法。以下是正文部分。1.向量操作函数该函数库中的向量操作函数包括2维、3维、4维这三种,以下仅对3维向量进行分析,4维向量由于其在计算机图形学中的特殊性,将会单独分析。1.1 3维向量namespace OvMaths{ /** * Mathematic representation of a 3D vector
2021-10-06 13:40:41
225
原创 【Overload游戏引擎】源码分析综述
2021SC@SDUSCOverload的核心源代码主要如下:OvAnalytics 代码和硬件分析 OvDebug 记录、断言 OvTools 序列化、ini文件、事件、时间 OvMaths 向量、矩阵、四元数、变化 OvRendering 使用OpenGL的渲染引擎 OvWindowing GLFW+WindowsAPI包装器 OvUI imGui包裹在一个基于事件和基于组件的UI系统中 OvCore Mediator、
2021-10-04 11:23:48
522
原创 VS2019解决MSB8036 找不到 Windows SDK 版本 10.0.19041.0
VS2019解决MSB8036 找不到 Windows SDK 版本 10.0.19041.0VS2019在更新以后会出现找不到SDK版本的错误,网上的大部分方法都是重新下载SDK,或者调整项目属性配置,本人尝试后依旧无法解决问题,最后在角落找到了解决方法。1.进入SDK安装目录路径如下:\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\10.0.19041.0全路径取决于个人安装的位置,其他版本的SDK跟换版号即
2021-09-23 12:30:45
5545
11
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人