Robin91

Members
  • Content Count

    2
  • Joined

  • Last visited

  1. Got it, thanks for the help!
  2. Hello all, This is my first post, starting with a question with a problem I cannot seem to figure out. My problem is, that I cannot get shadow casting to work, no matter what I try. I got the PicoGL demo working with my own shaders, but shadow casting stops working after I move an object outside the [1,1,1] bounduary. The game I am developping (bomberman) currently contains a 15x15 grid with bloks of 10x10x10. My light / position code looks like this: //Eye + light (a mess, but works) var eyePosition = vec3.fromValues(150, 500, 150); lightPosition = vec3.fromValues(120, 1000, 1000); var rotation = quat.setAxisAngle(vec4.create(), vec3.fromValues(1, 0, 0), Math.PI/2.5); mat4.fromRotationTranslationScale(viewMatrix, rotation, vec3.fromValues(-map.w*5, map.l*5, -250), vec3.fromValues(1, 1, 1)); //View var viewProjMatrix = mat4.create(); mat4.multiply(viewProjMatrix, projMatrix, viewMatrix); //This makes no sense yet var lightViewMatrix = mat4.create(); mat4.fromRotationTranslationScale(lightViewMatrix, rotation, vec3.fromValues(-map.w*5, map.l*5, -500), vec3.fromValues(0.001, 0.001, 0.001)); mat4.multiply(lightProj, projMatrix, lightViewMatrix); Shader (real render) uniform SceneUniforms { mat4 viewProj; mat4 lightProj; vec3 eyePosition; vec3 lightPosition; }; uniform mat4 uModel; out vec3 vPosition; out vec2 vUV; out vec3 vNormal; out vec4 vPositionFromLight; void main() { vec4 worldPosition = uModel * position; vPosition = worldPosition.xyz; vUV = uv; vNormal = (uModel * vec4(normal, 0.0)).xyz; vPositionFromLight = lightProj * worldPosition; gl_Position = viewProj * worldPosition; } Demo (ignore the domain) [snip] I got the demo working with the same shaders: [snip] Its already taking days for me to solve this, but lights / shadow is a domain I do not really get yet. Can somebody shed some light on my shadow casting problem? Thanks!