MCPcopy Create free account
hub / github.com/Ipotrick/Daxa / subtract

Method subtract

src/cpp_wrapper.cpp:2288–2399  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2286 };
2287 }
2288 auto ImageMipArraySlice::subtract(ImageMipArraySlice const & slice) const -> std::tuple<std::array<ImageMipArraySlice, 4>, usize>
2289 {
2290 u32 const a_mip_p0 = this->base_mip_level;
2291 u32 const a_mip_p1 = this->base_mip_level + this->level_count - 1;
2292 u32 const b_mip_p0 = slice.base_mip_level;
2293 u32 const b_mip_p1 = slice.base_mip_level + slice.level_count - 1;
2294
2295 u32 const a_arr_p0 = this->base_array_layer;
2296 u32 const a_arr_p1 = this->base_array_layer + this->layer_count - 1;
2297 u32 const b_arr_p0 = slice.base_array_layer;
2298 u32 const b_arr_p1 = slice.base_array_layer + slice.layer_count - 1;
2299
2300 u32 const mip_case = static_cast<u32>(b_mip_p1 < a_mip_p1) + static_cast<u32>(b_mip_p0 > a_mip_p0) * 2;
2301 u32 const arr_case = static_cast<u32>(b_arr_p1 < a_arr_p1) + static_cast<u32>(b_arr_p0 > a_arr_p0) * 2;
2302
2303 std::tuple<std::array<ImageMipArraySlice, 4>, usize> result = {};
2304 if (!this->intersects(slice))
2305 {
2306 auto & [result_rects, result_n] = result;
2307 result_n = 1;
2308 result_rects[0] = *this;
2309 return result;
2310 }
2311
2312 // clang-format off
2313 //
2314 // mips ➡️
2315 // arrays 0 1 2 3
2316 // ⬇️
2317 //
2318 // ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓ ▓▓▓▓ ▓▓
2319 // 0 A ▓▓██████▓▓ B ▓▓██░░░░ C ░░░░██▓▓ D ░░██░░
2320 // ▓▓██████▓▓ ▓▓██░░░░ ░░░░██▓▓ ░░██░░
2321 // ▓▓██████▓▓ ▓▓██░░░░ ░░░░██▓▓ ░░██░░
2322 // ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓ ▓▓▓▓ ▓▓
2323 //
2324 // ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓ ▓▓▓▓ ▓▓
2325 // 1 E ▓▓██████▓▓ F ▓▓██░░░░ G ░░░░██▓▓ H ░░██░░
2326 // ░░░░░░ ░░░░░░ ░░░░░░ ░░░░░░
2327 // ░░░░░░ ░░░░░░ ░░░░░░ ░░░░░░
2328 //
2329 // 3 I ░░░░░░ J ░░░░░░ K ░░░░░░ L ░░░░░░
2330 // ░░░░░░ ░░░░░░ ░░░░░░ ░░░░░░
2331 // ▓▓██████▓▓ ▓▓██░░░░ ░░░░██▓▓ ░░██░░
2332 // ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓ ▓▓▓▓ ▓▓
2333 //
2334 // 2 M ░░░░░░ N ░░░░░░ O ░░░░░░ P ░░░░░░
2335 // ▓▓██████▓▓ ▓▓██░░░░ ░░░░██▓▓ ░░██░░
2336 // ░░░░░░ ░░░░░░ ░░░░░░ ░░░░░░
2337 //
2338 // clang-format on
2339
2340 // clang-format off
2341 static constexpr std::array<usize, 16> rect_n {
2342 0, 1, 1, 2,
2343 1, 2, 2, 3,
2344 1, 2, 2, 3,
2345 2, 3, 3, 4,

Callers 1

construct_sceneMethod · 0.80

Calls 2

intersectsMethod · 0.95
atMethod · 0.45

Tested by

no test coverage detected