Descarregando para HLSL/GPU sem exibir?
-
27-09-2019 - |
Pergunta
Até onde eu sei, certas funções matemáticas como FFTs e ruído de perlin, etc. podem ser muito mais rápidas quando feitas na GPU como um shader de pixels. Minha pergunta é: se eu quisesse explorar isso para calcular resultados e fluir para bitmaps, eu poderia fazê -lo sem precisar exibi -lo no Silverlight ou algo assim?
Mais especificamente, eu estava pensando em usar isso para geração de terrenos grandes envolvendo muito perlin e outros ruídos, e pós-processamento como passes altos e derivando normais de altura, etc., etc.
Solução
A resposta curta é sim. A resposta mais longa é que você pode definir (por exemplo) uma textura como o alvo de renderização, que deposita seus resultados lá.
A menos que você esteja realmente pensando em usar um shader para fazer o cálculo, considere usar algo que realmente foi projetado para esse tipo de trabalho como CUDA ou OpenCL.
Outras dicas
Hmm é uma boa pergunta.
Qualquer coisa que possa ser exibida pode ser renderizada usando uma instância de WriteableBitmap
e os seus Render
método. Você pode acessar a saída usando o Pixels
Propriedade da matriz de bytes.
No entanto (assumindo que a aceleração da GPU seja ativada e o conteúdo está adequadamente marcado para fazer uso da GPU) se tal renderização realmente fará uso da GPU ao ir para um WriteableBitmap
Em vez da tela, eu não conheço.