Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Je kunt ook een cookievrije versie van de website bezoeken met minder functionaliteit. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , reacties: 31, views: 16.257 •

Ontwikkelaar id Software heeft de broncode van de BFG Edition van Doom 3 openbaar gemaakt. De bestanden zijn te downloaden via Github. De code valt onder de GNU General Public License. De code bevat niet de render-techniek die bekend staat als Carmack's Reverse.

Uitgever Bethesda maakt via het eigen blog bekend dat de broncode van Doom 3 is vrijgegeven. De code is te downloaden via Github. Ontwikkelaar id Software, sinds 2009 eigendom van Bethesda, kondigde eerder deze maand al aan dat de broncode vrijgegeven zou worden. De code valt onder de GNU General Public License. De studio gaf een jaar geleden al de broncode van Doom 3 uit, de shooter die in 2004 op de markt kwam. In oktober leverde id Software echter de BFG Edition van Doom 3 af, een nieuwe versie van de game met een verbeterd uiterlijk, beter geluid, ondersteuning voor 3d-schermen en een verbeterd systeem voor savegames. De BFG Edition bevat bovendien een extra hoofdstuk.

Uit de broncode van de BFG Edition zijn een aantal onderdelen verwijderd. Zo is de code die integratie met Steam regelt weggelaten en ook het deel dat het afspelen van Bink-video's verzorgt. Bovendien heeft id Software een stuk weggelaten dat verband houdt met een render-techniek die bekend staat als Carmack's Reverse. Het gaat daarbij om een onderdeel dat het renderen van 'shadow volumes' regelt. De studio had hierover een conflict met Creative, de fabrikant die vooral bekend is van geluidskaarten. Die heeft een patent op een vergelijkbare techniek als Carmack ontwikkelde voor Doom 3. Hetzelfde conflict zorgde in 2011 voor flinke vertraging bij het vrijgeven van de broncode van Doom 3. Tegelijk met de broncode verschijnt ook een patch voor de BFG Edition.

Doom 3 BFG Edition

Reacties (31)

Creative's depth fail stencil shadow rendering is een van de belachelijkste patenten ooit.

Stencil shadows werken door het schaduw-volume van een object te renderen naar de stencil buffer. Een object werkt namelijk een schaduw op een ander object als zijn schaduw volume snijdt met dat obstakel. Een schaduwvolume is simpelweg het gehele volume dat achter een object zit, gezien vanuit de lichtbron.

Voor alle schaduw volume polygonen die naar de camera toe zijn gericht (frontfacing, dus die je van de voorkant kan zien) tel je 1 op bijde waarde in de stencilbuffer, en voor alle polygonen die van de camera af zijn gericht (backfacing) trek je er 1 af. Alle pixels die hierna geen 0 in de stencilbuffer hebben vallen in de schaduw. Het principe erachter is dat als het schaduw-volume een obstakel raakt, je alleen de voorkant van het volume kan zien omdat de achterkant wordt geclipped door de z-waardes van het obstakel in de depth buffer.

Deze techniek heeft echter een groot nadeel - als de camera zich ín het schaduw-volume bevindt, dan zijn álle polygonen backfacing, met als resultaat dat alle waarden in de stencilbuffer ongelijk zijn aan 0 als je die polygonen kunt zien en zou je denken dat alles in de schaduw ligt. Hier hebben Carmack en mensen bij Creative (William Bilodeau en Michael Songy) onafhankelijk van elkaar een vrij simpele oplossing voor gevonden. Iets dat iedereen kan bedenken als je het probleem een beetje aandachtig bekijkt.

Het probleem is namelijk:
  • schaduw volume polygonen die wel zichtbaar zijn geven schaduw terwijl ze dat niet moeten doen
  • schaduw volume polygonen die niet zichtbaar zijn geven geen schaduw terwijl ze dat wel moeten doen.
Ok, we willen dus schaduw voor de delen die níet zichtbaar zijn. Well, Einstein, als we dan gewoon eens de depth test omdraaien! Dus alleen als schaduw volume polygonen tekenen als de depth test faalt, oftewel, als de polygonen áchter andere polygonen liggen.

Een volume dat volledig zichtbaar is zal hierdoor helemaal niet renderen (resultaat 0 in de stencilbuffer). Voor een volume dat voor de helft zichtbaar is omdat hij een obstakel raakt zal alleen het gedeelte dat zich achter het obstakel bevindt worden gerenderd (resultaat ongelijk aan 0 in stencilbuffer). En voor een volume dat geheel achter een obstakel zit zullen zowel frontfacing (+1) als backfacing (-1) polygonen renderen waardoor het resultaat alsnog 0 is.

Simpele oplossing dus. Maar slim als ze zijn hebben Bilodeau en Songy het snel gepatenteerd, nog voordat Carmack erover gepubliceerd had, met als resutlaat een enorme rem op de innovatie op basis van iets dat iedereen met 3 hersencellen ook wel zelf kan bedenken.

[Reactie gewijzigd door .oisyn op 27 november 2012 12:20]

Op dit item kan niet meer gereageerd worden.



Populair:Apple iPhone 6DestinyAssassin's Creed UnityFIFA 15Nexus 6Call of Duty: Advanced WarfareApple WatchWorld of Warcraft: Warlords of Draenor, PC (Windows)Microsoft Xbox OneApple iOS 8

© 1998 - 2014 Tweakers.net B.V. Tweakers is onderdeel van De Persgroep en partner van Computable, Autotrack en Carsom.nl Hosting door True

Beste nieuwssite en prijsvergelijker van het jaar 2013