private void UpdateMatrices() { if (IsShadowCaster) { if (Type == LightType.Point) { _viewMatrixShadow[0] = Matrix4.LookAt(Position, Position + new Vector3(1, 0, 0), new Vector3(0, -1, 0)); _viewMatrixShadow[1] = Matrix4.LookAt(Position, Position + new Vector3(-1, 0, 0), new Vector3(0, -1, 0)); _viewMatrixShadow[2] = Matrix4.LookAt(Position, Position + new Vector3(0, 1, 0), new Vector3(0, 0, 1)); _viewMatrixShadow[3] = Matrix4.LookAt(Position, Position + new Vector3(0, -1, 0), new Vector3(0, 0, -1)); _viewMatrixShadow[4] = Matrix4.LookAt(Position, Position + new Vector3(0, 0, 1), new Vector3(0, -1, 0)); _viewMatrixShadow[5] = Matrix4.LookAt(Position, Position + new Vector3(0, 0, -1), new Vector3(0, -1, 0)); for (int i = 0; i < 6; i++) { _viewProjectionMatrixShadow[i] = _viewMatrixShadow[i] * _projectionMatrixShadow; } } else { _viewMatrixShadow[0] = Matrix4.LookAt(Position, Target, KWEngine.WorldUp); _frustumShadowMap.CalculateFrustum(_projectionMatrixShadow, _viewMatrixShadow[0]); _viewProjectionMatrixShadow[0] = _viewMatrixShadow[0] * _projectionMatrixShadow; } } }
private void UpdateMatrices() { if (_type == LightType.DirectionalShadow) { _shadowViewMatrix = Matrix4.LookAt(Position, Target, KWEngine.WorldUp); _frustumShadowMap2.CalculateFrustum(_projectionMatrixShadow2, _shadowViewMatrix); _viewProjectionMatrixShadow2 = _shadowViewMatrix * _projectionMatrixShadow2; } }