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: 53, views: 15.598 •

Een patent van Creative dat sterk lijkt op de Carmack's Reverse-schaduwtechniek, houdt de opensource-release van de Doom 3-engine tegen. John Carmack gaat nieuwe code schrijven om de vrijgave van de broncode alsnog mogelijk te maken.

John Carmack van id SoftwareJohn Carmack meldde begin november dat de broncode van id Tech 4, de game-engine van Doom 3, klaar was om gepubliceerd te worden na goedkeuring van de advocaten. De technisch directeur van id Software twittert dat de code van de toentertijd vernieuwende schaduwtechniek wegens patenten niet geopenbaard kan worden, en dat hij vervangende code gaat schrijven voor de opensource-release van de game engine.

De schaduwtechniek in kwestie is in 1999 door Creative Labs-medewerkers William Bilodeau en Michael Songy bedacht en gepatenteerd. Door de stencil buffer van de grafische chip te gebruiken, kan worden bepaald of er shadow volumes achter een voorwerp gerenderd moeten worden. John Carmack ontdekte onafhankelijk een soortgelijke aanpak en paste het toe in Doom 3, waardoor de 'depth fail'-methode bekend werd als Carmack's Reverse. Deze methode zou echter teveel gelijkenis vertonen met het patent van Creative.

Het betreffende patent van Creative Labs veroorzaakte in 2004 al problemen toen Doom 3 nog in de winkels moest komen. Id Software sloot toen een deal met Creative om EAX-audiotechnologie in het schietspel op te nemen in ruil voor het niet hoeven betalen van licentiegelden. Dit voorkwam niet alleen een mogelijk langdurige rechtzaak, maar was volgens Carmack te verkiezen boven een andere maar slechter presterende variant van de schaduwtechniek.

Reacties (53)

Beetje gek dat ze na zoveel jaar over deze engine nog een probleem gaan maken waardoor het niet kan worden uitgegeven.
Het is eigenlijk heel logisch. Toendertijd heeft Creative al aangegeven dat het van mening was dat ze het patent schenden, en daar is toen een deal over gemaakt zodat ID gebruik mocht maken van het patent in Doom-3.

Aangezien het patent nog steeds eigendom is van Creative kan ID niet zomaar code onder een OS licentie uitbrengen die dat patent ( mogelijk ) schaad. Natuurlijk zouden ze nog voor de rechter kunnen beproeven of het patent daadwerkelijk door de versie van Carmack geschaad word, maar dat zou waarschijnlijk een stuk meer kosten dan een andere techniek inbouwen.
Wat rickyy wellicht bedoelt is dat stencil-schaduwen al lang achterhaald zijn. Creative heeft er dus geen baat bij om het patent te doen gelden.

Anderzijds heeft ook id er geen baat meer bij om nog de depth-fail techniek te gebruiken; huidige systemen zijn krachtig genoeg om de klassieke depth-pass methode toe te passen.

Het is vooral bewonderenswaardig dat Carmack nog zijn tijd wil steken in het aanpassen van deze oude code.
Bewonderenswaardig idd vooral omdat ze het voor niets doen (kosteloos).
Dat de techniek achterhaald is wil toch niet zeggen dat de engine er geen gebruik van maakt? Misschien is dat juist wat Carmack aan het maken is.

@rmd, dat kosteloos is alleen op het moment dat jij het ook kosteloos verder verspreid. Als jij geld gaat vragen voor jou product met de ID engine dan mag jij licentie gelden gaan betalen. Niet gek dus dat Creative ook nog een stukje van die taart wil.
Dat de techniek achterhaald is wil toch niet zeggen dat de engine er geen gebruik van maakt?
Het wil zeggen dat ze er zo goed als geen licentiegelden meer uit kunnen halen omdat de techniek zo goed als dood is. Het patent is wat dat betreft gewoon obsolete. Maar idd, er is oude zooi die het gebruikt, en als je dat wil verspreiden dan zal er ook betaald moeten worden (of de gebruikte techniek aanpassen).

@c0d1f1ed:
Creative heeft er dus geen baat bij om het patent te doen gelden.
Klopt, maar de GPL verbiedt tevens dat er gepatenteerde code gebruikt wordt. Dus ook al zou Creative het door de vingers zien, dan nog kan de code niet geGPL'd worden.
Niet geheel correct. De GPL verbiedt gebruik van gepatenteerd materiaal, die niet Royalty Free World Wide is. Dat beperkt het gebruik van gepatenteerde technieken aanzienlijk, maar maakt het gebruik niet onmogelijk.
"Wat rickyy wellicht bedoelt is dat stencil-schaduwen al lang achterhaald zijn. Creative heeft er dus geen baat bij om het patent te doen gelden."

Anderzijds heeft ook id er geen baat meer bij om nog de depth-fail techniek te gebruiken; huidige systemen zijn krachtig genoeg om de klassieke depth-pass methode toe te passen."

Alsof er geen opkomende 3D markt is op mobiele apparaten.
Developers zijn al een tijdje oude technieken uit de kast aan het trekken om efficiente code op telefoons en tablets te maken.
Daar zullen stencil schaduwen nog best een tijdje meegaan.
En dan is het nog zo dat depth-pass wat nadelen heeft die depth-fail niet heeft.

Dus genoeg redenen om het niet af te zeiken!
:)
Daar zullen stencil schaduwen nog best een tijdje meegaan.
Kwa performance zijn stencil shadows zijn nooit echt veel goedkoper geweest dan shadowbuffers (zeker niet in situaties zoals bij een laaghangende zon - stencil fillrate galore). Ze kosten hooguit minder geheugen.
Creative zou zichzelf, juridisch gezien, in een hoek kunnen drijven door de vrijgave toe te staan. Als er na deze release een soort gelijk dispuut ontstaat met een andere partij en het zijn geen achterhaalde patenten? Dan zal Creative het veel zwaarder moeten verdedigen omdat de tegen partij vindt dat zij dat recht daardoor ook hebben.

Met de komst van mobiele apparaten die ook steeds geavanceerdere spellen ondersteunen zijn deze patenten juist weer het verdedigen waard.

[Reactie gewijzigd door Xion op 16 november 2011 17:27]

Is dat patent dan nog geldig?
Als Creative er niets meer op verdiend en niet meer de verschuldigde betalingen voldoet, dan is het vrij te gebruiken. Hebben ze dat wel opgezocht? ;)
Hoeft er niets herschreven te worden, niets betaald en ook niet meer verdedigd.

Daarbij: Toen leek het patent al achterhaald. Vraag is of toen iemand het nog aandurfde om de validiteit aan vechten.
Het siert Carmack wel. Een tijd terug was deze man ook al in het nieuws door het maken van een port van Wolfenstein 3D. De ontwikkelafdeling welke verantwoordelijk was voor de port gaf aan dat het twee maanden extra zou kosten om met een team de port af te ronden. Carmack vond dit onzin, pakte het zelf op leverde de port in vier dagen volledig op.
Dat ze daar nu nog om gaan zeiken zeg. Kom op..
Creative kan dat in licentie uitgeven en zo geld verdienen. Door deze techniek als opensource vrij te geven hangt er ineens een andere licentie aan en kan het wereldwijd door iedereen toegepast worden. Logisch dat ze het patent beschermen, jammer dat het erop zit.
Dingen die opensource zijn kunnen nog steeds best gepatenteerd zijn. Kijk maar naar zaken als ffmpeg, open source, maar officieel niet overal toegestaan omdat het een aantal patenten schendt. Of Android, wat nu in een enorme patentenoorlog verwikkeld is, hoewel het toch echt open source is. Zodra jij geld verdient aan iets wat iemand anders' patent schendt, kan je verwachten dat die andere partij daar toch een mening over heeft, en die mening gaat over het algemeen ten koste van jouw portemonnee....
Hij is het al maanden aan het herschrijven.

Het is echt niet zo gek van creative dat ze dat eisen. Ze kunnen er nog steeds goed geld mee verdienen.
En als ze het weg gaan geven is er jurisprudentie en kunnen andere bedrijven onder hun contracten uit...
Er ontstaat alleen jurisprudentie als het bij een rechter komt te liggen. Als zij het "weggeven" (dwz: niet actief vervolgen), betekent nog niet dat andere bedrijven zomaar onder hun contracten uit kunnen.
Klopt, maar is het niet zo dat die schaduw techniek flink gedateerd is in tegenstelling tot de huidige technologie?

[Reactie gewijzigd door S7YX op 16 november 2011 15:11]

Klopt, stencilshadows hebben zo hun problemen. De voornaamste is dat een object 'waterdicht' moet zijn, of een "closed manifold" of "gesloten variëteit" in geometrische termen. Dat wil zeggen het oppervlak geen randen kent, of specifieker in 3D modeling, elke edge moet gedeeld worden door precies 2 polygonen.

Dit geldt natuurlijk wel voor simpele objecten zoals kubussen en bollen, maar lang niet altijd voor objecten die gemaakt worden door grafici. Neem bijvoorbeeld een boom met een tak. Gebruikelijk is om de polygonen van de tak iets door de boomstam heen te laten steken in plaats van ze perfect aan te sluiten op de stam en het "gat" dat de tak vormt in de stam uit de stam te knippen. Als je het rendert zie je dat soort dingen toch niet, maar dit geeft hele rare schaduweffecten als je stencil shadow technieken gebruikt. Het kost dus de nodige moeite om te zorgen dat al je content inderdaad waterdicht is als het schaduws moet werpen.

Een ander probleem is dat stencil shadows nogal hard zijn. Je ziet duidelijk de grens tussen een pixel die wel in de schaduw ligt en eentje die niet in de schaduw ligt, terwijl daar in de praktijk een wat breder verloop in zit.

Een derde probleem is dat het niet werkt met "gaten" in textures. Neem een hekwerk. Vaak is dat gewoon een enkele polygoon met een texture erop met een alpha kanaal, dat bepaalt welke pixels transparant zijn. Een stencil volume heeft daar geen weet van, en dus kan een dergelijk hekwerk nooit een schaduw werpen zonder de ijzerdraadjes in het hekwerk expliciet te modelleren.

Huidige technieken zijn gebaseerd op shadow buffers - feitelijk gewoon een diepteplaatje gerenderd vanuit het oogpunt van het ligt. Die dieptewaarden geven in feite de afstand tot het ligt. Door die shadow texture te projecteren op de omliggende geometrie en te controleren of de afstand van de pixel tot het licht kleiner of groter is dan de waarde in de shadowbuffer kun je bepalen of iets wel of niet in de schaduw valt. Die hebben geen last van bovenstaande problemen, maar die hebben weer hun eigen problemen ("surface acne" door precisieproblemen waarbij iets dat in het licht valt toch af en toe in de schaduw lijkt te vallen, en sowieso het geringe aantal pixels in een shadow buffer, helemaal bij zoiets als een laaghangende zon waar feitelijk de gehele scenery in de buffer gerenderd moet worden)

[Reactie gewijzigd door .oisyn op 16 november 2011 16:16]

Niet echt het is nog steeds een keuze maken tussen shadow maps (dit gebruikt textures om de diepte van objecten op te slaan die een licht bron kan zien) of shadow volumes. Beide techniquen hebben drawbacks, maar zijn de meest gebruikte technieken om schaduwen te renderen.
Je hebt tegenwoordig ook ray casted en photon mapping maar deze zijn vrijwel alleen ofline technieken, of precomputed.
Tja, maar omdat het gedateerd zou zijn betekend nog niet dat het patent ongeldig is..
Wat mij een beetje stoort aan al deze artikelen rond John Carmack (niet alleen op T.NET) is dat het precies altijd HIJ is die alles schrijft...
Ik denk dat dat komt doordat hij het ook op twitter post, er zullen vast een aantal nieuws sites zijn die het volgen. uiteindelijk is hij ook degene die het meeste zal posten over ID nieuws. net als dat notch het meeste post over Mojang nieuws en zo zullen er voor nog meer bedrijven bepaalde personen zijn die als eerste posten.

-denk ook ineens aan Ghostcrawler voor Blizzard
Dat heeft misschien ook wel te maken met het feit dat hij ook daadwerkelijk het meeste zware werk aan de ID engines verzet. Die schaduwtechniek waar het hier over gaat bijvoorbeeld, wordt ook geregeld omschreven als "Carmack's Reverse". Er is een reden dat hij binnen het hele graphics engine wereldje als een genie beschouwd wordt...
Dat idee krijg ik van de media ook. Als dat klopt moet hij wel een genie zijn toch?

Diepe respect voor die man, ook omdat hij nog zo veel moeite doet om zijn oude engine open source te maken en daarbij hem ook goed en echt open af te leveren!
Als dat klopt moet hij wel een genie zijn toch?
Hij heeft een heleboel vernieuwend werk aan graphics gedaan, over een lange periode (vanaf de 2D textures tijd tot ... ergens in de toekomst). Niet alleen op hoog niveau, maar (vooral?) ook op heel laag niveau. Met meerdere assembly instructies een wortel uitrekenen (okee, dat kunnen meer mensen), sneller dan de ingebouwde sqrt instructie (_/-\o_).
Geen idee hoeveel prijzen en onderscheidingen ie al gewonnen heeft, maar het zou me weinig verbazen als er ooit een prijs naar hem vernoemd gaat worden.
Dat vroeg ik me eigenlijk ook al een tijdlang af. John Carmack is geboren in 1970 volgens Wikipedia. Hij is de (hoofd)schrijver / programmeur van Doom en Wolfenstein 3D, uitgekomen toen hij zo rond de 22-23 jaar oud was.

Ik kan me indenken dat hij in die tijd code schreef als een bezetene. Ik kan me ook indenken dat Carmack ook nu nog steeds een aardige partij kan programmeren als het moet.

Wat ik me niet kan indenken is dat hij nu, ondertussen 41 jaar oud en 20 jaar programmeren nog altijd driftig code zit te schrijven bij ID Software zonder iets anders te doen.

Het wordt altijd gebracht alsof hij de enige programmeur is daar, en alsof hij "even" een stuk van een game-engine herschrijft op een avondje of twee.

[Reactie gewijzigd door Katsunami op 16 november 2011 22:21]

Dit toont weer heel mooi het gevaar van software patenten aan. Hoewel het een aardig specifiek iets omschrijft, is het of:
A ) mogelijk geweest dat 2 developers dezelfde oplossing bedacht hebben.
B ) dat de oplossing nagebouwd is.

edit: smilies voorkomen
zoals Dr Flash aanhaalt is mogelijkheid B wel aan de orde.

[Reactie gewijzigd door Aragnut op 16 november 2011 15:57]

als je de link volgt onder "shadow volumes" kan je lezen dat "carmacks reverse" een 'uitbreiding' is op het betreffende patent. maw de uitvinding van carmack is gedaan op basis van informatie die hij over het onderwerp had vanuit het bestaande patent. Denk dat daar ook het probleem ligt.
Dan heb jij blijkbaar een ander artikel gelezen dan ik. "Carmack's reverse" is namelijk precies het algoritme dat gepatenteerd is door de mannen van Creative Labs.

Stencil shadows werken door een object te 'extruden' in de richting van het licht. Dit gehele volume beschrijft in feite de schaduw van het object in de 3D ruimte. Als er een te renderen pixel in dat volume valt, dan ligt het dus in de schaduw. Om alle pixels in de renderbuffer te markeren die in de schaduw liggen wordt de stenilbuffer gebruikt - dit zijn extra bits aan informatie die per pixel worden opgeslagen.

Nadat je de depth buffer hebt gevuld met alle geometrie in de scene, teken je de shadowvolumes van een licht, een volume per object waar het licht op valt. Dat volume is zoals gezegd opgebouwd uit een geëxtrude versie van het object, en bestaat dus uit polygonen. Je hebt front-facing polygonen, die naar de camera toe zijn gericht, en back-facing polygonen die van de camera af wijzen. Als je begint met een leeg stencilbuffer, en je verhoogt bij elke front-facing polygoon de waarde in de stencilbuffer en je verlaagt deze weer bij elke back-facing polygoon, dan hebben uiteindelijk alleen die pixels die in de schaduw vallen een stencilwaarde ongelijk aan 0. Dit komt omdat de depth test ervoor zorgt dat pixels die achter een al bestaande pixel ligt niet worden getekend. Als een dergelijke schaduw op de muur valt, dan vallen de front-facing polygonen van het volume vóór de muur (+1), en de backfacing polygonen áchter de muur (-1). Die laatste worden dus niet getekend, en dus houden de muurpixels in de schaduw een waarde van +1 in de stencilbuffer.

Dit werkt allemaal op zich prima, ware het niet dat het ook kan gebeuren dat de camera zich zelf ook in het volume kan bevinden. Op dat moment zie je feitelijk alleen nog maar backfacing polygonen van het volume (want de "front" facing polygonen, al kun je ze dan niet meer zo noemen, liggen achter je). Als je bovenstaande techniek gewoon hanteert, dan betekent dat dat ineens alle pixels op het scherm in de schaduw liggen.

De oplossing, die zowel John Carmack als de twee meneren van Creative Labs onafhankelijk van elkaar (volgens JC dan) hebben bedacht, is om de depth test juist om te draaien - render het schaduwvolume alleen als de pixels van het volume áchter de pixels van je geometrie liggen. Als de camera zich dan in het volume bevindt, dan zullen alleen die pixels in de schaduw komen waarbij de backfacing schaduwpolygonen zich áchter de muur bevinden. Bevinden ze zich voor de muur, dan worden ze niet gerenderd en wordt de stencilbuffer dus ook niet aangepast. Tevens werkt deze techniek ook als de camera zich niet in het volume bevindt. Ga maar na: als het volume volledig voor de muur ligt worden zowel de front- als backfacing polygonen niet getekend. Valt de muur in het volume dan worden alleen de backfacing polygonen getekent en krijgen de pixels een stencilwaarde hoger dan 0. Ligt het volume volledig achter de muur dan zullen zowel de front-facing als de back-facing polygonen worden getekent, en krijg je dus +1 en -1 en eindigt de stencilwaarde op 0.

[Reactie gewijzigd door .oisyn op 16 november 2011 16:02]

Bedankt voor de interessante uitleg, leer je ook nog wat over 3D graphics. :P
Het nog steeds aardig ku\ dat Creative niet gewoon het patent oprolt en in de fik steekt. Wat heeft de wereld hier nou aan? Een paar mensen maken mooie dingen met techniek, en toch moet iemand 'winnen' dus snel patenteren en iedereen slaan die je niet zakken geld komt brengen.

Als ik mijn geld kan verdienen en tegelijk technologie kan delen ben ik blij. Stinkend rijk zijn en alles voor mezelf hebben? Niemand om nieuwe ideeën mee te delen, spelen met techniek, of op een andere manier dingen mee uit te wisselen? Lijkt me een eenzaam bestaan.
Creative doet ook grafische technologie??...
In een ver, ver verleden. Nog voor ATi en nVidia als enige overgebleven waren. Al hebben ze een paar jaar terug nog wat laten zien met wat ze noemen "stemcell computing"; ARM cores die zich (claimden ze iig) konden aanpassen en zo in staat waren real-time raytracing te doen. Heeft ook met rendering van doen.
De "Diamond Monster 3D" kaart van Creative was (een van) de eerst voor consumenten betaalbare 3D grafische kaarten. Dit was in de tijd van de Quake (1) waarvoor je via de site van id software een speciale GLQuake versie kon downloaden om deze nieuwe hardware gerenderde 3D techniek te benutten.

Die Creative kaart had echter geen eigen ontwikkelde techniek maar was slecht een OEM van 3dfx (van de 'Voodoo' kaarten).

Edit: 'Diamond Multimedia' heeft blijkbaar niets met 'Creative Technology' te maken, ik was in de veronderstelling dat Diamond een merknaam van Creative was.

[Reactie gewijzigd door PeterPan op 16 november 2011 16:53]

Je zit wel op het goede spoor. Er is wel een Diamond Monster 3D geweest (van Diamond Multimedia, inderdaad), maar er heeft óók een Creative-concurrent van die kaart bestaan. Ze hebben eigenlijk best lang grafische kaarten gemaakt; misschien doen ze dat nog wel. Ik zou het uit mijn hoofd niet weten.

[Reactie gewijzigd door Katsunami op 17 november 2011 18:54]

In Nederland is een patent maar maximaal 20 jaar geldig.
Praktisch wordt dat zelden gehaald omdat de kosten nogal hoog oplopen.
Er wordt dus zelden die 20 jaar volgemaakt.
Inmiddels is hier al 12 jaar verstreken.

Ik weet alleen niet precies hoe dat in andere landen geregeld is, maar er staat me iets van bij dat het ook rond de 20 jaar is.
Hoe bedoel je? Bedoel je dat juridische procedures ervoor zorgen dat patenten niet meer gelden? Waar haal je vandaan dat de 20 jaar zelden wordt gehaald?
Er is gewoon een maximale levensduur voor die dingen.
Dat tweede haal (leer) ik van mijn stage/werk, waar ik veel te maken heb met patenten.
Je ziet dat typisch dat de meesten na 5-10 jaar niet meer verlengd worden.
Zeker patenten van minder grote bedrijven of eenmanszaakjes.
(nu is Creative alles behalve dat :P)

Er is ergens op internet/via google een hoop over te vinden, maar dat heb ik helaas momenteel niet bij de hand.
...hoe mooi zou de wereld zijn als copyrights (en gerelateerde rechten) ook maar 20 jaar zouden duren. Het werkt kennelijk prima voor uitvinders.

Op 1 januari van het jaar na het verstrijken van het copyright is alles dan Public Domain: engine, artwork, maps... en de vrijheid om alle custom maps en mods te maken en verspreiden die je maar wil.
Wat betreft software is 20 jaar eigenlijk nog te lang. Kijk maar eens waar computers waren 20 jaar geleden.

Software patenten zouden niet langer dan 5 jaar mogen gelden, en zelfs dat is misschien nog te lang. Dan wordt de uitvinder van een patent gedwongen om er snel iets mee te doen en wordt het oprichten van bedrijven die dienst doen als "patent trolls" hopelijk ook minder interessant.
Tja, en als het patent maximaal 20 jaar geldig is, dan is het dus nog steeds geldig.. dus wat wil je nu zeggen?
Ik dacht altijd dat softwareoctrooien maar voor 10 jaar waren blijkbaar niet dus.
In Nederland bestaan die niet.
Leuk en aardig dat ie nieuwe code schrijft, maar als het effect hetzelfde blijft, wat is dan zo anders dat het wel mag?
volgens mij is het werpen van schaduwen (nog) niet patenteerbaar ;)

Op dit item kan niet meer gereageerd worden.