Cell - Graphics engine
======
Welcome to the development repository of Cell, an open-source OpenGL graphics engine aimed to serve as an educational repository
for learning how a larger graphics engine can be structured and organized. A large focus of Cell is building an engine that is both easy
to use and read. Cell also aims to provide both flexible and properly maintainable code. Note that this project is **not** finished, so code may still be vague nor are there proper build files yet.
![Logo of Cell Graphics Engine](logo.png "Cell Graphics Engine Logo")
The engine will be heavily commented and documented from within the source code itself, to motivate new graphics programmers
to take a look at any of its inner workings, without feeling too overwhelming.
![Cell Preview](preview.png "Cell Preview")
Feature List (complete:base-functionality)
------
* Fully functioning (custom) math library (vectors, matrices, transformations, utility functions):
1. Linear algebra: n-dimensional vectors, nxn-dimensional matrices, transformations, utility.
2. Trigonemetry: unit circle utility functions, radian/degree conversions.
3. Utility functions: lerp, step, smoothstep, smootherstep, clamp etc.
* Engine utility namespace:
1. High-precision performance analysis and measurement.
2. Random numbers.
0. Configure and enable debugging and logging utility.
1. Shader object w/ custom pre-processor (defines, includes):
1. Include other shader files.
2. Parse active vertex attributes and uniform variables, retrieve location and store in shader object.
3. Easy to use state configuration per shader.
4. Support multiple build paths.
2. Material pipeline; configure render state in materials, together with shader, uniform configuration and samplers used.
1. Allow for easy access of materials and storage; include set of default materials (default material, glass material etc.)
3. Define Mesh object and encompassing Model class.
1. Define set of basic shape mesh generation; plane, cube, disk, sphere, cylinder, torus (donut)
2. Load artist defined 3D models w/ Assimp.
- Note: Assimp is built as a static library that is statically linked/merged with Cell. I also built the static zlib library for the ingration to work properly with Assimp (both 32 bit).
5. Flexible Framebuffer configuration utility:
1. Including CubeMap use and generation (reflection probes, point shadow-maps)
2. Post-processing.
6. Create Render Buffer, draw commands encapsulated in push to render buffer w/ relevant state:
1. Define list of render push commands (material, mesh)
2. Collect all render commands and seperate by pass.
3. Sort render commands per pass; execute (batch where necessary) to minimize state changes.
7. Configure Deferred rendering pipeline:
1. Configure render buffer w/ geometry pass.
2. Build fully functional shaders w/ Blinn-Phong (now PBR) lighting.
3. Normal mapping.
4. Environment lighting.
5. Environment reflection support.
6. Directional shadows
7. Number of lights optimization.
8. Per-object motion blur.
8. Functioning PBR render pipeline.
1. Calculate diffuse integral and store into cubemap.
2. Prefilter environment map w/ integral and store into cubemap as diffuse integral.
3. Pre-calculate active BRDF in 2D LUT (approach by Unreal for split sum approximation).
4. Irradiance reflection probe(s): pre-calculate environment lighting approximation at any scene location.
9. Post-processing
1. HDR/Gamma/Tone-mapping
2. Bloom
3. SSR
4. Vignette
5. SSAO
10. Optimization:
1. Store material-independent uniforms in UBO; together with barely changing shader parameters.
2. Per-object Frustum culling.
3. Cache GL state.
11. GUI
1. IMGUI
Feature List (work-in-progress)
------
* Engine utility namespace:
1. Logging.
* Flexible OpenGL initialization.
1. Add Camera functionality; add multiple camera variations: FPS, FlightSim, ArcBall.
2. Configure Deferred rendering pipeline:
1. Fog.
Feature List (todo)
------
12. Skeletal animation:
1. Define Bone structure on top of current scene hierarchy system.
2. Load skeletal mesh from Assimp as skeletal hierarchy as well? Think of different design solutions that would work well in current environment.
3. Animation blending.
13. Complete code cleanup (re-factor where relevant), focussing on readability and maintainability. There are still a lot of items that do work, but could be better organized.
14. Document the entire engine, describing architectural and semantic choices where relevant. Also include a walkthrough guide describing the best file order to start reading/understanding the engine.
15. Configure cross-platform build files (there's currently 0 build support).
没有合适的资源?快使用搜索试试~ 我知道了~
OpenGL C++ Graphics Engine .zip
共292个文件
tga:75个
h:72个
cpp:44个
需积分: 5 0 下载量 124 浏览量
2023-12-31
10:31:08
上传
评论
收藏 133.66MB ZIP 举报
温馨提示
OpenGL C++ Graphics Engine
资源推荐
资源详情
资源评论
收起资源包目录
OpenGL C++ Graphics Engine .zip (292个子文件)
glad.c 102KB
imgui.cpp 468KB
imgui_demo.cpp 136KB
imgui_draw.cpp 118KB
renderer.cpp 40KB
mesh.cpp 40KB
cell.cpp 26KB
program.cpp 16KB
PostProcessor.cpp 14KB
mesh_loader.cpp 12KB
shader.cpp 11KB
PBR.cpp 9KB
MaterialLibrary.cpp 9KB
command_buffer.cpp 8KB
resources.cpp 8KB
scene_node.cpp 7KB
Texture.cpp 6KB
material.cpp 5KB
texture_loader.cpp 5KB
cube.cpp 5KB
render_target.cpp 4KB
texture_cube.cpp 4KB
torus.cpp 4KB
fly_camera.cpp 3KB
log.cpp 3KB
scene.cpp 3KB
camera_frustum.cpp 3KB
gl_cache.cpp 3KB
shader_loader.cpp 2KB
camera.cpp 2KB
random.cpp 2KB
sphere.cpp 2KB
circle.cpp 2KB
plane.cpp 1KB
background.cpp 1KB
program.cpp 1KB
quad.cpp 1KB
spherical.cpp 938B
line_strip.cpp 758B
pbr_test.cpp 708B
polar.cpp 467B
plane.cpp 411B
stb_image.cpp 55B
pbr_capture.cpp 45B
time.cpp 18B
Cell.vcxproj.filters 9KB
Math.vcxproj.filters 3KB
Utility.vcxproj.filters 2KB
Demo.vcxproj.filters 1KB
ambient.fs 3KB
ambient_irradience.fs 3KB
post_processing.fs 2KB
point.fs 2KB
directional.fs 2KB
ssao.fs 2KB
irradiance_capture.fs 2KB
g_buffer.fs 2KB
prefilter_capture.fs 1KB
forward_render.fs 1KB
bloom.fs 1KB
integrate_brdf.fs 1KB
blur_guassian.fs 1KB
capture.fs 799B
plasma_orb.fs 540B
probe_render.fs 342B
spherical_to_cube.fs 302B
background.fs 223B
capture_background.fs 221B
custom_post_2.fs 184B
down_sample.fs 182B
default_blit.fs 176B
custom_post_1.fs 172B
shadow_cast.fs 148B
light.fs 117B
.gitignore 390B
.gitmodules 94B
reflections.glsl 4KB
sampling.glsl 3KB
brdf.glsl 2KB
random.glsl 2KB
pbr.glsl 2KB
shadows.glsl 1KB
uniforms.glsl 1KB
constants.glsl 67B
stb_image.h 227KB
glad.h 212KB
stb_truetype.h 149KB
imgui.h 135KB
glfw3.h 80KB
imgui_internal.h 53KB
stb_textedit.h 48KB
stb_rect_pack.h 17KB
vector.h 14KB
khrplatform.h 10KB
matrix.h 7KB
renderer.h 6KB
quaternion.h 6KB
glfw3native.h 6KB
transformation.h 5KB
test_operations.h 5KB
共 292 条
- 1
- 2
- 3
资源评论
暮苍梧~
- 粉丝: 41
- 资源: 258
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功