Background (if helpful)
I m 在Windows上与NVIDIA R Sk-Cards合著的“全球移动式实时审查光标”。
我写如下:
http://www.ohchr.org。 D<float3> TexColor,根据每个地貌表面的有限精度光图解决结果。
MakedID, Integrat(objectId, uint2(lightmapUV.x, LightmapUV.y) , 用于独一无二地确定光标线Xel, 至1920x1080年
RWTexture2D<uint> TexMasked
, 用于过滤密码>TexColor <>/code>,以根据特定光标决议计算结果。
最后,我把结果运用到现场,以提供光标预览。
What I want to do is:
RWTexture<float3>TexColor; // RBGA32
Texture<uint> TexMasked; // R32
void get_masked_mean(uint2 pixelPos)
{
//? How do it on GPU?
// TexColor[pixelPos] = calculateAverage(TexColor[pixel]) for all
// pixels satisfying (TexMasked[pixel] == TexMasked[pixel])
}
我试图读到万国邮联的TexColor和Tex Masked,但很疲劳:
std::unordered_map<uint, float4> resultMap;
std::vector<std::vector<float3>> colorData[][] = TexColor.readbakToCPU(); // very slow
std::vector<std::vector<uint>> maskedData[][] = TexMasked.readbakcToCPU();
for (int r = 0; r < rowCount; ++r) // 1920
{
for (int c = 0; c < colCount; ++c) // 1080
{
uint key = maskedData[r][c];
uint oldCount = resultMap[key].w;
uint newCount = oldCount + 1;
// very slow
resultMap[key] = float4((colorData[r][c] + count * resultMap[key].xyz) / newCount), newCount);
}
}
for (int r = 0; r < rowCount; ++r)
{
for (int c = 0; c < colCount; ++c)
{
uint key = maskedData[r][c];
colorData[r][c] = resultMap[key].xyz; // very solw
}
}
TexColor.uploadToGPU(colorData);
从万国邮联到万国邮联阅读数据,加上约1 000 000公顷的 queries问非常缓慢。 这里是否有更有效的《万国邮联守则》? 或者 GPU-Based Code (compute shader)?