From bb520b43ec3e4a743e87fca73fb570b18ffe1e58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Sun, 25 Jun 2023 17:58:16 +0200 Subject: [PATCH] Added support for Cube Textures, Improved dds import (and textures in general), Texture refactoring and DX11 DeviceContext synchronization --- .../content/Textures/test_skybox.dds | Bin 0 -> 393344 bytes .../content/Textures/test_skybox.dds.ass | 24 + .../src/Assets/Importers/DdsImporter.bf | 526 ++++++++++++++++++ .../src/Assets/MaterialAssetLoader.bf | 3 +- .../src/Assets/TextureAssetLoader.bf | 194 ++++++- GlitchyEngine/src/ImGui/ImGuiLayer.bf | 6 +- .../src/Platform/DX11/Dx11Platform.bf | 8 +- .../src/Platform/DX11/Renderer/Dx11Buffer.bf | 16 +- .../DX11/Renderer/Dx11GeometryBinding.bf | 30 +- .../DX11/Renderer/Dx11GraphicsContext.bf | 85 ++- .../DX11/Renderer/Dx11RenderTarget.bf | 28 +- .../Platform/DX11/Renderer/Dx11RendererAPI.bf | 79 ++- .../DX11/Renderer/Dx11SamplerState.bf | 7 +- .../src/Platform/DX11/Renderer/Dx11Shader.bf | 25 +- .../src/Platform/DX11/Renderer/Dx11Texture.bf | 269 ++++++--- GlitchyEngine/src/Renderer/Effect.bf | 18 +- GlitchyEngine/src/Renderer/Material.bf | 36 +- GlitchyEngine/src/Renderer/RenderTarget.bf | 9 - .../src/Renderer/ShaderTextureCollection.bf | 10 +- GlitchyEngine/src/Renderer/Texture.bf | 90 +-- 20 files changed, 1222 insertions(+), 241 deletions(-) create mode 100644 GlitchyEditor/content/Textures/test_skybox.dds create mode 100644 GlitchyEditor/content/Textures/test_skybox.dds.ass create mode 100644 GlitchyEditor/src/Assets/Importers/DdsImporter.bf diff --git a/GlitchyEditor/content/Textures/test_skybox.dds b/GlitchyEditor/content/Textures/test_skybox.dds new file mode 100644 index 0000000000000000000000000000000000000000..8e510e9ecd0532aac25d11dc29de75a93ea0c654 GIT binary patch literal 393344 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 ZoE~1fFMh$hUw(Dse*R~t?t8f3{{ikNE3*Iq literal 0 HcmV?d00001 diff --git a/GlitchyEditor/content/Textures/test_skybox.dds.ass b/GlitchyEditor/content/Textures/test_skybox.dds.ass new file mode 100644 index 0000000..2f2df14 --- /dev/null +++ b/GlitchyEditor/content/Textures/test_skybox.dds.ass @@ -0,0 +1,24 @@ +{ + AssetLoader = "EditorTextureAssetLoader", + Config = (GlitchyEditor.Assets.EditorTextureAssetLoaderConfig){ + _isSrgb = true, + _samplerStateDescription = { + MinFilter = .Linear, + MagFilter = .Linear, + MipFilter = .Linear, + ComparisonFunction = .Never, + AddressModeU = .Clamp, + AddressModeV = .Clamp, + AddressModeW = .Clamp, + MipMinLOD = -Infinity, + MipMaxLOD = Infinity, + MaxAnisotropy = 1, + BorderColor = { + R = 1, + G = 1, + B = 1, + A = 1 + } + } + } +} \ No newline at end of file diff --git a/GlitchyEditor/src/Assets/Importers/DdsImporter.bf b/GlitchyEditor/src/Assets/Importers/DdsImporter.bf new file mode 100644 index 0000000..51d5ea4 --- /dev/null +++ b/GlitchyEditor/src/Assets/Importers/DdsImporter.bf @@ -0,0 +1,526 @@ +using System.IO; +using System; +using GlitchyEngine; +using System.Collections; + +namespace GlitchyEditor.Assets.Importers; + +// Based on https://github.com/Diron-P/DDSReader/blob/main/dds_loader.h + +public struct LoadedSurface +{ + public Span Data; + public uint32 Pitch; + public uint32 SlicePitch; + + public int ArrayIndex; + public int CubeFace; + public int MipLevel; +} + +public struct LoadedTextureInfo +{ + public enum Dimension + { + Unknown, + Texture1D, + Texture2D, + Texture3D + } + + public uint8[] PixelData = null; + public DirectX.DXGI.Format PixelFormat = .Unknown; + public int MipMapCount = 0; + public int ArraySize = 0; + public Dimension Dimension = .Unknown; + public bool IsCubeMap; + + public int Width; + public int Height; + public int Depth; +} + +static class DdsImporter +{ + private const uint32 MagicWord = 0x20534444; // 'DDS + + public enum LoadError + { + Unknown, + WrongMagicWord, + StreamReadFailed + } + + private enum HeaderFlags : uint32 + { + /// Required in every .dds file. + DDSD_CAPS = 0x1, + /// Required in every .dds file. + DDSD_HEIGHT = 0x2, + /// Required in every .dds file. + DDSD_WIDTH = 0x4, + /// Required in every .dds file. + DDSD_PITCH = 0x8, + /// Required in every .dds file. + DDSD_PIXELFORMAT = 0x1000, + /// Required in a mipmapped texture. + DDSD_MIPMAPCOUNT = 0x20000, + /// Required when pitch is provided for a compressed texture. + DDSD_LINEARSIZE = 0x80000, + /// Required in a depth texture. + DDSD_DEPTH = 0x800000 + } + + private enum Caps1 : uint32 + { + /// Should be set, when the file contains multiple surfaces (e.g. Cubemaps or Mipmaps). + Complex = 0x8, + /// Should be set, if the file contains mipmaps. + MipMap = 0x400000, + /// Should always be set. + Texture = 0x1000 + } + + [AllowDuplicates] + private enum Caps2 : uint32 + { + Cubemap = 0x200, + Cubemap_PositiveX = 0x400, + Cubemap_NegativeX = 0x800, + Cubemap_X = Cubemap_PositiveX | Cubemap_NegativeX, + Cubemap_PositiveY = 0x1000, + Cubemap_NegativeY = 0x2000, + Cubemap_Y = Cubemap_PositiveY | Cubemap_NegativeY, + Cubemap_PositiveZ = 0x4000, + Cubemap_NegativeZ = 0x8000, + Cubemap_Z = Cubemap_PositiveZ | Cubemap_NegativeZ, + /// This is the flag that should be set for Cubemaps in DX10+ + Cubemap_AllFaces = Cubemap | Cubemap_X | Cubemap_Y | Cubemap_Z, + + Volume = 0x200000, + } + + [CRepr] + private struct DdsHeader + { + /// Size of this structure. This member must be set to 124. + private uint32 Size; + /// Flags to indicate which members contain valid data. + public HeaderFlags Flags; + /// Surface height (in pixels). + public uint32 Height; + /// Surface width (in pixels). + public uint32 Width; + public uint32 PitchOrLinearSize; + /// Depth of a volume texture (in pixels), otherwise unused. + public uint32 Depth; + /// Number of mipmap levels, otherwise unused. + public uint32 MipMapCount; + /// Unused. + private uint32[11] Reserved1; + /// The pixel format. + public DdsPixelFormat PixelFormat; + public Caps1 Caps; + public Caps2 Caps2; + /// Unused. + private uint32 dwCaps3; + /// Unused. + private uint32 dwCaps4; + /// Unused. + private uint32 dwReserved2; + } + + private enum SurfaceType : uint32 + { + /// Texture contains alpha data; dwRGBAlphaBitMask contains valid data. + AlphaPixels = 0x1, + /// Used in some older DDS files for alpha channel only uncompressed data (dwRGBBitCount contains the alpha channel bitcount; dwABitMask contains valid data) + Alpha = 0x2, + + /// Texture contains compressed RGB data; dwFourCC contains valid data. + FourCC = 0x4, + /// Texture contains uncompressed RGB data; dwRGBBitCount and the RGB masks (dwRBitMask, dwGBitMask, dwBBitMask) contain valid data. + RGB = 0x40, + + RGBA = RGB | AlphaPixels, + + /// Used in some older DDS files for YUV uncompressed data (dwRGBBitCount contains the YUV bit count; + /// dwRBitMask contains the Y mask, dwGBitMask contains the U mask, dwBBitMask contains the V mask) + YUV = 0x200, + + /// Used in some older DDS files for single channel color uncompressed data (dwRGBBitCount contains the luminance channel bit count; + /// dwRBitMask contains the channel mask). Can be combined with DDPF_ALPHAPIXELS for a two channel DDS file. + Luminance = 0x20000 + } + + private static uint32 MakeFourCC(char8 c0, char8 c1, char8 c2, char8 c3) + { + return ((uint32)c3 << 24 | (uint32) c2 << 16 | (uint32) c1 << 8 | (uint32) c0); + } + + /*private enum FourCC : uint32 + { + DXT1 = MakeFourCC('D', 'X', 'T', '1'), + DXT2 = MakeFourCC('D', 'X', 'T', '2'), + DXT3 = MakeFourCC('D', 'X', 'T', '3'), + DXT4 = MakeFourCC('D', 'X', 'T', '4'), + DXT5 = MakeFourCC('D', 'X', 'T', '5'), + /// indicates the prescense of the DDS_HEADER_DXT10 extended header + DX10 = MakeFourCC('D', 'X', '1', '0'), + }*/ + + [CRepr] + private struct DdsPixelFormat + { + /// Structure size; set to 32 (bytes). + private uint32 Size; + /// Values which indicate what type of data is in the surface. + public SurfaceType SurfaceType; + public uint32 FourCC; + /// Number of bits in an RGB (possibly including alpha) format. Valid when dwFlags includes DDPF_RGB, DDPF_LUMINANCE, or DDPF_YUV. + public uint32 RGBBitCount; + /// Red (or luminance or Y) mask for reading color data. For instance, given the A8R8G8B8 format, the red mask would be 0x00ff0000. + public uint32 RBitMask; + /// Green (or U) mask for reading color data. For instance, given the A8R8G8B8 format, the green mask would be 0x0000ff00. + public uint32 GBitMask; + /// Blue (or V) mask for reading color data. For instance, given the A8R8G8B8 format, the blue mask would be 0x000000ff. + public uint32 BBitMask; + /// Alpha mask for reading alpha data. dwFlags must include DDPF_ALPHAPIXELS or DDPF_ALPHA. For instance, given the A8R8G8B8 format, the alpha mask would be 0xff000000. + public uint32 ABitMask; + } + + public enum ResourceDimensions : uint32 + { + Texture1D = 2, + Texture2D = 3, + Texture3D = 4 + } + + public enum MiscFlags : uint32 + { + TextureCube = 0x4, + } + + public enum AlphaMode : uint32 + { + Unknown = 0x0, + Straight = 0x1, + Premultiplied = 0x2, + Opaque = 0x3, + /// Any alpha channel content is being used as a 4th channel and is not intended to represent transparency (straight or premultiplied). + Custom = 0x4 + } + + /// DDS header extension to handle resource arrays, DXGI pixel formats that don't map to the legacy Microsoft DirectDraw pixel format structures, and additional metadata. + [CRepr] + private struct DdsDxt10Header + { + public DirectX.DXGI.Format PixelFormat; + public ResourceDimensions ResourceDimension; + public MiscFlags MiscFlags; + /// Number of elements in the array. For a 2D cubemap this is the number of cubes, so the file contains ArraySize * 6 2D textures. + /// For a 3D Texture this must be 1. + public uint32 ArraySize; + + public AlphaMode AlphaMode; + } + + private static Result DecodeHeader(Stream data, out DdsHeader header, out DdsDxt10Header? extendedHeader) + { + header = ?; + extendedHeader = null; + + // Check the magic word + Result magicWord = data.Read(); + + if (magicWord case .Err) + return .Err(.StreamReadFailed); + + if (magicWord != MagicWord) + return .Err(.WrongMagicWord); + + // Load the header + Result headerResult = data.Read(); + + if (headerResult case .Err) + return .Err(.StreamReadFailed); + + header = headerResult; + + // If available, load the extended header + if (header.PixelFormat.SurfaceType.HasFlag(.FourCC) && header.PixelFormat.FourCC == MakeFourCC('D', 'X', '1', '0')) + { + Result extendedHeaderResult = data.Read(); + + if (headerResult case .Err) + return .Err(.StreamReadFailed); + + extendedHeader = extendedHeaderResult; + } + + return .Ok; + } + + private static bool IsBitMask(DdsPixelFormat ddspf, uint32 rBitMask, uint32 gBitMask, uint32 bBitMask, uint32 aBitMask) + { + return ddspf.RBitMask == rBitMask && ddspf.GBitMask == gBitMask && ddspf.BBitMask == bBitMask && ddspf.ABitMask == aBitMask; + } + + private static DirectX.DXGI.Format GetFormat(in DdsHeader header, in DdsDxt10Header? extendedheader, bool isSrgb) + { + if (extendedheader != null) + return extendedheader.Value.PixelFormat; + + DdsPixelFormat pixelFormat = header.PixelFormat; + + // Currently supports only basic dxgi formats. + if (pixelFormat.SurfaceType.HasFlag(.RGBA)) + { + switch (pixelFormat.RGBBitCount) + { + case 32: + if (IsBitMask(pixelFormat, 0xFF, 0xFF00, 0xFF0000, 0xFF000000)) + return isSrgb ? .R8G8B8A8_UNorm_SRGB : .R8G8B8A8_UNorm; + + if (IsBitMask(pixelFormat, 0xffff, 0xffff0000, 0x0, 0x0)) + return .R16G16_UNorm; + + if (IsBitMask(pixelFormat, 0x3ff, 0xffc00, 0x3ff00000, 0x0)) + return .R10G10B10A2_UNorm; + case 16: + if (IsBitMask(pixelFormat, 0x7c00, 0x3e0, 0x1f, 0x8000)) + return .B5G5R5A1_UNorm; + default: + return .Unknown; + } + } + + if (pixelFormat.SurfaceType.HasFlag(.RGB)) + { + switch (pixelFormat.RGBBitCount) + { + case 32: + if (IsBitMask(pixelFormat, 0xffff, 0xffff0000, 0x0, 0x0)) + return .R16G16_UNorm; + break; + case 16: + if (IsBitMask(pixelFormat, 0xf800, 0x7e0, 0x1f, 0x0)) + return .B5G6R5_UNorm; + break; + default: + return .Unknown; + } + } + + if (pixelFormat.SurfaceType.HasFlag(.FourCC)) + { + switch (pixelFormat.FourCC) + { + case MakeFourCC('D', 'X', 'T', '1'): + return isSrgb ? .BC1_UNorm_SRGB : .BC1_UNorm; + case MakeFourCC('D', 'X', 'T', '3'): + return isSrgb ? .BC2_UNorm_SRGB : .BC2_UNorm; + case MakeFourCC('D', 'X', 'T', '5'): + return isSrgb ? .BC3_UNorm_SRGB : .BC3_UNorm; + // Legacy compression formats. + case MakeFourCC('B', 'C', '4', 'U'), MakeFourCC('A', 'T', 'I', '1'): + return .BC4_UNorm; + case MakeFourCC('A', 'T', 'I', '2'): + return .BC5_UNorm; + case MakeFourCC('R', 'G', 'B', 'G'): + return .R8G8_B8G8_UNorm; + case MakeFourCC('G', 'R', 'G', 'B'): + return .G8R8_G8B8_UNorm; + case 36: + return .R16G16B16A16_UNorm; + case 111: + return .R16_Float; + case 112: + return .R16G16_Float; + case 113: + return .R16G16B16A16_Float; + case 114: + return .R32_Float; + case 115: + return .R32G32_Float; + case 116: + return .R32G32B32A32_Float; + default: + return .Unknown; + } + } + + return .Unknown; + } + + public static Result LoadDds(Stream data, bool isSrgb, List surfaces, out LoadedTextureInfo textureInfo) + { + textureInfo = .(); + + var headerResult = DecodeHeader(data, let header, let extendedHeader); + + if (headerResult case .Err) + return headerResult; + + int surfaceCount = 1; + + if (header.Flags.HasFlag(.DDSD_MIPMAPCOUNT) || header.MipMapCount != 0) + { + if (header.MipMapCount == 0) + Log.EngineLogger.Warning("Mipmap count is zero, even though the flags say it shouldn't."); + + if (!header.Flags.HasFlag(.DDSD_MIPMAPCOUNT)) + Log.EngineLogger.Warning("Mipmap count is not zero, even though the mipmap count flag isn't set."); + + textureInfo.MipMapCount = header.MipMapCount; + surfaceCount *= textureInfo.MipMapCount; + } + else + { + textureInfo.MipMapCount = 1; + } + + if (extendedHeader != null) + { + textureInfo.ArraySize = extendedHeader.Value.ArraySize; + surfaceCount *= textureInfo.ArraySize; + } + else + { + textureInfo.ArraySize = 1; + } + + if (header.Caps2.HasFlag(.Cubemap)) + { + if (!header.Caps2.HasFlag(.Cubemap_AllFaces)) + Log.EngineLogger.Warning("Texture might only contains partial cubemap, this is not allowed. (Defined Cubemap-Flag, but not all cubemap faces)"); + + surfaceCount *= 6; + textureInfo.IsCubeMap = true; + } + + textureInfo.PixelFormat = GetFormat(header, extendedHeader, isSrgb); + + textureInfo.Width = header.Width; + textureInfo.Height = header.Height; + textureInfo.Depth = header.Depth; + + switch (extendedHeader?.ResourceDimension) + { + case .Texture1D: + textureInfo.Dimension = .Texture1D; + case .Texture2D: + textureInfo.Dimension = .Texture2D; + case .Texture3D: + textureInfo.Dimension = .Texture3D; + case null: + if (header.Flags.HasFlag(.DDSD_DEPTH)) + textureInfo.Dimension = .Texture3D; + else + textureInfo.Dimension = .Texture2D; + } + + // Make sure we have enough space in the list (avoid allocations later) + surfaces.Reserve(surfaceCount); + + uint32 scanLineSize = 0; + uint32 slicePitch = 0; + uint32 numBytes = 0; + uint32 blockSize = 0; // Block size in bytes. + + switch (textureInfo.PixelFormat) + { + case .BC1_UNorm, .BC1_UNorm_SRGB, .BC4_UNorm: + blockSize = 8; + case .BC2_UNorm, .BC2_UNorm_SRGB, .BC3_UNorm, .BC3_UNorm_SRGB, .BC5_UNorm: + blockSize = 16; + default: + } + + uint32 width = 0; + uint32 height = 0; + uint32 depth = 0; + + uint32 index = 0; + + uint offset = 0; + + for (uint32 arrayIndex = 0; arrayIndex < textureInfo.ArraySize; arrayIndex++) + { + for (uint32 cubeFace = 0; cubeFace < (textureInfo.IsCubeMap ? 6 : 1); cubeFace++) + { + width = header.Width; + height = header.Height; + depth = header.Depth; + + for (uint32 mipLevel = 0; mipLevel < textureInfo.MipMapCount; ++mipLevel) + { + // This will recalculate te pitch of the main image as well. + if (header.Flags.HasFlag(.DDSD_LINEARSIZE)) + { + // compressed textures + scanLineSize = Math.Max(1, ((width + 3u) / 4u)) * blockSize; + uint32 numScanLines = Math.Max(1, ((height + 3u) / 4u)); + numBytes = scanLineSize * numScanLines; + } + else if (header.Flags.HasFlag(.DDSD_PITCH)) + { + // uncompressed data + scanLineSize = (width * header.PixelFormat.RGBBitCount + 7u) / 8u; + numBytes = scanLineSize * height; + } + + LoadedSurface surface = .(); + // We don't know how large data-array is, so we don't have one yet. + // Only save the offset, we will adjust the pointer later. + surface.Data = Span((uint8*)(void*)offset, numBytes); + surface.Pitch = scanLineSize; + surface.SlicePitch = slicePitch; + + surface.ArrayIndex = arrayIndex; + surface.CubeFace = cubeFace; + surface.MipLevel = mipLevel; + + surfaces.Add(surface); + + ++index; + + width >>= 1; + height >>= 1; + depth >>= 1; + + if (width == 0) + { + width = 1; + } + + if (height == 0) + { + height = 1; + } + + offset += numBytes; + } + } + } + + textureInfo.PixelData = new uint8[offset]; + + Result pixelDataResult = data.TryRead(textureInfo.PixelData); + + if (pixelDataResult case .Err) + { + delete textureInfo.PixelData; + return .Err(.StreamReadFailed); + } + + for (ref LoadedSurface surface in ref surfaces) + { + // Data pointer so far only has the offset inside the array. + // Move the pointer, so that it is inside the array. + surface.Data.Ptr += (uint)(void*)textureInfo.PixelData.Ptr; + } + + return .Ok; + } +} diff --git a/GlitchyEditor/src/Assets/MaterialAssetLoader.bf b/GlitchyEditor/src/Assets/MaterialAssetLoader.bf index c228719..4450acf 100644 --- a/GlitchyEditor/src/Assets/MaterialAssetLoader.bf +++ b/GlitchyEditor/src/Assets/MaterialAssetLoader.bf @@ -347,6 +347,7 @@ class MaterialAssetLoader : IAssetLoader, IAssetSaver //, IReloadingAssetLoader for (let (slotName, textureIdentifier) in materialFile.Textures) { + AssetHandle texture = contentManager.LoadAsset(textureIdentifier); if (texture.IsInvalid) @@ -402,7 +403,7 @@ class MaterialAssetLoader : IAssetLoader, IAssetSaver //, IReloadingAssetLoader for (let (slotName, texture) in material.[Friend]_textures) { - Texture textureAsset = texture.Get(); + Texture textureAsset = texture.Handle.Get(); materialFile.Textures.Add(new String(slotName), new String(textureAsset?.Identifier ?? "")); } diff --git a/GlitchyEditor/src/Assets/TextureAssetLoader.bf b/GlitchyEditor/src/Assets/TextureAssetLoader.bf index cf88063..6d5d353 100644 --- a/GlitchyEditor/src/Assets/TextureAssetLoader.bf +++ b/GlitchyEditor/src/Assets/TextureAssetLoader.bf @@ -8,6 +8,7 @@ using GlitchyEngine.Renderer; using GlitchyEngine.Math; using DirectXTK; using ImGui; +using GlitchyEditor.Assets.Importers; namespace GlitchyEditor.Assets; @@ -233,19 +234,34 @@ class EditorTextureAssetLoader : IAssetLoader//, IReloadingAssetLoader private static Texture LoadTexture(Stream data, EditorTextureAssetLoaderConfig config) { Debug.Profiler.ProfileResourceFunction!(); + + List surfaces = scope .(); + LoadedTextureInfo textureInfo; - Texture texture = null; + // Make sure we clean up the pixel data + defer { delete textureInfo.PixelData; } + switch(GetTextureType(data)) { case .DDS: - texture = LoadDds(data, config); + Result result = LoadDds(data, config, surfaces, out textureInfo); + + if (result case .Err) + return null; + case .PNG: - texture = LoadPng(data, config); + Result result = LoadPng(data, config, surfaces, out textureInfo); + + if (result case .Err) + return null; + case .Unknown: Log.EngineLogger.Error("Unknown texture format."); - texture = null; + return null; } + + Texture texture = CreateTexture(surfaces, textureInfo); if (texture != null) { @@ -256,9 +272,74 @@ class EditorTextureAssetLoader : IAssetLoader//, IReloadingAssetLoader return texture; } - private static Texture2D LoadPng(Stream data, EditorTextureAssetLoaderConfig config) + private static Texture CreateTexture(List surfaces, LoadedTextureInfo textureInfo) + { + switch (textureInfo.Dimension) + { + //case .Texture1D: + case .Texture2D: + if (textureInfo.IsCubeMap) + { + Texture2DDesc staging = .(); + + staging.Width = (.)textureInfo.Width; + staging.Height = (.)textureInfo.Height; + + staging.MipLevels = (.)textureInfo.MipMapCount; + staging.ArraySize = (.)textureInfo.ArraySize; + + staging.Format = textureInfo.PixelFormat; + + // TODO: allow enabling read/write + staging.CpuAccess = .None; + staging.Usage = .Default; + + TextureCube cubeTexture = new TextureCube(staging); + + for (let surface in surfaces) + { + cubeTexture.SetData(surface.Data.Ptr, surface.Pitch / staging.Width, (TextureCubeFace)surface.CubeFace, (.)surface.ArrayIndex, (.)surface.MipLevel); + } + + return cubeTexture; + } + else + { + Texture2DDesc staging = .(); + + staging.Width = (.)textureInfo.Width; + staging.Height = (.)textureInfo.Height; + + staging.MipLevels = (.)textureInfo.MipMapCount; + staging.ArraySize = (.)textureInfo.ArraySize; + + staging.Format = textureInfo.PixelFormat; + + // TODO: allow enabling read/write + staging.CpuAccess = .None; + staging.Usage = .Default; + + Texture2D stagingTexture = new Texture2D(staging); + + for (let surface in surfaces) + { + stagingTexture.[Friend]PlatformSetData(surface.Data.Ptr, surface.Pitch / staging.Width, 0, 0, staging.Width, staging.Height, (.)surface.ArrayIndex, (.)surface.MipLevel, .Write); + } + + return stagingTexture; + } + default: + Runtime.NotImplemented(); + } + + return null; + } + + private static Result LoadPng(Stream data, EditorTextureAssetLoaderConfig config, List surfaces, out LoadedTextureInfo textureInfo) { Debug.Profiler.ProfileResourceFunction!(); + + textureInfo = .(); uint8[] pngData = new:ScopedAlloc! uint8[data.Length]; @@ -267,7 +348,7 @@ class EditorTextureAssetLoader : IAssetLoader//, IReloadingAssetLoader if (result case .Err(let err)) { Log.EngineLogger.Error($"Failed to read data from stream. Texture: Error: {err}"); - return null; + return .Err; } uint8* rawData = null; @@ -285,25 +366,55 @@ class EditorTextureAssetLoader : IAssetLoader//, IReloadingAssetLoader if (errorCode != 0) { Log.EngineLogger.Error($"Failed to decode PNG file {errorCode}."); - return null; + return .Err; } } - Texture2DDesc desc = .(width, height, config.IsSRGB ? .R8G8B8A8_UNorm_SRGB : .R8G8B8A8_UNorm, 1, 1, .Immutable); - Texture2D texture = new Texture2D(desc); - texture.SetData((.)rawData); + uint8[] pixelData = new uint8[4 * width * height]; + Internal.MemCpy(pixelData.Ptr, rawData, pixelData.Count); + + LoadedSurface surface = .(); + surface.Data = Span(pixelData); + surface.Pitch = 4 * width; + surface.SlicePitch = 0; + surface.ArrayIndex = 0; + surface.MipLevel = 0; + + surfaces.Add(surface); + + //Texture2DDesc desc = .(width, height, config.IsSRGB ? .R8G8B8A8_UNorm_SRGB : .R8G8B8A8_UNorm, 1, 1, .Immutable); + //Texture2D texture = new Texture2D(desc); + //texture.SetData((.)rawData); // TODO: Generate mip maps - return texture; + textureInfo.PixelData = pixelData; + textureInfo.Width = width; + textureInfo.Height = height; + textureInfo.Depth = 1; + + textureInfo.ArraySize = 1; + textureInfo.MipMapCount = 1; + + textureInfo.Dimension = .Texture2D; + + textureInfo.IsCubeMap = false; + + textureInfo.PixelFormat = config.IsSRGB ? .R8G8B8A8_UNorm_SRGB : .R8G8B8A8_UNorm; + + return .Ok; + + //return texture; } - private static Texture LoadDds(Stream data, EditorTextureAssetLoaderConfig config) + private static Result LoadDds(Stream data, EditorTextureAssetLoaderConfig config, List surfaces, out LoadedTextureInfo textureInfo) { - // TODO: Move the loading of Dds files here. - Texture2D texture = new [Friend]Texture2D(data); + var result = DdsImporter.LoadDds(data, config.IsSRGB, surfaces, out textureInfo); - return texture; + if (result case .Err) + return .Err; + + return .Ok; } private static void SetSampler(Texture texture, EditorTextureAssetLoaderConfig config) @@ -315,12 +426,38 @@ class EditorTextureAssetLoader : IAssetLoader//, IReloadingAssetLoader } private static Texture2D _placeholder2D; + private static TextureCube _placeholderCube; + private static Texture2D _error2D; + private static TextureCube _errorCube; public Asset GetPlaceholderAsset(Type assetType) { switch (assetType) { + case typeof(TextureCube): + if (_placeholderCube == null) + { + // TODO: immutable + Texture2DDesc desc = .(1, 1, .R8G8B8A8_UNorm, 1, 1, .Default, .None); + + _placeholderCube = new TextureCube(desc); + _placeholderCube.SamplerState = SamplerStateManager.PointWrap; + Color color = Color.Cyan; + _placeholderCube.SetData(&color, .PositiveX); + _placeholderCube.SetData(&color, .NegativeX); + _placeholderCube.SetData(&color, .PositiveY); + _placeholderCube.SetData(&color, .NegativeY); + _placeholderCube.SetData(&color, .PositiveZ); + _placeholderCube.SetData(&color, .NegativeZ); + + Content.ManageAsset(_placeholderCube); + _placeholderCube.ReleaseRef(); + + _placeholderCube.[Friend]Complete = false; + } + + return _placeholderCube; case typeof(Texture2D): fallthrough; default: @@ -347,6 +484,31 @@ class EditorTextureAssetLoader : IAssetLoader//, IReloadingAssetLoader { switch (assetType) { + case typeof(TextureCube): + if (_placeholderCube == null) + { + // TODO: immutable + Texture2DDesc desc = .(2, 2, .R8G8B8A8_UNorm, 1, 1, .Default, .None); + + _errorCube = new TextureCube(desc); + _errorCube.SamplerState = SamplerStateManager.PointWrap; + + Color[4] color = .(Color.HotPink, Color.Black, Color.Black, Color.HotPink); + + _errorCube.SetData(&color, .PositiveX); + _errorCube.SetData(&color, .NegativeX); + _errorCube.SetData(&color, .PositiveY); + _errorCube.SetData(&color, .NegativeY); + _errorCube.SetData(&color, .PositiveZ); + _errorCube.SetData(&color, .NegativeZ); + + Content.ManageAsset(_errorCube); + _errorCube.ReleaseRef(); + + _errorCube.[Friend]Complete = false; + } + + return _placeholderCube; case typeof(Texture2D): fallthrough; default: @@ -356,7 +518,9 @@ class EditorTextureAssetLoader : IAssetLoader//, IReloadingAssetLoader _error2D = new Texture2D(desc); _error2D.SamplerState = SamplerStateManager.PointWrap; + Color[4] color = .(Color.HotPink, Color.Black, Color.Black, Color.HotPink); + _error2D.SetData(&color); Content.ManageAsset(_error2D); diff --git a/GlitchyEngine/src/ImGui/ImGuiLayer.bf b/GlitchyEngine/src/ImGui/ImGuiLayer.bf index 6b491e6..ac1270d 100644 --- a/GlitchyEngine/src/ImGui/ImGuiLayer.bf +++ b/GlitchyEngine/src/ImGui/ImGuiLayer.bf @@ -142,7 +142,11 @@ namespace GlitchyEngine.ImGui RenderCommand.BindRenderTargets(); #if GE_GRAPHICS_DX11 - ImGuiImplDX11.RenderDrawData(ImGui.GetDrawData()); + + using (ContextMonitor.Enter()) + { + ImGuiImplDX11.RenderDrawData(ImGui.GetDrawData()); + } #endif ImGui.CleanupFrame(); diff --git a/GlitchyEngine/src/Platform/DX11/Dx11Platform.bf b/GlitchyEngine/src/Platform/DX11/Dx11Platform.bf index af40fc4..7f28066 100644 --- a/GlitchyEngine/src/Platform/DX11/Dx11Platform.bf +++ b/GlitchyEngine/src/Platform/DX11/Dx11Platform.bf @@ -8,6 +8,7 @@ using DirectX.Common; using DirectX.D3D11; using DirectX.D3D11.SDKLayers; using System.Diagnostics; +using System.Threading; namespace GlitchyEngine.Platform.DX11 { @@ -18,6 +19,8 @@ namespace GlitchyEngine.Platform.DX11 protected internal static ID3D11Device* NativeDevice; protected internal static ID3D11DeviceContext* NativeContext; + protected internal static Monitor ContextMonitor = new Monitor() ~ delete _; + #if DEBUG protected internal static ID3D11Debug* DebugDevice; #endif @@ -42,7 +45,10 @@ namespace GlitchyEngine.Platform.DX11 HResult deviceResult; { Debug.Profiler.ProfileScope!("D3D11.CreateDevice"); - deviceResult = D3D11.CreateDevice(null, .Hardware, 0, deviceFlags, levels, &NativeDevice, &deviceLevel, &NativeContext); + using (ContextMonitor.Enter()) + { + deviceResult = D3D11.CreateDevice(null, .Hardware, 0, deviceFlags, levels, &NativeDevice, &deviceLevel, &NativeContext); + } } Log.EngineLogger.Assert(deviceResult.Succeeded, scope $"Failed to create D3D11 Device. Message({(int32)deviceResult}): {deviceResult}"); diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Buffer.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Buffer.bf index 26f4914..6f4db20 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Buffer.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Buffer.bf @@ -100,14 +100,24 @@ namespace GlitchyEngine.Renderer { case .Default: Box dataBox = .(dstByteOffset, 0, 0, dstByteOffset + byteLength, 1, 1); - NativeContext.UpdateSubresource(nativeBuffer, 0, &dataBox, data, byteLength, byteLength); + using (ContextMonitor.Enter()) + { + NativeContext.UpdateSubresource(nativeBuffer, 0, &dataBox, data, byteLength, byteLength); + } case .Dynamic: Log.EngineLogger.Assert(mapType == .WriteDiscard || mapType == .WriteNoOverwrite, scope $"When writing to dynamic resources the map type must be {nameof(Renderer.MapType.WriteDiscard)} or {nameof(Renderer.MapType.WriteNoOverwrite)}."); // Todo: DoNotWaitFlag MappedSubresource map = ?; - NativeContext.Map(nativeBuffer, 0, (.)mapType, .None, &map); + using (ContextMonitor.Enter()) + { + NativeContext.Map(nativeBuffer, 0, (.)mapType, .None, &map); + } Internal.MemCpy(((uint8*)map.Data) + dstByteOffset, data, byteLength); - NativeContext.Unmap(nativeBuffer, 0); + + using (ContextMonitor.Enter()) + { + NativeContext.Unmap(nativeBuffer, 0); + } case .Immutable: Log.EngineLogger.Error("Can't set the data of an immutable resource."); return .Err; diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11GeometryBinding.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11GeometryBinding.bf index ffd373a..e1f9820 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11GeometryBinding.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11GeometryBinding.bf @@ -80,13 +80,16 @@ namespace GlitchyEngine.Renderer public override void Bind() { Debug.Profiler.ProfileRendererFunction!(); - - NativeContext.InputAssembler.SetVertexBuffers(0, nativeBuffers.Count, &nativeBuffers, &bufferStrides, &bufferOffsets); - GraphicsContext.Get().SetVertexLayout(_vertexLayout); - NativeContext.InputAssembler.SetPrimitiveTopology((.)_primitiveTopology); - - if(_indexBuffer != null) - NativeContext.InputAssembler.SetIndexBuffer(_indexBuffer.nativeBuffer, _indexBuffer.Format == .Index32Bit ? .R32_UInt : .R16_UInt, _indexByteOffset); + + using (ContextMonitor.Enter()) + { + NativeContext.InputAssembler.SetVertexBuffers(0, nativeBuffers.Count, &nativeBuffers, &bufferStrides, &bufferOffsets); + GraphicsContext.Get().SetVertexLayout(_vertexLayout); + NativeContext.InputAssembler.SetPrimitiveTopology((.)_primitiveTopology); + + if(_indexBuffer != null) + NativeContext.InputAssembler.SetIndexBuffer(_indexBuffer.nativeBuffer, _indexBuffer.Format == .Index32Bit ? .R32_UInt : .R16_UInt, _indexByteOffset); + } } public override void Unbind() @@ -96,12 +99,15 @@ namespace GlitchyEngine.Renderer ID3D11Buffer*[nativeBuffers.Count] nullBuffers = .(); uint32[nativeBuffers.Count] zeroStrides = .(); uint32[nativeBuffers.Count] zeroOffsets = .(); - - NativeContext.InputAssembler.SetVertexBuffers(0, nativeBuffers.Count, &nullBuffers, &zeroStrides, &zeroOffsets); - NativeContext.InputAssembler.SetInputLayout(null); - NativeContext.InputAssembler.SetPrimitiveTopology(.Undefined); - NativeContext.InputAssembler.SetIndexBuffer(null, .R16_UNorm, 0); + using (ContextMonitor.Enter()) + { + NativeContext.InputAssembler.SetVertexBuffers(0, nativeBuffers.Count, &nullBuffers, &zeroStrides, &zeroOffsets); + NativeContext.InputAssembler.SetInputLayout(null); + NativeContext.InputAssembler.SetPrimitiveTopology(.Undefined); + + NativeContext.InputAssembler.SetIndexBuffer(null, .R16_UNorm, 0); + } } } } diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11GraphicsContext.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11GraphicsContext.bf index 6985b6c..0775049 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11GraphicsContext.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11GraphicsContext.bf @@ -158,19 +158,28 @@ namespace GlitchyEngine.Renderer public override void BindRenderTargets() { - NativeContext.OutputMerger.SetRenderTargets(MaxRTVCount, &_renderTargets, _depthStencilTarget); + using (ContextMonitor.Enter()) + { + NativeContext.OutputMerger.SetRenderTargets(MaxRTVCount, &_renderTargets, _depthStencilTarget); + } } public override void ClearRenderTarget(RenderTarget2D renderTarget, ColorRGBA color) { - NativeContext.ClearRenderTargetView((renderTarget ?? _swapChain.BackBuffer)._nativeRenderTargetView, color); + using (ContextMonitor.Enter()) + { + NativeContext.ClearRenderTargetView((renderTarget ?? _swapChain.BackBuffer)._nativeRenderTargetView, color); + } } public override void SetVertexBuffer(uint32 slot, Buffer buffer, uint32 stride, uint32 offset = 0) { // make stride and offset mutable so that we can take their pointers. var stride, offset; - NativeContext.InputAssembler.SetVertexBuffers(slot, 1, &buffer.nativeBuffer, &stride, &offset); + using (ContextMonitor.Enter()) + { + NativeContext.InputAssembler.SetVertexBuffers(slot, 1, &buffer.nativeBuffer, &stride, &offset); + } } [Inline] @@ -180,8 +189,11 @@ namespace GlitchyEngine.Renderer { _currentInputLayout = _currentVertexLayout.GetNativeVertexLayout(_currentVertexShader.nativeCode); _currentInputLayout.AddRef(); - - NativeContext.InputAssembler.SetInputLayout(_currentInputLayout); + + using (ContextMonitor.Enter()) + { + NativeContext.InputAssembler.SetInputLayout(_currentInputLayout); + } } } @@ -190,7 +202,7 @@ namespace GlitchyEngine.Renderer Debug.Profiler.ProfileRendererFunction!(); BindInputLayout(); - + if (_hasVs) NativeContext.VertexShader.SetConstantBuffers(0, _vsBuffers.Count, &_vsBuffers); @@ -200,33 +212,48 @@ namespace GlitchyEngine.Renderer public override void Draw(uint32 vertexCount, uint32 startVertexIndex = 0) { - BindState(); - - NativeContext.Draw(vertexCount, startVertexIndex); + using (ContextMonitor.Enter()) + { + BindState(); + + NativeContext.Draw(vertexCount, startVertexIndex); + } } public override void DrawIndexed(uint32 indexCount, uint32 startIndexLocation = 0, int32 vertexOffset = 0) { - BindState(); - - NativeContext.DrawIndexed(indexCount, startIndexLocation, vertexOffset); + using (ContextMonitor.Enter()) + { + BindState(); + + NativeContext.DrawIndexed(indexCount, startIndexLocation, vertexOffset); + } } public override void DrawIndexedInstanced(uint32 indexCountPerInstance, uint32 instanceCount, uint32 startIndexLocation, int32 baseVertexLocation, uint32 startInstanceLocation) { - BindState(); - - NativeContext.DrawIndexedInstanced(indexCountPerInstance, instanceCount, startIndexLocation, baseVertexLocation, startInstanceLocation); + using (ContextMonitor.Enter()) + { + BindState(); + + NativeContext.DrawIndexedInstanced(indexCountPerInstance, instanceCount, startIndexLocation, baseVertexLocation, startInstanceLocation); + } } public override void SetIndexBuffer(Buffer buffer, IndexFormat indexFormat = .Index16Bit, uint32 byteOffset = 0) { - NativeContext.InputAssembler.SetIndexBuffer(buffer.nativeBuffer, indexFormat == .Index32Bit ? .R32_UInt : .R16_UInt, byteOffset); + using (ContextMonitor.Enter()) + { + NativeContext.InputAssembler.SetIndexBuffer(buffer.nativeBuffer, indexFormat == .Index32Bit ? .R32_UInt : .R16_UInt, byteOffset); + } } public override void SetViewports(uint32 viewportsCount, GlitchyEngine.Renderer.Viewport* viewports) { - NativeContext.Rasterizer.SetViewports(viewportsCount, (.)viewports); + using (ContextMonitor.Enter()) + { + NativeContext.Rasterizer.SetViewports(viewportsCount, (.)viewports); + } } public override void SetVertexLayout(VertexLayout vertexLayout) @@ -241,7 +268,10 @@ namespace GlitchyEngine.Renderer public override void SetPrimitiveTopology(GlitchyEngine.Renderer.PrimitiveTopology primitiveTopology) { - NativeContext.InputAssembler.SetPrimitiveTopology((DirectX.Common.PrimitiveTopology)primitiveTopology); + using (ContextMonitor.Enter()) + { + NativeContext.InputAssembler.SetPrimitiveTopology((DirectX.Common.PrimitiveTopology)primitiveTopology); + } } private uint32 _ps_FirstTexture; @@ -343,19 +373,28 @@ namespace GlitchyEngine.Renderer public override void UnbindTextures() { void** voidArray = scope void*[D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT]*; - - NativeContext.PixelShader.SetShaderResources(0, D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT, (.)voidArray); - NativeContext.VertexShader.SetShaderResources(0, D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT, (.)voidArray); + + using (ContextMonitor.Enter()) + { + NativeContext.PixelShader.SetShaderResources(0, D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT, (.)voidArray); + NativeContext.VertexShader.SetShaderResources(0, D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT, (.)voidArray); + } } public override void BindVertexShader(VertexShader vertexShader) { - BindShaderToStage(vertexShader); + using (ContextMonitor.Enter()) + { + BindShaderToStage(vertexShader); + } } public override void BindPixelShader(PixelShader pixelShader) { - BindShaderToStage(pixelShader); + using (ContextMonitor.Enter()) + { + BindShaderToStage(pixelShader); + } } public override void BindConstantBuffer(Buffer buffer, int slot, ShaderStage stage) diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RenderTarget.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RenderTarget.bf index ad44bba..51a253d 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RenderTarget.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RenderTarget.bf @@ -443,12 +443,25 @@ namespace GlitchyEngine.Renderer uint32 srcSubResource = D3D11.CalcSubresource(mipLevel, arraySlice, _mipLevels); Box srcBox = .(x, y, arraySlice, x + width, y + height, arraySlice + 1); - - NativeContext.CopySubresourceRegion(stagingTexture, 0, 0, 0, 0, texture, srcSubResource, &srcBox); + using (ContextMonitor.Enter()) + { + NativeContext.CopySubresourceRegion(stagingTexture, 0, 0, 0, 0, texture, srcSubResource, &srcBox); + } + MappedSubresource subresource = ?; - result = NativeContext.Map(stagingTexture, 0, .Read, .None, &subresource); - defer NativeContext.Unmap(stagingTexture, 0); + using (ContextMonitor.Enter()) + { + result = NativeContext.Map(stagingTexture, 0, .Read, .None, &subresource); + } + + defer + { + using (ContextMonitor.Enter()) + { + NativeContext.Unmap(stagingTexture, 0); + } + } if (result != 0) return .Err; @@ -474,8 +487,11 @@ namespace GlitchyEngine.Renderer // TODO: Mips/Arrays Box srcBox = .((.)srcTopLeft.X, (.)srcTopLeft.Y, 0, (.)(srcTopLeft.X + size.X), (.)(srcTopLeft.Y + size.Y), 1); - - NativeContext.CopySubresourceRegion(dstTexture, 0, (.)dstTopLeft.X, (.)dstTopLeft.Y, 0, srcTexture, 0, &srcBox); + + using (ContextMonitor.Enter()) + { + NativeContext.CopySubresourceRegion(dstTexture, 0, (.)dstTopLeft.X, (.)dstTopLeft.Y, 0, srcTexture, 0, &srcBox); + } } } } diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RendererAPI.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RendererAPI.bf index 76f2c39..283a9ad 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RendererAPI.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RendererAPI.bf @@ -44,8 +44,11 @@ namespace GlitchyEngine.Renderer public override void Clear(RenderTarget2D renderTarget, ColorRGBA color) { Debug.Profiler.ProfileRendererFunction!(); - - NativeContext.ClearRenderTargetView(RtOrBackbuffer!(renderTarget)._nativeRenderTargetView, color); + + using (ContextMonitor.Enter()) + { + NativeContext.ClearRenderTargetView(RtOrBackbuffer!(renderTarget)._nativeRenderTargetView, color); + } } public override void Clear(DepthStencilTarget target, ClearOptions clearOptions, float depth, uint8 stencil) @@ -66,37 +69,43 @@ namespace GlitchyEngine.Renderer { flags |= .Stencil; } - - NativeContext.ClearDepthStencilView(target.nativeView, flags, depth, stencil); + + using (ContextMonitor.Enter()) + { + NativeContext.ClearDepthStencilView(target.nativeView, flags, depth, stencil); + } } private void ClearRtv(DirectX.D3D11.ID3D11RenderTargetView* rtv, ClearColor clearColor) { - switch(clearColor) + using (ContextMonitor.Enter()) { - case .Color(let color): - NativeContext.ClearRenderTargetView(rtv, color); - case .UInt(let value): -#unwarn - NativeContext.OutputMerger.SetRenderTargets(1, &rtv, null); - - using (BlendState lastBlendState = _currentBlendState..AddRef()) + switch(clearColor) { - SetBlendState(_nonblendingState); - - _clearUintFx.Variables["ClearValue"].SetData(value); - _clearUintFx.ApplyChanges(); - _clearUintFx.Bind(); + case .Color(let color): + NativeContext.ClearRenderTargetView(rtv, color); + case .UInt(let value): + #unwarn + NativeContext.OutputMerger.SetRenderTargets(1, &rtv, null); - FullscreenQuad.Draw(); + using (BlendState lastBlendState = _currentBlendState..AddRef()) + { + SetBlendState(_nonblendingState); + + _clearUintFx.Variables["ClearValue"].SetData(value); + _clearUintFx.ApplyChanges(); + _clearUintFx.Bind(); + + FullscreenQuad.Draw(); + + SetBlendState(lastBlendState); + } - SetBlendState(lastBlendState); + // Rebind the old render targets + BindRenderTargets(); + default: + Runtime.NotImplemented(); } - - // Rebind the old render targets - BindRenderTargets(); - default: - Runtime.NotImplemented(); } } @@ -143,7 +152,10 @@ namespace GlitchyEngine.Renderer clearDepth = depth ?? clearDepth; clearStencil = stencil ?? clearStencil; - NativeContext.ClearDepthStencilView(renderTarget._nativeDepthTargetView, flags, clearDepth, clearStencil); + using (ContextMonitor.Enter()) + { + NativeContext.ClearDepthStencilView(renderTarget._nativeDepthTargetView, flags, clearDepth, clearStencil); + } } } } @@ -199,7 +211,10 @@ namespace GlitchyEngine.Renderer Debug.Profiler.ProfileRendererFunction!(); SetReference!(_currentRasterizerState, rasterizerState); - NativeContext.Rasterizer.SetState(_currentRasterizerState.nativeRasterizerState); + using (ContextMonitor.Enter()) + { + NativeContext.Rasterizer.SetState(_currentRasterizerState.nativeRasterizerState); + } } private BlendState _currentBlendState ~ _?.ReleaseRef(); @@ -209,7 +224,11 @@ namespace GlitchyEngine.Renderer Debug.Profiler.ProfileRendererFunction!(); SetReference!(_currentBlendState, blendState); - NativeContext.OutputMerger.SetBlendState(_currentBlendState.nativeBlendState, blendFactor); + + using (ContextMonitor.Enter()) + { + NativeContext.OutputMerger.SetBlendState(_currentBlendState.nativeBlendState, blendFactor); + } } private DepthStencilState _currentDepthStencilState ~ _?.ReleaseRef(); @@ -219,7 +238,11 @@ namespace GlitchyEngine.Renderer Debug.Profiler.ProfileRendererFunction!(); SetReference!(_currentDepthStencilState, depthStencilState); - NativeContext.OutputMerger.SetDepthStencilState(_currentDepthStencilState.nativeDepthStencilState, stencilReference); + + using (ContextMonitor.Enter()) + { + NativeContext.OutputMerger.SetDepthStencilState(_currentDepthStencilState.nativeDepthStencilState, stencilReference); + } } public override void DrawIndexed(GeometryBinding geometry) diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11SamplerState.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11SamplerState.bf index f29bd17..09a215d 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11SamplerState.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11SamplerState.bf @@ -122,8 +122,11 @@ namespace GlitchyEngine.Renderer public override void Bind(uint32 slot) { - NativeContext.VertexShader.SetSamplers(slot, 1, &nativeSamplerState); - NativeContext.PixelShader.SetSamplers(slot, 1, &nativeSamplerState); + using (ContextMonitor.Enter()) + { + NativeContext.VertexShader.SetSamplers(slot, 1, &nativeSamplerState); + NativeContext.PixelShader.SetSamplers(slot, 1, &nativeSamplerState); + } } } } diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf index 44d1f5e..d123b9a 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf @@ -205,7 +205,30 @@ namespace GlitchyEngine.Renderer buffer.ReleaseRef(); } case .Texture: - _textures.Add(scope String(bindDesc.Name), bindDesc.BindPoint, TextureViewBinding(null, null)); + + TextureDimension texDim; + + switch (bindDesc.Dimension) + { + case .Texture1D: + texDim = .Texture1D; + case .Texture1DArray: + texDim = .Texture1DArray; + case .Texture2D: + texDim = .Texture2D; + case .Texture2DArray: + texDim = .Texture2DArray; + case .Texture3D: + texDim = .Texture3D; + case .TextureCube: + texDim = .TextureCube; + case .TextureCubeArray: + texDim = .TextureCubeArray; + default: + texDim = .Unknown; + } + + _textures.Add(scope String(bindDesc.Name), bindDesc.BindPoint, TextureViewBinding(null, null), texDim); case .Sampler: // TODO: do we have to do something for samplers? default: diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Texture.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Texture.bf index cfd3b61..8b9d555 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Texture.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Texture.bf @@ -19,43 +19,6 @@ namespace GlitchyEngine.Renderer extension Texture { protected internal ID3D11ShaderResourceView* _nativeResourceView ~ _?.Release(); - - /** \brief Loads the texture from the specified path. - * @param path The path of the texture to load. - * @param texture The reference to the pointer that will hold the texture. - * @returns true if the texture was loaded successfully; false otherwise. - */ - protected bool LoadDdsResourcePlatform(Stream stream, ref T* texture) where T : ID3D11Resource - { - Debug.Profiler.ProfileResourceFunction!(); - - uint8[] ddsData = new:ScopedAlloc! uint8[stream.Length]; - - var result = stream.TryRead(ddsData); - - if (result case .Err(let err)) - { - Log.EngineLogger.Error($"Failed to read texture data from stream. Error: {err}"); - } - - ((ID3D11Resource*)texture)?.Release(); - _nativeResourceView?.Release(); - - HResult loadResult = DDSTextureLoader.CreateDDSTextureFromMemory(NativeDevice, - ddsData.Ptr, (uint)ddsData.Count, (.)&texture, &_nativeResourceView); - - if(loadResult.Failed) - { - Log.EngineLogger.Error($"Failed to load texture. Error({(int)loadResult}): {loadResult}"); - - ReleaseAndNullify!(texture); - ReleaseAndNullify!(_nativeResourceView); - - return false; - } - - return true; - } } extension Texture2DDesc @@ -94,18 +57,6 @@ namespace GlitchyEngine.Renderer public override uint32 ArraySize => nativeDesc.ArraySize; public override uint32 MipLevels => nativeDesc.MipLevels; - protected override void LoadDdsPlatform(Stream stream) - { - Debug.Profiler.ProfileResourceFunction!(); - - LoadDdsResourcePlatform(stream, ref nativeTexture); - - let resType = nativeTexture.GetResourceType(); - Log.EngineLogger.Assert(resType == .Texture2D, scope $"The texture is not a 2D texture (it is {resType})."); - - nativeTexture.GetDescription(out nativeDesc); - } - protected override void CreateTexturePlatform(Texture2DDesc desc, bool isRenderTarget, void* data, uint32 linePitch) { Debug.Profiler.ProfileResourceFunction!(); @@ -177,7 +128,12 @@ namespace GlitchyEngine.Renderer case .Default: Box dataBox = .(destX, destY, 0, destX + destWidth, destY + destHeight, 1); var rowPitch = elementSize * destWidth; - NativeContext.UpdateSubresource(nativeTexture, subresourceIndex, &dataBox, data, rowPitch, rowPitch * destHeight); + + using (ContextMonitor.Enter()) + { + NativeContext.UpdateSubresource(nativeTexture, subresourceIndex, &dataBox, data, rowPitch, rowPitch * destHeight); + } + case .Dynamic: Runtime.NotImplemented(); /* @@ -220,6 +176,186 @@ namespace GlitchyEngine.Renderer sourceBox.Back = 1; } + // Make sure the destination was initialized + if(destination.nativeTexture == null) + destination.InternalCreateTexture(null, 0, 0); + + using (ContextMonitor.Enter()) + { + NativeContext.CopySubresourceRegion(destination.nativeTexture, + D3D11.CalcSubresource(destMipSlice, destArraySlice, destination.MipLevels), destX, destY, 0, + source.nativeTexture, D3D11.CalcSubresource(srcMipSlice, srcArraySlice, source.MipLevels), (.)&sourceBox); + } + } + + public override void CopyTo(Texture2D destination) + { + Debug.Profiler.ProfileResourceFunction!(); + + if(nativeTexture == null) + return; + + Log.EngineLogger.AssertDebug(nativeDesc.Format == destination.nativeDesc.Format, + "Source and destination resources must have the same texel-format."); + + // Make sure the destination was initialized + if(destination.nativeTexture == null) + destination.InternalCreateTexture(null, 0, 0); + + uint32 arraySlices = Math.Min(ArraySize, destination.ArraySize); + uint32 mipSlices = Math.Min(MipLevels, destination.MipLevels); + + for(uint32 arraySlice < arraySlices) + for(uint32 mipSlice < mipSlices) + { + Box sourceBox = .(0, 0, 0, Width, Height, 1); + + using (ContextMonitor.Enter()) + { + NativeContext.CopySubresourceRegion(destination.nativeTexture, + D3D11.CalcSubresource(mipSlice, arraySlice, destination.MipLevels), 0, 0, 0, + nativeTexture, D3D11.CalcSubresource(mipSlice, arraySlice, MipLevels), (.)&sourceBox); + } + } + } + + protected override TextureViewBinding PlatformGetViewBinding() + { + return .(_nativeResourceView, _samplerState?.nativeSamplerState); + } + } + + extension TextureCube + { + protected internal ID3D11Texture2D* nativeTexture ~ _?.Release(); + protected internal NativeTex2DDesc nativeDesc; + + public override uint32 Width => nativeDesc.Width; + public override uint32 Height => nativeDesc.Height; + public override uint32 ArraySize => nativeDesc.ArraySize / 6; + public override uint32 MipLevels => nativeDesc.MipLevels; + + protected override void CreateTexturePlatform(Texture2DDesc desc, bool isRenderTarget, void* data, uint32 linePitch) + { + Debug.Profiler.ProfileResourceFunction!(); + + PrepareTexturePlatform(desc, isRenderTarget); + InternalCreateTexture(data, linePitch, 0); + } + + protected override void PrepareTexturePlatform(Texture2DDesc desc, bool isRenderTarget) + { + Debug.Profiler.ProfileResourceFunction!(); + + nativeTexture?.Release(); + nativeTexture = null; + _nativeResourceView?.Release(); + _nativeResourceView = null; + + nativeDesc = (NativeTex2DDesc)desc; + // Make it a texture cube + nativeDesc.MiscFlags |= .TextureCube; + nativeDesc.ArraySize *= 6; + + if(isRenderTarget) + nativeDesc.BindFlags |= .RenderTarget; + } + + private void InternalCreateTexture(void* data, uint32 linePitch, uint32 slicePitch) + { + Debug.Profiler.ProfileResourceFunction!(); + + SubresourceData resData = .(data, linePitch, slicePitch); + + // If data is null, set subresourceData null + SubresourceData* resDataPtr = null;//data == null ? null : &resData; + + var result = NativeDevice.CreateTexture2D(ref nativeDesc, resDataPtr, &nativeTexture); + Log.EngineLogger.Assert(result.Succeeded, scope $"Failed to create texture 2D. Error ({result.Underlying}): {result}"); + + result = NativeDevice.CreateShaderResourceView(nativeTexture, null, &_nativeResourceView); + Log.EngineLogger.Assert(result.Succeeded, scope $"Failed to create texture view. Error ({result.Underlying}): {result}"); + } + + // TODO: Update Texture Arrays! + protected override Result PlatformSetData(void* data, uint32 elementSize, uint32 destX, + uint32 destY, uint32 destWidth, uint32 destHeight, uint32 arraySlice, uint32 mipLevel, GlitchyEngine.Renderer.MapType mapType) + { + Debug.Profiler.ProfileResourceFunction!(); + + if(nativeTexture == null) + { + if(destX == 0 && destY == 0 && destWidth == nativeDesc.Width && destHeight == nativeDesc.Height) + { + // We can pass the data while creating the buffer, so we can return here. + var rowPitch = elementSize * destWidth; + InternalCreateTexture(data, rowPitch, rowPitch * destHeight); + } + else + { + // If we don't set the entire texture we need to create the texture with unknown content and set it manually + Log.EngineLogger.Assert(nativeDesc.Usage != .Immutable, "The entire immutable texture has to be initialized."); + InternalCreateTexture(null, 0, 0); + } + } + + //Log.EngineLogger.AssertDebug(); + // TODO: Debug.Assert(dstByteOffset + byteLength <= _description.Size, "The destination offset and byte length are too long for the target buffer."); + + uint32 subresourceIndex = D3D11.CalcSubresource(mipLevel, arraySlice, nativeDesc.MipLevels); + + switch(nativeDesc.Usage) + { + case .Default: + Box dataBox = .(destX, destY, 0, destX + destWidth, destY + destHeight, 1); + var rowPitch = elementSize * destWidth; + + using (ContextMonitor.Enter()) + { + NativeContext.UpdateSubresource(nativeTexture, subresourceIndex, &dataBox, data, rowPitch, rowPitch * destHeight); + } + case .Dynamic: + Runtime.NotImplemented(); + /* + Log.EngineLogger.Assert(mapType.CanWrite, "The map type has to have write access."); + // Todo: DoNotWaitFlag + MappedSubresource map = ?; + _context.nativeContext.Map(nativeBuffer, 0, (.)mapType, .None, &map); + Internal.MemCpy(((uint8*)map.Data) + dstByteOffset, data, byteLength); + _context.nativeContext.Unmap(nativeBuffer, 0); + */ + case .Immutable: + Log.EngineLogger.Error("Can't set the data of an immutable resource."); + return .Err; + default: + Log.EngineLogger.Error($"Unknown resource usage: {nativeDesc.Usage}"); + return .Err; + } + + return .Ok; + } + + /*public static override void CopySubresourceRegion(Texture2D source, Texture2D destination, + ResourceBox sourceBox = default, uint32 destX = 0, uint32 destY = 0, + uint32 srcArraySlice = 0, uint32 srcMipSlice = 0, uint32 destArraySlice = 0, uint32 destMipSlice = 0) + { + Debug.Profiler.ProfileResourceFunction!(); + + Log.EngineLogger.AssertDebug(source != destination || srcArraySlice != destArraySlice + || srcMipSlice != destMipSlice, "Cannot copy from and to the same sub resource."); + + Log.EngineLogger.AssertDebug(source.nativeDesc.Format == destination.nativeDesc.Format, + "Source and destination resources must have the same texel-format."); + + var sourceBox; + + if(sourceBox.Right == 0) + { + sourceBox.Right = source.Width; + sourceBox.Bottom = source.Height; + sourceBox.Back = 1; + } + // Make sure the destination was initialized if(destination.nativeTexture == null) destination.InternalCreateTexture(null, 0, 0); @@ -255,44 +391,13 @@ namespace GlitchyEngine.Renderer D3D11.CalcSubresource(mipSlice, arraySlice, destination.MipLevels), 0, 0, 0, nativeTexture, D3D11.CalcSubresource(mipSlice, arraySlice, MipLevels), (.)&sourceBox); } - } + }*/ protected override TextureViewBinding PlatformGetViewBinding() { return .(_nativeResourceView, _samplerState?.nativeSamplerState); } } - - extension TextureCube - { - protected internal ID3D11Texture2D* nativeTexture ~ _?.Release(); - protected internal NativeTex2DDesc nativeDesc; - - public override uint32 Width => nativeDesc.Width; - public override uint32 Height => nativeDesc.Height; - public override uint32 ArraySize => nativeDesc.ArraySize / 6; - public override uint32 MipLevels => nativeDesc.MipLevels; - - protected override void LoadTexturePlatform(Stream stream) - { - Debug.Profiler.ProfileResourceFunction!(); - - LoadDdsResourcePlatform(stream, ref nativeTexture); - - let resType = nativeTexture.GetResourceType(); - Log.EngineLogger.Assert(resType == .Texture2D, scope $"The texture \"{_path}\" is not a texture cube (it is {resType})."); - - nativeTexture.GetDescription(out nativeDesc); - - Log.EngineLogger.Assert(nativeDesc.MiscFlags.HasFlag(.TextureCube), scope $"The texture \"{_path}\" is not a texture cube."); - // TODO: load fallback texture - } - - protected override TextureViewBinding PlatformGetViewBinding() - { - return .(_nativeResourceView, _samplerState.nativeSamplerState); - } - } } #endif diff --git a/GlitchyEngine/src/Renderer/Effect.bf b/GlitchyEngine/src/Renderer/Effect.bf index 8f92c1d..ff2fd1c 100644 --- a/GlitchyEngine/src/Renderer/Effect.bf +++ b/GlitchyEngine/src/Renderer/Effect.bf @@ -104,6 +104,18 @@ public class EffectLibrary public bool Exists(String effectName) => _effects.ContainsKey(effectName); }*/ +public enum TextureDimension +{ + Unknown, + Texture1D, + Texture1DArray, + Texture2D, + Texture2DArray, + Texture3D, + TextureCube, + TextureCubeArray +} + public class Effect : Asset { internal VertexShader _vs ~ _?.ReleaseRef(); @@ -137,14 +149,16 @@ public class Effect : Asset public struct TextureEntry { public TextureViewBinding BoundTexture; + public TextureDimension TextureDimension; public ShaderTextureCollection.ResourceEntry* VsSlot; public ShaderTextureCollection.ResourceEntry* PsSlot; - public this(TextureViewBinding boundTexture, ShaderTextureCollection.ResourceEntry* vsSlot, ShaderTextureCollection.ResourceEntry* psSlot) + public this(TextureViewBinding boundTexture, TextureDimension textureDimension, ShaderTextureCollection.ResourceEntry* vsSlot, ShaderTextureCollection.ResourceEntry* psSlot) { BoundTexture = boundTexture; VsSlot = vsSlot; PsSlot = psSlot; + TextureDimension = textureDimension; } } @@ -741,7 +755,7 @@ public class Effect : Asset // Get existing entry or create new if(!_textures.TryGetValue(shaderEntry.Name, out entry)) { - entry = .(shaderEntry.BoundTexture, null, null); + entry = .(shaderEntry.BoundTexture, shaderEntry.Dimension, null, null); entry.BoundTexture.AddRef(); } diff --git a/GlitchyEngine/src/Renderer/Material.bf b/GlitchyEngine/src/Renderer/Material.bf index fa4ce87..830478d 100644 --- a/GlitchyEngine/src/Renderer/Material.bf +++ b/GlitchyEngine/src/Renderer/Material.bf @@ -14,7 +14,7 @@ public class Material : Asset private uint8[] _rawVariables ~ delete _; - private Dictionary> _textures = new .() ~ delete _; + private Dictionary Handle, TextureDimension Dimension)> _textures = new .() ~ delete _; private Dictionary _variables = new .() ~ delete _; @@ -34,7 +34,7 @@ public class Material : Asset // At best whole paths. Shouldn't be that hard to do... /*var texture = entry.BoundTexture;*/ - _textures.Add(name, .Invalid); + _textures.Add(name, (AssetHandle.Invalid, entry.TextureDimension)); } InitRawData(); @@ -66,7 +66,19 @@ public class Material : Asset for(let (name, texture) in _textures) { - _effect.SetTexture(name, texture); + switch (texture.Dimension) + { + //case .Texture1D, .Texture1DArray: + case .Texture2D, .Texture2DArray: + AssetHandle handle2D = .(texture.Handle); + _effect.SetTexture(name, handle2D); + case .TextureCube, .TextureCubeArray: + AssetHandle cubeHandle = .(texture.Handle); + _effect.SetTexture(name, cubeHandle); + //case .Texture3D: + default: + Log.EngineLogger.Error("Tryied to bind undefined texture dimension!"); + } } for(let (name, variable) in _variables) @@ -86,13 +98,27 @@ public class Material : Asset { if(_textures.TryGetValue(name, var entry)) { + /*switch (texture.Get().GetType()) + { + //case .Texture1D: + // _textures[name].Dimension = .Texture1D; + case typeof(Texture2D): + _textures[name].Dimension = .Texture2D; + case typeof(TextureCube): + _textures[name].Dimension = .TextureCube; + //case .Texture3D: + // _textures[name].Dimension = .Texture3D; + default: + _textures[name].Dimension = .Unknown; + }*/ //entry?.ReleaseRef(); - _textures[name] = texture; + _textures[name].Handle = texture; //texture?.AddRef(); } else { - Log.EngineLogger.Assert(false); + Log.EngineLogger.Error($"Material doesn't have the texture slot \"{name}\""); + //Log.EngineLogger.Assert(false); } } diff --git a/GlitchyEngine/src/Renderer/RenderTarget.bf b/GlitchyEngine/src/Renderer/RenderTarget.bf index 12bdf0a..1a31269 100644 --- a/GlitchyEngine/src/Renderer/RenderTarget.bf +++ b/GlitchyEngine/src/Renderer/RenderTarget.bf @@ -79,15 +79,6 @@ namespace GlitchyEngine.Renderer protected extern TextureViewBinding PlatformGetViewBinding(); - protected internal override void SneakySwappyTexture(Texture otherTexture) - { - Log.EngineLogger.AssertDebug(otherTexture is RenderTarget2D, "Swapping texture must be a RenderTarget2D!"); - - SamplerState = otherTexture.SamplerState; - - PlatformSneakySwappyTexture(otherTexture as RenderTarget2D); - } - protected extern void PlatformSneakySwappyTexture(RenderTarget2D otherTexture); } diff --git a/GlitchyEngine/src/Renderer/ShaderTextureCollection.bf b/GlitchyEngine/src/Renderer/ShaderTextureCollection.bf index 08a5ab7..ccdfc46 100644 --- a/GlitchyEngine/src/Renderer/ShaderTextureCollection.bf +++ b/GlitchyEngine/src/Renderer/ShaderTextureCollection.bf @@ -3,9 +3,9 @@ using System.Collections; namespace GlitchyEngine.Renderer { - public class ShaderTextureCollection : IEnumerable<(String Name, uint32 Index, TextureViewBinding BoundTexture)> + public class ShaderTextureCollection : IEnumerable<(String Name, uint32 Index, TextureViewBinding BoundTexture, TextureDimension Dimension)> { - public typealias ResourceEntry = (String Name, uint32 Index, TextureViewBinding BoundTexture); + public typealias ResourceEntry = (String Name, uint32 Index, TextureViewBinding BoundTexture, TextureDimension Dimension); List _textures ~ DeleteTextureEntries!(_); @@ -39,14 +39,14 @@ namespace GlitchyEngine.Renderer // TODO: finish implementation (like BufferCollection) - public void Add(String name, uint32 index, TextureViewBinding texture) + public void Add(String name, uint32 index, TextureViewBinding texture, TextureDimension dimension) { - Add((name, index, texture)); + Add((name, index, texture, dimension)); } public void Add(ResourceEntry entry) { - ResourceEntry copy = (new String(entry.Name), entry.Index, entry.BoundTexture); + ResourceEntry copy = (new String(entry.Name), entry.Index, entry.BoundTexture, entry.Dimension); entry.BoundTexture.AddRef(); _textures.Add(copy); diff --git a/GlitchyEngine/src/Renderer/Texture.bf b/GlitchyEngine/src/Renderer/Texture.bf index 490f735..14b8eaf 100644 --- a/GlitchyEngine/src/Renderer/Texture.bf +++ b/GlitchyEngine/src/Renderer/Texture.bf @@ -30,11 +30,6 @@ namespace GlitchyEngine.Renderer public abstract uint32 MipLevels {get;} public abstract TextureViewBinding GetViewBinding(); - - /// Very dirtily swaps the internals with the given texture. - /// TODO: Please do this differently!!!!!!!!!!!!!!!!!!!!!! - /// This is for texture hot reloading POC, I know... it's bad... - protected internal abstract void SneakySwappyTexture(Texture otherTexture); } public struct Texture2DDesc @@ -69,17 +64,6 @@ namespace GlitchyEngine.Renderer //public override extern uint32 ArraySize {get;} //public override extern uint32 MipLevels {get;} - // TODO: remove - private this(Stream data) - { - LoadDds(data); - } - - protected void LoadDds(Stream stream) - { - LoadDdsPlatform(stream); - } - public this(Texture2DDesc desc) { PrepareTexturePlatform(desc, false); @@ -100,8 +84,6 @@ namespace GlitchyEngine.Renderer uint32 mipLevels = 1, uint32 arraySize = 1, Usage usage = .Default, CPUAccessFlags cpuAccess = .None */ - protected extern void LoadDdsPlatform(Stream stream); - protected extern void CreateTexturePlatform(Texture2DDesc desc, bool isRenderTarget, void* data, uint32 linePitch); /** @@ -130,17 +112,16 @@ namespace GlitchyEngine.Renderer } protected extern TextureViewBinding PlatformGetViewBinding(); + } - protected internal override void SneakySwappyTexture(Texture otherTexture) - { - Log.EngineLogger.AssertDebug(otherTexture is Texture2D, "Swapping texture must be a Texture2D!"); - - SamplerState = otherTexture.SamplerState; - - PlatformSneakySwappyTexture(otherTexture as Texture2D); - } - - protected extern void PlatformSneakySwappyTexture(Texture2D otherTexture); + public enum TextureCubeFace + { + PositiveX = 0, + NegativeX = 1, + PositiveY = 2, + NegativeY = 3, + PositiveZ = 4, + NegativeZ = 5, } public class TextureCube : Texture @@ -152,24 +133,48 @@ namespace GlitchyEngine.Renderer public override uint32 Depth => 1; // public override extern uint32 ArraySize {get;} // public override extern uint32 MipLevels {get;} - - public this(String path) + + public this(Texture2DDesc desc) { - this._path = new String(path); - LoadTexture(); + PrepareTexturePlatform(desc, false); } - private void LoadTexture() + public void SetData(void* data, int elementSize, TextureCubeFace cubeFace, uint32 arraySlice = 0, uint32 mipSlice = 0) { - Debug.Profiler.ProfileResourceFunction!(); - - Stream data = Application.Get().ContentManager.GetStream(_path); - defer delete data; - - LoadTexturePlatform(data); + PlatformSetData(data, (.)elementSize, 0, 0, Width, Height, arraySlice * 6 + (uint32)cubeFace, mipSlice, .Write); } - protected extern void LoadTexturePlatform(Stream stream); + public void SetData(T* data, TextureCubeFace cubeFace, uint32 arraySlice = 0, uint32 mipSlice = 0) + { + PlatformSetData(data, (.)sizeof(T), 0, 0, Width, Height, arraySlice * 6 + (uint32)cubeFace, mipSlice, .Write); + } + + public void SetData(T* data, uint32 x, uint32 y, uint32 width, uint32 height, TextureCubeFace cubeFace, uint32 arraySlice = 0, uint32 mipSlice = 0) + { + PlatformSetData(data, (.)sizeof(T), x, y, width, height, arraySlice * 6 + (uint32)cubeFace, mipSlice, .Write); + } + + protected extern void CreateTexturePlatform(Texture2DDesc desc, bool isRenderTarget, void* data, uint32 linePitch); + + /** + * Prepares the texture so that a call to SetData can successfully upload the data to the gpu. + */ + protected extern void PrepareTexturePlatform(Texture2DDesc desc, bool isRenderTarget); + + protected extern Result PlatformSetData(void* data, uint32 elementSize, uint32 destX, + uint32 destY, uint32 destWidth, uint32 destHeight, uint32 arraySlice, uint32 mipLevel, GlitchyEngine.Renderer.MapType mapType); + + /** + * Copies the texel-data of this texture to the given destination texture. + */ + public static extern void CopySubresourceRegion(Texture2D source, Texture2D destination, + ResourceBox sourceBox = default, uint32 destX = 0, uint32 destY = 0, + uint32 srcArraySlice = 0, uint32 srcMipSlice = 0, uint32 destArraySlice = 0, uint32 destMipSlice = 0); + + /** + * Copies the data to the given destination. + */ + //public extern void CopyTo(TextureCube destination); public override TextureViewBinding GetViewBinding() { @@ -177,10 +182,5 @@ namespace GlitchyEngine.Renderer } protected extern TextureViewBinding PlatformGetViewBinding(); - - protected internal override void SneakySwappyTexture(Texture otherTexture) - { - Runtime.NotImplemented(); - } } }