Remove unnecessary uniforms
This commit is contained in:
@@ -3,11 +3,9 @@ layout (points) in;
|
|||||||
layout (triangle_strip, max_vertices = 11) out;
|
layout (triangle_strip, max_vertices = 11) out;
|
||||||
|
|
||||||
uniform vec2 lightPos;
|
uniform vec2 lightPos;
|
||||||
uniform mat4 perpMat;
|
|
||||||
uniform mat4 worldMat;
|
uniform mat4 worldMat;
|
||||||
uniform float facesToDraw;
|
|
||||||
|
|
||||||
vec2 lightPosa = ( perpMat * vec4(lightPos,0,1) ).xy;
|
vec2 lightPosa = ( worldMat * vec4(lightPos,0,1) ).xy;
|
||||||
|
|
||||||
vec4 shift (vec4 p)
|
vec4 shift (vec4 p)
|
||||||
{ return vec4 (p.xy + (200 * (p.xy-lightPos)), 0 , 1);
|
{ return vec4 (p.xy + (200 * (p.xy-lightPos)), 0 , 1);
|
||||||
@@ -30,19 +28,14 @@ vec4 p6 = shift(p2);
|
|||||||
vec4 p7 = vec4 (p6.xy,-0.5,1);
|
vec4 p7 = vec4 (p6.xy,-0.5,1);
|
||||||
vec4 p8 = vec4 (p5.xy,-0.5,1);
|
vec4 p8 = vec4 (p5.xy,-0.5,1);
|
||||||
|
|
||||||
vec4 a1 = perpMat * p1;
|
vec4 a1 = worldMat * p1;
|
||||||
vec4 a2 = perpMat * p2;
|
vec4 a2 = worldMat * p2;
|
||||||
vec4 a3 = perpMat * p3;
|
vec4 a3 = worldMat * p3;
|
||||||
vec4 a4 = perpMat * p4;
|
vec4 a4 = worldMat * p4;
|
||||||
vec4 a5 = perpMat * p5;
|
vec4 a5 = worldMat * p5;
|
||||||
vec4 a6 = perpMat * p6;
|
vec4 a6 = worldMat * p6;
|
||||||
vec4 a7 = perpMat * p7;
|
vec4 a7 = worldMat * p7;
|
||||||
vec4 a8 = perpMat * p8;
|
vec4 a8 = worldMat * p8;
|
||||||
|
|
||||||
// gl_Position = a1; EmitVertex();
|
|
||||||
// gl_Position = a5; EmitVertex();
|
|
||||||
// gl_Position = a2; EmitVertex();
|
|
||||||
// gl_Position = a6; EmitVertex();
|
|
||||||
|
|
||||||
gl_Position = a4; EmitVertex();
|
gl_Position = a4; EmitVertex();
|
||||||
gl_Position = a3; EmitVertex();
|
gl_Position = a3; EmitVertex();
|
||||||
@@ -59,35 +52,3 @@ vec4 a8 = perpMat * p8;
|
|||||||
EndPrimitive();
|
EndPrimitive();
|
||||||
} else {}
|
} else {}
|
||||||
}
|
}
|
||||||
|
|
||||||
// // void main()
|
|
||||||
// // {
|
|
||||||
// // vec4 frontL4 = worldMat * vec4(gl_in[0].gl_Position.xy, 0 ,1);
|
|
||||||
// // vec4 frontR4 = worldMat * vec4(gl_in[0].gl_Position.zw, 0 ,1);
|
|
||||||
// // vec2 frontL = frontL4.xy;
|
|
||||||
// // vec2 frontR = frontR4.xy;
|
|
||||||
// //
|
|
||||||
// // emitLine (frontR);
|
|
||||||
// // emitLine (frontL);
|
|
||||||
// // EndPrimitive();
|
|
||||||
// // }
|
|
||||||
// gl_Position = perspective * worldMat * p4; EmitVertex();
|
|
||||||
// gl_Position = perspective * worldMat * p3; EmitVertex();
|
|
||||||
// gl_Position = perspective * worldMat * p7; EmitVertex();
|
|
||||||
// gl_Position = perspective * worldMat * p8; EmitVertex();
|
|
||||||
// gl_Position = perspective * worldMat * p5; EmitVertex();
|
|
||||||
// gl_Position = perspective * worldMat * p3; EmitVertex();
|
|
||||||
// gl_Position = perspective * worldMat * p1; EmitVertex();
|
|
||||||
// gl_Position = perspective * worldMat * p4; EmitVertex();
|
|
||||||
// gl_Position = perspective * worldMat * p2; EmitVertex();
|
|
||||||
// gl_Position = perspective * worldMat * p7; EmitVertex();
|
|
||||||
// gl_Position = perspective * worldMat * p6; EmitVertex();
|
|
||||||
// gl_Position = perspective * worldMat * p5; EmitVertex();
|
|
||||||
//void emitLine (vec2 pa)
|
|
||||||
//{
|
|
||||||
// gl_Position = vec4 (pa, 0, 1);
|
|
||||||
// EmitVertex();
|
|
||||||
// gl_Position = shift (vec4 (pa,0,1)); //vec4 (pa + (200 * (pa - lightPosa)), 0 , 1);
|
|
||||||
// EmitVertex();
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ out vec3 dField;
|
|||||||
out float lum;
|
out float lum;
|
||||||
|
|
||||||
uniform vec2 lightPos;
|
uniform vec2 lightPos;
|
||||||
uniform mat4 perpMat;
|
uniform mat4 worldMat;
|
||||||
uniform vec2 radLum;
|
uniform vec2 radLum;
|
||||||
|
|
||||||
float isLHS (vec2 startV, vec2 testV)
|
float isLHS (vec2 startV, vec2 testV)
|
||||||
@@ -31,10 +31,10 @@ if (isLHS (p1.xy - lightPos, p2.xy - lightPos) < 0)
|
|||||||
vec2 d1 = p1.xy - lightPos;
|
vec2 d1 = p1.xy - lightPos;
|
||||||
vec2 d2 = p2.xy - lightPos;
|
vec2 d2 = p2.xy - lightPos;
|
||||||
|
|
||||||
vec4 a1 = shiftCloser( perpMat * p1 );
|
vec4 a1 = shiftCloser( worldMat * p1 );
|
||||||
vec4 a2 = shiftCloser( perpMat * p2 );
|
vec4 a2 = shiftCloser( worldMat * p2 );
|
||||||
vec4 a3 = shiftCloser( perpMat * p3 );
|
vec4 a3 = shiftCloser( worldMat * p3 );
|
||||||
vec4 a4 = shiftCloser( perpMat * p4 );
|
vec4 a4 = shiftCloser( worldMat * p4 );
|
||||||
|
|
||||||
dField = vec3( d1.x/rad, d1.y/rad, 0);
|
dField = vec3( d1.x/rad, d1.y/rad, 0);
|
||||||
gl_Position = a1;
|
gl_Position = a1;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ layout (triangle_strip, max_vertices = 4) out;
|
|||||||
in vec4 vColor [];
|
in vec4 vColor [];
|
||||||
out vec4 gColor;
|
out vec4 gColor;
|
||||||
|
|
||||||
uniform mat4 perpMat;
|
uniform mat4 worldMat;
|
||||||
|
|
||||||
// consider using isLHS to check if the wall is facing the center
|
// consider using isLHS to check if the wall is facing the center
|
||||||
// this needs the view from point
|
// this needs the view from point
|
||||||
@@ -21,16 +21,16 @@ void main()
|
|||||||
vec4 p1 = vec4 (gl_in[0].gl_Position.xy,0,1);
|
vec4 p1 = vec4 (gl_in[0].gl_Position.xy,0,1);
|
||||||
vec4 p2 = vec4 (gl_in[0].gl_Position.zw,0,1);
|
vec4 p2 = vec4 (gl_in[0].gl_Position.zw,0,1);
|
||||||
|
|
||||||
vec4 a1 = perpMat * p1;
|
vec4 a1 = worldMat * p1;
|
||||||
vec4 a2 = perpMat * p2;
|
vec4 a2 = worldMat * p2;
|
||||||
|
|
||||||
// if (0 > isLHS (a1.xy - a2.xy, a1.xy - "viewFromPoint")) {
|
// if (0 > isLHS (a1.xy - a2.xy, a1.xy - "viewFromPoint")) {
|
||||||
|
|
||||||
vec4 p3 = vec4 (p1.xy,-0.5,1);
|
vec4 p3 = vec4 (p1.xy,-0.5,1);
|
||||||
vec4 p4 = vec4 (p2.xy,-0.5,1);
|
vec4 p4 = vec4 (p2.xy,-0.5,1);
|
||||||
|
|
||||||
vec4 a3 = perpMat * p3;
|
vec4 a3 = worldMat * p3;
|
||||||
vec4 a4 = perpMat * p4;
|
vec4 a4 = worldMat * p4;
|
||||||
|
|
||||||
gl_Position = a1; EmitVertex();
|
gl_Position = a1; EmitVertex();
|
||||||
gl_Position = a3; EmitVertex();
|
gl_Position = a3; EmitVertex();
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ in vec4 vColor [];
|
|||||||
out vec4 gColor;
|
out vec4 gColor;
|
||||||
out vec2 tPos;
|
out vec2 tPos;
|
||||||
|
|
||||||
uniform mat4 perpMat;
|
uniform mat4 worldMat;
|
||||||
|
|
||||||
// consider using isLHS to check if the wall is facing the center
|
// consider using isLHS to check if the wall is facing the center
|
||||||
float isLHS (vec2 startV, vec2 testV)
|
float isLHS (vec2 startV, vec2 testV)
|
||||||
@@ -23,10 +23,10 @@ vec4 p2 = vec4 (gl_in[0].gl_Position.zw,0,1);
|
|||||||
vec4 p3 = vec4 (p1.xy,-0.3,1);
|
vec4 p3 = vec4 (p1.xy,-0.3,1);
|
||||||
vec4 p4 = vec4 (p2.xy,-0.3,1);
|
vec4 p4 = vec4 (p2.xy,-0.3,1);
|
||||||
|
|
||||||
vec4 a1 = perpMat * p1;
|
vec4 a1 = worldMat * p1;
|
||||||
vec4 a2 = perpMat * p2;
|
vec4 a2 = worldMat * p2;
|
||||||
vec4 a3 = perpMat * p3;
|
vec4 a3 = worldMat * p3;
|
||||||
vec4 a4 = perpMat * p4;
|
vec4 a4 = worldMat * p4;
|
||||||
|
|
||||||
tPos = vec2 ( 1,-1) ; gl_Position = a1; EmitVertex();
|
tPos = vec2 ( 1,-1) ; gl_Position = a1; EmitVertex();
|
||||||
tPos = vec2 ( 1, 1) ; gl_Position = a3; EmitVertex();
|
tPos = vec2 ( 1, 1) ; gl_Position = a3; EmitVertex();
|
||||||
|
|||||||
+2
-2
@@ -138,7 +138,7 @@ renderBlankWalls pdata wps pmat = do
|
|||||||
n <- F.foldM (pokeShader $ _wallBlankShader pdata) wps
|
n <- F.foldM (pokeShader $ _wallBlankShader pdata) wps
|
||||||
bindShaderBuffers [_wallBlankShader pdata] [n]
|
bindShaderBuffers [_wallBlankShader pdata] [n]
|
||||||
currentProgram $= Just (_shaderProgram $ _wallBlankShader pdata)
|
currentProgram $= Just (_shaderProgram $ _wallBlankShader pdata)
|
||||||
uniform (head ( _shaderCustomUnis $ _wallBlankShader pdata) )
|
uniform (( _shaderMatrixUniform $ _wallBlankShader pdata) )
|
||||||
$= pmat
|
$= pmat
|
||||||
cullFace $= Just Back
|
cullFace $= Just Back
|
||||||
drawShader (_wallBlankShader pdata) n
|
drawShader (_wallBlankShader pdata) n
|
||||||
@@ -153,7 +153,7 @@ renderTextureWalls pdata wps pmat = do
|
|||||||
n <- F.foldM (pokeShader $ _wallTextureShader pdata) wps
|
n <- F.foldM (pokeShader $ _wallTextureShader pdata) wps
|
||||||
bindShaderBuffers [_wallTextureShader pdata] [n]
|
bindShaderBuffers [_wallTextureShader pdata] [n]
|
||||||
currentProgram $= Just (_shaderProgram $ _wallTextureShader pdata)
|
currentProgram $= Just (_shaderProgram $ _wallTextureShader pdata)
|
||||||
uniform (head ( _shaderCustomUnis $ _wallTextureShader pdata) )
|
uniform (( _shaderMatrixUniform $ _wallTextureShader pdata) )
|
||||||
$= pmat
|
$= pmat
|
||||||
cullFace $= Just Back
|
cullFace $= Just Back
|
||||||
drawShader (_wallTextureShader pdata) n
|
drawShader (_wallTextureShader pdata) n
|
||||||
|
|||||||
+28
-5
@@ -1,5 +1,6 @@
|
|||||||
module MatrixHelper
|
module MatrixHelper
|
||||||
( perspectiveMatrix
|
( perspectiveMatrix
|
||||||
|
, isoMatrix
|
||||||
) where
|
) where
|
||||||
import Geometry
|
import Geometry
|
||||||
|
|
||||||
@@ -25,11 +26,6 @@ perspectiveMatrix rot zoom (tranx,trany) (winx,winy) (viewFromx,viewFromy) =
|
|||||||
(V4 (sin rot) (cos rot) 0 0)
|
(V4 (sin rot) (cos rot) 0 0)
|
||||||
(V4 0 0 1 0)
|
(V4 0 0 1 0)
|
||||||
(V4 0 0 0 1)
|
(V4 0 0 0 1)
|
||||||
--tranMat3 = Linear.Matrix.transpose $
|
|
||||||
-- V4 (V4 1 0 0 0)
|
|
||||||
-- (V4 0 1 0 0)
|
|
||||||
-- (V4 0 0 1 0)
|
|
||||||
-- (V4 (-tranx) (-trany) 0 1)
|
|
||||||
tranMat2 = Linear.Matrix.transpose $
|
tranMat2 = Linear.Matrix.transpose $
|
||||||
V4 (V4 1 0 0 0)
|
V4 (V4 1 0 0 0)
|
||||||
(V4 0 1 0 0)
|
(V4 0 1 0 0)
|
||||||
@@ -48,3 +44,30 @@ perspectiveMatrix rot zoom (tranx,trany) (winx,winy) (viewFromx,viewFromy) =
|
|||||||
wmat = scalMat !*! rotMat !*! tranMat2 !*! perMat !*! tranMat1
|
wmat = scalMat !*! rotMat !*! tranMat2 !*! perMat !*! tranMat1
|
||||||
vToL (V4 a b c d) = [a,b,c,d]
|
vToL (V4 a b c d) = [a,b,c,d]
|
||||||
in concatMap vToL $ vToL wmat
|
in concatMap vToL $ vToL wmat
|
||||||
|
{- | A matrix that gives a top down view with no perspective. -}
|
||||||
|
isoMatrix
|
||||||
|
:: Float -- ^ Rotation
|
||||||
|
-> Float -- ^ Zoom
|
||||||
|
-> Point2 -- ^ Translation
|
||||||
|
-> Point2 -- ^ Window size
|
||||||
|
-> Point2 -- ^ View froms
|
||||||
|
-> [GLfloat]
|
||||||
|
isoMatrix rot czoom (tranx,trany) (winx,winy) _ =
|
||||||
|
let scalMat = Linear.Matrix.transpose $
|
||||||
|
V4 (V4 (2*czoom/winx) 0 0 (0::GLfloat))
|
||||||
|
(V4 0 (2*czoom/winy) 0 0)
|
||||||
|
(V4 0 0 1 0)
|
||||||
|
(V4 0 0 0 1)
|
||||||
|
rotMat = Linear.Matrix.transpose $
|
||||||
|
V4 (V4 (cos rot) (sin (-rot)) 0 0)
|
||||||
|
(V4 (sin rot) (cos rot) 0 0)
|
||||||
|
(V4 0 0 1 0)
|
||||||
|
(V4 0 0 0 1)
|
||||||
|
tranMat = Linear.Matrix.transpose $
|
||||||
|
V4 (V4 1 0 0 0)
|
||||||
|
(V4 0 1 0 0)
|
||||||
|
(V4 0 0 1 0)
|
||||||
|
(V4 (-tranx) (-trany) 0 1)
|
||||||
|
wmat = scalMat !*! rotMat !*! tranMat
|
||||||
|
vToL (V4 a b c d) = [a,b,c,d]
|
||||||
|
in concatMap vToL $ vToL wmat
|
||||||
|
|||||||
@@ -40,10 +40,10 @@ preloadRender = do
|
|||||||
lsShad <- makeShader "lighting/floor" [vert,geom,frag] [(0,4)] Points
|
lsShad <- makeShader "lighting/floor" [vert,geom,frag] [(0,4)] Points
|
||||||
(return . return . flat4)
|
(return . return . flat4)
|
||||||
wsShad <- makeShader "lighting/occlude" [vert,geom,frag] [(0,4)] Points pokeWPStrat
|
wsShad <- makeShader "lighting/occlude" [vert,geom,frag] [(0,4)] Points pokeWPStrat
|
||||||
>>= addUniforms ["lightPos","perpMat","facesToDraw"]
|
>>= addUniforms ["lightPos"]
|
||||||
wlLightShad
|
wlLightShad
|
||||||
<- makeShader "lighting/wall" [vert,geom,frag] [(0,4)] Points pokeWPStrat
|
<- makeShader "lighting/wall" [vert,geom,frag] [(0,4)] Points pokeWPStrat
|
||||||
>>= addUniforms ["lightPos","perpMat","radLum"]
|
>>= addUniforms ["lightPos","radLum"]
|
||||||
-- 2D draw shaders
|
-- 2D draw shaders
|
||||||
bslist <- makeShader "twoD/basic" [vert,frag] [(0,3),(1,4)] Triangles pokeTriStrat
|
bslist <- makeShader "twoD/basic" [vert,frag] [(0,3),(1,4)] Triangles pokeTriStrat
|
||||||
lslist <- makeShader "twoD/basic" [vert,frag] [(0,3),(1,4)] Lines pokeLineStrat
|
lslist <- makeShader "twoD/basic" [vert,frag] [(0,3),(1,4)] Lines pokeLineStrat
|
||||||
@@ -82,12 +82,9 @@ preloadRender = do
|
|||||||
-- >>= addTexture "data/texture/smudgedDirt.png"
|
-- >>= addTexture "data/texture/smudgedDirt.png"
|
||||||
-- blank wallShader
|
-- blank wallShader
|
||||||
wlBlank <- makeShader "wall/blank" [vert,geom,frag] [(0,4),(1,4)] Points pokeWPColStrat
|
wlBlank <- makeShader "wall/blank" [vert,geom,frag] [(0,4),(1,4)] Points pokeWPColStrat
|
||||||
-- >>= addTexture "data/texture/grayscaleDirt.png"
|
|
||||||
>>= addUniforms ["perpMat"]
|
|
||||||
-- textured wallShader
|
-- textured wallShader
|
||||||
wlTexture <- makeShader "wall/texture" [vert,geom,frag] [(0,4),(1,4)] Points pokeWPColStrat
|
wlTexture <- makeShader "wall/texture" [vert,geom,frag] [(0,4),(1,4)] Points pokeWPColStrat
|
||||||
>>= addTexture "data/texture/grayscaleDirt.png"
|
>>= addTexture "data/texture/grayscaleDirt.png"
|
||||||
>>= addUniforms ["perpMat"]
|
|
||||||
-- framebuffer for lighting
|
-- framebuffer for lighting
|
||||||
(fbo,fboTO,fboRBO) <- setupFramebufferWithStencil
|
(fbo,fboTO,fboRBO) <- setupFramebufferWithStencil
|
||||||
framebuf2 <- setupFramebufferWithStencil
|
framebuf2 <- setupFramebufferWithStencil
|
||||||
|
|||||||
+7
-10
@@ -38,12 +38,11 @@ setWallDepth pdata wallPoints (viewFromx,viewFromy) pmat = do
|
|||||||
bindShaderBuffers [_lightingOccludeShader pdata] [nWalls]
|
bindShaderBuffers [_lightingOccludeShader pdata] [nWalls]
|
||||||
|
|
||||||
currentProgram $= Just (_shaderProgram $ _lightingOccludeShader pdata)
|
currentProgram $= Just (_shaderProgram $ _lightingOccludeShader pdata)
|
||||||
uniform (head $ _shaderCustomUnis $ _lightingOccludeShader pdata)
|
-- reseting this uniform appears to be necessary
|
||||||
|
uniform (head $ _shaderCustomUnis $ _lightingOccludeShader pdata)
|
||||||
$= Vector2 viewFromx viewFromy
|
$= Vector2 viewFromx viewFromy
|
||||||
uniform ( (_shaderCustomUnis $ _lightingOccludeShader pdata) !! 1)
|
-- uniform ( (_shaderMatrixUniform $ _lightingOccludeShader pdata))
|
||||||
$= pmat
|
-- $= pmat
|
||||||
uniform ( (_shaderCustomUnis $ _lightingOccludeShader pdata) !! 2)
|
|
||||||
$= (0 :: Float)
|
|
||||||
-- cullFace $= Just Front
|
-- cullFace $= Just Front
|
||||||
drawShader (_lightingOccludeShader pdata) nWalls
|
drawShader (_lightingOccludeShader pdata) nWalls
|
||||||
colorMask $= Color4 Enabled Enabled Enabled Enabled
|
colorMask $= Color4 Enabled Enabled Enabled Enabled
|
||||||
@@ -81,7 +80,7 @@ createLightMap pdata resDiv wallPoints lightPoints (viewFromx,viewFromy) pmat _
|
|||||||
bindShaderBuffers [_lightingOccludeShader pdata] [nWalls]
|
bindShaderBuffers [_lightingOccludeShader pdata] [nWalls]
|
||||||
-- set uniforms for shader that draws lights
|
-- set uniforms for shader that draws lights
|
||||||
currentProgram $= Just (_shaderProgram $ _lightingWallShader pdata)
|
currentProgram $= Just (_shaderProgram $ _lightingWallShader pdata)
|
||||||
uniform ( (_shaderCustomUnis $ _lightingWallShader pdata) !! 1)
|
uniform (_shaderMatrixUniform $ _lightingWallShader pdata)
|
||||||
$= pmat
|
$= pmat
|
||||||
-- clear buffer to full alpha and furthest depth
|
-- clear buffer to full alpha and furthest depth
|
||||||
clearColor $= Color4 0 0 0 1
|
clearColor $= Color4 0 0 0 1
|
||||||
@@ -93,10 +92,8 @@ createLightMap pdata resDiv wallPoints lightPoints (viewFromx,viewFromy) pmat _
|
|||||||
currentProgram $= Just (_shaderProgram $ _lightingOccludeShader pdata)
|
currentProgram $= Just (_shaderProgram $ _lightingOccludeShader pdata)
|
||||||
uniform (head $ _shaderCustomUnis $ _lightingOccludeShader pdata)
|
uniform (head $ _shaderCustomUnis $ _lightingOccludeShader pdata)
|
||||||
$= Vector2 viewFromx viewFromy
|
$= Vector2 viewFromx viewFromy
|
||||||
uniform ( (_shaderCustomUnis $ _lightingOccludeShader pdata) !! 1)
|
uniform ( (_shaderMatrixUniform $ _lightingOccludeShader pdata))
|
||||||
$= pmat
|
$= pmat
|
||||||
uniform ( (_shaderCustomUnis $ _lightingOccludeShader pdata) !! 2)
|
|
||||||
$= (0 :: Float)
|
|
||||||
cullFace $= Just Back
|
cullFace $= Just Back
|
||||||
drawShader (_lightingOccludeShader pdata) nWalls
|
drawShader (_lightingOccludeShader pdata) nWalls
|
||||||
|
|
||||||
@@ -142,7 +139,7 @@ createLightMap pdata resDiv wallPoints lightPoints (viewFromx,viewFromy) pmat _
|
|||||||
currentProgram $= Just (_shaderProgram $ _lightingWallShader pdata)
|
currentProgram $= Just (_shaderProgram $ _lightingWallShader pdata)
|
||||||
uniform (head $ _shaderCustomUnis $ _lightingWallShader pdata)
|
uniform (head $ _shaderCustomUnis $ _lightingWallShader pdata)
|
||||||
$= Vector2 x y
|
$= Vector2 x y
|
||||||
uniform ((_shaderCustomUnis $ _lightingWallShader pdata) !! 2)
|
uniform (_shaderCustomUnis (_lightingWallShader pdata) !! 1)
|
||||||
$= Vector2 r lum
|
$= Vector2 r lum
|
||||||
drawShader (_lightingWallShader pdata) nWallLights
|
drawShader (_lightingWallShader pdata) nWallLights
|
||||||
cullFace $= Nothing
|
cullFace $= Nothing
|
||||||
|
|||||||
+4
-6
@@ -37,7 +37,7 @@ import Linear.Matrix
|
|||||||
import Linear.V4
|
import Linear.V4
|
||||||
|
|
||||||
extractProgAndUnis :: FullShader a -> (Program,UniformLocation)
|
extractProgAndUnis :: FullShader a -> (Program,UniformLocation)
|
||||||
extractProgAndUnis s = (_shaderProgram s, _shaderUniform s)
|
extractProgAndUnis s = (_shaderProgram s, _shaderMatrixUniform s)
|
||||||
|
|
||||||
pokeShaders :: [FullShader a] -> F.FoldM IO a [Int]
|
pokeShaders :: [FullShader a] -> F.FoldM IO a [Int]
|
||||||
pokeShaders = traverse pokeShader
|
pokeShaders = traverse pokeShader
|
||||||
@@ -124,7 +124,7 @@ makeShader s shaderlist alocs pm renStrat = do
|
|||||||
(prog,unis) <- makeSourcedShader s shaderlist
|
(prog,unis) <- makeSourcedShader s shaderlist
|
||||||
vaob <- setupVAO alocs
|
vaob <- setupVAO alocs
|
||||||
return $ FullShader { _shaderProgram = prog
|
return $ FullShader { _shaderProgram = prog
|
||||||
, _shaderUniform = unis
|
, _shaderMatrixUniform = unis
|
||||||
, _shaderVAO = vaob
|
, _shaderVAO = vaob
|
||||||
, _shaderPokeStrategy = renStrat
|
, _shaderPokeStrategy = renStrat
|
||||||
, _shaderDrawPrimitive = pm
|
, _shaderDrawPrimitive = pm
|
||||||
@@ -184,7 +184,6 @@ addUniforms uniStrings shad = do
|
|||||||
uniLocs <- mapM (uniformLocation $ _shaderProgram shad) uniStrings
|
uniLocs <- mapM (uniformLocation $ _shaderProgram shad) uniStrings
|
||||||
return $ shad & shaderCustomUnis %~ (++ uniLocs)
|
return $ shad & shaderCustomUnis %~ (++ uniLocs)
|
||||||
|
|
||||||
|
|
||||||
shaderTypeExt :: ShaderType -> String
|
shaderTypeExt :: ShaderType -> String
|
||||||
shaderTypeExt VertexShader = ".vert"
|
shaderTypeExt VertexShader = ".vert"
|
||||||
shaderTypeExt GeometryShader = ".geom"
|
shaderTypeExt GeometryShader = ".geom"
|
||||||
@@ -202,7 +201,6 @@ makeShaderProgram str sources = do
|
|||||||
unless linkingSuccess $ do
|
unless linkingSuccess $ do
|
||||||
infoLog <- get (programInfoLog theShaderProgram)
|
infoLog <- get (programInfoLog theShaderProgram)
|
||||||
putStrLn $ str ++ ": Program Linking" ++ infoLog
|
putStrLn $ str ++ ": Program Linking" ++ infoLog
|
||||||
|
|
||||||
return theShaderProgram
|
return theShaderProgram
|
||||||
|
|
||||||
compileAndCheckShader :: String -> (ShaderType,BS.ByteString) -> IO Shader
|
compileAndCheckShader :: String -> (ShaderType,BS.ByteString) -> IO Shader
|
||||||
@@ -217,8 +215,8 @@ compileAndCheckShader str (theShaderType,sourceCode) = do
|
|||||||
return theShader
|
return theShader
|
||||||
|
|
||||||
resetShaderUniforms :: [(Program, UniformLocation)] -> IO ()
|
resetShaderUniforms :: [(Program, UniformLocation)] -> IO ()
|
||||||
resetShaderUniforms = setShaderUniforms 0 1 (0,0) (2,2)
|
|
||||||
{-# INLINE resetShaderUniforms #-}
|
{-# INLINE resetShaderUniforms #-}
|
||||||
|
resetShaderUniforms = setShaderUniforms 0 1 (0,0) (2,2)
|
||||||
|
|
||||||
setShaderUniforms :: Float -> Float -> Point2 -> Point2 -> [(Program,UniformLocation)] -> IO ()
|
setShaderUniforms :: Float -> Float -> Point2 -> Point2 -> [(Program,UniformLocation)] -> IO ()
|
||||||
{-# INLINE setShaderUniforms #-}
|
{-# INLINE setShaderUniforms #-}
|
||||||
@@ -257,7 +255,7 @@ setPerpMatUniform
|
|||||||
setPerpMatUniform rot czoom trans wins vFrom shad = do
|
setPerpMatUniform rot czoom trans wins vFrom shad = do
|
||||||
pmat <- (newMatrix RowMajor $ perspectiveMatrix rot czoom trans wins vFrom) :: IO (GLmatrix GLfloat)
|
pmat <- (newMatrix RowMajor $ perspectiveMatrix rot czoom trans wins vFrom) :: IO (GLmatrix GLfloat)
|
||||||
currentProgram $= Just (_shaderProgram shad)
|
currentProgram $= Just (_shaderProgram shad)
|
||||||
uniform (_shaderUniform shad) $= pmat
|
uniform (_shaderMatrixUniform shad) $= pmat
|
||||||
return ()
|
return ()
|
||||||
|
|
||||||
freeShaderPointers :: FullShader a -> IO ()
|
freeShaderPointers :: FullShader a -> IO ()
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ module Shader.Data
|
|||||||
, vaoBufferTargets
|
, vaoBufferTargets
|
||||||
|
|
||||||
, shaderProgram
|
, shaderProgram
|
||||||
, shaderUniform
|
, shaderMatrixUniform
|
||||||
, shaderVAO
|
, shaderVAO
|
||||||
, shaderPokeStrategy
|
, shaderPokeStrategy
|
||||||
, shaderDrawPrimitive
|
, shaderDrawPrimitive
|
||||||
@@ -32,7 +32,7 @@ data VAO = VAO
|
|||||||
{- | Datatype containing the necessary information for a single shader. -}
|
{- | Datatype containing the necessary information for a single shader. -}
|
||||||
data FullShader a = FullShader
|
data FullShader a = FullShader
|
||||||
{ _shaderProgram :: Program
|
{ _shaderProgram :: Program
|
||||||
, _shaderUniform :: UniformLocation
|
, _shaderMatrixUniform :: UniformLocation
|
||||||
, _shaderVAO :: VAO
|
, _shaderVAO :: VAO
|
||||||
, _shaderPokeStrategy :: a -> [[[Float]]]-- -> F.FoldM IO RenderType Int
|
, _shaderPokeStrategy :: a -> [[[Float]]]-- -> F.FoldM IO RenderType Int
|
||||||
, _shaderDrawPrimitive :: PrimitiveMode
|
, _shaderDrawPrimitive :: PrimitiveMode
|
||||||
|
|||||||
Reference in New Issue
Block a user