Update to .net framework 4.8 and new csproj style, moved all CodeWalker project files into subfolder

This commit is contained in:
dexy
2020-02-25 02:56:27 +11:00
Unverified
parent e2ed6e0fb8
commit c9b69bd6b7
332 changed files with 725 additions and 3200 deletions
+50
View File
@@ -0,0 +1,50 @@
using SharpDX.D3DCompiler;
using System;
namespace CodeWalker.GameFiles
{
public static class FxcParser
{
public static bool ParseShader(FxcShader shader)
{
ShaderBytecode ByteCodeObj;
ShaderProfile ShaderProfile;
try
{
ByteCodeObj = new ShaderBytecode(shader.ByteCode);
ShaderProfile = ByteCodeObj.GetVersion();
switch (ShaderProfile.Version)
{
case ShaderVersion.VertexShader:
case ShaderVersion.PixelShader:
case ShaderVersion.GeometryShader:
//VersionMajor = br.ReadByte();//4,5 //appears to be shader model version
//VersionMinor = br.ReadByte(); //perhaps shader minor version
break;
default:
shader.VersionMajor = (byte)ShaderProfile.Major;
shader.VersionMinor = (byte)ShaderProfile.Minor;
break;
}
shader.Disassembly = ByteCodeObj.Disassemble();
}
catch (Exception ex)
{
shader.LastError += ex.ToString() + "\r\n";
return false;
}
return true;
}
}
}
@@ -0,0 +1,20 @@
using CodeWalker.Properties;
namespace CodeWalker.GameFiles
{
public static class GameFileCacheFactory
{
public static GameFileCache Create()
{
var s = Settings.Default;
return new GameFileCache(s.CacheSize, s.CacheTime, GTAFolder.CurrentGTAFolder, s.DLC, s.EnableMods, s.ExcludeFolders);
}
}
}
+157
View File
@@ -0,0 +1,157 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SharpDX.DXGI;
namespace CodeWalker.GameFiles
{
public static class TextureFormats
{
public static Format GetDXGIFormat(TextureFormat fmt)
{
Format format = Format.Unknown;
switch (fmt)
{
// compressed
case TextureFormat.D3DFMT_DXT1: format = Format.BC1_UNorm; break;
case TextureFormat.D3DFMT_DXT3: format = Format.BC2_UNorm; break;
case TextureFormat.D3DFMT_DXT5: format = Format.BC3_UNorm; break;
case TextureFormat.D3DFMT_ATI1: format = Format.BC4_UNorm; break;
case TextureFormat.D3DFMT_ATI2: format = Format.BC5_UNorm; break;
case TextureFormat.D3DFMT_BC7: format = Format.BC7_UNorm; break;
// uncompressed
case TextureFormat.D3DFMT_A1R5G5B5: format = Format.B5G5R5A1_UNorm; break;
case TextureFormat.D3DFMT_A8: format = Format.A8_UNorm; break;
case TextureFormat.D3DFMT_A8B8G8R8: format = Format.R8G8B8A8_UNorm; break;
case TextureFormat.D3DFMT_L8: format = Format.R8_UNorm; break;
case TextureFormat.D3DFMT_A8R8G8B8: format = Format.B8G8R8A8_UNorm; break;
}
return format;
}
public static int ByteSize(TextureFormat fmt)
{
switch (fmt)
{
// compressed
case TextureFormat.D3DFMT_DXT1: return 4;// BC1_UNorm
case TextureFormat.D3DFMT_DXT3: return 8;// BC2_UNorm
case TextureFormat.D3DFMT_DXT5: return 8;// BC3_UNorm
case TextureFormat.D3DFMT_ATI1: return 4;// BC4_UNorm
case TextureFormat.D3DFMT_ATI2: return 8;// BC5_UNorm
case TextureFormat.D3DFMT_BC7: return 8;// BC7_UNorm
// uncompressed
case TextureFormat.D3DFMT_A1R5G5B5: return 16;// B5G5R5A1_UNorm
case TextureFormat.D3DFMT_A8: return 8;// A8_UNorm
case TextureFormat.D3DFMT_A8B8G8R8: return 32;// R8G8B8A8_UNorm
case TextureFormat.D3DFMT_L8: return 8;// R8_UNorm
case TextureFormat.D3DFMT_A8R8G8B8: return 32;// B8G8R8A8_UNorm
default: return 0;
}
}
public static void ComputePitch(Format fmt, int width, int height, out int rowPitch, out int slicePitch, uint flags)
{
int nbw, nbh;
switch (fmt)
{
case Format.BC1_Typeless:
case Format.BC1_UNorm:
case Format.BC1_UNorm_SRgb:
case Format.BC4_Typeless:
case Format.BC4_UNorm:
case Format.BC4_SNorm:
nbw = Math.Max(1, (width + 3) / 4);
nbh = Math.Max(1, (height + 3) / 4);
rowPitch = nbw * 8;
slicePitch = rowPitch * nbh;
break;
case Format.BC2_Typeless:
case Format.BC2_UNorm:
case Format.BC2_UNorm_SRgb:
case Format.BC3_Typeless:
case Format.BC3_UNorm:
case Format.BC3_UNorm_SRgb:
case Format.BC5_Typeless:
case Format.BC5_UNorm:
case Format.BC5_SNorm:
case Format.BC6H_Typeless:
case Format.BC6H_Uf16:
case Format.BC6H_Sf16:
case Format.BC7_Typeless:
case Format.BC7_UNorm:
case Format.BC7_UNorm_SRgb:
nbw = Math.Max(1, (width + 3) / 4);
nbh = Math.Max(1, (height + 3) / 4);
rowPitch = nbw * 16;
slicePitch = rowPitch * nbh;
break;
case Format.R8G8_B8G8_UNorm:
case Format.G8R8_G8B8_UNorm:
case Format.YUY2:
rowPitch = ((width + 1) >> 1) * 4;
slicePitch = rowPitch * height;
break;
case Format.Y210:
case Format.Y216:
rowPitch = ((width + 1) >> 1) * 8;
slicePitch = rowPitch * height;
break;
case Format.NV12:
case Format.Opaque420:
rowPitch = ((width + 1) >> 1) * 2;
slicePitch = rowPitch * (height + ((height + 1) >> 1));
break;
case Format.P010:
case Format.P016:
//case Format.XBOX_DXGI_FORMAT_D16_UNORM_S8_UINT:
//case Format.XBOX_DXGI_FORMAT_R16_UNORM_X8_TYPELESS:
//case Format.XBOX_DXGI_FORMAT_X16_TYPELESS_G8_UINT:
rowPitch = ((width + 1) >> 1) * 4;
slicePitch = rowPitch * (height + ((height + 1) >> 1));
break;
case Format.NV11:
rowPitch = ((width + 3) >> 2) * 4;
slicePitch = rowPitch * height * 2;
break;
//case Format.WIN10_DXGI_FORMAT_P208:
// rowPitch = ((width + 1) >> 1) * 2;
// slicePitch = rowPitch * height * 2;
// break;
//case Format.WIN10_DXGI_FORMAT_V208:
// rowPitch = width;
// slicePitch = rowPitch * (height + (((height + 1) >> 1) * 2));
// break;
//case Format.WIN10_DXGI_FORMAT_V408:
// rowPitch = width;
// slicePitch = rowPitch * (height + ((height >> 1) * 4));
// break;
default:
int bpp = FormatHelper.SizeOfInBytes(fmt) * 8;
// Default byte alignment
rowPitch = (width * bpp + 7) / 8;
slicePitch = rowPitch * height;
break;
}
}
}
}