在Unity ComputeShader中使用RWTexture时,计算中同读同写,且有乘法等计算。
在不同的OpenGL版本上失效,在安卓真机上失效。
== 问题:==
在NVIDIA显卡上失效。在AMD显卡上正常。
传入的Texture格式修改为ARGBFloat解决。
== 解决:==
传入的Texture格式修改为ARGBFloat解决。
== 问题:==
在安卓真机失效的问题。
== 解决:==
拆分了RT,原本是RWTexture,改为了RWTexture。贴图的格式是RFloat。
== 原因:==
在DX中使用RWTexture时,会与UAV关联。但UAV的支持性在DX的版本之前有很大的差别。使用的使用可以查阅以下文档。
https://learn.microsoft.com/en-us/windows/win32/direct3d12/typed-unordered-access-view-loads
在OpenGL中没有找到具体的支持性的说明。求稳定性可考虑只使用单通道的32位标量类型。
在安卓真机OpenGLES3.2上RWTexture < float4 >对于同读同写只支持加法。减法,乘法,除法都不支持。RWTexture < float>都支持。某些硬件上,RWTexture只能使用32位标量类型(int,uint,float)的纹理。对32位的支持要好些。