Slight improvement to light sources and shadows
This commit is contained in:
@@ -8,7 +8,7 @@ void main()
|
|||||||
vec2 pos = gl_FragCoord.xy;
|
vec2 pos = gl_FragCoord.xy;
|
||||||
float dist = min(1 , 2*distance(pos,cenPosT) / (gParams.x));
|
float dist = min(1 , 2*distance(pos,cenPosT) / (gParams.x));
|
||||||
//float c = pow(gParams.y*dist,2);
|
//float c = pow(gParams.y*dist,2);
|
||||||
float c = pow(1-dist,2);
|
float c = gParams.y * pow(1-dist,2);
|
||||||
fColor = vec4( c,c,c ,c );
|
fColor = vec4( c,c,c ,c );
|
||||||
// fColor = vec4( 1,0,0 , 1);
|
// fColor = vec4( 1,0,0 , 1);
|
||||||
// fColor = vec4( 1,0,0 , pow(dist,2) );
|
// fColor = vec4( 1,0,0 , pow(dist,2) );
|
||||||
|
|||||||
+12
-12
@@ -12,18 +12,18 @@ void main()
|
|||||||
vec2 posc = vBackPoss[0].xy;
|
vec2 posc = vBackPoss[0].xy;
|
||||||
vec2 posd = vBackPoss[0].zw;
|
vec2 posd = vBackPoss[0].zw;
|
||||||
|
|
||||||
gl_Position = vec4 (posa, 0 , 1);
|
// gl_Position = vec4 (posa, 0 , 1);
|
||||||
EmitVertex();
|
// EmitVertex();
|
||||||
gl_Position = vec4 (posa + (200 * (posa - lightPos)), 0 , 1);
|
// gl_Position = vec4 (posa + (200 * (posa - lightPos)), 0 , 1);
|
||||||
EmitVertex();
|
// EmitVertex();
|
||||||
gl_Position = vec4 (posb, 0 , 1);
|
// gl_Position = vec4 (posb, 0 , 1);
|
||||||
EmitVertex();
|
// EmitVertex();
|
||||||
gl_Position = vec4 (posb + (200 * (posb - lightPos)), 0 , 1);
|
// gl_Position = vec4 (posb + (200 * (posb - lightPos)), 0 , 1);
|
||||||
EmitVertex();
|
// EmitVertex();
|
||||||
gl_Position = vec4 (posb + (200 * (posb - lightPos)), 0 , 1);
|
// gl_Position = vec4 (posb + (200 * (posb - lightPos)), 0 , 1);
|
||||||
EmitVertex();
|
// EmitVertex();
|
||||||
gl_Position = vec4 (posd, 0 , 1);
|
// gl_Position = vec4 (posd, 0 , 1);
|
||||||
EmitVertex();
|
// EmitVertex();
|
||||||
gl_Position = vec4 (posd, 0 , 1);
|
gl_Position = vec4 (posd, 0 , 1);
|
||||||
EmitVertex();
|
EmitVertex();
|
||||||
gl_Position = vec4 (posd + (200 * (posd - lightPos)), 0 , 1);
|
gl_Position = vec4 (posd + (200 * (posd - lightPos)), 0 , 1);
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ lightAt p i =
|
|||||||
LS {_lsID = i
|
LS {_lsID = i
|
||||||
,_lsPos = p
|
,_lsPos = p
|
||||||
,_lsDir = 0
|
,_lsDir = 0
|
||||||
,_lsRad = 300
|
,_lsRad = 600
|
||||||
,_lsIntensity = 0.5
|
,_lsIntensity = 0.75
|
||||||
}
|
}
|
||||||
|
|
||||||
basicLS = PutLS ls dec
|
basicLS = PutLS ls dec
|
||||||
|
|||||||
+10
-1
@@ -63,7 +63,7 @@ lev1 = do
|
|||||||
-- $ roomRect 300 300]
|
-- $ roomRect 300 300]
|
||||||
++ [randomiseLinks =<< shooterRoom]
|
++ [randomiseLinks =<< shooterRoom]
|
||||||
++ (replicate 3 $ randomiseLinks corridor)
|
++ (replicate 3 $ randomiseLinks corridor)
|
||||||
++ [return $ connectRoom corridor]
|
++ [return $ connectRoom (set rmPS [PS (20,40) 0 basicLS] corridor)]
|
||||||
-- ++ [randomiseLinks =<< longRoom]
|
-- ++ [randomiseLinks =<< longRoom]
|
||||||
++ [return $ connectRoom corridor]
|
++ [return $ connectRoom corridor]
|
||||||
++ firstWeapon
|
++ firstWeapon
|
||||||
@@ -364,6 +364,7 @@ miniRoom1 = do
|
|||||||
,PS (0,0) 0 $ PutWindowBlock (wth-wllen,40+4*hf) (60,40+4*hf)
|
,PS (0,0) 0 $ PutWindowBlock (wth-wllen,40+4*hf) (60,40+4*hf)
|
||||||
,PS (crx,cry) 0 $ PutCrit miniGunCrit
|
,PS (crx,cry) 0 $ PutCrit miniGunCrit
|
||||||
,PS (wth-20,hgt/2+40) 0 $ randC
|
,PS (wth-20,hgt/2+40) 0 $ randC
|
||||||
|
,PS (wth/2,hgt/2) 0 basicLS
|
||||||
]
|
]
|
||||||
++ putWallBlocks ( 0, 40+1*hf) (wllen,40+1*hf)
|
++ putWallBlocks ( 0, 40+1*hf) (wllen,40+1*hf)
|
||||||
++ putWallBlocks (wth-wllen, 40+2*hf) ( wth,40+2*hf)
|
++ putWallBlocks (wth-wllen, 40+2*hf) ( wth,40+2*hf)
|
||||||
@@ -412,6 +413,7 @@ miniRoom3 = do
|
|||||||
,PS cp (pi/8+5*pi/4) b
|
,PS cp (pi/8+5*pi/4) b
|
||||||
,PS cp (pi/8+6*pi/4) b
|
,PS cp (pi/8+6*pi/4) b
|
||||||
,PS cp (pi/8+7*pi/4) b
|
,PS cp (pi/8+7*pi/4) b
|
||||||
|
,PS (w/2,h/2) 0 basicLS
|
||||||
]
|
]
|
||||||
randomiseLinks $ set rmPS plmnts $ roomRect w h
|
randomiseLinks $ set rmPS plmnts $ roomRect w h
|
||||||
|
|
||||||
@@ -451,6 +453,9 @@ roomCenterPillar = changeLinkTo ((\p -> dist p (120,0) < 10) . fst)
|
|||||||
$ set rmPS plmnts $ roomRect' 240 240 2 2
|
$ set rmPS plmnts $ roomRect' 240 240 2 2
|
||||||
where plmnts = putWallBlocks (110,110) (110,130)
|
where plmnts = putWallBlocks (110,110) (110,130)
|
||||||
++ putWallBlocks (130,110) (130,130)
|
++ putWallBlocks (130,110) (130,130)
|
||||||
|
++ [PS (40,120) 0 basicLS
|
||||||
|
,PS (200,120) 0 basicLS
|
||||||
|
]
|
||||||
|
|
||||||
roomOctogon :: Room
|
roomOctogon :: Room
|
||||||
roomOctogon = Room
|
roomOctogon = Room
|
||||||
@@ -512,6 +517,7 @@ weaponEmptyRoom = do
|
|||||||
let plmnts = [PS (w/2,h-40) 0 $ RandPS randFirstWeapon
|
let plmnts = [PS (w/2,h-40) 0 $ RandPS randFirstWeapon
|
||||||
,PS (20,20) (pi/2) $ randC1
|
,PS (20,20) (pi/2) $ randC1
|
||||||
,PS (w-20,20) (pi/2) $ randC1
|
,PS (w-20,20) (pi/2) $ randC1
|
||||||
|
,PS (w/2,h/2) 0 $ basicLS
|
||||||
]
|
]
|
||||||
randomiseLinks =<< (changeLinkTo ((\p -> dist p (w/2,0) < 10) . fst)
|
randomiseLinks =<< (changeLinkTo ((\p -> dist p (w/2,0) < 10) . fst)
|
||||||
$ set rmPS plmnts $ roomRect' w h 2 2)
|
$ set rmPS plmnts $ roomRect' w h 2 2)
|
||||||
@@ -750,6 +756,7 @@ shooterRoom = do
|
|||||||
,PS ( 75,h-60) 0 $ PutCrit explosiveBarrel
|
,PS ( 75,h-60) 0 $ PutCrit explosiveBarrel
|
||||||
,PS ( 85,h-10) 0 $ PutCrit explosiveBarrel
|
,PS ( 85,h-10) 0 $ PutCrit explosiveBarrel
|
||||||
,PS ( 85,h-45) 0 $ PutCrit explosiveBarrel
|
,PS ( 85,h-45) 0 $ PutCrit explosiveBarrel
|
||||||
|
,PS ( 75,h-80) 0 basicLS
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
$ roomRect' 100 h 1 1
|
$ roomRect' 100 h 1 1
|
||||||
@@ -771,6 +778,7 @@ shootersRoom1 = do
|
|||||||
let blv x y = putBlockV (x+25) (x-25) (y+10) (y)
|
let blv x y = putBlockV (x+25) (x-25) (y+10) (y)
|
||||||
let plmnts = bln x1 y1 ++ bln x2 y2 ++ bln x3 y3 ++ blv x4 y4
|
let plmnts = bln x1 y1 ++ bln x2 y2 ++ bln x3 y3 ++ blv x4 y4
|
||||||
++ [PS p (-pi/2) $ PutCrit autoCrit
|
++ [PS p (-pi/2) $ PutCrit autoCrit
|
||||||
|
,PS (w/2,200) 0 basicLS
|
||||||
]
|
]
|
||||||
return $ set rmPS plmnts $ roomRect w 600
|
return $ set rmPS plmnts $ roomRect w 600
|
||||||
|
|
||||||
@@ -791,6 +799,7 @@ shootersRoom = do
|
|||||||
++ [PS (x1,y1-10) (-pi/2) $ PutCrit autoCrit
|
++ [PS (x1,y1-10) (-pi/2) $ PutCrit autoCrit
|
||||||
,PS (x2,y2-10) (-pi/2) $ PutCrit autoCrit
|
,PS (x2,y2-10) (-pi/2) $ PutCrit autoCrit
|
||||||
,PS (x3,y3-10) (-pi/2) $ PutCrit autoCrit
|
,PS (x3,y3-10) (-pi/2) $ PutCrit autoCrit
|
||||||
|
,PS (w/2,200) 0 basicLS
|
||||||
]
|
]
|
||||||
return $ set rmPS plmnts $ roomRect w 600
|
return $ set rmPS plmnts $ roomRect w 600
|
||||||
|
|
||||||
|
|||||||
@@ -315,11 +315,6 @@ renderPicture' pdata rot zoom (tranx,trany) (winx,winy) wallPoints lightPoints p
|
|||||||
bindVertexArrayObject $= Just (_vao $ _triVAO pdata)
|
bindVertexArrayObject $= Just (_vao $ _triVAO pdata)
|
||||||
bindArrayBuffers nTriVs $ _vaoBufferTargets $ _triVAO pdata
|
bindArrayBuffers nTriVs $ _vaoBufferTargets $ _triVAO pdata
|
||||||
drawArrays Triangles (fromIntegral firstIndex) (fromIntegral $ nTriVs)
|
drawArrays Triangles (fromIntegral firstIndex) (fromIntegral $ nTriVs)
|
||||||
-- draw lines, don't need to change the program or vaos, just need to bind the
|
|
||||||
-- vbos and draw
|
|
||||||
bindVertexArrayObject $= Just (_vao $ _lineVAO pdata)
|
|
||||||
bindArrayBuffers nTriVs $ _vaoBufferTargets $ _lineVAO pdata
|
|
||||||
drawArrays Lines (fromIntegral firstIndex) (fromIntegral $ nLineVs)
|
|
||||||
-- draw circles
|
-- draw circles
|
||||||
currentProgram $= Just (_circShader pdata)
|
currentProgram $= Just (_circShader pdata)
|
||||||
uniform (_uniWinSize pdata) $= Vector2 winx winy
|
uniform (_uniWinSize pdata) $= Vector2 winx winy
|
||||||
@@ -334,6 +329,15 @@ renderPicture' pdata rot zoom (tranx,trany) (winx,winy) wallPoints lightPoints p
|
|||||||
bindVertexArrayObject $= Just (_vao $ _arcVAO pdata)
|
bindVertexArrayObject $= Just (_vao $ _arcVAO pdata)
|
||||||
bindArrayBuffers nArcVs $ _vaoBufferTargets $ _arcVAO pdata
|
bindArrayBuffers nArcVs $ _vaoBufferTargets $ _arcVAO pdata
|
||||||
drawArrays Points (fromIntegral firstIndex) (fromIntegral $ nArcVs)
|
drawArrays Points (fromIntegral firstIndex) (fromIntegral $ nArcVs)
|
||||||
|
|
||||||
|
-- reset blend so that light map doesn't apply
|
||||||
|
blendFunc $= (SrcAlpha,OneMinusSrcAlpha)
|
||||||
|
|
||||||
|
-- draw lines
|
||||||
|
currentProgram $= Just (_basicShader pdata)
|
||||||
|
bindVertexArrayObject $= Just (_vao $ _lineVAO pdata)
|
||||||
|
bindArrayBuffers nTriVs $ _vaoBufferTargets $ _lineVAO pdata
|
||||||
|
drawArrays Lines (fromIntegral firstIndex) (fromIntegral $ nLineVs)
|
||||||
-- draw text
|
-- draw text
|
||||||
currentProgram $= Just (_textShader pdata)
|
currentProgram $= Just (_textShader pdata)
|
||||||
bindVertexArrayObject $= Just (_vao $ _textVAO pdata)
|
bindVertexArrayObject $= Just (_vao $ _textVAO pdata)
|
||||||
|
|||||||
Reference in New Issue
Block a user