Estoy escribiendo un procesador de software que actualmente está funcionando bien, pero estoy tratando de obtener una corrección de la perspectiva de las coordenadas de la textura y eso no parece ser correcto. Estoy usando todas las mismas matemáticas matriciales que OpenGL para mi procesador. Para rasterise un triángulo hago lo siguiente:corrección de la perspectiva de las coordenadas de la textura en 3d
transformar los vértices utilizando las matrices de proyección y modelview, y se transforman en coordenadas del clip.
para cada píxel en cada triángulo, calcular coordenadas baricéntricas a interpolar propiedades (color, coordenadas de textura, normales etc.)
para corregir perspectiva que utilizo perspectiva interpolación correcta: (W es la coordenada de profundidad vértice, c es la coordenada de la textura de vértice, b es el peso barycentric de un vértice)
1/w = b0*(1/w0) + b1*(1/w1) + b2*(1/w2) c/w = b0*(c0/w0) + b1*(c1/w1) + b2*(c2/w2) c = (c/w)/(1/w)
Esto debería corregir la perspectiva, y ayuda un poco, pero todavía hay un problema de perspectiva obvio. ¿Me estoy perdiendo algo aquí, tal vez algunos problemas de redondeo (estoy usando flotadores para todas las matemáticas)?
Ver en esta imagen el error en las coordenadas de la textura evidente a lo largo de la diagonal, este es el resultado de haber hecho la división por coordenadas de profundidad.
Además, esto se hace generalmente de coordenadas de textura ... es necesario que otras propiedades (por ejemplo, las normales, etc.), así?
Las capturas de pantalla podrían ser útiles. – genpfault
No puedo agregar una captura de pantalla hasta que tenga una calificación de 10 :( –
usted tiene la calificación ahora: D – Bahbar