From a85eb257bed22bfc1ddc812e887bdc7107949c9e Mon Sep 17 00:00:00 2001 From: dexyfex Date: Sat, 17 Mar 2018 01:03:37 +1100 Subject: [PATCH] Rendering support for missing/new vertex type used by some vehicles --- .../GameFiles/Resources/VertexType.cs | 1 + Rendering/ShaderManager.cs | 3 ++ Rendering/Shaders/BasicShader.cs | 2 + Rendering/Shaders/ShadowShader.cs | 1 + Rendering/VertexTypes.cs | 48 +++++++++++++++++++ 5 files changed, 55 insertions(+) diff --git a/CodeWalker.Core/GameFiles/Resources/VertexType.cs b/CodeWalker.Core/GameFiles/Resources/VertexType.cs index 4afc0de..1c5fefc 100644 --- a/CodeWalker.Core/GameFiles/Resources/VertexType.cs +++ b/CodeWalker.Core/GameFiles/Resources/VertexType.cs @@ -48,6 +48,7 @@ namespace CodeWalker.GameFiles PCCNCTTT = 479, PNCTT = 217, PNCTTT = 473, + PCCNCTTTX = 16863, } diff --git a/Rendering/ShaderManager.cs b/Rendering/ShaderManager.cs index 1113ef5..cbf97af 100644 --- a/Rendering/ShaderManager.cs +++ b/Rendering/ShaderManager.cs @@ -1207,6 +1207,9 @@ namespace CodeWalker.Rendering case 3631243954://{vehicle_blurredrotor.sps} case 457610770://{vehicle_nosplash.sps} case 3621563260://{vehicle_nowater.sps} + case 430888562://{vehicle_paint8.sps} + case 4118002252://{vehicle_paint9.sps} + case 158342452://{vehicle_detail.sps} b = BasicBatches; break; case 1041778472://{vehicle_decal.sps} diff --git a/Rendering/Shaders/BasicShader.cs b/Rendering/Shaders/BasicShader.cs index cca0412..ae1ea37 100644 --- a/Rendering/Shaders/BasicShader.cs +++ b/Rendering/Shaders/BasicShader.cs @@ -238,6 +238,7 @@ namespace CodeWalker.Rendering layouts.Add(VertexType.PNCTTTX_3, new InputLayout(device, vspnctttxbytes, VertexTypePNCTTTX_3.GetLayout())); layouts.Add(VertexType.PNCTTTTX, new InputLayout(device, vspnctttxbytes, VertexTypePNCTTTTX.GetLayout())); layouts.Add(VertexType.PNCCTTTX, new InputLayout(device, vspncctttxbytes, VertexTypePNCCTTTX.GetLayout())); + layouts.Add(VertexType.PCCNCTTTX, new InputLayout(device, vspncctttxbytes, VertexTypePCCNCTTTX.GetLayout())); layouts.Add(VertexType.PCCNCTT, new InputLayout(device, vspnccttbytes, VertexTypePCCNCTT.GetLayout())); @@ -401,6 +402,7 @@ namespace CodeWalker.Rendering break; case VertexType.PNCCTTTX://not used? + case VertexType.PCCNCTTTX: vs = basicvspncctttx; break; diff --git a/Rendering/Shaders/ShadowShader.cs b/Rendering/Shaders/ShadowShader.cs index 17aa68b..e3b82cf 100644 --- a/Rendering/Shaders/ShadowShader.cs +++ b/Rendering/Shaders/ShadowShader.cs @@ -115,6 +115,7 @@ namespace CodeWalker.Rendering layouts.Add(VertexType.PCCNCTTT, new InputLayout(device, vsbytes, VertexTypePCCNCTTT.GetLayout())); layouts.Add(VertexType.PNCTT, new InputLayout(device, vsbytes, VertexTypePNCTT.GetLayout())); layouts.Add(VertexType.PNCTTT, new InputLayout(device, vsbytes, VertexTypePNCTTT.GetLayout())); + layouts.Add(VertexType.PCCNCTTTX, new InputLayout(device, vsbytes, VertexTypePCCNCTTTX.GetLayout())); diff --git a/Rendering/VertexTypes.cs b/Rendering/VertexTypes.cs index 403795c..459e1a0 100644 --- a/Rendering/VertexTypes.cs +++ b/Rendering/VertexTypes.cs @@ -866,6 +866,34 @@ namespace CodeWalker.Rendering + public struct VertexTypePCCNCTTTX //id: 1510566300, stride: 76, flags: 16863, types: 8598872888530528662, refs: 38 + { + public Vector3 Component1; + public uint Component2; + public uint Component3; + public Vector3 Component4; + public uint Component5; + public Vector2 Component6; + public Vector2 Component7; + public Vector2 Component8; + public Vector4 Component9; + + public static InputElement[] GetLayout() + { + return new[] + { + new InputElement("POSITION", 0, Format.R32G32B32_Float, 0, 0), + new InputElement("COLOR", 0, Format.R8G8B8A8_UNorm, 12, 0), + new InputElement("COLOR", 1, Format.R8G8B8A8_UNorm, 16, 0), + new InputElement("NORMAL", 0, Format.R32G32B32_Float, 20, 0), + new InputElement("COLOR", 2, Format.R8G8B8A8_UNorm, 32, 0), + new InputElement("TEXCOORD", 0, Format.R32G32_Float, 36, 0), + new InputElement("TEXCOORD", 1, Format.R32G32_Float, 44, 0), + new InputElement("TEXCOORD", 2, Format.R32G32_Float, 52, 0), + new InputElement("TANGENT", 0, Format.R32G32B32A32_Float, 60, 0), + }; + } + } @@ -1410,6 +1438,26 @@ namespace CodeWalker.Rendering } + + //new (xmas 2017?) + + public struct VertexType16863 //id: 1510566300, stride: 76, flags: 16863, types: 8598872888530528662, refs: 38 + { + public Vector3 Component1; + public uint Component2; + public uint Component3; + public Vector3 Component4; + public uint Component5; + public Vector2 Component6; + public Vector2 Component7; + public Vector2 Component8; + public Vector4 Component9; + } + + + + + */