Work on textures and lighting
This commit is contained in:
+10
-11
@@ -1,22 +1,21 @@
|
||||
module Shader.Poke.Floor
|
||||
( pokeTile
|
||||
) where
|
||||
module Shader.Poke.Floor (
|
||||
pokeTile,
|
||||
) where
|
||||
|
||||
import Geometry
|
||||
import Shader.Poke.Triangulate
|
||||
import Control.Monad
|
||||
import Tile
|
||||
import Data.Tile
|
||||
import Foreign
|
||||
import Geometry
|
||||
import Tile
|
||||
|
||||
pokeTile :: Ptr Float -> Int -> Tile -> IO Int
|
||||
pokeTile ptr i t@Tile { _tilePoly = ps } = do
|
||||
foldM (pokeTileVerx ttan (_tileArrayZ t) ptr) i $ triangulate $ zip ps (tileTexCoords t)
|
||||
pokeTile ptr i t@Tile{_tilePoly = ps} = do
|
||||
foldM (pokeTileVerx ttan (_tileArrayZ t) ptr) i $ polyToTris $ zip ps (tileTexCoords t)
|
||||
where
|
||||
ttan = _tileTangentPos t - _tileZero t
|
||||
|
||||
pokeTileVerx :: Point2 -> Float -> Ptr Float -> Int -> (Point2,Point2) -> IO Int
|
||||
pokeTileVerx tangent tilez ptr i (V2 x y,V2 s t) = do
|
||||
pokeTileVerx :: Point2 -> Float -> Ptr Float -> Int -> (Point2, Point2) -> IO Int
|
||||
pokeTileVerx tangent tilez ptr i (V2 x y, V2 s t) = do
|
||||
let a = argV tangent
|
||||
zipWithM_ (\off -> pokeElemOff ptr (i*8 + off)) [0..] [x,y,1,1,s,t,tilez,a]
|
||||
zipWithM_ (\off -> pokeElemOff ptr (i * 8 + off)) [0 ..] [x, y, 1, 1, s, t, tilez, a]
|
||||
return $ i + 1
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
module Shader.Poke.Triangulate where
|
||||
|
||||
import qualified Data.Vector as V
|
||||
|
||||
triangulate :: [a] -> [a]
|
||||
{-# INLINE triangulate #-}
|
||||
triangulate is = V.toList . V.backpermute (V.fromList is) . V.fromList $ triangulateIndices (length is)
|
||||
|
||||
triangulateIndices :: Int -> [Int]
|
||||
{-# INLINE triangulateIndices #-}
|
||||
triangulateIndices i = concatMap f [0 .. i -3]
|
||||
where
|
||||
f x
|
||||
| even x = [0, x + 1, x + 2]
|
||||
| otherwise = [0, x + 2, x + 1]
|
||||
Reference in New Issue
Block a user