diff --git a/shader/lighting/lineShadow.frag b/shader/lighting/lineShadow.frag new file mode 100644 index 000000000..f2d723b40 --- /dev/null +++ b/shader/lighting/lineShadow.frag @@ -0,0 +1,6 @@ +#version 430 core +out vec4 fColor; +void main() +{ + fColor = vec4 (0.9,0.5,0,0); +} diff --git a/shader/lighting/lineShadow.geom b/shader/lighting/lineShadow.geom new file mode 100644 index 000000000..f7533f061 --- /dev/null +++ b/shader/lighting/lineShadow.geom @@ -0,0 +1,19 @@ +#version 430 core +layout (lines) in; +layout (triangle_strip, max_vertices = 4) out; +layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; +uniform vec3 lightPos; +vec4 shift (vec4 p) { return (vec4 (p.xyz + (2000*(p.xyz-lightPos)), 1));} +vec4 f (vec4 p) {return (theMat * p);} +void main() +{ + vec4 p0 = gl_in[0].gl_Position; + gl_Position = f(p0); EmitVertex(); + vec4 p1 = gl_in[1].gl_Position; + gl_Position = f(p1); EmitVertex(); + vec4 p2 = shift(p0); + gl_Position = f(p2); EmitVertex(); + vec4 p3 = shift(p1); + gl_Position = f(p3); EmitVertex(); + EndPrimitive(); +} diff --git a/shader/lighting/lineShadow.vert b/shader/lighting/lineShadow.vert new file mode 100644 index 000000000..f9d280db5 --- /dev/null +++ b/shader/lighting/lineShadow.vert @@ -0,0 +1,6 @@ +#version 430 core +layout (location = 0) in vec3 pos; +void main() +{ + gl_Position = vec4(pos,1); +} diff --git a/shader/lighting/occlude.geom b/shader/lighting/occlude.geom index f94f1f27c..21c3584a9 100644 --- a/shader/lighting/occlude.geom +++ b/shader/lighting/occlude.geom @@ -5,7 +5,7 @@ layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; uniform vec3 lightPos; vec4 shift (vec4 p) -{ return vec4 (p.xy + (200 * (p.xy-lightPos.xy)), 0.1 , 1); +{ return vec4 (p.xy + (200 * (p.xy-lightPos.xy)), (-1) , 1); } float isLHS (vec2 startV, vec2 testV) { @@ -14,16 +14,16 @@ float isLHS (vec2 startV, vec2 testV) // construct a box with openings on bottom face and face away from wall void main() { -vec4 p1 = vec4 (gl_in[0].gl_Position.xy,0.1,1); -vec4 p2 = vec4 (gl_in[0].gl_Position.zw,0.1,1); +vec4 p1 = vec4 (gl_in[0].gl_Position.xy,0,1); +vec4 p2 = vec4 (gl_in[0].gl_Position.zw,0,1); if (isLHS (p1.xy - lightPos.xy, p2.xy - lightPos.xy) < 0) { -vec4 p3 = vec4 (p1.xy,-0.5,1); -vec4 p4 = vec4 (p2.xy,-0.5,1); +vec4 p3 = vec4 (p1.xy,100,1); +vec4 p4 = vec4 (p2.xy,100,1); vec4 p5 = shift(p1); vec4 p6 = shift(p2); -vec4 p7 = vec4 (p6.xy,-0.5,1); -vec4 p8 = vec4 (p5.xy,-0.5,1); +vec4 p7 = vec4 (p6.xy,100,1); +vec4 p8 = vec4 (p5.xy,100,1); vec4 a1 = theMat * p1; vec4 a2 = theMat * p2; diff --git a/shader/lighting/wall.geom b/shader/lighting/wall.geom index 01d356dfe..8a03e5cd5 100644 --- a/shader/lighting/wall.geom +++ b/shader/lighting/wall.geom @@ -14,15 +14,15 @@ vec4 shiftCloser (vec4 v) { return vec4 (v.xy , v.z-0.0001 , v.w) ; } void main() { -vec4 p1 = vec4 (gl_in[0].gl_Position.xy,0.1,1); -vec4 p2 = vec4 (gl_in[0].gl_Position.zw,0.1,1); +vec4 p1 = vec4 (gl_in[0].gl_Position.xy,0,1); +vec4 p2 = vec4 (gl_in[0].gl_Position.zw,0,1); if (isLHS (p1.xy - lightPos.xy, p2.xy - lightPos.xy) < 0) { lum = radLum.y; float rad = radLum.x; - vec4 p3 = vec4 (p1.xy,-0.3,1); - vec4 p4 = vec4 (p2.xy,-0.3,1); + vec4 p3 = vec4 (p1.xy,100,1); + vec4 p4 = vec4 (p2.xy,100,1); vec2 d1 = p1.xy - lightPos.xy; vec2 d2 = p2.xy - lightPos.xy; @@ -32,16 +32,16 @@ if (isLHS (p1.xy - lightPos.xy, p2.xy - lightPos.xy) < 0) vec4 a3 = shiftCloser( theMat * p3 ); vec4 a4 = shiftCloser( theMat * p4 ); - dField = vec3( d1.x/rad, d1.y/rad, 100.0/rad); + dField = (p1.xyz - lightPos) / rad; gl_Position = a1; EmitVertex(); - dField = vec3( d1.x/rad, d1.y/rad, -300.0/rad); + dField = (p3.xyz - lightPos) / rad; gl_Position = a3; EmitVertex(); - dField = vec3( d2.x/rad, d2.y/rad, 100.0/rad); + dField = (p2.xyz - lightPos) / rad; gl_Position = a2; EmitVertex(); - dField = vec3( d2.x/rad, d2.y/rad, -300.0/rad); + dField = (p4.xyz - lightPos) / rad; gl_Position = a4; EmitVertex(); diff --git a/shader/wall/blank.geom b/shader/wall/blank.geom index d73c224fa..f74b3b242 100644 --- a/shader/wall/blank.geom +++ b/shader/wall/blank.geom @@ -20,12 +20,9 @@ void main() vec4 a1 = theMat * p1; vec4 a2 = theMat * p2; - // if (0 > isLHS (a1.xy - a2.xy, a1.xy - "viewFromPoint")) { - - vec4 p3 = vec4 (p1.xy,-0.5,1); - vec4 p4 = vec4 (p2.xy,-0.5,1); - + vec4 p3 = vec4 (p1.xy,150,1); + vec4 p4 = vec4 (p2.xy,150,1); vec4 a3 = theMat * p3; vec4 a4 = theMat * p4; diff --git a/shader/wall/texture.geom b/shader/wall/texture.geom index 6289b2972..9586bf3e0 100644 --- a/shader/wall/texture.geom +++ b/shader/wall/texture.geom @@ -15,10 +15,10 @@ void main() { gColor = vColor[0]; -vec4 p1 = vec4 (gl_in[0].gl_Position.xy,0.1,1); -vec4 p2 = vec4 (gl_in[0].gl_Position.zw,0.1,1); -vec4 p3 = vec4 (p1.xy,-0.5,1); -vec4 p4 = vec4 (p2.xy,-0.5,1); +vec4 p1 = vec4 (gl_in[0].gl_Position.xy,0,1); +vec4 p2 = vec4 (gl_in[0].gl_Position.zw,0,1); +vec4 p3 = vec4 (p1.xy,150,1); +vec4 p4 = vec4 (p2.xy,150,1); vec4 a1 = theMat * p1; vec4 a2 = theMat * p2; diff --git a/src/Data/Preload/Render.hs b/src/Data/Preload/Render.hs index 5bb89f75b..3c68f2f45 100644 --- a/src/Data/Preload/Render.hs +++ b/src/Data/Preload/Render.hs @@ -11,6 +11,7 @@ data RenderData = RenderData , _lightingOccludeShader :: FullShader , _lightingWallShader :: FullShader , _lightingSurfaceShader :: FullShader + , _lightingLineShadowShader :: FullShader , _wallBlankShader :: FullShader , _wallTextureShader :: FullShader , _textureShader :: FullShader diff --git a/src/Dodge/Creature/Inanimate.hs b/src/Dodge/Creature/Inanimate.hs index 8ef21a8c7..b301d3740 100644 --- a/src/Dodge/Creature/Inanimate.hs +++ b/src/Dodge/Creature/Inanimate.hs @@ -33,17 +33,16 @@ lamp = defaultInanimate } lampPic :: Picture lampPic = pictures - [ setDepth (0.09) $ color white $ p - , setDepth (0) $ color yellow $ p + [ setDepth (0.049) $ color white $ polygon $ rectNSEW 5 (-5) 5 (-5) + , setDepth (0) $ color white $ circleSolid 3 ] - where - p = pictures [circleSolid 3, polygon $ rectNSEW 5 0 5 0] initialiseLamp :: CRUpdate initialiseLamp w (f,g) cr = ( (addLS . f , g), Just $ cr & crUpdate .~ updateLamp i) where i = IM.newKey $ _lightSources $ f w -- to give different lights different keys - addLS = over lightSources (IM.insert i (lightAt (_crPos cr) i)) + addLS = over lightSources (IM.insert i (lightAt (x,y,0) i)) + (x,y) = _crPos cr updateLamp :: Int -> CRUpdate updateLamp i = unrandUpdate handleLS internalUpdate @@ -65,6 +64,7 @@ barrel = defaultInanimate , _crHP = 500 , _crPict = picAtCrPos $ onLayer CrLayer $ pictures [ color orange $ circleSolid 10 + , setDepth 0.049 . color (greyN 0.5) $ circleSolid 8 , color (greyN 0.5) $ circleSolid 8 ] , _crState = defaultState @@ -77,8 +77,9 @@ explosiveBarrel :: Creature explosiveBarrel = defaultInanimate { _crUpdate = updateExpBarrel , _crHP = 400 - , _crPict = picAtCrPos $ onLayer CrLayer $ pictures + , _crPict = picAtCrPos $ pictures [ color red $ circleSolid 8 + , setDepth 0.049 . color (greyN 0.5) $ circleSolid 10 , color orange $ circleSolid 10 ] , _crState = defaultState diff --git a/src/Dodge/Creature/Picture.hs b/src/Dodge/Creature/Picture.hs index 2e2f77aa9..b05e6cad2 100644 --- a/src/Dodge/Creature/Picture.hs +++ b/src/Dodge/Creature/Picture.hs @@ -12,7 +12,7 @@ import Dodge.Creature.State.Data import Dodge.Creature.Stance.Data import Dodge.Creature.Test --import Dodge.Creature.AlertLevel.Data -import Dodge.Picture.Layer +--import Dodge.Picture.Layer import Dodge.Item.Data import Picture import Geometry @@ -27,7 +27,8 @@ basicCrPict -> Picture basicCrPict col cr w = pictures $ targetingPic ++ - [ tr . piercingMod $ bluntScale $ naked col cr + [ tr . setDepth 0 $ color yellow $ circleSolid 10 + , tr . piercingMod $ bluntScale $ naked col cr , tr $ waist col , trFeet $ feet cr , tr $ arms col cr @@ -55,7 +56,7 @@ basicCrPict col cr w = pictures $ pastDams = _crPastDamage $ _crState cr waist :: Color -> Picture -waist col = setDepth 0.025 . color (light4 col) . scale 0.5 1 $ circleSolid 8 +waist col = setDepth 10 . color (light4 col) . scale 0.5 1 $ circleSolid 8 feet :: Creature -> Picture feet cr = case cr ^? crStance . carriage of @@ -73,7 +74,7 @@ feet cr = case cr ^? crStance . carriage of ] where --setL = onLayerL [levLayer CrLayer, -5] . color (greyN 0.3) . pictures - setL = setDepth 0.049 . color (greyN 0.3) . pictures + setL = setDepth 1 . color (greyN 0.3) . pictures off = 5 sLen = _strideLength $ _crStance cr f i = 6 * fromIntegral (sLen - i) / fromIntegral sLen @@ -92,7 +93,7 @@ arms col cr where sc = scale 1 1 --setL = onLayerL [levLayer CrLayer, -4] . color (light4 col) . pictures - setL = setDepth 0.02 . color (light4 col) . pictures + setL = setDepth 20 . color (light4 col) . pictures off = 8 sLen = _strideLength $ _crStance cr f i = negate 2 + negate 6 * fromIntegral (sLen - i) / fromIntegral sLen @@ -102,30 +103,30 @@ arms col cr naked :: Color -> Creature -> Picture naked col cr - | strikeMelee = onCrL . color white $ circleSolid $ _crRad cr - | pdam > 200 = onCrL . color red $ circleSolid $ _crRad cr - | pdam > 99 = onCrL . color white $ circleSolid $ _crRad cr + | strikeMelee = shoulderH . color white $ circleSolid $ _crRad cr + | pdam > 200 = shoulderH . color red $ circleSolid $ _crRad cr + | pdam > 99 = shoulderH . color white $ circleSolid $ _crRad cr | aimingOneHand = rotate (negate twistA * 0.5) $ pictures [ translate (0.25 * crad) 0 fhead - , onCrL . translate 8 (-8) . color col' $ circleSolid 4 + , shoulderH . translate 8 (-8) . color col' $ circleSolid 4 , translate 0 3 . rotate (negate 0.2) . scale 0.5 1 $ color col' $ circleSolid $ _crRad cr , translate 0 (negate 3) . rotate 0.2 . scale 0.5 1 $ color col' $ circleSolid $ _crRad cr ] | aimingTwist = translate 0 (0.5* crad) . rotate twistA $ pictures [ translate (negate 0.25 * crad) 0.25 fhead - , onCrL . translate 12 4 . color col' $ circleSolid 4 - , onCrL . translate 4 (-10) . color col' $ circleSolid 4 - , onCrL . rotate (negate 0.2) . translate 2 3 . rotate (negate 0.4) . scale 0.5 1 $ color col' $ circleSolid $ _crRad cr - , onCrL . rotate (negate 0.2) . translate 0 (negate 3) . rotate 0.2 . scale 0.5 1 $ color col' $ circleSolid $ _crRad cr + , shoulderH . translate 12 4 . color col' $ circleSolid 4 + , shoulderH . translate 4 (-10) . color col' $ circleSolid 4 + , shoulderH . rotate (negate 0.2) . translate 2 3 . rotate (negate 0.4) . scale 0.5 1 $ color col' $ circleSolid $ _crRad cr + , shoulderH . rotate (negate 0.2) . translate 0 (negate 3) . rotate 0.2 . scale 0.5 1 $ color col' $ circleSolid $ _crRad cr ] - | otherwise = onCrL $ pictures + | otherwise = pictures [ translate (0.25 * crad) 0 fhead - , translate 0 3 . rotate (negate 0.2) . scale 0.5 1 $ color col' $ circleSolid $ _crRad cr - , translate 0 (negate 3) . rotate 0.2 . scale 0.5 1 $ color col' $ circleSolid $ _crRad cr + , shoulderH . translate 0 3 . rotate (negate 0.2) . scale 0.5 1 $ color col' $ circleSolid $ _crRad cr + , shoulderH . translate 0 (negate 3) . rotate 0.2 . scale 0.5 1 $ color col' $ circleSolid $ _crRad cr ] where - fhead = setDepth (negate 0.01) $ circleSolid $ crad * 0.5 - onCrL = setDepth 0 + fhead = setDepth 30 $ circleSolid $ crad * 0.5 + shoulderH = setDepth 20 twistA = negate 1 aimingOneHand = crIsAiming' cr && crIt ^? itAimStance == Just OneHand aimingTwist = crIsAiming' cr && crIt ^? itAimStance == Just TwoHandTwist diff --git a/src/Dodge/Event/Keyboard.hs b/src/Dodge/Event/Keyboard.hs index a6d7dae0b..3775749d5 100644 --- a/src/Dodge/Event/Keyboard.hs +++ b/src/Dodge/Event/Keyboard.hs @@ -99,7 +99,8 @@ escapeMap w = w & carteDisplay .~ False dropLight :: World -> World dropLight w = placeLS ls dec pos 0 w where --(rot, g) = randomR (-pi,pi) $ _randGen w - pos = _crPos(you w) + (x,y) = _crPos(you w) + pos = (x,y,0) ls = lightAt pos 0 dec = onLayer PtLayer $ color white $ circleSolid 8 diff --git a/src/Dodge/Initialisation.hs b/src/Dodge/Initialisation.hs index 22ad214fa..5eda7aea4 100644 --- a/src/Dodge/Initialisation.hs +++ b/src/Dodge/Initialisation.hs @@ -21,8 +21,8 @@ initializeWorld w = w firstWorld :: IO World firstWorld = do - i <- randomRIO (0,5000) --- let i = 2 +-- i <- randomRIO (0,5000) + let i = 2 putStrLn $ "Seed for level generation: " ++ show ( i :: Int) return $ generateLevelFromRoomList levx $ initialWorld {_randGen = mkStdGen i} diff --git a/src/Dodge/LevelGen.hs b/src/Dodge/LevelGen.hs index 963224a11..27afaa29b 100644 --- a/src/Dodge/LevelGen.hs +++ b/src/Dodge/LevelGen.hs @@ -19,6 +19,7 @@ import Dodge.LevelGen.TriggerDoor import Dodge.LevelGen.Switch import Dodge.LevelGen.Data import Geometry +import Geometry.Data import Picture import qualified IntMapHelp as IM @@ -70,7 +71,7 @@ placeSpot ps w = case _psType ps of PutButton bt -> placeBt bt p rot w PutFlIt itm -> placeFlIt itm p rot w PutCrit cr -> placeCr cr p rot w - PutLS ls dec -> placeLS ls dec p rot w + PutLS ls dec -> placeLS ls dec p' rot w PutPressPlate pp -> placePressPlate pp p rot w RandPS rgen -> placeSpot (set psType evaluatedType ps) (set randGen g w) where @@ -97,7 +98,8 @@ placeSpot ps w = case _psType ps of PutID _ -> w --_ -> w where - p = _psPos ps + p@(px,py) = _psPos ps + p' = (px,py,0) rot = _psRot ps -- TODO: remove this typeclass @@ -188,14 +190,14 @@ placeCr crF p rot = over creatures addCr (crF {_crPos = p,_crOldPos = p,_crDir = rot,_crID = IM.newKey crs}) crs -placeLS :: LightSource -> Picture -> Point2 -> Float -> World -> World -placeLS ls dec p@(x,y) rot w = over lightSources addLS $ over decorations addDec w +placeLS :: LightSource -> Picture -> Point3 -> Float -> World -> World +placeLS ls dec (x,y,z) rot w = over lightSources addLS $ over decorations addDec w where addLS lss = IM.insert (IM.newKey lss) - (ls {_lsPos = (x,y,0),_lsDir = rot,_lsID = IM.newKey lss}) + (ls {_lsPos = (x,y,z),_lsDir = rot,_lsID = IM.newKey lss}) lss addDec decs = IM.insert (IM.newKey decs) - (uncurry translate p $ rotate (negate rot) dec) + (translate x y $ rotate (negate rot) dec) decs diff --git a/src/Dodge/LightSources.hs b/src/Dodge/LightSources.hs index 9f87b2021..2fecfb8d1 100644 --- a/src/Dodge/LightSources.hs +++ b/src/Dodge/LightSources.hs @@ -5,21 +5,22 @@ import Dodge.Picture.Layer import Dodge.LevelGen.Data --import Geometry import Picture +import Geometry.Data --import qualified Data.IntMap.Strict as IM -lightAt :: Point2 -> Int -> LightSource -lightAt (x,y) i = +lightAt :: Point3 -> Int -> LightSource +lightAt (x,y,z) i = LS {_lsID = i - ,_lsPos = (x,y,0) + ,_lsPos = (x,y,z) ,_lsDir = 0 - ,_lsRad = 600 + ,_lsRad = 500 ,_lsIntensity = 0.75 } basicLS :: PSType basicLS = PutLS ls dec where - ls = lightAt (0,0) 0 + ls = lightAt (0,0,0) 0 dec = onLayer PtLayer $ color white $ circleSolid 8 tLightFade :: Int -> Float -> (Int -> Float) -> Point2 -> TempLightSource diff --git a/src/Dodge/Render.hs b/src/Dodge/Render.hs index 4490ecd70..75a5d0fdc 100644 --- a/src/Dodge/Render.hs +++ b/src/Dodge/Render.hs @@ -65,7 +65,6 @@ doDrawing pdata w = do $ polyToTris $ map addC $ screenPolygon w ] bindShaderBuffers [_lightingSurfaceShader pdata] [nsurfVs] - depthFunc $= Just Less -- draw the lightmap. Probably changes the bound framebufferObject createLightMap pdata (w ^. config . shadow_resolution) wallPoints lightPoints viewFroms diff --git a/src/Dodge/Room/Foreground.hs b/src/Dodge/Room/Foreground.hs index 5688cf63b..2068418dc 100644 --- a/src/Dodge/Room/Foreground.hs +++ b/src/Dodge/Room/Foreground.hs @@ -46,15 +46,15 @@ diagonalLinesRect pa pb w d ang = zip lhsPoints $ map findDiPoint lhsPoints highPipe :: Point2 -> Point2 -> Picture highPipe x y = pictures - [setDepth (-0.2) $ thickLine [x,y] 10 - ,setDepth (-0.19) $ color orange $ thickLine [x,y] 10 - ,verticalPipe 5 orange x 0 (-0.2) - ,verticalPipe 5 orange y 0 (-0.2) - ,verticalPipe 5 orange (0.5 *.* (x +.+ y)) (-0.1) (-0.2) + [setDepth 100 $ thickLine [x,y] 10 + ,setDepth 90 $ color orange $ thickLine [x,y] 10 + ,verticalPipe 5 orange x 0 100 + ,verticalPipe 5 orange y 0 100 + ,verticalPipe 5 orange (0.5 *.* (x +.+ y)) 50 100 ] girderZ :: Float -> Point2 -> Point2 -> Picture -girderZ w x y = setDepth (-0.1) $ color red $ pictures $ +girderZ w x y = setDepth 50 $ color red $ pictures $ [ thickLine [xt,yt] 3 , thickLine [xb,yb] 3 ] @@ -70,7 +70,7 @@ girderZ w x y = setDepth (-0.1) $ color red $ pictures $ ps' = map (\p -> intersectSegLine' xt yt p (p +.+ dia)) ps ls = catMaybes $ zipWith (fmap . (,)) ps ps' girderV :: Color -> Float -> Point2 -> Point2 -> Picture -girderV col w x y = setDepth (-0.1) $ color col $ pictures $ +girderV col w x y = setDepth 50 $ color col $ pictures $ [ thickLine [xt,yt] 3 , thickLine [xb,yb] 3 ] @@ -89,7 +89,7 @@ girderV col w x y = setDepth (-0.1) $ color col $ pictures $ bs' = catMaybes $ zipWith (fmap . (,)) as $ f (3*pi/4) as girder :: Color -> Float -> Point2 -> Point2 -> Picture girder col w x y = pictures $ - setDepth (-0.1) (color col $ pictures $ + setDepth 50 (color col $ pictures $ [ thickLine [xt,yt] 3 , thickLine [xb,yb] 3 ] diff --git a/src/Dodge/Room/Start.hs b/src/Dodge/Room/Start.hs index 29e7185ec..e3cb6db8a 100644 --- a/src/Dodge/Room/Start.hs +++ b/src/Dodge/Room/Start.hs @@ -23,7 +23,7 @@ startRoom = do w <- state $ randomR (100,400) h <- state $ randomR (200,400) let fground = sPS (0,0) 0 $ PutForeground $ pictures - [ highPipe (0,h/2) (w, h/2) + [ highPipe (0,h/3) (w, h/3) , girderV cola 10 (0,3*h/4) (w, 3*h/4) , girder colb 5 (0,5*h/8) (w, 5*h/8) ] diff --git a/src/MatrixHelper.hs b/src/MatrixHelper.hs index 810eb0853..f41fa6423 100644 --- a/src/MatrixHelper.hs +++ b/src/MatrixHelper.hs @@ -25,6 +25,8 @@ perspectiveMatrixb rot zoom (tranx,trany) (winx,winy) (viewFromx,viewFromy) = !*! transMat (viewFromx-tranx,viewFromy-trany) !*! perMat !*! transMat (-viewFromx,-viewFromy) + !*! vertScale + !*! vertTrans perspectiveMatrixc :: Float -- ^ Rotation @@ -72,3 +74,17 @@ transMat (x,y) = V4 (V4 0 1 0 y) (V4 0 0 1 0) (V4 0 0 0 1) + +vertScale :: V4 (V4 Float) +vertScale = V4 + (V4 1 0 0 0) + (V4 0 1 0 0) + (V4 0 0 (negate 0.005) 0) + (V4 0 0 0 1) + +vertTrans :: V4 (V4 Float) +vertTrans = V4 + (V4 1 0 0 0) + (V4 0 1 0 0) + (V4 0 0 1 (negate 20)) + (V4 0 0 0 1) diff --git a/src/Preload/Render.hs b/src/Preload/Render.hs index 2e6e9780c..e107797a4 100644 --- a/src/Preload/Render.hs +++ b/src/Preload/Render.hs @@ -36,6 +36,9 @@ preloadRender = do lightingSurfaceShad <- makeShader "lighting/surface" [vert,frag] [3] Triangles poke3 >>= addUniforms ["lightPos","radLum"] + lightingLineShadowShad + <- makeShader "lighting/lineShadow" [vert,geom,frag] [3] Lines poke3 + >>= addUniforms ["lightPos"] -- 2D draw shaders bslist <- makeShader "twoD/basic" [vert,frag] [3,4] Triangles pokeTriStrat lslist <- makeShader "twoD/basic" [vert,frag] [3,4] Lines pokeLineStrat @@ -76,6 +79,7 @@ preloadRender = do return $ RenderData { _pictureShaders = [bslist,lslist,cslist,aslist,eslist,bezierQuadShader] , _lightingSurfaceShader = lightingSurfaceShad + , _lightingLineShadowShader = lightingLineShadowShad , _lightingFloorShader = lightingFloorShad , _lightingOccludeShader = wsShad , _lightingWallShader = wlLightShad diff --git a/src/Shader/Compile.hs b/src/Shader/Compile.hs index 19086f3e4..2a5e278c6 100644 --- a/src/Shader/Compile.hs +++ b/src/Shader/Compile.hs @@ -119,7 +119,7 @@ compileAndCheckShader str (theShaderType,sourceCode) = do success <- compileStatus theShader unless success $ do infoLog <- get (shaderInfoLog theShader) - putStrLn $ str ++ ": Shader compile: " ++ show theShaderType ++ " : " ++ show infoLog + putStrLn $ str ++ ": Shader compile: " ++ show theShaderType ++ " :\n" ++ infoLog return theShader bufferOffset :: Integral a => a -> Ptr b diff --git a/src/Tile.hs b/src/Tile.hs index 36d42279f..244a6d923 100644 --- a/src/Tile.hs +++ b/src/Tile.hs @@ -10,7 +10,7 @@ tToRender t = map Render3x3 $ polyToTris $ zip ps3 coords3 where ps = _tilePoly t coords = map (calcTexCoord (_tileCenter t) (_tileX t) (_tileY t)) ps - ps3 = map (mkTrip 0.05) ps + ps3 = map (mkTrip 0) ps coords3 = map (mkTrip (_tileZ t)) coords mkTrip :: c -> (a,b) -> (a,b,c)