Rendering software for procedurally generated environments
Description
Full text not available
Abstract
Prosedyredrevet generering beskriver hvordan data verdier kan skapes ved hjelp av algoritmer og matematiske prosedyrer. Typisk vil verdier som skapes av prosedyrer ha et sett medtilfeldige egenskaper, begrenset av prosedyrens matematiske regler. Halv-tilfeldige data verdierbrukes for a skape mer dynamiske og mindre rigide resultater. Det er et virkemiddel ofte brukt ˚i dataspill, digital kunst og musikkprosessering. For a kunne dra nytte av de genererte halv- ˚tilfeldige data verdiene trengs det ofte mer prosessering. Et eksempel pa dette er programvare ˚som leser matematiske verdier og viser dem pa skjermen som en tredimensjonal verden. Det ˚finnes mange eksempler programvare som kan gjøre dette, fra grafikk programvare som gjemmer bort alle implementasjonsdetaljer til enkle programvaregrensesnitt som lar utviklere styrealle detaljer selv. OpenGL er et eksempel pa et slikt programvaregrensesnitt, som lar utviklere ˚jobbe med sma detaljerte kodesnutter som kjører p ˚ a grafikkprosessoren. ˚Dette prosjektet beskriver utviklingen av en programvare som bruker OpenGL til a vise ˚resultatene fra en prosedyredrevet genereringsprosess pa skjermen. Programvaren som utvikles ˚i dette prosjektet vil kunne lese og prosessere data verdier og vise dem riktig pa skjermen. Den ˚vil ikke kunne skape egne data verdier, ettersom dette er utenfor prosjektets omfang. Prosjektetvil ogsa beskrive to forskjellige utviklingsfilosofier og hvordan de kan benyttes for ˚ a strukturere ˚og jobbe med et utviklingsprosjekt.Prosjektets første del bestar av en litteraturstudie med hvor søkelyset er p ˚ a de teoretiske ˚aspektene ved data prosessering, utviklingsfilosofier og grafikkprogrammering. Denne delenvil ha et spesielt fokus pa OpenGL programvaregrensesnittet og hvordan dette kan brukes til ˚a vise grafikk p ˚ a en skjerm. Etter dette vil prosjektet bruke en iterativ utviklingsfilosofi til ˚a utvikle fire forskjellige versjoner av programvaren. Disse forskjellige versjonene vil bygge ˚pa hverandre og den siste versjonen vil være en fungerende grafisk programvare med mange ˚forskjellige eg Procedural generation refers to the process of dynamically creating semi-randomized content using algorithms and procedures. It is commonly used to add variance and dynamism togenerated content and is commonly used in video games, digital art and digital music. The dataproduced by procedural generation software is only a mathematical representation. For it tobe a useful tool in video games or digital art further processing is needed. If the proceduralgeneration generates 3D environments, a rendering software is needed to process the data andrender the mathematical representations as graphics on the screen. There are a large varietyof different rendering tools available. At one end of the spectrum is high-level game engineswhich hides most of the details under levels of abstraction, while at the lowest level every pixelmust be calculated by the rendering software. Graphics APIs like OpenGL provide developerswith the tools to implement low-level functionality on the GPU.This project details the development process for a piece of rendering software. This softwareutilizes the low-level OpenGL API to render procedurally generated environments efficientlyusing the GPU. The software developed in this project reads mathematical representations ofa 3D world and render the world on the screen. This project does not contain any proceduralgeneration software, as this is not within the project’s scope. It is the parsing of data andsubsequent rendering of that parsed data that is the focus of this project. Additionally, thisproject also briefly explores two different development methodologies. It selects one of thesemethodologies and uses it to develop the graphics rendering software.The project first consists of researching the theoretical aspects of parsing, different development methodologies and graphics programming with an focus on the OpenGL API. Using thetheory from this research, the rendering software is developed following an iterative approach.Over the course of several iterations, a piece of rendering software is developed with a multitudeof different graphical features included. The result is a software capable of rendering differenttypes of light-sources, material properties and more. At the very end of the project the iterativeapproach and the development process as a whole are examined.