This commit is contained in:
2023-03-08 18:31:32 +00:00
parent 2279af5510
commit 48966dde1a
9 changed files with 283 additions and 407 deletions
+19 -21
View File
@@ -1,8 +1,8 @@
module Shader.AuxAddition
( addTexture'
, vaddTextureNoFilter'
, addTextureArray'
, addUniforms'
( addTexture
, vaddTextureNoFilter
, addTextureArray
, addUniforms
, tilesToLine -- ^ kept in case it is needed in the future
) where
import Unsafe.Coerce
@@ -17,23 +17,23 @@ import Data.List.Extra
import Codec.Picture
import qualified Data.Vector.Storable as VS
import Control.Lens
import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight)
--import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight)
import Graphics.GL.Core45
-- I am not sure if this assumes that the shader is constructed directly before
-- the texture is added...
addTexture' :: String -> FullShader' -> IO FullShader'
addTexture' = addTexture2D 3 GL_LINEAR_MIPMAP_LINEAR GL_LINEAR
addTexture :: String -> FullShader' -> IO FullShader'
addTexture = addTexture2D 3 GL_LINEAR_MIPMAP_LINEAR GL_LINEAR
vaddTextureNoFilter' :: String -> FullShader' -> IO FullShader'
vaddTextureNoFilter' = addTexture2D 1 GL_NEAREST GL_NEAREST
--vaddTextureNoFilter' = addTexture2D 3 ((Linear',Just Linear') , Linear')
vaddTextureNoFilter :: String -> FullShader' -> IO FullShader'
vaddTextureNoFilter = addTexture2D 1 GL_NEAREST GL_NEAREST
addTexture2D :: GLint -- number mipmap levels
-- -> ((TextureFilter,Maybe TextureFilter),TextureFilter)
addTexture2D
:: GLint -- number of mipmap levels
-> GLenum -- minfilter
-> GLenum -- magfilter
-> String -> FullShader' -> IO FullShader'
-> String -- path to image
-> FullShader' -> IO FullShader'
addTexture2D nlev minfilt magfilt texpath shad = do
Right cmap <- readImage texpath
let texdata = convertRGBA8 cmap
@@ -54,8 +54,8 @@ addTexture2D nlev minfilt magfilt texpath shad = do
-- | for transforming a 256x256 image containing 64 tiles of 16x16 pixels into
-- an image that was directly readable by glTexSubImage3D, used the
-- transformation tilesToLine 8 128 on the underlying pixels.
addTextureArray' :: String -> FullShader' -> IO FullShader'
addTextureArray' texturePath shad = do
addTextureArray :: String -> FullShader' -> IO FullShader'
addTextureArray texturePath shad = do
err <- glGetError
print err
Right cmap <- readImage texturePath
@@ -80,12 +80,10 @@ tilesToLine
-> [a]
tilesToLine n w = concat . concat . transpose . chunksOf n . chunksOf w
addUniforms' :: [String] -> FullShader' -> IO FullShader'
addUniforms' uniStrings shad = do foldM addUniform' shad uniStrings
addUniforms :: [String] -> FullShader' -> IO FullShader'
addUniforms uniStrings shad = do foldM addUniform shad uniStrings
addUniform' :: FullShader' -> String -> IO FullShader'
addUniform' shad unistr = BS.useAsCString (pack unistr) $ \cstr -> do
addUniform :: FullShader' -> String -> IO FullShader'
addUniform shad unistr = BS.useAsCString (pack unistr) $ \cstr -> do
loc <- glGetUniformLocation (_shadProg' shad) cstr
return $ shad & shadUnis' %~ (V.++ V.fromList [loc])