From 4632788c4bef265e58630473eed5559bf125a726 Mon Sep 17 00:00:00 2001 From: salmonik Date: Wed, 4 Nov 2026 00:29:24 +0100 Subject: Skybox image: power-of-two resize; upload at FRAME_RENDER_START - The material system rejects textures whose dimensions are not multiples of 4 ("Image dimensions must be multiple of 4!"), so scale the decoded image to the next power of two (bilinear). 798x798 -> 1024x1024. The invalid VTF also crashed the renderer after the apply. - Move skybox_update() out of the VGUI paint hook into the FRAME_RENDER_START FrameStageNotify stage. ITexture::Download only regenerates bits when the material system considers the frame render-safe; during paint it returned early, the regenerator never ran (no pixels), and a later upload of the empty VTF crashed. - Log the regenerator entry so the log shows whether the upload path ran. --- src/hl2h.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/hl2h.cpp') diff --git a/src/hl2h.cpp b/src/hl2h.cpp index 4ba1af3..28b2995 100644 --- a/src/hl2h.cpp +++ b/src/hl2h.cpp @@ -770,6 +770,10 @@ static void hkdFrameStageNotify(void *self, int stage) { if (oFrameStageNotify) oFrameStageNotify(self, stage); if (stage == 5) { + // Skybox texture uploads happen here, not in the VGUI paint hook: the + // material system only downloads procedural textures on a render-safe + // frame stage. + skybox_update(); if (g_silent_restore_pending) { g_silent_restore_pending = false; if (g_iface.engine) { -- cgit v1.2.3