Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - ibasurto

#1
Programación gráfica / 50+50=101! Resolución Del Problema
07 de Febrero de 2004, 10:23:07 AM
 Creo que este problema se debe a como funcionan el rasterizador.

En OpenGL (y es posible que en DirectX sea parecido) es mas o menos asi: un pixel se considera que es "rellenado" por una primitiva (linea, triangulo, quad) si la primitiva incluye el punto central del pixel. El punto central del pixel es el que tiene cordenadas enteras, en tu caso, por ejemplo, seria  (0,50). El pixel se puede ver como una area cuadrada centrada en este punto. Al "rasterizar" una linea de (0,0) a (0,50) le estas indicando una linea que va desde el punto central del pixel (0,0) al punto central del pixel (0,50)  pero sin llegar a incluir el punto central. Esto produce que el ultimo pixel no se rellene (al no estar incluido su punto central). Si sumas una pequeña cantidad a la coordenadas del punto final (no hace falta que sea tanto como 1.0f sino con 0.25f o 0.35f deberia valer) entonces si se rellena el ultimo pixels.

Creo recordar que lei algo de esto en la ayuda de DirectX, sobre como funcionaba el rasterizador... espera dejame que lo busque... aqui este un link a la MSDN:

Rasterization Rules

Como dice en el link esta regla se llama "top-left filling convention" y tiene sentido para poder "encadenar" varias primitivas, empezando una donde acaba la anterior sin rellenar los pixeles comunes dos veces



#2
Programación gráfica / Sobre Oclusion Querys
17 de Octubre de 2003, 06:25:43 PM
 Los enlaces de las extensiones relacionados (por orden de "bondad" B) )

GL_ARB_occlusion_query

GL_NV_occlusion_query

GL_HP_occlusion_test
#3
Programación gráfica / Arquitectura de D3D
17 de Mayo de 2003, 10:10:55 AM
                                Con respecto al topic original...

En Beyond3D hay un "thread" que trata el mismo tema                                
#4
Programación gráfica / Sobre DevIL y otras
14 de Mayo de 2003, 07:41:23 PM
                                A mi me parecio facil de USAR con OpenGL...

...cargas casi cualquier tipo de fichero grafico y te mete el contendo  directamente en una textura... con solo 3 o 4 llamadas a funcion                                
#5
Programación gráfica / Arquitectura de D3D
02 de Mayo de 2003, 11:32:09 PM
                               
CitarEn la


parece muy claro que el Z Test se hace DESPUES del Pixel Shder, así que no sé que ganarás!!

Ancho de banda... (como apunta berseker)

...pero es verdad, si estas limitado por procesamiento de pixel shader (y no por ancho de banda) tampoco te arregla nada;  creo que el stencil tampoco ayuda por que tambien esta despues

queda la opcion descrita en Delphi3D o filtrar a nivel de primitivas: si primero dibujas toda la escena solo en Z luego puedes saber si grupo de primitivas se vera o no  usando adecuandamente la funcionalidad de la extension OpenGL HP_occlusion_test o a la NV_occlusion_query (no se a que pueden corresponder en DirectX)  

Ademas, creo que las ultimas radeon pueden, automaticamente, descartar un triangulo entero si saben que, por el contenido de Z buffer, no se ve


p.s.
Parece ser que doom3 pinta primero solo en Z por el tema de las sombras y no por la optimizacion que Haddd sugiere                                
#6
Programación gráfica / Arquitectura de D3D
01 de Mayo de 2003, 12:24:40 PM
                                Tienes que mandar la primitiva de dibujo dos veces con distintos modos:  

1/ pintar una vez el  triangulo con solo Z sin pixel shader  ni color

2/ vuelves a pintar sin Z pero con pixel shader, con el depth test a modo pintar si Z igual

Es un balance, pierdes capacidad de procesar vertices a costa de optimizar la capacidad de procesar pixeles (solo se procesan los pixeles que realmente se ven)                                
#7
Programación gráfica / Arquitectura de D3D
30 de Abril de 2003, 08:52:02 PM
                                Lo que puedes hacer es usar dos pases, uno en el que solo se rellena Z y otro donde se evalua el pixel shader (deferred rendering a la DOOM 3)                                





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.