MCPcopy Create free account
hub / github.com/NVIDIA-RTX/Donut / GetAlphaMode

Function GetAlphaMode

src/engine/DDSFile.cpp:492–520  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

490#undef ISBITMASK
491
492 static TextureAlphaMode GetAlphaMode(const DDS_HEADER* header)
493 {
494 if (header->ddspf.flags & DDS_FOURCC)
495 {
496 if (MAKEFOURCC('D', 'X', '1', '0') == header->ddspf.fourCC)
497 {
498 auto d3d10ext = reinterpret_cast<const DDS_HEADER_DXT10*>(reinterpret_cast<const uint8_t*>(header) + sizeof(DDS_HEADER));
499 auto mode = static_cast<TextureAlphaMode>(d3d10ext->miscFlags2 & DDS_MISC_FLAGS2_ALPHA_MODE_MASK);
500 switch (mode)
501 {
502 case TextureAlphaMode::STRAIGHT:
503 case TextureAlphaMode::PREMULTIPLIED:
504 case TextureAlphaMode::OPAQUE_:
505 case TextureAlphaMode::CUSTOM:
506 return mode;
507
508 default:
509 break;
510 }
511 }
512 else if ((MAKEFOURCC('D', 'X', 'T', '2') == header->ddspf.fourCC)
513 || (MAKEFOURCC('D', 'X', 'T', '4') == header->ddspf.fourCC))
514 {
515 return TextureAlphaMode::PREMULTIPLIED;
516 }
517 }
518
519 return TextureAlphaMode::UNKNOWN;
520 }
521
522 static size_t FillTextureInfoOffsets(TextureData& textureInfo, size_t dataSize, ptrdiff_t dataOffset)
523 {

Callers 1

LoadDDSTextureFromMemoryFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected