我将翻译为:
采样器位置纹理的格式为
我使用的是一台带有NVIDIA K1100M图形卡的笔记本电脑。如果我在renderdoc中运行代码,则此着色器需要114毫秒。而如果我将
这个纹理获取时间正常吗?还是我在某个地方设置了错误?例如,布局转换未经过,因此纹理处于
我正在使用核大小为64的SSAO着色器。
SSAO片段着色器:
const int kernelSize = 64;
for (int i = 0; i < kernelSize; i++) {
//Get sample position
vec3 s = tbn * ubo.kernel[i].xyz;
s = s * radius + origin;
vec4 offset = vec4(s, 1.0);
offset = ubo.projection * offset;
offset.xy /= offset.w;
offset.xy = offset.xy * 0.5 + 0.5;
float sampleDepth = texture(samplerposition, offset.xy).z;
float rangeCheck = abs(origin.z - sampleDepth) < radius ? 1.0 : 0.0;
occlusion += (sampleDepth >= s.z ? 1.0 : 0.0) * rangeCheck;
}
采样器位置纹理的格式为
VK_FORMAT_R16G16B16A16_SFLOAT
,并使用标志VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
上传。我使用的是一台带有NVIDIA K1100M图形卡的笔记本电脑。如果我在renderdoc中运行代码,则此着色器需要114毫秒。而如果我将
kernelSize
更改为1,则需要1毫秒。这个纹理获取时间正常吗?还是我在某个地方设置了错误?例如,布局转换未经过,因此纹理处于
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
而不是VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
。