43 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # DTRenderer
 | |
| DTRenderer is an attempt to build a simple software renderer from the ground up. The main goal is to build an intuitive understanding of graphics mathematics, rendering pipeline and core concepts. It runs as a Win32 program with minimal dependencies.
 | |
| 
 | |
| 
 | |
| 
 | |
| The following resouces have been largely informative to my understanding of the software renderer,
 | |
| * [Handmade Hero](http://handmadehero.org/)
 | |
| * [Optimising Software Occclusion Articles](https://fgiesen.wordpress.com/2013/02/17/optimizing-sw-occlusion-culling-index/)
 | |
| * [TinyRenderer](https://github.com/ssloy/tinyrenderer)
 | |
| 
 | |
| ## Building
 | |
| DTRenderer is a Win32 program and can be compiled with **build.bat** which requires Microsoft Visual Studio **cl.exe** to be in the Windows path. It is originally built using Visual Studio 2017, older versions are still somewhat compatible, albeit there are some switches which have been renamed in the 2017 edition.
 | |
| 
 | |
| The Visual Studio solution file is provided as a thin wrapper for interfacing with the Visual Studio debugger and **can not be used to compile.**
 | |
| 
 | |
| ## Milestones
 | |
| * 2D Software Rendering
 | |
|   * Alpha Blending
 | |
|   * Bilinear Filtering
 | |
|   * Correct Color Space Pipeline _(SRGB <-> Linear)_
 | |
|   * Rasterisation
 | |
|   * Texture Mapping
 | |
|   * Translation, Rotation, Scale
 | |
| * 3D Model Rendering
 | |
|   * Full Bright, Flat, Gouraud Lighting
 | |
|   * Orthographic, Perspective Projections
 | |
|   * Translation, Rotation, Scale
 | |
| * Custom Wavefront Obj Loader _(minimal subset)_
 | |
| * Hot-Reloadable DLL for Renderer Code _(taken from Handmade Hero)_
 | |
| * SIMD "Optimisation" _(with a grain of salt, tried to with some % improvements)_
 | |
| 
 | |
| ## Libraries
 | |
| The external libraries that have been used,
 | |
| * STB Single File Libraries
 | |
|   * STB Image _(for image loading)_
 | |
|   * STB TrueType (and RectPack) _(for creating bitmap font)_
 | |
| 
 | |
| ### Debugging Libraries
 | |
| These libraries are non-essential and used for validating results and debugging the program.
 | |
|   * STB ImageWrite _(for debugging renders, TrueType output etc.)_
 | |
| * EasyProfiler _(for profiling)_
 | |
| * TinyRenderer _(for comparing data output for validity of results)_
 |