Giter Club home page Giter Club logo

lit's Introduction

Capstone!

screenshot 1 YouTube Demo

Summary

This project is my Capstone Project for Neumont College of Computer Science. The purpose of my capstone was to learn about renderering technologies, and specifically about Direct3D11. I took a class about computer graphics and I wanted to gain a deeper understanding.

I also wanted an opportunity to use C++ more. I have used the language for several classes in the past, but it is a deep and complicated language and since it is very widely used I thought it wise to learn it better.

Features

This project essentially turned into a rudimentary scene editor. The user edit models translation, rotation, and scale at runtime, as well as changing most aspects of a scene from its yaml text file.

  • Loads most standard model file types using assimp.
  • Live scene editing, saving, and reloading.
  • Realtime lighting and shadow maps (WIP)
  • Loads and saves scenes in yaml using yaml-cpp.
  • Loads most standard image formats for textures using stb_image.

Planned Features and changes

  • GUI using Dear ImGui.
  • Switch to glm math library (instead of directxmath).
  • Resource system
  • Entity Component System

Reflection

When deciding which API to use there were four major options: Direct3D11, Direct3D12, OpenGL, and Vulkan. Under advisement from a friend I chose Direct3D11 because I was told that OpenGL is getting out of date, and Direct3D12 or Vulkan seemed to be a leap in understanding I wasn't ready to take.

On reflection I think I could have learned what I wanted to by using OpenGL, and may have been able to do so in less time since learning materials for OpenGL seem to be more readily available. MSDN documentation seems to be somewhat outdated and not very beginner friendly. I did make use of a textbook (Introduction to 3D Game Programming with DirectX11 by Frank Luna), however, it was published in 2012. Most of the main concepts were the same, but there were important sections which were entirely out of date. Fortunately I was able to supplement my learning from Luna and MSDN with YouTube videos and other online resources, and the indispensable help from my friend and classmate Alan Buechner, as well as my teacher, Professor Raymond Maple.

I plan to continue work on this project, using it as a tool for learning more about different game engine technologies. I want to learn about Vulkan next since it is cross platform and seems to be the way of the future.

lit's People

Contributors

supetorus avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.