Merge remote-tracking branch 'origin/GameServer' into Camera
Conflicts: Code/Game/DanBiasGame/GameClientState/GameState.cpp
This commit is contained in:
commit
322f752deb
224
Code/DanBias.sln
224
Code/DanBias.sln
|
@ -5,14 +5,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterGraphics", "OysterGra
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterMath", "OysterMath\OysterMath.vcxproj", "{F10CBC03-9809-4CBA-95D8-327C287B18EE}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterMath", "OysterMath\OysterMath.vcxproj", "{F10CBC03-9809-4CBA-95D8-327C287B18EE}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterPhysics3D", "OysterPhysics3D\OysterPhysics3D.vcxproj", "{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sound", "Sound\Sound.vcxproj", "{34D6295A-00DD-4B1A-8258-97DA2818EC26}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WindowManager", "WindowManager\WindowManager.vcxproj", "{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Input", "Input\Input.vcxproj", "{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Misc", "Misc\Misc.vcxproj", "{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Misc", "Misc\Misc.vcxproj", "{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Network", "Network", "{C27B926E-B3EF-4990-8822-47580E43A0BE}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Network", "Network", "{C27B926E-B3EF-4990-8822-47580E43A0BE}"
|
||||||
|
@ -23,25 +15,36 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterNetworkServer", "Netw
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetworkDependencies", "Network\NetworkDependencies\NetworkDependencies.vcxproj", "{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetworkDependencies", "Network\NetworkDependencies\NetworkDependencies.vcxproj", "{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GamePhysics", "GamePhysics\GamePhysics.vcxproj", "{104FA3E9-94D9-4E1D-A941-28A03BC8A095}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tester", "Tester\Tester.vcxproj", "{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Game", "Game", "{B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aDanBiasGameLauncher", "Game\aDanBiasGameLauncher\aDanBiasGameLauncher.vcxproj", "{666FEA52-975F-41CD-B224-B19AF3C0ABBA}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasGame", "Game\DanBiasGame\DanBiasGame.vcxproj", "{2A1BC987-AF42-4500-802D-89CD32FC1309}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasGame", "Game\DanBiasGame\DanBiasGame.vcxproj", "{2A1BC987-AF42-4500-802D-89CD32FC1309}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Game", "Game", "{20720CA7-795C-45AD-A302-9383A6DD503A}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameLogic", "Game\GameLogic\GameLogic.vcxproj", "{B1195BB9-B3A5-47F0-906C-8DEA384D1520}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasLauncher", "Game\DanBiasLauncher\DanBiasLauncher.vcxproj", "{8690FDDF-C5B7-4C42-A337-BD5243F29B85}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasLauncher", "Game\DanBiasLauncher\DanBiasLauncher.vcxproj", "{8690FDDF-C5B7-4C42-A337-BD5243F29B85}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetworkAPI", "Network\NetworkAPI\NetworkAPI.vcxproj", "{460D625F-2AC9-4559-B809-0BA89CEAEDF4}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameProtocols", "Game\GameProtocols\GameProtocols.vcxproj", "{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasServerLauncher", "Game\DanBiasServerLauncher\DanBiasServerLauncher.vcxproj", "{060B1890-CBF3-4808-BA99-A4776222093B}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasServerLauncher", "Game\DanBiasServerLauncher\DanBiasServerLauncher.vcxproj", "{060B1890-CBF3-4808-BA99-A4776222093B}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameLogic", "Game\GameLogic\GameLogic.vcxproj", "{B1195BB9-B3A5-47F0-906C-8DEA384D1520}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameProtocols", "Game\GameProtocols\GameProtocols.vcxproj", "{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}"
|
||||||
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameServer", "Game\GameServer\GameServer.vcxproj", "{143BD516-20A1-4890-A3E4-F8BFD02220E7}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameServer", "Game\GameServer\GameServer.vcxproj", "{143BD516-20A1-4890-A3E4-F8BFD02220E7}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aDanBiasGameLauncher", "Game\aDanBiasGameLauncher\aDanBiasGameLauncher.vcxproj", "{666FEA52-975F-41CD-B224-B19AF3C0ABBA}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetworkAPI", "Network\NetworkAPI\NetworkAPI.vcxproj", "{460D625F-2AC9-4559-B809-0BA89CEAEDF4}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GamePhysics", "GamePhysics\GamePhysics.vcxproj", "{104FA3E9-94D9-4E1D-A941-28A03BC8A095}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Input", "Input\Input.vcxproj", "{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameServer", "Game\GameServer\GameServer.vcxproj", "{143BD516-20A1-4890-A3E4-F8BFD02220E7}"
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterPhysics3D", "OysterPhysics3D\OysterPhysics3D.vcxproj", "{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sound", "Sound\Sound.vcxproj", "{34D6295A-00DD-4B1A-8258-97DA2818EC26}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WindowManager", "WindowManager\WindowManager.vcxproj", "{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Physics", "Physics", "{0D86E569-9C74-47F0-BDB2-390C0C9A084B}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Physics", "Physics", "{0D86E569-9C74-47F0-BDB2-390C0C9A084B}"
|
||||||
EndProject
|
EndProject
|
||||||
|
@ -61,8 +64,8 @@ Global
|
||||||
RelWithDebInfo|x64 = RelWithDebInfo|x64
|
RelWithDebInfo|x64 = RelWithDebInfo|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Mixed Platforms.ActiveCfg = Release|x64
|
||||||
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Mixed Platforms.Build.0 = Release|x64
|
||||||
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.ActiveCfg = Debug|Win32
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.Build.0 = Debug|Win32
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.ActiveCfg = Debug|x64
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
@ -75,6 +78,11 @@ Global
|
||||||
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|x64.Build.0 = Release|x64
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|x64.Build.0 = Release|x64
|
||||||
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.Build.0 = Release|Win32
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.Deploy.0 = Debug|Win32
|
||||||
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.ActiveCfg = Release|x64
|
||||||
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.Build.0 = Release|x64
|
||||||
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.ActiveCfg = Release|x64
|
||||||
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.Build.0 = Release|x64
|
||||||
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Win32.ActiveCfg = Release|Win32
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Win32.Build.0 = Release|Win32
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Win32.Build.0 = Release|Win32
|
||||||
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|x64.ActiveCfg = Release|x64
|
{0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
@ -99,6 +107,15 @@ Global
|
||||||
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|x64.Build.0 = Release|x64
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|x64.Build.0 = Release|x64
|
||||||
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.Build.0 = Release|Win32
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Mixed Platforms.ActiveCfg = Release|x64
|
||||||
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Mixed Platforms.Build.0 = Release|x64
|
||||||
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.Deploy.0 = Debug|Win32
|
||||||
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.ActiveCfg = Release|x64
|
||||||
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.Build.0 = Release|x64
|
||||||
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.ActiveCfg = Release|x64
|
||||||
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.Build.0 = Release|x64
|
||||||
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Win32.ActiveCfg = Release|Win32
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Win32.Build.0 = Release|Win32
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Win32.Build.0 = Release|Win32
|
||||||
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|x64.ActiveCfg = Release|x64
|
{F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
@ -219,6 +236,15 @@ Global
|
||||||
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|x64.Build.0 = Release|x64
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|x64.Build.0 = Release|x64
|
||||||
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.Build.0 = Release|Win32
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.ActiveCfg = Release|x64
|
||||||
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.Build.0 = Release|x64
|
||||||
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Deploy.0 = Debug|Win32
|
||||||
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.ActiveCfg = Release|x64
|
||||||
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.Build.0 = Release|x64
|
||||||
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.ActiveCfg = Release|x64
|
||||||
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.Build.0 = Release|x64
|
||||||
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Win32.ActiveCfg = Release|Win32
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Win32.Build.0 = Release|Win32
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Win32.Build.0 = Release|Win32
|
||||||
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|x64.ActiveCfg = Release|x64
|
{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
@ -240,6 +266,14 @@ Global
|
||||||
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|x64.ActiveCfg = Release|x64
|
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||||
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.Build.0 = Release|Win32
|
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.ActiveCfg = Release|x64
|
||||||
|
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.Build.0 = Release|x64
|
||||||
|
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.ActiveCfg = Release|x64
|
||||||
|
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.Build.0 = Release|x64
|
||||||
|
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.ActiveCfg = Release|x64
|
||||||
|
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.Build.0 = Release|x64
|
||||||
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Win32.ActiveCfg = Release|Win32
|
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Win32.Build.0 = Release|Win32
|
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Win32.Build.0 = Release|Win32
|
||||||
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|x64.ActiveCfg = Release|x64
|
{838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
@ -258,6 +292,14 @@ Global
|
||||||
{6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|x64.ActiveCfg = Release|x64
|
{6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||||
{6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
{6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
{6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.Build.0 = Release|Win32
|
{6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.ActiveCfg = Release|x64
|
||||||
|
{6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.Build.0 = Release|x64
|
||||||
|
{6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.ActiveCfg = Release|x64
|
||||||
|
{6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.Build.0 = Release|x64
|
||||||
|
{6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.ActiveCfg = Release|x64
|
||||||
|
{6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.Build.0 = Release|x64
|
||||||
{6A066806-F43F-4B31-A4E3-57179674F460}.Release|Win32.ActiveCfg = Release|Win32
|
{6A066806-F43F-4B31-A4E3-57179674F460}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{6A066806-F43F-4B31-A4E3-57179674F460}.Release|Win32.Build.0 = Release|Win32
|
{6A066806-F43F-4B31-A4E3-57179674F460}.Release|Win32.Build.0 = Release|Win32
|
||||||
{6A066806-F43F-4B31-A4E3-57179674F460}.Release|x64.ActiveCfg = Release|x64
|
{6A066806-F43F-4B31-A4E3-57179674F460}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
@ -276,6 +318,14 @@ Global
|
||||||
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|x64.ActiveCfg = Release|x64
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|x64.ActiveCfg = Release|x64
|
||||||
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.Build.0 = Release|Win32
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.ActiveCfg = Release|x64
|
||||||
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.Build.0 = Release|x64
|
||||||
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.ActiveCfg = Release|x64
|
||||||
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.Build.0 = Release|x64
|
||||||
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.ActiveCfg = Release|x64
|
||||||
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.Build.0 = Release|x64
|
||||||
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Win32.ActiveCfg = Release|Win32
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Win32.Build.0 = Release|Win32
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Win32.Build.0 = Release|Win32
|
||||||
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|x64.ActiveCfg = Release|x64
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
@ -307,6 +357,30 @@ Global
|
||||||
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Win32.Build.0 = Release|Win32
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Win32.Build.0 = Release|Win32
|
||||||
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||||
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|x64.Build.0 = Release|x64
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||||
|
{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
|
{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.ActiveCfg = Release|Win32
|
||||||
|
{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.Build.0 = Release|Win32
|
||||||
|
{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
|
{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.ActiveCfg = Release|Win32
|
||||||
|
{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.Build.0 = Release|Win32
|
||||||
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||||
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||||
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.Build.0 = Release|x64
|
||||||
{2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
{2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||||
{2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
{2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||||
{2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Win32.ActiveCfg = Debug|Win32
|
{2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
@ -451,6 +525,30 @@ Global
|
||||||
{060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Win32.Build.0 = Release|Win32
|
{060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Win32.Build.0 = Release|Win32
|
||||||
{060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
{060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||||
{060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.Build.0 = Release|x64
|
{060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||||
|
{B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||||
|
{B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||||
|
{B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
|
{B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|x64.Build.0 = Release|x64
|
||||||
|
{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||||
|
{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||||
|
{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
|
{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.Build.0 = Release|x64
|
||||||
{143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
{143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||||
{143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
{143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||||
{143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Win32.ActiveCfg = Debug|Win32
|
{143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
@ -499,6 +597,78 @@ Global
|
||||||
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.Build.0 = Release|Win32
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.Build.0 = Release|Win32
|
||||||
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.ActiveCfg = Release|x64
|
||||||
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.Build.0 = Release|x64
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.Build.0 = Release|x64
|
||||||
|
{460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||||
|
{460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||||
|
{460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
|
{460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|x64.Build.0 = Release|x64
|
||||||
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||||
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||||
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|x64.Build.0 = Release|x64
|
||||||
|
{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||||
|
{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||||
|
{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
|
{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|x64.Build.0 = Release|x64
|
||||||
|
{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||||
|
{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||||
|
{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
|
{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|x64.Build.0 = Release|x64
|
||||||
|
{34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||||
|
{34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||||
|
{34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
|
{34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|x64.Build.0 = Release|x64
|
||||||
|
{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||||
|
{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||||
|
{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
|
{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|x64.Build.0 = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
@ -508,12 +678,12 @@ Global
|
||||||
{6A066806-F43F-4B31-A4E3-57179674F460} = {C27B926E-B3EF-4990-8822-47580E43A0BE}
|
{6A066806-F43F-4B31-A4E3-57179674F460} = {C27B926E-B3EF-4990-8822-47580E43A0BE}
|
||||||
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50} = {C27B926E-B3EF-4990-8822-47580E43A0BE}
|
{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50} = {C27B926E-B3EF-4990-8822-47580E43A0BE}
|
||||||
{460D625F-2AC9-4559-B809-0BA89CEAEDF4} = {C27B926E-B3EF-4990-8822-47580E43A0BE}
|
{460D625F-2AC9-4559-B809-0BA89CEAEDF4} = {C27B926E-B3EF-4990-8822-47580E43A0BE}
|
||||||
{2A1BC987-AF42-4500-802D-89CD32FC1309} = {20720CA7-795C-45AD-A302-9383A6DD503A}
|
{666FEA52-975F-41CD-B224-B19AF3C0ABBA} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B}
|
||||||
{B1195BB9-B3A5-47F0-906C-8DEA384D1520} = {20720CA7-795C-45AD-A302-9383A6DD503A}
|
{2A1BC987-AF42-4500-802D-89CD32FC1309} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B}
|
||||||
{8690FDDF-C5B7-4C42-A337-BD5243F29B85} = {20720CA7-795C-45AD-A302-9383A6DD503A}
|
{8690FDDF-C5B7-4C42-A337-BD5243F29B85} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B}
|
||||||
{DA2AA800-ED64-4649-8B3B-E7F1E3968B78} = {20720CA7-795C-45AD-A302-9383A6DD503A}
|
{060B1890-CBF3-4808-BA99-A4776222093B} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B}
|
||||||
{060B1890-CBF3-4808-BA99-A4776222093B} = {20720CA7-795C-45AD-A302-9383A6DD503A}
|
{B1195BB9-B3A5-47F0-906C-8DEA384D1520} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B}
|
||||||
{143BD516-20A1-4890-A3E4-F8BFD02220E7} = {20720CA7-795C-45AD-A302-9383A6DD503A}
|
{DA2AA800-ED64-4649-8B3B-E7F1E3968B78} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B}
|
||||||
{666FEA52-975F-41CD-B224-B19AF3C0ABBA} = {20720CA7-795C-45AD-A302-9383A6DD503A}
|
{143BD516-20A1-4890-A3E4-F8BFD02220E7} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
|
@ -1,212 +1,197 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<diagram program="umlet" version="12.2">
|
<diagram program="umlet" version="12.2">
|
||||||
<zoom_level>11</zoom_level>
|
<zoom_level>7</zoom_level>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>847</x>
|
<x>728</x>
|
||||||
<y>363</y>
|
<y>413</y>
|
||||||
<w>132</w>
|
<w>91</w>
|
||||||
<h>33</h>
|
<h>21</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>Graphics</panel_attributes>
|
<panel_attributes>Graphics <<module>>
|
||||||
|
bg=orange</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>561</x>
|
<x>546</x>
|
||||||
<y>363</y>
|
<y>413</y>
|
||||||
<w>132</w>
|
<w>84</w>
|
||||||
<h>33</h>
|
<h>21</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>Sound</panel_attributes>
|
<panel_attributes>Sound<<?>></panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>671</x>
|
<x>616</x>
|
||||||
<y>209</y>
|
<y>322</y>
|
||||||
<w>132</w>
|
<w>84</w>
|
||||||
<h>33</h>
|
<h>21</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>Physics</panel_attributes>
|
<panel_attributes>Physics <<module>>
|
||||||
|
bg=orange</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>858</x>
|
<x>735</x>
|
||||||
<y>132</y>
|
<y>238</y>
|
||||||
<w>121</w>
|
<w>77</w>
|
||||||
<h>33</h>
|
<h>21</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>Game client</panel_attributes>
|
<panel_attributes>Game client <<dll>>
|
||||||
|
bg=red</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>484</x>
|
<x>616</x>
|
||||||
<y>209</y>
|
<y>287</y>
|
||||||
<w>154</w>
|
<w>98</w>
|
||||||
<h>33</h>
|
<h>21</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>Gamelogic</panel_attributes>
|
<panel_attributes>Gamelogic <<dll>>
|
||||||
|
bg=red</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>506</x>
|
<x>504</x>
|
||||||
<y>132</y>
|
<y>238</y>
|
||||||
<w>121</w>
|
<w>84</w>
|
||||||
<h>33</h>
|
<h>21</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>Game server</panel_attributes>
|
<panel_attributes>Game server <<dll>>
|
||||||
|
bg=red</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>671</x>
|
<x>616</x>
|
||||||
<y>132</y>
|
<y>238</y>
|
||||||
<w>132</w>
|
<w>84</w>
|
||||||
<h>33</h>
|
<h>21</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>Network</panel_attributes>
|
<panel_attributes>Network <<module>>
|
||||||
|
bg=orange</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>704</x>
|
<x>637</x>
|
||||||
<y>363</y>
|
<y>413</y>
|
||||||
<w>132</w>
|
<w>84</w>
|
||||||
<h>33</h>
|
<h>21</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>Input</panel_attributes>
|
<panel_attributes>Input<<lib>>
|
||||||
|
bg=blue</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>495</x>
|
<x>714</x>
|
||||||
<y>55</y>
|
<y>182</y>
|
||||||
<w>176</w>
|
<w>98</w>
|
||||||
<h>44</h>
|
<h>28</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>DanBiasClientLauncher
|
<panel_attributes>GameLauncher <<exe>>
|
||||||
bg=green</panel_attributes>
|
bg=green</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>880</x>
|
<x>749</x>
|
||||||
<y>132</y>
|
<y>238</y>
|
||||||
<w>54</w>
|
<w>34</w>
|
||||||
<h>252</h>
|
<h>188</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<-</panel_attributes>
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
<additional_attributes>33;231;33;209;33;33</additional_attributes>
|
<additional_attributes>21;175;21;161;21;21</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>583</x>
|
<x>560</x>
|
||||||
<y>132</y>
|
<y>238</y>
|
||||||
<w>351</w>
|
<w>223</w>
|
||||||
<h>252</h>
|
<h>188</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<-</panel_attributes>
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
<additional_attributes>33;231;33;209;330;209;330;33</additional_attributes>
|
<additional_attributes>21;175;21;161;210;161;210;21</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>528</x>
|
<x>525</x>
|
||||||
<y>132</y>
|
<y>238</y>
|
||||||
<w>54</w>
|
<w>146</w>
|
||||||
<h>98</h>
|
<h>62</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<-</panel_attributes>
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
<additional_attributes>33;77;33;33</additional_attributes>
|
<additional_attributes>133;49;133;35;21;35;21;21</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>594</x>
|
<x>567</x>
|
||||||
<y>110</y>
|
<y>224</y>
|
||||||
<w>98</w>
|
<w>62</w>
|
||||||
<h>54</h>
|
<h>34</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<-</panel_attributes>
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
<additional_attributes>77;33;33;33</additional_attributes>
|
<additional_attributes>49;21;21;21</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>605</x>
|
<x>637</x>
|
||||||
<y>187</y>
|
<y>287</y>
|
||||||
<w>87</w>
|
<w>34</w>
|
||||||
<h>54</h>
|
<h>48</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<-</panel_attributes>
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
<additional_attributes>66;33;33;33</additional_attributes>
|
<additional_attributes>21;35;21;21</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>737</x>
|
<x>658</x>
|
||||||
<y>132</y>
|
<y>238</y>
|
||||||
<w>197</w>
|
<w>125</w>
|
||||||
<h>252</h>
|
<h>188</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<-</panel_attributes>
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
<additional_attributes>33;231;33;209;176;209;176;33</additional_attributes>
|
<additional_attributes>21;175;21;161;112;161;112;21</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>770</x>
|
<x>679</x>
|
||||||
<y>110</y>
|
<y>224</y>
|
||||||
<w>109</w>
|
<w>69</w>
|
||||||
<h>54</h>
|
<h>34</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<-</panel_attributes>
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
<additional_attributes>33;33;88;33</additional_attributes>
|
<additional_attributes>21;21;56;21</additional_attributes>
|
||||||
</element>
|
|
||||||
<element>
|
|
||||||
<type>com.umlet.element.Relation</type>
|
|
||||||
<coordinates>
|
|
||||||
<x>880</x>
|
|
||||||
<y>66</y>
|
|
||||||
<w>54</w>
|
|
||||||
<h>87</h>
|
|
||||||
</coordinates>
|
|
||||||
<panel_attributes>lt=>-</panel_attributes>
|
|
||||||
<additional_attributes>33;33;33;66</additional_attributes>
|
|
||||||
</element>
|
|
||||||
<element>
|
|
||||||
<type>com.umlet.element.Relation</type>
|
|
||||||
<coordinates>
|
|
||||||
<x>528</x>
|
|
||||||
<y>66</y>
|
|
||||||
<w>54</w>
|
|
||||||
<h>87</h>
|
|
||||||
</coordinates>
|
|
||||||
<panel_attributes>lt=>-</panel_attributes>
|
|
||||||
<additional_attributes>33;33;33;66</additional_attributes>
|
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Package</type>
|
<type>com.umlet.element.Package</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>440</x>
|
<x>455</x>
|
||||||
<y>22</y>
|
<y>161</y>
|
||||||
<w>550</w>
|
<w>371</w>
|
||||||
<h>396</h>
|
<h>287</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>GameEngine</panel_attributes>
|
<panel_attributes>GameEngine</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
|
@ -214,21 +199,21 @@ bg=green</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>880</x>
|
<x>749</x>
|
||||||
<y>363</y>
|
<y>413</y>
|
||||||
<w>54</w>
|
<w>34</w>
|
||||||
<h>164</h>
|
<h>104</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<<.</panel_attributes>
|
<panel_attributes>lt=<<.</panel_attributes>
|
||||||
<additional_attributes>33;33;33;143</additional_attributes>
|
<additional_attributes>21;21;21;91</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Package</type>
|
<type>com.umlet.element.Package</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>891</x>
|
<x>756</x>
|
||||||
<y>506</y>
|
<y>504</y>
|
||||||
<w>319</w>
|
<w>203</w>
|
||||||
<h>220</h>
|
<h>140</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>Graphics</panel_attributes>
|
<panel_attributes>Graphics</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
|
@ -236,10 +221,10 @@ bg=green</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>902</x>
|
<x>763</x>
|
||||||
<y>539</y>
|
<y>525</y>
|
||||||
<w>297</w>
|
<w>189</w>
|
||||||
<h>176</h>
|
<h>112</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes><<interface>>
|
<panel_attributes><<interface>>
|
||||||
OysterGfx
|
OysterGfx
|
||||||
|
@ -256,10 +241,10 @@ Release(resource :Model*) :void</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Package</type>
|
<type>com.umlet.element.Package</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>561</x>
|
<x>546</x>
|
||||||
<y>506</y>
|
<y>504</y>
|
||||||
<w>308</w>
|
<w>196</w>
|
||||||
<h>242</h>
|
<h>154</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>Input</panel_attributes>
|
<panel_attributes>Input</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
|
@ -267,21 +252,21 @@ Release(resource :Model*) :void</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>649</x>
|
<x>602</x>
|
||||||
<y>363</y>
|
<y>413</y>
|
||||||
<w>142</w>
|
<w>90</w>
|
||||||
<h>175</h>
|
<h>111</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<<.</panel_attributes>
|
<panel_attributes>lt=<<.</panel_attributes>
|
||||||
<additional_attributes>121;33;121;154;33;154</additional_attributes>
|
<additional_attributes>77;21;77;98;21;98</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>572</x>
|
<x>553</x>
|
||||||
<y>539</y>
|
<y>525</y>
|
||||||
<w>286</w>
|
<w>182</w>
|
||||||
<h>198</h>
|
<h>126</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes><<interface>>
|
<panel_attributes><<interface>>
|
||||||
RawInput
|
RawInput
|
||||||
|
@ -299,32 +284,33 @@ Enable(Enable :bool) :void</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>451</x>
|
<x>462</x>
|
||||||
<y>363</y>
|
<y>413</y>
|
||||||
<w>99</w>
|
<w>77</w>
|
||||||
<h>33</h>
|
<h>21</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>Window API</panel_attributes>
|
<panel_attributes>Window API<<lib>>
|
||||||
|
bg=blue</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>462</x>
|
<x>483</x>
|
||||||
<y>132</y>
|
<y>238</y>
|
||||||
<w>472</w>
|
<w>300</w>
|
||||||
<h>252</h>
|
<h>188</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<-</panel_attributes>
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
<additional_attributes>33;231;33;209;451;209;451;33</additional_attributes>
|
<additional_attributes>21;175;21;161;287;161;287;21</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Package</type>
|
<type>com.umlet.element.Package</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>176</x>
|
<x>301</x>
|
||||||
<y>506</y>
|
<y>504</y>
|
||||||
<w>374</w>
|
<w>238</w>
|
||||||
<h>242</h>
|
<h>154</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>Sound</panel_attributes>
|
<panel_attributes>Sound</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
|
@ -332,10 +318,10 @@ Enable(Enable :bool) :void</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>187</x>
|
<x>308</x>
|
||||||
<y>539</y>
|
<y>525</y>
|
||||||
<w>352</w>
|
<w>224</w>
|
||||||
<h>121</h>
|
<h>77</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes><<interface>>
|
<panel_attributes><<interface>>
|
||||||
SoundWrapper
|
SoundWrapper
|
||||||
|
@ -349,10 +335,10 @@ Release(Resource :ResourceHandle*) :void</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>187</x>
|
<x>308</x>
|
||||||
<y>693</y>
|
<y>623</y>
|
||||||
<w>352</w>
|
<w>224</w>
|
||||||
<h>44</h>
|
<h>28</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes><<API>>
|
<panel_attributes><<API>>
|
||||||
--
|
--
|
||||||
|
@ -362,79 +348,152 @@ FMOD</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>330</x>
|
<x>399</x>
|
||||||
<y>627</y>
|
<y>581</y>
|
||||||
<w>54</w>
|
<w>34</w>
|
||||||
<h>87</h>
|
<h>55</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<<.</panel_attributes>
|
<panel_attributes>lt=<<.</panel_attributes>
|
||||||
<additional_attributes>33;66;33;33</additional_attributes>
|
<additional_attributes>21;42;21;21</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>286</x>
|
<x>371</x>
|
||||||
<y>363</y>
|
<y>413</y>
|
||||||
<w>362</w>
|
<w>230</w>
|
||||||
<h>175</h>
|
<h>111</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<<.</panel_attributes>
|
<panel_attributes>lt=<<.</panel_attributes>
|
||||||
<additional_attributes>341;33;341;88;253;88;253;154;33;154</additional_attributes>
|
<additional_attributes>217;21;217;56;161;56;161;98;21;98</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>781</x>
|
<x>476</x>
|
||||||
<y>55</y>
|
<y>329</y>
|
||||||
<w>198</w>
|
<w>84</w>
|
||||||
<h>44</h>
|
<h>28</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>DanBiasServerLauncher
|
<panel_attributes>Math <<lib>>
|
||||||
|
--
|
||||||
|
/Is used globaly/
|
||||||
|
bg=blue</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<type>com.umlet.element.Relation</type>
|
||||||
|
<coordinates>
|
||||||
|
<x>539</x>
|
||||||
|
<y>238</y>
|
||||||
|
<w>237</w>
|
||||||
|
<h>125</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
|
<additional_attributes>21;112;224;112;224;21</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<type>com.umlet.element.Class</type>
|
||||||
|
<coordinates>
|
||||||
|
<x>476</x>
|
||||||
|
<y>294</y>
|
||||||
|
<w>77</w>
|
||||||
|
<h>28</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>Misc <<lib>>
|
||||||
|
--
|
||||||
|
/Is used globaly/
|
||||||
|
bg=blue</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<type>com.umlet.element.Relation</type>
|
||||||
|
<coordinates>
|
||||||
|
<x>539</x>
|
||||||
|
<y>273</y>
|
||||||
|
<w>90</w>
|
||||||
|
<h>76</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
|
<additional_attributes>21;63;56;63;56;21;77;21</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>105</x>
|
||||||
|
<y>168</y>
|
||||||
|
<w>245</w>
|
||||||
|
<h>140</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>/*HISTORY*/
|
||||||
|
--
|
||||||
|
10/2-2014
|
||||||
|
Renamed DanBiasClientLauncher -> GameLauncher
|
||||||
|
Removed DanBiasServerLauncher - connected to GameClient
|
||||||
|
Added missing cconnections
|
||||||
|
Specified what type of box and added a colour
|
||||||
|
--
|
||||||
|
elementstyle=wordwrap
|
||||||
|
bg=gray
|
||||||
|
</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<type>com.umlet.element.Relation</type>
|
||||||
|
<coordinates>
|
||||||
|
<x>749</x>
|
||||||
|
<y>189</y>
|
||||||
|
<w>34</w>
|
||||||
|
<h>62</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
|
<additional_attributes>21;49;21;21</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<type>com.umlet.element.Class</type>
|
||||||
|
<coordinates>
|
||||||
|
<x>504</x>
|
||||||
|
<y>189</y>
|
||||||
|
<w>91</w>
|
||||||
|
<h>28</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>ServerUI <<exe>>
|
||||||
|
--
|
||||||
|
/template for future/
|
||||||
bg=green</panel_attributes>
|
bg=green</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>671</x>
|
<x>525</x>
|
||||||
<y>253</y>
|
<y>196</y>
|
||||||
<w>132</w>
|
<w>34</w>
|
||||||
<h>33</h>
|
<h>55</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>Math</panel_attributes>
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes>21;42;21;21</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>770</x>
|
<x>539</x>
|
||||||
<y>132</y>
|
<y>308</y>
|
||||||
<w>153</w>
|
<w>90</w>
|
||||||
<h>164</h>
|
<h>48</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<-</panel_attributes>
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
<additional_attributes>33;143;132;143;132;33</additional_attributes>
|
<additional_attributes>21;35;63;35;63;21;77;21</additional_attributes>
|
||||||
</element>
|
|
||||||
<element>
|
|
||||||
<type>com.umlet.element.Class</type>
|
|
||||||
<coordinates>
|
|
||||||
<x>682</x>
|
|
||||||
<y>297</y>
|
|
||||||
<w>99</w>
|
|
||||||
<h>33</h>
|
|
||||||
</coordinates>
|
|
||||||
<panel_attributes>Misc</panel_attributes>
|
|
||||||
<additional_attributes/>
|
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>605</x>
|
<x>532</x>
|
||||||
<y>198</y>
|
<y>273</y>
|
||||||
<w>87</w>
|
<w>97</w>
|
||||||
<h>98</h>
|
<h>41</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<-</panel_attributes>
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
<additional_attributes>66;77;44;77;44;33;33;33</additional_attributes>
|
<additional_attributes>21;28;56;28;56;21;84;21</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
</diagram>
|
</diagram>
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<diagram program="umlet" version="12.1">
|
<diagram program="umlet" version="12.2">
|
||||||
<zoom_level>10</zoom_level>
|
<zoom_level>8</zoom_level>
|
||||||
<element>
|
<element>
|
||||||
<id>UMLClass</id>
|
<id>UMLClass</id>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>610</x>
|
<x>632</x>
|
||||||
<y>340</y>
|
<y>344</y>
|
||||||
<w>100</w>
|
<w>104</w>
|
||||||
<h>30</h>
|
<h>24</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>GameLobby
|
<panel_attributes>GameLobby
|
||||||
</panel_attributes>
|
</panel_attributes>
|
||||||
|
@ -16,137 +16,100 @@
|
||||||
<element>
|
<element>
|
||||||
<id>UMLClass</id>
|
<id>UMLClass</id>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>580</x>
|
<x>624</x>
|
||||||
<y>480</y>
|
<y>416</y>
|
||||||
<w>160</w>
|
<w>128</w>
|
||||||
<h>80</h>
|
<h>48</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>GameSession
|
<panel_attributes>GameSession
|
||||||
--
|
--
|
||||||
/One instance of a game/
|
/One instance of a game/
|
||||||
/including x number of/
|
/including n players./</panel_attributes>
|
||||||
/players./</panel_attributes>
|
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>620</x>
|
<x>664</x>
|
||||||
<y>340</y>
|
<y>344</y>
|
||||||
<w>60</w>
|
<w>40</w>
|
||||||
<h>160</h>
|
<h>88</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=->>>></panel_attributes>
|
<panel_attributes>lt=->>>></panel_attributes>
|
||||||
<additional_attributes>30;140;40;30</additional_attributes>
|
<additional_attributes>24;72;24;24</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>710</x>
|
<x>664</x>
|
||||||
<y>480</y>
|
<y>440</y>
|
||||||
<w>100</w>
|
<w>40</w>
|
||||||
<h>50</h>
|
<h>104</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=>>>>-</panel_attributes>
|
<panel_attributes>lt=>>>>-</panel_attributes>
|
||||||
<additional_attributes>80;30;30;30</additional_attributes>
|
<additional_attributes>24;88;24;24</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<id>UMLClass</id>
|
<id>UMLClass</id>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>600</x>
|
<x>40</x>
|
||||||
<y>180</y>
|
<y>120</y>
|
||||||
<w>120</w>
|
<w>368</w>
|
||||||
<h>120</h>
|
<h>344</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>GameServer</panel_attributes>
|
<panel_attributes>GameServerAPI <<singleton>>
|
||||||
|
--
|
||||||
|
{innerclass
|
||||||
|
+ServerInitDesc<<struct>>
|
||||||
|
--
|
||||||
|
serverName :char pointer
|
||||||
|
listenPort :int
|
||||||
|
bool broadcast :bool
|
||||||
|
ServerInitDesc() :void
|
||||||
|
innerclass}
|
||||||
|
{innerclass
|
||||||
|
+GameServerInfo<<struct>>
|
||||||
|
--
|
||||||
|
listenPort :unsigned int
|
||||||
|
serverIp :const char pointer
|
||||||
|
innerclass}
|
||||||
|
|
||||||
|
+static DanBiasServerReturn ServerInitiate(const ServerInitDesc& desc);
|
||||||
|
+static ServerStart() :void
|
||||||
|
+static ServerStop() :void
|
||||||
|
+static ServerUpdate() :void
|
||||||
|
+static ServerGetInfo() :GameServerInfo
|
||||||
|
+static ServerIsRunning() :bool
|
||||||
|
+static GameSetMapId( val :const int& ) :void
|
||||||
|
+static GameSetMaxClients( val :const int& ) :void
|
||||||
|
+static GameSetGameMode(val :const int&) :void
|
||||||
|
+static GameSetGameTime(val :const int&) :void
|
||||||
|
+static GameGetMapId() :int
|
||||||
|
+static GameGetMaxClients() :int
|
||||||
|
+static GameGetGameMode() :int
|
||||||
|
+static GameGetGameTime() :int
|
||||||
|
+static GameGetGameName() :const char pointer
|
||||||
|
+static GameStart() :bool</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>630</x>
|
<x>384</x>
|
||||||
<y>270</y>
|
<y>328</y>
|
||||||
<w>50</w>
|
<w>264</w>
|
||||||
<h>90</h>
|
|
||||||
</coordinates>
|
|
||||||
<panel_attributes>lt=>>>>-</panel_attributes>
|
|
||||||
<additional_attributes>30;70;30;30</additional_attributes>
|
|
||||||
</element>
|
|
||||||
<element>
|
|
||||||
<id>UMLClass</id>
|
|
||||||
<coordinates>
|
|
||||||
<x>590</x>
|
|
||||||
<y>100</y>
|
|
||||||
<w>130</w>
|
|
||||||
<h>40</h>
|
<h>40</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes><<wrapper>>
|
<panel_attributes>lt=>>>>-</panel_attributes>
|
||||||
DanBiasServerAPI</panel_attributes>
|
<additional_attributes>248;24;24;24</additional_attributes>
|
||||||
<additional_attributes/>
|
|
||||||
</element>
|
|
||||||
<element>
|
|
||||||
<type>com.umlet.element.Relation</type>
|
|
||||||
<coordinates>
|
|
||||||
<x>630</x>
|
|
||||||
<y>110</y>
|
|
||||||
<w>50</w>
|
|
||||||
<h>90</h>
|
|
||||||
</coordinates>
|
|
||||||
<panel_attributes>lt=>>>>-
|
|
||||||
</panel_attributes>
|
|
||||||
<additional_attributes>30;70;30;30</additional_attributes>
|
|
||||||
</element>
|
|
||||||
<element>
|
|
||||||
<id>UMLClass</id>
|
|
||||||
<coordinates>
|
|
||||||
<x>1060</x>
|
|
||||||
<y>330</y>
|
|
||||||
<w>120</w>
|
|
||||||
<h>50</h>
|
|
||||||
</coordinates>
|
|
||||||
<panel_attributes>NetworkSession</panel_attributes>
|
|
||||||
<additional_attributes/>
|
|
||||||
</element>
|
|
||||||
<element>
|
|
||||||
<type>com.umlet.element.Relation</type>
|
|
||||||
<coordinates>
|
|
||||||
<x>690</x>
|
|
||||||
<y>220</y>
|
|
||||||
<w>390</w>
|
|
||||||
<h>50</h>
|
|
||||||
</coordinates>
|
|
||||||
<panel_attributes>lt=-<<<<</panel_attributes>
|
|
||||||
<additional_attributes>30;30;370;30</additional_attributes>
|
|
||||||
</element>
|
|
||||||
<element>
|
|
||||||
<type>com.umlet.element.Relation</type>
|
|
||||||
<coordinates>
|
|
||||||
<x>680</x>
|
|
||||||
<y>320</y>
|
|
||||||
<w>400</w>
|
|
||||||
<h>50</h>
|
|
||||||
</coordinates>
|
|
||||||
<panel_attributes>lt=->>>>></panel_attributes>
|
|
||||||
<additional_attributes>30;30;380;30</additional_attributes>
|
|
||||||
</element>
|
|
||||||
<element>
|
|
||||||
<type>com.umlet.element.Relation</type>
|
|
||||||
<coordinates>
|
|
||||||
<x>690</x>
|
|
||||||
<y>340</y>
|
|
||||||
<w>390</w>
|
|
||||||
<h>160</h>
|
|
||||||
</coordinates>
|
|
||||||
<panel_attributes>lt=->>>>></panel_attributes>
|
|
||||||
<additional_attributes>30;140;40;40;370;30</additional_attributes>
|
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Package</type>
|
<type>com.umlet.element.Package</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>460</x>
|
<x>440</x>
|
||||||
<y>640</y>
|
<y>424</y>
|
||||||
<w>120</w>
|
<w>96</w>
|
||||||
<h>50</h>
|
<h>40</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>GameLogicAPI
|
<panel_attributes>GameLogicAPI
|
||||||
bg=blue</panel_attributes>
|
bg=blue</panel_attributes>
|
||||||
|
@ -155,21 +118,21 @@ bg=blue</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>370</x>
|
<x>512</x>
|
||||||
<y>530</y>
|
<y>424</y>
|
||||||
<w>350</w>
|
<w>128</w>
|
||||||
<h>290</h>
|
<h>40</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<<.</panel_attributes>
|
<panel_attributes>lt=<<.</panel_attributes>
|
||||||
<additional_attributes>90;150;30;270;330;240;240;30</additional_attributes>
|
<additional_attributes>24;24;112;24</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<id>UMLClass</id>
|
<id>UMLClass</id>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>790</x>
|
<x>624</x>
|
||||||
<y>500</y>
|
<y>528</y>
|
||||||
<w>100</w>
|
<w>144</w>
|
||||||
<h>30</h>
|
<h>24</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>GameClient</panel_attributes>
|
<panel_attributes>GameClient</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
|
@ -177,21 +140,21 @@ bg=blue</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>670</x>
|
<x>520</x>
|
||||||
<y>530</y>
|
<y>416</y>
|
||||||
<w>150</w>
|
<w>120</w>
|
||||||
<h>180</h>
|
<h>104</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<<.</panel_attributes>
|
<panel_attributes>lt=<<.</panel_attributes>
|
||||||
<additional_attributes>130;160;30;30</additional_attributes>
|
<additional_attributes>24;88;64;88;64;24;104;24</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Package</type>
|
<type>com.umlet.element.Package</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>800</x>
|
<x>448</x>
|
||||||
<y>670</y>
|
<y>480</y>
|
||||||
<w>120</w>
|
<w>96</w>
|
||||||
<h>40</h>
|
<h>48</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>GameProtocols
|
<panel_attributes>GameProtocols
|
||||||
bg=#aaaaa</panel_attributes>
|
bg=#aaaaa</panel_attributes>
|
||||||
|
@ -200,10 +163,10 @@ bg=#aaaaa</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Package</type>
|
<type>com.umlet.element.Package</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>1040</x>
|
<x>720</x>
|
||||||
<y>200</y>
|
<y>160</y>
|
||||||
<w>160</w>
|
<w>152</w>
|
||||||
<h>190</h>
|
<h>24</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>NetworkAPI
|
<panel_attributes>NetworkAPI
|
||||||
bg=#a21aff</panel_attributes>
|
bg=#a21aff</panel_attributes>
|
||||||
|
@ -212,56 +175,84 @@ bg=#a21aff</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<id>UMLClass</id>
|
<id>UMLClass</id>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>1060</x>
|
<x>40</x>
|
||||||
<y>280</y>
|
<y>24</y>
|
||||||
<w>120</w>
|
<w>320</w>
|
||||||
<h>40</h>
|
<h>64</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>NetworkClient</panel_attributes>
|
<panel_attributes>/*HISTORY*/
|
||||||
<additional_attributes/>
|
--
|
||||||
</element>
|
10/2-2014
|
||||||
<element>
|
Restructured old
|
||||||
<id>UMLClass</id>
|
--
|
||||||
<coordinates>
|
elementstyle=wordwrap
|
||||||
<x>1060</x>
|
bg=gray</panel_attributes>
|
||||||
<y>230</y>
|
|
||||||
<w>120</w>
|
|
||||||
<h>40</h>
|
|
||||||
</coordinates>
|
|
||||||
<panel_attributes>NetworkServer</panel_attributes>
|
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>690</x>
|
<x>720</x>
|
||||||
<y>240</y>
|
<y>160</y>
|
||||||
<w>390</w>
|
<w>40</w>
|
||||||
<h>80</h>
|
<h>272</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=-></panel_attributes>
|
<panel_attributes>lt=<<.</panel_attributes>
|
||||||
<additional_attributes>30;30;200;30;200;60;370;60</additional_attributes>
|
<additional_attributes>24;24;24;256</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>690</x>
|
<x>704</x>
|
||||||
<y>260</y>
|
<y>160</y>
|
||||||
<w>390</w>
|
<w>40</w>
|
||||||
<h>100</h>
|
<h>200</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=-<<<<</panel_attributes>
|
<panel_attributes>lt=<<.</panel_attributes>
|
||||||
<additional_attributes>30;30;180;30;180;80;370;80</additional_attributes>
|
<additional_attributes>24;24;24;184</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>860</x>
|
<x>384</x>
|
||||||
<y>270</y>
|
<y>152</y>
|
||||||
<w>380</w>
|
<w>352</w>
|
||||||
<h>260</h>
|
<h>40</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=>>>-</panel_attributes>
|
<panel_attributes>lt=<<.</panel_attributes>
|
||||||
<additional_attributes>320;30;360;30;360;230;30;240</additional_attributes>
|
<additional_attributes>336;24;24;24</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<type>com.umlet.element.Relation</type>
|
||||||
|
<coordinates>
|
||||||
|
<x>736</x>
|
||||||
|
<y>160</y>
|
||||||
|
<w>40</w>
|
||||||
|
<h>384</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<<.</panel_attributes>
|
||||||
|
<additional_attributes>24;24;24;368</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<type>com.umlet.element.Relation</type>
|
||||||
|
<coordinates>
|
||||||
|
<x>520</x>
|
||||||
|
<y>480</y>
|
||||||
|
<w>136</w>
|
||||||
|
<h>64</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<<.</panel_attributes>
|
||||||
|
<additional_attributes>24;24;120;24;120;48</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<type>com.umlet.element.Relation</type>
|
||||||
|
<coordinates>
|
||||||
|
<x>512</x>
|
||||||
|
<y>432</y>
|
||||||
|
<w>160</w>
|
||||||
|
<h>112</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<<.</panel_attributes>
|
||||||
|
<additional_attributes>24;24;72;24;72;72;144;72;144;96</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
</diagram>
|
</diagram>
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<diagram program="umlet" version="12.1">
|
<diagram program="umlet" version="12.2">
|
||||||
<zoom_level>16</zoom_level>
|
<zoom_level>6</zoom_level>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>560</x>
|
<x>198</x>
|
||||||
<y>80</y>
|
<y>300</y>
|
||||||
<w>176</w>
|
<w>66</w>
|
||||||
<h>80</h>
|
<h>30</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes><<interface>>
|
<panel_attributes><<interface>>
|
||||||
OysterResource</panel_attributes>
|
OysterResource</panel_attributes>
|
||||||
|
@ -16,23 +16,23 @@ OysterResource</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>528</x>
|
<x>186</x>
|
||||||
<y>112</y>
|
<y>312</y>
|
||||||
<w>206</w>
|
<w>76</w>
|
||||||
<h>160</h>
|
<h>60</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=>>
|
<panel_attributes>lt=>>
|
||||||
implements
|
implements
|
||||||
</panel_attributes>
|
</panel_attributes>
|
||||||
<additional_attributes>112;128;112;48</additional_attributes>
|
<additional_attributes>42;48;42;18</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Actor</type>
|
<type>com.umlet.element.Actor</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>352</x>
|
<x>120</x>
|
||||||
<y>240</y>
|
<y>360</y>
|
||||||
<w>128</w>
|
<w>48</w>
|
||||||
<h>192</h>
|
<h>72</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>Dev</panel_attributes>
|
<panel_attributes>Dev</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
|
@ -40,22 +40,22 @@ implements
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>320</x>
|
<x>108</x>
|
||||||
<y>32</y>
|
<y>282</y>
|
||||||
<w>272</w>
|
<w>102</w>
|
||||||
<h>240</h>
|
<h>90</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<.
|
<panel_attributes>lt=<.
|
||||||
interacts></panel_attributes>
|
interacts></panel_attributes>
|
||||||
<additional_attributes>240;80;96;80;96;208</additional_attributes>
|
<additional_attributes>90;30;36;30;36;78</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>576</x>
|
<x>204</x>
|
||||||
<y>576</y>
|
<y>486</y>
|
||||||
<w>160</w>
|
<w>60</w>
|
||||||
<h>32</h>
|
<h>12</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>CustomLoader</panel_attributes>
|
<panel_attributes>CustomLoader</panel_attributes>
|
||||||
<additional_attributes/>
|
<additional_attributes/>
|
||||||
|
@ -63,10 +63,10 @@ interacts></panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Class</type>
|
<type>com.umlet.element.Class</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>576</x>
|
<x>204</x>
|
||||||
<y>528</y>
|
<y>468</y>
|
||||||
<w>160</w>
|
<w>60</w>
|
||||||
<h>32</h>
|
<h>12</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>
|
<panel_attributes>
|
||||||
ByteLoader</panel_attributes>
|
ByteLoader</panel_attributes>
|
||||||
|
@ -75,33 +75,33 @@ ByteLoader</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>464</x>
|
<x>162</x>
|
||||||
<y>384</y>
|
<y>414</y>
|
||||||
<w>144</w>
|
<w>54</w>
|
||||||
<h>192</h>
|
<h>72</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<<-</panel_attributes>
|
<panel_attributes>lt=<<-</panel_attributes>
|
||||||
<additional_attributes>80;48;48;48;48;160;112;160</additional_attributes>
|
<additional_attributes>30;18;18;18;18;60;42;60</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>368</x>
|
<x>126</x>
|
||||||
<y>384</y>
|
<y>414</y>
|
||||||
<w>266</w>
|
<w>98</w>
|
||||||
<h>240</h>
|
<h>90</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=<<-
|
<panel_attributes>lt=<<-
|
||||||
implements partly</panel_attributes>
|
implements partly</panel_attributes>
|
||||||
<additional_attributes>176;48;144;48;144;208;208;208</additional_attributes>
|
<additional_attributes>66;18;54;18;54;78;78;78</additional_attributes>
|
||||||
</element>
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<id>UMLClass</id>
|
<id>UMLClass</id>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>544</x>
|
<x>192</x>
|
||||||
<y>240</y>
|
<y>360</y>
|
||||||
<w>208</w>
|
<w>78</w>
|
||||||
<h>128</h>
|
<h>48</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>--
|
<panel_attributes>--
|
||||||
<<interface>>
|
<<interface>>
|
||||||
|
@ -115,10 +115,10 @@ halign=center</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<id>UMLClass</id>
|
<id>UMLClass</id>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>544</x>
|
<x>192</x>
|
||||||
<y>400</y>
|
<y>420</y>
|
||||||
<w>208</w>
|
<w>78</w>
|
||||||
<h>80</h>
|
<h>30</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>
|
<panel_attributes>
|
||||||
OResource
|
OResource
|
||||||
|
@ -130,13 +130,171 @@ halign=center</panel_attributes>
|
||||||
<element>
|
<element>
|
||||||
<type>com.umlet.element.Relation</type>
|
<type>com.umlet.element.Relation</type>
|
||||||
<coordinates>
|
<coordinates>
|
||||||
<x>688</x>
|
<x>252</x>
|
||||||
<y>256</y>
|
<y>366</y>
|
||||||
<w>196</w>
|
<w>66</w>
|
||||||
<h>224</h>
|
<h>84</h>
|
||||||
</coordinates>
|
</coordinates>
|
||||||
<panel_attributes>lt=>>>>
|
<panel_attributes>lt=>>>>
|
||||||
manages></panel_attributes>
|
manages></panel_attributes>
|
||||||
<additional_attributes>64;192;112;192;112;48;64;48</additional_attributes>
|
<additional_attributes>18;72;36;72;36;18;18;18</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>108</x>
|
||||||
|
<y>282</y>
|
||||||
|
<w>240</w>
|
||||||
|
<h>234</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>old
|
||||||
|
bg=gray</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>402</x>
|
||||||
|
<y>342</y>
|
||||||
|
<w>576</w>
|
||||||
|
<h>204</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>ResourceManager
|
||||||
|
--
|
||||||
|
+ ResourceManager() :void
|
||||||
|
+ ~ResourceManager() :void
|
||||||
|
+ HBYTEARRAY LoadBytes(const wchar_t filename[], ResourceType type, int customId = -1, bool force = false)
|
||||||
|
+ HRESOURCE LoadResource(const wchar_t filename[], LoadFunction loadFnc = 0, UnloadFunction unloadFnc = 0, int customId = -1, bool force = false)
|
||||||
|
+ HRESOURCE ReloadResource(const wchar_t filename[])
|
||||||
|
+ HRESOURCE ReloadResource(HRESOURCE& resource)
|
||||||
|
+ void Clean()
|
||||||
|
+ void ReleaseResource(const HRESOURCE& resource)
|
||||||
|
+ void ReleaseResource(const wchar_t filename[])
|
||||||
|
+ void SetResourceId(const HRESOURCE& resource, unsigned int id)
|
||||||
|
+ void SetResourceId(const wchar_t filename[], unsigned int id)
|
||||||
|
+ ResourceType GetResourceType(const HRESOURCE& resource)
|
||||||
|
+ ResourceType GetResourceType (const wchar_t filename[])
|
||||||
|
+ const wchar_t* GetResourceFilename(const HRESOURCE& resource);
|
||||||
|
+ HRESOURCE GetResourceHandle(const wchar_t filename[])
|
||||||
|
+ int GetResourceId(const HRESOURCE& resource);
|
||||||
|
+ int GetResourceId(const wchar_t filename[]);
|
||||||
|
--
|
||||||
|
- ResourceManager(const ResourceManager& obj);
|
||||||
|
- const ResourceManager& operator=(const ResourceManager&);
|
||||||
|
- std::map<std::wstring, ResourceData*> resources;</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>390</x>
|
||||||
|
<y>198</y>
|
||||||
|
<w>600</w>
|
||||||
|
<h>360</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>Oyster <<namespace>>
|
||||||
|
--
|
||||||
|
</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>396</x>
|
||||||
|
<y>222</y>
|
||||||
|
<w>588</w>
|
||||||
|
<h>330</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>Resource <<namespace>>
|
||||||
|
--
|
||||||
|
</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>534</x>
|
||||||
|
<y>282</y>
|
||||||
|
<w>126</w>
|
||||||
|
<h>18</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>HRESOURCE: void* <<typedef>></panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>534</x>
|
||||||
|
<y>300</y>
|
||||||
|
<w>126</w>
|
||||||
|
<h>18</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>HBYTE: char <<typedef>></panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>534</x>
|
||||||
|
<y>318</y>
|
||||||
|
<w>126</w>
|
||||||
|
<h>18</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>HBYTEARRAY: char* <<typedef>></panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>534</x>
|
||||||
|
<y>246</y>
|
||||||
|
<w>264</w>
|
||||||
|
<h>18</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>UnloadFunction :void(*UnloadFunction)(void* loadedData) <<typedef>></panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>534</x>
|
||||||
|
<y>264</y>
|
||||||
|
<w>288</w>
|
||||||
|
<h>18</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>LoadFunction :void*(*LoadFunction)(const wchar_t filename[]) <<typedef>></panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>402</x>
|
||||||
|
<y>246</y>
|
||||||
|
<w>126</w>
|
||||||
|
<h>90</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>ResourceType <<enum>>
|
||||||
|
--
|
||||||
|
ResourceType_Byte_Raw
|
||||||
|
ResourceType_Byte_ANSI
|
||||||
|
ResourceType_Byte_UTF8
|
||||||
|
ResourceType_Byte_UNICODE
|
||||||
|
ResourceType_Byte_UTF16LE
|
||||||
|
ResourceType_CUSTOM
|
||||||
|
ResourceType_INVALID
|
||||||
|
</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>378</x>
|
||||||
|
<y>174</y>
|
||||||
|
<w>630</w>
|
||||||
|
<h>396</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>New
|
||||||
|
bg=green</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
</element>
|
</element>
|
||||||
</diagram>
|
</diagram>
|
||||||
|
|
|
@ -32,7 +32,7 @@ void C_DynamicObj::Init(ModelInitData modelInit)
|
||||||
|
|
||||||
void C_DynamicObj::Render()
|
void C_DynamicObj::Render()
|
||||||
{
|
{
|
||||||
Oyster::Graphics::API::RenderModel(*(privData->model));
|
Oyster::Graphics::API::RenderModel(privData->model);
|
||||||
}
|
}
|
||||||
void C_DynamicObj::Release()
|
void C_DynamicObj::Release()
|
||||||
{
|
{
|
||||||
|
|
|
@ -38,7 +38,7 @@ void C_Player::Init(ModelInitData modelInit)
|
||||||
|
|
||||||
void C_Player::Render()
|
void C_Player::Render()
|
||||||
{
|
{
|
||||||
Oyster::Graphics::API::RenderModel(*(privData->model));
|
Oyster::Graphics::API::RenderModel(privData->model);
|
||||||
}
|
}
|
||||||
void C_Player::Release()
|
void C_Player::Release()
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,7 +34,7 @@ void C_StaticObj::Init(ModelInitData modelInit)
|
||||||
|
|
||||||
void C_StaticObj::Render()
|
void C_StaticObj::Render()
|
||||||
{
|
{
|
||||||
Oyster::Graphics::API::RenderModel(*(privData->model));
|
Oyster::Graphics::API::RenderModel(privData->model);
|
||||||
}
|
}
|
||||||
void C_StaticObj::Release()
|
void C_StaticObj::Release()
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,7 +35,7 @@ void C_UIobject::setPos(Oyster::Math::Float4x4 world)
|
||||||
|
|
||||||
void C_UIobject::Render()
|
void C_UIobject::Render()
|
||||||
{
|
{
|
||||||
Oyster::Graphics::API::RenderModel(*(privData->model));
|
Oyster::Graphics::API::RenderModel(privData->model);
|
||||||
}
|
}
|
||||||
void C_UIobject::Release()
|
void C_UIobject::Release()
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,34 +50,34 @@ bool GameState::Init(Oyster::Network::NetworkClient* nwClient)
|
||||||
GameState::gameStateState GameState::LoadGame()
|
GameState::gameStateState GameState::LoadGame()
|
||||||
{
|
{
|
||||||
Oyster::Graphics::Definitions::Pointlight plight;
|
Oyster::Graphics::Definitions::Pointlight plight;
|
||||||
plight.Pos = Float3(315, 0 ,5);
|
plight.Pos = Float3(315.0f, 0.0f ,5.0f);
|
||||||
plight.Color = Float3(0.9f,0.7f,0.2f);
|
plight.Color = Float3(0.9f, 0.7f, 0.2f);
|
||||||
plight.Radius = 100;
|
plight.Radius = 100.0f;
|
||||||
plight.Bright = 0.9f;
|
plight.Bright = 0.9f;
|
||||||
Oyster::Graphics::API::AddLight(plight);
|
Oyster::Graphics::API::AddLight(plight);
|
||||||
plight.Pos = Float3(10,350,5);
|
plight.Pos = Float3(10.0f, 350.0f, 5.0f);
|
||||||
plight.Color = Float3(0.9f,0.7f,0.3f);
|
plight.Color = Float3(0.9f, 0.7f, 0.3f);
|
||||||
plight.Radius = 200;
|
plight.Radius = 200.0f;
|
||||||
plight.Bright = 0.7f;
|
plight.Bright = 0.7f;
|
||||||
Oyster::Graphics::API::AddLight(plight);
|
Oyster::Graphics::API::AddLight(plight);
|
||||||
plight.Pos = Float3(350,350,5);
|
plight.Pos = Float3(350.0f, 350.0f, 5.0f);
|
||||||
plight.Color = Float3(0.9f,0.7f,0.3f);
|
plight.Color = Float3(0.9f, 0.7f, 0.3f);
|
||||||
plight.Radius = 200;
|
plight.Radius = 200.0f;
|
||||||
plight.Bright = 0.7f;
|
plight.Bright = 0.7f;
|
||||||
Oyster::Graphics::API::AddLight(plight);
|
Oyster::Graphics::API::AddLight(plight);
|
||||||
plight.Pos = Float3(10,350,350);
|
plight.Pos = Float3(10.0f, 350.0f, 350.0f);
|
||||||
plight.Color = Float3(0.9f,0.7f,0.3f);
|
plight.Color = Float3(0.9f, 0.7f, 0.3f);
|
||||||
plight.Radius = 200;
|
plight.Radius = 200.0f;
|
||||||
plight.Bright = 0.7f;
|
plight.Bright = 0.7f;
|
||||||
Oyster::Graphics::API::AddLight(plight);
|
Oyster::Graphics::API::AddLight(plight);
|
||||||
plight.Pos = Float3(10,-15,5);
|
plight.Pos = Float3(10.0f, -15.0f, 5.0f);
|
||||||
plight.Color = Float3(0,0,1);
|
plight.Color = Float3(0.0f, 0.0f, 1.0f);
|
||||||
plight.Radius = 50;
|
plight.Radius = 50.0f;
|
||||||
plight.Bright = 2;
|
plight.Bright = 2.0f;
|
||||||
|
|
||||||
Oyster::Graphics::API::AddLight(plight);
|
Oyster::Graphics::API::AddLight(plight);
|
||||||
// use level loader
|
// use level loader
|
||||||
//LoadModels("3bana.bias");
|
InitCamera( Float3(0.0f, 0.0f, 20.0f) );
|
||||||
// hardcoded objects
|
// hardcoded objects
|
||||||
LoadModels();
|
LoadModels();
|
||||||
Float3 startPos = Float3(0,0,20.0f);
|
Float3 startPos = Float3(0,0,20.0f);
|
||||||
|
|
|
@ -96,7 +96,7 @@ GameClientState::ClientState LobbyState::Update(float deltaTime, InputClass* Key
|
||||||
{
|
{
|
||||||
if(!DanBias::GameServerAPI::GameStart())
|
if(!DanBias::GameServerAPI::GameStart())
|
||||||
{
|
{
|
||||||
//this->nwClient->Send(GameLogic::Protocol_LobbyStartGame());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,6 +111,7 @@ GameClientState::ClientState LoginState::Update(float deltaTime, InputClass* Key
|
||||||
{
|
{
|
||||||
// game ip
|
// game ip
|
||||||
nwClient->Connect(15152, "127.0.0.1");
|
nwClient->Connect(15152, "127.0.0.1");
|
||||||
|
//nwClient->Connect(15152, "83.254.217.248");
|
||||||
|
|
||||||
if (!nwClient->IsConnected())
|
if (!nwClient->IsConnected())
|
||||||
{
|
{
|
||||||
|
|
|
@ -149,10 +149,30 @@
|
||||||
<ClCompile Include="EventHandler\EventButtonCollection.cpp" />
|
<ClCompile Include="EventHandler\EventButtonCollection.cpp" />
|
||||||
<ClCompile Include="EventHandler\EventHandler.cpp" />
|
<ClCompile Include="EventHandler\EventHandler.cpp" />
|
||||||
<ClCompile Include="Packing\Packing.cpp" />
|
<ClCompile Include="Packing\Packing.cpp" />
|
||||||
<ClCompile Include="Resource\Loaders\ByteLoader.cpp" />
|
<ClCompile Include="Resource\Loaders\ByteLoader.cpp">
|
||||||
<ClCompile Include="Resource\Loaders\CustomLoader.cpp" />
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ClCompile Include="Resource\OResourceHandler.cpp" />
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
<ClCompile Include="Resource\OResource.cpp" />
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Resource\Loaders\CustomLoader.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Resource\OResourceHandler.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Resource\OResource.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="Resource\ResourceManager.cpp">
|
<ClCompile Include="Resource\ResourceManager.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
@ -179,8 +199,18 @@
|
||||||
<ClInclude Include="PostBox\IPostBox.h" />
|
<ClInclude Include="PostBox\IPostBox.h" />
|
||||||
<ClInclude Include="PostBox\PostBox.h" />
|
<ClInclude Include="PostBox\PostBox.h" />
|
||||||
<ClInclude Include="Queue.h" />
|
<ClInclude Include="Queue.h" />
|
||||||
<ClInclude Include="Resource\OysterResource.h" />
|
<ClInclude Include="Resource\OysterResource.h">
|
||||||
<ClInclude Include="Resource\OResource.h" />
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Resource\OResource.h">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="Resource\ResourceManager.h">
|
<ClInclude Include="Resource\ResourceManager.h">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
|
|
@ -13,6 +13,7 @@ namespace Oyster
|
||||||
typedef void* HRESOURCE;
|
typedef void* HRESOURCE;
|
||||||
typedef char HBYTE;
|
typedef char HBYTE;
|
||||||
typedef HBYTE* HBYTEARRAY;
|
typedef HBYTE* HBYTEARRAY;
|
||||||
|
|
||||||
/** Typedef on a fuction required for custom unloading */
|
/** Typedef on a fuction required for custom unloading */
|
||||||
typedef void(*UnloadFunction)(void* loadedData);
|
typedef void(*UnloadFunction)(void* loadedData);
|
||||||
|
|
||||||
|
|
|
@ -155,6 +155,10 @@ HRESULT Core::Buffer::Init(const BUFFER_INIT_DESC& initDesc)
|
||||||
{
|
{
|
||||||
//MessageBox(NULL, L"Unable to create buffer.", L"Slenda Error", MB_ICONERROR | MB_OK);
|
//MessageBox(NULL, L"Unable to create buffer.", L"Slenda Error", MB_ICONERROR | MB_OK);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Core::UsedMem += bufferDesc.ByteWidth;
|
||||||
|
}
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,4 +33,6 @@ Oyster::Math::Float2 Core::resolution = Oyster::Math::Float2::null;
|
||||||
|
|
||||||
ID3D11ShaderResourceView* Core::srvNULL[16] = {0};
|
ID3D11ShaderResourceView* Core::srvNULL[16] = {0};
|
||||||
ID3D11RenderTargetView* Core::rtvNULL[8] = {0};
|
ID3D11RenderTargetView* Core::rtvNULL[8] = {0};
|
||||||
ID3D11UnorderedAccessView* Core::uavNULL[8] = {0};
|
ID3D11UnorderedAccessView* Core::uavNULL[8] = {0};
|
||||||
|
|
||||||
|
int Core::UsedMem = 0;
|
||||||
|
|
|
@ -46,6 +46,8 @@ namespace Oyster
|
||||||
static ID3D11RenderTargetView* rtvNULL[8];
|
static ID3D11RenderTargetView* rtvNULL[8];
|
||||||
static ID3D11UnorderedAccessView* uavNULL[8];
|
static ID3D11UnorderedAccessView* uavNULL[8];
|
||||||
|
|
||||||
|
static int UsedMem;
|
||||||
|
|
||||||
class Buffer
|
class Buffer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -33,7 +33,7 @@ namespace Oyster
|
||||||
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
|
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
|
//createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
|
||||||
|
|
||||||
D3D_FEATURE_LEVEL featureLevelsToTry[] =
|
D3D_FEATURE_LEVEL featureLevelsToTry[] =
|
||||||
{
|
{
|
||||||
|
@ -110,6 +110,7 @@ namespace Oyster
|
||||||
if(Core::swapChain)
|
if(Core::swapChain)
|
||||||
{
|
{
|
||||||
Core::swapChain->Release();
|
Core::swapChain->Release();
|
||||||
|
Core::UsedMem -= desc.BufferDesc.Height * desc.BufferDesc.Width * 16;
|
||||||
delete Core::swapChain;
|
delete Core::swapChain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,7 +168,7 @@ namespace Oyster
|
||||||
}
|
}
|
||||||
|
|
||||||
dxgiFactory->Release();
|
dxgiFactory->Release();
|
||||||
|
Core::UsedMem += desc.BufferDesc.Height * desc.BufferDesc.Width * 16;
|
||||||
return Init::Success;
|
return Init::Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,6 +188,7 @@ namespace Oyster
|
||||||
if(Core::depthStencil)
|
if(Core::depthStencil)
|
||||||
{
|
{
|
||||||
Core::depthStencil->Release();
|
Core::depthStencil->Release();
|
||||||
|
Core::UsedMem -= desc.Height * desc.Width * 4;
|
||||||
delete Core::depthStencil;
|
delete Core::depthStencil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,6 +216,7 @@ namespace Oyster
|
||||||
{
|
{
|
||||||
return Init::Fail;
|
return Init::Fail;
|
||||||
}
|
}
|
||||||
|
Core::UsedMem += desc.Height * desc.Width * 4;
|
||||||
D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc;
|
D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc;
|
||||||
dsvDesc.Format = DXGI_FORMAT_D32_FLOAT;
|
dsvDesc.Format = DXGI_FORMAT_D32_FLOAT;
|
||||||
dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;
|
dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;
|
||||||
|
@ -382,6 +385,9 @@ namespace Oyster
|
||||||
|
|
||||||
if(FAILED(Core::device->CreateTexture2D(&texDesc,NULL,&tex)))
|
if(FAILED(Core::device->CreateTexture2D(&texDesc,NULL,&tex)))
|
||||||
return State::Fail;
|
return State::Fail;
|
||||||
|
|
||||||
|
Core::UsedMem += texDesc.Height*texDesc.Width*16;
|
||||||
|
|
||||||
if(rtv)
|
if(rtv)
|
||||||
{
|
{
|
||||||
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
|
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
|
||||||
|
|
|
@ -18,6 +18,8 @@ namespace Oyster
|
||||||
{
|
{
|
||||||
Math::Matrix WV;
|
Math::Matrix WV;
|
||||||
Math::Matrix WVP;
|
Math::Matrix WVP;
|
||||||
|
int Animated;
|
||||||
|
Math::Float3 Pad;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FinalVertex
|
struct FinalVertex
|
||||||
|
@ -51,11 +53,19 @@ namespace Oyster
|
||||||
|
|
||||||
struct AnimationData
|
struct AnimationData
|
||||||
{
|
{
|
||||||
Math::Float4x4 animatedData[100];
|
Math::Float4x4 AnimatedData[100];
|
||||||
int Animated;
|
|
||||||
Math::Float3 Pad;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct GuiData
|
||||||
|
{
|
||||||
|
Math::Matrix Translation;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PostData
|
||||||
|
{
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,13 +1,12 @@
|
||||||
#include "GFXAPI.h"
|
#include "GFXAPI.h"
|
||||||
#include "../Core/Core.h"
|
#include "../Core/Core.h"
|
||||||
#include "../Render/Resources/Debug.h"
|
#include "../Render/Resources.h"
|
||||||
#include "../Render/Resources/Deffered.h"
|
#include "../Render/DefaultRenderer.h"
|
||||||
#include "../Render/Rendering/Render.h"
|
|
||||||
#include "../FileLoader/ObjReader.h"
|
#include "../FileLoader/ObjReader.h"
|
||||||
//#include "../../Misc/Resource/OysterResource.h"
|
|
||||||
#include "../../Misc/Resource/ResourceManager.h"
|
#include "../../Misc/Resource/ResourceManager.h"
|
||||||
#include "../FileLoader/GeneralLoader.h"
|
#include "../FileLoader/GeneralLoader.h"
|
||||||
#include "../Model/ModelInfo.h"
|
#include "../Model/ModelInfo.h"
|
||||||
|
#include "../Render/GuiRenderer.h"
|
||||||
#include <vld.h>
|
#include <vld.h>
|
||||||
|
|
||||||
namespace Oyster
|
namespace Oyster
|
||||||
|
@ -19,6 +18,7 @@ namespace Oyster
|
||||||
Math::Float4x4 View;
|
Math::Float4x4 View;
|
||||||
Math::Float4x4 Projection;
|
Math::Float4x4 Projection;
|
||||||
std::vector<Definitions::Pointlight> Lights;
|
std::vector<Definitions::Pointlight> Lights;
|
||||||
|
float deltaTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
API::State API::Init(HWND Window, bool MSAA_Quality, bool Fullscreen, Math::Float2 resulotion)
|
API::State API::Init(HWND Window, bool MSAA_Quality, bool Fullscreen, Math::Float2 resulotion)
|
||||||
|
@ -29,18 +29,20 @@ namespace Oyster
|
||||||
{
|
{
|
||||||
return API::Fail;
|
return API::Fail;
|
||||||
}
|
}
|
||||||
Render::Resources::Deffered::Init();
|
Render::Resources::Init();
|
||||||
|
|
||||||
Render::Preparations::Basic::SetViewPort();
|
Render::Preparations::Basic::SetViewPort();
|
||||||
|
Render::DefaultRenderer::cube = API::CreateModel(L"box.dan");
|
||||||
|
Render::DefaultRenderer::cube2 = API::CreateModel(L"box2.dan");
|
||||||
return API::Sucsess;
|
return API::Sucsess;
|
||||||
}
|
}
|
||||||
|
|
||||||
void API::SetProjection(Math::Float4x4& projection)
|
void API::SetProjection(const Math::Float4x4& projection)
|
||||||
{
|
{
|
||||||
Projection = projection;
|
Projection = projection;
|
||||||
}
|
}
|
||||||
|
|
||||||
void API::SetView(Math::Float4x4& view)
|
void API::SetView(const Math::Float4x4& view)
|
||||||
{
|
{
|
||||||
View = view;
|
View = view;
|
||||||
}
|
}
|
||||||
|
@ -49,27 +51,27 @@ namespace Oyster
|
||||||
{
|
{
|
||||||
if(Lights.size())
|
if(Lights.size())
|
||||||
{
|
{
|
||||||
Render::Rendering::Basic::NewFrame(View, Projection, &Lights[0], (int)Lights.size());
|
Render::DefaultRenderer::NewFrame(View, Projection, Lights[0], (int)Lights.size());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Render::Rendering::Basic::NewFrame(View, Projection, NULL, 0);
|
Render::DefaultRenderer::NewFrame(View, Projection, Definitions::Pointlight(), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void API::RenderScene(Model::Model models[], int count)
|
void API::RenderScene(Model::Model models[], int count)
|
||||||
{
|
{
|
||||||
Render::Rendering::Basic::RenderScene(models,count, View, Projection);
|
Render::DefaultRenderer::RenderScene(models,count, View, Projection, deltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
void API::RenderModel(Model::Model& m)
|
void API::RenderModel(Model::Model* m)
|
||||||
{
|
{
|
||||||
Render::Rendering::Basic::RenderScene(&m,1, View, Projection);
|
Render::DefaultRenderer::RenderScene(m,1, View, Projection, deltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
void API::EndFrame()
|
void API::EndFrame()
|
||||||
{
|
{
|
||||||
Render::Rendering::Basic::EndFrame();
|
Render::DefaultRenderer::EndFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
API::State API::SetOptions(API::Option option)
|
API::State API::SetOptions(API::Option option)
|
||||||
|
@ -85,7 +87,7 @@ namespace Oyster
|
||||||
Model::Model* m = new Model::Model();
|
Model::Model* m = new Model::Model();
|
||||||
m->WorldMatrix = Oyster::Math::Float4x4::identity;
|
m->WorldMatrix = Oyster::Math::Float4x4::identity;
|
||||||
m->Visible = true;
|
m->Visible = true;
|
||||||
m->AnimationPlaying = -1;
|
m->Animation.AnimationPlaying = NULL;
|
||||||
m->info = (Model::ModelInfo*)Core::loader.LoadResource((Core::modelPath + filename).c_str(),Oyster::Graphics::Loading::LoadDAN, Oyster::Graphics::Loading::UnloadDAN);
|
m->info = (Model::ModelInfo*)Core::loader.LoadResource((Core::modelPath + filename).c_str(),Oyster::Graphics::Loading::LoadDAN, Oyster::Graphics::Loading::UnloadDAN);
|
||||||
|
|
||||||
Model::ModelInfo* mi = (Model::ModelInfo*)m->info;
|
Model::ModelInfo* mi = (Model::ModelInfo*)m->info;
|
||||||
|
@ -109,10 +111,12 @@ namespace Oyster
|
||||||
|
|
||||||
void API::Clean()
|
void API::Clean()
|
||||||
{
|
{
|
||||||
|
DeleteModel(Render::DefaultRenderer::cube);
|
||||||
|
DeleteModel(Render::DefaultRenderer::cube2);
|
||||||
SAFE_DELETE(Core::viewPort);
|
SAFE_DELETE(Core::viewPort);
|
||||||
Core::loader.Clean();
|
Core::loader.Clean();
|
||||||
Oyster::Graphics::Core::PipelineManager::Clean();
|
Oyster::Graphics::Core::PipelineManager::Clean();
|
||||||
Oyster::Graphics::Render::Resources::Deffered::Clean();
|
Oyster::Graphics::Render::Resources::Clean();
|
||||||
|
|
||||||
SAFE_RELEASE(Core::depthStencil);
|
SAFE_RELEASE(Core::depthStencil);
|
||||||
SAFE_RELEASE(Core::depthStencilUAV);
|
SAFE_RELEASE(Core::depthStencilUAV);
|
||||||
|
@ -137,9 +141,51 @@ namespace Oyster
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
API::State API::ReloadShaders()
|
API::State API::ReloadShaders()
|
||||||
{
|
{
|
||||||
Render::Resources::Deffered::InitShaders();
|
Render::Resources::InitShaders();
|
||||||
return State::Sucsess;
|
return State::Sucsess;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
API::Option API::GetOption()
|
||||||
|
{
|
||||||
|
Option o;
|
||||||
|
o.BytesUsed = Core::UsedMem;
|
||||||
|
o.modelPath = Core::modelPath;
|
||||||
|
o.texturePath = Core::texturePath;
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
|
||||||
|
void API::StartGuiRender()
|
||||||
|
{
|
||||||
|
Render::Rendering::Gui::BeginRender();
|
||||||
|
}
|
||||||
|
|
||||||
|
void API::RenderGuiElement(API::Texture tex, Math::Float2 pos, Math::Float2 size)
|
||||||
|
{
|
||||||
|
Render::Rendering::Gui::Render((ID3D11ShaderResourceView*)tex,pos,size);
|
||||||
|
}
|
||||||
|
|
||||||
|
API::Texture API::CreateTexture(std::wstring filename)
|
||||||
|
{
|
||||||
|
return Core::loader.LoadResource((Core::texturePath + filename).c_str(),Oyster::Graphics::Loading::LoadTexture, Oyster::Graphics::Loading::UnloadTexture);
|
||||||
|
}
|
||||||
|
|
||||||
|
void API::DeleteTexture(API::Texture tex)
|
||||||
|
{
|
||||||
|
Core::loader.ReleaseResource(tex);
|
||||||
|
}
|
||||||
|
|
||||||
|
float API::PlayAnimation(Model::Model* m, std::wstring name,bool looping)
|
||||||
|
{
|
||||||
|
m->Animation.AnimationPlaying = &(*m->info->Animations.find(name)).second;
|
||||||
|
m->Animation.AnimationTime=0;
|
||||||
|
m->Animation.LoopAnimation = looping;
|
||||||
|
return m->Animation.AnimationPlaying->duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
void API::Update(float dt)
|
||||||
|
{
|
||||||
|
deltaTime = dt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -27,7 +27,9 @@ namespace Oyster
|
||||||
struct Option
|
struct Option
|
||||||
{
|
{
|
||||||
std::wstring modelPath, texturePath;
|
std::wstring modelPath, texturePath;
|
||||||
|
int BytesUsed;
|
||||||
};
|
};
|
||||||
|
typedef void* Texture;
|
||||||
|
|
||||||
static State Init(HWND Window, bool MSAA_Quality, bool Fullscreen, Oyster::Math::Float2 StartResulotion);
|
static State Init(HWND Window, bool MSAA_Quality, bool Fullscreen, Oyster::Math::Float2 StartResulotion);
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
|
@ -40,16 +42,23 @@ namespace Oyster
|
||||||
static void Clean();
|
static void Clean();
|
||||||
|
|
||||||
//! @brief Sets the view matrix to use next frame
|
//! @brief Sets the view matrix to use next frame
|
||||||
static void SetView(Oyster::Math::Float4x4& View);
|
static void SetView(const Oyster::Math::Float4x4& View);
|
||||||
//! @brief Sets the projection matrix to use next frame
|
//! @brief Sets the projection matrix to use next frame
|
||||||
static void SetProjection(Oyster::Math::Float4x4& Projection);
|
static void SetProjection(const Oyster::Math::Float4x4& Projection);
|
||||||
|
|
||||||
//! @brief will internally use last values from SetView and SetProjection
|
//! @brief will internally use last values from SetView and SetProjection
|
||||||
static void NewFrame();
|
static void NewFrame();
|
||||||
//! @brief Renders a list of models
|
//! @brief Renders a list of models
|
||||||
static void RenderScene(Oyster::Graphics::Model::Model models[], int count);
|
static void RenderScene(Oyster::Graphics::Model::Model models[], int count);
|
||||||
//! @brief Renders a single model
|
//! @brief Renders a single model
|
||||||
static void RenderModel(Oyster::Graphics::Model::Model& model);
|
static void RenderModel(Oyster::Graphics::Model::Model* model);
|
||||||
|
|
||||||
|
//! @brief Configures Renderer to process 2D graphics, data will be passed in to EndFrame()
|
||||||
|
static void StartGuiRender();
|
||||||
|
|
||||||
|
//! @brief Renders a single GUI element using the texture provided and the Pos in the center, %based system
|
||||||
|
static void RenderGuiElement(Texture, Math::Float2 Pos, Math::Float2 Size);
|
||||||
|
|
||||||
//! @brief Performs light calculations, post effects and presents the scene
|
//! @brief Performs light calculations, post effects and presents the scene
|
||||||
static void EndFrame();
|
static void EndFrame();
|
||||||
|
|
||||||
|
@ -58,13 +67,25 @@ namespace Oyster
|
||||||
//! @brief deletes a model and relases the models resources
|
//! @brief deletes a model and relases the models resources
|
||||||
static void DeleteModel(Oyster::Graphics::Model::Model* model);
|
static void DeleteModel(Oyster::Graphics::Model::Model* model);
|
||||||
|
|
||||||
|
static Texture CreateTexture(std::wstring filename);
|
||||||
|
static void DeleteTexture(Texture);
|
||||||
|
|
||||||
//! @brief adds a light to the scene
|
//! @brief adds a light to the scene
|
||||||
static void AddLight(Definitions::Pointlight light);
|
static void AddLight(const Definitions::Pointlight light);
|
||||||
//! @brief removes all lights from the scene
|
//! @brief removes all lights from the scene
|
||||||
static void ClearLights();
|
static void ClearLights();
|
||||||
|
|
||||||
//! @brief Sets Options to the graphics, note: currently unused
|
//! @brief Sets Options to the graphics
|
||||||
static State SetOptions(Option);
|
static State SetOptions(Option);
|
||||||
|
|
||||||
|
//! @brief Gets Options from the graphics
|
||||||
|
static Option GetOption();
|
||||||
|
|
||||||
|
//! @brief Starts an animation and returns the time of the animation
|
||||||
|
static float PlayAnimation(Model::Model* model, std::wstring name, bool looping = false);
|
||||||
|
|
||||||
|
//! @brief Moves all animating models forward the specified time;
|
||||||
|
static void Update(float deltaTime);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,22 +135,23 @@ void Oyster::Graphics::Loading::UnloadDAN(void* data)
|
||||||
if(info->Animated)
|
if(info->Animated)
|
||||||
{
|
{
|
||||||
//clean animation
|
//clean animation
|
||||||
delete[] info->bones;
|
for(auto a = info->Animations.begin(); a != info->Animations.end(); ++a)
|
||||||
for(int a = 0; a < info->AnimationCount; ++a)
|
|
||||||
{
|
{
|
||||||
for(int x = 0; x < info->Animations[a].Bones; ++x)
|
for(int x = 0; x < (*a).second.Bones; ++x)
|
||||||
{
|
{
|
||||||
delete[] info->Animations[a].Keyframes[x];
|
delete[] (*a).second.Keyframes[x];
|
||||||
}
|
}
|
||||||
delete[] info->Animations[a].Frames;
|
delete[] (*a).second.Frames;
|
||||||
delete[] info->Animations[a].Keyframes;
|
delete[] (*a).second.Keyframes;
|
||||||
}
|
}
|
||||||
delete[] info->Animations;
|
info->Animations.clear();
|
||||||
}
|
}
|
||||||
for(int i =0;i<info->Material.size();++i)
|
for(UINT i =0;i<info->Material.size();++i)
|
||||||
{
|
{
|
||||||
Core::loader.ReleaseResource(info->Material[i]);
|
Core::loader.ReleaseResource(info->Material[i]);
|
||||||
}
|
}
|
||||||
|
if(info->BoneCount>0)
|
||||||
|
delete[] info->bones;
|
||||||
delete info;
|
delete info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,6 +180,7 @@ void* Oyster::Graphics::Loading::LoadDAN(const wchar_t filename[])
|
||||||
Oyster::Graphics::Model::ModelInfo* modelInfo = new Oyster::Graphics::Model::ModelInfo();
|
Oyster::Graphics::Model::ModelInfo* modelInfo = new Oyster::Graphics::Model::ModelInfo();
|
||||||
modelInfo->Indexed = false;
|
modelInfo->Indexed = false;
|
||||||
modelInfo->Animated = false;
|
modelInfo->Animated = false;
|
||||||
|
modelInfo->BoneCount = 0;
|
||||||
// Open file in binary mode
|
// Open file in binary mode
|
||||||
std::ifstream danFile;
|
std::ifstream danFile;
|
||||||
danFile.open(filename, std::ios::binary);
|
danFile.open(filename, std::ios::binary);
|
||||||
|
@ -349,7 +351,7 @@ void* Oyster::Graphics::Loading::LoadDAN(const wchar_t filename[])
|
||||||
|
|
||||||
Oyster::Graphics::Model::Animation* anims = new Oyster::Graphics::Model::Animation[animationHeader.numAnims];
|
Oyster::Graphics::Model::Animation* anims = new Oyster::Graphics::Model::Animation[animationHeader.numAnims];
|
||||||
|
|
||||||
for(int a = 0; a < animationHeader.numAnims; ++a)
|
for(UINT a = 0; a < animationHeader.numAnims; ++a)
|
||||||
{
|
{
|
||||||
//read name of animation
|
//read name of animation
|
||||||
int nameLength;
|
int nameLength;
|
||||||
|
@ -362,9 +364,6 @@ void* Oyster::Graphics::Loading::LoadDAN(const wchar_t filename[])
|
||||||
name[nameLength] = 0;
|
name[nameLength] = 0;
|
||||||
|
|
||||||
wchar_t* wName = charToWChar(name);
|
wchar_t* wName = charToWChar(name);
|
||||||
anims[a].name = std::wstring(wName);
|
|
||||||
delete[] wName;
|
|
||||||
delete name;
|
|
||||||
|
|
||||||
//read nr of bones in animation
|
//read nr of bones in animation
|
||||||
ReadData(&anims[a].Bones,danFile,4);
|
ReadData(&anims[a].Bones,danFile,4);
|
||||||
|
@ -397,17 +396,18 @@ void* Oyster::Graphics::Loading::LoadDAN(const wchar_t filename[])
|
||||||
anims[a].Keyframes[b][f].bone.Parent = boneIndex;
|
anims[a].Keyframes[b][f].bone.Parent = boneIndex;
|
||||||
|
|
||||||
//read bone transform
|
//read bone transform
|
||||||
ReadData(&anims[a].Keyframes[b][f].bone.Transform,danFile,sizeof(Oyster::Math::Matrix));
|
ReadData(&anims[a].Keyframes[b][f].bone.Relative, danFile, sizeof(Math::Matrix));
|
||||||
|
|
||||||
|
|
||||||
ReadData(&anims[a].Keyframes[b][f].time,danFile,sizeof(double));
|
ReadData(&anims[a].Keyframes[b][f].time,danFile,sizeof(double));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
modelInfo->AnimationCount = animationHeader.numAnims;
|
|
||||||
modelInfo->Animations = anims;
|
|
||||||
modelInfo->Animated = true;
|
|
||||||
|
|
||||||
|
modelInfo->Animations.insert(std::pair<std::wstring,Model::Animation>(std::wstring(wName), anims[a]));
|
||||||
|
delete[] wName;
|
||||||
|
delete name;
|
||||||
|
}
|
||||||
|
modelInfo->Animated = true;
|
||||||
|
delete[] anims;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,7 @@ void Oyster::Graphics::Loading::UnloadOBJ(void* data)
|
||||||
{
|
{
|
||||||
SAFE_DELETE(info->Indecies);
|
SAFE_DELETE(info->Indecies);
|
||||||
}
|
}
|
||||||
for(int i =0;i<info->Material.size();++i)
|
for(UINT i =0;i<info->Material.size();++i)
|
||||||
{
|
{
|
||||||
Core::loader.ReleaseResource(info->Material[i]);
|
Core::loader.ReleaseResource(info->Material[i]);
|
||||||
}
|
}
|
||||||
|
@ -690,6 +690,7 @@ static HRESULT CreateTextureFromWIC( _In_ ID3D11Device* d3dDevice,
|
||||||
|
|
||||||
SRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
|
SRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
|
||||||
SRVDesc.Texture2D.MipLevels = (autogen) ? -1 : 1;
|
SRVDesc.Texture2D.MipLevels = (autogen) ? -1 : 1;
|
||||||
|
//TODO calc mipmap data
|
||||||
|
|
||||||
hr = d3dDevice->CreateShaderResourceView( tex, &SRVDesc, textureView );
|
hr = d3dDevice->CreateShaderResourceView( tex, &SRVDesc, textureView );
|
||||||
if ( FAILED(hr) )
|
if ( FAILED(hr) )
|
||||||
|
@ -697,6 +698,9 @@ static HRESULT CreateTextureFromWIC( _In_ ID3D11Device* d3dDevice,
|
||||||
tex->Release();
|
tex->Release();
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
//todo check calc
|
||||||
|
int TexSize = twidth * theight * bpp;
|
||||||
|
Oyster::Graphics::Core::UsedMem += TexSize;
|
||||||
|
|
||||||
if ( autogen )
|
if ( autogen )
|
||||||
{
|
{
|
||||||
|
|
|
@ -146,6 +146,7 @@ namespace Oyster
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Core::UsedMem += data.size;
|
||||||
return Core::PipelineManager::CreateShader(data, Core::PipelineManager::ShaderType(type));
|
return Core::PipelineManager::CreateShader(data, Core::PipelineManager::ShaderType(type));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,13 +10,21 @@ namespace Oyster
|
||||||
namespace Model
|
namespace Model
|
||||||
{
|
{
|
||||||
struct ModelInfo;
|
struct ModelInfo;
|
||||||
|
|
||||||
|
struct Animation;
|
||||||
|
|
||||||
|
struct AnimationData
|
||||||
|
{
|
||||||
|
Animation* AnimationPlaying;
|
||||||
|
float AnimationTime;
|
||||||
|
bool LoopAnimation;
|
||||||
|
};
|
||||||
struct Model
|
struct Model
|
||||||
{
|
{
|
||||||
ModelInfo* info;
|
ModelInfo* info;
|
||||||
Oyster::Math::Float4x4 WorldMatrix;
|
Oyster::Math::Float4x4 WorldMatrix;
|
||||||
bool Visible, LoopAnimation;
|
bool Visible;
|
||||||
int AnimationPlaying;
|
AnimationData Animation;
|
||||||
float AnimationTime;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,8 @@ namespace Oyster
|
||||||
{
|
{
|
||||||
struct Bone
|
struct Bone
|
||||||
{
|
{
|
||||||
Math::Float4x4 Transform;
|
Math::Matrix Relative;
|
||||||
|
Math::Matrix Absolute;
|
||||||
int Parent;
|
int Parent;
|
||||||
};
|
};
|
||||||
struct Frame
|
struct Frame
|
||||||
|
@ -23,7 +24,6 @@ namespace Oyster
|
||||||
};
|
};
|
||||||
struct Animation
|
struct Animation
|
||||||
{
|
{
|
||||||
std::wstring name;
|
|
||||||
int Bones;
|
int Bones;
|
||||||
int* Frames; //! Bone as index
|
int* Frames; //! Bone as index
|
||||||
Frame** Keyframes; //! @brief [Bone][Frame]
|
Frame** Keyframes; //! @brief [Bone][Frame]
|
||||||
|
@ -36,7 +36,7 @@ namespace Oyster
|
||||||
bool Indexed, Animated;
|
bool Indexed, Animated;
|
||||||
int VertexCount, IndexCount, BoneCount, AnimationCount;
|
int VertexCount, IndexCount, BoneCount, AnimationCount;
|
||||||
Bone* bones;
|
Bone* bones;
|
||||||
Animation* Animations;
|
std::map<std::wstring,Animation> Animations;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
#include "Buffers.h"
|
|
||||||
|
|
||||||
namespace Oyster
|
|
||||||
{
|
|
||||||
namespace Resources
|
|
||||||
{
|
|
||||||
Buffer Buffers::V2DSprites = Buffer();
|
|
||||||
Buffer Buffers::CbufferVS = Buffer();
|
|
||||||
Buffer Buffers::CBufferGs = Buffer();
|
|
||||||
Buffer Buffers::CBufferPipelineCs = Buffer();
|
|
||||||
|
|
||||||
void Buffers::Init()
|
|
||||||
{
|
|
||||||
Buffer::BUFFER_INIT_DESC desc;
|
|
||||||
|
|
||||||
desc.ElementSize=sizeof(Math::Float2);
|
|
||||||
desc.NumElements=1;
|
|
||||||
desc.Type = Buffer::BUFFER_TYPE::VERTEX_BUFFER;
|
|
||||||
desc.Usage = Buffer::BUFFER_USAGE::BUFFER_DEFAULT;
|
|
||||||
desc.InitData = &Math::Float2(0,0);
|
|
||||||
|
|
||||||
V2DSprites.Init(desc);
|
|
||||||
|
|
||||||
desc.Type=Buffer::BUFFER_TYPE::CONSTANT_BUFFER_VS;
|
|
||||||
desc.Usage = Buffer::BUFFER_USAGE::BUFFER_CPU_WRITE_DISCARD;
|
|
||||||
desc.ElementSize=sizeof(Math::Float4x4);
|
|
||||||
desc.InitData=0;
|
|
||||||
|
|
||||||
CbufferVS.Init(desc);
|
|
||||||
|
|
||||||
desc.Type = Buffer::BUFFER_TYPE::CONSTANT_BUFFER_GS;
|
|
||||||
|
|
||||||
CBufferGs.Init(desc);
|
|
||||||
|
|
||||||
desc.ElementSize=sizeof(Oyster::Resources::BufferDefinitions::LightStructureBuffer);
|
|
||||||
desc.NumElements=1;
|
|
||||||
desc.Type = Buffer::BUFFER_TYPE::CONSTANT_BUFFER_CS;
|
|
||||||
desc.Usage = Buffer::BUFFER_USAGE::BUFFER_CPU_WRITE_DISCARD;
|
|
||||||
desc.InitData = NULL;
|
|
||||||
|
|
||||||
CBufferPipelineCs.Init(desc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "../EngineIncludes.h"
|
|
||||||
|
|
||||||
namespace Oyster
|
|
||||||
{
|
|
||||||
namespace Resources
|
|
||||||
{
|
|
||||||
struct Buffers
|
|
||||||
{
|
|
||||||
static Buffer V2DSprites;
|
|
||||||
|
|
||||||
static Buffer CbufferVS;
|
|
||||||
|
|
||||||
static Buffer CBufferGs;
|
|
||||||
|
|
||||||
static Buffer CBufferPipelineCs;
|
|
||||||
|
|
||||||
static void Init();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
|
|
||||||
#include "..\EngineIncludes.h"
|
|
||||||
|
|
||||||
namespace Oyster
|
|
||||||
{
|
|
||||||
namespace Resources
|
|
||||||
{
|
|
||||||
|
|
||||||
namespace BufferDefinitions
|
|
||||||
{
|
|
||||||
struct LightStructureBuffer
|
|
||||||
{
|
|
||||||
::Oyster::Math::Float4x4 viewMatrix, projectionMatrix;
|
|
||||||
::LinearAlgebra::Vector3<unsigned int> numDispatches;
|
|
||||||
unsigned int reservedPadding;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ScreenTileFrustrum
|
|
||||||
{
|
|
||||||
::Oyster::Math::Float rawElement[6 * 4];
|
|
||||||
};
|
|
||||||
|
|
||||||
class PointLightDescription
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
struct{ ::Oyster::Math::Float3 center; ::Oyster::Math::Float radius; } pos;
|
|
||||||
::Oyster::Math::Float3 color;
|
|
||||||
::Oyster::Math::Float intensty;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,47 +0,0 @@
|
||||||
#include "Manager.h"
|
|
||||||
|
|
||||||
std::unordered_map< std::string, Oyster::Render::ModelInfo*> Oyster::Resources::Manager::loadedModels = std::unordered_map< std::string, Oyster::Render::ModelInfo*>();
|
|
||||||
|
|
||||||
Oyster::Render::Model* Oyster::Resources::Manager::LoadModel(std::string Filename, Matrix Scale)
|
|
||||||
{
|
|
||||||
////TODO: Add redundncy sheck, to ensure not recreating model
|
|
||||||
|
|
||||||
////Loop to find filename
|
|
||||||
|
|
||||||
////If found Return Model
|
|
||||||
|
|
||||||
////else Create Model
|
|
||||||
|
|
||||||
//Oyster::FileLoaders::ObjReader *reader = Oyster::FileLoaders::ObjReader::LoadFile(Filename, Scale);
|
|
||||||
//Oyster::FileLoaders::ObjReader::Vertex** vertex = new Oyster::FileLoaders::ObjReader::Vertex*[1];
|
|
||||||
//int vcount;
|
|
||||||
//std::map<std::string,ID3D11ShaderResourceView *> textures;
|
|
||||||
//reader->GetVertexData( vertex, vcount, textures );
|
|
||||||
|
|
||||||
//Oyster::Buffer::BUFFER_INIT_DESC desc;
|
|
||||||
//desc.ElementSize=sizeof(Oyster::FileLoaders::ObjReader::Vertex);
|
|
||||||
//desc.NumElements = vcount;
|
|
||||||
//desc.InitData = *vertex;
|
|
||||||
//desc.Type = Oyster::Buffer::VERTEX_BUFFER;
|
|
||||||
//desc.Usage = Oyster::Buffer::BUFFER_DEFAULT;
|
|
||||||
//
|
|
||||||
//ID3D11ShaderResourceView *srv = textures["Diffuse"];
|
|
||||||
|
|
||||||
//Oyster::Render::ModelInfo* m = new Oyster::Render::ModelInfo();
|
|
||||||
//
|
|
||||||
//m->Vertices = *(Oyster::Engine::Init::Buffers::CreateBuffer(desc));
|
|
||||||
//m->VertexCount = vcount;
|
|
||||||
//m->Material.push_back(srv);
|
|
||||||
//srv = textures["Specular"];
|
|
||||||
//m->Material.push_back(srv);
|
|
||||||
//srv = textures["Glow"];
|
|
||||||
//m->Material.push_back(srv);
|
|
||||||
//m->Indexed=false;
|
|
||||||
//
|
|
||||||
//Oyster::Render::Model* model = new Oyster::Render::Model();
|
|
||||||
//model->info=m;
|
|
||||||
//model->Visible = true;
|
|
||||||
//model->World = &Oyster::Math::Float4x4(Oyster::Math::Float4x4::identity);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "../EngineIncludes.h"
|
|
||||||
#include <unordered_map>
|
|
||||||
|
|
||||||
namespace Oyster
|
|
||||||
{
|
|
||||||
namespace Resources
|
|
||||||
{
|
|
||||||
struct Manager
|
|
||||||
{
|
|
||||||
//Expects to be deleted either trough manager or after a clean
|
|
||||||
static Oyster::Render::Model* LoadModel(std::string Filename, Matrix Scale);
|
|
||||||
static void Clean();
|
|
||||||
|
|
||||||
private:
|
|
||||||
static std::unordered_map< std::string, Oyster::Render::ModelInfo*> loadedModels;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,228 +0,0 @@
|
||||||
#include "PipelineResources.h"
|
|
||||||
|
|
||||||
using namespace Oyster::Resources;
|
|
||||||
|
|
||||||
ID3D11UnorderedAccessView* PipeLineResourses::TempUav = 0;
|
|
||||||
ID3D11ShaderResourceView* PipeLineResourses::TempSrv = 0;
|
|
||||||
|
|
||||||
ID3D11ShaderResourceView* PipeLineResourses::GeometryOut[5] = {0};
|
|
||||||
ID3D11RenderTargetView* PipeLineResourses::GeometryTarget[5] = {0};
|
|
||||||
|
|
||||||
ID3D11ShaderResourceView* PipeLineResourses::ComputeResources[4] = {0};
|
|
||||||
Oyster::Buffer* PipeLineResourses::Resources[2] = {0};
|
|
||||||
|
|
||||||
ID3D11ShaderResourceView* PipeLineResourses::LightOut[4] = {0};
|
|
||||||
ID3D11UnorderedAccessView* PipeLineResourses::LightTarget[4] = {0};
|
|
||||||
|
|
||||||
ID3D11RenderTargetView* PipeLineResourses::RtvNulls[16] = {0};
|
|
||||||
ID3D11ShaderResourceView* PipeLineResourses::SrvNulls[16] = {0};
|
|
||||||
ID3D11UnorderedAccessView* PipeLineResourses::uavNULL[16] = {0};
|
|
||||||
|
|
||||||
//Oyster::Collision3D::Frustrum* PipeLineResourses::SubFrustrums = 0;
|
|
||||||
int PipeLineResourses::FrustrumSize = 0;
|
|
||||||
LinearAlgebra::Vector3<unsigned int> PipeLineResourses::FrustrumDimensions = LinearAlgebra::Vector3<unsigned int>();
|
|
||||||
|
|
||||||
Oyster::Resources::BufferDefinitions::LightStructureBuffer PipeLineResourses::LightData = Oyster::Resources::BufferDefinitions::LightStructureBuffer();
|
|
||||||
|
|
||||||
void PipeLineResourses::Init(int sizeX, int sizeY)
|
|
||||||
{
|
|
||||||
InitGeometry(sizeX, sizeY);
|
|
||||||
|
|
||||||
InitSSAOData();
|
|
||||||
InitSubFrustrums(sizeX, sizeY);
|
|
||||||
InitPointLights();
|
|
||||||
InitLightData();
|
|
||||||
|
|
||||||
InitLighting(sizeX, sizeY);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PipeLineResourses::InitGeometry(int sizeX, int sizeY)
|
|
||||||
{
|
|
||||||
D3D11_TEXTURE2D_DESC Tdesc;
|
|
||||||
Tdesc.Width = sizeX;
|
|
||||||
Tdesc.Height = sizeY;
|
|
||||||
Tdesc.MipLevels = Tdesc.ArraySize = 1;
|
|
||||||
Tdesc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT;
|
|
||||||
Tdesc.SampleDesc.Count = 1;
|
|
||||||
Tdesc.SampleDesc.Quality=0;
|
|
||||||
Tdesc.Usage = D3D11_USAGE_DEFAULT;
|
|
||||||
Tdesc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET;
|
|
||||||
Tdesc.CPUAccessFlags = 0;
|
|
||||||
Tdesc.MiscFlags = 0;
|
|
||||||
|
|
||||||
ID3D11Texture2D *pTexture;
|
|
||||||
HRESULT hr;
|
|
||||||
|
|
||||||
//Geometry stage resourses
|
|
||||||
for( int i = 0; i < 5; ++i )
|
|
||||||
{
|
|
||||||
hr = Oyster::Core::Device->CreateTexture2D( &Tdesc, NULL, &pTexture );
|
|
||||||
hr = Oyster::Core::Device->CreateShaderResourceView(pTexture,0,&GeometryOut[i]);
|
|
||||||
hr = Oyster::Core::Device->CreateRenderTargetView(pTexture,0,&GeometryTarget[i]);
|
|
||||||
pTexture->Release();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PipeLineResourses::InitSSAOData()
|
|
||||||
{
|
|
||||||
//create Half Spheres and Random Data
|
|
||||||
|
|
||||||
Oyster::Buffer::BUFFER_INIT_DESC desc;
|
|
||||||
HRESULT hr;
|
|
||||||
|
|
||||||
int NrOfSamples = Oyster::Engine::States::GetNrOfSSAOSamples();
|
|
||||||
int SampleSpread = Oyster::Engine::States::GetSSAOSampleSpread();
|
|
||||||
|
|
||||||
Oyster::Math::Vector3* kernel = new Oyster::Math::Vector3[ NrOfSamples ];
|
|
||||||
Oyster::Math::Vector3* random = new Oyster::Math::Vector3[ SampleSpread ];
|
|
||||||
|
|
||||||
for(int i = 0; i < NrOfSamples; ++i)
|
|
||||||
{
|
|
||||||
kernel[i] = Oyster::Math::Vector3::null;
|
|
||||||
while( kernel[i] == Oyster::Math::Vector3::null )
|
|
||||||
{
|
|
||||||
kernel[i] = Oyster::Math::Vector3(
|
|
||||||
(float)rand() / (RAND_MAX + 1) * (1 - -1) + -1,
|
|
||||||
(float)rand() / (RAND_MAX + 1) * (1 - -1) + -1,
|
|
||||||
(float)rand() / (RAND_MAX + 1) * (1 - 0) + 0);
|
|
||||||
}
|
|
||||||
kernel[i].Normalize();
|
|
||||||
|
|
||||||
float scale = float(i) / float(NrOfSamples);
|
|
||||||
scale = (0.1f*(1 - scale * scale) + 1.0f *( scale * scale));
|
|
||||||
kernel[i] *= scale;
|
|
||||||
|
|
||||||
if( i < SampleSpread)
|
|
||||||
{
|
|
||||||
random[i] = Oyster::Math::Vector3::null;
|
|
||||||
while( random[i] == Oyster::Math::Vector3::null )
|
|
||||||
{
|
|
||||||
random[i] = Oyster::Math::Vector3(
|
|
||||||
(float)rand() / (RAND_MAX + 1) * (1 - -1)+ -1,
|
|
||||||
(float)rand() / (RAND_MAX + 1) * (1 - -1)+ -1,
|
|
||||||
0.0f);
|
|
||||||
}
|
|
||||||
random[i].Normalize();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
D3D11_TEXTURE1D_DESC T1desc;
|
|
||||||
T1desc.Width = NrOfSamples;
|
|
||||||
T1desc.MipLevels = T1desc.ArraySize = 1;
|
|
||||||
T1desc.Format = DXGI_FORMAT_R32G32B32_FLOAT;
|
|
||||||
T1desc.Usage = D3D11_USAGE_DEFAULT;
|
|
||||||
T1desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
|
|
||||||
T1desc.CPUAccessFlags = 0;
|
|
||||||
T1desc.MiscFlags = 0;
|
|
||||||
|
|
||||||
D3D11_SUBRESOURCE_DATA sphere;
|
|
||||||
sphere.pSysMem = kernel;
|
|
||||||
|
|
||||||
D3D11_SUBRESOURCE_DATA rnd;
|
|
||||||
rnd.pSysMem = random;
|
|
||||||
|
|
||||||
|
|
||||||
ID3D11Texture1D *pTexture1[2];
|
|
||||||
|
|
||||||
hr = Oyster::Core::Device->CreateTexture1D( &T1desc, &sphere, &pTexture1[0] );
|
|
||||||
hr = Oyster::Core::Device->CreateShaderResourceView( pTexture1[0], 0, &ComputeResources[3] );
|
|
||||||
pTexture1[0]->Release();
|
|
||||||
delete[] kernel;
|
|
||||||
|
|
||||||
T1desc.Width = SampleSpread;
|
|
||||||
hr = Oyster::Core::Device->CreateTexture1D( &T1desc, &rnd, &pTexture1[1] );
|
|
||||||
hr = Oyster::Core::Device->CreateShaderResourceView( (pTexture1[1]), 0, &ComputeResources[2] );
|
|
||||||
pTexture1[1]->Release();
|
|
||||||
delete[] random;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PipeLineResourses::InitSubFrustrums(int sizeX, int sizeY)
|
|
||||||
{
|
|
||||||
FrustrumDimensions.x = (sizeX + 15U) / 16U;
|
|
||||||
FrustrumDimensions.y = (sizeY + 15U) / 16U;
|
|
||||||
FrustrumDimensions.z = 1;
|
|
||||||
FrustrumSize = FrustrumDimensions.x * FrustrumDimensions.y * FrustrumDimensions.z;
|
|
||||||
//if(SubFrustrums!=0)
|
|
||||||
//delete[] SubFrustrums;
|
|
||||||
//SubFrustrums = new Collision3D::Frustrum[ FrustrumSize ];
|
|
||||||
|
|
||||||
Oyster::Buffer::BUFFER_INIT_DESC desc;
|
|
||||||
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
|
|
||||||
|
|
||||||
//buffer description for SubFrustrums
|
|
||||||
desc.Usage = Oyster::Buffer::BUFFER_CPU_WRITE_DISCARD;
|
|
||||||
desc.Type = Oyster::Buffer::STRUCTURED_BUFFER;
|
|
||||||
desc.ElementSize = sizeof( ::Oyster::Resources::BufferDefinitions::ScreenTileFrustrum);
|
|
||||||
desc.NumElements = FrustrumSize;
|
|
||||||
desc.InitData = NULL;
|
|
||||||
|
|
||||||
//create matching srv
|
|
||||||
srvDesc.ViewDimension = D3D11_SRV_DIMENSION_BUFFER;
|
|
||||||
srvDesc.Format = DXGI_FORMAT_UNKNOWN;
|
|
||||||
srvDesc.Buffer.FirstElement = 0;
|
|
||||||
srvDesc.Buffer.NumElements = FrustrumSize;
|
|
||||||
|
|
||||||
PipeLineResourses::Resources[0] = Oyster::Engine::Init::Buffers::CreateBuffer(desc);
|
|
||||||
|
|
||||||
HRESULT hr = Oyster::Core::Device->CreateShaderResourceView( *PipeLineResourses::Resources[0], &srvDesc, &Oyster::Resources::PipeLineResourses::ComputeResources[0] );
|
|
||||||
}
|
|
||||||
|
|
||||||
void PipeLineResourses::InitPointLights()
|
|
||||||
{
|
|
||||||
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
|
|
||||||
Oyster::Buffer::BUFFER_INIT_DESC desc;
|
|
||||||
HRESULT hr;
|
|
||||||
|
|
||||||
//buffer description for pointlight
|
|
||||||
desc.Usage = Oyster::Buffer::BUFFER_CPU_WRITE_DISCARD;
|
|
||||||
desc.Type = Oyster::Buffer::STRUCTURED_BUFFER;
|
|
||||||
desc.ElementSize = sizeof(Oyster::Resources::BufferDefinitions::PointLightDescription);
|
|
||||||
desc.NumElements = Oyster::Engine::States::GetMaxPointlights();
|
|
||||||
desc.InitData = NULL;
|
|
||||||
|
|
||||||
PipeLineResourses::Resources[1] = Oyster::Engine::Init::Buffers::CreateBuffer(desc);
|
|
||||||
|
|
||||||
//create matching srv
|
|
||||||
srvDesc.ViewDimension = D3D11_SRV_DIMENSION_BUFFER;
|
|
||||||
srvDesc.Format = DXGI_FORMAT_UNKNOWN;
|
|
||||||
srvDesc.Buffer.FirstElement = 0;
|
|
||||||
srvDesc.Buffer.NumElements = Oyster::Engine::States::GetMaxPointlights();
|
|
||||||
|
|
||||||
hr = Oyster::Core::Device->CreateShaderResourceView( *PipeLineResourses::Resources[1], &srvDesc, &Oyster::Resources::PipeLineResourses::ComputeResources[1] );
|
|
||||||
}
|
|
||||||
|
|
||||||
void PipeLineResourses::InitLightData()
|
|
||||||
{
|
|
||||||
LightData.numDispatches = FrustrumDimensions;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PipeLineResourses::InitLighting(int sizeX, int sizeY)
|
|
||||||
{
|
|
||||||
D3D11_TEXTURE2D_DESC Tdesc;
|
|
||||||
Tdesc.Width = sizeX;
|
|
||||||
Tdesc.Height = sizeY;
|
|
||||||
Tdesc.MipLevels = Tdesc.ArraySize = 1;
|
|
||||||
Tdesc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT;
|
|
||||||
Tdesc.SampleDesc.Count = 1;
|
|
||||||
Tdesc.SampleDesc.Quality=0;
|
|
||||||
Tdesc.Usage = D3D11_USAGE_DEFAULT;
|
|
||||||
Tdesc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_UNORDERED_ACCESS;
|
|
||||||
Tdesc.CPUAccessFlags = 0;
|
|
||||||
Tdesc.MiscFlags = 0;
|
|
||||||
|
|
||||||
ID3D11Texture2D *pTexture;
|
|
||||||
HRESULT hr;
|
|
||||||
for(int i = 0; i < 4; ++i )
|
|
||||||
{
|
|
||||||
hr = Oyster::Core::Device->CreateTexture2D( &Tdesc, NULL, &pTexture );
|
|
||||||
hr = Oyster::Core::Device->CreateShaderResourceView( pTexture, 0, &(LightOut[i]) );
|
|
||||||
hr = Oyster::Core::Device->CreateUnorderedAccessView( pTexture, 0, &(LightTarget[i]) );
|
|
||||||
pTexture->Release();
|
|
||||||
}
|
|
||||||
|
|
||||||
hr = Oyster::Core::Device->CreateTexture2D( &Tdesc, NULL, &pTexture );
|
|
||||||
hr = Oyster::Core::Device->CreateShaderResourceView( pTexture, 0, &TempSrv );
|
|
||||||
hr = Oyster::Core::Device->CreateUnorderedAccessView( pTexture, 0, &TempUav );
|
|
||||||
pTexture->Release();
|
|
||||||
}
|
|
|
@ -1,66 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#ifndef PipeLineResources_H
|
|
||||||
#define PipeLineResources_H
|
|
||||||
|
|
||||||
#include "..\EngineIncludes.h"
|
|
||||||
|
|
||||||
namespace Oyster
|
|
||||||
{
|
|
||||||
namespace Resources
|
|
||||||
{
|
|
||||||
struct PipeLineResourses
|
|
||||||
{
|
|
||||||
//0 = Diffuse
|
|
||||||
//1 = Specular
|
|
||||||
//2 = Glow
|
|
||||||
//3 = Pos
|
|
||||||
//4 = Normal
|
|
||||||
static ID3D11ShaderResourceView* GeometryOut[5];
|
|
||||||
static ID3D11RenderTargetView* GeometryTarget[5];
|
|
||||||
|
|
||||||
|
|
||||||
//0 = TileBuffer
|
|
||||||
//1 = PointList
|
|
||||||
//2 = Random
|
|
||||||
//3 = Sphere
|
|
||||||
static ID3D11ShaderResourceView* ComputeResources[4];
|
|
||||||
static Oyster::Buffer* Resources[2];
|
|
||||||
|
|
||||||
|
|
||||||
//0 = Diffuse
|
|
||||||
//1 = Specular
|
|
||||||
//2 = Glow
|
|
||||||
//3 = SSAO
|
|
||||||
static ID3D11ShaderResourceView* LightOut[4];
|
|
||||||
static ID3D11UnorderedAccessView* LightTarget[4];
|
|
||||||
|
|
||||||
//0 = BlurTempStorage
|
|
||||||
static ID3D11UnorderedAccessView* TempUav;
|
|
||||||
static ID3D11ShaderResourceView* TempSrv;
|
|
||||||
|
|
||||||
static ID3D11RenderTargetView* RtvNulls[16];
|
|
||||||
static ID3D11ShaderResourceView* SrvNulls[16];
|
|
||||||
static ID3D11UnorderedAccessView* uavNULL[16];
|
|
||||||
|
|
||||||
//static Oyster::Collision3D::Frustrum* SubFrustrums;
|
|
||||||
static int FrustrumSize;
|
|
||||||
static LinearAlgebra::Vector3<unsigned int> FrustrumDimensions;
|
|
||||||
|
|
||||||
static Oyster::Resources::BufferDefinitions::LightStructureBuffer LightData;
|
|
||||||
|
|
||||||
static void Init(int sizeX, int sizeY);
|
|
||||||
|
|
||||||
static void InitGeometry(int sizeX, int sizeY);
|
|
||||||
|
|
||||||
static void InitSSAOData();
|
|
||||||
static void InitSubFrustrums(int sizeX, int sizeY);
|
|
||||||
static void InitPointLights();
|
|
||||||
static void InitLightData();
|
|
||||||
|
|
||||||
static void InitLighting(int sizeX, int sizeY);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,100 +0,0 @@
|
||||||
#include "ShaderEffects.h"
|
|
||||||
|
|
||||||
namespace Oyster
|
|
||||||
{
|
|
||||||
namespace Resources
|
|
||||||
{
|
|
||||||
Core::ShaderManager::ShaderEffect ShaderEffects::BasicSprite = Core::ShaderManager::ShaderEffect();
|
|
||||||
Core::ShaderManager::ShaderEffect ShaderEffects::Text2DEffect = Core::ShaderManager::ShaderEffect();
|
|
||||||
Core::ShaderManager::ShaderEffect ShaderEffects::ModelEffect = Core::ShaderManager::ShaderEffect();
|
|
||||||
|
|
||||||
void ShaderEffects::Init()
|
|
||||||
{
|
|
||||||
BasicSprite.IAStage.Topology = D3D11_PRIMITIVE_TOPOLOGY_POINTLIST;
|
|
||||||
BasicSprite.Shaders.Vertex = Oyster::Core::ShaderManager::Get::Vertex(L"2D");
|
|
||||||
BasicSprite.Shaders.Geometry = Oyster::Core::ShaderManager::Get::Geometry(L"2D");
|
|
||||||
BasicSprite.Shaders.Pixel = Oyster::Core::ShaderManager::Get::Pixel(L"Texture0");
|
|
||||||
|
|
||||||
D3D11_BLEND_DESC blendDesc;
|
|
||||||
blendDesc.AlphaToCoverageEnable=false;
|
|
||||||
blendDesc.IndependentBlendEnable=false;
|
|
||||||
blendDesc.RenderTarget[0].BlendEnable=true;
|
|
||||||
|
|
||||||
blendDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;
|
|
||||||
blendDesc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
|
|
||||||
blendDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
|
|
||||||
|
|
||||||
blendDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE;
|
|
||||||
blendDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ONE;
|
|
||||||
blendDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_MAX;
|
|
||||||
|
|
||||||
blendDesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;
|
|
||||||
|
|
||||||
ID3D11BlendState* blender;
|
|
||||||
|
|
||||||
Oyster::Core::Device->CreateBlendState(&blendDesc,&blender);
|
|
||||||
|
|
||||||
BasicSprite.RenderStates.BlendState = blender;
|
|
||||||
|
|
||||||
ID3D11InputLayout* layout;
|
|
||||||
|
|
||||||
Oyster::Core::ShaderManager::CreateInputLayout(SpriteVertexDesc,1,Oyster::Core::ShaderManager::Get::Vertex(L"2D"),layout);
|
|
||||||
|
|
||||||
BasicSprite.IAStage.Layout = layout;
|
|
||||||
|
|
||||||
Text2DEffect.IAStage.Topology=D3D11_PRIMITIVE_TOPOLOGY_POINTLIST;
|
|
||||||
Text2DEffect.Shaders.Vertex = Oyster::Core::ShaderManager::Get::Vertex(L"Text");
|
|
||||||
Text2DEffect.Shaders.Geometry = Oyster::Core::ShaderManager::Get::Geometry(L"Text");
|
|
||||||
Text2DEffect.Shaders.Pixel = Oyster::Core::ShaderManager::Get::Pixel(L"Texture0");
|
|
||||||
|
|
||||||
Oyster::Core::ShaderManager::CreateInputLayout(Text2DDesc,3,Oyster::Core::ShaderManager::Get::Vertex(L"Text"),layout);
|
|
||||||
|
|
||||||
Text2DEffect.IAStage.Layout = layout;
|
|
||||||
|
|
||||||
blendDesc.AlphaToCoverageEnable = true;
|
|
||||||
Oyster::Core::Device->CreateBlendState(&blendDesc,&blender);
|
|
||||||
Text2DEffect.RenderStates.BlendState = blender;
|
|
||||||
|
|
||||||
ModelEffect.IAStage.Topology = D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST;
|
|
||||||
Oyster::Core::ShaderManager::CreateInputLayout(ModelDesc,3,Oyster::Core::ShaderManager::Get::Vertex(L"OBJ"),layout);
|
|
||||||
ModelEffect.IAStage.Layout = layout;
|
|
||||||
|
|
||||||
ModelEffect.Shaders.Vertex = Oyster::Core::ShaderManager::Get::Vertex(L"OBJ");
|
|
||||||
ModelEffect.Shaders.Pixel = Oyster::Core::ShaderManager::Get::Pixel(L"OBJDEF");
|
|
||||||
|
|
||||||
Oyster::Buffer::BUFFER_INIT_DESC desc;
|
|
||||||
|
|
||||||
desc.ElementSize=sizeof(Oyster::Math::Float4x4);
|
|
||||||
desc.NumElements = 1;
|
|
||||||
desc.Usage = Oyster::Buffer::BUFFER_CPU_WRITE_DISCARD;
|
|
||||||
desc.Type = Oyster::Buffer::CONSTANT_BUFFER_VS;
|
|
||||||
desc.InitData = NULL;
|
|
||||||
|
|
||||||
ModelEffect.CBuffers.Vertex.push_back(Oyster::Engine::Init::Buffers::CreateBuffer(desc));
|
|
||||||
ModelEffect.CBuffers.Vertex.push_back(Oyster::Engine::Init::Buffers::CreateBuffer(desc));
|
|
||||||
|
|
||||||
//use Oyster::Resources::Buffers::CbufferVS for per object data
|
|
||||||
//perObject = Oyster::Engine::Init::Buffers::CreateBuffer(desc);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
D3D11_INPUT_ELEMENT_DESC ShaderEffects::SpriteVertexDesc[1] =
|
|
||||||
{
|
|
||||||
{"POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0},
|
|
||||||
};
|
|
||||||
|
|
||||||
D3D11_INPUT_ELEMENT_DESC ShaderEffects::Text2DDesc[3] =
|
|
||||||
{
|
|
||||||
{"Position",0, DXGI_FORMAT_R32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0},
|
|
||||||
{"Offset",0, DXGI_FORMAT_R32_SINT, 0, 4, D3D11_INPUT_PER_VERTEX_DATA, 0},
|
|
||||||
{"CharOffset",0, DXGI_FORMAT_R32_FLOAT, 0, 8, D3D11_INPUT_PER_VERTEX_DATA, 0},
|
|
||||||
};
|
|
||||||
|
|
||||||
D3D11_INPUT_ELEMENT_DESC ShaderEffects::ModelDesc[3] =
|
|
||||||
{
|
|
||||||
{"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0},
|
|
||||||
{"NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0},
|
|
||||||
{"TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 24, D3D11_INPUT_PER_VERTEX_DATA, 0},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "../Engine.h"
|
|
||||||
#include "Buffers.h"
|
|
||||||
|
|
||||||
namespace Oyster
|
|
||||||
{
|
|
||||||
namespace Resources
|
|
||||||
{
|
|
||||||
struct ShaderEffects
|
|
||||||
{
|
|
||||||
static Oyster::Core::ShaderManager::ShaderEffect BasicSprite;
|
|
||||||
static Oyster::Core::ShaderManager::ShaderEffect Text2DEffect;
|
|
||||||
static Oyster::Core::ShaderManager::ShaderEffect ModelEffect;
|
|
||||||
|
|
||||||
static void Init();
|
|
||||||
|
|
||||||
static D3D11_INPUT_ELEMENT_DESC SpriteVertexDesc[1];
|
|
||||||
static D3D11_INPUT_ELEMENT_DESC Text2DDesc[3];
|
|
||||||
static D3D11_INPUT_ELEMENT_DESC ModelDesc[3];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -78,6 +78,7 @@
|
||||||
<TargetName>$(ProjectName)_$(PlatformShortName)</TargetName>
|
<TargetName>$(ProjectName)_$(PlatformShortName)</TargetName>
|
||||||
<IncludePath>C:\Program Files (x86)\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
<IncludePath>C:\Program Files (x86)\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
||||||
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win32;$(LibraryPath)</LibraryPath>
|
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win32;$(LibraryPath)</LibraryPath>
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<OutDir>$(SolutionDir)..\Bin\DLL\</OutDir>
|
<OutDir>$(SolutionDir)..\Bin\DLL\</OutDir>
|
||||||
|
@ -181,8 +182,9 @@
|
||||||
<ClCompile Include="FileLoader\ShaderLoader.cpp" />
|
<ClCompile Include="FileLoader\ShaderLoader.cpp" />
|
||||||
<ClCompile Include="FileLoader\ModelLoader.cpp" />
|
<ClCompile Include="FileLoader\ModelLoader.cpp" />
|
||||||
<ClCompile Include="Render\Preparations\BasicPreparations.cpp" />
|
<ClCompile Include="Render\Preparations\BasicPreparations.cpp" />
|
||||||
<ClCompile Include="Render\Rendering\BasicRender.cpp" />
|
<ClCompile Include="Render\DefaultRenderer.cpp" />
|
||||||
<ClCompile Include="Render\Resources\Deffered.cpp" />
|
<ClCompile Include="Render\GuiRenderer.cpp" />
|
||||||
|
<ClCompile Include="Render\Resources.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="Core\Core.h" />
|
<ClInclude Include="Core\Core.h" />
|
||||||
|
@ -193,9 +195,10 @@
|
||||||
<ClInclude Include="Model\Model.h" />
|
<ClInclude Include="Model\Model.h" />
|
||||||
<ClInclude Include="Model\ModelInfo.h" />
|
<ClInclude Include="Model\ModelInfo.h" />
|
||||||
<ClInclude Include="Render\Preparations\Preparations.h" />
|
<ClInclude Include="Render\Preparations\Preparations.h" />
|
||||||
<ClInclude Include="Render\Rendering\Render.h" />
|
<ClInclude Include="Render\GuiRenderer.h" />
|
||||||
|
<ClInclude Include="Render\DefaultRenderer.h" />
|
||||||
<ClInclude Include="Definitions\GraphicalDefinition.h" />
|
<ClInclude Include="Definitions\GraphicalDefinition.h" />
|
||||||
<ClInclude Include="Render\Resources\Deffered.h" />
|
<ClInclude Include="Render\Resources.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Misc\Misc.vcxproj">
|
<ProjectReference Include="..\Misc\Misc.vcxproj">
|
||||||
|
@ -206,19 +209,41 @@
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<FxCompile Include="Shader\HLSL\Deffered Shaders\LightPass.hlsl">
|
<FxCompile Include="Shader\Passes\2D\2DGeometry.hlsl">
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Geometry</ShaderType>
|
||||||
|
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">5.0</ShaderModel>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Geometry</ShaderType>
|
||||||
|
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Geometry</ShaderType>
|
||||||
|
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Geometry</ShaderType>
|
||||||
|
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
|
||||||
|
</FxCompile>
|
||||||
|
<FxCompile Include="Shader\Passes\2D\2DPixel.hlsl">
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
|
||||||
|
</FxCompile>
|
||||||
|
<FxCompile Include="Shader\Passes\2D\2DVertex.hlsl">
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
|
||||||
|
</FxCompile>
|
||||||
|
<FxCompile Include="Shader\Passes\Light\LightPass.hlsl">
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compute</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compute</ShaderType>
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compute</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compute</ShaderType>
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compute</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compute</ShaderType>
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compute</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compute</ShaderType>
|
||||||
</FxCompile>
|
</FxCompile>
|
||||||
<FxCompile Include="Shader\HLSL\Deffered Shaders\PixelGatherData.hlsl">
|
<FxCompile Include="Shader\Passes\Gather\GatherPixel.hlsl">
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
|
||||||
</FxCompile>
|
</FxCompile>
|
||||||
<FxCompile Include="Shader\HLSL\Deffered Shaders\PostPass.hlsl">
|
<FxCompile Include="Shader\Passes\Blur\BlurHor.hlsl">
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compute</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compute</ShaderType>
|
||||||
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">5.0</ShaderModel>
|
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">5.0</ShaderModel>
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compute</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compute</ShaderType>
|
||||||
|
@ -228,7 +253,27 @@
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compute</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compute</ShaderType>
|
||||||
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">5.0</ShaderModel>
|
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">5.0</ShaderModel>
|
||||||
</FxCompile>
|
</FxCompile>
|
||||||
<FxCompile Include="Shader\HLSL\Deffered Shaders\VertexGatherData.hlsl">
|
<FxCompile Include="Shader\Passes\Blur\BlurVert.hlsl">
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compute</ShaderType>
|
||||||
|
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">5.0</ShaderModel>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compute</ShaderType>
|
||||||
|
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">5.0</ShaderModel>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compute</ShaderType>
|
||||||
|
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">5.0</ShaderModel>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compute</ShaderType>
|
||||||
|
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">5.0</ShaderModel>
|
||||||
|
</FxCompile>
|
||||||
|
<FxCompile Include="Shader\Passes\Post\PostPass.hlsl">
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compute</ShaderType>
|
||||||
|
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">5.0</ShaderModel>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compute</ShaderType>
|
||||||
|
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">5.0</ShaderModel>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compute</ShaderType>
|
||||||
|
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">5.0</ShaderModel>
|
||||||
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compute</ShaderType>
|
||||||
|
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">5.0</ShaderModel>
|
||||||
|
</FxCompile>
|
||||||
|
<FxCompile Include="Shader\Passes\Gather\GatherVertex.hlsl">
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
|
||||||
|
@ -273,12 +318,14 @@
|
||||||
</FxCompile>
|
</FxCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Shader\HLSL\Deffered Shaders\Defines.hlsli" />
|
<None Include="Shader\Passes\2D\Header.hlsli" />
|
||||||
<None Include="Shader\HLSL\Deffered Shaders\GBufferHeader.hlsli" />
|
<None Include="Shader\Passes\Light\Defines.hlsli" />
|
||||||
<None Include="Shader\HLSL\Deffered Shaders\LightCalc.hlsli" />
|
<None Include="Shader\Passes\Gather\Header.hlsli" />
|
||||||
<None Include="Shader\HLSL\Deffered Shaders\PosManipulation.hlsli" />
|
<None Include="Shader\Passes\Light\LightCalc.hlsli" />
|
||||||
<None Include="Shader\HLSL\Deffered Shaders\SSAO.hlsli" />
|
<None Include="Shader\Passes\Light\PosManipulation.hlsli" />
|
||||||
|
<None Include="Shader\Passes\Light\SSAO.hlsli" />
|
||||||
<None Include="Shader\HLSL\SimpleDebug\Debug.hlsl" />
|
<None Include="Shader\HLSL\SimpleDebug\Debug.hlsl" />
|
||||||
|
<None Include="Shader\Passes\Blur\BlurSharedData.hlsli" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
|
|
@ -24,9 +24,6 @@
|
||||||
<ClCompile Include="Core\Init.cpp">
|
<ClCompile Include="Core\Init.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="Render\Rendering\BasicRender.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="Render\Preparations\BasicPreparations.cpp">
|
<ClCompile Include="Render\Preparations\BasicPreparations.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -42,15 +39,21 @@
|
||||||
<ClCompile Include="FileLoader\ModelLoader.cpp">
|
<ClCompile Include="FileLoader\ModelLoader.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="Render\Resources\Deffered.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="Render\Resources\Debug.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="Core\PipelineManager.cpp">
|
<ClCompile Include="Core\PipelineManager.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="FileLoader\DanLoader.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Render\DefaultRenderer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Render\GuiRenderer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Render\Resources.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="Core\Core.h">
|
<ClInclude Include="Core\Core.h">
|
||||||
|
@ -59,9 +62,6 @@
|
||||||
<ClInclude Include="Render\Preparations\Preparations.h">
|
<ClInclude Include="Render\Preparations\Preparations.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="Render\Rendering\Render.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="Model\ModelInfo.h">
|
<ClInclude Include="Model\ModelInfo.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -83,10 +83,13 @@
|
||||||
<ClInclude Include="FileLoader\GeneralLoader.h">
|
<ClInclude Include="FileLoader\GeneralLoader.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="Render\Resources\Deffered.h">
|
<ClInclude Include="Render\DefaultRenderer.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="Render\Resources\Debug.h">
|
<ClInclude Include="Render\GuiRenderer.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Render\Resources.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -95,15 +98,24 @@
|
||||||
<FxCompile Include="Shader\HLSL\SimpleDebug\DebugPixel.hlsl" />
|
<FxCompile Include="Shader\HLSL\SimpleDebug\DebugPixel.hlsl" />
|
||||||
<FxCompile Include="Shader\HLSL\SimpleDebug\DebugCameraVertex.hlsl" />
|
<FxCompile Include="Shader\HLSL\SimpleDebug\DebugCameraVertex.hlsl" />
|
||||||
<FxCompile Include="Shader\HLSL\SimpleDebug\TextureDebug.hlsl" />
|
<FxCompile Include="Shader\HLSL\SimpleDebug\TextureDebug.hlsl" />
|
||||||
<FxCompile Include="Shader\HLSL\Deffered Shaders\LightPass.hlsl" />
|
<FxCompile Include="Shader\Passes\Light\LightPass.hlsl" />
|
||||||
<FxCompile Include="Shader\HLSL\Deffered Shaders\PixelGatherData.hlsl" />
|
<FxCompile Include="Shader\Passes\Post\PostPass.hlsl" />
|
||||||
<FxCompile Include="Shader\HLSL\Deffered Shaders\VertexGatherData.hlsl" />
|
<FxCompile Include="Shader\Passes\Gather\GatherPixel.hlsl" />
|
||||||
|
<FxCompile Include="Shader\Passes\Gather\GatherVertex.hlsl" />
|
||||||
|
<FxCompile Include="Shader\Passes\2D\2DVertex.hlsl" />
|
||||||
|
<FxCompile Include="Shader\Passes\2D\2DPixel.hlsl" />
|
||||||
|
<FxCompile Include="Shader\Passes\2D\2DGeometry.hlsl" />
|
||||||
|
<FxCompile Include="Shader\Passes\Blur\BlurHor.hlsl" />
|
||||||
|
<FxCompile Include="Shader\Passes\Blur\BlurVert.hlsl" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Shader\HLSL\SimpleDebug\Debug.hlsl" />
|
<None Include="Shader\HLSL\SimpleDebug\Debug.hlsl" />
|
||||||
<None Include="Shader\HLSL\Deffered Shaders\Defines.hlsli" />
|
<None Include="Shader\Passes\Light\Defines.hlsli" />
|
||||||
<None Include="Shader\HLSL\Deffered Shaders\GBufferHeader.hlsli" />
|
<None Include="Shader\Passes\Light\LightCalc.hlsli" />
|
||||||
<None Include="Shader\HLSL\Deffered Shaders\LightCalc.hlsli" />
|
<None Include="Shader\Passes\Light\PosManipulation.hlsli" />
|
||||||
<None Include="Shader\HLSL\Deffered Shaders\PosManipulation.hlsli" />
|
<None Include="Shader\Passes\Light\SSAO.hlsli" />
|
||||||
|
<None Include="Shader\Passes\2D\Header.hlsli" />
|
||||||
|
<None Include="Shader\Passes\Gather\Header.hlsli" />
|
||||||
|
<None Include="Shader\Passes\Blur\BlurSharedData.hlsli" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -0,0 +1,198 @@
|
||||||
|
#include "DefaultRenderer.h"
|
||||||
|
#include "Resources.h"
|
||||||
|
#include "../Definitions/GraphicalDefinition.h"
|
||||||
|
#include "../Model/ModelInfo.h"
|
||||||
|
#include "../DllInterfaces/GFXAPI.h"
|
||||||
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace Oyster
|
||||||
|
{
|
||||||
|
namespace Graphics
|
||||||
|
{
|
||||||
|
namespace Render
|
||||||
|
{
|
||||||
|
Definitions::Pointlight pl;
|
||||||
|
Model::Model* DefaultRenderer::cube = NULL;
|
||||||
|
Model::Model* DefaultRenderer::cube2 = NULL;
|
||||||
|
|
||||||
|
void DefaultRenderer::NewFrame(Oyster::Math::Float4x4 View, Oyster::Math::Float4x4 Projection, Definitions::Pointlight Lights, int numLights)
|
||||||
|
{
|
||||||
|
Preparations::Basic::ClearBackBuffer(Oyster::Math::Float4(1,0,0,1));
|
||||||
|
Preparations::Basic::ClearRTV(Resources::GBufferRTV,Resources::GBufferSize,Math::Float4(0,0,0,0));
|
||||||
|
Core::PipelineManager::SetRenderPass(Graphics::Render::Resources::Gather::Pass);
|
||||||
|
|
||||||
|
void* data;
|
||||||
|
|
||||||
|
Definitions::LightConstants lc;
|
||||||
|
lc.InvProj = Projection.GetInverse();
|
||||||
|
lc.Pixels = Core::resolution;
|
||||||
|
lc.Lights = numLights;
|
||||||
|
lc.View = View;
|
||||||
|
lc.Proj = Projection;
|
||||||
|
lc.SSAORadius = 3;
|
||||||
|
|
||||||
|
data = Resources::Light::LightConstantsData.Map();
|
||||||
|
memcpy(data, &lc, sizeof(Definitions::LightConstants));
|
||||||
|
Resources::Light::LightConstantsData.Unmap();
|
||||||
|
|
||||||
|
data = Resources::Light::PointLightsData.Map();
|
||||||
|
memcpy(data, &Lights, sizeof(Definitions::Pointlight) * numLights);
|
||||||
|
Resources::Light::PointLightsData.Unmap();
|
||||||
|
|
||||||
|
Definitions::PostData pd;
|
||||||
|
pd.x = (int)lc.Pixels.x;
|
||||||
|
pd.y = (int)lc.Pixels.y;
|
||||||
|
|
||||||
|
data = Resources::Post::Data.Map();
|
||||||
|
memcpy(data, &pd, sizeof(Definitions::PostData));
|
||||||
|
Resources::Post::Data.Unmap();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DefaultRenderer::RenderScene(Model::Model* models, int count, Math::Matrix View, Math::Matrix Projection, float deltaTime)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
if(&models[i] == NULL)
|
||||||
|
continue;
|
||||||
|
if(models[i].Visible)
|
||||||
|
{
|
||||||
|
Definitions::PerModel pm;
|
||||||
|
pm.WV = View * models[i].WorldMatrix;
|
||||||
|
pm.WVP = Projection * pm.WV;
|
||||||
|
|
||||||
|
Model::ModelInfo* info = models[i].info;
|
||||||
|
|
||||||
|
Definitions::AnimationData am; //final
|
||||||
|
if(info->Animated && models[i].Animation.AnimationPlaying != NULL)
|
||||||
|
{
|
||||||
|
models[i].Animation.AnimationTime += deltaTime;
|
||||||
|
cube->WorldMatrix = Math::Matrix::identity;
|
||||||
|
////store inverse absolut transform
|
||||||
|
Math::Matrix SkinTransform[100];
|
||||||
|
Math::Matrix BoneAnimated[100];
|
||||||
|
Math::Matrix BoneAbsAnimated[100];
|
||||||
|
|
||||||
|
Math::Matrix Scale = Math::Matrix::identity;
|
||||||
|
Scale.m[0][0] = 1;
|
||||||
|
Scale.m[1][1] = 1;
|
||||||
|
Scale.m[2][2] = 2;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
for(int b = 0; b <info->BoneCount; ++b)
|
||||||
|
{
|
||||||
|
Model::Bone Bone = info->bones[b];
|
||||||
|
SkinTransform[b] = Bone.Absolute.GetInverse();
|
||||||
|
BoneAnimated[b] = Bone.Relative;
|
||||||
|
BoneAbsAnimated[b] = Bone.Absolute;
|
||||||
|
|
||||||
|
|
||||||
|
cube2->WorldMatrix = Scale;
|
||||||
|
cube2->WorldMatrix.v[3] = info->bones[b].Absolute.v[3];
|
||||||
|
}
|
||||||
|
int b = 0;
|
||||||
|
Model::Animation A = *models[i].Animation.AnimationPlaying;
|
||||||
|
while(models[i].Animation.AnimationTime>A.duration)
|
||||||
|
models[i].Animation.AnimationTime -= (float)A.duration;
|
||||||
|
|
||||||
|
float position = models[i].Animation.AnimationTime;
|
||||||
|
for(int b = 0; b < A.Bones;++b)
|
||||||
|
{
|
||||||
|
//find current frame
|
||||||
|
int nrOfFrames = A.Frames[b];
|
||||||
|
Model::Frame PFrame = A.Keyframes[b][nrOfFrames-1];
|
||||||
|
Model::Frame NFrame = A.Keyframes[b][nrOfFrames-1];
|
||||||
|
bool FrameFound = false;
|
||||||
|
for (int i = 0; i < nrOfFrames; i++)
|
||||||
|
{
|
||||||
|
if(position < A.Keyframes[b][i].time)
|
||||||
|
{
|
||||||
|
PFrame = A.Keyframes[b][i-1];
|
||||||
|
NFrame = A.Keyframes[b][i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
float denominator = (float)(NFrame.time - PFrame.time);
|
||||||
|
if(denominator == 0)
|
||||||
|
{
|
||||||
|
BoneAnimated[PFrame.bone.Parent] = PFrame.bone.Relative;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
float inter = (float)((position - PFrame.time) / denominator);
|
||||||
|
Math3D::InterpolateOrientation_UsingNonRigidNlerp(PFrame.bone.Relative,NFrame.bone.Relative,inter, BoneAnimated[PFrame.bone.Parent]);
|
||||||
|
}
|
||||||
|
|
||||||
|
////calculate Absolute Animation Transform
|
||||||
|
for(int b = 0; b < info->BoneCount; ++b)
|
||||||
|
{
|
||||||
|
BoneAbsAnimated[b] = BoneAbsAnimated[info->bones[b].Parent] * BoneAnimated[b];
|
||||||
|
//SkinTransform[b] = BoneAbsAnimated[b];
|
||||||
|
cube->WorldMatrix = Scale;
|
||||||
|
cube->WorldMatrix.v[3] = BoneAbsAnimated[b].v[3];
|
||||||
|
cube->WorldMatrix = models[i].WorldMatrix * cube->WorldMatrix;
|
||||||
|
DefaultRenderer::RenderScene(cube,1,View,Projection);
|
||||||
|
}
|
||||||
|
|
||||||
|
//write data to am
|
||||||
|
for(int b = 0; b < info->BoneCount; ++b)
|
||||||
|
{
|
||||||
|
am.AnimatedData[b] = (BoneAbsAnimated[b] * SkinTransform[b]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void *data = Resources::Gather::AnimationData.Map();
|
||||||
|
memcpy(data,&am,sizeof(Definitions::AnimationData));
|
||||||
|
Resources::Gather::AnimationData.Unmap();
|
||||||
|
|
||||||
|
pm.Animated = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
pm.Animated = 0;
|
||||||
|
|
||||||
|
void* data = Resources::Gather::ModelData.Map();
|
||||||
|
memcpy(data,&(pm),sizeof(pm));
|
||||||
|
Resources::Gather::ModelData.Unmap();
|
||||||
|
|
||||||
|
if(info->Material.size())
|
||||||
|
{
|
||||||
|
Core::deviceContext->PSSetShaderResources(0,(UINT)info->Material.size(),&(info->Material[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
info->Vertices->Apply();
|
||||||
|
if(info->Indexed)
|
||||||
|
{
|
||||||
|
info->Indecies->Apply();
|
||||||
|
Oyster::Graphics::Core::deviceContext->DrawIndexed(info->IndexCount,0,0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Oyster::Graphics::Core::deviceContext->Draw(info->VertexCount,0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DefaultRenderer::EndFrame()
|
||||||
|
{
|
||||||
|
Core::PipelineManager::SetRenderPass(Resources::Light::Pass);
|
||||||
|
|
||||||
|
Core::deviceContext->Dispatch((UINT)((Core::resolution.x + 15U) / 16U), (UINT)((Core::resolution.y + 15U) / 16U), 1);
|
||||||
|
|
||||||
|
Core::PipelineManager::SetRenderPass(Resources::Blur::HorPass);
|
||||||
|
Core::deviceContext->Dispatch((UINT)((Core::resolution.x + 15U) / 16U), (UINT)((Core::resolution.y + 15U) / 16U), 1);
|
||||||
|
|
||||||
|
Core::PipelineManager::SetRenderPass(Resources::Blur::VertPass);
|
||||||
|
Core::deviceContext->Dispatch((UINT)((Core::resolution.x + 15U) / 16U), (UINT)((Core::resolution.y + 15U) / 16U), 1);
|
||||||
|
|
||||||
|
Core::PipelineManager::SetRenderPass(Resources::Post::Pass);
|
||||||
|
|
||||||
|
Core::deviceContext->Dispatch((UINT)((Core::resolution.x + 15U) / 16U), (UINT)((Core::resolution.y + 15U) / 16U), 1);
|
||||||
|
|
||||||
|
Core::swapChain->Present(0,0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
#pragma once
|
||||||
|
#include "..\Definitions\GraphicalDefinition.h"
|
||||||
|
#include "..\Core\Core.h"
|
||||||
|
#include "Preparations\Preparations.h"
|
||||||
|
#include "..\Model\Model.h"
|
||||||
|
|
||||||
|
namespace Oyster
|
||||||
|
{
|
||||||
|
namespace Graphics
|
||||||
|
{
|
||||||
|
namespace Render
|
||||||
|
{
|
||||||
|
class DefaultRenderer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static void NewFrame(Oyster::Math::Float4x4 View, Oyster::Math::Float4x4 Projection, Definitions::Pointlight Lights, int numLights);
|
||||||
|
static void RenderScene(Model::Model* models, int count, Math::Matrix View, Math::Matrix Projection, float DeltaTime = 0);
|
||||||
|
static void EndFrame();
|
||||||
|
|
||||||
|
static Model::Model* cube;
|
||||||
|
static Model::Model* cube2;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
#include "GuiRenderer.h"
|
||||||
|
#include "Resources.h"
|
||||||
|
#include "../Definitions/GraphicalDefinition.h"
|
||||||
|
|
||||||
|
namespace Oyster
|
||||||
|
{
|
||||||
|
namespace Graphics
|
||||||
|
{
|
||||||
|
namespace Render
|
||||||
|
{
|
||||||
|
namespace Rendering
|
||||||
|
{
|
||||||
|
void Gui::BeginRender()
|
||||||
|
{
|
||||||
|
Core::PipelineManager::SetRenderPass(Render::Resources::Gui::Pass);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Gui::Render(ID3D11ShaderResourceView* tex,Math::Float2 pos, Math::Float2 size)
|
||||||
|
{
|
||||||
|
Core::deviceContext->PSSetShaderResources(0,1,&tex);
|
||||||
|
|
||||||
|
pos *= 2;
|
||||||
|
pos -= 1;
|
||||||
|
pos.y *= -1;
|
||||||
|
|
||||||
|
Definitions::GuiData gd;
|
||||||
|
|
||||||
|
gd.Translation = Math::Matrix::identity;
|
||||||
|
gd.Translation.m41 = pos.x;
|
||||||
|
gd.Translation.m42 = pos.y;
|
||||||
|
gd.Translation.m11 = size.x;
|
||||||
|
gd.Translation.m22 = size.y;
|
||||||
|
|
||||||
|
|
||||||
|
void* data = Render::Resources::Gui::Data.Map();
|
||||||
|
memcpy(data,&gd,sizeof(Definitions::GuiData));
|
||||||
|
Render::Resources::Gui::Data.Unmap();
|
||||||
|
|
||||||
|
Core::deviceContext->Draw(1,0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Core/Core.h"
|
||||||
|
|
||||||
|
namespace Oyster
|
||||||
|
{
|
||||||
|
namespace Graphics
|
||||||
|
{
|
||||||
|
namespace Render
|
||||||
|
{
|
||||||
|
namespace Rendering
|
||||||
|
{
|
||||||
|
class Gui
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static void BeginRender();
|
||||||
|
static void Render(ID3D11ShaderResourceView* tex, Math::Float2 pos, Math::Float2 size);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,167 +0,0 @@
|
||||||
#include "Render.h"
|
|
||||||
#include "../Resources/Deffered.h"
|
|
||||||
#include "../../Definitions/GraphicalDefinition.h"
|
|
||||||
#include "../../Model/ModelInfo.h"
|
|
||||||
#include <map>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
namespace Oyster
|
|
||||||
{
|
|
||||||
namespace Graphics
|
|
||||||
{
|
|
||||||
namespace Render
|
|
||||||
{
|
|
||||||
namespace Rendering
|
|
||||||
{
|
|
||||||
Definitions::Pointlight pl;
|
|
||||||
|
|
||||||
void Basic::NewFrame(Oyster::Math::Float4x4 View, Oyster::Math::Float4x4 Projection, Definitions::Pointlight* Lights, int numLights)
|
|
||||||
{
|
|
||||||
Preparations::Basic::ClearBackBuffer(Oyster::Math::Float4(1,0,0,1));
|
|
||||||
Preparations::Basic::ClearRTV(Resources::Deffered::GBufferRTV,Resources::Deffered::GBufferSize,Math::Float4(0,0,0,1));
|
|
||||||
Core::PipelineManager::SetRenderPass(Graphics::Render::Resources::Deffered::GeometryPass);
|
|
||||||
|
|
||||||
void* data;
|
|
||||||
|
|
||||||
Definitions::LightConstants lc;
|
|
||||||
lc.InvProj = Projection.GetInverse();
|
|
||||||
lc.Pixels = Core::resolution;
|
|
||||||
lc.Lights = numLights;
|
|
||||||
lc.View = View;
|
|
||||||
lc.Proj = Projection;
|
|
||||||
lc.SSAORadius = 3;
|
|
||||||
|
|
||||||
data = Resources::Deffered::LightConstantsData.Map();
|
|
||||||
memcpy(data, &lc, sizeof(Definitions::LightConstants));
|
|
||||||
Resources::Deffered::LightConstantsData.Unmap();
|
|
||||||
|
|
||||||
data = Resources::Deffered::PointLightsData.Map();
|
|
||||||
memcpy(data, Lights, sizeof(Definitions::Pointlight) * numLights);
|
|
||||||
Resources::Deffered::PointLightsData.Unmap();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Basic::RenderScene(Model::Model* models, int count, Math::Matrix View, Math::Matrix Projection)
|
|
||||||
{
|
|
||||||
for(int i = 0; i < count; ++i)
|
|
||||||
{
|
|
||||||
if(&models[i] == NULL)
|
|
||||||
continue;
|
|
||||||
if(models[i].Visible)
|
|
||||||
{
|
|
||||||
Definitions::PerModel pm;
|
|
||||||
pm.WV = View * models[i].WorldMatrix;
|
|
||||||
pm.WVP = Projection * pm.WV;
|
|
||||||
|
|
||||||
void* data = Resources::Deffered::ModelData.Map();
|
|
||||||
memcpy(data,&(pm),sizeof(pm));
|
|
||||||
Resources::Deffered::ModelData.Unmap();
|
|
||||||
|
|
||||||
Model::ModelInfo* info = (Model::ModelInfo*)models[i].info;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Definitions::AnimationData am;
|
|
||||||
if(info->Animated && models[i].AnimationPlaying != -1)
|
|
||||||
{
|
|
||||||
|
|
||||||
Definitions::AnimationData am2;
|
|
||||||
//write default data
|
|
||||||
for (int b = 0; b < info->BoneCount; b++)
|
|
||||||
{
|
|
||||||
am2.animatedData[b] = info->bones[b].Transform;
|
|
||||||
}
|
|
||||||
//loop bones in animation
|
|
||||||
am.Animated = 1;
|
|
||||||
|
|
||||||
|
|
||||||
Model::Frame Prev, Next;
|
|
||||||
|
|
||||||
models[i].AnimationTime = fmod(models[i].AnimationTime,info->Animations[models[i].AnimationPlaying].duration);
|
|
||||||
|
|
||||||
for(int x = 0; x < info->Animations[models[i].AnimationPlaying].Bones; ++x)
|
|
||||||
{
|
|
||||||
//loop frame per bone
|
|
||||||
Prev.bone.Parent = 0;
|
|
||||||
Next = Prev;
|
|
||||||
for(int y = 0; y < info->Animations[models[i].AnimationPlaying].Frames[x]; ++y)
|
|
||||||
{
|
|
||||||
///TODO replace with binary search?
|
|
||||||
Model::Frame f = info->Animations[models[i].AnimationPlaying].Keyframes[x][y];
|
|
||||||
|
|
||||||
//if we hit frame
|
|
||||||
if(models[i].AnimationTime == f.time)
|
|
||||||
{
|
|
||||||
Prev = f;
|
|
||||||
Next = f;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
//if time is larger than frame time, store frames
|
|
||||||
if(models[i].AnimationTime < f.time)
|
|
||||||
{
|
|
||||||
Next = f;
|
|
||||||
Prev = info->Animations[models[i].AnimationPlaying].Keyframes[x][y-1];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//calculate interpolated bone position
|
|
||||||
|
|
||||||
//rebase model time to between prev and next
|
|
||||||
float interpoation =(models[i].AnimationTime - Prev.time) / (Next.time - Prev.time);
|
|
||||||
|
|
||||||
//interpolate
|
|
||||||
Math::Matrix Interpolated;
|
|
||||||
Math3D::InterpolateOrientation_UsingNonRigidNlerp(Prev.bone.Transform,Next.bone.Transform,interpoation, Interpolated);
|
|
||||||
|
|
||||||
//write magic to animated data
|
|
||||||
am2.animatedData[Prev.bone.Parent] = Interpolated * am2.animatedData[info->bones[Prev.bone.Parent].Parent];
|
|
||||||
//sneaky write do correct data buffer
|
|
||||||
am.animatedData[x] = (am2.animatedData[Prev.bone.Parent] * info->bones[Prev.bone.Parent].Transform.GetInverse());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
am.Animated = 0;
|
|
||||||
|
|
||||||
data = Resources::Deffered::AnimationData.Map();
|
|
||||||
memcpy(data,&am,sizeof(Definitions::AnimationData));
|
|
||||||
Resources::Deffered::AnimationData.Unmap();
|
|
||||||
|
|
||||||
if(info->Material.size())
|
|
||||||
{
|
|
||||||
Core::deviceContext->PSSetShaderResources(0,(UINT)info->Material.size(),&(info->Material[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
info->Vertices->Apply();
|
|
||||||
if(info->Indexed)
|
|
||||||
{
|
|
||||||
info->Indecies->Apply();
|
|
||||||
Oyster::Graphics::Core::deviceContext->DrawIndexed(info->IndexCount,0,0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Oyster::Graphics::Core::deviceContext->Draw(info->VertexCount,0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Basic::EndFrame()
|
|
||||||
{
|
|
||||||
Core::PipelineManager::SetRenderPass(Resources::Deffered::LightPass);
|
|
||||||
|
|
||||||
Core::deviceContext->Dispatch((UINT)((Core::resolution.x + 15U) / 16U), (UINT)((Core::resolution.y + 15U) / 16U), 1);
|
|
||||||
|
|
||||||
Core::PipelineManager::SetRenderPass(Resources::Deffered::PostPass);
|
|
||||||
|
|
||||||
Core::deviceContext->Dispatch((UINT)((Core::resolution.x + 15U) / 16U), (UINT)((Core::resolution.y + 15U) / 16U), 1);
|
|
||||||
|
|
||||||
Core::swapChain->Present(0,0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
#pragma once
|
|
||||||
#include "..\..\Definitions\GraphicalDefinition.h"
|
|
||||||
#include "..\..\Core\Core.h"
|
|
||||||
#include "..\Preparations\Preparations.h"
|
|
||||||
#include "..\..\Model\Model.h"
|
|
||||||
|
|
||||||
namespace Oyster
|
|
||||||
{
|
|
||||||
namespace Graphics
|
|
||||||
{
|
|
||||||
namespace Render
|
|
||||||
{
|
|
||||||
namespace Rendering
|
|
||||||
{
|
|
||||||
class Basic
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
static void NewFrame(Oyster::Math::Float4x4 View, Oyster::Math::Float4x4 Projection, Definitions::Pointlight* Lights, int numLights);
|
|
||||||
static void RenderScene(Model::Model* models, int count, Math::Matrix View, Math::Matrix Projection);
|
|
||||||
static void EndFrame();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,431 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Resources.h"
|
||||||
|
#include "..\Definitions\GraphicalDefinition.h"
|
||||||
|
|
||||||
|
typedef Oyster::Graphics::Core::PipelineManager::ShaderType ShaderType;
|
||||||
|
typedef Oyster::Graphics::Core::PipelineManager::Get GetShader;
|
||||||
|
typedef Oyster::Graphics::Core::PipelineManager Shader;
|
||||||
|
typedef Oyster::Graphics::Core::Buffer Buffer;
|
||||||
|
|
||||||
|
const std::wstring PathToHLSL = L"..\\..\\Code\\OysterGraphics\\Shader\\Passes\\";
|
||||||
|
const std::wstring PathToCSO = L"..\\Content\\Shaders\\";
|
||||||
|
|
||||||
|
const int KernelSize = 10;
|
||||||
|
const int SampleSpread = 16;
|
||||||
|
|
||||||
|
namespace Oyster
|
||||||
|
{
|
||||||
|
namespace Graphics
|
||||||
|
{
|
||||||
|
namespace Render
|
||||||
|
{
|
||||||
|
|
||||||
|
ID3D11RenderTargetView* Resources::GBufferRTV[Resources::GBufferSize] = {0};
|
||||||
|
ID3D11ShaderResourceView* Resources::GBufferSRV[Resources::GBufferSize] = {0};
|
||||||
|
|
||||||
|
ID3D11UnorderedAccessView* Resources::LBufferUAV[Resources::LBufferSize] = {0};
|
||||||
|
ID3D11ShaderResourceView* Resources::LBufferSRV[Resources::LBufferSize] = {0};
|
||||||
|
|
||||||
|
ID3D11UnorderedAccessView* Resources::Blur::BufferUAV = {0};
|
||||||
|
ID3D11ShaderResourceView* Resources::Blur::BufferSRV = {0};
|
||||||
|
|
||||||
|
Shader::RenderPass Resources::Gather::Pass;
|
||||||
|
Shader::RenderPass Resources::Light::Pass;
|
||||||
|
Shader::RenderPass Resources::Post::Pass;
|
||||||
|
Shader::RenderPass Resources::Gui::Pass;
|
||||||
|
Shader::RenderPass Resources::Blur::VertPass; //Set this pass second when doing a "fullscreen" blur
|
||||||
|
Shader::RenderPass Resources::Blur::HorPass; //Set this pass first when doing a "fullscreen" blur
|
||||||
|
|
||||||
|
Buffer Resources::Gather::ModelData = Buffer();
|
||||||
|
Buffer Resources::Gather::AnimationData = Buffer();
|
||||||
|
Buffer Resources::Light::LightConstantsData = Buffer();
|
||||||
|
Buffer Resources::Gui::Data = Buffer();
|
||||||
|
Buffer Resources::Post::Data = Buffer();
|
||||||
|
|
||||||
|
Buffer Resources::Light::PointLightsData = Buffer();
|
||||||
|
ID3D11ShaderResourceView* Resources::Light::PointLightView = NULL;
|
||||||
|
|
||||||
|
ID3D11ShaderResourceView* Resources::Light::SSAOKernel = NULL;
|
||||||
|
ID3D11ShaderResourceView* Resources::Light::SSAORandom = NULL;
|
||||||
|
|
||||||
|
ID3D11RasterizerState* Resources::RenderStates::rs = NULL;
|
||||||
|
ID3D11SamplerState** Resources::RenderStates::ss = new ID3D11SamplerState*[1];
|
||||||
|
ID3D11DepthStencilState* Resources::RenderStates::dsState = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
Core::Init::State Resources::InitShaders()
|
||||||
|
{
|
||||||
|
#ifdef _DEBUG
|
||||||
|
std::wstring path = PathToHLSL+L"Gather\\";
|
||||||
|
std::wstring end = L".hlsl";
|
||||||
|
#else
|
||||||
|
std::wstring path = PathToCSO;
|
||||||
|
std::wstring end = L".cso";
|
||||||
|
#endif
|
||||||
|
//Load Shaders
|
||||||
|
Core::PipelineManager::Init(path + L"GatherPixel" + end, ShaderType::Pixel, L"Gather");
|
||||||
|
Core::PipelineManager::Init(path + L"GatherVertex" + end, ShaderType::Vertex, L"Gather");
|
||||||
|
#ifdef _DEBUG
|
||||||
|
path = PathToHLSL+L"Light\\";
|
||||||
|
#endif
|
||||||
|
Core::PipelineManager::Init(path + L"LightPass" + end, ShaderType::Compute, L"LightPass");
|
||||||
|
#ifdef _DEBUG
|
||||||
|
path = PathToHLSL+L"Post\\";
|
||||||
|
#endif
|
||||||
|
Core::PipelineManager::Init(path + L"PostPass" + end, ShaderType::Compute, L"PostPass");
|
||||||
|
#ifdef _DEBUG
|
||||||
|
path = PathToHLSL+L"Blur\\";
|
||||||
|
#endif
|
||||||
|
Core::PipelineManager::Init(path + L"BlurHor" + end, ShaderType::Compute, L"BlurHor");
|
||||||
|
Core::PipelineManager::Init(path + L"BlurVert" + end, ShaderType::Compute, L"BlurVert");
|
||||||
|
#ifdef _DEBUG
|
||||||
|
path = PathToHLSL+L"2D\\";
|
||||||
|
#endif
|
||||||
|
Core::PipelineManager::Init(path + L"2DVertex" + end,ShaderType::Vertex, L"2D");
|
||||||
|
Core::PipelineManager::Init(path + L"2DGeometry" + end,ShaderType::Geometry, L"2D");
|
||||||
|
Core::PipelineManager::Init(path + L"2DPixel" + end,ShaderType::Pixel, L"2D");
|
||||||
|
|
||||||
|
return Core::Init::State::Success;
|
||||||
|
}
|
||||||
|
|
||||||
|
Core::Init::State Resources::InitBuffers()
|
||||||
|
{
|
||||||
|
//Create Buffers
|
||||||
|
Buffer::BUFFER_INIT_DESC desc;
|
||||||
|
desc.ElementSize = sizeof(Definitions::PerModel);
|
||||||
|
desc.NumElements = 1;
|
||||||
|
desc.InitData = NULL;
|
||||||
|
desc.Type = Buffer::BUFFER_TYPE::CONSTANT_BUFFER_VS;
|
||||||
|
desc.Usage = Buffer::BUFFER_USAGE::BUFFER_CPU_WRITE_DISCARD;
|
||||||
|
|
||||||
|
Gather::ModelData.Init(desc);
|
||||||
|
|
||||||
|
desc.NumElements = 1;
|
||||||
|
desc.ElementSize = sizeof(Definitions::AnimationData);
|
||||||
|
Gather::AnimationData.Init(desc);
|
||||||
|
|
||||||
|
desc.Type = Buffer::BUFFER_TYPE::CONSTANT_BUFFER_GS;
|
||||||
|
desc.NumElements = 1;
|
||||||
|
desc.ElementSize = sizeof(Definitions::GuiData);
|
||||||
|
Gui::Data.Init(desc);
|
||||||
|
|
||||||
|
desc.Type = Buffer::BUFFER_TYPE::CONSTANT_BUFFER_CS;
|
||||||
|
desc.ElementSize = sizeof(Definitions::PostData);
|
||||||
|
Post::Data.Init(desc);
|
||||||
|
|
||||||
|
desc.ElementSize = sizeof(Definitions::LightConstants);
|
||||||
|
Light::LightConstantsData.Init(desc);
|
||||||
|
|
||||||
|
desc.ElementSize = sizeof(Definitions::Pointlight);
|
||||||
|
desc.NumElements = MaxLightSize;
|
||||||
|
desc.Type = Buffer::STRUCTURED_BUFFER;
|
||||||
|
Light::PointLightsData.Init(desc);
|
||||||
|
return Core::Init::Success;
|
||||||
|
}
|
||||||
|
|
||||||
|
Core::Init::State Resources::InitRenderStates()
|
||||||
|
{
|
||||||
|
////Create States
|
||||||
|
D3D11_RASTERIZER_DESC rdesc;
|
||||||
|
rdesc.CullMode = D3D11_CULL_BACK;
|
||||||
|
rdesc.FillMode = D3D11_FILL_SOLID;
|
||||||
|
rdesc.FrontCounterClockwise = false;
|
||||||
|
rdesc.DepthBias = 0;
|
||||||
|
rdesc.DepthBiasClamp = 0;
|
||||||
|
rdesc.DepthClipEnable = true;
|
||||||
|
rdesc.SlopeScaledDepthBias = 0;
|
||||||
|
rdesc.ScissorEnable = false;
|
||||||
|
rdesc.MultisampleEnable = false;
|
||||||
|
rdesc.AntialiasedLineEnable = false;
|
||||||
|
|
||||||
|
|
||||||
|
Oyster::Graphics::Core::device->CreateRasterizerState(&rdesc,&RenderStates::rs);
|
||||||
|
|
||||||
|
D3D11_SAMPLER_DESC sdesc;
|
||||||
|
sdesc.Filter = D3D11_FILTER_ANISOTROPIC;
|
||||||
|
sdesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
|
||||||
|
sdesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
|
||||||
|
sdesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
|
||||||
|
sdesc.MipLODBias = 0;
|
||||||
|
sdesc.MaxAnisotropy =4;
|
||||||
|
sdesc.ComparisonFunc = D3D11_COMPARISON_LESS_EQUAL;
|
||||||
|
*sdesc.BorderColor = *Oyster::Math::Float4(1,1,1,1).element;
|
||||||
|
sdesc.MinLOD = 0;
|
||||||
|
sdesc.MaxLOD = D3D11_FLOAT32_MAX;
|
||||||
|
|
||||||
|
|
||||||
|
Oyster::Graphics::Core::device->CreateSamplerState(&sdesc,RenderStates::ss);
|
||||||
|
|
||||||
|
D3D11_DEPTH_STENCIL_DESC ddesc;
|
||||||
|
ddesc.DepthEnable = true;
|
||||||
|
ddesc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL;
|
||||||
|
ddesc.DepthFunc = D3D11_COMPARISON_LESS;
|
||||||
|
|
||||||
|
ddesc.StencilEnable = true;
|
||||||
|
ddesc.StencilReadMask = 0xFF;
|
||||||
|
ddesc.StencilWriteMask = 0xFF;
|
||||||
|
|
||||||
|
ddesc.FrontFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
|
||||||
|
ddesc.FrontFace.StencilDepthFailOp = D3D11_STENCIL_OP_INCR;
|
||||||
|
ddesc.FrontFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
|
||||||
|
ddesc.FrontFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
|
||||||
|
|
||||||
|
ddesc.BackFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
|
||||||
|
ddesc.BackFace.StencilDepthFailOp = D3D11_STENCIL_OP_DECR;
|
||||||
|
ddesc.BackFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
|
||||||
|
ddesc.BackFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
|
||||||
|
|
||||||
|
|
||||||
|
Core::device->CreateDepthStencilState(&ddesc,&RenderStates::dsState);
|
||||||
|
return Core::Init::Success;
|
||||||
|
}
|
||||||
|
|
||||||
|
Core::Init::State Resources::InitViews()
|
||||||
|
{
|
||||||
|
//Create Views
|
||||||
|
for(int i = 0; i< GBufferSize; ++i)
|
||||||
|
{
|
||||||
|
Core::Init::CreateLinkedShaderResourceFromTexture(&GBufferRTV[i],&GBufferSRV[i],NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < LBufferSize; ++i)
|
||||||
|
{
|
||||||
|
Core::Init::CreateLinkedShaderResourceFromTexture(NULL,&LBufferSRV[i],&LBufferUAV[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Buffer* b = &Light::PointLightsData;
|
||||||
|
|
||||||
|
Core::Init::CreateLinkedShaderResourceFromStructuredBuffer(&b,&Light::PointLightView,NULL);
|
||||||
|
srand((unsigned int)time(0));
|
||||||
|
|
||||||
|
//SSAO
|
||||||
|
Math::Vector3 kernel[KernelSize];
|
||||||
|
Math::Vector3 random[SampleSpread];
|
||||||
|
for(int i = 0;i < KernelSize; ++i)
|
||||||
|
{
|
||||||
|
kernel[i] = Oyster::Math::Vector3::null;
|
||||||
|
while( kernel[i] == Oyster::Math::Vector3::null )
|
||||||
|
{
|
||||||
|
kernel[i] = Oyster::Math::Vector3(
|
||||||
|
(float)rand() / (RAND_MAX + 1) * (1 - -1) + -1,
|
||||||
|
(float)rand() / (RAND_MAX + 1) * (1 - -1) + -1,
|
||||||
|
(float)rand() / (RAND_MAX + 1) * (1 - 0) + 0);
|
||||||
|
}
|
||||||
|
kernel[i].Normalize();
|
||||||
|
|
||||||
|
float scale = float(i) / float(KernelSize);
|
||||||
|
|
||||||
|
scale = (0.1f*(1 - scale * scale) + 1.0f *( scale * scale));
|
||||||
|
kernel[i] *= scale;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for( int i = 0; i < SampleSpread; ++i)
|
||||||
|
{
|
||||||
|
random[i] = Oyster::Math::Vector3::null;
|
||||||
|
while( random[i] == Oyster::Math::Vector3::null )
|
||||||
|
{
|
||||||
|
random[i] = Oyster::Math::Vector3(
|
||||||
|
(float)rand() / (RAND_MAX + 1) * (1 - -1)+ -1,
|
||||||
|
/*(float)rand() / (RAND_MAX + 1) * (1 - -1)+ -1,*/
|
||||||
|
1.0f,
|
||||||
|
0.0f);
|
||||||
|
}
|
||||||
|
random[i].Normalize();
|
||||||
|
}
|
||||||
|
|
||||||
|
D3D11_TEXTURE1D_DESC T1desc;
|
||||||
|
T1desc.Width = KernelSize;
|
||||||
|
T1desc.MipLevels = T1desc.ArraySize = 1;
|
||||||
|
T1desc.Format = DXGI_FORMAT_R32G32B32_FLOAT;
|
||||||
|
T1desc.Usage = D3D11_USAGE_DEFAULT;
|
||||||
|
T1desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
|
||||||
|
T1desc.CPUAccessFlags = 0;
|
||||||
|
T1desc.MiscFlags = 0;
|
||||||
|
|
||||||
|
D3D11_SUBRESOURCE_DATA sphere;
|
||||||
|
sphere.pSysMem = kernel;
|
||||||
|
|
||||||
|
D3D11_SUBRESOURCE_DATA rnd;
|
||||||
|
rnd.pSysMem = random;
|
||||||
|
rnd.SysMemPitch = (UINT)(sqrt(SampleSpread) * sizeof(Oyster::Math::Vector3));
|
||||||
|
|
||||||
|
ID3D11Texture1D *pTexture1;
|
||||||
|
|
||||||
|
Core::device->CreateTexture1D( &T1desc, &sphere, &pTexture1 );
|
||||||
|
Core::device->CreateShaderResourceView( pTexture1, 0, &Light::SSAOKernel );
|
||||||
|
pTexture1->Release();
|
||||||
|
|
||||||
|
D3D11_TEXTURE2D_DESC T2desc;
|
||||||
|
T2desc.Width = KernelSize;
|
||||||
|
T2desc.MipLevels = T2desc.ArraySize = 1;
|
||||||
|
T2desc.Format = DXGI_FORMAT_R32G32B32_FLOAT;
|
||||||
|
T2desc.Usage = D3D11_USAGE_DEFAULT;
|
||||||
|
T2desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
|
||||||
|
T2desc.CPUAccessFlags = 0;
|
||||||
|
T2desc.MiscFlags = 0;
|
||||||
|
T2desc.Height = (UINT)sqrt(SampleSpread);
|
||||||
|
T2desc.Width = (UINT)(SampleSpread/sqrt(SampleSpread));
|
||||||
|
T2desc.SampleDesc.Quality = 0;
|
||||||
|
T2desc.SampleDesc.Count = 1;
|
||||||
|
|
||||||
|
ID3D11Texture2D *pTexture2;
|
||||||
|
|
||||||
|
Core::device->CreateTexture2D( &T2desc, &rnd, &pTexture2 );
|
||||||
|
Core::device->CreateShaderResourceView( (pTexture2), 0, &Light::SSAORandom );
|
||||||
|
pTexture2->Release();
|
||||||
|
return Core::Init::Success;
|
||||||
|
}
|
||||||
|
|
||||||
|
Core::Init::State Resources::InitPasses()
|
||||||
|
{
|
||||||
|
|
||||||
|
////---------------- Geometry Pass Setup ----------------------------
|
||||||
|
Gather::Pass.Shaders.Pixel = GetShader::Pixel(L"Gather");
|
||||||
|
Gather::Pass.Shaders.Vertex = GetShader::Vertex(L"Gather");
|
||||||
|
|
||||||
|
D3D11_INPUT_ELEMENT_DESC indesc[] =
|
||||||
|
{
|
||||||
|
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||||
|
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||||
|
{ "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 20, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||||
|
{ "TANGENT", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 32, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||||
|
{ "BITANGENT", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 44, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||||
|
{ "BONEINDEX", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 56, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||||
|
{ "BONEWEIGHT", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 72, D3D11_INPUT_PER_VERTEX_DATA, 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
Shader::CreateInputLayout(indesc,7,GetShader::Vertex(L"Gather"),Gather::Pass.IAStage.Layout);
|
||||||
|
Gather::Pass.IAStage.Topology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;
|
||||||
|
Gather::Pass.CBuffers.Vertex.push_back(Gather::AnimationData);
|
||||||
|
Gather::Pass.CBuffers.Vertex.push_back(Gather::ModelData);
|
||||||
|
Gather::Pass.RenderStates.Rasterizer = RenderStates::rs;
|
||||||
|
Gather::Pass.RenderStates.SampleCount = 1;
|
||||||
|
Gather::Pass.RenderStates.SampleState = RenderStates::ss;
|
||||||
|
Gather::Pass.RenderStates.DepthStencil = RenderStates::dsState;
|
||||||
|
for(int i = 0; i<GBufferSize;++i)
|
||||||
|
{
|
||||||
|
Gather::Pass.RTV.push_back(GBufferRTV[i]);
|
||||||
|
}
|
||||||
|
Gather::Pass.depth = Core::depthStencil;
|
||||||
|
|
||||||
|
////---------------- Light Pass Setup ----------------------------
|
||||||
|
Light::Pass.Shaders.Compute = GetShader::Compute(L"LightPass");
|
||||||
|
for(int i = 0; i<LBufferSize;++i)
|
||||||
|
{
|
||||||
|
Light::Pass.UAV.Compute.push_back(LBufferUAV[i]);
|
||||||
|
}
|
||||||
|
for(int i = 0; i<GBufferSize;++i)
|
||||||
|
{
|
||||||
|
Light::Pass.SRV.Compute.push_back(GBufferSRV[i]);
|
||||||
|
}
|
||||||
|
Light::Pass.SRV.Compute.push_back(Core::depthStencilUAV);
|
||||||
|
Light::Pass.CBuffers.Compute.push_back(Light::LightConstantsData);
|
||||||
|
Light::Pass.SRV.Compute.push_back(Light::PointLightView);
|
||||||
|
Light::Pass.SRV.Compute.push_back(Light::SSAOKernel);
|
||||||
|
Light::Pass.SRV.Compute.push_back(Light::SSAORandom);
|
||||||
|
|
||||||
|
////---------------- Post Pass Setup ----------------------------
|
||||||
|
Post::Pass.Shaders.Compute = GetShader::Compute(L"PostPass");
|
||||||
|
for(int i = 0; i<LBufferSize;++i)
|
||||||
|
{
|
||||||
|
Post::Pass.SRV.Compute.push_back(LBufferSRV[i]);
|
||||||
|
}
|
||||||
|
Post::Pass.UAV.Compute.push_back(Core::backBufferUAV);
|
||||||
|
Post::Pass.CBuffers.Compute.push_back(Post::Data);
|
||||||
|
|
||||||
|
////---------------- GUI Pass Setup ----------------------------
|
||||||
|
Gui::Pass.Shaders.Vertex = GetShader::Vertex(L"2D");
|
||||||
|
Gui::Pass.Shaders.Pixel = GetShader::Pixel(L"2D");
|
||||||
|
Gui::Pass.Shaders.Geometry = GetShader::Geometry(L"2D");
|
||||||
|
Gui::Pass.RTV.push_back(GBufferRTV[2]);
|
||||||
|
Gui::Pass.CBuffers.Geometry.push_back(Gui::Data);
|
||||||
|
|
||||||
|
D3D11_INPUT_ELEMENT_DESC indesc2D[] =
|
||||||
|
{
|
||||||
|
{ "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
Shader::CreateInputLayout(indesc2D,1,GetShader::Vertex(L"2D"),Gui::Pass.IAStage.Layout);
|
||||||
|
Gui::Pass.IAStage.Topology = D3D_PRIMITIVE_TOPOLOGY_POINTLIST;
|
||||||
|
|
||||||
|
Gui::Pass.RenderStates.SampleCount = 1;
|
||||||
|
Gui::Pass.RenderStates.SampleState = RenderStates::ss;
|
||||||
|
|
||||||
|
////---------------- Blur Pass Setup ----------------------------
|
||||||
|
Blur::HorPass.Shaders.Compute = GetShader::Compute(L"BlurHor");
|
||||||
|
Blur::VertPass.Shaders.Compute = GetShader::Compute(L"BlurVert");
|
||||||
|
|
||||||
|
//Taking the Ambient SRV from LBufferSRV and setting it as input texture
|
||||||
|
Blur::HorPass.SRV.Compute.push_back(LBufferSRV[2]);
|
||||||
|
//Output texture is the Blur UAV buffer
|
||||||
|
Blur::HorPass.UAV.Compute.push_back(Blur::BufferUAV);
|
||||||
|
|
||||||
|
//Taking the Blur SRV and setting it as input texture now
|
||||||
|
Blur::VertPass.SRV.Compute.push_back(Blur::BufferSRV);
|
||||||
|
//And the Ambient UAV is now the output texture
|
||||||
|
Blur::VertPass.UAV.Compute.push_back(LBufferUAV[2]);
|
||||||
|
|
||||||
|
return Core::Init::Success;
|
||||||
|
}
|
||||||
|
|
||||||
|
Core::Init::State Resources::Init()
|
||||||
|
{
|
||||||
|
InitShaders();
|
||||||
|
InitBuffers();
|
||||||
|
InitRenderStates();
|
||||||
|
InitViews();
|
||||||
|
InitPasses();
|
||||||
|
|
||||||
|
return Core::Init::State::Success;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Resources::Clean()
|
||||||
|
{
|
||||||
|
Gather::ModelData.~Buffer();
|
||||||
|
Gather::AnimationData.~Buffer();
|
||||||
|
Light::LightConstantsData.~Buffer();
|
||||||
|
Light::PointLightsData.~Buffer();
|
||||||
|
Gui::Data.~Buffer();
|
||||||
|
Post::Data.~Buffer();
|
||||||
|
SAFE_RELEASE(Light::PointLightView);
|
||||||
|
SAFE_RELEASE(Light::SSAOKernel);
|
||||||
|
SAFE_RELEASE(Light::SSAORandom);
|
||||||
|
|
||||||
|
SAFE_RELEASE(Blur::BufferSRV);
|
||||||
|
SAFE_RELEASE(Blur::BufferUAV);
|
||||||
|
|
||||||
|
for(int i = 0; i< GBufferSize; ++i)
|
||||||
|
{
|
||||||
|
SAFE_RELEASE(GBufferRTV[i]);
|
||||||
|
SAFE_RELEASE(GBufferSRV[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i< LBufferSize; ++i)
|
||||||
|
{
|
||||||
|
SAFE_RELEASE(LBufferUAV[i]);
|
||||||
|
SAFE_RELEASE(LBufferSRV[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
SAFE_RELEASE(Gather::Pass.IAStage.Layout);
|
||||||
|
|
||||||
|
SAFE_RELEASE(Gather::Pass.RenderStates.BlendState);
|
||||||
|
|
||||||
|
SAFE_RELEASE(Gather::Pass.RenderStates.DepthStencil);
|
||||||
|
|
||||||
|
SAFE_RELEASE(Gather::Pass.RenderStates.Rasterizer);
|
||||||
|
|
||||||
|
for(int i = 0; i < Gather::Pass.RenderStates.SampleCount; ++i)
|
||||||
|
{
|
||||||
|
SAFE_RELEASE(Gather::Pass.RenderStates.SampleState[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
SAFE_DELETE_ARRAY(Gather::Pass.RenderStates.SampleState);
|
||||||
|
|
||||||
|
SAFE_RELEASE(Gui::Pass.IAStage.Layout);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,95 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Core/Core.h"
|
||||||
|
|
||||||
|
namespace Oyster
|
||||||
|
{
|
||||||
|
namespace Graphics
|
||||||
|
{
|
||||||
|
namespace Render
|
||||||
|
{
|
||||||
|
class Resources
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
static const int GBufferSize = 3;
|
||||||
|
static const int LBufferSize = 3;
|
||||||
|
static const int MaxLightSize = 100;
|
||||||
|
|
||||||
|
//! GBuffers
|
||||||
|
//! 0 = Diffuse + Glow
|
||||||
|
//! 1 = Normal + Spec
|
||||||
|
//! 2 = GUI
|
||||||
|
static ID3D11RenderTargetView* GBufferRTV[GBufferSize];
|
||||||
|
static ID3D11ShaderResourceView* GBufferSRV[GBufferSize];
|
||||||
|
|
||||||
|
//! LBuffer
|
||||||
|
//! 0 = Diffuse
|
||||||
|
//! 1 = Specular
|
||||||
|
//! 2 = SSAO
|
||||||
|
static ID3D11UnorderedAccessView* LBufferUAV[LBufferSize];
|
||||||
|
static ID3D11ShaderResourceView* LBufferSRV[LBufferSize];
|
||||||
|
|
||||||
|
|
||||||
|
struct RenderStates
|
||||||
|
{
|
||||||
|
static ID3D11RasterizerState* rs;
|
||||||
|
static ID3D11SamplerState** ss;
|
||||||
|
static ID3D11DepthStencilState* dsState;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Gather
|
||||||
|
{
|
||||||
|
static Core::PipelineManager::RenderPass Pass;
|
||||||
|
static Core::Buffer ModelData;
|
||||||
|
static Core::Buffer AnimationData;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Light
|
||||||
|
{
|
||||||
|
static Core::PipelineManager::RenderPass Pass;
|
||||||
|
static Core::Buffer LightConstantsData;
|
||||||
|
static Core::Buffer PointLightsData;
|
||||||
|
static ID3D11ShaderResourceView* PointLightView;
|
||||||
|
|
||||||
|
static ID3D11ShaderResourceView* SSAOKernel;
|
||||||
|
static ID3D11ShaderResourceView* SSAORandom;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Gui
|
||||||
|
{
|
||||||
|
static Core::PipelineManager::RenderPass Pass;
|
||||||
|
static Core::Buffer Data;
|
||||||
|
static Core::Buffer Vertex;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Blur
|
||||||
|
{
|
||||||
|
static Core::PipelineManager::RenderPass HorPass;
|
||||||
|
static Core::PipelineManager::RenderPass VertPass;
|
||||||
|
|
||||||
|
|
||||||
|
//Blur UAV and SRV
|
||||||
|
static ID3D11UnorderedAccessView* BufferUAV;
|
||||||
|
static ID3D11ShaderResourceView* BufferSRV;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Post
|
||||||
|
{
|
||||||
|
static Core::PipelineManager::RenderPass Pass;
|
||||||
|
static Core::Buffer Data;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static Core::Init::State Init();
|
||||||
|
static Core::Init::State InitShaders();
|
||||||
|
static Core::Init::State InitRenderStates();
|
||||||
|
static Core::Init::State InitBuffers();
|
||||||
|
static Core::Init::State InitViews();
|
||||||
|
static Core::Init::State InitPasses();
|
||||||
|
static void Clean();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,53 +0,0 @@
|
||||||
#include "Debug.h"
|
|
||||||
#include "..\OysterGraphics\Definitions\GraphicalDefinition.h"
|
|
||||||
|
|
||||||
#ifdef _DEBUG
|
|
||||||
// /Bin/Executable/Tester ->
|
|
||||||
// /Code/OysterGraphics/Shader/HLSL
|
|
||||||
const std::wstring PathFromExeToCso = L"..\\Content\\Shaders\\";
|
|
||||||
const std::wstring PathFromExeToHlsl = L"..\\..\\Code\\OysterGraphics\\Shader\\HLSL\\";
|
|
||||||
const std::wstring VertexTransformDebug = L"TransformDebugVertex";
|
|
||||||
const std::wstring VertexDebug = L"DebugVertex";
|
|
||||||
const std::wstring PixelRed = L"DebugPixel";
|
|
||||||
const std::wstring PixelTexture = L"Texture";
|
|
||||||
const std::wstring ComputeDebug = L"Debug";
|
|
||||||
|
|
||||||
typedef Oyster::Graphics::Core::PipelineManager::ShaderType ShaderType;
|
|
||||||
typedef Oyster::Graphics::Core::PipelineManager::Get GetShader;
|
|
||||||
typedef Oyster::Graphics::Core::PipelineManager Shader;
|
|
||||||
typedef Oyster::Graphics::Core::Buffer Buffer;
|
|
||||||
|
|
||||||
namespace Oyster
|
|
||||||
{
|
|
||||||
namespace Graphics
|
|
||||||
{
|
|
||||||
namespace Render
|
|
||||||
{
|
|
||||||
//Shader::RenderPass Resources::Debug::obj;
|
|
||||||
Shader::RenderPass Resources::Debug::debugCompute;// = Shader::ShaderEffect();;
|
|
||||||
//Buffer Resources::Debug::ModelData = Buffer();
|
|
||||||
//Buffer Resources::Debug::VPData = Buffer();
|
|
||||||
|
|
||||||
//ID3D11ShaderResourceView* Resources::Debug::srv = NULL;
|
|
||||||
//ID3D11RenderTargetView* Resources::Debug::rtv = NULL;
|
|
||||||
|
|
||||||
Core::Init::State Resources::Debug::Init()
|
|
||||||
{
|
|
||||||
|
|
||||||
#pragma region LoadShaders
|
|
||||||
/** Load Compute Shaders for d3dcompile */
|
|
||||||
Core::PipelineManager::Init(PathFromExeToHlsl + L"ComputeDebug\\" + L"DebugCompute.hlsl", ShaderType::Compute, ComputeDebug);
|
|
||||||
|
|
||||||
#pragma endregion
|
|
||||||
return Core::Init::Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Resources::Debug::Clean()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,39 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#ifndef Reources_h
|
|
||||||
#define Reources_h
|
|
||||||
|
|
||||||
#ifdef _DEBUG
|
|
||||||
|
|
||||||
#include "../OysterGraphics/Core/Core.h"
|
|
||||||
|
|
||||||
namespace Oyster
|
|
||||||
{
|
|
||||||
namespace Graphics
|
|
||||||
{
|
|
||||||
namespace Render
|
|
||||||
{
|
|
||||||
namespace Resources
|
|
||||||
{
|
|
||||||
class Debug
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
//static Core::PipelineManager::RenderPass obj;
|
|
||||||
static Core::PipelineManager::RenderPass debugCompute;
|
|
||||||
//static Core::Buffer ModelData;
|
|
||||||
//static Core::Buffer VPData;
|
|
||||||
|
|
||||||
//static ID3D11ShaderResourceView* srv;
|
|
||||||
//static ID3D11RenderTargetView* rtv;
|
|
||||||
|
|
||||||
static Core::Init::State Init();
|
|
||||||
static void Clean();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,337 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "Deffered.h"
|
|
||||||
#include "..\..\Definitions\GraphicalDefinition.h"
|
|
||||||
|
|
||||||
typedef Oyster::Graphics::Core::PipelineManager::ShaderType ShaderType;
|
|
||||||
typedef Oyster::Graphics::Core::PipelineManager::Get GetShader;
|
|
||||||
typedef Oyster::Graphics::Core::PipelineManager Shader;
|
|
||||||
typedef Oyster::Graphics::Core::Buffer Buffer;
|
|
||||||
|
|
||||||
const std::wstring PathToHLSL = L"..\\..\\Code\\OysterGraphics\\Shader\\HLSL\\Deffered Shaders\\";
|
|
||||||
const std::wstring PathToCSO = L"..\\Content\\Shaders\\";
|
|
||||||
|
|
||||||
const int KernelSize = 10;
|
|
||||||
const int SampleSpread = 16;
|
|
||||||
|
|
||||||
namespace Oyster
|
|
||||||
{
|
|
||||||
namespace Graphics
|
|
||||||
{
|
|
||||||
namespace Render
|
|
||||||
{
|
|
||||||
namespace Resources
|
|
||||||
{
|
|
||||||
|
|
||||||
ID3D11RenderTargetView* Deffered::GBufferRTV[Deffered::GBufferSize] = {0};
|
|
||||||
ID3D11ShaderResourceView* Deffered::GBufferSRV[Deffered::GBufferSize] = {0};
|
|
||||||
|
|
||||||
ID3D11UnorderedAccessView* Deffered::LBufferUAV[Deffered::LBufferSize] = {0};
|
|
||||||
ID3D11ShaderResourceView* Deffered::LBufferSRV[Deffered::LBufferSize] = {0};
|
|
||||||
|
|
||||||
Shader::RenderPass Deffered::GeometryPass;
|
|
||||||
Shader::RenderPass Deffered::LightPass;
|
|
||||||
Shader::RenderPass Deffered::PostPass;
|
|
||||||
|
|
||||||
Buffer Deffered::ModelData = Buffer();
|
|
||||||
Buffer Deffered::AnimationData = Buffer();
|
|
||||||
Buffer Deffered::LightConstantsData = Buffer();
|
|
||||||
|
|
||||||
Buffer Deffered::PointLightsData = Buffer();
|
|
||||||
ID3D11ShaderResourceView* Deffered::PointLightView = NULL;
|
|
||||||
|
|
||||||
ID3D11ShaderResourceView* Deffered::SSAOKernel = NULL;
|
|
||||||
ID3D11ShaderResourceView* Deffered::SSAORandom = NULL;
|
|
||||||
|
|
||||||
Core::Init::State Deffered::InitShaders()
|
|
||||||
{
|
|
||||||
#ifdef _DEBUG
|
|
||||||
std::wstring path = PathToHLSL;
|
|
||||||
std::wstring end = L".hlsl";
|
|
||||||
#else
|
|
||||||
std::wstring path = PathToCSO;
|
|
||||||
std::wstring end = L".cso";
|
|
||||||
#endif
|
|
||||||
//Load Shaders
|
|
||||||
Core::PipelineManager::Init(path + L"PixelGatherData" + end, ShaderType::Pixel, L"Geometry");
|
|
||||||
Core::PipelineManager::Init(path + L"VertexGatherData" + end, ShaderType::Vertex, L"Geometry");
|
|
||||||
Core::PipelineManager::Init(path + L"LightPass" + end, ShaderType::Compute, L"LightPass");
|
|
||||||
Core::PipelineManager::Init(path + L"PostPass" + end, ShaderType::Compute, L"PostPass");
|
|
||||||
return Core::Init::State::Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
Core::Init::State Deffered::Init()
|
|
||||||
{
|
|
||||||
InitShaders();
|
|
||||||
|
|
||||||
//Create Buffers
|
|
||||||
Buffer::BUFFER_INIT_DESC desc;
|
|
||||||
desc.ElementSize = sizeof(Definitions::PerModel);
|
|
||||||
desc.NumElements = 1;
|
|
||||||
desc.InitData = NULL;
|
|
||||||
desc.Type = Buffer::BUFFER_TYPE::CONSTANT_BUFFER_VS;
|
|
||||||
desc.Usage = Buffer::BUFFER_USAGE::BUFFER_CPU_WRITE_DISCARD;
|
|
||||||
|
|
||||||
ModelData.Init(desc);
|
|
||||||
|
|
||||||
desc.NumElements = 1;
|
|
||||||
desc.ElementSize = sizeof(Definitions::AnimationData);
|
|
||||||
AnimationData.Init(desc);
|
|
||||||
|
|
||||||
desc.ElementSize = sizeof(Definitions::LightConstants);
|
|
||||||
desc.NumElements = 1;
|
|
||||||
desc.Type = Buffer::BUFFER_TYPE::CONSTANT_BUFFER_CS;
|
|
||||||
|
|
||||||
LightConstantsData.Init(desc);
|
|
||||||
|
|
||||||
desc.ElementSize = sizeof(Definitions::Pointlight);
|
|
||||||
desc.NumElements = MaxLightSize;
|
|
||||||
desc.Type = Buffer::STRUCTURED_BUFFER;
|
|
||||||
PointLightsData.Init(desc);
|
|
||||||
|
|
||||||
////Create States
|
|
||||||
D3D11_RASTERIZER_DESC rdesc;
|
|
||||||
rdesc.CullMode = D3D11_CULL_BACK;
|
|
||||||
rdesc.FillMode = D3D11_FILL_SOLID;
|
|
||||||
rdesc.FrontCounterClockwise = false;
|
|
||||||
rdesc.DepthBias = 0;
|
|
||||||
rdesc.DepthBiasClamp = 0;
|
|
||||||
rdesc.DepthClipEnable = true;
|
|
||||||
rdesc.SlopeScaledDepthBias = 0;
|
|
||||||
rdesc.ScissorEnable = false;
|
|
||||||
rdesc.MultisampleEnable = false;
|
|
||||||
rdesc.AntialiasedLineEnable = false;
|
|
||||||
|
|
||||||
ID3D11RasterizerState* rs = NULL;
|
|
||||||
Oyster::Graphics::Core::device->CreateRasterizerState(&rdesc,&rs);
|
|
||||||
|
|
||||||
D3D11_SAMPLER_DESC sdesc;
|
|
||||||
sdesc.Filter = D3D11_FILTER_ANISOTROPIC;
|
|
||||||
sdesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
|
|
||||||
sdesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
|
|
||||||
sdesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
|
|
||||||
sdesc.MipLODBias = 0;
|
|
||||||
sdesc.MaxAnisotropy =4;
|
|
||||||
sdesc.ComparisonFunc = D3D11_COMPARISON_LESS_EQUAL;
|
|
||||||
*sdesc.BorderColor = *Oyster::Math::Float4(1,1,1,1).element;
|
|
||||||
sdesc.MinLOD = 0;
|
|
||||||
sdesc.MaxLOD = D3D11_FLOAT32_MAX;
|
|
||||||
|
|
||||||
ID3D11SamplerState** ss = new ID3D11SamplerState*[1];
|
|
||||||
Oyster::Graphics::Core::device->CreateSamplerState(&sdesc,ss);
|
|
||||||
|
|
||||||
D3D11_DEPTH_STENCIL_DESC ddesc;
|
|
||||||
ddesc.DepthEnable = true;
|
|
||||||
ddesc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL;
|
|
||||||
ddesc.DepthFunc = D3D11_COMPARISON_LESS;
|
|
||||||
|
|
||||||
ddesc.StencilEnable = true;
|
|
||||||
ddesc.StencilReadMask = 0xFF;
|
|
||||||
ddesc.StencilWriteMask = 0xFF;
|
|
||||||
|
|
||||||
ddesc.FrontFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
|
|
||||||
ddesc.FrontFace.StencilDepthFailOp = D3D11_STENCIL_OP_INCR;
|
|
||||||
ddesc.FrontFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
|
|
||||||
ddesc.FrontFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
|
|
||||||
|
|
||||||
ddesc.BackFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
|
|
||||||
ddesc.BackFace.StencilDepthFailOp = D3D11_STENCIL_OP_DECR;
|
|
||||||
ddesc.BackFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
|
|
||||||
ddesc.BackFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
|
|
||||||
|
|
||||||
ID3D11DepthStencilState* dsState;
|
|
||||||
Core::device->CreateDepthStencilState(&ddesc,&dsState);
|
|
||||||
|
|
||||||
//Create Views
|
|
||||||
for(int i = 0; i< Resources::Deffered::GBufferSize; ++i)
|
|
||||||
{
|
|
||||||
Core::Init::CreateLinkedShaderResourceFromTexture(&GBufferRTV[i],&GBufferSRV[i],NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i = 0; i < Resources::Deffered::LBufferSize; ++i)
|
|
||||||
{
|
|
||||||
Core::Init::CreateLinkedShaderResourceFromTexture(NULL,&LBufferSRV[i],&LBufferUAV[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
Buffer* b = &PointLightsData;
|
|
||||||
|
|
||||||
Core::Init::CreateLinkedShaderResourceFromStructuredBuffer(&b,&PointLightView,NULL);
|
|
||||||
srand((unsigned int)time(0));
|
|
||||||
|
|
||||||
//SSAO
|
|
||||||
Math::Vector3 kernel[KernelSize];
|
|
||||||
Math::Vector3 random[SampleSpread];
|
|
||||||
for(int i = 0;i < KernelSize; ++i)
|
|
||||||
{
|
|
||||||
kernel[i] = Oyster::Math::Vector3::null;
|
|
||||||
while( kernel[i] == Oyster::Math::Vector3::null )
|
|
||||||
{
|
|
||||||
kernel[i] = Oyster::Math::Vector3(
|
|
||||||
(float)rand() / (RAND_MAX + 1) * (1 - -1) + -1,
|
|
||||||
(float)rand() / (RAND_MAX + 1) * (1 - -1) + -1,
|
|
||||||
(float)rand() / (RAND_MAX + 1) * (1 - 0) + 0);
|
|
||||||
}
|
|
||||||
kernel[i].Normalize();
|
|
||||||
|
|
||||||
float scale = float(i) / float(KernelSize);
|
|
||||||
|
|
||||||
scale = (0.1f*(1 - scale * scale) + 1.0f *( scale * scale));
|
|
||||||
kernel[i] *= scale;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
for( int i = 0; i < SampleSpread; ++i)
|
|
||||||
{
|
|
||||||
random[i] = Oyster::Math::Vector3::null;
|
|
||||||
while( random[i] == Oyster::Math::Vector3::null )
|
|
||||||
{
|
|
||||||
random[i] = Oyster::Math::Vector3(
|
|
||||||
(float)rand() / (RAND_MAX + 1) * (1 - -1)+ -1,
|
|
||||||
/*(float)rand() / (RAND_MAX + 1) * (1 - -1)+ -1,*/
|
|
||||||
1.0f,
|
|
||||||
0.0f);
|
|
||||||
}
|
|
||||||
random[i].Normalize();
|
|
||||||
}
|
|
||||||
|
|
||||||
D3D11_TEXTURE1D_DESC T1desc;
|
|
||||||
T1desc.Width = KernelSize;
|
|
||||||
T1desc.MipLevels = T1desc.ArraySize = 1;
|
|
||||||
T1desc.Format = DXGI_FORMAT_R32G32B32_FLOAT;
|
|
||||||
T1desc.Usage = D3D11_USAGE_DEFAULT;
|
|
||||||
T1desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
|
|
||||||
T1desc.CPUAccessFlags = 0;
|
|
||||||
T1desc.MiscFlags = 0;
|
|
||||||
|
|
||||||
D3D11_SUBRESOURCE_DATA sphere;
|
|
||||||
sphere.pSysMem = kernel;
|
|
||||||
|
|
||||||
D3D11_SUBRESOURCE_DATA rnd;
|
|
||||||
rnd.pSysMem = random;
|
|
||||||
rnd.SysMemPitch = sqrt(SampleSpread) * sizeof(Oyster::Math::Vector3);
|
|
||||||
|
|
||||||
ID3D11Texture1D *pTexture1;
|
|
||||||
|
|
||||||
Core::device->CreateTexture1D( &T1desc, &sphere, &pTexture1 );
|
|
||||||
Core::device->CreateShaderResourceView( pTexture1, 0, &SSAOKernel );
|
|
||||||
pTexture1->Release();
|
|
||||||
|
|
||||||
D3D11_TEXTURE2D_DESC T2desc;
|
|
||||||
T2desc.Width = KernelSize;
|
|
||||||
T2desc.MipLevels = T2desc.ArraySize = 1;
|
|
||||||
T2desc.Format = DXGI_FORMAT_R32G32B32_FLOAT;
|
|
||||||
T2desc.Usage = D3D11_USAGE_DEFAULT;
|
|
||||||
T2desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
|
|
||||||
T2desc.CPUAccessFlags = 0;
|
|
||||||
T2desc.MiscFlags = 0;
|
|
||||||
T2desc.Height = sqrt(SampleSpread);
|
|
||||||
T2desc.Width = SampleSpread/sqrt(SampleSpread);
|
|
||||||
T2desc.SampleDesc.Quality = 0;
|
|
||||||
T2desc.SampleDesc.Count = 1;
|
|
||||||
|
|
||||||
ID3D11Texture2D *pTexture2;
|
|
||||||
|
|
||||||
Core::device->CreateTexture2D( &T2desc, &rnd, &pTexture2 );
|
|
||||||
Core::device->CreateShaderResourceView( (pTexture2), 0, &SSAORandom );
|
|
||||||
pTexture2->Release();
|
|
||||||
|
|
||||||
////Create ShaderEffects
|
|
||||||
|
|
||||||
////---------------- Geometry Pass Setup ----------------------------
|
|
||||||
GeometryPass.Shaders.Pixel = GetShader::Pixel(L"Geometry");
|
|
||||||
GeometryPass.Shaders.Vertex = GetShader::Vertex(L"Geometry");
|
|
||||||
|
|
||||||
D3D11_INPUT_ELEMENT_DESC indesc[] =
|
|
||||||
{
|
|
||||||
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
|
||||||
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
|
||||||
{ "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 20, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
|
||||||
{ "TANGENT", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 32, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
|
||||||
{ "BITANGENT", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 44, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
|
||||||
{ "BONEINDEX", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 56, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
|
||||||
{ "BONEWEIGHT", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 72, D3D11_INPUT_PER_VERTEX_DATA, 0 }
|
|
||||||
};
|
|
||||||
|
|
||||||
Shader::CreateInputLayout(indesc,7,GetShader::Vertex(L"Geometry"),GeometryPass.IAStage.Layout);
|
|
||||||
GeometryPass.IAStage.Topology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;
|
|
||||||
GeometryPass.CBuffers.Vertex.push_back(AnimationData);
|
|
||||||
GeometryPass.CBuffers.Vertex.push_back(ModelData);
|
|
||||||
GeometryPass.RenderStates.Rasterizer = rs;
|
|
||||||
GeometryPass.RenderStates.SampleCount = 1;
|
|
||||||
GeometryPass.RenderStates.SampleState = ss;
|
|
||||||
GeometryPass.RenderStates.DepthStencil = dsState;
|
|
||||||
for(int i = 0; i<Deffered::GBufferSize;++i)
|
|
||||||
{
|
|
||||||
GeometryPass.RTV.push_back(GBufferRTV[i]);
|
|
||||||
}
|
|
||||||
GeometryPass.depth = Core::depthStencil;
|
|
||||||
|
|
||||||
////---------------- Light Pass Setup ----------------------------
|
|
||||||
LightPass.Shaders.Compute = GetShader::Compute(L"LightPass");
|
|
||||||
for(int i = 0; i<Deffered::LBufferSize;++i)
|
|
||||||
{
|
|
||||||
LightPass.UAV.Compute.push_back(LBufferUAV[i]);
|
|
||||||
}
|
|
||||||
for(int i = 0; i<Deffered::GBufferSize;++i)
|
|
||||||
{
|
|
||||||
LightPass.SRV.Compute.push_back(GBufferSRV[i]);
|
|
||||||
}
|
|
||||||
LightPass.SRV.Compute.push_back(Core::depthStencilUAV);
|
|
||||||
LightPass.CBuffers.Compute.push_back(LightConstantsData);
|
|
||||||
LightPass.SRV.Compute.push_back(PointLightView);
|
|
||||||
LightPass.SRV.Compute.push_back(SSAOKernel);
|
|
||||||
LightPass.SRV.Compute.push_back(SSAORandom);
|
|
||||||
|
|
||||||
////---------------- Post Pass Setup ----------------------------
|
|
||||||
PostPass.Shaders.Compute = GetShader::Compute(L"PostPass");
|
|
||||||
for(int i = 0; i<Deffered::LBufferSize;++i)
|
|
||||||
{
|
|
||||||
PostPass.SRV.Compute.push_back(LBufferSRV[i]);
|
|
||||||
}
|
|
||||||
PostPass.UAV.Compute.push_back(Core::backBufferUAV);
|
|
||||||
|
|
||||||
return Core::Init::State::Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Deffered::Clean()
|
|
||||||
{
|
|
||||||
Resources::Deffered::ModelData.~Buffer();
|
|
||||||
Resources::Deffered::AnimationData.~Buffer();
|
|
||||||
Resources::Deffered::LightConstantsData.~Buffer();
|
|
||||||
Resources::Deffered::PointLightsData.~Buffer();
|
|
||||||
SAFE_RELEASE(Resources::Deffered::PointLightView);
|
|
||||||
SAFE_RELEASE(Deffered::SSAOKernel);
|
|
||||||
SAFE_RELEASE(Deffered::SSAORandom);
|
|
||||||
|
|
||||||
for(int i = 0; i< GBufferSize; ++i)
|
|
||||||
{
|
|
||||||
SAFE_RELEASE(GBufferRTV[i]);
|
|
||||||
SAFE_RELEASE(GBufferSRV[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i = 0; i< LBufferSize; ++i)
|
|
||||||
{
|
|
||||||
SAFE_RELEASE(LBufferUAV[i]);
|
|
||||||
SAFE_RELEASE(LBufferSRV[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
SAFE_RELEASE(GeometryPass.IAStage.Layout);
|
|
||||||
|
|
||||||
SAFE_RELEASE(GeometryPass.RenderStates.BlendState);
|
|
||||||
|
|
||||||
SAFE_RELEASE(GeometryPass.RenderStates.DepthStencil);
|
|
||||||
|
|
||||||
SAFE_RELEASE(GeometryPass.RenderStates.Rasterizer);
|
|
||||||
|
|
||||||
for(int i = 0; i < GeometryPass.RenderStates.SampleCount; ++i)
|
|
||||||
{
|
|
||||||
SAFE_RELEASE(GeometryPass.RenderStates.SampleState[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
SAFE_DELETE_ARRAY(GeometryPass.RenderStates.SampleState);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,57 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "../../Core/Core.h"
|
|
||||||
|
|
||||||
namespace Oyster
|
|
||||||
{
|
|
||||||
namespace Graphics
|
|
||||||
{
|
|
||||||
namespace Render
|
|
||||||
{
|
|
||||||
namespace Resources
|
|
||||||
{
|
|
||||||
class Deffered
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
static const int GBufferSize = 2;
|
|
||||||
static const int LBufferSize = 3;
|
|
||||||
static const int MaxLightSize = 100;
|
|
||||||
//! GBuffers
|
|
||||||
//! 0 = Diffuse + Glow
|
|
||||||
//! 1 = Normal + Spec
|
|
||||||
static ID3D11RenderTargetView* GBufferRTV[GBufferSize];
|
|
||||||
static ID3D11ShaderResourceView* GBufferSRV[GBufferSize];
|
|
||||||
|
|
||||||
//! LBuffer
|
|
||||||
//! 0 = Diffuse
|
|
||||||
//! 1 = Specular
|
|
||||||
//! 2 = SSAO
|
|
||||||
static ID3D11UnorderedAccessView* LBufferUAV[LBufferSize];
|
|
||||||
static ID3D11ShaderResourceView* LBufferSRV[LBufferSize];
|
|
||||||
|
|
||||||
static Core::PipelineManager::RenderPass GeometryPass;
|
|
||||||
static Core::PipelineManager::RenderPass LightPass;
|
|
||||||
static Core::PipelineManager::RenderPass PostPass;
|
|
||||||
|
|
||||||
|
|
||||||
static Core::Buffer ModelData;
|
|
||||||
static Core::Buffer AnimationData;
|
|
||||||
|
|
||||||
static Core::Buffer LightConstantsData;
|
|
||||||
|
|
||||||
static Core::Buffer PointLightsData;
|
|
||||||
static ID3D11ShaderResourceView* PointLightView;
|
|
||||||
|
|
||||||
static ID3D11ShaderResourceView* SSAOKernel;
|
|
||||||
|
|
||||||
static ID3D11ShaderResourceView* SSAORandom;
|
|
||||||
|
|
||||||
static Core::Init::State Init();
|
|
||||||
static Core::Init::State InitShaders();
|
|
||||||
static void Clean();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
Texture2D Diffuse : register(t0);
|
|
||||||
Texture2D Specular : register(t1);
|
|
||||||
Texture2D Ambient : register(t2);
|
|
||||||
|
|
||||||
RWTexture2D<float4> Output;
|
|
||||||
|
|
||||||
[numthreads(16, 16, 1)]
|
|
||||||
void main( uint3 DTid : SV_DispatchThreadID )
|
|
||||||
{
|
|
||||||
//Output[DTid.xy] = Diffuse[DTid.xy] + Specular[DTid.xy] + Diffuse[DTid.xy] * Ambient[DTid.xy/2].w;// + float4(Ambient[DTid.xy/4].xyz,1); GLOW
|
|
||||||
//Output[DTid.xy] = Ambient[DTid.xy/2];
|
|
||||||
Output[DTid.xy] = Diffuse[DTid.xy] + Specular[DTid.xy];
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
#include "GBufferHeader.hlsli"
|
|
||||||
|
|
||||||
VertexOut main( VertexIn input )
|
|
||||||
{
|
|
||||||
VertexOut output;
|
|
||||||
/*input.pos = (
|
|
||||||
(mul(BoneAnimation[input.boneIndex.x], input.pos) * input.boneWeight.x) +
|
|
||||||
(mul(BoneAnimation[input.boneIndex.y], input.pos) * input.boneWeight.y) +
|
|
||||||
(mul(BoneAnimation[input.boneIndex.z], input.pos) * input.boneWeight.z) +
|
|
||||||
(mul(BoneAnimation[input.boneIndex.w], input.pos) * input.boneWeight.w)
|
|
||||||
* Animated) + input.pos * int(1-Animated);*/
|
|
||||||
|
|
||||||
input.pos = (
|
|
||||||
(mul(BoneAnimation[input.boneIndex.x], input.pos)/* * input.boneWeight.x*/)
|
|
||||||
* Animated) + input.pos * int(1-Animated);
|
|
||||||
|
|
||||||
//float4x4 m = matrix(float4(1,0,0,0),float4(0,1,0,0), float4(0,0,1,0), float4(0,0,0,1));
|
|
||||||
//input.pos = mul(BoneAnimation[0], float4(input.pos,1));
|
|
||||||
//input.pos = mul(m, float4(input.pos,1));
|
|
||||||
output.pos = mul(WVP, float4(input.pos,1));
|
|
||||||
output.normal = mul(WV, float4(input.normal,0)).xyz;
|
|
||||||
output.UV = input.UV;
|
|
||||||
return output;
|
|
||||||
}
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
#include "Header.hlsli"
|
||||||
|
|
||||||
|
[maxvertexcount(4)]
|
||||||
|
void main(point Vertex2DIn input[1],inout TriangleStream<Pixel2DIn> Quads)
|
||||||
|
{
|
||||||
|
Pixel2DIn output;
|
||||||
|
output.Pos = mul(float4(-1,-1,0,1) ,Translation);
|
||||||
|
output.Uv = float2(0,1);
|
||||||
|
Quads.Append(output);
|
||||||
|
|
||||||
|
output.Pos = mul(float4(-1,1,0,1), Translation);
|
||||||
|
output.Uv = float2(0,0);
|
||||||
|
Quads.Append(output);
|
||||||
|
|
||||||
|
output.Pos = mul(float4(1,-1,0,1), Translation);
|
||||||
|
output.Uv = float2(1,1);
|
||||||
|
Quads.Append(output);
|
||||||
|
|
||||||
|
output.Pos = mul(float4(1,1,0,1), Translation);
|
||||||
|
output.Uv = float2(1,0);
|
||||||
|
Quads.Append(output);
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
#include "Header.hlsli"
|
||||||
|
|
||||||
|
float4 main(Pixel2DIn input) : SV_Target0
|
||||||
|
{
|
||||||
|
return Material.Sample(LinearSampler,input.Uv);
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
#include "Header.hlsli"
|
||||||
|
|
||||||
|
Vertex2DIn main(Vertex2DIn input)
|
||||||
|
{
|
||||||
|
return input;
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
struct Vertex2DIn
|
||||||
|
{
|
||||||
|
float2 Pos : Position;
|
||||||
|
};
|
||||||
|
|
||||||
|
cbuffer EveryObject2D : register(c0)
|
||||||
|
{
|
||||||
|
float4x4 Translation;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Pixel2DIn
|
||||||
|
{
|
||||||
|
float4 Pos : SV_Position;
|
||||||
|
float2 Uv : TEXCOORD;
|
||||||
|
};
|
||||||
|
|
||||||
|
Texture2D Material : register(t0);
|
||||||
|
SamplerState LinearSampler : register(s0);
|
|
@ -0,0 +1,33 @@
|
||||||
|
#include "BlurSharedData.hlsli"
|
||||||
|
|
||||||
|
[numthreads(N,1,1)]
|
||||||
|
void main(int3 ThreadID : SV_DispatchThreadID, int3 gThreadID : SV_GroupThreadID)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(gThreadID.x < blurRadius)
|
||||||
|
{
|
||||||
|
int x = max(ThreadID.x-blurRadius,0);
|
||||||
|
gCache[gThreadID.x] = inTex[int2(x,ThreadID.y)];
|
||||||
|
}
|
||||||
|
if(gThreadID.x >= N-blurRadius)
|
||||||
|
{
|
||||||
|
int x = min(ThreadID.x+blurRadius,inTex.Length.x-1);
|
||||||
|
gCache[gThreadID.x+2*blurRadius] = inTex[int2(x,ThreadID.y)];
|
||||||
|
}
|
||||||
|
gCache[gThreadID.x+blurRadius] = inTex[min(ThreadID.xy,inTex.Length.xy-1)];
|
||||||
|
|
||||||
|
GroupMemoryBarrierWithGroupSync();
|
||||||
|
|
||||||
|
float4 blurCol = float4(0,0,0,0);
|
||||||
|
|
||||||
|
[unroll]
|
||||||
|
for(int i = -blurRadius; i <= blurRadius;++i)
|
||||||
|
{
|
||||||
|
int k = gThreadID.x + blurRadius + i;
|
||||||
|
blurCol +=Weights[i + blurRadius] * gCache[k];
|
||||||
|
}
|
||||||
|
|
||||||
|
outTex[ThreadID.xy] = blurCol;
|
||||||
|
//Output[ThreadID.xy] = Diffuse[((ThreadID.xy))];
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
#ifndef BLURSHAREDDATA
|
||||||
|
#define BLURSHAREDDATA
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static const float Weights[9] =
|
||||||
|
{
|
||||||
|
0.05f, 0.05f, 0.1f, 0.15f, 0.3f, 0.15f, 0.1f, 0.05f, 0.05f
|
||||||
|
};
|
||||||
|
|
||||||
|
static const int blurRadius = 4;
|
||||||
|
|
||||||
|
#define N 128
|
||||||
|
#define gSize (N+2*blurRadius)
|
||||||
|
groupshared float4 gCache[gSize];
|
||||||
|
|
||||||
|
Texture2D inTex : register(t0);
|
||||||
|
RWTexture2D<float4> outTex : register(u0);
|
||||||
|
|
||||||
|
//cbuffer BlurrData : register(c0)
|
||||||
|
//{
|
||||||
|
// static const int blurRadius = 5;
|
||||||
|
// static const float Weights[11] =
|
||||||
|
// {
|
||||||
|
// 0.05f,0.05f,0.1f,0.1f,0.1f,0.2f,0.1f,0.1f,0.1f,0.05f,0.05f
|
||||||
|
// };
|
||||||
|
//};
|
||||||
|
|
||||||
|
//[numthreads(16,16,1)]
|
||||||
|
//void TryCompute(uint3 ThreadID : SV_DispatchThreadID)
|
||||||
|
//{
|
||||||
|
// Output[ThreadID.xy] = Diffuse[ThreadID.xy]*0.5f+Glow[ThreadID.xy]*Glow[ThreadID.xy].w;
|
||||||
|
//}
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,32 @@
|
||||||
|
#include "BlurSharedData.hlsli"
|
||||||
|
|
||||||
|
[numthreads(1,N,1)]
|
||||||
|
void main(int3 ThreadID : SV_DispatchThreadID, int3 gThreadID : SV_GroupThreadID)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(gThreadID.y < blurRadius)
|
||||||
|
{
|
||||||
|
int y = max(ThreadID.y-blurRadius,0);
|
||||||
|
gCache[gThreadID.y] = inTex[int2(ThreadID.x,y)];
|
||||||
|
}
|
||||||
|
if(gThreadID.y >= N-blurRadius)
|
||||||
|
{
|
||||||
|
int y = min(ThreadID.y+blurRadius,inTex.Length.y-1);
|
||||||
|
gCache[gThreadID.y+2*blurRadius] = inTex[int2(ThreadID.x,y)];
|
||||||
|
}
|
||||||
|
gCache[gThreadID.y+blurRadius] = inTex[min(ThreadID.xy,inTex.Length.xy-1)];
|
||||||
|
|
||||||
|
GroupMemoryBarrierWithGroupSync();
|
||||||
|
|
||||||
|
float4 blurCol = float4(0,0,0,0);
|
||||||
|
|
||||||
|
[unroll]
|
||||||
|
for(int i = -blurRadius; i <= blurRadius;++i)
|
||||||
|
{
|
||||||
|
int k = gThreadID.y + blurRadius + i;
|
||||||
|
blurCol +=Weights[i + blurRadius] * gCache[k];
|
||||||
|
}
|
||||||
|
|
||||||
|
outTex[ThreadID.xy] = blurCol;
|
||||||
|
//Output[ThreadID.xy] = inTex[((ThreadID.xy))];
|
||||||
|
}
|
|
@ -1,9 +1,9 @@
|
||||||
#include "GBufferHeader.hlsli"
|
#include "Header.hlsli"
|
||||||
|
|
||||||
PixelOut main(VertexOut input)
|
PixelOut main(VertexOut input)
|
||||||
{
|
{
|
||||||
PixelOut output;
|
PixelOut output;
|
||||||
output.DiffuseGlow = Diffuse.Sample(S1, input.UV);
|
output.DiffuseGlow = Diffuse.Sample(S1, input.UV);
|
||||||
output.NormalSpec = float4(normalize(input.normal), 1.0f);
|
output.NormalSpec = float4(normalize(input.normal), Normal.Sample(S1,input.UV).w);
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
#include "Header.hlsli"
|
||||||
|
|
||||||
|
VertexOut main( VertexIn input )
|
||||||
|
{
|
||||||
|
VertexOut output;
|
||||||
|
|
||||||
|
Matrix boneTrans = AnimatedData[input.boneIndex.x]*input.boneWeight.x +
|
||||||
|
AnimatedData[input.boneIndex.y]*input.boneWeight.y +
|
||||||
|
AnimatedData[input.boneIndex.z]*input.boneWeight.z +
|
||||||
|
AnimatedData[input.boneIndex.w]*input.boneWeight.w;
|
||||||
|
|
||||||
|
input.pos = mul(boneTrans,float4(input.pos,1)).xyz * Animated + input.pos * int(1-Animated);
|
||||||
|
|
||||||
|
input.normal = mul(boneTrans,float4(input.normal,1)).xyz * Animated + input.normal * int(1-Animated);
|
||||||
|
|
||||||
|
output.pos = mul(WVP, float4(input.pos,1));
|
||||||
|
output.normal = mul(WV, float4(input.normal,0)).xyz;
|
||||||
|
output.UV = input.UV;
|
||||||
|
return output;
|
||||||
|
}
|
|
@ -32,13 +32,13 @@ SamplerState S1 : register(s0);
|
||||||
|
|
||||||
cbuffer Animation : register(b0)
|
cbuffer Animation : register(b0)
|
||||||
{
|
{
|
||||||
float4x4 BoneAnimation[100];
|
float4x4 AnimatedData[100];
|
||||||
int Animated;
|
|
||||||
float3 Pad;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cbuffer PerModel : register(b1)
|
cbuffer PerModel : register(b1)
|
||||||
{
|
{
|
||||||
matrix WV;
|
matrix WV;
|
||||||
matrix WVP;
|
matrix WVP;
|
||||||
|
int Animated;
|
||||||
|
float3 Pad;
|
||||||
}
|
}
|
|
@ -27,12 +27,13 @@ cbuffer LightConstants : register(b0)
|
||||||
|
|
||||||
Texture2D DiffuseGlow : register(t0);
|
Texture2D DiffuseGlow : register(t0);
|
||||||
Texture2D NormalSpec : register(t1);
|
Texture2D NormalSpec : register(t1);
|
||||||
Texture2D DepthTexture : register(t2);
|
Texture2D GUI : register(t2);
|
||||||
|
Texture2D DepthTexture : register(t3);
|
||||||
|
|
||||||
StructuredBuffer<PointLight> Points : register(t3);
|
StructuredBuffer<PointLight> Points : register(t4);
|
||||||
|
|
||||||
Texture1D SSAOKernel : register(t4);
|
Texture1D SSAOKernel : register(t5);
|
||||||
Texture2D SSAORand : register(t5);
|
Texture2D SSAORand : register(t6);
|
||||||
|
|
||||||
RWTexture2D<float4> Diffuse : register(u0);
|
RWTexture2D<float4> Diffuse : register(u0);
|
||||||
RWTexture2D<float4> Specular : register(u1);
|
RWTexture2D<float4> Specular : register(u1);
|
|
@ -27,16 +27,16 @@ void main( uint3 DTid : SV_DispatchThreadID, uint3 GTid : SV_GroupThreadID )
|
||||||
Shaded.Specular += light.Specular;
|
Shaded.Specular += light.Specular;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Diffuse[DTid.xy] = float4(Shaded.Diffuse * DiffuseGlow[DTid.xy].xyz,1);
|
Diffuse[DTid.xy] = float4(Shaded.Diffuse * DiffuseGlow[DTid.xy].xyz,0);
|
||||||
Diffuse[DTid.xy] = float4(DiffuseGlow[DTid.xy].xyz,1);
|
Specular[DTid.xy] = float4(Shaded.Specular, 0);
|
||||||
|
|
||||||
Specular[DTid.xy] = float4(Shaded.Specular, 1);
|
|
||||||
|
|
||||||
|
|
||||||
if(DTid.x & 1 && DTid.y & 1 )
|
if(DTid.x & 1 && DTid.y & 1 )
|
||||||
{
|
{
|
||||||
float AmbValue = GetSSAO(ViewPos, UV, DTid.xy, GTid.xy/2);
|
float AmbValue = GetSSAO(ViewPos, UV, DTid.xy, GTid.xy/2);
|
||||||
Ambient[DTid.xy/2] = AmbValue;
|
Ambient[DTid.xy/2] = float4(DiffuseGlow[DTid.xy].xyz, AmbValue);
|
||||||
|
Ambient[DTid.xy/2 + float2(Pixels.x/2, 0)] = GUI[DTid.xy];
|
||||||
|
//Ambient[DTid.xy] = GUI[DTid.xy];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
Texture2D Diffuse : register(t0);
|
||||||
|
Texture2D Specular : register(t1);
|
||||||
|
Texture2D Ambient : register(t2);
|
||||||
|
|
||||||
|
RWTexture2D<float4> Output;
|
||||||
|
|
||||||
|
cbuffer Size : register(b0)
|
||||||
|
{
|
||||||
|
int2 Pixels;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define AmbFactor 0.3f;
|
||||||
|
|
||||||
|
[numthreads(16, 16, 1)]
|
||||||
|
void main( uint3 DTid : SV_DispatchThreadID )
|
||||||
|
{
|
||||||
|
float4 Light = Diffuse[DTid.xy] + saturate(Specular[DTid.xy]);
|
||||||
|
float4 Amb = float4(Ambient[DTid.xy/2].xyz * Ambient[DTid.xy/2].w, 0);
|
||||||
|
float4 GUI;
|
||||||
|
uint2 index = DTid.xy/2 + int2(Pixels.x/2,0);
|
||||||
|
float3 PostLight = Amb.xyz * AmbFactor;
|
||||||
|
PostLight = PostLight + Light.xyz;
|
||||||
|
GUI = float4(Ambient[index]);
|
||||||
|
PostLight = PostLight * (1 - GUI.w);
|
||||||
|
Output[DTid.xy] = float4((GUI.xyz * GUI.w) + PostLight, 1);
|
||||||
|
}
|
|
@ -20,8 +20,10 @@ HWND g_hWnd = NULL;
|
||||||
Oyster::Graphics::Model::Model* m = NULL;
|
Oyster::Graphics::Model::Model* m = NULL;
|
||||||
Oyster::Graphics::Model::Model* m2 = NULL;
|
Oyster::Graphics::Model::Model* m2 = NULL;
|
||||||
Oyster::Graphics::Model::Model* m3 = NULL;
|
Oyster::Graphics::Model::Model* m3 = NULL;
|
||||||
|
Oyster::Graphics::API::Texture t = NULL;
|
||||||
Oyster::Math::Float4x4 V;
|
Oyster::Math::Float4x4 V;
|
||||||
Oyster::Math::Float4x4 P;
|
Oyster::Math::Float4x4 P;
|
||||||
|
Oyster::Graphics::Definitions::Pointlight pl;
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------
|
||||||
|
@ -90,6 +92,8 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Oyster::Graphics::API::Option o = Oyster::Graphics::API::GetOption();
|
||||||
|
|
||||||
Oyster::Graphics::API::DeleteModel(m);
|
Oyster::Graphics::API::DeleteModel(m);
|
||||||
Oyster::Graphics::API::DeleteModel(m2);
|
Oyster::Graphics::API::DeleteModel(m2);
|
||||||
Oyster::Graphics::API::DeleteModel(m3);
|
Oyster::Graphics::API::DeleteModel(m3);
|
||||||
|
@ -158,27 +162,29 @@ HRESULT InitDirect3D()
|
||||||
{
|
{
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
Oyster::Graphics::API::Option o = Oyster::Graphics::API::GetOption();
|
||||||
|
o.modelPath = L"..\\Content\\Models\\";
|
||||||
|
o.texturePath = L"..\\Content\\Textures\\";
|
||||||
|
Oyster::Graphics::API::SetOptions(o);
|
||||||
|
|
||||||
|
m = Oyster::Graphics::API::CreateModel(L"crate_colonists.dan");
|
||||||
|
m2 = Oyster::Graphics::API::CreateModel(L"char_fake_bin.dan");
|
||||||
|
m2->WorldMatrix = Oyster::Math3D::OrientationMatrix(Oyster::Math::Float3::null,Oyster::Math::Float3(0,0,0),Oyster::Math::Float3::null);
|
||||||
|
Oyster::Graphics::API::PlayAnimation(m2, L"Bend",true);
|
||||||
|
|
||||||
m = Oyster::Graphics::API::CreateModel(L"untitled.dan");
|
t = Oyster::Graphics::API::CreateTexture(L"structure_corp_mdg.png");
|
||||||
m2 = Oyster::Graphics::API::CreateModel(L"still.dan");
|
|
||||||
m2->WorldMatrix = Oyster::Math3D::OrientationMatrix(Oyster::Math::Float3::null,Oyster::Math::Float3(0,5,0),Oyster::Math::Float3::null);
|
|
||||||
m2->AnimationPlaying = 0;
|
|
||||||
m2->AnimationTime = 0.0f;
|
|
||||||
//m3 = Oyster::Graphics::API::CreateModel(L"box_2.dan");
|
|
||||||
//m3->WorldMatrix = Oyster::Math3D::OrientationMatrix(Oyster::Math::Float3::null,Oyster::Math::Float3(0,5,0),Oyster::Math::Float3::null);
|
|
||||||
|
|
||||||
|
|
||||||
P = Oyster::Math3D::ProjectionMatrix_Perspective(Oyster::Math::pi/2,1280.0f/720.0f,.1f,10000);
|
P = Oyster::Math3D::ProjectionMatrix_Perspective(Oyster::Math::pi/2,1280.0f/720.0f,.1f,10000);
|
||||||
Oyster::Graphics::API::SetProjection(P);
|
Oyster::Graphics::API::SetProjection(P);
|
||||||
|
|
||||||
V = Oyster::Math3D::OrientationMatrix_LookAtDirection(Oyster::Math::Float3(0,0,-1),Oyster::Math::Float3(0,1,0),Oyster::Math::Float3(0,200,500.4f));
|
V = Oyster::Math3D::OrientationMatrix_LookAtDirection(Oyster::Math::Float3(0,0,-1),Oyster::Math::Float3(0,1,0),Oyster::Math::Float3(0,0,5.4f));
|
||||||
V = V.GetInverse();
|
V = V.GetInverse();
|
||||||
|
|
||||||
|
|
||||||
Oyster::Graphics::Definitions::Pointlight pl;
|
|
||||||
pl.Color = Oyster::Math::Float3(1,1,1);
|
pl.Color = Oyster::Math::Float3(1,0,1);
|
||||||
pl.Bright = 1;
|
pl.Bright = 1;
|
||||||
pl.Pos = Oyster::Math::Float3(0,-20.0f,30.4f);
|
pl.Pos = Oyster::Math::Float3(0,-20.0f,0.4f);
|
||||||
pl.Radius = 90;
|
pl.Radius = 90;
|
||||||
|
|
||||||
Oyster::Graphics::API::AddLight(pl);
|
Oyster::Graphics::API::AddLight(pl);
|
||||||
|
@ -189,16 +195,11 @@ HRESULT InitDirect3D()
|
||||||
float angle = 0;
|
float angle = 0;
|
||||||
HRESULT Update(float deltaTime)
|
HRESULT Update(float deltaTime)
|
||||||
{
|
{
|
||||||
|
|
||||||
angle += Oyster::Math::pi/16 * deltaTime;
|
angle += Oyster::Math::pi/16 * deltaTime;
|
||||||
//m->WorldMatrix = Oyster::Math3D::RotationMatrix_AxisY(angle) * Oyster::Math3D::RotationMatrix_AxisX(-Oyster::Math::pi/2);
|
m2->WorldMatrix = Oyster::Math3D::OrientationMatrix(Oyster::Math::Float3(0,1,0)*-angle,Oyster::Math::Float3(0,0,0),Oyster::Math::Float3::null);
|
||||||
m2->WorldMatrix = Oyster::Math3D::OrientationMatrix(Oyster::Math::Float3(0,1,0)*-Oyster::Math::pi/2,Oyster::Math::Float3(0,-4,0),Oyster::Math::Float3::null);
|
//Oyster::Math::Matrix ma = Oyster::Math::Matrix::identity;
|
||||||
Oyster::Math::Matrix ma = Oyster::Math::Matrix::identity;
|
Oyster::Graphics::API::Update(deltaTime);
|
||||||
ma *= 50;
|
//m2->Animation.data.AnimationTime += deltaTime;// * 0.5f;
|
||||||
ma.m44 = 1;
|
|
||||||
m2->WorldMatrix = m2->WorldMatrix * ma;
|
|
||||||
m2->AnimationTime += deltaTime * 0.5f;
|
|
||||||
//m3->WorldMatrix = Oyster::Math3D::OrientationMatrix(Oyster::Math::Float3(1,0,0)*-0,Oyster::Math::Float3(3,4,-1*angle),Oyster::Math::Float3::null);
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,10 +208,10 @@ HRESULT Render(float deltaTime)
|
||||||
Oyster::Graphics::API::SetView(V);
|
Oyster::Graphics::API::SetView(V);
|
||||||
Oyster::Graphics::API::NewFrame();
|
Oyster::Graphics::API::NewFrame();
|
||||||
|
|
||||||
//Oyster::Graphics::API::RenderModel(*m);
|
Oyster::Graphics::API::RenderModel(m);
|
||||||
Oyster::Graphics::API::RenderModel(*m2);
|
Oyster::Graphics::API::RenderModel(m2);
|
||||||
//Oyster::Graphics::API::RenderModel(*m3);
|
Oyster::Graphics::API::StartGuiRender();
|
||||||
|
Oyster::Graphics::API::RenderGuiElement(t,Oyster::Math::Float2(0.5f,0.5f),Oyster::Math::Float2(0.2f,0.2f));
|
||||||
Oyster::Graphics::API::EndFrame();
|
Oyster::Graphics::API::EndFrame();
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
@ -248,6 +249,17 @@ LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam
|
||||||
Oyster::Graphics::API::ReloadShaders();
|
Oyster::Graphics::API::ReloadShaders();
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
//Z -
|
||||||
|
case 0x5A:
|
||||||
|
//m2->AnimationTime -= 0.1f;
|
||||||
|
//if(m2->AnimationTime < 0)
|
||||||
|
//m2->AnimationTime = 0;
|
||||||
|
break;
|
||||||
|
//X +
|
||||||
|
case 0x58:
|
||||||
|
//m2->AnimationTime += 0.1f;
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue