2009-09-06 24 views

Respuesta

0

No sé realmente sobre los sombreadores de Silverlight pero puedo hablar sobre PixelBender.

Un shader pixelbender toma datos de mapa de bits y evalúa cada píxel de 32 bits (en realidad, cada fragmento de 4 flotantes) de uno en uno y realiza cálculos en él. La entrada al sombreador es una o más imágenes y parámetros opcionales y la salida es siempre una sola imagen. El cálculo ocurre en paralelo en todos los píxeles de la imagen y es 'sin estado' entre los píxeles, lo que significa que no puede almacenar valores mientras evalúa un píxel y lo usa en otro. De hecho, en términos de la evaluación de píxeles, la función está diseñada para operar en una imagen infinitamente grande y, por lo tanto, es ignorante del tamaño y la forma de la imagen.

La funcionalidad disponible para Flash Player para sombreadores es un subconjunto de todo el lenguaje pixelbender. Excluye características de lenguaje tales como funciones de biblioteca reutilizables y funciones de región.

El sombreador de doblador de píxeles se puede ejecutar en la GPU en una hebra separada de Flash Player, lo que permite esencialmente procesos con hebras en Flash. En la práctica, esto solo es útil para el crujido de números de lotes grandes dada la apatridia y la funcionalidad limitada de pixelbender. Se puede pasar un bytearray de números al sombreador disfrazado como bitmapdata y ejecutar de forma asincrónica (o sincrónica) usando un ShaderJob.

En sintaxis, tanto HLSL como PBJ son de tipo C y se basan en GLSL. Supongo que HLSL probablemente tenga un mejor rendimiento y más características dada la experiencia de Microsoft con el hardware gráfico. Sin embargo, las diferencias entre Flash y Silverlight van más allá de sus sombreadores y creo que Flash supera a Silverlight en casi todas las áreas, por lo que se reduce a qué plataforma satisface mejor las necesidades.

+1

Gracias por su información detallada. Sin embargo, PB en Flash NO se ejecuta en GPU. Espero que haya más comparaciones entre los dos :) –

+0

Gracias por señalarlo. ¡mi error! –

+0

@Andy: Aparentemente, la versión (final) 10.1 de Flash Player tendrá un rasterizador de GPU, que supongo que requeriría una implementación de GPU de Pixel Bender. –

1

No sé acerca de la programabilidad, pero en cuanto al rendimiento en tiempo de ejecución, pixelbender es genial. Actualmente, Silverlight 3 no le permite hacer este procesamiento en segundo plano, pero con PixelBender, puede hacerlo. Esto es bueno porque la IU no se ve afectada tanto cuando se usan filtros computacionalmente intensos.

Este foro tiene algunos buenos pros y contras para Silverlight 3: Pros and Cons. Sé que este tema es antiguo, pero lo estoy agregando porque me pareció un poco incompleto.

Cuestiones relacionadas