Страница 1 из 1

Вычислительные шейдера на android

СообщениеДобавлено: 07 июл 2017, 21:43
Cybernoise
Привет всем щейдерным гуру. Бьюсь несколько дней над одной задачей - есть 2 текстуры, берем 1, колдуем с ней в шейдере и засовываем во 2.
В редакторе все хорошо , в билде на пк тоже, а вот на андроиде через-раз. Иногда видно нужный результат , иногда психоделические глюки, иногда нужный результат в перемешку с глюками...

с SystemInfo.supportsComputeShaders все хорошо, enableRandomWrite включен, в скрипте все норм :
Синтаксис:
Используется csharp
                        _kernelID = computeShader.FindKernel(_name);
                        computeShader.GetKernelThreadGroupSizes(_kernelID, out _kernelX, out _kernelY, out _kernelZ);
                        computeShader.SetTexture(_kernelID, "result", outputTexture);
                        computeShader.SetTexture(_kernelID, "inputTex", inputWebCamTexture);
                        ...
                        computeShader.Dispatch(_kernelID, width / (int)_kernelX, height / (int)_kernelY, (int)_kernelZ);



в шейдере все просто, здесь приведу для примера 2 примитивных :


Синтаксис:
Используется glsl
Texture2D<float4> inputTex;
SamplerState samplerinputTex;
RWTexture2D<float4> result;

#pragma kernel Red
[numthreads(8,8,1)]     void Red (uint3 id : SV_DispatchThreadID){
        result[id.xy] = float4(1.0, 0.0, 0.0, 1.0);
}
 
#pragma kernel Normal
[numthreads(8,8,1)]     void Normal (uint3 id : SV_DispatchThreadID){
        result[id.xy] = inputTex[id.xy];
}
 


есть догадки но не могу найти нормальной документации, возможно не подходит кол-во потоков?.. возможно нужен особый RenderTextureFormat ?.. может проблема в том что текстура для считывания это WebCamTexture?
Буду благодарен за помощь и верное копательное направление