Ir al contenido

publicidad

Foto

Matrices / Shaders


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
12 respuestas en este tema

  • mopois

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 24 sep 2003
  • Mensajes: 34.259
#1

Escrito 10 junio 2011 - 21:28

Buenas,

Estoy intentando usar unos shaders de un tipo que he encontrado pero tengo problemas al pasarle las matrices. Hasta ahora, feliz de mi, lo que hacía era usar BasicEffect por lo que le pasaba las matrices view, projection y world y era un mundo sin preocupación alguna.

Pues bien, el efecto que que voy a usar ahora me piden 3 matrices distintas:

- viewProj (que entiendo que es la view * projection * world)
- viewInverse
- world

Lo que hago es meter las mismas matrices que usaba con BasicEffect (poniendo en viewInverse Matrix.Inverse(view) y la multiplicación de las tres en viewProj y me dibuja nada.

He probado 1000 combinaciones más...

Si no modifico las matrices sale tal cual pegado en la pantalla, por lo que supongo que todos los demás pasos hasta aquí están correctos y que es un fallo por lo paquete que soy con las matrices.

¿Alguien podría ilustrarme sobre el uso de las matrices? Es xna.

firma_zpsumxtfb8b.jpg

           Prueba mi juegaso para Android


  • malditis

  • Neonate

  • vida restante: 100%
  • Registrado: 07 feb 2006
  • Mensajes: 68
#2

Escrito 12 junio 2011 - 02:26

Sin código es complicado...

pero por lo general con solo cambiar las matrices no tiene porque funcionarte el shader.

Pueden pasar muchas cosas, puede que que el shader espere vertices que posean binormales, bitangentes, que no le hayas asignado texturas,....

yo probaria a ir depurando poco a poco dentro del mismo shader, comentando lineas y devolviendo un color solido (rojo), ... a ver que pasa...

los shader son muy puñeteros si no sabes 110% lo que estas haciendo con ellos... yo me he pasaso horas con pollinadas... :)

  • mopois

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 24 sep 2003
  • Mensajes: 34.259
#3

Escrito 13 junio 2011 - 08:36

Gracias maditis...

Al fin he conseguido que se vea en condiciones, he estado trasteando con lsa matrices y creo que ya se como va a grandes rasgos, todo mediante ensayto y error pero bueno...

Aún así estoy muy verde en shaders... Más que nada temas como exportar un modelo en 3dmax en fbx y poder usar cosas como normal mapping, bump, oclusión... cosas así.

¿Alguien sabe de algún tutorial orientado a shaders o alguna librería que simplifique el asunto? ¿Y un libro de HSLS enfocado a esto? Estoy hasta las arices, me lo peinso empollar todo aunque muera en el intento.

firma_zpsumxtfb8b.jpg

           Prueba mi juegaso para Android


  • The_Hans

  • Anima

  • vida restante: 100%
  • Registrado: 27 ene 2004
  • Mensajes: 7.490
#4

Escrito 13 junio 2011 - 10:16

Yo no te puedo ayudar, los shaders y yo todavía no nos hemos llegado a hablar si no era a través de terceros :mrgreen:

  • mopois

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 24 sep 2003
  • Mensajes: 34.259
#5

Escrito 14 junio 2011 - 08:00

Nah, al final lo que haré es ir siguiendo un tutorial de hsls que he visto, copiando y probando el código con el fxcomposer y posteriormente creando custom procesors en xna con los efectos que me interesen.

firma_zpsumxtfb8b.jpg

           Prueba mi juegaso para Android


#6

Escrito 14 junio 2011 - 12:41

mopois, yo creo que buscas conseguir resultados demasiado pronto y por ello abusas del ensayo-error, en lugar de dedicar más tiempo a aprender.

Para comenzar con HLSL a mi lo mejor me parece esto:
http://www.riemers.n...arp/series3.php

No se si te lo habrás mirado ya, pero comienza desde la base.

¿Escribes tus propios efectos?

Por cierto, pasa el tutorial ese que dices (si no es el mismo que yo he puesto XD).

  • mopois

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 24 sep 2003
  • Mensajes: 34.259
#7

Escrito 14 junio 2011 - 13:10

mopois, yo creo que buscas conseguir resultados demasiado pronto y por ello abusas del ensayo-error, en lugar de dedicar más tiempo a aprender.

Para comenzar con HLSL a mi lo mejor me parece esto:
http://www.riemers.n...arp/series3.php

No se si te lo habrás mirado ya, pero comienza desde la base.

¿Escribes tus propios efectos?

Por cierto, pasa el tutorial ese que dices (si no es el mismo que yo he puesto XD).


Si, me has calado X-D , abuso del ensayo y error, ahora estoy siguiendo estos tutoriales...

http://digitalerr0r....-ambient-light/

Parece estar bastante completos.

Realmente no quiero hacer nada del otro mundo, pero intento hacer un juego de exploración espacial y me gustaría tener por ejemplo shaders para el sol y las estrellas distantes o por ejemplo para las atmósferas de los planetas.

El tema es que hace poco he terminado un curso de 3dmax y bueno se hacer un par de cosillas pero claro, luego exporto el fbx y necesito shaders para los efectos.

firma_zpsumxtfb8b.jpg

           Prueba mi juegaso para Android


  • mopois

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 24 sep 2003
  • Mensajes: 34.259
#8

Escrito 29 junio 2011 - 20:42

Creo que esto comienza a volverme loco...

A ver, estoy siguiendo este tutorial de luz specular... http://digitalerr0r....specular-light/

Las matrices y demás variables se las paso bien y funciona más o menos decentemente pero cuando la fuente de luz está detras del objeto este aparece iluminado >:-\

Debería aparecer eclipsado y aparece iluminado... puuurrr queee??

A ver si capturo un video y lo cuelgo para que veais el puto efecto.

firma_zpsumxtfb8b.jpg

           Prueba mi juegaso para Android


  • malditis

  • Neonate

  • vida restante: 100%
  • Registrado: 07 feb 2006
  • Mensajes: 68
#9

Escrito 30 junio 2011 - 15:03

Creo que esto comienza a volverme loco...

A ver, estoy siguiendo este tutorial de luz specular... http://digitalerr0r....specular-light/

Las matrices y demás variables se las paso bien y funciona más o menos decentemente pero cuando la fuente de luz está detras del objeto este aparece iluminado >:-\

Debería aparecer eclipsado y aparece iluminado... puuurrr queee??

A ver si capturo un video y lo cuelgo para que veais el puto efecto.


Me imagino que para saber la cantidad de luz multiplicas el vector director de la luz por la normal del punto donde incide, para obtener el coseno del angulo que forman esos dos vectores.

¿has comprobado si ese coseno es negativo?

if (cos<0) cos = 0;

  • mopois

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 24 sep 2003
  • Mensajes: 34.259
#10

Escrito 30 junio 2011 - 17:48

Creo que esto comienza a volverme loco...

A ver, estoy siguiendo este tutorial de luz specular... http://digitalerr0r....specular-light/

Las matrices y demás variables se las paso bien y funciona más o menos decentemente pero cuando la fuente de luz está detras del objeto este aparece iluminado >:-\

Debería aparecer eclipsado y aparece iluminado... puuurrr queee??

A ver si capturo un video y lo cuelgo para que veais el puto efecto.


Me imagino que para saber la cantidad de luz multiplicas el vector director de la luz por la normal del punto donde incide, para obtener el coseno del angulo que forman esos dos vectores.

¿has comprobado si ese coseno es negativo?

if (cos<0) cos = 0;


No... :(

Soy un zote con esto, he estado probando con el return del final, poniendo texturas en los colores difuso, de ambiente y tocando la transparencia de los colores.

Pero claro, supongo que el tema es que cuando está detrás el cálculo de la normal lo hace mal...

Luego por la noche le meteré mano, gracias por contestar.

firma_zpsumxtfb8b.jpg

           Prueba mi juegaso para Android


  • mopois

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 24 sep 2003
  • Mensajes: 34.259
#11

Escrito 01 julio 2011 - 20:42

Al fin :)

La cosa era simplemente calcular el producto vectorial entre la normal de la superficie y la dirección de la luz y si esta es menor de 0 que el reflejo sea 0...
(yo le he puesto al final -0.1 porque así se ve por donde va a salir el sol)

firma_zpsumxtfb8b.jpg

           Prueba mi juegaso para Android


  • malditis

  • Neonate

  • vida restante: 100%
  • Registrado: 07 feb 2006
  • Mensajes: 68
#12

Escrito 01 julio 2011 - 22:27

Al fin :)

La cosa era simplemente calcular el producto vectorial entre la normal de la superficie y la dirección de la luz y si esta es menor de 0 que el reflejo sea 0...
(yo le he puesto al final -0.1 porque así se ve por donde va a salir el sol)


eso mismo es lo que te comentaba, pero por aclarar para futuros navegantes, no es producto vectorial, es el producto "escalar", que se usa para obtener el coseno del angulo de los vectores U y V.

u.v = |u||v|.cosUV

( el "vectorial" se usa para obtener un vector normal a los vectores implicados )

  • mopois

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 24 sep 2003
  • Mensajes: 34.259
#13

Escrito 04 julio 2011 - 09:17

Al fin :)

La cosa era simplemente calcular el producto vectorial entre la normal de la superficie y la dirección de la luz y si esta es menor de 0 que el reflejo sea 0...
(yo le he puesto al final -0.1 porque así se ve por donde va a salir el sol)


eso mismo es lo que te comentaba, pero por aclarar para futuros navegantes, no es producto vectorial, es el producto "escalar", que se usa para obtener el coseno del angulo de los vectores U y V.

u.v = |u||v|.cosUV

( el "vectorial" se usa para obtener un vector normal a los vectores implicados )


Cierto, me equivoqué, concretamente la operación que he usado es dot(v1,v2);

firma_zpsumxtfb8b.jpg

           Prueba mi juegaso para Android



Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad