2008-08-09 13 views
18

Quiero comenzar a desarrollar algunos juegos usando XNA de Microsoft. Parte de eso es el desarrollo de Shader, pero no tengo idea de cómo empezar. Sé que nVidia's FX Composer es una gran herramienta para desarrollar sombreadores, pero no encontré mucho contenido útil y actualizado sobre cómo comenzar realmente.Beginning Shader Development

¿Qué tutoriales recomendarías?

Respuesta

31

El desarrollo de sombreadores en XNA (que obviamente usa DirectX) requiere conocimiento de HLSL o ensamblado de sombreado. Recomiendo familiarizarse con el anterior antes de sumergirse en este último.

Antes de escribir sombreadores, es una buena idea obtener una comprensión sólida de la tubería de sombreado, y tratar de tener en cuenta lo que es posible al usar sombreadores programables. Cuando esté familiarizado con la vida de un píxel (desde los datos de origen hasta la pantalla), comprender ejemplos de sombreadores se vuelve mucho más fácil.

Luego intente escribir su propio HLSL que hace lo que la tubería Fixed T&L solía hacer, solo para ensuciarse las manos. Este es el equivalente de un programa de "mundo hello" en el mundo del sombreador de vértices/píxeles. Cuando eres capaz de hacer eso y entiendes lo que has escrito, estás listo para ir a las cosas más divertidas.

Como siguiente paso, puede simular básico sepcular lighting en uno de sus sombreadores desde una única fuente de luz. A continuación, puede adaptar esto en la pista para usar múltiples luces. Juega con colores y movimiento de luces. Esto también te ayudará a familiarizarte con el uso de las constantes del sombreador.

Cuando tenga un par de sombreadores básicos juntos, intente que su juego/motor use sombreadores múltiples/diferentes en diferentes objetos. Comience a agregar algunos otros bits como básico bump o normal maps.

Cuando llegas a esta etapa, el mundo es tu ostra. Puede comenzar a sumergirse en algunos efectos funky, e incluso considerar usar la GPU para more de lo que originalmente se pretendía.

Para aquellos que están un poco más avanzados, hay un par de buenos libros que están disponibles de forma gratuita en línea, que tienen buena información de Nvidia here y here.

No olvide que hay una excelente serie de libros llamada ShaderX que cubre algunas cosas increíbles del sombreador. Hay 1, 2, 3, 4, 5 y 6 ya impresos, y 7 próximamente.

Buena suerte. Si obtienes algunos shaders, me encantaría verlos :)

+0

Gracias por la respuesta detallada. Asegúrate de que, tan pronto como empiece a funcionar, agregue un enlace :) Sin embargo, puede tomar unos meses más. –

1

SAMS XNA Unleashed de Chad Carter es un gran punto de partida para XNA y asume poco conocimiento de las prácticas de desarrollo del juego o las matemáticas difíciles antes de empezar. Tiene dos capítulos sobre sombreadores básicos y avanzados.

Como nota al margen, esté atento a los tutoriales WPF Shader de Google, ahora utiliza la misma tecnología para permitir sombreadores de clientes en las aplicaciones WPF y tutoriales que creo que son ampliamente compatibles con XNA.

5

Solo me gustaría reiterar lo genial que son los libros de GPU Gems: un recurso verdaderamente fantástico para cualquier desarrollo de gráficos serio.

OJ básicamente ha resumido un muy buen proceso de aprendizaje, solo agregaría que tener una buena base en matemática geométrica (vectores/matrices como mínimo) no puede subestimarse, pero no es tan difícil como la gente a veces hace fuera. Aprender qué producto punto, producto cruzado, vector normal y multiplicación de matriz son y es un buen primer paso :). Trate de entender exactamente lo que está sucediendo entre World/View/Projection-Clip/Screen space, cuál es la perspectiva dividida, etc.

Cuando comencé a aprender, un buen ejercicio es implementar realmente toda la tubería T & L en software, completo con recorte/eliminación, etc. Este es un proceso largo y puede no parecer que valga la pena ya que estoy seguro de que quieres sumergirte en lo divertido, pero tener una comprensión adecuada de lo que está pasando es realmente útil y demostrará vale la pena cuando, invariablemente, se encuentra con errores más insidiosos y difíciles de diagnosticar.

Trate de no dejarse de lado con herramientas como el FX Composer inicialmente, son útiles para el prototipado, pero tener una base sólida en lo básico es mucho más útil a largo plazo.

1

No he usado XNA o DirectX. Pero, para conocer los conceptos básicos de la programación de sombreadores con Cg, el Cg Tutorial es el mejor libro que he encontrado.

1

También debería mirar RenderMonkey. Es una buena herramienta. En cuanto a libros, echa un vistazo a XNA 2.0 Game Programming Recipes de Riemer Grootjans ... gran libro.

2

Me gustaría unirme a las alabanzas otorgadas a OJ - realmente una buena respuesta. Sin embargo, una vez que tienen el conocimiento básico se puede aprender mucho y rápido mediante la descarga de uno de los siguientes dos grandes herramientas:

Una vez que lo haga, vaya a las bibliotecas de sus proyectos y comience a buscar ejemplos, comenzando con el sombreado básico y pasando a las sombras, el mapeo normal, los materiales, los efectos y todo lo que encuentre de interés. tome un proyecto, comience a alterar los algoritmos de acuerdo con algunos objetivos que establezca y vea cómo obtenerlo. Encontrará que muchos de los ejemplos son realmente avanzados y le abrirán sus horizontes.

Diviértete

2

Mientras que un montón de buenos consejos ya se ha dado, si va a tener un trabajo difícil conseguir su mente alrededor de los pasos involucrados, Mental Mill proporciona una forma visual de la construcción de Shaders (Edición del Artista es incluido gratis con Fx Composer, ¡también gratis!).

Si bien sería mejor que aprendieras el código HLSL a largo plazo directamente, Mental Mill puede generar estos archivos Fx por ti (para que puedas ver los cambios). Tenga en cuenta que, como todos los generadores de códigos, es un poco más detallado de lo que probablemente hará una vez que comprenda HLSL.

¡La progresión visual de los efectos, de un método a otro, es muy impresionante!

1

Una reflexión rápida sobre los editores visuales del sombreador. Ese tipo de editores son muy divertidos para jugar, pero yo realmente recomendaría seguir trabajando con HLSL basado en texto (allí tanto RM como FXC hacen el trabajo).Trabajo como desarrollador de juegos y he desarrollado algunos sistemas de sombreado (el de Battlefield 2 y Farcry 2, por ejemplo) y, para ser honesto, he descubierto que HLSL es más valioso que cualquier red de sombreadores gráficos hasta la fecha.

Hay cosas como seguir el flujo de ejecución, depurar el sombreador o ser capaz de iterar rápidamente casos de prueba que le dan una idea que es casi imposible de obtener a través de una herramienta visual.

He utilizado los creadores visuales de sombreadores yo mismo, y me gustan, y un día, cuando el sombreado no es tan crítico para el rendimiento como lo es hoy, podrían ser la herramienta adecuada para el trabajo.

..though mi conjetura es que veremos la iluminación diferido y la representación del software probablemente lleno antes de que llegue ese día;)

3

Una de las mejores maneras de empezar con shaders es leer Introducción a la programación de juegos 3D con DirectX 9.0ca Shader Approach de Frank Luna. El autor primero introduce el DirectX y el HLSL y luego gradualmente revela el poder del shader. Comienza con sombreadores muy simples, pero al final del libro sabes cómo crear iluminación, sombras, sistemas de partículas, etc. Gran Libro.

OJ le sugirió que lea la serie ShaderX, pero el material no es para principiantes, por lo que no le servirá de mucho cuando esté dando los primeros pasos.

También he publicado un artículo here sobre los mejores libros que le ayudarán a comenzar el desarrollo del juego.

+0

Parece un libro realmente interesante. Sí, miré tanto a ShaderX como a las GPU Gems también recomendadas, pero parecen ser realmente hardcore. Me gusta leer a Bruce Schneier cuando no se sabe nada sobre criptografía. Creo que ordenaré el Libro de Luna. –

+0

¡Realmente edité el libro que mencionaste! :) –