From 116750b9febec13977d14bb72a85d53e365aa98b Mon Sep 17 00:00:00 2001 From: Nekura Date: Sun, 8 Nov 2026 03:44:53 +0100 Subject: [PATCH] New REM client: REM-Client c3e33c9, 64-bit (non-square DDS textures: no grey BC7 sky, no stripes on DXT) --- BUILD_INFO.txt | 6 +++--- EXE/shading.dll | Bin 190976 -> 190976 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/BUILD_INFO.txt b/BUILD_INFO.txt index bceb5049..3253d207 100644 --- a/BUILD_INFO.txt +++ b/BUILD_INFO.txt @@ -1,6 +1,6 @@ REM-Client test build (64-bit) -date: 2026-11-08 02:59 -commit: c8e0399c (main) -subject: BC7 textures: DDS with a DX10 header, uploaded as VK_FORMAT_BC7_UNORM_BLOCK +date: 2026-11-08 03:44 +commit: c3e33c95 (main) +subject: DDS textures that are not square: the mip walk stops a side at 1 and takes each level's size from its block grid (a 4096x2048 BC7 sky failed at mip 12, 1x0, and stayed grey), and a compressed level's row pitch is one row of blocks - retail divided by the width's block count, right only for square textures (the DXT1 sky drew in horizontal stripes) tree: clean build: OK diff --git a/EXE/shading.dll b/EXE/shading.dll index 54f10d66298bcaa2d6ec68973a6ee10b5477df31..eaebf3a9460280c5ddd5c54acfc4238bb3c2faa4 100644 GIT binary patch delta 15677 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