Fix ellipse shader coordinates

This commit is contained in:
jgk
2021-06-24 21:20:14 +02:00
parent bae8a4ed94
commit 6320093473
4 changed files with 22 additions and 13 deletions
+7 -7
View File
@@ -8,23 +8,23 @@ out vec2 gBoundingBox;
void main() void main()
{ {
vec3 pa = gl_in[0].gl_Position.xyz; vec4 pa = gl_in[0].gl_Position;
vec3 pb = gl_in[1].gl_Position.xyz; vec4 pb = gl_in[1].gl_Position;
vec3 pc = gl_in[2].gl_Position.xyz; vec4 pc = gl_in[2].gl_Position;
gColorC = vCol[0]; gColorC = vCol[0];
gColorE = vCol[1]; gColorE = vCol[1];
gBoundingBox = vec2 (-1,1); gBoundingBox = vec2 (-1,1);
gl_Position = vec4 (pb, 1); gl_Position = pb;
EmitVertex(); EmitVertex();
gBoundingBox = vec2 (1,1); gBoundingBox = vec2 (1,1);
gl_Position = vec4 (pa, 1); gl_Position = pa;
EmitVertex(); EmitVertex();
gBoundingBox = vec2 (-1,-1); gBoundingBox = vec2 (-1,-1);
gl_Position = vec4 (pc, 1); gl_Position = pc;
EmitVertex(); EmitVertex();
gBoundingBox = vec2 (1,-1); gBoundingBox = vec2 (1,-1);
gl_Position = vec4 (pa + pc - pb, 1); gl_Position = pa + pc - pb;
EmitVertex(); EmitVertex();
EndPrimitive(); EndPrimitive();
+13 -1
View File
@@ -16,6 +16,7 @@ import Dodge.WorldEvent.Sound
import Dodge.Creature.Update hiding (CRUpdate) import Dodge.Creature.Update hiding (CRUpdate)
import Picture import Picture
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
import Geometry
import Control.Lens import Control.Lens
@@ -26,10 +27,21 @@ lamp :: Creature
lamp = defaultInanimate lamp = defaultInanimate
{ _crUpdate = initialiseLamp { _crUpdate = initialiseLamp
, _crHP = 100 , _crHP = 100
, _crPict = picAtCrPos $ onLayer CrLayer $ color white $ circleSolid 3 , _crPict = picAtCrPos lampPic
, _crRad = 3 , _crRad = 3
, _crMass = 3 , _crMass = 3
} }
lampPic :: Picture
lampPic = pictures
[ setDepth 0 $ color white $ p
, setDepth (negate 0.1) $ color yellow $ p
, setDepth (negate 0.5) $ color green $ p
, setDepth (negate 0.7) $ color red $ p
, setDepth (negate 0.9) $ color blue $ p
, setDepth (negate 1) $ color white $ p
]
where
p = pictures [circleSolid 3, polygon $ rectNSEW 5 0 5 0]
initialiseLamp :: CRUpdate initialiseLamp :: CRUpdate
initialiseLamp w (f,g) cr = ( (addLS . f , g), Just $ cr & crUpdate .~ updateLamp i) initialiseLamp w (f,g) cr = ( (addLS . f , g), Just $ cr & crUpdate .~ updateLamp i)
-3
View File
@@ -44,8 +44,6 @@ import System.Random
{- | A test level tree. -} {- | A test level tree. -}
roomTreex :: RandomGen g => State g (Maybe [Room]) roomTreex :: RandomGen g => State g (Maybe [Room])
roomTreex = do roomTreex = do
--struct' <- aTreeStrut
-- let struct = treeFromPost [[SpecificRoom $ fmap (pure . Right) pistolerRoom]] [EndRoom]
let struct = treeFromPost [[Corridor,SpecificRoom $ fmap (pure . Right) randomFourCornerRoom]] [EndRoom] let struct = treeFromPost [[Corridor,SpecificRoom $ fmap (pure . Right) randomFourCornerRoom]] [EndRoom]
let t' = padCorridors struct let t' = padCorridors struct
t = treeFromTrunk t = treeFromTrunk
@@ -94,6 +92,5 @@ roomTreex = do
t' t'
shiftExpandTree . expandTreeBy id <$> mapM annoToRoomTree t shiftExpandTree . expandTreeBy id <$> mapM annoToRoomTree t
--swarmTestRoom ::
levx :: RandomGen g => State g [Room] levx :: RandomGen g => State g [Room]
levx = untilJust roomTreex levx = untilJust roomTreex
+2 -2
View File
@@ -10,12 +10,12 @@ import Dodge.Picture.Layer.Data
import Picture import Picture
{- | Uses a layer to set the depth. -} {- | Uses a layer to set the depth. -}
onLayer :: Layer -> Picture -> Picture onLayer :: Layer -> Picture -> Picture
onLayer l = setDepth $ (1 - fromIntegral (levLayer l) / 100) / 100 onLayer l = setDepth $ (1 - fromIntegral (levLayer l) / 100) / 1000
{- | Set a depth according to a list of numbers. {- | Set a depth according to a list of numbers.
Lists are lexicographically ordered if input values are always less than 100. Lists are lexicographically ordered if input values are always less than 100.
Higher numbers will get placed on top of lower numbers. -} Higher numbers will get placed on top of lower numbers. -}
onLayerL :: [Int] -> Picture -> Picture onLayerL :: [Int] -> Picture -> Picture
onLayerL is = setDepth (1 - sum (zipWith (/) (map fromIntegral is) $ map (100 **) [1..])) onLayerL is = setDepth $ (1 - sum (zipWith (/) (map fromIntegral is) $ map (100 **) [1..])) / 1000
{- | For depth testing, set layer values. -} {- | For depth testing, set layer values. -}
levLayer :: Layer -> Int levLayer :: Layer -> Int
levLayer BgLayer = 20 levLayer BgLayer = 20