Giter VIP home page Giter VIP logo

npgr019's Introduction

NPGR019

NPGR019 is a source code repository for lab practices of the subject Real-time graphics on GPU.

Build instructions

Examples from this suite require that you have at least OpenGL 3.3 installed. The code should be portable to Linux but currently only the Windows MSVS 2017 Solution is provided. Also, not all examples have been updated with with OpenGL 3.3 in mind as originally they were developed against 4.6 Core profile. In order to successfully build and run the examples several prerequisite steps need to be taken:

  1. Generate glad loader and put glad.c to the src directory, glad and KHR folders to the include directory.
  2. Build or get GLFW library (>= 3.3), put its GLFW folder into the include directory, glfw3dll.lib to the lib directory, and glfw3.dll to the bin directory.
  3. Get glm library (>= 0.9.9) and put its glm folder to the include directory.
  4. Get stb image and put it to include/stb (it's a single header file).

The project is configured to look for additional includes in the include directory and link the GLFW static lib from the lib directory. When in doubt, look at the root .gitignore file, it lists all the ignored libraries. Binaries will be then copied to the bin directory which is also used as working directory. If everything went well, you should be able to build the whole solution and run most of the examples.

Some examples need textures, you can supply either your own (and change data paths accordingly) or you can download the Terracotta tiles pack I'm using. Textures should be put to the bin/data directory where the code is expecting them. Any texture set with diffuse map, normal map and specular map (I'm abusing supplied roughness map for that purpose) will do.

Notes

All the basic projets (01-Introduction, 02-3dScene, 03-DepthBuffer, 04-Texturing, 05-Instancing, 06-Shading, and 07-ShadowVolumes) are converted to OpenGL 3.3 because of compatibility with older embedded GPU's. 05-Instancing contains a modern SSBO based version in addition to 2 older ways of instancing. The only difference from past years is that depth is mapped in the traditional OpenGL way of [-1, 1] which prevents better utilization of the depth buffer precision. Project 08-Flocking uses compute shaders which require OpenGL 4.3, though, so I'll keep the sources as they are.

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.