Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Avances en el Deferred Rendering

Iniciado por Prompt, 28 de Junio de 2009, 10:17:24 PM

« anterior - próximo »

Prompt

Hola hola hola...

Bueno, me di en principio de bruces por ir muy deprisa y querer hacer las optimizaciones del tiron y la implementacion en GLSL del paper de Fabio Policarpo y cia ( no me acuerdo del otro autor desgracidamente)

No me gusta como trata las luces y el codigo que usa y plantea, para mi es obsoleto y muy lioso y carece de funcionalidad y buena utilización de operaciones graficas. Siento ser duro. Digamos que usa mil FBOs y el codigo es "old Style" entre otras cosas. A parte de que para optener el depth buffer usa z-early que es de doom 3 y no es para nada necesario. Por no decir de los agujeros negros que tiene como "tutorial" que es de lo que trata.

Bueno encontré por el foro de opengl.org un articulo, Image Space Lighting  Decidí analizarlo, son point lights y decidí ver como estába implementado. Es una demo y creo que el articulo los datos que maneja al menos, son una chorrada. Ese programa se funde el BUS de datos ,renderiza 2 veces y por fixed pipelines, por lo cual tiene un bottle neck impresionante. No se porque luego saca datos de pruebas de stress... yo me lo he tomado como un articulo más y pasar de esa implementación.

He decidido ver como maneja la parte del Lighting Stage y lo he mezclado con el paper de policarpo (bien hecho). Es decir, 2 FBO, 1 para el Geometry Stage y otro para el Lighting Stage, de forma aditiva. Se renderiza un pase con el ALBEDO ("color") es un QUAD y posteriormente, por luz suporpones (GL_BLEND) más QUAD de forma aditiva. Ya se me ocurren formas de optimizarlo en un paso previo y encima vi una demo de "Indirect Deferred Rendering", o algo así que creo que optimiza esta parte. ¿Que pasa si tenemos 80 000 luces en pantalla para iluminar? pues la tarjeta le da igual pq no son muchos polis pero se podria hacer todo el trabajo aditivo de una sola pasada? eso es lo que me estoy planteando, pero me voy a poner el freno.

Aunque las screenshots son una birria (aparentemente...) veamos:

Geometry Stage:


Accumulative Light Stage:


De momento y sin hacer culling de las luces (las proceso todas, si no se ven pues es absurdo poner un QUAD si no añaden nada a la escena, pero bueno poco a poco). Machacaré el tema y veré que tal le sienta las funciones que hice para el paper de policarpo de coger el frustum, quitar las luces que no entre y utilizar las "SCISSORS" para optimizar. Antes de pasar al "Stage" mas divertido que es el de los filtros puedo decir que ya he llegado a un punto muy bueno y comprendo totalmente la tecnica y la domino. Ahora toca frikear optimizando un poco, divertirse con el Filter Stage / Post-Procesing Stage y ver si hago un paper completo como dios manda, lo añado a la wiki de stratos, a la wiki de codepixel y os ayuda a todos a tener un motor de render actualizado a los tiempos que corren, está tecnica sin duda será la base del render futuro ahora que las tarjetas graficas tienen bastante memoria para poder hacerlo :) (por no hablar de como se optimiza el tema de iluminación, está por ver como hacer algo parecido para las sombras aun tengo que frikear mas)

Un saludo!  :o

PD: tamat, ya estoy acabando tendrás que sufrir menos o nada el dia de mañana :D

Vicente

Cada vez que leo deferred me acuerdo del post que puso hace poco Ysaneya... :p


tamat

Por un stratos menos tenso

Vicente

Ese Ysaneya :p El segundo post es el de deferred lighting. Pero vamos, cualquiera de sus posts es una gozada de leer, lo que está haciendo con Infinity es simplemente de quitarse el sombrero.

Un saludo!

Vicente

Sergen


Prompt

Cita de: Sergen en 29 de Junio de 2009, 08:38:19 PM
Sí que queda bien.  ::)

Espero que esto sea por mi y por mi poderoso screenshots donde se ve en todo su explendor mi deferred rendering! xD

Prompt

Cita de: Vicente en 29 de Junio de 2009, 04:33:28 PM
Ese Ysaneya :p El segundo post es el de deferred lighting. Pero vamos, cualquiera de sus posts es una gozada de leer, lo que está haciendo con Infinity es simplemente de quitarse el sombrero.

Un saludo!

Vicente

:( jopetas, me he equivocado de motor que hacer, tools, y complejidad variada durante estos años. Deberia haber hecho un infinity! jum!  >.<

Me impresiona mucho las imagenes que hay, me recuerda mucho a EVE online y a otro que no recuerdo de microsoft games. Siempre me impresionan los juegos del espacio. Pero ché! que yo tb tengo el accurate atmosphere scattering y el deferred! malditos!  >:D

Vicente

Lo bonito de Infinity es que es totalmente procedural. Si te lees el journal verás un montón de posts sobre generación de planetas, nebulosas,... Es la leche. El Eve se le parece en que es de naves, pero poco más.

Lo siento por el offtopic. Un saludo!

Vicente

Prompt

Cita de: Vicente en 29 de Junio de 2009, 11:15:11 PM
Lo bonito de Infinity es que es totalmente procedural. Si te lees el journal verás un montón de posts sobre generación de planetas, nebulosas,... Es la leche. El Eve se le parece en que es de naves, pero poco más.

Lo siento por el offtopic. Un saludo!

Vicente

No nada, solo ponia mis avances el hilo no da para mucho más de momento. Lo de procedural es la generación de estos. Es una buena base pero es enorme si tienes en cuenta que tendria que desarrollar algo tipo civilización y jodiendas variadas. Sabes si los terrenos los hace leyendo textura? esto SUX en GForce < 7800, me gustó mucho en el video donde tiene el cinturon de asteroides impresiona gratamente todas las cosas jugando juntas.

tamat

los planetas son 100% procedurales, de hecho no almacena un solo byte para cada uno de ellos, por eso se permite afirmar que su universo puede tener infinitos planetas. Obviamente esto impide que los planetas puedan evolucionar pero el juego está más enfocado a viajar por el espacio.

De su deferred me gustó que lo usase para generar un global ilumination.
Por un stratos menos tenso

Vicente

Cita de: tamat en 30 de Junio de 2009, 12:35:42 PM
los planetas son 100% procedurales, de hecho no almacena un solo byte para cada uno de ellos, por eso se permite afirmar que su universo puede tener infinitos planetas. Obviamente esto impide que los planetas puedan evolucionar pero el juego está más enfocado a viajar por el espacio.

De su deferred me gustó que lo usase para generar un global ilumination.

Creo que guarda una semilla, para generar siempre lo mismo en los mismos sitios (así en vez de guardar todo solo tiene que guardar la semilla y cuando alguien pasa por esa zona la regenera y a correr).

tamat

ni eso, esa semilla tambien es procedural, creo que habla de ello en su post sobre como generar galaxias. Y dejemos ya de offtopiquear!
Por un stratos menos tenso






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.