GithubHelp home page GithubHelp logo

krenodeno / glcubelandscape Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 2.57 MB

School project. instance rendering of textured cubes, with shadowmapping.

C++ 67.23% GLSL 30.21% Lua 2.56%
cpp opengl shadowmapping

glcubelandscape's Introduction

TP Synthèse d'image

Rapport

L'application est capable de générer un terrain de cubes façon Minecraft (le volume en moins) à partir d'une image de hauteur. L'amplitude et la taille du terrain peuvent être paramétrés pour être différents de celles de l'image de hauteur.

Les cubes sont instanciés, et regroupés en régions de 64x64 cubes. Cette segmentation permet d'effectuer un test de visibilité dans le but de ne dessiner que ce qui est visible par la caméra, c'est à dire se trouvant dans le frustum. Cela peut améliorer les performances car réduit le nombre de draw calls. Pour éviter les trous dans le terrain, on rajoute des cubes là où il n'y a pas de voisin un cube en dessous.

Les cubes sont texturés et le shader les surfaces diffuse et spéculaire. La méthode utilisée est celle de Blinn-Phong. Les textures sont regroupés par trois à l'exécution: le dessus, le dessous et les côtés. Comme il y a peu de textures, elles sont toutes bindées constamment. La texture à appliquer au cubes est choisi dans le fragment shader en fonction de l'altitude.

Le shadow mapping est fonctionnel, il permet d'avoir les ombres des montagnes sur les autres. Le "soleil" fait le tour du terrain en appuyant sur G.

Une caméra première personne est utilisée pour se déplacer sur le terrain.

screen capture

Dépendances

La librairie gKit2Light est requise pour compiler les exécutables. Elle est disponible à cette adresse. Il faut modifier le chemin d'accès à gkit dans premake5.lua avant de générer les fichiers de projet avec premake.

Build

Exécuter le script à la racine du projet suivant pour générer les fichiers de build et compiler :

premake5 gmake2 && make -C build/

Exécuter le programme :

./bin/TP2

Executer

Appuyer sur G pour faire tourner le soleil.

Z pour avancer, Q et D pour aller à gauche et à droite respectivement.

S prend une capture du framebuffer et l'enregistre sur le disque.

TODO-liste

  • Générer positions d'instances de cubes à partir de la Heightmap
    • Segmentation par régions
      • Test visibilité
        • Gestion de la mémoire (FIFO VBO)
  • Blinn-Phong
  • Textures en fonction de l'altitude/la pente
  • Shadow Mapping

glcubelandscape's People

Contributors

krenodeno 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.