Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Extraño error en relief mapping, veo los edges de la mesh

Iniciado por tamat, 03 de Marzo de 2009, 06:53:06 PM

« anterior - próximo »

tamat

Estoy teniendo un error rarisimo en el curro y estoy ya cansado de ir haciendo pruebas a ciegas.

He programado el algoritmo de Relief Mapping, y funciona bien, pero curiosamente en los edges de los triangulos el algoritmo tiene un resultado distinto, lo cual es rarisimo si tenemos en cuenta que un pixel shader no hace distinción entre los pixeles interiores y exteriores de un triangulo.

He probado lo siguiente:
- desactivar cualquier tipo de antialiasing, tanto de tarjeta como de polygon_smooth
- repasar que el zbuffer se pinte bien para la mesh
- que los vertices sean los mismos entre triangulos

y sin embargo me sigue pasando. Alguna idea?


Por un stratos menos tenso

XÑA

Claro, eso forma parte del relief mapping. El problema es el sampleado. Al trazar rayos con intervalos, donde más se nota es en las discontinuidades.

tamat

nop, no has entendido el error o no has mirado los screenshots.

No hablo de el problema de las discontinuidades debido a un muestreo insuficiente, eso simplemente reduce la calidad en angulos muy pronunciados. Yo hablo de que se ve la mesh como en wireframe, eso ni en el peor de los algoritmos de relieve pasa.
Por un stratos menos tenso

XÑA

Ah, claro !!!  :D

Es que me parecía que además dibujabas el mes en wireframe!!! Anda, pues no tiene sentido lo que te ocurre... :(

ethernet

Yo pensaba que la "malla" era un helper que dibujabas.

Citar
nop, no has entendido el error o no has mirado los screenshots.
o una tercera: quizás es que no te hayas explicado bien, no?

quizás con algo de código...

tamat

Pero si es que el codigo no tiene misterio alguno, solo hago el offset de las uvs acorde a la profundidad, y eso funciona.
Además, a ver quien me dice como se puede pintar la mesh en wireframe usando un pixel shader, es imposible, el pixel shader no hace distincion entre edges y pixeles internos, si fuese un geometry shader tal vez, pero no es el caso.

Tiene que ser algo sobre los settings de opengl, alguna cosa rara que no conozco, pero he descartado todas las que podian ser.

Ethernet, no puedo poner codigo porque esto es una monstruosidad de framework, puedo ponerte el codigo del raycast pero está sacado de un paper tal cual así que tampoco tiene interes.
Por un stratos menos tenso

ethernet

Solo se me ocurre que lo pruebes en otro máquina o que publiques el exe de la demo y así ver si puede ser del setup de la máquina.

tamat

Me consta que pasa en otros pcs pero si alguien lo quiere ver con sus ojuelos...
http://www.tecn.upf.edu/~jagenjo/fbxdemo.rar

para ejecutarlo teneis que lanzar el fbxdemo.exe con los siguientes parametros:

fbxdemo.exe -w:800 -h:600 test.fbx data/rendercfg.xml
Por un stratos menos tenso

XÑA

no me funciona. Veo un rectángulo blanco. Y me aparece este texto de error:
Error in PipelineShader::execute():
global.vsh data\pipelines\../shaders
Error: Fragment shader failed to com
ERROR: 0:37: '=' :  cannot convert f
onent vector of float'
ERROR: 0:42: 'assign' :  cannot conv
-component vector of float'
ERROR:  compilation errors.  No code
Shader code:
#define USE_ATI
uniform sampler2D colorbuffer;
uniform sampler2D depthbuffer;
uniform mat4 inv_vp;
uniform mat4 prev_vp;

uniform float distance;

varying vec2 iuv;

tamat

pues dejando de lado mi error me interesaría saber por qué no te va, aunque veo que tienes una ATI y las ATI no las soportamos muy bien todavía, aun así el error que me pasteas sale bastante cortado, no puedes conseguir copiar de consola para que se vean enteras las frases?

Por cierto, como bien decía ethernet, olvidé hacer la prueba más basica que era probarlo en varios ordenadores, y veo que en el de mi casa funciona sin problemas, así que deduzco que es alguna basura que hace mi tarjeta del trabajo, algo relacionado con el antialiasing en los bordes de los poligonos, seguro.

En fin, miraré a ver, gracias a todos por las sugerencias.

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.