Hvordan lage volumetrisk tåke i Open GL

I 1999 iD Tech 3-motoren brakt spill inn i en ny grafisk æra bruker en OpenGL basert akselerator for å forbedre gjengis grafikk med shaders, kompleks belysning og dynamiske skygger. Motoren har også støttet seg tungt på bruk av volumetrisk tåke for å begrense den visuelle avstand for å stabilisere bildefrekvens og redusere pop-in. I dag er bruken av tåke som en optimalisering verktøyet finner fortsatt bruke i utviklingen av mobile spill hvor grafisk prosessorkraft er knappe.

Bruksanvisning

1 Tegn et nytt vindu enheten ved hjelp av GLUT verktøykasse. Inne i "main () {...}" loop, begynner ved å sende kommandoer "glutInit ();" og "glutInitDisplayMode (...);" hvor glutInitDisplayMode vil ta argumenter for å definere innstillinger som fargedybden eller ramme bufring.

2 Bruk "glutInitWindowSize (x, y);" å definere vinduer størrelse og gjengivelse oppløsning, og "glutInitWindowPosition (x, y);" for å angi det punkt hvor den venstre øverste bildeelement bør begynne tegningen, ved hjelp av x, y argumenter for å representere bildeelement koordinater. Viser vinduet og begynner å gjengi med kommandoen "glutCreateWindow () ;."

3 Aktiver bruk av tåke og grundig testing med uttrykket "glenable (GL_FOG | GL_DEPTH_TEST) ;." Tegning volumetrisk tåke er bare mulig gjennom bruk av OpenGL extension glFogCoordfEXT og er kanskje ikke tilgjengelig for ditt gjengi målet. Bruken av glGetString (GL_EXTENSIONS) og strstr () vil tillate deg å søke i OpenGL forlengelse liste over gjeldende rendringsanordningen, og anbefales hvis du distribuerer til en mobil enhet.

4 Angi hvordan tåken vil bli gjengitt i 3D-verdenen. Bruk "glFogi (GL_FOG_MODE, ...);" å stille inn hvor tåken vil visne som det blir nærmere kameraet, "glFogfv (GL_FOG_COLOR, ...);" å endre fargen fra standard grå, endelig bruke "glFogf (GL_FOG_START, ...)" og "glFogf (GL_FOG_END, ...);" å endre hvor tåken vil være minst og mest tett.

5 Bygg inn koden i en kjørbar fil og kjøre den for å se hvordan tåken gjør til verden. Herfra kan du fortsette å bruke tåke effekt på en forsvarlig prosjektet i sin nåværende tilstand; men det vil ikke frembringe den volumetriske effekt som det vil vises, fast stoff. Volumetrisk tåke må være direkte brukes til en 3d mesh, mye som en tekstur eller en shader.

6 Bruk "glFogCoordfEXT ();" funksjon sammen "glVertex3f ();" anrop når rende et toppunkt til utsiktspunktet, snu solid tåke virkning fra før i en atmosfærisk tåke med dybde.

Hint

  • Selv om denne artikkelen har brukt C ++ programmeringsspråk for å demonstrere bruk av OpenGL; språk som Java, Objective C og C # kan ringe OpenGL på samme måte med svært få syntaks.