tattoo - shaders seus
Beginning Shader Development (9)
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 interconexión del sombreador e intentar darle la vuelta a 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.
A continuación, intente escribir su propio HLSL, que hace lo que solía hacer la tubería fija de T & L , 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 próximo paso, es posible que desee simular iluminación septal básica en uno de sus sombreadores desde una sola 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 bache básico o mapas normales .
Cuando llegas a esta etapa, el mundo es tu ostra. Puedes comenzar a sumergirte en algunos efectos funky e incluso considerar usar la GPU por más 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 aquí y aquí .
No olvides que hay una excelente serie de libros llamados ShaderX que cubre algunas cosas increíbles del sombreador. Ya hay 1 , 2 , 3 , 4 , 5 y 6 impresos, y 7 estarán disponibles en breve.
Buena suerte. Si tienes sombreadores en marcha, me encantaría verlos :)
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 FX Composer de nVidia es una gran herramienta para desarrollar sombreadores, pero no encontré mucho contenido útil y actualizado sobre cómo realmente comenzar.
¿Qué tutoriales recomendarías?
SAMS''s XNA Unleashed by Chad Carter es un gran punto de partida para XNA y asume poco conocimiento sobre las prácticas de desarrollo de juegos o las matemáticas difíciles antes de comenzar. Tiene dos capítulos sobre sombreadores básicos y avanzados.
Como nota al margen, no pierdas de vista los tutoriales WPF Shader de Google, ahora usa la misma tecnología para permitir sombreadores de clientes en aplicaciones WPF y tutoriales que creo que son ampliamente compatibles con XNA.
Solo me gustaría reiterar lo grandiosos 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 proceso de aprendizaje realmente bueno, 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 a veces se puede entender. Aprender qué producto punto, producto cruzado, vector normal y multiplicación de matriz son y es un buen primer paso :). Trate de entender exactamente qué está sucediendo entre World / View / Projection-Clip / Screen space, cuál es la división de perspectiva, etc.
Cuando comencé a aprender, un buen ejercicio es implementar realmente todo el pipeline de T & L en el software, completo con recorte / descarte, etc. Este es un proceso largo y puede no parecer que valga la pena ya que estoy seguro de que quieres sumergirte en la diversión. pero es muy útil tener una comprensión adecuada de lo que está sucediendo y valdrá la pena cuando, invariablemente, te encuentres con errores más insidiosos y difíciles de diagnosticar.
Intente 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 valioso a largo plazo.
No he usado XNA o DirectX. Pero, para conocer los conceptos básicos de la programación de sombreadores con Cg, el Tutorial de Cg es el mejor libro que he encontrado.
También debes 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.
Me uniría a las alabanzas otorgadas a OJ, realmente una buena respuesta. Aún así, una vez que tenga la comprensión básica, podrá aprender mucho y rápido al descargar una de las siguientes dos excelentes herramientas:
- Render monkey http://ati.amd.com/developer/rendermonkey/downloads.html o el
- Fx Composer http://developer.nvidia.com/object/fx_composer_home.html
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. Descubrirá que muchos de los ejemplos son realmente avanzados y abrirán sus horizontes.
Que te diviertas
Si bien ya se le han dado muchos buenos consejos, si le resulta difícil concentrarse en los pasos a seguir, Mental Mill proporciona una forma visual de construir Shaders (la edición de artista se incluye gratis con Fx Composer, también en sí misma). ¡gratis!).
Aunque 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!
Una rápida reflexión sobre los editores visuales del sombreador. Ese tipo de editores son muy divertidos, pero realmente recomendaría seguir trabajando con HLSL basado en texto (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 usado constructores visuales de sombreadores, 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.
... aunque mi suposición es que veremos iluminación diferida y probablemente una completa representación del software antes de que llegue ese día;)
Una de las mejores maneras de comenzar con los sombreadores es leer Introducción a la programación de juegos en 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 sugirió que leyeras la serie ShaderX, pero el material no es para principiantes, por lo que no te servirá de mucho cuando estés dando tus primeros pasos.
También publiqué aquí un artículo sobre los mejores libros que te ayudarán a comenzar el desarrollo del juego.