Duda hacerca del Render Engine

4 views
Skip to first unread message

Keinier Caboverde R.

unread,
Apr 23, 2011, 7:06:59 PM4/23/11
to codepixel
Saludos colegas,

Les doy las gracias de antemano ya que se que me sabran sacar de esta
duda que me mata y por mucho que busco no encuentro respuesta. aqui
va:

Primero: Segun el articulo "Diseño de un motor 3d moderno", que
califico como excelente de (Javier Loureiro,Jesús de Santos e Iñigo
Quilez ), del cual entendi el concepto pero no entiendo ( disculpen
mi ignorancia) entiendo la nececidad de apbtraer las funciones del API
para hacer mas facil las tareas tediosas y lograrlas a un nivel mas
alto que el de las APIs, ahora yo siempre he trabajado con OpenGL y
nunca me habia preocupado del orden en que se pintan las mallas, mi
duda es esa, quisiera saber en que afecta el orden en que se pinten
las mallas si el resultado es basicamente el mismo. Por mucho que lo
pienso no hallo la necesidad de implementar una cola de
pintado. :-| ?????,

Porfavor si alguien podria sacarme de duda estare muy agradecido.

Jon Valdés

unread,
Apr 23, 2011, 7:23:05 PM4/23/11
to code...@googlegroups.com
2011/4/24 Keinier Caboverde R. <kei...@gmail.com>:

No es una cuestión funcional, sino de rendimiento. Cambiar texturas y
shaders es algo costoso para la GPU, así que es mejor hacerlo la menor
cantidad de veces posible. Ordenando las mallas de forma que
reutilices la misma textura varias veces, se intenta evitar este
problema.

Keinier Caboverde R.

unread,
Apr 23, 2011, 7:34:29 PM4/23/11
to codepixel


On Apr 23, 7:23 pm, Jon Valdés <juan...@gmail.com> wrote:
> 2011/4/24 Keinier Caboverde R. <kein...@gmail.com>:
Hola Jon,
Entonces basicamente este proceso es el mismo de renderizado de
DirectX u Opengl solo
que alteramos o controlamos el orden en que son renderisadas para
reutilizar la informacion de
la cache o buffer (por asi decirlo) de la GPU, ahora ese control lo
lleva el scenegraph con ayuda de los visitors los cuales crean una
lista organizada de los componentes de la escena la cual es enviada al
"driver grafico" que lo pinta a ciegas segun el orden la de la lista,
porfavor corrijanme si me equivoco, ya que estoy diseñando un Motor
grafico basico, para asi poder entender este funcionamiento.

Gracias.

Jon Valdés

unread,
Apr 23, 2011, 9:50:52 PM4/23/11
to code...@googlegroups.com
2011/4/24 Keinier Caboverde R. <kei...@gmail.com>:
>
>
> On Apr 23, 7:23 pm, Jon Valdés <juan...@gmail.com> wrote:
>> 2011/4/24 Keinier Caboverde R. <kein...@gmail.com>:
>>
>>
>> No es una cuestión funcional, sino de rendimiento. Cambiar texturas y
>> shaders es algo costoso para la GPU, así que es mejor hacerlo la menor
>> cantidad de veces posible. Ordenando las mallas de forma que
>> reutilices la misma textura varias veces, se intenta evitar este
>> problema.
>
> Hola Jon,
> Entonces basicamente este proceso es el mismo de renderizado de
> DirectX u Opengl solo
> que alteramos o controlamos el orden en que son renderisadas para
> reutilizar la informacion de
> la cache o buffer (por asi decirlo) de la GPU, ahora ese control lo
> lleva el scenegraph con ayuda de los visitors los cuales crean una
> lista organizada de los componentes de la escena la cual es enviada al
> "driver grafico" que lo pinta a ciegas segun el orden la de la lista,
> porfavor corrijanme si me equivoco, ya que estoy diseñando un Motor
> grafico basico, para asi poder entender este funcionamiento.

No hay un buffer o cache en este caso. Simplemente la GPU tiene
ciertos shaders y texturas activos en todo momento, y cambiarlas
supone unos cuantos ciclos de proceso. No es mucho tiempo, pero si
tienes muchos objetos con materiales distintos esto puede sumar varios
milisegundos por frame.

En cuanto al scenegraph, visitors, etcetera, hay infinitas formas de
hacerlo. Yo nunca he necesitado un scenegraph "tradicional", por
ejemplo, pero tampoco he programado una aplicación con muchos
materiales al mismo tiempo. En tu caso, si tu aplicación es pequeña,
no creo que el scenegraph sea el punto más importante.

Keinier Caboverde R.

unread,
Apr 24, 2011, 7:02:15 PM4/24/11
to codepixel
Hola de nuevo,

Disculpen tanta molestias con este tema, el caso es que no hay mucha
documentacion (casi nada) donde expliquen esta cuestion salvo pequeños
articulos en la web, pero este en particular solo en codepixel,
volviendo al tema. Existe un orden Optimo para hacer las
rasterizaciones mencionadas? es decir, primero transparencias,luego
solidos o viceversa, en realidad me confunde mucho este tema, ahunque
he estudiado los GPU de amd y los nvidia :S creo que retrocedo jaja.
Es muy confuso el tema cuando vienes de desarrollar sistemas
empresariales. XD.

Jon Valdés

unread,
Apr 24, 2011, 7:17:11 PM4/24/11
to code...@googlegroups.com
2011/4/25 Keinier Caboverde R. <kei...@gmail.com>:

> Hola de nuevo,
>
> Disculpen tanta molestias con este tema, el caso es que no hay mucha
> documentacion (casi nada) donde expliquen esta cuestion salvo pequeños
> articulos en la web, pero este en particular solo en codepixel,
> volviendo al tema. Existe un orden Optimo para hacer las
> rasterizaciones mencionadas? es decir, primero transparencias,luego
> solidos o viceversa, en realidad me confunde mucho este tema, ahunque
> he estudiado los GPU de amd y los nvidia :S creo que retrocedo jaja.
> Es muy confuso el tema cuando vienes de desarrollar sistemas
> empresariales. XD.

Los objetos semitransparentes deben siempre pintarse después de toda
la geometría opaca, y en orden back-to-front.
Aquí lo explican todo detalladamente:
http://www.opengl.org/wiki/Transparency_Sorting

Keinier Caboverde R.

unread,
Apr 24, 2011, 7:28:01 PM4/24/11
to codepixel


On Apr 24, 7:17 pm, Jon Valdés <juan...@gmail.com> wrote:
> 2011/4/25 Keinier Caboverde R. <kein...@gmail.com>:
Gracias amigo,
en esa wiki sale casi toda la informacion de la cual dudaba,
muchas gracias, saludos y mucha suerte.
Reply all
Reply to author
Forward
0 new messages