GpuEnvironmentMap.upload constructor
GpuEnvironmentMap.upload(
- GpuDevice device,
- EnvironmentMapData data
Uploads data to device.
As many levels as the device takes (GpuDevice.maxMipLevels: Flutter
GPU leaves out the 1×1 level) are uploaded.
Implementation
factory GpuEnvironmentMap.upload(GpuDevice device, EnvironmentMapData data) {
final levels = math.max(
1,
math.min(data.levelCount, device.maxMipLevels(data.size, data.size)),
);
final texture = device.createTexture(
GpuTextureDesc(
width: data.size,
height: data.size,
format: GpuFormat.rgba16f,
storage: GpuStorage.host,
mipLevels: levels,
cube: true,
),
);
for (var level = 0; level < levels; level++) {
for (var face = 0; face < 6; face++) {
texture.upload(
data.halfFloatsOf(level, face),
mipLevel: level,
slice: face,
);
}
}
return GpuEnvironmentMap._(texture, Float32List.fromList(data.sh), levels);
}