shadow map with fixed projection
parent
6de9ee7434
commit
a92a8de50a
|
@ -13,3 +13,6 @@
|
||||||
[submodule "MoonTools.Curve"]
|
[submodule "MoonTools.Curve"]
|
||||||
path = MoonTools.Curve
|
path = MoonTools.Curve
|
||||||
url = https://gitea.moonside.games/MoonsideGames/MoonTools.Curve.git
|
url = https://gitea.moonside.games/MoonsideGames/MoonTools.Curve.git
|
||||||
|
[submodule "MoonTools.Bonk"]
|
||||||
|
path = MoonTools.Bonk
|
||||||
|
url = https://gitea.moonside.games/MoonsideGames/MoonTools.Bonk.git
|
||||||
|
|
2
Kav
2
Kav
|
@ -1 +1 @@
|
||||||
Subproject commit 28bc8c79e75dd0fbc60d57586b82de89523ee5f8
|
Subproject commit 3540e098d55e3b8edc4e78504487576e07537ec8
|
Binary file not shown.
|
@ -0,0 +1,18 @@
|
||||||
|
using Encompass;
|
||||||
|
using KavTest.Components;
|
||||||
|
using KavTest.Messages;
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
|
||||||
|
namespace KavTest.Spawners
|
||||||
|
{
|
||||||
|
public class DirectionalLightSpawner : Spawner<DirectionalLightSpawnMessage>
|
||||||
|
{
|
||||||
|
protected override void Spawn(in DirectionalLightSpawnMessage message)
|
||||||
|
{
|
||||||
|
var entity = CreateEntity();
|
||||||
|
|
||||||
|
AddComponent(entity, new Transform3DComponent(new Transform3D(Vector3.Zero, message.Orientation)));
|
||||||
|
AddComponent(entity, new DirectionalLightComponent(message.Color, message.Intensity));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
using Encompass;
|
||||||
|
using KavTest.Components;
|
||||||
|
using KavTest.Messages;
|
||||||
|
|
||||||
|
namespace KavTest.Spawners
|
||||||
|
{
|
||||||
|
public class StaticModelSpawner : Spawner<StaticModelSpawnMessage>
|
||||||
|
{
|
||||||
|
protected override void Spawn(in StaticModelSpawnMessage message)
|
||||||
|
{
|
||||||
|
var entity = CreateEntity();
|
||||||
|
|
||||||
|
AddComponent(entity, new Transform3DComponent(message.Transform));
|
||||||
|
AddComponent(entity, new ModelComponent(message.Model));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -28,6 +28,7 @@
|
||||||
<ProjectReference Include="..\Kav\Kav.Core.csproj" />
|
<ProjectReference Include="..\Kav\Kav.Core.csproj" />
|
||||||
<ProjectReference Include="..\Smuggler\Smuggler.Core.csproj" />
|
<ProjectReference Include="..\Smuggler\Smuggler.Core.csproj" />
|
||||||
<ProjectReference Include="..\MoonTools.Curve\Curve\Curve.csproj" />
|
<ProjectReference Include="..\MoonTools.Curve\Curve\Curve.csproj" />
|
||||||
|
<ProjectReference Include="..\MoonTools.Bonk\Bonk\Bonk.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="..\build\CopyFNALibs.targets"/>
|
<Import Project="..\build\CopyFNALibs.targets"/>
|
||||||
<Import Sdk="Microsoft.NET.Sdk" Project="Sdk.targets" />
|
<Import Sdk="Microsoft.NET.Sdk" Project="Sdk.targets" />
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
<ProjectReference Include="..\Kav\Kav.Framework.csproj" />
|
<ProjectReference Include="..\Kav\Kav.Framework.csproj" />
|
||||||
<ProjectReference Include="..\Smuggler\Smuggler.Framework.csproj" />
|
<ProjectReference Include="..\Smuggler\Smuggler.Framework.csproj" />
|
||||||
<ProjectReference Include="..\MoonTools.Curve\Curve\Curve.csproj" />
|
<ProjectReference Include="..\MoonTools.Curve\Curve\Curve.csproj" />
|
||||||
|
<ProjectReference Include="..\MoonTools.Bonk\Bonk\Bonk.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="..\build\CopyFNALibs.targets"/>
|
<Import Project="..\build\CopyFNALibs.targets"/>
|
||||||
<Import Sdk="Microsoft.NET.Sdk" Project="Sdk.targets" />
|
<Import Sdk="Microsoft.NET.Sdk" Project="Sdk.targets" />
|
||||||
|
|
|
@ -58,6 +58,11 @@ namespace KavTest
|
||||||
Smuggler.Importer.ImportGLB(GraphicsDevice, File.OpenRead("Content/cube.glb"))
|
Smuggler.Importer.ImportGLB(GraphicsDevice, File.OpenRead("Content/cube.glb"))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
var floorModel = Kav.ModelLoader.Load(
|
||||||
|
GraphicsDevice,
|
||||||
|
Smuggler.Importer.ImportGLB(GraphicsDevice, File.OpenRead("Content/floor.glb"))
|
||||||
|
);
|
||||||
|
|
||||||
WorldBuilder.AddEngine(new InputEngine(this));
|
WorldBuilder.AddEngine(new InputEngine(this));
|
||||||
WorldBuilder.AddEngine(new AngularVelocityEngine());
|
WorldBuilder.AddEngine(new AngularVelocityEngine());
|
||||||
WorldBuilder.AddEngine(new MoveAlongCurve3DEngine());
|
WorldBuilder.AddEngine(new MoveAlongCurve3DEngine());
|
||||||
|
@ -65,6 +70,8 @@ namespace KavTest
|
||||||
WorldBuilder.AddEngine(new CameraEngine());
|
WorldBuilder.AddEngine(new CameraEngine());
|
||||||
WorldBuilder.AddEngine(new RustyBallSpawner(rustyBallModel));
|
WorldBuilder.AddEngine(new RustyBallSpawner(rustyBallModel));
|
||||||
WorldBuilder.AddEngine(new LightBulbSpawner(lightBulbModel));
|
WorldBuilder.AddEngine(new LightBulbSpawner(lightBulbModel));
|
||||||
|
WorldBuilder.AddEngine(new StaticModelSpawner());
|
||||||
|
WorldBuilder.AddEngine(new DirectionalLightSpawner());
|
||||||
WorldBuilder.AddGeneralRenderer(new SceneRenderer(GraphicsDevice), 0);
|
WorldBuilder.AddGeneralRenderer(new SceneRenderer(GraphicsDevice), 0);
|
||||||
|
|
||||||
WorldBuilder.SendMessage(new RustyBallSpawnMessage(
|
WorldBuilder.SendMessage(new RustyBallSpawnMessage(
|
||||||
|
@ -82,6 +89,11 @@ namespace KavTest
|
||||||
new Vector3(-1, 1, 1)
|
new Vector3(-1, 1, 1)
|
||||||
));
|
));
|
||||||
|
|
||||||
|
WorldBuilder.SendMessage(new StaticModelSpawnMessage(
|
||||||
|
new Transform3D(new Vector3(0, -3, 0), Quaternion.Identity, new Vector3(10f, 1f, 10f)),
|
||||||
|
floorModel
|
||||||
|
));
|
||||||
|
|
||||||
for (var i = 0; i < 1; i++)
|
for (var i = 0; i < 1; i++)
|
||||||
{
|
{
|
||||||
var start = RandomHelper.RandomVector3(-5, 5);
|
var start = RandomHelper.RandomVector3(-5, 5);
|
||||||
|
@ -94,18 +106,24 @@ namespace KavTest
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
var directionalLightEntity = WorldBuilder.CreateEntity();
|
WorldBuilder.SendMessage(new DirectionalLightSpawnMessage(
|
||||||
WorldBuilder.SetComponent(directionalLightEntity, new Transform3DComponent(
|
Quaternion.CreateFromAxisAngle(Vector3.Right, Microsoft.Xna.Framework.MathHelper.PiOver2 + 0.1f),
|
||||||
new Transform3D(
|
Color.GhostWhite,
|
||||||
Vector3.Zero,
|
0.1f
|
||||||
Quaternion.CreateFromAxisAngle(Vector3.Up, Microsoft.Xna.Framework.MathHelper.PiOver2)
|
|
||||||
)
|
|
||||||
));
|
|
||||||
WorldBuilder.SetComponent(directionalLightEntity, new DirectionalLightComponent(
|
|
||||||
Color.Blue,
|
|
||||||
2f
|
|
||||||
));
|
));
|
||||||
|
|
||||||
|
// WorldBuilder.SendMessage(new DirectionalLightSpawnMessage(
|
||||||
|
// Quaternion.CreateFromAxisAngle(Vector3.Right, Microsoft.Xna.Framework.MathHelper.PiOver4),
|
||||||
|
// Color.GhostWhite,
|
||||||
|
// 0.1f
|
||||||
|
// ));
|
||||||
|
|
||||||
|
// WorldBuilder.SendMessage(new DirectionalLightSpawnMessage(
|
||||||
|
// Quaternion.CreateFromAxisAngle(Vector3.Right, Microsoft.Xna.Framework.MathHelper.PiOver2 + Microsoft.Xna.Framework.MathHelper.PiOver4),
|
||||||
|
// Color.GhostWhite,
|
||||||
|
// 0.1f
|
||||||
|
// ));
|
||||||
|
|
||||||
var cameraEntity = WorldBuilder.CreateEntity();
|
var cameraEntity = WorldBuilder.CreateEntity();
|
||||||
WorldBuilder.SetComponent(cameraEntity, new ArcballTransformComponent(
|
WorldBuilder.SetComponent(cameraEntity, new ArcballTransformComponent(
|
||||||
new ArcballTransform(
|
new ArcballTransform(
|
||||||
|
@ -119,7 +137,7 @@ namespace KavTest
|
||||||
Microsoft.Xna.Framework.MathHelper.PiOver4,
|
Microsoft.Xna.Framework.MathHelper.PiOver4,
|
||||||
16f / 9f,
|
16f / 9f,
|
||||||
0.1f,
|
0.1f,
|
||||||
200f
|
100f
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
using Encompass;
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
|
||||||
|
namespace KavTest.Messages
|
||||||
|
{
|
||||||
|
public struct DirectionalLightSpawnMessage : IMessage
|
||||||
|
{
|
||||||
|
public Quaternion Orientation { get; }
|
||||||
|
public Color Color { get; }
|
||||||
|
public float Intensity { get; }
|
||||||
|
|
||||||
|
public DirectionalLightSpawnMessage(Quaternion orientation, Color color, float intensity)
|
||||||
|
{
|
||||||
|
Orientation = orientation;
|
||||||
|
Color = color;
|
||||||
|
Intensity = intensity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
using Encompass;
|
||||||
|
using Kav;
|
||||||
|
|
||||||
|
namespace KavTest.Messages
|
||||||
|
{
|
||||||
|
public struct StaticModelSpawnMessage : IMessage
|
||||||
|
{
|
||||||
|
public Transform3D Transform { get; }
|
||||||
|
public Model Model { get; }
|
||||||
|
|
||||||
|
public StaticModelSpawnMessage(Transform3D transform, Model model)
|
||||||
|
{
|
||||||
|
Transform = transform;
|
||||||
|
Model = model;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -60,22 +60,17 @@ namespace KavTest.Renderers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<Kav.DirectionalLight> DirectionalLights
|
private Kav.DirectionalLight DirectionalLight()
|
||||||
{
|
{
|
||||||
get
|
var entity = ReadEntity<DirectionalLightComponent>();
|
||||||
{
|
var transformComponent = GetComponent<Transform3DComponent>(entity);
|
||||||
foreach (var entity in ReadEntitiesAsEnumerable<DirectionalLightComponent>())
|
var directionalLightComponent = GetComponent<DirectionalLightComponent>(entity);
|
||||||
{
|
|
||||||
var transformComponent = GetComponent<Transform3DComponent>(entity);
|
|
||||||
var directionalLightComponent = GetComponent<DirectionalLightComponent>(entity);
|
|
||||||
|
|
||||||
yield return new Kav.DirectionalLight(
|
return new Kav.DirectionalLight(
|
||||||
transformComponent.Transform.Forward,
|
transformComponent.Transform.Forward,
|
||||||
directionalLightComponent.Color,
|
directionalLightComponent.Color,
|
||||||
directionalLightComponent.Intensity
|
directionalLightComponent.Intensity
|
||||||
);
|
);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public SceneRenderer(GraphicsDevice graphicsDevice)
|
public SceneRenderer(GraphicsDevice graphicsDevice)
|
||||||
|
@ -116,7 +111,7 @@ namespace KavTest.Renderers
|
||||||
camera,
|
camera,
|
||||||
ModelTransforms,
|
ModelTransforms,
|
||||||
PointLights,
|
PointLights,
|
||||||
DirectionalLights
|
DirectionalLight()
|
||||||
);
|
);
|
||||||
|
|
||||||
// foreach (var directionalLight in DirectionalLights)
|
// foreach (var directionalLight in DirectionalLights)
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 2f341aaeae07d2cb9b8f9be0ff5688543dcd582b
|
Loading…
Reference in New Issue