Raytracing-Schatten in World of Tanks: Problemlos ohne RTX-Hardware?

4 min

17.10.19

wot.webp

Seit Nvidias RTX-Kar­ten ist der Be­griff »Ray­tra­cing« stark in Mo­de. Welch bes­se­re Wer­bung gä­be es al­so, das ei­ge­ne Spiel mit je­nem Zau­ber­wort auf­zu­hüb­schen. Dies dürf­ten sich wohl auch die Män­ner hin­ter World of Tanks ge­dacht ha­ben, wel­ches bald per Ray­tra­cing be­rech­ne­te Schat­ten be­inhal­ten wird. Nach ei­ner kom­pak­ten Er­klä­rung des ein­ge­setz­ten, hy­bri­den Echt­zeit­ver­fah­rens, wer­den wir an­hand der ges­tern er­schie­nen De­mo­ver­si­on Gra­fik und Per­for­mance ge­nau­er ins Vi­sier neh­men.

# Raytracing, RTX, Realität,… ist doch eh dasselbe, nicht?

Die Be­son­der­heit bei World of Tanks ist, dass die Strah­len­ver­fol­gung kei­ner­lei Hard­ware­lö­sung ver­folgt. Es läuft un­ter Di­rec­tX 11 und setzt auf In­tels oneA­PI, so­mit ver­zich­tet es auf Mi­cro­softs DXR und RT Co­res der RTX-Kar­ten wer­den gar nicht un­ter­stützt. Statt­des­sen wer­den die für »per­for­man­tes« Ray­tra­cing un­be­dingt not­wen­di­gen Hüll­kör­per-Hier­ar­chien (BVH) von der CPU be­rech­net, wäh­rend ei­ne ge­wöhn­li­che GPU die ei­gent­li­chen Schnitt­tests durch­führt. Ei­ne wirk­lich gu­te Er­klä­rung über simp­les Ray­tra­cing im All­ge­mei­nen und ge­naue­res zur Im­ple­men­tie­rung in World of Tanks fin­det sich im ent­spre­chen­den Ta­ge­buch­ein­trag der Ent­wick­ler.

# Grafikvergleich mit drei Raytracing-Optionen

Da man spä­tes­tens seit Tu­ring weiß, dass Ray­tra­cing nicht ge­ra­de ge­nüg­sam ist, fin­den sich ver­schie­de­ne Al­ter­na­ti­ven im Spiel. Ne­ben den klas­si­schen Schat­ten­tex­tu­ren gibt es zu­nächst har­te Ray­tra­cing-Schat­ten. Hier wird die Son­ne als Punkt­licht an­ge­se­hen, wel­ches im Ge­gen­satz zu ei­ner kor­rek­te­ren Re­prä­sen­ta­ti­on als Ku­gel kei­ner­lei Vo­lu­men be­sitzt. Ein Pi­xel kann so­mit nur kom­plett im Son­nen­licht oder voll­kom­men im Schat­ten sein. Rea­lis­ti­scher ist es je­doch, ei­nen wei­chen Über­gang an den Rän­dern zu ha­ben, da von dort die Son­nen­strah­len le­dig­lich teil­wei­se auf­tref­fen. Die­ser Be­reich der Teil­be­schat­tung wird au­ßer­dem grö­ßer, je wei­ter das schat­ten­wer­fen­de Ob­jekt vom Un­ter­grund ent­fernt liegt. Für die­sen Ef­fekt gibt es die hö­he­ren bei­den Stu­fen.

Es soll al­ler­dings wei­ter­hin (halb­wegs) per­for­mant lau­fen, wes­halb trotz­dem bloß ein ein­zel­ner Schat­ten­strahl zur Son­ne ge­schickt wird. Ich ver­mu­te, dass die Son­ne in die­sem Fall aus meh­re­ren Punkt­lich­tern be­steht und be­nach­bar­te Pi­xel im­mer zu ei­ner un­ter­schied­li­chen Licht­quel­le ih­ren je­wei­lig­en Strahl ver­schie­ßen. Nach ei­nem Frame dürf­te dann ge­wech­selt wer­den. Das un­be­ar­bei­te­te Re­sul­tat wä­re kein wirk­lich wei­cher, son­dern ein sehr kör­ni­ger Schat­ten. Um das zu ver­hin­dern wird Rauschent­fer­nung durch­ge­führt – bei der zwei­ten Stu­fe nur leicht, bei der drit­ten et­was stär­ker. In al­len Fäl­len wird Ray­tra­cing aus­schließ­lich für Pan­zer­schat­ten ein­ge­setzt. Kon­kret er­ge­ben sich dar­aus die fol­gen­den Bil­der:

Einfache Shadowmaps im Vergleich mit Raytracing Stufe 1, Stufe 2, Stufe 3.
wot0.webp
wot1.webp wot2.webp wot3.webp

Die klas­si­sche Me­tho­de hat ein paar Pro­ble­me: Ei­ner­seits sind ei­ni­ge Schat­ten nicht gänz­lich kor­rekt plat­ziert und leicht ver­setzt, an­de­rer­seits hängt die Schär­fe von der ver­wen­de­ten Mip­map-Stu­fe, al­so der Tex­tur­auf­lö­sung ab, wel­che durch die Dis­tanz zwi­schen vir­tu­el­ler Ka­me­ra und Schat­ten be­stimmt wird – nicht aber von der Ent­fer­nung des schat­ten­wer­fen­den Ob­jekts. Die nächs­te Op­ti­ons-Stu­fe be­hebt das ers­te Pro­blem und plat­ziert al­les kor­rekt, die re­sul­tie­ren­den Schat­ten – bei­spiels­wei­se vom lan­gen Rohr – sind je­doch un­rea­lis­tisch scharf. Ray­tra­cing-Stu­fe 2 be­hebt auch dies et­was, der Über­gang bleibt al­ler­dings et­was rau und noi­sy, erst die höchs­te Qua­li­tät schafft ein rausch­frei­es Bild.

Ob­wohl ein paar Schat­ten feh­len oder zu un­scharf sind, fin­de ich den Sprung von der nied­rigs­ten zur höchs­ten Ein­stel­lung per­sön­lich nicht be­son­ders gra­vie­rend auf die­sen Screen­shots. In ei­ner lau­fen­den Par­tie wür­de ver­mut­lich den we­nigs­ten Spie­lern der Un­ter­schied auf­fal­len. Doch soll­te die Per­for­mance stim­men, macht man mit der drit­ten Op­ti­on nichts falsch (das kann man nicht im­mer bei Schat­ten-Ein­stel­lun­gen sa­gen). Auf die über­trie­be­ne Här­te oder das starke Rau­schen wür­de ich hin­ge­gen al­le­mal ver­zich­ten.

wot0s.webp
Am Schatten des Riesenrohrs ist mittig ein Wechsel der Auflösung zu erkennen.

In Be­we­gung er­gibt sich je­doch mit den Shado­w­maps ein klei­nes Pro­blem. Hier fin­det ein har­ter Über­gang zwi­schen den Mip­map-Ebe­nen statt, wel­cher als sicht­ba­re Kan­te wahr­ge­nom­men wer­den kann. Vie­le mo­der­ne­re Spie­le um­ge­hen das Pro­blem, indem sie den Tran­si­ti­ons­be­reich aus­brei­ten, bis die­ser kaum noch er­kenn­bar ist. World of Tanks dürf­te aus Per­for­man­ce­grün­den hier­auf ver­zich­ten, zu­mal der ei­ge­ne Pan­zer im Groß­teil ei­nes Matches die Dis­tanz zur Ka­me­ra hal­ten dürf­te.

Dem­ge­gen­über steht aber auch ein nicht op­ti­ma­les Ray­tra­cing. So­bald schnel­le­re Be­we­gun­gen re­la­tiv zur Bild­schirm­ebe­ne pas­sie­ren, kann man schwe­rer die In­for­ma­tio­nen aus vor­an­ge­gan­ge­nen Frames nut­zen und die Rauschent­fer­nung wird schwie­ri­ger. Das Bild wird folg­lich un­ru­hig und der De­noi­ser kann Tei­le falsch zu­sam­men­setz­ten, hier an der Rohr­spit­ze er­kenn­bar. (Das Me­di­um-Pre­set wur­de ver­wen­det, um Be­we­gungs­un­schär­fe ab­zu­stel­len.)

wot3m.webp

# Performance

Selbst bei der Wahl des Ul­tra-Pre­set wird nicht au­to­ma­tisch Ray­tra­cing ak­ti­viert, son­dern muss ma­nu­ell zu­ge­schal­ten wer­den. Na­ja, viel­leicht ist die Im­ple­men­tie­rung le­dig­lich bug­gy, an der Leis­tung wird es be­stimmt nicht lie­gen, we­gen feh­len­der Hard­ware hat man sich ja mit der Kom­ple­xi­tät zu­rück­ge­hal…

Ultra + RT 069.478.7100.9117.9123.3Ultra + RT 132.937.744.255.573.8Ultra + RT 231.235.641.851.869.6Ultra + RT 329.633.739.246.962

Gut, das ist jetzt doch ein gan­zes Stück schlim­mer als er­war­tet. Der Graph zeigt je­weils die aus­ge­ge­be­nen 1% und 11% Lows/Highs, so­wie die Durch­schnitts-Frame­ra­te in fps auf mei­nem Rech­ner mit RX 570 4 GB, 16 GB RAM und ei­ner i7 4770 äqui­va­len­ten CPU. Ne­ben der Schat­ten­qua­li­tät steht al­les auf Ul­tra bei Full HD und ge­mes­sen wur­de ein 45-se­kün­di­ger Ab­schnit­t, der be­ginnt, wenn das ers­te Mal Pan­zer zu se­hen sind. Die et­wa zwölf Pro­zent Un­ter­schied zwi­schen der bes­ten und schlech­tes­ten Ray­tra­cing-Stu­fe dürf­te bloß durch den De­noi­ser zu ver­ant­wor­ten sein. Bei der Ma­xi­mal­ein­stel­lung blie­ben im Ver­gleich zu »nor­ma­len« Schat­ten al­so letzt­lich ma­ge­re 39% der ur­sprüng­lich­en Bild­wie­der­hol­ra­te üb­rig. Bei dem mitt­le­ren Pre­set wä­re es so­gar noch schlim­mer und man fällt von fast 200 auf un­ter 50 fps.

Das viel­leicht et­was be­ängs­ti­gen­de da­bei ist in­des, dass die GPU kom­plett aus­ge­las­tet wird, wäh­rend die CPU bei et­wa 20% Last sitzt. Auch wenn die­se Zah­len nicht völ­lig aus­sa­ge­kräf­tig be­züg­lich Fla­schen­häl­sen sind, könn­te es doch ein schlech­tes Zei­chen für hy­bri­de Ray­tra­cing­ver­fah­ren sein. In AMDs Pa­tent, wel­ches si­cher­lich auf ihrer näch­sten Ge­ne­ra­tion und den neu­en Kon­so­len An­wen­dung fin­det, ar­bei­tet die ge­ne­rel­le GPU-Hard­ware recht ähn­lich wie hier in World of Tanks, nur bei den BVHs wird statt dem Pro­zes­sor auf ex­tra Fi­xed-Func­tion-Ein­hei­ten ent­spre­chen­der Gra­fik­chips ge­setzt. Ne­ben der Ent­las­tung der CPU (was schein­bar in die­sem Spiel kein wich­ti­ger Punkt wä­re), könn­te le­dig­lich die nied­ri­ge­re La­tenz durch die phy­si­ka­li­sche Nä­he und der weg­fal­len­der Kom­mu­ni­ka­ti­on über den PCI-Bus das Ru­der rum­rei­ßen.

Letzt­lich kann man hier­über nur spe­ku­lie­ren, bei World of Tanks weiß ich der­weil si­cher, dass ich auf Ray­tra­cing ver­zich­ten wür­de – wenn ich es denn spie­len wür­de.