Compare commits

..

3 Commits

Author SHA1 Message Date
cosmonaut 72d960806a keyboard controls 2021-01-11 19:51:48 -08:00
cosmonaut a654a5f9a3 fix unused model loading 2021-01-11 13:59:52 -08:00
cosmonaut 47ae1a0dbd cutting everything but skybox 2021-01-11 13:37:30 -08:00
39 changed files with 204 additions and 955 deletions

26
.vscode/launch.json vendored
View File

@ -1,32 +1,6 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Framework Debugger",
"type": "clr",
"request": "launch",
"preLaunchTask": "Build: Framework Debug",
"program": "${workspaceFolder}/KavTest/bin/Debug/net48/KavTest.exe",
"args": [],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
},
{
"name": "Attach to Mono Debugger",
"type": "mono",
"request": "launch",
"preLaunchTask": "Build: Mono Debug",
"program": "${workspaceFolder}/KavTest/bin/x64/Debug/net48/KavTest.exe",
"args": [],
"env": {
"LD_LIBRARY_PATH": "./lib64",
"DYLD_LIBRARY_PATH": "./osx"
},
"cwd": "${workspaceFolder}/KavTest/bin/x64/Debug/net48",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
},
{
"name": "Attach to Core Debugger",
"type": "coreclr",

113
.vscode/tasks.json vendored
View File

@ -21,7 +21,7 @@
},
"tasks": [
{
"label": "Build: Mono Release",
"label": "Build: Framework Release",
"command": "msbuild",
"args": [
"-restore:True",
@ -36,7 +36,7 @@
"problemMatcher": "$msCompile"
},
{
"label": "Run: Mono Release",
"label": "Run: Framework Release",
"command": "mono",
"args": [
"KavTest.exe"
@ -44,9 +44,10 @@
"options": {
"env": {
"LD_LIBRARY_PATH": "./lib64",
"DYLD_LIBRARY_PATH": "./osx"
"DYLD_LIBRARY_PATH": "./osx",
"FNA3D_FORCE_DRIVER": "Vulkan"
},
"cwd": "${workspaceFolder}/KavTest/bin/x64/Release/net48"
"cwd": "${workspaceFolder}/KavTest/bin/Release/net461"
},
"type": "process",
"group": {
@ -56,10 +57,10 @@
"problemMatcher": []
},
{
"label": "Build & Run: Mono Release",
"label": "Build & Run: Framework Release",
"dependsOn": [
"Build: Mono Release",
"Run: Mono Release"
"Build: Framework Release",
"Run: Framework Release"
],
"dependsOrder": "sequence",
"type": "shell",
@ -70,7 +71,7 @@
"problemMatcher": []
},
{
"label": "Build: Mono Debug",
"label": "Build: Framework Debug",
"command": "msbuild",
"args": [
"-restore:True",
@ -85,7 +86,7 @@
"problemMatcher": []
},
{
"label": "Run: Mono Debug",
"label": "Run: Framework Debug",
"command": "mono",
"args": [
"KavTest.exe"
@ -96,7 +97,7 @@
"DYLD_LIBRARY_PATH": "./osx",
"FNA3D_FORCE_DRIVER": "OpenGL"
},
"cwd": "${workspaceFolder}/KavTest/bin/x64/Debug/net48"
"cwd": "${workspaceFolder}/KavTest/bin/Debug/net461"
},
"type": "process",
"group": {
@ -106,10 +107,10 @@
"problemMatcher": []
},
{
"label": "Build & Run: Mono Debug",
"label": "Build & Run: Framework Debug",
"dependsOn": [
"Build: Mono Debug",
"Run: Mono Debug"
"Build: Framework Debug",
"Run: Framework Debug"
],
"dependsOrder": "sequence",
"type": "shell",
@ -218,92 +219,6 @@
"isDefault": true
},
"problemMatcher": []
},
{
"label": "Build: Framework Debug",
"command": "MsBuild.exe",
"args": [
"-restore:True",
"${workspaceFolder}/KavTest.Framework.sln",
"-p:Configuration=Debug",
"-p:Platform=x64"
],
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
},
{
"label": "Run: Framework Debug",
"command": "KavTest.exe",
"options": {
"cwd": "${workspaceFolder}/KavTest/bin/x64/Debug/net48"
},
"type": "process",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
},
{
"label": "Build & Run: Framework Debug",
"dependsOn": [
"Build: Framework Debug",
"Run: Framework Debug"
],
"dependsOrder": "sequence",
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
},
{
"label": "Build: Framework Release",
"command": "MsBuild.exe",
"args": [
"-restore:True",
"${workspaceFolder}/KavTest.Framework.sln",
"-p:Configuration=Release",
"-p:Platform=x64"
],
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
},
{
"label": "Run: Framework Release",
"command": "KavTest.exe",
"options": {
"cwd": "${workspaceFolder}/KavTest/bin/x64/Release/net48"
},
"type": "process",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
},
{
"label": "Build & Run: Framework Release",
"dependsOn": [
"Build: Framework Release",
"Run: Framework Release"
],
"dependsOrder": "sequence",
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
}
]
}

2
FNA

@ -1 +1 @@
Subproject commit 7357a6f297fee33b7a8d5afddaca30480c591ba5
Subproject commit 1df9f588a701eefc4b55a0869cd5871be0124307

2
Kav

@ -1 +1 @@
Subproject commit 1723f1dff8898e1d108135e13901bfa6ea3bb0fe
Subproject commit 06e552399600be4b706249bab54740eae4fd8e6b

View File

@ -1,61 +1,48 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30717.126
# Visual Studio 15
VisualStudioVersion = 15.0.26124.0
MinimumVisualStudioVersion = 15.0.26124.0
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KavTest.Core", "KavTest\KavTest.Core.csproj", "{98DFC9BD-FBA1-4562-AAA0-466BED7102D3}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KavTest.Core", "KavTest\KavTest.Core.csproj", "{4589302C-174A-4173-9654-CAA6CA1B5220}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FNA.Core", "FNA\FNA.Core.csproj", "{C674DC0C-0ADF-410F-B7F5-307748973352}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Kav.Core", "Kav\Kav.Core.csproj", "{E75FECE9-6919-4DF8-8847-1F7CB523D390}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Smuggler.Core", "Smuggler\Smuggler.Core.csproj", "{C11884A7-61B3-41F2-A3DA-2E7A58E1DC80}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bonk", "MoonTools.Bonk\Bonk\Bonk.csproj", "{66453D48-F637-4289-9775-84639EE4005F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "encompass-cs", "encompass-cs\encompass-cs\encompass-cs.csproj", "{FEEEF90D-B4C1-4E39-929B-DC525A5AB048}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Curve", "MoonTools.Curve\Curve\Curve.csproj", "{335EAE2A-2F19-44FD-AD24-238CCE61B697}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kav", "Kav\Kav.Core.csproj", "{08398000-DF30-465A-AE07-E11D108B8A74}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{98DFC9BD-FBA1-4562-AAA0-466BED7102D3}.Debug|x64.ActiveCfg = Debug|x64
{98DFC9BD-FBA1-4562-AAA0-466BED7102D3}.Debug|x64.Build.0 = Debug|x64
{98DFC9BD-FBA1-4562-AAA0-466BED7102D3}.Release|x64.ActiveCfg = Release|x64
{98DFC9BD-FBA1-4562-AAA0-466BED7102D3}.Release|x64.Build.0 = Release|x64
{C674DC0C-0ADF-410F-B7F5-307748973352}.Debug|x64.ActiveCfg = Debug|x64
{C674DC0C-0ADF-410F-B7F5-307748973352}.Debug|x64.Build.0 = Debug|x64
{C674DC0C-0ADF-410F-B7F5-307748973352}.Release|x64.ActiveCfg = Release|x64
{C674DC0C-0ADF-410F-B7F5-307748973352}.Release|x64.Build.0 = Release|x64
{E75FECE9-6919-4DF8-8847-1F7CB523D390}.Debug|x64.ActiveCfg = Debug|x64
{E75FECE9-6919-4DF8-8847-1F7CB523D390}.Debug|x64.Build.0 = Debug|x64
{E75FECE9-6919-4DF8-8847-1F7CB523D390}.Release|x64.ActiveCfg = Release|x64
{E75FECE9-6919-4DF8-8847-1F7CB523D390}.Release|x64.Build.0 = Release|x64
{C11884A7-61B3-41F2-A3DA-2E7A58E1DC80}.Debug|x64.ActiveCfg = Debug|x64
{C11884A7-61B3-41F2-A3DA-2E7A58E1DC80}.Debug|x64.Build.0 = Debug|x64
{C11884A7-61B3-41F2-A3DA-2E7A58E1DC80}.Release|x64.ActiveCfg = Release|x64
{C11884A7-61B3-41F2-A3DA-2E7A58E1DC80}.Release|x64.Build.0 = Release|x64
{66453D48-F637-4289-9775-84639EE4005F}.Debug|x64.ActiveCfg = Debug|x64
{66453D48-F637-4289-9775-84639EE4005F}.Debug|x64.Build.0 = Debug|x64
{66453D48-F637-4289-9775-84639EE4005F}.Release|x64.ActiveCfg = Release|x64
{66453D48-F637-4289-9775-84639EE4005F}.Release|x64.Build.0 = Release|x64
{FEEEF90D-B4C1-4E39-929B-DC525A5AB048}.Debug|x64.ActiveCfg = Debug|x64
{FEEEF90D-B4C1-4E39-929B-DC525A5AB048}.Debug|x64.Build.0 = Debug|x64
{FEEEF90D-B4C1-4E39-929B-DC525A5AB048}.Release|x64.ActiveCfg = Release|x64
{FEEEF90D-B4C1-4E39-929B-DC525A5AB048}.Release|x64.Build.0 = Release|x64
{335EAE2A-2F19-44FD-AD24-238CCE61B697}.Debug|x64.ActiveCfg = Debug|x64
{335EAE2A-2F19-44FD-AD24-238CCE61B697}.Debug|x64.Build.0 = Debug|x64
{335EAE2A-2F19-44FD-AD24-238CCE61B697}.Release|x64.ActiveCfg = Release|x64
{335EAE2A-2F19-44FD-AD24-238CCE61B697}.Release|x64.Build.0 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {EE29AB8C-0987-4AB5-B007-05F81EFD7291}
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4589302C-174A-4173-9654-CAA6CA1B5220}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4589302C-174A-4173-9654-CAA6CA1B5220}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4589302C-174A-4173-9654-CAA6CA1B5220}.Debug|x64.ActiveCfg = Debug|Any CPU
{4589302C-174A-4173-9654-CAA6CA1B5220}.Debug|x64.Build.0 = Debug|Any CPU
{4589302C-174A-4173-9654-CAA6CA1B5220}.Debug|x86.ActiveCfg = Debug|Any CPU
{4589302C-174A-4173-9654-CAA6CA1B5220}.Debug|x86.Build.0 = Debug|Any CPU
{4589302C-174A-4173-9654-CAA6CA1B5220}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4589302C-174A-4173-9654-CAA6CA1B5220}.Release|Any CPU.Build.0 = Release|Any CPU
{4589302C-174A-4173-9654-CAA6CA1B5220}.Release|x64.ActiveCfg = Release|Any CPU
{4589302C-174A-4173-9654-CAA6CA1B5220}.Release|x64.Build.0 = Release|Any CPU
{4589302C-174A-4173-9654-CAA6CA1B5220}.Release|x86.ActiveCfg = Release|Any CPU
{4589302C-174A-4173-9654-CAA6CA1B5220}.Release|x86.Build.0 = Release|Any CPU
{08398000-DF30-465A-AE07-E11D108B8A74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{08398000-DF30-465A-AE07-E11D108B8A74}.Debug|Any CPU.Build.0 = Debug|Any CPU
{08398000-DF30-465A-AE07-E11D108B8A74}.Debug|x64.ActiveCfg = Debug|Any CPU
{08398000-DF30-465A-AE07-E11D108B8A74}.Debug|x64.Build.0 = Debug|Any CPU
{08398000-DF30-465A-AE07-E11D108B8A74}.Debug|x86.ActiveCfg = Debug|Any CPU
{08398000-DF30-465A-AE07-E11D108B8A74}.Debug|x86.Build.0 = Debug|Any CPU
{08398000-DF30-465A-AE07-E11D108B8A74}.Release|Any CPU.ActiveCfg = Release|Any CPU
{08398000-DF30-465A-AE07-E11D108B8A74}.Release|Any CPU.Build.0 = Release|Any CPU
{08398000-DF30-465A-AE07-E11D108B8A74}.Release|x64.ActiveCfg = Release|Any CPU
{08398000-DF30-465A-AE07-E11D108B8A74}.Release|x64.Build.0 = Release|Any CPU
{08398000-DF30-465A-AE07-E11D108B8A74}.Release|x86.ActiveCfg = Release|Any CPU
{08398000-DF30-465A-AE07-E11D108B8A74}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

View File

@ -1,61 +1,76 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30717.126
# Visual Studio 15
VisualStudioVersion = 15.0.26124.0
MinimumVisualStudioVersion = 15.0.26124.0
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Smuggler.Framework", "Smuggler\Smuggler.Framework.csproj", "{06664804-2B01-46F5-B8EC-07E5E2C1EADC}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FNATemplate.Framework", "KavTest\KavTest.Framework.csproj", "{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kav", "Kav\Kav.Framework.csproj", "{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Smuggler", "Smuggler\Smuggler.Framework.csproj", "{06664804-2B01-46F5-B8EC-07E5E2C1EADC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FNA", "FNA\FNA.csproj", "{35253CE1-C864-4CD3-8249-4D1319748E8F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Kav.Framework", "Kav\Kav.Framework.csproj", "{9DCFEB6B-7C62-4F6B-A78F-168FAA474145}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KavTest.Framework", "KavTest\KavTest.Framework.csproj", "{A4DFCA0B-D54D-42C0-ABA9-1A1842D39927}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Curve", "MoonTools.Curve\Curve\Curve.csproj", "{572DCC26-4184-45B1-B813-5C798E106E76}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bonk", "MoonTools.Bonk\Bonk\Bonk.csproj", "{16F6F157-1C3D-4E94-A222-66AF0CC360B1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "encompass-cs", "encompass-cs\encompass-cs\encompass-cs.csproj", "{F23E4933-6B1F-4E29-B165-6C640D7B33DA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|x64.ActiveCfg = Debug|x64
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|x64.Build.0 = Debug|x64
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|x64.ActiveCfg = Release|x64
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|x64.Build.0 = Release|x64
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|x64.ActiveCfg = Debug|x64
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|x64.Build.0 = Debug|x64
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x64.ActiveCfg = Debug|x64
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x64.Build.0 = Debug|x64
{9DCFEB6B-7C62-4F6B-A78F-168FAA474145}.Debug|x64.ActiveCfg = Debug|x64
{9DCFEB6B-7C62-4F6B-A78F-168FAA474145}.Debug|x64.Build.0 = Debug|x64
{9DCFEB6B-7C62-4F6B-A78F-168FAA474145}.Release|x64.ActiveCfg = Release|x64
{9DCFEB6B-7C62-4F6B-A78F-168FAA474145}.Release|x64.Build.0 = Release|x64
{A4DFCA0B-D54D-42C0-ABA9-1A1842D39927}.Debug|x64.ActiveCfg = Debug|x64
{A4DFCA0B-D54D-42C0-ABA9-1A1842D39927}.Debug|x64.Build.0 = Debug|x64
{A4DFCA0B-D54D-42C0-ABA9-1A1842D39927}.Release|x64.ActiveCfg = Release|x64
{A4DFCA0B-D54D-42C0-ABA9-1A1842D39927}.Release|x64.Build.0 = Release|x64
{572DCC26-4184-45B1-B813-5C798E106E76}.Debug|x64.ActiveCfg = Debug|x64
{572DCC26-4184-45B1-B813-5C798E106E76}.Debug|x64.Build.0 = Debug|x64
{572DCC26-4184-45B1-B813-5C798E106E76}.Release|x64.ActiveCfg = Release|x64
{572DCC26-4184-45B1-B813-5C798E106E76}.Release|x64.Build.0 = Release|x64
{16F6F157-1C3D-4E94-A222-66AF0CC360B1}.Debug|x64.ActiveCfg = Debug|x64
{16F6F157-1C3D-4E94-A222-66AF0CC360B1}.Debug|x64.Build.0 = Debug|x64
{16F6F157-1C3D-4E94-A222-66AF0CC360B1}.Release|x64.ActiveCfg = Release|x64
{16F6F157-1C3D-4E94-A222-66AF0CC360B1}.Release|x64.Build.0 = Release|x64
{F23E4933-6B1F-4E29-B165-6C640D7B33DA}.Debug|x64.ActiveCfg = Debug|x64
{F23E4933-6B1F-4E29-B165-6C640D7B33DA}.Debug|x64.Build.0 = Debug|x64
{F23E4933-6B1F-4E29-B165-6C640D7B33DA}.Release|x64.ActiveCfg = Release|x64
{F23E4933-6B1F-4E29-B165-6C640D7B33DA}.Release|x64.Build.0 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {F5E92C03-53E8-4716-B589-BC692E409E40}
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|x64.ActiveCfg = Debug|x64
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|x64.Build.0 = Debug|x64
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|x86.ActiveCfg = Debug|x86
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|x86.Build.0 = Debug|x86
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Release|Any CPU.Build.0 = Release|Any CPU
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Release|x64.ActiveCfg = Release|Any CPU
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Release|x64.Build.0 = Release|Any CPU
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Release|x86.ActiveCfg = Release|Any CPU
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Release|x86.Build.0 = Release|Any CPU
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Debug|x64.ActiveCfg = Debug|Any CPU
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Debug|x64.Build.0 = Debug|Any CPU
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Debug|x86.ActiveCfg = Debug|Any CPU
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Debug|x86.Build.0 = Debug|Any CPU
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Release|Any CPU.Build.0 = Release|Any CPU
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Release|x64.ActiveCfg = Release|Any CPU
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Release|x64.Build.0 = Release|Any CPU
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Release|x86.ActiveCfg = Release|Any CPU
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Release|x86.Build.0 = Release|Any CPU
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|x64.ActiveCfg = Debug|Any CPU
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|x64.Build.0 = Debug|Any CPU
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|x86.ActiveCfg = Debug|x86
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|x86.Build.0 = Debug|x86
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|Any CPU.Build.0 = Release|Any CPU
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|x64.ActiveCfg = Release|Any CPU
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|x64.Build.0 = Release|Any CPU
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|x86.ActiveCfg = Release|x86
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|x86.Build.0 = Release|x86
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|x64.ActiveCfg = Debug|x64
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|x64.Build.0 = Debug|x64
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|x86.ActiveCfg = Debug|x86
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|x86.Build.0 = Debug|x86
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|Any CPU.ActiveCfg = Debug|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|Any CPU.Build.0 = Debug|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x64.ActiveCfg = Debug|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x64.Build.0 = Debug|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x86.ActiveCfg = Debug|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x86.Build.0 = Debug|Any CPU
EndGlobalSection
EndGlobal

View File

@ -1,6 +0,0 @@
using Encompass;
namespace KavTest.Components
{
public struct InstancedCubeComponent : IComponent { }
}

View File

@ -1,16 +0,0 @@
using Encompass;
using Kav;
namespace KavTest
{
public struct MeshSpriteComponent : IComponent
{
public MeshSprite MeshSprite { get; }
public MeshSpriteComponent(
MeshSprite meshSprite
) {
MeshSprite = meshSprite;
}
}
}

View File

@ -6,12 +6,10 @@ namespace KavTest.Components
public struct ModelComponent : IComponent
{
public Model Model { get; }
public bool Instanced { get; }
public ModelComponent(Model model, bool instanced)
public ModelComponent(Model model)
{
Model = model;
Instanced = instanced;
}
}
}

View File

@ -1,19 +0,0 @@
using Encompass;
using Microsoft.Xna.Framework;
namespace KavTest.Components
{
public struct SpotLightComponent : IComponent
{
public Color Color { get; }
public float Intensity { get; }
public float Angle { get; }
public SpotLightComponent(Color color, float intensity, float angleInRadians)
{
Color = color;
Intensity = intensity;
Angle = angleInRadians;
}
}
}

View File

@ -1,27 +0,0 @@
using Encompass;
using Kav;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace KavTest
{
public struct SpriteComponent : IComponent
{
public Texture2D Texture { get; }
public Vector2 Origin { get; }
public float Rotation { get; }
public SpriteBillboardConstraint BillboardConstraint { get; }
public SpriteComponent(
Texture2D texture,
Vector2 origin,
float rotation,
SpriteBillboardConstraint billboardConstraint
) {
Texture = texture;
Origin = origin;
Rotation = rotation;
BillboardConstraint = billboardConstraint;
}
}
}

View File

@ -1,9 +0,0 @@
using Encompass;
namespace KavTest.Components
{
public struct StaticComponent : IComponent
{
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

BIN
KavTest/Content/ToonShadeRuins.glb (Stored with Git LFS)

Binary file not shown.

BIN
KavTest/Content/avocado.glb (Stored with Git LFS)

Binary file not shown.

BIN
KavTest/Content/bluetorus.glb (Stored with Git LFS)

Binary file not shown.

BIN
KavTest/Content/cube.glb (Stored with Git LFS)

Binary file not shown.

BIN
KavTest/Content/floor.glb (Stored with Git LFS)

Binary file not shown.

BIN
KavTest/Content/pinkcone.glb (Stored with Git LFS)

Binary file not shown.

BIN
KavTest/Content/redcylinder.glb (Stored with Git LFS)

Binary file not shown.

BIN
KavTest/Content/rustysphere.glb (Stored with Git LFS)

Binary file not shown.

View File

@ -50,7 +50,26 @@ namespace KavTest.Engines
if (SomeComponent<PerspectiveCameraComponent>())
{
var cameraEntity = ReadEntity<PerspectiveCameraComponent>();
SendMessage(new RotateCameraMessage(cameraEntity, -mouseState.X, -mouseState.Y));
if (keyboardState.IsKeyDown(Keys.I))
{
SendMessage(new RotateCameraMessage(cameraEntity, 0, 3));
}
if (keyboardState.IsKeyDown(Keys.K))
{
SendMessage(new RotateCameraMessage(cameraEntity, 0, -3));
}
if (keyboardState.IsKeyDown(Keys.J))
{
SendMessage(new RotateCameraMessage(cameraEntity, 3, 0));
}
if (keyboardState.IsKeyDown(Keys.L))
{
SendMessage(new RotateCameraMessage(cameraEntity, -3, 0));
}
}
}
}

View File

@ -12,13 +12,11 @@ namespace KavTest.Engines
typeof(LocalRotationMessage)
)]
[Writes(typeof(Transform3DComponent))]
[QueryWith(typeof(Transform3DComponent))]
[QueryWithout(typeof(StaticComponent))]
public class MotionEngine : Engine
{
public override void Update(double dt)
{
foreach (var entity in TrackedEntities)
foreach (var entity in ReadEntities<Transform3DComponent>())
{
ref readonly var transformComponent = ref GetComponent<Transform3DComponent>(entity);

View File

@ -21,7 +21,7 @@ namespace KavTest.Spawners
AddComponent(entity, new Transform3DComponent(message.Transform));
AddComponent(entity, new PointLightComponent(message.Color, message.Intensity));
AddComponent(entity, new MoveAlongCurve3DComponent(message.Curve));
//AddComponent(entity, new ModelComponent(LightBulbModel));
AddComponent(entity, new ModelComponent(LightBulbModel));
AddComponent(entity, new OverrideAlbedoComponent(message.Color.ToVector3()));
}
}

View File

@ -1,18 +0,0 @@
using Encompass;
using KavTest.Components;
using KavTest.Messages;
using Microsoft.Xna.Framework;
namespace KavTest.Spawners
{
public class MeshSpriteSpawner : Spawner<MeshSpriteSpawnMessage>
{
protected override void Spawn(in MeshSpriteSpawnMessage message)
{
var entity = CreateEntity();
AddComponent(entity, new Transform3DComponent(message.Transform));
AddComponent(entity, new MeshSpriteComponent(message.MeshSprite));
}
}
}

View File

@ -19,7 +19,7 @@ namespace KavTest.Spawners
var entity = CreateEntity();
AddComponent(entity, new Transform3DComponent(message.Transform));
AddComponent(entity, new ModelComponent(RustyBallModel, true));
AddComponent(entity, new ModelComponent(RustyBallModel));
AddComponent(entity, new AngularVelocityComponent(message.AngularVelocity));
}
}

View File

@ -11,7 +11,7 @@ namespace KavTest.Spawners
var entity = CreateEntity();
AddComponent(entity, new Transform3DComponent(message.Transform));
AddComponent(entity, new ModelComponent(message.Model, true));
AddComponent(entity, new ModelComponent(message.Model));
}
}
}

View File

@ -1,32 +0,0 @@
using Microsoft.Xna.Framework;
namespace KavTest.Extensions
{
public static class QuaternionExtensions
{
public static Vector3 EulerAngles(this Quaternion q)
{
Vector3 angles;
double sinr_cosp = 2 * (q.W * q.X + q.Y * q.Z);
double cosr_cosp = 1 - 2 * (q.X * q.X + q.Y * q.Y);
angles.X = (float) System.Math.Atan2(sinr_cosp, cosr_cosp);
double sinp = 2 * (q.W * q.Y - q.Z * q.X);
if (System.Math.Abs(sinp) >= 1)
{
angles.Y = (float) System.Math.PI / 2 * System.Math.Sign(sinp);
}
else
{
angles.Y = (float) System.Math.Asin(sinp);
}
double siny_cosp = 2 * (q.W * q.Z + q.X * q.Y);
double cosy_cosp = 1 - 2 * (q.Y * q.Y + q.Z * q.Z);
angles.Z = (float) System.Math.Atan2(siny_cosp, cosy_cosp);
return angles;
}
}
}

View File

@ -1,9 +0,0 @@
using Kav;
namespace KavTest
{
public class InstancedModelContainer
{
public MeshPart CubeModel { get; set; }
}
}

View File

@ -1,7 +1,6 @@
<Project>
<PropertyGroup>
<BaseIntermediateOutputPath>obj\$(MSBuildKavTest)</BaseIntermediateOutputPath>
<Platforms>x64</Platforms>
</PropertyGroup>
<Import Sdk="Microsoft.NET.Sdk" Project="Sdk.props" />
<PropertyGroup>

View File

@ -1,14 +1,12 @@
<Project>
<PropertyGroup>
<BaseIntermediateOutputPath>obj\$(MSBuildKavTest)</BaseIntermediateOutputPath>
<Platforms>x64</Platforms>
</PropertyGroup>
<Import Sdk="Microsoft.NET.Sdk" Project="Sdk.props" />
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net48</TargetFramework>
<TargetFramework>net461</TargetFramework>
<TargetName>KavTest</TargetName>
<PlatformTarget>x64</PlatformTarget>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>
<LangVersion>8.0</LangVersion>

View File

@ -16,7 +16,6 @@ namespace KavTest
class KavTestGame : Game
{
GraphicsDeviceManager graphics;
InstancedModelContainer InstancedModelContainer { get; } = new InstancedModelContainer();
WorldBuilder WorldBuilder { get; } = new WorldBuilder();
World World { get; set; }
@ -24,8 +23,8 @@ namespace KavTest
public KavTestGame()
{
graphics = new GraphicsDeviceManager(this);
graphics.PreferredBackBufferWidth = 1600;
graphics.PreferredBackBufferHeight = 900;
graphics.PreferredBackBufferWidth = 1280;
graphics.PreferredBackBufferHeight = 720;
graphics.PreferMultiSampling = false;
Content.RootDirectory = "Content";
@ -49,81 +48,6 @@ namespace KavTest
{
base.Initialize();
var rustyBallModel = Kav.ModelLoader.Load(
GraphicsDevice,
Smuggler.Importer.ImportGLB(
GraphicsDevice,
File.OpenRead("Content/rustysphere.glb")
)
);
rustyBallModel.DisableNormalMaps();
rustyBallModel.DisableAlbedoMaps();
rustyBallModel.DisableMetallicRoughnessMaps();
rustyBallModel.Albedo = Color.DeepSkyBlue;
rustyBallModel.Metallic = 0.5f;
rustyBallModel.Roughness = 0.284f;
var lightBulbModel = Kav.ModelLoader.Load(
GraphicsDevice,
Smuggler.Importer.ImportGLB(GraphicsDevice, File.OpenRead("Content/cube.glb"))
);
var floorModel = Kav.ModelLoader.Load(
GraphicsDevice,
Smuggler.Importer.ImportGLB(GraphicsDevice, File.OpenRead("Content/floor.glb"))
);
floorModel.Metallic = 0f;
floorModel.Roughness = 0f;
var avocadoModel = Kav.ModelLoader.Load(
GraphicsDevice,
Smuggler.Importer.ImportGLB(GraphicsDevice, File.OpenRead("Content/avocado.glb"))
);
var redCylinderModel = Kav.ModelLoader.Load(
GraphicsDevice,
Smuggler.Importer.ImportGLB(
GraphicsDevice,
File.OpenRead("Content/redcylinder.glb")
)
);
var pinkConeModel = Kav.ModelLoader.Load(
GraphicsDevice,
Smuggler.Importer.ImportGLB(
GraphicsDevice,
File.OpenRead("Content/pinkcone.glb")
)
);
var blueTorusModel = Kav.ModelLoader.Load(
GraphicsDevice,
Smuggler.Importer.ImportGLB(
GraphicsDevice,
File.OpenRead("Content/bluetorus.glb")
)
);
var cubeModel = Kav.ModelLoader.Load(
GraphicsDevice,
Smuggler.Importer.ImportGLB(
GraphicsDevice,
File.OpenRead("Content/cube.glb")
)
);
var toonShadeRuinsModel = Kav.ModelLoader.Load(
GraphicsDevice,
Smuggler.Importer.ImportGLB(
GraphicsDevice,
File.OpenRead("Content/ToonShadeRuins.glb")
)
);
InstancedModelContainer.CubeModel = cubeModel.Meshes[0].MeshParts[0];
InstancedModelContainer.CubeModel.Albedo = Color.Blue.ToVector3();
InstancedModelContainer.CubeModel.DisableAlbedoMap = true;
Texture2D.TextureDataFromStreamEXT(
File.OpenRead("Content/Skybox/front.jpg"),
out var skyboxSize,
@ -174,141 +98,14 @@ namespace KavTest
skybox.SetData(CubeMapFace.PositiveY, topPixels);
skybox.SetData(CubeMapFace.NegativeY, bottomPixels);
var mushroomGuyTexture = Texture2D.FromStream(GraphicsDevice, new FileStream("Content/Sprites/mushroomguy.png", FileMode.Open));
var mushroomGuyMeshSprite = new Kav.MeshSprite(
GraphicsDevice,
mushroomGuyTexture,
Kav.SpriteBillboardConstraint.None
);
WorldBuilder.AddEngine(new InputEngine(this));
WorldBuilder.AddEngine(new AngularVelocityEngine());
WorldBuilder.AddEngine(new MoveAlongCurve3DEngine());
WorldBuilder.AddEngine(new MotionEngine());
WorldBuilder.AddEngine(new CameraEngine());
WorldBuilder.AddEngine(new RustyBallSpawner(rustyBallModel));
WorldBuilder.AddEngine(new LightBulbSpawner(lightBulbModel));
WorldBuilder.AddEngine(new StaticModelSpawner());
WorldBuilder.AddEngine(new DirectionalLightSpawner());
WorldBuilder.AddEngine(new MeshSpriteSpawner());
WorldBuilder.AddGeneralRenderer(new SceneRenderer(GraphicsDevice, InstancedModelContainer), 0);
// WorldBuilder.SendMessage(new RustyBallSpawnMessage(
// new Transform3D(new Vector3(0, 0, 0)),
// new Vector3(1, 1, -1)
// ));
// WorldBuilder.SendMessage(new RustyBallSpawnMessage(
// new Transform3D(new Vector3(-3, 0, 0)),
// new Vector3(-1, 1, -1)
// ));
// WorldBuilder.SendMessage(new RustyBallSpawnMessage(
// new Transform3D(new Vector3(3, 0, 0)),
// new Vector3(-1, 1, 1)
// ));
// WorldBuilder.SendMessage(new StaticModelSpawnMessage(
// new Transform3D(new Vector3(0, 1, 0), Quaternion.Identity, new Vector3(1f, 1f, 1f)),
// rustyBallModel
// ));
WorldBuilder.SendMessage(new StaticModelSpawnMessage(
new Transform3D(
new Vector3(0, -15, 0),
Quaternion.Identity,
new Vector3(100f, 1f, 100f)
),
floorModel
));
WorldBuilder.SendMessage(new StaticModelSpawnMessage(
new Transform3D(
new Vector3(0, 3, 0),
Quaternion.CreateFromAxisAngle(
Vector3.Right,
-Microsoft.Xna.Framework.MathHelper.PiOver2
),
new Vector3(1f, 1f, 1f)
),
redCylinderModel
));
WorldBuilder.SendMessage(new StaticModelSpawnMessage(
new Transform3D(
new Vector3(-3, 3, 0),
Quaternion.CreateFromAxisAngle(
Vector3.Right,
-Microsoft.Xna.Framework.MathHelper.PiOver2
),
new Vector3(1f, 1f, 1f)
),
blueTorusModel
));
for (int i = -10; i < 10; i++)
{
for (int j = -10; j < 10; j++)
{
var entity = WorldBuilder.CreateEntity();
WorldBuilder.SetComponent(entity, new Transform3DComponent(
new Transform3D(
new Vector3(i * 5, -1, j * 5)
)
));
WorldBuilder.SetComponent(entity, new InstancedCubeComponent());
WorldBuilder.SetComponent(entity, new StaticComponent());
}
}
WorldBuilder.SendMessage(new MeshSpriteSpawnMessage(
new Transform3D(new Vector3(3, 0, 11), Quaternion.CreateFromAxisAngle(Vector3.Up, (float)System.Math.PI), Vector3.One),
mushroomGuyMeshSprite
));
// WorldBuilder.SendMessage(new StaticModelSpawnMessage(
// Transform3D.Identity,
// toonShadeRuinsModel
// ));
// var lightEntity = WorldBuilder.CreateEntity();
// WorldBuilder.SetComponent(
// lightEntity,
// new Transform3DComponent(
// new Transform3D(
// new Vector3(0, 3, 3),
// Quaternion.Identity,
// new Vector3(0.1f, 0.1f, 0.1f)
// )
// )
// );
// WorldBuilder.SetComponent(
// lightEntity,
// new PointLightComponent(Color.Blue, 1000f)
// );
// WorldBuilder.SetComponent(
// lightEntity,
// new ModelComponent(cubeModel)
// );
//for (var i = 0; i < 1; i++)
//{
// var start = new Vector3(-2, 5, 0);
// WorldBuilder.SendMessage(new LightBulbSpawnMessage(
// new Transform3D(start, Quaternion.Identity, new Vector3(0.1f, 0.1f, 0.1f)),
// RandomHelper.RandomColor(),
// 50f,
// RandomHelper.RandomLoop(new System.Numerics.Vector3(-2, 5, 0), 2, 5, 3, 10)
// ));
//}
var ambientLightEntity = WorldBuilder.CreateEntity();
WorldBuilder.SetComponent(ambientLightEntity, new AmbientLightComponent(
new Color(0.4f, 0.4f, 0.4f)
));
WorldBuilder.AddGeneralRenderer(new SceneRenderer(GraphicsDevice), 0);
WorldBuilder.SendMessage(new DirectionalLightSpawnMessage(
//Quaternion.CreateFromAxisAngle(Vector3.Right, Microsoft.Xna.Framework.MathHelper.Pi / 3f),
@ -317,18 +114,6 @@ namespace KavTest
0.7f
));
// 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();
WorldBuilder.SetComponent(cameraEntity, new ArcballTransformComponent(
new ArcballTransform(

View File

@ -1,19 +0,0 @@
using Encompass;
using Kav;
namespace KavTest.Messages
{
public struct MeshSpriteSpawnMessage : IMessage
{
public Transform3D Transform { get; }
public MeshSprite MeshSprite { get; }
public MeshSpriteSpawnMessage(
Transform3D transform,
MeshSprite meshSprite
) {
Transform = transform;
MeshSprite = meshSprite;
}
}
}

View File

@ -1,11 +0,0 @@
{
"profiles": {
"KavTest.Framework": {
"commandName": "Project",
"environmentVariables": {
"FNA3D_FORCE_DRIVER": "Vulkan"
},
"nativeDebugging": true
}
}
}

View File

@ -11,43 +11,9 @@ namespace KavTest.Renderers
{
public class SceneRenderer : GeneralRenderer
{
private GraphicsDevice GraphicsDevice { get; }
private SpriteBatch SpriteBatch { get; }
private InstancedModelContainer InstancedModelContainer { get; }
private Kav.Renderer Renderer { get; }
private RenderTargetBinding[] GBuffer { get; }
private RenderTarget2D GPosition { get; }
private RenderTarget2D GNormal { get; }
private RenderTarget2D GAlbedo { get; }
private RenderTarget2D GMetallicRoughness { get; }
private RenderTarget2D DeferredTarget { get; }
private RenderTarget2D BillboardTarget { get; }
private RenderTargetCube ShadowCubeMap { get; }
private DirectionalShadowMapData DirectionalShadowMapData { get; }
private readonly Dictionary<Kav.MeshPart, List<Matrix>> InstanceMap = new Dictionary<MeshPart, List<Matrix>>();
private IEnumerable<Matrix> CubeTransforms
{
get
{
foreach (var entity in ReadEntitiesAsEnumerable<InstancedCubeComponent>())
{
if (HasComponent<Transform3DComponent>(entity))
{
var transformComponent = GetComponent<Transform3DComponent>(entity);
yield return transformComponent.Transform.TransformMatrix;
}
}
}
}
private IEnumerable<(Kav.MeshPart, Matrix)> MeshPartTransforms
private IEnumerable<(Kav.Model, Matrix)> ModelTransforms
{
get
{
@ -56,22 +22,20 @@ namespace KavTest.Renderers
/* FIXME: this transformation should definitely not go here */
var transformComponent = GetComponent<Transform3DComponent>(entity);
var modelComponent = GetComponent<ModelComponent>(entity);
if (HasComponent<OverrideAlbedoComponent>(entity))
{
var overrideAlbedoComponent = GetComponent<OverrideAlbedoComponent>(entity);
foreach (var mesh in modelComponent.Model.Meshes)
{
foreach (var meshPart in mesh.MeshParts)
{
if (HasComponent<OverrideAlbedoComponent>(entity))
{
var overrideAlbedoComponent = GetComponent<OverrideAlbedoComponent>(entity);
meshPart.DisableAlbedoMap = true;
meshPart.Albedo = overrideAlbedoComponent.Color;
}
yield return (meshPart, transformComponent.Transform.TransformMatrix);
}
}
yield return (modelComponent.Model, transformComponent.Transform.TransformMatrix);
}
}
}
@ -109,9 +73,7 @@ namespace KavTest.Renderers
}
}
private Kav.DirectionalLight? DirectionalLight()
{
if (SomeComponent<DirectionalLightComponent>())
private Kav.DirectionalLight DirectionalLight()
{
var entity = ReadEntity<DirectionalLightComponent>();
var transformComponent = GetComponent<Transform3DComponent>(entity);
@ -123,116 +85,16 @@ namespace KavTest.Renderers
directionalLightComponent.Intensity
);
}
else
public SceneRenderer(GraphicsDevice graphicsDevice)
{
return null;
}
}
private IEnumerable<(MeshSprite, Matrix)> MeshSpriteTransforms()
{
foreach (var entity in ReadEntitiesAsEnumerable<MeshSpriteComponent>())
{
var transformComponent = GetComponent<Transform3DComponent>(entity);
var spriteComponent = GetComponent<MeshSpriteComponent>(entity);
yield return (spriteComponent.MeshSprite, transformComponent.Transform.TransformMatrix);
}
}
public SceneRenderer(
GraphicsDevice graphicsDevice,
InstancedModelContainer instancedModelContainer
) {
GraphicsDevice = graphicsDevice;
InstancedModelContainer = instancedModelContainer;
var renderDimensionsX = GraphicsDevice.PresentationParameters.BackBufferWidth;
var renderDimensionsY = GraphicsDevice.PresentationParameters.BackBufferHeight;
Renderer = new Kav.Renderer(
GraphicsDevice
);
DeferredTarget = new RenderTarget2D(
GraphicsDevice,
renderDimensionsX,
renderDimensionsY,
false,
SurfaceFormat.Color,
DepthFormat.Depth24Stencil8,
0,
RenderTargetUsage.PreserveContents
);
BillboardTarget = new RenderTarget2D(
GraphicsDevice,
renderDimensionsX,
renderDimensionsY,
false,
SurfaceFormat.Color,
DepthFormat.Depth24Stencil8,
0,
RenderTargetUsage.PreserveContents
);
GPosition = new RenderTarget2D(
GraphicsDevice,
renderDimensionsX,
renderDimensionsY,
false,
SurfaceFormat.Vector4,
DepthFormat.Depth24,
0,
RenderTargetUsage.PreserveContents
);
GNormal = new RenderTarget2D(
GraphicsDevice,
renderDimensionsX,
renderDimensionsY,
false,
SurfaceFormat.Vector4,
DepthFormat.None
);
GAlbedo = new RenderTarget2D(
GraphicsDevice,
renderDimensionsX,
renderDimensionsY,
false,
SurfaceFormat.Color,
DepthFormat.None
);
GMetallicRoughness = new RenderTarget2D(
GraphicsDevice,
renderDimensionsX,
renderDimensionsY,
false,
SurfaceFormat.HalfVector2,
DepthFormat.None
);
GBuffer = new RenderTargetBinding[4] {
new RenderTargetBinding(GPosition),
new RenderTargetBinding(GNormal),
new RenderTargetBinding(GAlbedo),
new RenderTargetBinding(GMetallicRoughness)
};
ShadowCubeMap = Kav.Renderer.CreateShadowCubeMap(
GraphicsDevice,
2048
);
DirectionalShadowMapData = Kav.Renderer.CreateDirectionalShadowMaps(
graphicsDevice,
2048,
4
graphicsDevice.PresentationParameters.BackBufferWidth,
graphicsDevice.PresentationParameters.BackBufferHeight,
4,
4096
);
SpriteBatch = new SpriteBatch(GraphicsDevice);
}
public override void Render()
@ -253,156 +115,45 @@ namespace KavTest.Renderers
cameraComponent.FarPlane
);
GraphicsDevice.SetRenderTargets(GBuffer);
GraphicsDevice.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, Color.Black, 1f, 0);
// if (SomeComponent<DirectionalLightComponent>())
// {
// ref readonly var directionalLightEntity = ref ReadEntity<DirectionalLightComponent>();
// ref readonly var directionalLightTransformComponent = ref GetComponent<Transform3DComponent>(directionalLightEntity);
// ref readonly var directionalLightComponent = ref GetComponent<DirectionalLightComponent>(directionalLightEntity);
GraphicsDevice.SetRenderTarget(DeferredTarget);
GraphicsDevice.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, Color.Black, 1f, 0);
GraphicsDevice.DepthStencilState = DepthStencilState.Default;
// Renderer.DepthRender(
// ModelTransforms,
// new Kav.DirectionalLight(
// directionalLightTransformComponent.Transform.Forward,
// directionalLightComponent.Color,
// directionalLightComponent.Intensity
// )
// );
// }
Renderer.RenderGBufferInstanced(
GBuffer,
DeferredTarget,
camera,
InstancedModelContainer.CubeModel,
CubeTransforms
);
Renderer.RenderGBufferIndexed(
GBuffer,
camera,
MeshPartTransforms
);
Renderer.RenderDepthIndexed(
DeferredTarget,
camera,
MeshPartTransforms
);
Renderer.RenderAmbientLight(
DeferredTarget,
GPosition,
GAlbedo,
AmbientLight
);
foreach (var pointLight in PointLights)
{
foreach (CubeMapFace face in Enum.GetValues(typeof(CubeMapFace)))
{
GraphicsDevice.SetRenderTarget(ShadowCubeMap, face);
GraphicsDevice.Clear(Color.White);
}
Renderer.RenderPointShadowMapIndexed(
ShadowCubeMap,
camera,
MeshPartTransforms,
pointLight
);
Renderer.RenderPointLight(
DeferredTarget,
GPosition,
GAlbedo,
GNormal,
GMetallicRoughness,
ShadowCubeMap,
camera,
pointLight
);
}
var directionalLight = DirectionalLight();
if (directionalLight.HasValue)
{
DirectionalShadowMapData.Clear(GraphicsDevice);
Renderer.PrepareDirectionalShadowData(
DirectionalShadowMapData,
camera,
directionalLight.Value
);
Renderer.RenderDirectionalShadowsIndexed(
DirectionalShadowMapData,
MeshPartTransforms
);
Renderer.RenderDirectionalShadowsInstanced(
DirectionalShadowMapData,
InstancedModelContainer.CubeModel,
CubeTransforms
);
Renderer.RenderDirectionalLight(
DeferredTarget,
GPosition,
GAlbedo,
GNormal,
GMetallicRoughness,
DirectionalShadowMapData,
camera,
directionalLight.Value
);
}
Renderer.RenderSkybox(
DeferredTarget,
// Renderer.DeferredRender(
// camera,
// ModelTransforms,
// AmbientLight,
// PointLights,
// DirectionalLight()
// );
Renderer.DeferredToonRender(
camera,
ModelTransforms,
AmbientLight,
DirectionalLight(),
ReadComponent<SkyboxComponent>().Skybox
);
Renderer.MeshSpriteRender(
DeferredTarget,
camera,
MeshSpriteTransforms(),
AmbientLight,
PointLights,
DirectionalLight()
);
GraphicsDevice.SetRenderTarget(null);
SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null);
SpriteBatch.Draw(DeferredTarget, Vector2.Zero, Color.White);
//SpriteBatch.Draw(BillboardTarget, Vector2.Zero, Color.White);
SpriteBatch.End();
}
}
private void CollectInstances()
{
foreach (var list in InstanceMap.Values)
{
list.Clear();
}
foreach (var modelEntity in ReadEntities<ModelComponent>())
{
if (HasComponent<Transform3DComponent>(modelEntity))
{
var modelComponent = GetComponent<ModelComponent>(modelEntity);
if (modelComponent.Instanced)
{
var transformComponent = GetComponent<Transform3DComponent>(modelEntity);
foreach (var mesh in modelComponent.Model.Meshes)
{
foreach (var meshPart in mesh.MeshParts)
{
if (!InstanceMap.ContainsKey(meshPart))
{
InstanceMap.Add(meshPart, new List<Matrix>());
}
else
InstanceMap[meshPart].Add(transformComponent.Transform.TransformMatrix);
}
}
}
}
// foreach (var directionalLight in DirectionalLights)
// {
// Renderer.DepthRender(
// ModelTransforms,
// directionalLight
// );
// }
}
}
}

@ -1 +1 @@
Subproject commit 094cf4b3d2cc5197cc8e0719f0dd368d50afe00e
Subproject commit 2f341aaeae07d2cb9b8f9be0ff5688543dcd582b

@ -1 +1 @@
Subproject commit f1120a2572a7aa16b859da81bd6a4a5e7a8ea19b
Subproject commit 1a14f2595ad83dae3d6a715506bf2f735168416c

@ -1 +1 @@
Subproject commit ae6794e71bab538cc82e75f77ab0ed07a993320a
Subproject commit 4c78ed3d392af9d5c004ad1f6f133d94f1bd36d9

@ -1 +1 @@
Subproject commit 4538c0f3c9bbff1f17633eff897b61998e5fec3d
Subproject commit bdd9f595493609444d8ebb31b9d07b7ef320eafb