From 3b4e24b74f0f662c657e1901624a38be3bf07b4a Mon Sep 17 00:00:00 2001 From: justin Date: Fri, 2 Jan 2026 11:34:45 +0000 Subject: [PATCH] Disable face culling on fixed layer, for aim sweep reverse winding --- src/Dodge/Render.hs | 4 +--- src/Dodge/Render/Picture.hs | 2 +- src/Render.hs | 14 +++++++------- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/Dodge/Render.hs b/src/Dodge/Render.hs index 98e30e164..39b8cacff 100644 --- a/src/Dodge/Render.hs +++ b/src/Dodge/Render.hs @@ -77,8 +77,6 @@ doDrawing' win pdata u = do (0, 0, 0) ws ) - UMV.forM_ pokeCounts $ print - print "--" nCloudVs' <- -- foldM (pokeCloud $ pdata ^. cloudVBO . vboPtr) 0 (w ^. cWorld . lWorld . clouds) V.foldM' (pokeCloud (pdata ^. cloudVBO . vboPtr)) @@ -416,12 +414,12 @@ doDrawing' win pdata u = do glBlendFunc GL_ONE GL_ONE_MINUS_SRC_ALPHA -- assume premultiplied alpha glDisable GL_CULL_FACE renderLayer DebugLayer shadV pokeCounts - glEnable GL_CULL_FACE withArray (scaleMatrix (2 / windowXFloat cfig) (2 / windowYFloat cfig)) $ glNamedBufferSubData (pdata ^. matUBO) 0 64 glDepthMask GL_TRUE with 1 $ glClearNamedFramebufferfv 0 GL_DEPTH 0 renderLayer FixedCoordLayer shadV pokeCounts + glEnable GL_CULL_FACE checkGLError "during doDrawing'" SDL.glSwapWindow win diff --git a/src/Dodge/Render/Picture.hs b/src/Dodge/Render/Picture.hs index b6ae4a6fa..96acd225c 100644 --- a/src/Dodge/Render/Picture.hs +++ b/src/Dodge/Render/Picture.hs @@ -291,7 +291,7 @@ aimDelaySweep u = fold $ do drawAimSweep :: Creature -> World -> Picture drawAimSweep cr w = fold $ do - a <- safeArgV (mwp -.- p) + a <- safeArgV (mwp - p) return $ uncurryV translate (worldPosToScreen campos p) $ arcFull diff --git a/src/Render.hs b/src/Render.hs index 0b24fca1f..7fd782f53 100644 --- a/src/Render.hs +++ b/src/Render.hs @@ -210,23 +210,23 @@ renderLayer :: IO () renderLayer layer shads counts = do let layerCounts = UMV.slice (ln * numShads) numShads counts - putStrLn $ "layer: " <> show (ln * numShads) +-- putStrLn $ "layer: " <> show (ln * numShads) MV.imapM_ (drawShaderLay ln layerCounts) shads where ln = fromEnum layer -drawShaderLay :: Int -> UMV.MVector (PrimState IO) Int -> Int -> (GLuint, VBO) -> IO () +drawShaderLay + :: Int -> UMV.MVector (PrimState IO) Int -> Int -> (GLuint, VBO) -> IO () {-# INLINE drawShaderLay #-} drawShaderLay l countsVector shadIn fs = do -- putStr $ " shader: " <> show shadIn i <- UMV.read countsVector shadIn -- putStrLn $ " count: " <> show i glUseProgram (fst fs) - glUniform1i 0 . fromIntegral $ (l * numSubElements) - glDrawArrays - GL_TRIANGLES - (fromIntegral $ l * numSubElements) - (drawCountMod shadIn i) + glUniform1i 0 starti + glDrawArrays GL_TRIANGLES starti (drawCountMod shadIn i) + where + starti = fromIntegral $ l * numSubElements drawCountMod :: Int -> Int -> GLsizei drawCountMod i n