# zchRenderEngine **Repository Path**: houhupan/zch-render-engine ## Basic Information - **Project Name**: zchRenderEngine - **Description**: opengl+imgui 的个人渲染引擎。 - **Primary Language**: C++ - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 2 - **Created**: 2022-09-13 - **Last Updated**: 2025-07-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: imgui, Opengl, Cpp ## README # zchRenderEngine #### 介绍 opengl+imgui 的个人渲染引擎。 基于server的架构。 显卡支持的openGL版本>=4.3 #### 软件架构 软件架构说明 ![输入图片说明](architecture.png) #### 安装教程 1. cmake 版本>=3.2 直接编译,选择VS版本>=Visual Studio 15 2017,x64位版本 2. c++>=11,Visual Studio>=17 3. 运行 zchRenderEngine #### 运行截图以及操作手册 ![输入图片说明](preview.png) 软件分为漫游模式和交互模式,left-Ctrl可进行两种模式的切换 交互模式:有鼠标箭头,镜头锁定,可以操作UI修改天空球材质,修改场景渲染选项(比如修改点光源数量决定是否开启阴影,IBL,SSAO等),以及点击选中物体进行材质修改 漫游模式:无鼠标箭头,镜头不锁定,wasdqe操作摄像头在场景中漫游。 #### 架构说明 从上到下的架构说明 ##### **app层:** Application:单例,负责基础循环设置以及server的初始化。 BaseControl:负责场景初始化,处理用户交互,以及sever之间通信。 ##### **server层:** VisualServer:负责渲染管线 ImGUIServer:负责场景中GUI的绘制。 GLFWManager:负责管理GLFW。 EventServer:负责信号管理。 TPSCamera:负责相机管理。 ##### **scene层:** SourcesManager:单例,负责场景资源加载和管理 RIDManager:单例,底层每一个资源都有全局唯一资源标识RID,负责管理RID,并且可以通过RID来全局获取资源。 SceneTree:单例,Object3D使用树形结构做内存管理,sceneTree负责保存场景对象 BVH:BVH树,采用SAH构建,主要用于碰撞检测。 ##### **core层:** Object3D:3D对象。持有材质和网格的共享指针 ##### **source层:** Texture:贴图实体。 Shader:shader实体。 Mesh:网格实体。 Material:材质实体。 DefaultShaderStorage:与shader目录下的GLSL对应的实体。 ##### **shader层:** CGInclude.glsl 包含几个常用GLSL函数和uniform 参数,被scene.glsl包含 IBL.glsl 负责IBL计算。 scene.glsl 场景渲染管线的复合glsl,内含多个pass。 skybox.glsl 负责HDR转cubeTexture,负责天空盒渲染。 #### 渲染管线介绍 scene.glsl 包含8个pass: // 0: shaderAllDeferredLightingGeometryPass1 // 1: shaderAllDeferredLightingLightingPass1 // 2: shaderAllAOBlur // 3: shaderAllDeferredLightingGeometryPass2 // 4: shaderLightbox // 5: shaderTransparent // 6: shaderHDRQuad // 7: outline // 8: shadow depth cal // 9: shadow cal IBL.glsl 包含3个pass // 0: irradianceShader // 1: prefilterMapShader // 2: lutMapShader skybox.glsl 包含2个pass // 0: shaderequirectangularToCubemap // 1: shaderSkyBox ##### 场景渲染管线为基于deferred-lighting的PBR渲染管线。 ###### 阶段一:初始化,主要做HDR转cubemap(skybox.glsl的pass0),IBL计算(IBL.glsl的pass0,1,2),和各点光源的depthCubeMap计算(scene.glsl 的 pass8)。 ###### 阶段二: 1.几何渲染GeometryPass1:计算normal 和 depth。 (scene.glsl 的 pass0) 2.屏幕渲染LightingPass1:基于BRDF的diffuse项和specular项计算。以及SSAO计算。(scene.glsl 的 pass1) 3.屏幕渲染AOBlur:对SSAO进行模糊。(scene.glsl 的 pass2) 4.屏幕渲染shadow cal:计算各点光源的阴影,计算次数=点光源数量。(scene.glsl 的 pass9) 5.几何渲染GeometryPass2:根据材质信息综合叠加物体本身的光照结果(基于LightingPass1),基于IBL的环境光结果, 以及根据depthCubeMap计算出的阴影结果。(scene.glsl 的 pass3) 6.几何渲染shaderLightbox:绘制光源(scene.glsl 的 pass4) 7.几何渲染outline:绘制轮廓(scene.glsl 的 pass7) 8.天空盒渲染 9.MSAA 10.屏幕渲染shaderHDRQuad: HDR的伽马矫正。(scene.glsl 的 pass6) #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)