Draw shape shadows using index buffer
This commit is contained in:
+21
-3
@@ -9,6 +9,7 @@ module Render
|
||||
)
|
||||
where
|
||||
import Shader
|
||||
import Shader.ExtraPrimitive
|
||||
import Shader.Data
|
||||
--import Shader.Poke
|
||||
import Data.Preload.Render
|
||||
@@ -16,13 +17,14 @@ import Picture.Data
|
||||
import Geometry.Data
|
||||
|
||||
--import Data.Foldable
|
||||
--import Foreign hiding (rotate)
|
||||
import Foreign hiding (rotate)
|
||||
import Graphics.Rendering.OpenGL hiding (Line,translate,scale,imageHeight,Polygon,Color,T)
|
||||
--import qualified SDL
|
||||
import qualified Data.Vector.Unboxed.Mutable as UMV
|
||||
import qualified Data.Vector.Mutable as MV
|
||||
import Control.Monad.Primitive
|
||||
import qualified Data.Vector.Fusion.Stream.Monadic as VS
|
||||
import Graphics.GL.Core43
|
||||
|
||||
divideSize :: Int -> Size -> Size
|
||||
divideSize i (Size x y) = Size (div x $ fromIntegral i) (div y $ fromIntegral i)
|
||||
@@ -66,16 +68,32 @@ createLightMap pdata lightPoints nWalls nSils nCaps toPos = do
|
||||
$= Vector3 x y z
|
||||
drawShader (_lightingOccludeShader pdata) nWalls
|
||||
--draw silhouette shadows
|
||||
let llss = _lightingLineShadowShader pdata
|
||||
currentProgram $= Just (_shadProg $ _lightingLineShadowShader pdata)
|
||||
uniform (head $ _shadUnis $ _lightingLineShadowShader pdata)
|
||||
$= Vector3 x y z
|
||||
drawShader (_lightingLineShadowShader pdata) nSils
|
||||
-- drawShader (_lightingLineShadowShader pdata) nSils
|
||||
bindVertexArrayObject $= Just (_vao $ _shadVAO llss)
|
||||
glDrawElements
|
||||
(marshalEPrimitiveMode $ _shadPrim llss)
|
||||
(fromIntegral nSils)
|
||||
(GL_UNSIGNED_SHORT)
|
||||
nullPtr
|
||||
cullFace $= Just Back
|
||||
|
||||
--draw caps on the near plane as required
|
||||
currentProgram $= Just (_shadProg $ _lightingCapShader pdata)
|
||||
uniform (head $ _shadUnis $ _lightingCapShader pdata)
|
||||
$= Vector3 x y z
|
||||
drawShader (_lightingCapShader pdata) nCaps
|
||||
-- TODO clean this up
|
||||
let fs = _lightingCapShader pdata
|
||||
bindVertexArrayObject $= Just (_vao $ _shadVAO fs)
|
||||
glDrawElements
|
||||
(marshalEPrimitiveMode $ _shadPrim fs)
|
||||
(fromIntegral nCaps)
|
||||
(GL_UNSIGNED_SHORT)
|
||||
nullPtr
|
||||
--drawShader (_lightingCapShader pdata) nCaps
|
||||
--draw lightmap itself
|
||||
depthFunc $= Just Always
|
||||
--cullFace $= Nothing
|
||||
|
||||
Reference in New Issue
Block a user