2012-08-07 28 views
11

Estoy tratando de ejecutar 100000 y más partículas. He estado viendo muchos tutoriales y otros ejemplos que demuestran el poder de los sombreadores y OpenCL.(representación de partículas) ¿Debo aprender shader u OpenCL?

En un ejemplo que vi, la posición de la partícula se calculó en función de la posición del puntero del mouse (dispositivo físico que sostienes con una mano y el cursor en la pantalla). La posición de cada partícula se almacenó como RGB. R es x, G y, B, z. Y pasó al sombreador de píxeles. Y luego cada píxel de color se dibujó como la posición de la partícula después.

Sin embargo, me sentí absurdo con este enfoque.

  • ¿No se debe evitar este enfoque o estilo de codificación?
  • Shoudn't ¿Aprendo cómo usar OpenCL y uso el poder del multihilo de la GPU para indicar y pasar directamente mi código deseado?
+19

+1 por explicarme qué es un mouse de computadora. –

+0

@ChristianRau oh dios, al principio pensé que estabas bromeando, pero luego lo leí. Epic – thecoshman

Respuesta

13

¿No se debe evitar este enfoque o estilo de codificación?

¿Por qué?

El objetivo de los sombreadores es que usted pueda hacer lo que quiera, para expresar de forma más efectiva lo que quiere hacer y para permitir un mayor control sobre el hardware.

Nunca debe, siempre tener miedo de volver a proponer algo para una funcionalidad diferente. Las texturas no almacenan colores; almacenan datos, pueden ser de color, pero también pueden ser otras cosas. Cuanto antes deje de pensar en texturas como imágenes, mejor será como programador de gráficos.

La GPU y la API existen para ser utilizadas. Úselo como usted vea ajuste; no permitas que pienses que la API debería usarse para limitarte.

shoudn't que aprender a utilizar OpenCL y utilizar el poder de múltiples hilos de GPU para indicar directamente y pasar mi código se pretende?

Ayer, habría dicho "sí". Sin embargo, hoy fue lanzado: OpenGL compute shaders.

El hecho de que OpenGL ARB y Khronos hayan creado este tipo de sombreado y demás es una admisión tácita de que la interoperabilidad OpenCL/OpenGL no es la forma más eficiente de generar datos para propósitos de representación. Después de todo, si lo fuera, no habría necesidad de OpenGL para tener una funcionalidad de cómputo generalizada. Hubo 3 versiones de GL 4.x que no proporcionaron esto. El hecho de que esté aquí ahora es básicamente el ARB que dice: "Sí, está bien, necesitamos esto".

Si el ARB, formado por muchas personas que fabrican el hardware, piensa que la interoperabilidad CL/GL no es la forma más rápida de hacerlo, entonces es bastante claro que debe usar sombreadores de cómputo.

Por supuesto, si está tratando de hacer algo en este momento, eso no ayudará; solo NVIDIA tiene soporte de sombreador de cómputo. E incluso eso solo está en los controladores beta.Tomará muchos meses antes de que AMD obtenga soporte para ellos, y muchos más antes de que el soporte se vuelva lo suficientemente sólido y estable como para ser utilizado.

Aun así, no es necesario calcular sombreadores para generar datos. La gente ha usado transform feedback and geometry shaders to do LOD and frustum culling for instanced rendering. No tengas miedo a pensar fuera de la caja "OpenGL dibuja cosas".

+1

Muchas gracias y no esperaba una explicación tan detallada. <3 <3 <3 Intentaré enfocarme en aprender más sobre OpenGL y Shader. Estaba demasiado afligido para pensar fuera de la caja. La mayoría de las veces que probé algo que pensé que era un enfoque ingenioso no era apropiado, sino contra intuitivo, en otras palabras, un mal ejemplo de codificación. Entonces creo que desde entonces intenté usar el código y otras utilidades que puedo incorporar como ellos quisieron. Trataré de construir un sombreador para mi proyecto de partículas, pero todavía tengo miedo por la posibilidad de un código feo y contradictorio. Es una respuesta alucinante de parte tuya que – BlueBug

+0

dijiste "No temas pensar fuera del cuadro" OpenGL dibuja cosas ". Literalmente me frustra pensar o hacer cosas yo mismo. Quiero decir que tiendo a compararme con los demás porque sé que hay personas afuera mucho mejor y sé mucho con mucho detalle. Además, hay muchos buenos tutoriales y videos sobre programación gráfica que tampoco entiendo. Normalmente me siento muy pequeño cuando se trata de programar. Todo lo que hago es seguir un tutorial o imitar algo que alguien más ya había construido (iluminación y otras cosas). – BlueBug

+2

así es como todos comenzamos, @ user1217203. ¡Sal y crea algo! –

1

Para simular partículas en OpenCL, debe probar "Yet Another Shader Editor"/http://yase.chnk.us/ - le quita todas las partes complicadas y le permite aprender a codificar los algoritmos de control de partículas. EN TU NAVEGADOR No hay nada que descargar, ni cuentas que crear, solo modifique los ejemplos que encuentre. Es una maravilla

https://lotsacode.wordpress.com/2013/04/16/fun-with-particles-yet-another-shader-editor/

No estoy afiliado con yase de ninguna manera.