Archiv verlassen und diese Seite im Standarddesign anzeigen : Softshadows @ Riddick
mapel110
2004-12-19, 04:54:54
Howdy,
The reason soft shadows only runs on nvidia cards is because we use the
OLE_LINK1nv_copy_depth_to_color extension. We also made it gf6 specific by
using gf6 specific fragment program instructions, in order to get better
performance. There was no point in making a geforce fx compatible version
because it would not run at acceptable framerates anyway.
Another issue is the fragment program complexity. About 130 instructions,
whereof 36 are texture look-ups out of which 18 are dependant look-ups. It
might be possible to get this to run on x800 with some reworking or breaking
it up into multiple passes. It definitely rules out Radeon 9700-9800 parts,
though.
There wasn't any time to sort out these issues to make it run on high-end
Radeons. Soft shadows was implemented about a week before Riddick went gold,
so we had to do the quickest possible implementation in order to have the
feature at all.
regards,
Magnus
////
Bekam ich gerade als Email. Stimmt das so? :)
Demirug
2004-12-19, 08:53:44
um zu prüfen ob es stimmt müsste man den Shader suchendie Verwendung von nv_copy_depth_to_color prüfen. Wobei sich zweiteres ja wie gesagt wenn auch mit Mehraufwand emulieren lässt.
Das primäre Problem für eine Umsetzung auf einen X800 dürften die 18 dependent Reads sein. Das gibt mindestens 7 Passes wobei dann aber wohl jeder Shader kurz genug werden dürfe das er auch auf einem R300 läuft. Erschwerend kommt aber hinzu das man auf jeden Fall mindestens einen zus#tzlichen FP Buffer braucht. im schlimmsten Fall sogar einen mit FP32 Werten. Um das genau zu sagen müsste man den entsprechenden Shader einmal sehen.
Wenn man es allerdings wirklich erst eine Woche vor dem Goldstatus eingebaut hat ist es verständlich das man sich diese ganze Fummelei nicht mehr antuhen wollte.
zeckensack
2004-12-19, 12:24:07
Ich raff' nicht, was die mit NV_copy_depth_to_color (http://oss.sgi.com/projects/ogl-sample/registry/NV/copy_depth_to_color.txt) wollen.
ARB_depth_texture (http://oss.sgi.com/projects/ogl-sample/registry/ARB/depth_texture.txt) macht die Extension überflüssig, wenn man nicht gerade auf Stencil im Alpha-Kanal scharf ist, wovon ich in diesem Fall eher nicht ausgehe. Außerdem wird's dadurch viel einfacher, an die Z-Samples zu kommen. Mit NV_cdtt wird -- wie der Name schon aussagt -- Z in die RGB-Kanäle einer Textur umgeladen. Wenn man aus der Textur dann wieder Z haben will, muss man erstmal rekonstruieren. Und so wundert es mich auch nicht, dass die genannte Sample-Anzahl glatt durch drei teilbar ist :|
NV_cdtt ist natürlich nicht von vornherein überflüssig gewesen. ARB_dt ist ca ein Jahr jünger. Und natürlich auf allerlei Hardware verfügbar (http://www.delphi3d.net/hardware/extsupport.php?extension=GL_ARB_depth_texture). Nicht nur auf NVIDIA-Chips.
Demirug
2004-12-19, 13:34:38
Guter Einwand allerdings verstehe ich nicht worauf du mit "dass die genannte Sample-Anzahl glatt durch drei teilbar ist" hinaus möchtest. Die 3 "Z-Kanäle" werden ja sowieso in einem Zug gesampelt.
zeckensack
2004-12-20, 11:05:16
Guter Einwand allerdings verstehe ich nicht worauf du mit "dass die genannte Sample-Anzahl glatt durch drei teilbar ist" hinaus möchtest. Die 3 "Z-Kanäle" werden ja sowieso in einem Zug gesampelt.Weiß ich jetzt auch nicht mehr :redface:
Ich hatte irgendwas mit (fixed function-)Texturfiltern im Kopf, aber das ist ja Käse. Die arbeiten sowieso pro Kanal getrennt, wenn man sie denn in diesem Fall überhaupt benutzen kann.
tombman
2004-12-20, 23:36:19
fragt die mal, ob sie soft shadows noch für ATI X800 proggen werden per patch oder nicht..
Chris Lux
2004-12-21, 08:27:05
Ich raff' nicht, was die mit NV_copy_depth_to_color (http://oss.sgi.com/projects/ogl-sample/registry/NV/copy_depth_to_color.txt) wollen.
ARB_depth_texture (http://oss.sgi.com/projects/ogl-sample/registry/ARB/depth_texture.txt) macht die Extension überflüssig, wenn man nicht gerade auf Stencil im Alpha-Kanal scharf ist, wovon ich in diesem Fall eher nicht ausgehe[...]
ich könnte mir vorstellen, dass sie genau das brauchten. riddick nutzt ja volume stencil shadows, welche durch deren algorithmus (an den kanten) geglättet werden. ist also denkbar, dass sie auf die stencil werte angewiesen sind.
€dit: nutzt riddick nicht D3D? wenn ja, wie nutzen sie dann nv spezifische extensions? (sorry ogl ist meine spezielle hauptdomäne, d3d kenn ich nur die grundlagen)
Demirug
2004-12-21, 08:33:47
ich könnte mir vorstellen, dass sie genau das brauchten. riddick nutzt ja volume stencil shadows, welche durch deren algorithmus (an den kanten) geglättet werden. ist also denkbar, dass sie auf die stencil werte angewiesen sind.
Wenn jemand Riddick hat und den Shader mal rausholt könnte man das nachprüfen.
€dit: nutzt riddick nicht D3D? wenn ja, wie nutzen sie dann nv spezifische extensions? (sorry ogl ist meine spezielle hauptdomäne, d3d kenn ich nur die grundlagen)
Bei D3D gibt es keine Extension. Das einzige was IHV spezifisch sein kann sind Textureformate.
Wenn jemand Riddick hat und den Shader mal rausholt könnte man das nachprüfen.
Bei D3D gibt es keine Extension. Das einzige was IHV spezifisch sein kann sind Textureformate.
es nutzt OGL
Chris Lux
2004-12-21, 12:03:31
Wenn jemand Riddick hat und den Shader mal rausholt könnte man das nachprüfen.
ich schau mal wenn ich wieder zuhause bin, was sich machen lässt.
Bei D3D gibt es keine Extension. Das einzige was IHV spezifisch sein kann sind Textureformate.
Es nutzt OGL.
alles klar, nur recht ungewöhnlich für nen XBOX port ogl zu nutzen.
Demirug
2004-12-21, 12:12:22
ich schau mal wenn ich wieder zuhause bin, was sich machen lässt.
alles klar, nur recht ungewöhnlich für nen XBOX port ogl zu nutzen.
Die Engine welche Riddick benutzt ist sowieso eine Multi-API engine.
Welche nutzt Riddick denn?
Demirug
2004-12-21, 12:30:34
Welche nutzt Riddick denn?
Starbreeze Engine (http://www.starbreeze.com/engine.jsp)
Demirug
2004-12-21, 20:23:07
So nachdem ich nun einen Blick auf die Shader werfen konnte muss ich sagen das ich da einem Missverständniss aufgessen bin.
Es sind keine 18 Dependent Levels sondern wenn nur 2 (wenn ich mich nicht verzählt habe). Woher die 18 aber nun kommt verstehe ich auch nicht weil diese Zahl in keinem Zusammenhang auftaucht.
Ob der Stencilbuffer wirklich gebraucht wird lässt sich nicht mit Sicherheit sagen weil für die Schatten 2 Texturen benutzt werden. Eine mit dem Z-Wert und eine Maske bei der man den Alpahwert nutzt. Das könnte der Stencilbuffer sein.
Ich wage jetzt aber mal zu behaupten das man das ganze trotzdem auch mit einem X800 hinbekommen könnte. Mit nicht ganz so soften Schatten wohl auch mit einem R3XX.
Aber das ist ja nicht meine Entscheidung.
Mr. Lolman
2004-12-21, 20:58:59
Aber das ist ja nicht meine Entscheidung.
Doch, bitte bastle ne Softshadows Unterstützung für R3x0/420 Karten :smile:
Demirug
2004-12-21, 21:24:19
Doch, bitte bastle ne Softshadows Unterstützung für R3x0/420 Karten :smile:
1. Das ist OpenGL. Dafür bin ich kein Spezialist auch wenn ich mir wegen DOOM III damals extra auch einen Tweaker Rahmen für OGL geschrieben habe.
2. Ich habe gar kein Riddick weil mich FPS Spiele nicht anmachen.
3. Es gibt keine Demo mit der man rumprobieren kann.
4. Warum soll ich eigentlich die Arbeit von anderen Entwicklern machen, die dafür bezahlt wurden? :(
5. Ich würde mich wahrscheinlich wieder aufregen müssen.
LordDeath
2004-12-21, 21:26:08
Doch, bitte bastle ne Softshadows Unterstützung für R3x0/420 Karten :smile:
ich dachte, er hat nur die möglichkeit, zu gucken, was der shader macht und nicht wie er es macht! wie kann man da einen anderen shader für die gleiche sache aber auf anderer hardware schreiben??
eViLsTieFel
2004-12-21, 21:31:31
Kann man denn mal einen Screenshot von der Umsetzung dieser ominösen Softshadows sehen?
Jesus
2004-12-21, 21:33:30
1. Das ist OpenGL. Dafür bin ich kein Spezialist auch wenn ich mir wegen DOOM III damals extra auch einen Tweaker Rahmen für OGL geschrieben habe.
2. Ich habe gar kein Riddick weil mich FPS Spiele nicht anmachen.
3. Es gibt keine Demo mit der man rumprobieren kann.
4. Warum soll ich eigentlich die Arbeit von anderen Entwicklern machen, die dafür bezahlt wurden? :(
5. Ich würde mich wahrscheinlich wieder aufregen müssen.
öhm, pff :)
Du hast ja FPS Shooter HL2 auch und dafür den entsprechenden "Tweak" für die NV Karten gemacht :rolleyes:
Demirug
2004-12-21, 21:41:52
öhm, pff :)
Du hast ja FPS Shooter HL2 auch und dafür den entsprechenden "Tweak" für die NV Karten gemacht :rolleyes:
Bei HL2 habe ich bisher nur allgemeine Plugins eingesetzt die ich sowieso für den DX-Tweaker programmiert habe. Was spezielles gab es da bisher nie.
Das ich HL2 habe kommt lediglich daher weil ich einen Gutschein dafür hatte. Gekauft hätte ich es mir nicht weil ich wie gesagt FPS nicht mag.
EDIT: PS: zudem brauche ich es für einen Artikel in der nächsten PCGH ist also sowieso geschäftlich.
Demirug
2004-12-21, 21:47:15
ich dachte, er hat nur die möglichkeit, zu gucken, was der shader macht und nicht wie er es macht! wie kann man da einen anderen shader für die gleiche sache aber auf anderer hardware schreiben??
Bei Direct3D kann ich auch patchen (in bestimmten Grenzen) da ich dafür gerade ein Tool entwickle. Ich habe auch was ähnliches für OpenGL aber das ist ein übler Quickhack denn ich in einem halben Tag in die Kiste gehackt habe weil ich ein bischen an D3 rumpatchen wollte.
Das austauschen der Shader wäre das kleinste Problem. Das grössere Problem ist das neben dem Shader ja auch die entsprechenden Extensions emuliert werden müssen.
Wenn es von Riddick mal eine Demo gibt und die auch den Effekt zulässt bin ich unter Umständen bereit ein Wochenende zu investieren.
LordDeath
2004-12-21, 22:04:04
Wenn es von Riddick mal eine Demo gibt und die auch den Effekt zulässt bin ich unter Umständen bereit ein Wochenende zu investieren.
solange du es dir nicht als lästige pflicht stellst, hat wohl niemand hier im forum was dagegen :D
Mr. Lolman
2004-12-27, 18:15:33
Könnte man nicht nach nem ähnlichen Prinzip auch Softshadows in D3 realisieren?
Demirug
2004-12-27, 18:21:10
Könnte man nicht nach nem ähnlichen Prinzip auch Softshadows in D3 realisieren?
Möglich, aber ich brauche da erst noch ein paar mehr Detailinfos über den Effekt. Der Shader alleine reicht da nicht.
Allerdings ist DOOM III ja jetzt schon ein Leistungsfresser und die Riddick Softshadows sind mindestens 7 mal so aufwenig wie die harten Schatten
Onlinejunky
2004-12-27, 22:28:20
Hi,
wie spiele ich den Riddick im Direct3d Modus?
Statt "VID_RENDER=OpenGL" -----> "VID_RENDER=Direct3d" ? :confused:
Was bringst mir das Game in Direct3d zu spielen?
Onlinejunky
mapel110
2004-12-27, 22:45:50
Hi,
wie spiele ich den Riddick im Direct3d Modus?
Statt "VID_RENDER=OpenGL" -----> "VID_RENDER=Direct3d" ? :confused:
Was bringst mir das Game in Direct3d zu spielen?
Onlinejunky
Die PC-Version besitzt soweit ich weiss keinen Direct3D-Renderer.
Und bringen würde es wohl nichts, höchstens Probleme, weil das nicht die primäre API ist für die PC-Umsetzung.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.