------------------------------------------------------------------------------
| 391 | |
| 392 | //------------------------------------------------------------------------------ |
| 393 | vtkWebGPURenderTextureDeviceResource::TextureFormat vtkWebGPUTexture::GetTextureFormatFromImageData( |
| 394 | int numComponents, int dataType) |
| 395 | { |
| 396 | switch (numComponents) |
| 397 | { |
| 398 | case 1: |
| 399 | switch (dataType) |
| 400 | { |
| 401 | case VTK_UNSIGNED_CHAR: |
| 402 | return vtkWebGPURenderTextureDeviceResource::R8_UNORM; |
| 403 | case VTK_UNSIGNED_SHORT: |
| 404 | return vtkWebGPURenderTextureDeviceResource::R16_UINT; |
| 405 | case VTK_FLOAT: |
| 406 | return vtkWebGPURenderTextureDeviceResource::R32_FLOAT; |
| 407 | default: |
| 408 | vtkErrorMacro("Unsupported data type for single component texture: " << dataType); |
| 409 | return vtkWebGPURenderTextureDeviceResource::R8_UNORM; |
| 410 | } |
| 411 | case 2: |
| 412 | switch (dataType) |
| 413 | { |
| 414 | case VTK_UNSIGNED_CHAR: |
| 415 | return vtkWebGPURenderTextureDeviceResource::RG8_UNORM; |
| 416 | case VTK_UNSIGNED_SHORT: |
| 417 | return vtkWebGPURenderTextureDeviceResource::RG16_UINT; |
| 418 | case VTK_FLOAT: |
| 419 | return vtkWebGPURenderTextureDeviceResource::RG32_FLOAT; |
| 420 | default: |
| 421 | vtkErrorMacro("Unsupported data type for single component texture: " << dataType); |
| 422 | return vtkWebGPURenderTextureDeviceResource::RG8_UNORM; |
| 423 | } |
| 424 | case 4: |
| 425 | switch (dataType) |
| 426 | { |
| 427 | case VTK_UNSIGNED_CHAR: |
| 428 | return vtkWebGPURenderTextureDeviceResource::RGBA8_UNORM; |
| 429 | case VTK_UNSIGNED_SHORT: |
| 430 | return vtkWebGPURenderTextureDeviceResource::RGBA16_UINT; |
| 431 | case VTK_FLOAT: |
| 432 | return vtkWebGPURenderTextureDeviceResource::RGBA32_FLOAT; |
| 433 | default: |
| 434 | vtkErrorMacro("Unsupported data type for single component texture: " << dataType); |
| 435 | return vtkWebGPURenderTextureDeviceResource::RGBA8_UNORM; |
| 436 | } |
| 437 | default: |
| 438 | vtkErrorMacro("Unsupported number of components: " << numComponents); |
| 439 | return vtkWebGPURenderTextureDeviceResource::RGBA8_UNORM; |
| 440 | } |
| 441 | } |
| 442 | |
| 443 | //------------------------------------------------------------------------------ |
| 444 | void vtkWebGPUTexture::PostRender(vtkRenderer* renderer) |