Basic framework for D3D11 init, model/texture loading, shader compilation and camera movement.
C++ C HLSL
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
test Update test project to OpenVR 1.0.0 May 29, 2016
.gitignore Update .gitignore with new build directories Oct 8, 2015
README.md Readme updates Dec 16, 2014
asset-internal.h Add implementation of Tom Forsyth's "Linear-Speed Vertex Cache Optimi… Aug 31, 2015
asset-mesh.cpp Update framework code to use util v2 May 8, 2016
asset-mtl.cpp Update framework code to use util v2 May 8, 2016
asset-texture.cpp Update framework code to use util v2 May 8, 2016
asset.cpp Update usage of TextParsingHelper to use its new origin parameter May 5, 2015
asset.h Add asset compiler for .mtl material libraries Dec 11, 2014
camera.cpp Update framework code to use util v2 May 8, 2016
camera.h Update framework code to use util v2 May 8, 2016
cbuffer.h Clean up all D3D objects on Shutdown(). This may help avoid crashes o… Apr 7, 2015
comptr.h When a ref-counted object is destructed, assert that the ref count is… Mar 18, 2015
copy_ps.hlsl Add functionality for blitting and full-screen passes May 8, 2014
d3d11-window.cpp Update framework code to use util v2 May 8, 2016
d3d11-window.h Update framework code to use util v2 May 8, 2016
framework.h Add VS2015 project files Sep 10, 2015
framework.vs2013.vcxproj Use statically-linked CRT. Also, turn off Edit and Continue for VS2015. Oct 2, 2015
framework.vs2013.vcxproj.filters Update VS2013 project files and nuke old VS2012 ones Sep 10, 2015
framework.vs2015.vcxproj Use statically-linked CRT. Also, turn off Edit and Continue for VS2015. Oct 2, 2015
framework.vs2015.vcxproj.filters Add VS2015 project files Sep 10, 2015
fullscreen_vs.hlsl Add functionality for blitting and full-screen passes May 8, 2014
gpuprofiler.cpp Add Reset() method to GPUProfiler Apr 15, 2015
gpuprofiler.h Add Reset() method to GPUProfiler Apr 15, 2015
lines_ps.hlsl Add debug line drawing utilities to D3D11WIndow. Accumulates vertices… Mar 27, 2015
lines_vs.hlsl Add debug line drawing utilities to D3D11WIndow. Accumulates vertices… Mar 27, 2015
material.cpp Add material library object that can be loaded from an asset pack Dec 12, 2014
material.h Replace old Sponza with Crytek Sponza Aug 31, 2015
mesh.cpp Update framework code to use util v2 May 8, 2016
mesh.h Update framework code to use util v2 May 8, 2016
miniz.c Disable ZIP compression, and comment out CRC32 checks, to improve loa… May 4, 2015
rect_vs.hlsl Add functionality for blitting and full-screen passes May 8, 2014
rendertarget.cpp Update framework code to use util v2 May 8, 2016
rendertarget.h Update framework code to use util v2 May 8, 2016
shadow.cpp Update framework code to use util v2 May 8, 2016
shadow.h Update framework code to use util v2 May 8, 2016
stb_image.h Update to stb_image 2.08 Sep 14, 2015
stb_image_resize.h Update to latest version of stb_image and stb_image_resize Sep 10, 2015
texture.cpp Update framework code to use util v2 May 8, 2016
texture.h Update framework code to use util v2 May 8, 2016
timer.cpp Various minor fixes: Feb 11, 2015
timer.h Add comments to variables in timer.h Oct 9, 2015

README.md

reed-framework

Basic framework for D3D11 init, model/texture loading, camera movement, etc.

Instructions:

  • #include <framework.h>
  • Link with framework.lib, or just add framework.vcxproj to your solution and reference it
  • Also link with d3d11.lib, dxgi.lib, and xinput_9_1_0.lib (or the newer xinput1_4.dll)

Current features:

  • Asset compilation system for pre-processing graphics data into an engine-friendly format
    • Compiles meshes from .obj format; also parses .mtl materials
    • Compiles textures from any format stb_image supports, resampling to power-of-two size and generating mipmaps
    • Stores compiled data in an asset pack in .zip format for easy distribution
    • Identifies out-of-date assets by timestamp or file format version number, and recompiles only out-of-date or missing ones
  • COM smart pointer—handles COM reference counting while being mostly transparent
  • D3D11 window class—handles window creation, D3D11 init, message loop, resizing, etc.
  • Functions for blitting textures
  • Function for drawing a full-screen triangle
  • Common D3D11 state objects—rasterizer, depth/stencil, blend, sampler
  • D3D11 constant buffer class
  • D3D11 texture classes: 2D, cubemap, 3D
  • D3D11 render target class
  • D3D11 mesh class
  • Texture and material library classes: map string names to textures/materials stored in an asset pack
  • Mipmap size calculations
  • Camera classes—FPS-style and Maya-style, and object hierarchy for adding more
  • CPU timer—smooths timestep for stability; also tracks total time since startup
  • GPU profiler—manages queries, buffers a few frames, and smooths the results

Todo list (in no particular order):

  • Debug line rendering
  • AntTweakBar integration / extensions
  • Console for displaying realtime errors/warnings without stopping the world
  • Video memory usage prediction/tracking
  • Shader compilation framework
  • Scene rendering framework, supporting multiple objects/materials, etc.
  • Postprocessing framework
  • Multicore asset compilation
  • Async asset loading
  • Better input system; gamepad support
  • Screenshotting—both LDR and HDR
  • Multi-monitor and multi-GPU awareness
  • GPU clock speed monitoring à la GPU-Z
  • OpenGL & cross-platform support