2D Renderer V1.0B

This commit is contained in:
2026-03-10 21:03:03 -04:00
commit 0c94b168d2
43 changed files with 1759 additions and 0 deletions

13
.idea/.idea.2DRenderer/.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,13 @@
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/modules.xml
/projectSettingsUpdater.xml
/contentModel.xml
/.idea.2DRenderer.iml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View File

@@ -0,0 +1,7 @@
<component name="ProjectDictionaryState">
<dictionary name="project">
<words>
<w>awperative</w>
</words>
</dictionary>
</component>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

14
.idea/.idea.2DRenderer/.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="ASK" />
<option name="description" value="" />
<option name="applicationTheme" value="default" />
<option name="iconsTheme" value="default" />
<option name="button1Title" value="" />
<option name="button1Url" value="" />
<option name="button2Title" value="" />
<option name="button2Url" value="" />
<option name="customApplicationId" value="" />
</component>
</project>

6
.idea/.idea.2DRenderer/.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

16
2DRenderer.sln Normal file
View File

@@ -0,0 +1,16 @@
Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "2DRenderer", "2DRenderer\2DRenderer.csproj", "{FC946AFB-4F3F-459B-8EBB-9AADEE689FEA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FC946AFB-4F3F-459B-8EBB-9AADEE689FEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FC946AFB-4F3F-459B-8EBB-9AADEE689FEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FC946AFB-4F3F-459B-8EBB-9AADEE689FEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FC946AFB-4F3F-459B-8EBB-9AADEE689FEA}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,2 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=_002Fhome_002Favery_002FProjects_002FAwperative_002FBuild_002FKernel_002Fnet8_002E0_002FAwperativeKernel_002Edll/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

View File

@@ -0,0 +1,26 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<RootNamespace>_2DRenderer</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="OpenTK" Version="5.0.0-pre.15" />
<PackageReference Include="StbImageSharp" Version="2.30.15" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Fragment.glsl" />
<EmbeddedResource Include="Vertex.glsl" />
</ItemGroup>
<ItemGroup>
<Reference Include="AwperativeKernel">
<HintPath>..\..\..\Build\Kernel\net8.0\AwperativeKernel.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

209
2DRenderer/Camera2D.cs Normal file
View File

@@ -0,0 +1,209 @@
using System.Reflection;
using AwperativeKernel;
using OpenTK.Graphics.OpenGL;
using OpenTK.Mathematics;
using OpenTK.Windowing.Common;
using StbImageSharp;
namespace Awperative.Renderer2D;
public class Camera2D : Component, IDisposable
{
/// <summary> Handle of the vertex array object</summary>
[MarkerAttributes.GLHandle]
internal int vertexArray;
/// <summary> Handle of the buffer where all the instances are stored</summary>
[MarkerAttributes.GLHandle]
internal int instanceBuffer;
/// <summary> All sprites the camera is currently rendering</summary>
public List<Sprite2D> Sprites = [];
/// <summary> Information on how sprite textures are organized, each index has a number corresponding to the amount of sprites with each texture</summary>
public List<int> TextureGroups = [];
/// <summary> Background color of the camera </summary>
public static Color4<Rgba> Background {
get => _background;
set {
_background = value;
GL.ClearColor(_background);
}
} private static Color4<Rgba> _background;
/// <summary> Initializes the camera! </summary>
public void Create() {
instanceBuffer = GL.GenBuffer();
GL.BindBuffer(BufferTarget.ArrayBuffer, instanceBuffer);
GL.BufferData(BufferTarget.ArrayBuffer, 0, 0, BufferUsage.DynamicDraw);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
#region Vertex Array Object
vertexArray = GL.GenVertexArray();
GL.BindVertexArray(vertexArray);
GL.BindBuffer(BufferTarget.ArrayBuffer, Renderer2DProfile.VertexBufferHandle);
GL.VertexAttribPointer(0, 2, VertexAttribPointerType.Float, false, 2 * sizeof(float), 0);
GL.EnableVertexAttribArray(0);
GL.BindBuffer(BufferTarget.ArrayBuffer, instanceBuffer);
GL.VertexAttribPointer(1, 2, VertexAttribPointerType.Float, false, 9 * sizeof(float), 0);
GL.EnableVertexAttribArray(1);
GL.VertexAttribDivisor(1, 1);
GL.VertexAttribPointer(2, 2, VertexAttribPointerType.Float, false, 9 * sizeof(float), 2 * sizeof(float));
GL.EnableVertexAttribArray(2);
GL.VertexAttribDivisor(2, 1);
GL.VertexAttribPointer(3, 1, VertexAttribPointerType.Float, false, 9 * sizeof(float), 4 * sizeof(float));
GL.EnableVertexAttribArray(3);
GL.VertexAttribDivisor(3, 1);
GL.VertexAttribPointer(4, 4, VertexAttribPointerType.Float, false, 9 * sizeof(float), 5 * sizeof(float));
GL.EnableVertexAttribArray(4);
GL.VertexAttribDivisor(4, 1);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
GL.BindVertexArray(0);
#endregion
OnResize(new ResizeEventArgs(AwperativeBase.Size.X, AwperativeBase.Size.Y));
AwperativeBase.Resize += OnResize;
MapTextures();
}
/// <summary> Clears OpenGL of leftover buffers </summary>
public void Dispose() {
GL.DeleteBuffer(instanceBuffer);
GL.DeleteVertexArray(vertexArray);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
GL.BindVertexArray(0);
GC.SuppressFinalize(this);
}
/// <summary> Fixes viewport info and updates uniforms </summary>
private void OnResize(ResizeEventArgs e) {
GL.Viewport(0, 0, e.Width, e.Height);
int uniform = GL.GetUniformLocation(Renderer2DProfile.ProgramHandle, "viewport");
GL.UseProgram(Renderer2DProfile.ProgramHandle);
GL.Uniform2f(uniform, e.Width, e.Height);
GL.UseProgram(0);
}
/// <summary> Registers a sprite into the camera</summary>
internal void Add(Sprite2D sprite) {
sprite.Index = Sprites.Count;
Sprites.Add(sprite);
MapTextures();
}
/// <summary> Removes a sprite from the camera</summary>
internal void Remove(Sprite2D __sprite) {
Sprites.Remove(__sprite);
MapTextures();
}
/// <summary>Maps textures and updates the OpenGL buffer! Also sorts all sprites belonging to the camera by texture order; to minimize swapping </summary>
public void MapTextures() {
List<float> InstanceData = [];
Sprites.Sort(Renderer2DProfile.TextureSorter);
TextureGroups.Clear();
Texture2D currentTexture = null;
int currentCount = 0;
for(int i = 0; i < Sprites.Count; i++) {
if (Sprites[i].source != null) {
//todo: tex crop
if (currentTexture == null) {
currentTexture = Sprites[i].source;
} else if (Sprites[i].source != currentTexture) {
if (currentTexture.Handle != -1) {
TextureGroups.Add(currentCount);
}
currentTexture = Sprites[i].source;
currentCount = 0;
}
InstanceData.AddRange([Sprites[i].X, Sprites[i].Y, Sprites[i].Width, Sprites[i].Height, Sprites[i].Rotation,
Sprites[i].cropX, Sprites[i].cropY, Sprites[i].cropWidth, Sprites[i].cropHeight
]);
} else {
InstanceData.AddRange([..new int[9]]);
}
Sprites[i].Index = i;
currentCount++;
}
TextureGroups.Add(currentCount);
GL.BindBuffer(BufferTarget.ArrayBuffer, instanceBuffer);
GL.BufferData(BufferTarget.ArrayBuffer, InstanceData.Count * sizeof(float), InstanceData.ToArray(), BufferUsage.DynamicDraw);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
}
/// <summary> Draws all the sprites belonging to the camera</summary>
public void Draw() {
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
GL.ActiveTexture(TextureUnit.Texture0);
int instances = 0;
foreach (int group in TextureGroups) {
Texture2D tex = Sprites[instances].source;
if(tex == null) continue;
GL.BindTexture(TextureTarget.Texture2d, tex.Handle);
GL.UseProgram(Renderer2DProfile.ProgramHandle);
GL.BindVertexArray(vertexArray);
GL.BindBuffer(BufferTarget.ElementArrayBuffer, Renderer2DProfile.IndexBufferHandle);
GL.DrawElementsInstancedBaseInstance(PrimitiveType.Triangles, 6, DrawElementsType.UnsignedInt, 0, group, (uint) instances);
instances += group;
GL.BindVertexArray(0);
GL.UseProgram(0);
}
AwperativeBase.SwapBuffers();
}
}

22
2DRenderer/Fragment.glsl Normal file
View File

@@ -0,0 +1,22 @@
#version 330 core
out vec4 fragColor;
in vec2 texuv;
in vec4 crop;
uniform sampler2D ftexture;
void main() {
float fixX = texuv.x / 2 + .5;
float fixY = texuv.y / 2 + .5f;
float cropX = fixX * crop.z;
float cropY = fixY * crop.w;
float offX = cropX + crop.x;
float offY = cropY + crop.y;
fragColor = texture(ftexture, vec2(offX, offY));
}

View File

@@ -0,0 +1,9 @@
namespace Awperative.Renderer2D;
public static class MarkerAttributes
{
/// <summary> Shows that the given object is an OpenGL handle </summary>
[AttributeUsage(AttributeTargets.All)]
public class GLHandle : Attribute {}
}

View File

@@ -0,0 +1,114 @@
using System.Reflection;
using OpenTK.Graphics.OpenGL;
namespace Awperative.Renderer2D;
public static class Renderer2DProfile
{
/// <summary> Handle of index buffer</summary>
[MarkerAttributes.GLHandle]
public static readonly int IndexBufferHandle;
/// <summary> Vertex buffer handle</summary>
[MarkerAttributes.GLHandle]
public static readonly int VertexBufferHandle;
/// <summary> Program handle</summary>
[MarkerAttributes.GLHandle]
public static readonly int ProgramHandle;
public static readonly float[] Vertices = [
1, 1,
-1, 1,
1, -1,
-1, -1
];
public static readonly int[] Indices = [
3, 2, 1,
1, 0, 2
];
public static readonly Comparer<Sprite2D> TextureSorter = Comparer<Sprite2D>.Create((a, b) => {
if(a.source == b.source) return 0;
if (a.source == null) return -1;
if (b.source == null) return 1;
int result = a.source.Handle.CompareTo(b.source.Handle);
return result != 0 ? result : a.GetHashCode().CompareTo(b.GetHashCode());
});
static Renderer2DProfile() {
#region Shader And Program Creation
ProgramHandle = GL.CreateProgram();
GL.UseProgram(ProgramHandle);
Assembly currentAssembly = Assembly.GetExecutingAssembly();
int vertexShader, fragmentShader;
using (StreamReader vertexStreamReader = new(currentAssembly.GetManifestResourceStream("_2DRenderer.Vertex.glsl"))) {
vertexShader = GL.CreateShader(ShaderType.VertexShader);
GL.ShaderSource(vertexShader, vertexStreamReader.ReadToEnd());
GL.CompileShader(vertexShader);
GL.AttachShader(ProgramHandle, vertexShader);
}
using (StreamReader fragmentStreamReader = new(currentAssembly.GetManifestResourceStream("_2DRenderer.Fragment.glsl"))) {
fragmentShader = GL.CreateShader(ShaderType.FragmentShader);
GL.ShaderSource(fragmentShader, fragmentStreamReader.ReadToEnd());
GL.CompileShader(fragmentShader);
GL.AttachShader(ProgramHandle, fragmentShader);
}
GL.LinkProgram(ProgramHandle);
GL.DetachShader(ProgramHandle, vertexShader);
GL.DeleteShader(vertexShader);
GL.DetachShader(ProgramHandle, fragmentShader);
GL.DeleteShader(fragmentShader);
GL.Uniform1i(GL.GetUniformLocation(ProgramHandle, "ftexture"), 0);
GL.UseProgram(0);
#endregion
#region Buffer Creation
IndexBufferHandle = GL.GenBuffer();
GL.BindBuffer(BufferTarget.ElementArrayBuffer, IndexBufferHandle);
GL.BufferData(BufferTarget.ElementArrayBuffer, Indices.Length * sizeof(int), Indices, BufferUsage.StaticDraw);
GL.BindBuffer(BufferTarget.ElementArrayBuffer, 0);
VertexBufferHandle = GL.GenBuffer();
GL.BindBuffer(BufferTarget.ArrayBuffer, VertexBufferHandle);
GL.BufferData(BufferTarget.ArrayBuffer, Vertices.Length * sizeof(float), Vertices, BufferUsage.DynamicDraw);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
#endregion
}
public static void Dispose() {
GL.DeleteProgram(ProgramHandle);
GL.DeleteBuffer(IndexBufferHandle);
GL.DeleteBuffer(VertexBufferHandle);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
}
}

167
2DRenderer/Sprite2D.cs Normal file
View File

@@ -0,0 +1,167 @@
using AwperativeKernel;
using OpenTK.Graphics.OpenGLES2;
using OpenTK.Graphics.Wgl;
namespace Awperative.Renderer2D;
public class Sprite2D : Component
{
//vec4 color, vec2 pos, vec2 scale, float rot
//9 THINGS
public float X {
get => _x;
set {
_x = value;
GL.BindBuffer(BufferTarget.ArrayBuffer, cam.instanceBuffer);
GL.BufferSubData(BufferTarget.ArrayBuffer, Index * 9 * sizeof(float), sizeof(float), in _x);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
}
} private float _x;
public float Y {
get => _y;
set {
_y = value;
GL.BindBuffer(BufferTarget.ArrayBuffer, cam.instanceBuffer);
GL.BufferSubData(BufferTarget.ArrayBuffer, Index * 9 * sizeof(float) + sizeof(float), sizeof(float), in _y);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
}
} private float _y;
public float Width {
get => _width;
set {
_width = value;
GL.BindBuffer(BufferTarget.ArrayBuffer, cam.instanceBuffer);
GL.BufferSubData(BufferTarget.ArrayBuffer, Index * 9 * sizeof(float) + 2 * sizeof(float), sizeof(float), in _width);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
}
} private float _width;
public float Height {
get => _height;
set {
_height = value;
GL.BindBuffer(BufferTarget.ArrayBuffer, cam.instanceBuffer);
GL.BufferSubData(BufferTarget.ArrayBuffer, Index * 9 * sizeof(float) + 3 * sizeof(float), sizeof(float), in _height);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
}
} private float _height;
public float Rotation {
get => _rotation;
set {
_rotation = value;
GL.BindBuffer(BufferTarget.ArrayBuffer, cam.instanceBuffer);
GL.BufferSubData(BufferTarget.ArrayBuffer, Index * 9 * sizeof(float) + 4 * sizeof(float), sizeof(float), in _rotation);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
}
} private float _rotation;
internal int Index;
public Camera2D cam;
public Texture2D source { get; private set; }
public float cropX {
get => _cropX;
set {
_cropX = value;
GL.BindBuffer(BufferTarget.ArrayBuffer, cam.instanceBuffer);
GL.BufferSubData(BufferTarget.ArrayBuffer, Index * 9 * sizeof(float) + 5 * sizeof(float), sizeof(float), in _cropX);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
}
} private float _cropX;
public float cropY {
get => _cropY;
set {
_cropY = value;
GL.BindBuffer(BufferTarget.ArrayBuffer, cam.instanceBuffer);
GL.BufferSubData(BufferTarget.ArrayBuffer, Index * 9 * sizeof(float) + 6 * sizeof(float), sizeof(float), in _cropY);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
}
} private float _cropY;
public float cropWidth {
get => _cropWidth;
set {
_cropWidth = value;
GL.BindBuffer(BufferTarget.ArrayBuffer, cam.instanceBuffer);
GL.BufferSubData(BufferTarget.ArrayBuffer, Index * 9 * sizeof(float) + 7 * sizeof(float), sizeof(float), in _cropWidth);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
}
} private float _cropWidth;
public float cropHeight {
get => _cropHeight;
set {
_cropHeight = value;
GL.BindBuffer(BufferTarget.ArrayBuffer, cam.instanceBuffer);
GL.BufferSubData(BufferTarget.ArrayBuffer, Index * 9 * sizeof(float) + 4 * sizeof(float), sizeof(float), in _cropHeight);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
}
} private float _cropHeight;
public void Create() {
_x = 0;
_y = 0;
_width = 1;
_height = 1;
_rotation = 0;
source = new Texture2D();
_cropWidth = 1;
_cropHeight = 1;
_cropX = 0;
_cropY = 0;
cam = Scene.Get<Camera2D>();
if (cam == null) {
Debug.LogError("No Camera2D found!");
}else cam.Add(this);
}
//todo: add flipping sprites
//todo: particles and debugging
public void SetTexture(Texture2D texture) {
source = texture;
}
public void CropToSheet(int __index) {
if (source is not SpriteSheet2D spriteSheet) return;
int tilesPerRow = source.width / (spriteSheet.cellWidth + spriteSheet.tileSpacingX);
int x = __index % tilesPerRow * (spriteSheet.cellWidth + spriteSheet.tileSpacingX);
int y = __index / tilesPerRow * (spriteSheet.cellHeight + spriteSheet.tileSpacingY);
cropX = (float) x / spriteSheet.width;
cropY = (float) y / spriteSheet.height;
cropWidth = (float) spriteSheet.cellWidth / spriteSheet.width;
cropHeight = (float) spriteSheet.cellHeight / spriteSheet.height;
}
}

View File

@@ -0,0 +1,29 @@
using AwperativeKernel;
namespace Awperative.Renderer2D;
public class SpriteSheet2D : Texture2D
{
public int cellWidth;
public int cellHeight;
public int tileSpacingX;
public int tileSpacingY;
public SpriteSheet2D(string __path, int __cellWidth, int __cellHeight, int __tileSpacingX, int __tileSpacingY) : base(__path) {
float widthRatio = (float) width / __cellWidth;
float heightRatio = (float) height / __cellHeight;
if (__tileSpacingX > width || __tileSpacingY > height) Debug.LogWarning("Spritesheet cell size is bigger than the source image!");
if (Math.Truncate(widthRatio) != widthRatio || Math.Truncate(heightRatio) != heightRatio) Debug.LogWarning("Spritesheet cell size is not divisible by image size! Possible inconsistency when indexing the sheet!");
cellWidth = __cellWidth;
cellHeight = __cellHeight;
tileSpacingX = __tileSpacingX;
tileSpacingY = __tileSpacingY;
}
}

63
2DRenderer/Texture2D.cs Normal file
View File

@@ -0,0 +1,63 @@
using OpenTK.Graphics.OpenGL;
using StbImageSharp;
namespace Awperative.Renderer2D;
/// <summary>Holds a reference to a texture stored in VRAM </summary>
public class Texture2D : IDisposable
{
/// <summary> Handle of the object in open GL. </summary>
[MarkerAttributes.GLHandle]
public readonly int Handle;
/// <summary> Width of the source texture </summary>
public readonly int width;
/// <summary> Height of the source texture </summary>
public readonly int height;
/// <summary> Clears the used VRAM</summary>
public void Dispose() {
GL.DeleteTexture(Handle);
GL.BindTexture(TextureTarget.Texture2d, 0);
GC.SuppressFinalize(this);
}
/// <summary> Loads and creates a texture from a given file path</summary>
public Texture2D(string path) {
ImageResult image = ImageResult.FromStream(File.OpenRead(path), ColorComponents.RedGreenBlueAlpha);
width = image.Width;
height = image.Height;
Handle = GL.GenTexture();
GL.BindTexture(TextureTarget.Texture2d, Handle);
GL.TexImage2D(TextureTarget.Texture2d, 0, InternalFormat.Rgba, width, height, 0, PixelFormat.Rgba, PixelType.UnsignedByte, image.Data);
GL.TexParameteri(TextureTarget.Texture2d, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Nearest);
GL.TexParameteri(TextureTarget.Texture2d, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest);
GL.BindTexture(TextureTarget.Texture2d, 0);
}
public Texture2D() {
width = 1;
height = 1;
Handle = GL.GenTexture();
GL.BindTexture(TextureTarget.Texture2d, Handle);
GL.TexImage2D(TextureTarget.Texture2d, 0, InternalFormat.Rgba, width, height, 0, PixelFormat.Rgba, PixelType.UnsignedByte, [0,0,0,0]);
GL.BindTexture(TextureTarget.Texture2d, 0);
}
}

33
2DRenderer/Vertex.glsl Normal file
View File

@@ -0,0 +1,33 @@
#version 330 core
layout (location = 0) in vec2 pos;
//instance color
layout (location = 1) in vec2 ipos;
layout (location = 2) in vec2 iscale;
layout (location = 3) in float irot;
layout (location = 4) in vec4 icrop;
uniform vec2 viewport;
out vec2 texuv;
out vec4 crop;
void main() {
texuv = pos;
crop = icrop;
float scaX = pos.x * iscale.x;
float scaY = pos.y * iscale.y;
float rotX = scaX * cos(irot) - scaY * sin(irot);
float rotY = scaX * sin(irot) + scaY * cos(irot);
float finX = rotX + ipos.x;
float finY = rotY + ipos.y;
//todo: fix scaling matrix to prevent vertical crunch!
float reaX = finX / (viewport.x / viewport.y);
float reaY = finY / 1;
gl_Position = vec4(reaX, reaY, 0, 1);
}

View File

@@ -0,0 +1,296 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v9.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v9.0": {
"2DRenderer/1.0.0": {
"dependencies": {
"OpenTK": "5.0.0-pre.15",
"StbImageSharp": "2.30.15",
"AwperativeKernel": "1.0.0.0"
},
"runtime": {
"2DRenderer.dll": {}
}
},
"OpenTK/5.0.0-pre.15": {
"dependencies": {
"OpenTK.Audio": "5.0.0-pre.15",
"OpenTK.Compute": "5.0.0-pre.15",
"OpenTK.Core": "5.0.0-pre.15",
"OpenTK.Graphics": "5.0.0-pre.15",
"OpenTK.Input": "5.0.0-pre.15",
"OpenTK.Mathematics": "5.0.0-pre.15",
"OpenTK.Platform": "5.0.0-pre.15",
"OpenTK.Windowing.Common": "5.0.0-pre.15",
"OpenTK.Windowing.Desktop": "5.0.0-pre.15",
"OpenTK.Windowing.GraphicsLibraryFramework": "5.0.0-pre.15"
}
},
"OpenTK.Audio/5.0.0-pre.15": {
"dependencies": {
"OpenTK.Core": "5.0.0-pre.15",
"OpenTK.Mathematics": "5.0.0-pre.15"
},
"runtime": {
"lib/net8.0/OpenTK.Audio.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"OpenTK.Compute/5.0.0-pre.15": {
"runtime": {
"lib/net8.0/OpenTK.Compute.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"OpenTK.Core/5.0.0-pre.15": {
"runtime": {
"lib/net8.0/OpenTK.Core.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"OpenTK.Graphics/5.0.0-pre.15": {
"dependencies": {
"OpenTK.Core": "5.0.0-pre.15",
"OpenTK.Mathematics": "5.0.0-pre.15"
},
"runtime": {
"lib/net8.0/OpenTK.Graphics.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"OpenTK.Input/5.0.0-pre.15": {
"runtime": {
"lib/net8.0/OpenTK.Input.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"OpenTK.Mathematics/5.0.0-pre.15": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
},
"runtime": {
"lib/net8.0/OpenTK.Mathematics.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"OpenTK.Platform/5.0.0-pre.15": {
"runtime": {
"lib/net8.0/OpenTK.Platform.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"OpenTK.redist.glfw/3.4.0.44": {
"runtimeTargets": {
"runtimes/linux-x64/native/libglfw.so.3": {
"rid": "linux-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/osx-arm64/native/libglfw.3.dylib": {
"rid": "osx-arm64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/osx-x64/native/libglfw.3.dylib": {
"rid": "osx-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x64/native/glfw3.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x86/native/glfw3.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "0.0.0.0"
}
}
},
"OpenTK.Windowing.Common/5.0.0-pre.15": {
"dependencies": {
"OpenTK.Core": "5.0.0-pre.15",
"OpenTK.Mathematics": "5.0.0-pre.15"
},
"runtime": {
"lib/net8.0/OpenTK.Windowing.Common.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"OpenTK.Windowing.Desktop/5.0.0-pre.15": {
"dependencies": {
"OpenTK.Core": "5.0.0-pre.15",
"OpenTK.Mathematics": "5.0.0-pre.15",
"OpenTK.Windowing.Common": "5.0.0-pre.15",
"OpenTK.Windowing.GraphicsLibraryFramework": "5.0.0-pre.15"
},
"runtime": {
"lib/net8.0/OpenTK.Windowing.Desktop.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"OpenTK.Windowing.GraphicsLibraryFramework/5.0.0-pre.15": {
"dependencies": {
"OpenTK.Core": "5.0.0-pre.15",
"OpenTK.redist.glfw": "3.4.0.44"
},
"runtime": {
"lib/net8.0/OpenTK.Windowing.GraphicsLibraryFramework.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"StbImageSharp/2.30.15": {
"runtime": {
"lib/netstandard2.0/StbImageSharp.dll": {
"assemblyVersion": "2.30.15.0",
"fileVersion": "2.30.15.0"
}
}
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {},
"AwperativeKernel/1.0.0.0": {
"runtime": {
"AwperativeKernel.dll": {
"assemblyVersion": "1.0.0.0",
"fileVersion": "1.0.0.0"
}
}
}
}
},
"libraries": {
"2DRenderer/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"OpenTK/5.0.0-pre.15": {
"type": "package",
"serviceable": true,
"sha512": "sha512-CDGbelIIaGCBNPekNqh/zQsy63q+PTrVOWWWi7A3d/QrHVd0T5nDhSqqJpD77Xs/qHFRDhL1C3+Qh5CDYJyzig==",
"path": "opentk/5.0.0-pre.15",
"hashPath": "opentk.5.0.0-pre.15.nupkg.sha512"
},
"OpenTK.Audio/5.0.0-pre.15": {
"type": "package",
"serviceable": true,
"sha512": "sha512-lX3FR1RvXz+xjEGl5MFvGWQg7M/z4qdeHB6vdI5F1K1ODyjeuDlSnEc7hjA9fSdmKKEq3K1yCcU4kGgs4UC0ZQ==",
"path": "opentk.audio/5.0.0-pre.15",
"hashPath": "opentk.audio.5.0.0-pre.15.nupkg.sha512"
},
"OpenTK.Compute/5.0.0-pre.15": {
"type": "package",
"serviceable": true,
"sha512": "sha512-uaT2JJGUEvlLYwKga5/cxAm7LiFdRKPjpWPE6tnhg2fYzHwX/6WfVCXU9xvYRLUqYHZIU7dYzJOzlXFZuDZNAw==",
"path": "opentk.compute/5.0.0-pre.15",
"hashPath": "opentk.compute.5.0.0-pre.15.nupkg.sha512"
},
"OpenTK.Core/5.0.0-pre.15": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Y/sir5MXEoGB9b4bmCSXknEtjbBIoqaRaeW5XnhIvY8FWBEsxT21jqq5zF1/TXjyCdcNkcfzPq70T6P4FYE5uQ==",
"path": "opentk.core/5.0.0-pre.15",
"hashPath": "opentk.core.5.0.0-pre.15.nupkg.sha512"
},
"OpenTK.Graphics/5.0.0-pre.15": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0oobd6dbdmKazMiBtiExv8hzlcJIxkEAD/ozyGX2T0WYPCMv0iZXRqqFl/qJ+18tfhIGoQ7USIp5Sw9ZxhDgjA==",
"path": "opentk.graphics/5.0.0-pre.15",
"hashPath": "opentk.graphics.5.0.0-pre.15.nupkg.sha512"
},
"OpenTK.Input/5.0.0-pre.15": {
"type": "package",
"serviceable": true,
"sha512": "sha512-O30U9gMveJW6bYPxxC7nYZVoViwlxpImMnIuWywcd1JnUfvScgDlWFwhPO7xBdaPu8FYa29N0yBRsl5eJufPcg==",
"path": "opentk.input/5.0.0-pre.15",
"hashPath": "opentk.input.5.0.0-pre.15.nupkg.sha512"
},
"OpenTK.Mathematics/5.0.0-pre.15": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JFflFJNMLV0E/08bqsnzNXU/aUJJwy8xCZVU1ECMFvi1lKoCXi/FHSLJKW+s+p+bbTZ6HpPzdc+o4TBerecrjQ==",
"path": "opentk.mathematics/5.0.0-pre.15",
"hashPath": "opentk.mathematics.5.0.0-pre.15.nupkg.sha512"
},
"OpenTK.Platform/5.0.0-pre.15": {
"type": "package",
"serviceable": true,
"sha512": "sha512-5GCXACJm8ybTrumj2jb7c5oGNQyb/LwWCNbJsl72IeY/miBTMBPXM0RD8oXBXd/oH36pKz5EwzaRl/MT6/WajA==",
"path": "opentk.platform/5.0.0-pre.15",
"hashPath": "opentk.platform.5.0.0-pre.15.nupkg.sha512"
},
"OpenTK.redist.glfw/3.4.0.44": {
"type": "package",
"serviceable": true,
"sha512": "sha512-HEjbdk0wWxSRrXHl3DSmrA8trecndgJpAHHloJJ1vPseNfeu/ynmrH/LturU1KguRn4r3IzZ81UIp5xRjnyahg==",
"path": "opentk.redist.glfw/3.4.0.44",
"hashPath": "opentk.redist.glfw.3.4.0.44.nupkg.sha512"
},
"OpenTK.Windowing.Common/5.0.0-pre.15": {
"type": "package",
"serviceable": true,
"sha512": "sha512-wPoz4uW8f3/zNHFVSWgMQPx5yhzUBKlpwdJp5PDiemZyO63tBJKaaty3TIJakDDdG/TioSIjnQb0YY1tEBkjuA==",
"path": "opentk.windowing.common/5.0.0-pre.15",
"hashPath": "opentk.windowing.common.5.0.0-pre.15.nupkg.sha512"
},
"OpenTK.Windowing.Desktop/5.0.0-pre.15": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Er5s+lSp5VwJ5NzrSjRMmhBpZdVGEFswuIE+joGtTUtIzznws6/Owi30tBaAC/byHHPrgH5hGegwlvEP5rDKRA==",
"path": "opentk.windowing.desktop/5.0.0-pre.15",
"hashPath": "opentk.windowing.desktop.5.0.0-pre.15.nupkg.sha512"
},
"OpenTK.Windowing.GraphicsLibraryFramework/5.0.0-pre.15": {
"type": "package",
"serviceable": true,
"sha512": "sha512-o+t3c2tFiNpqkvTZ1tKw+Anjm76t+OvkiBVHUuSQ5WMBI/O+uzpZYEl0pdSRDpL3UT3udJkM8iefIqK2+YzAxA==",
"path": "opentk.windowing.graphicslibraryframework/5.0.0-pre.15",
"hashPath": "opentk.windowing.graphicslibraryframework.5.0.0-pre.15.nupkg.sha512"
},
"StbImageSharp/2.30.15": {
"type": "package",
"serviceable": true,
"sha512": "sha512-7QqbupVhz2kcFUPTgMw4iHR9rYDHGundzzee19Mwmd1typ2Lnv8EVJcLJxlkeBM2+4ex0NwsMtdbGSJctp1XCQ==",
"path": "stbimagesharp/2.30.15",
"hashPath": "stbimagesharp.2.30.15.nupkg.sha512"
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
"path": "system.runtime.compilerservices.unsafe/6.0.0",
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
},
"AwperativeKernel/1.0.0.0": {
"type": "reference",
"serviceable": false,
"sha512": ""
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,77 @@
{
"format": 1,
"restore": {
"/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/2DRenderer.csproj": {}
},
"projects": {
"/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/2DRenderer.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/2DRenderer.csproj",
"projectName": "2DRenderer",
"projectPath": "/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/2DRenderer.csproj",
"packagesPath": "/home/avery/.nuget/packages/",
"outputPath": "/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/avery/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"dependencies": {
"OpenTK": {
"target": "Package",
"version": "[5.0.0-pre.15, )"
},
"StbImageSharp": {
"target": "Package",
"version": "[2.30.15, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/home/avery/.dotnet/sdk/9.0.311/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/avery/.nuget/packages/</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/avery/.nuget/packages/</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.0</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="/home/avery/.nuget/packages/" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />

View File

@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]

View File

@@ -0,0 +1,22 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("2DRenderer")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("2DRenderer")]
[assembly: System.Reflection.AssemblyTitleAttribute("2DRenderer")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@@ -0,0 +1 @@
b66822f1dc2e7c7e4f084c2892a366b2fa05b69f96b4d07aaa7c3d805ea85175

View File

@@ -0,0 +1,15 @@
is_global = true
build_property.TargetFramework = net9.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = _2DRenderer
build_property.ProjectDir = /home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 9.0
build_property.EnableCodeStyleSeverity =

View File

@@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

Binary file not shown.

View File

@@ -0,0 +1 @@
2d5c44e07a9bcf22843711df66c54468b1d5b93ab439922524d907bd71f6c858

View File

@@ -0,0 +1,15 @@
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/bin/Debug/net9.0/2DRenderer.deps.json
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/bin/Debug/net9.0/2DRenderer.dll
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/bin/Debug/net9.0/2DRenderer.pdb
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/bin/Debug/net9.0/AwperativeKernel.dll
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/bin/Debug/net9.0/AwperativeKernel.pdb
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/obj/Debug/net9.0/2DRenderer.csproj.AssemblyReference.cache
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/obj/Debug/net9.0/2DRenderer.GeneratedMSBuildEditorConfig.editorconfig
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/obj/Debug/net9.0/2DRenderer.AssemblyInfoInputs.cache
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/obj/Debug/net9.0/2DRenderer.AssemblyInfo.cs
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/obj/Debug/net9.0/2DRenderer.csproj.CoreCompileInputs.cache
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/obj/Debug/net9.0/2DRenderer.csproj.Up2Date
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/obj/Debug/net9.0/2DRenderer.dll
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/obj/Debug/net9.0/refint/2DRenderer.dll
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/obj/Debug/net9.0/2DRenderer.pdb
/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/obj/Debug/net9.0/ref/2DRenderer.dll

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,539 @@
{
"version": 3,
"targets": {
"net9.0": {
"OpenTK/5.0.0-pre.15": {
"type": "package",
"dependencies": {
"OpenTK.Audio": "5.0.0-pre.15",
"OpenTK.Compute": "5.0.0-pre.15",
"OpenTK.Core": "5.0.0-pre.15",
"OpenTK.Graphics": "5.0.0-pre.15",
"OpenTK.Input": "5.0.0-pre.15",
"OpenTK.Mathematics": "5.0.0-pre.15",
"OpenTK.Platform": "5.0.0-pre.15",
"OpenTK.Windowing.Common": "5.0.0-pre.15",
"OpenTK.Windowing.Desktop": "5.0.0-pre.15",
"OpenTK.Windowing.GraphicsLibraryFramework": "5.0.0-pre.15"
}
},
"OpenTK.Audio/5.0.0-pre.15": {
"type": "package",
"dependencies": {
"OpenTK.Core": "[5.0.0-pre.15, 6.0.0-pre)",
"OpenTK.Mathematics": "[5.0.0-pre.15, 6.0.0-pre)"
},
"compile": {
"lib/net8.0/OpenTK.Audio.dll": {
"related": ".pdb;.xml"
}
},
"runtime": {
"lib/net8.0/OpenTK.Audio.dll": {
"related": ".pdb;.xml"
}
}
},
"OpenTK.Compute/5.0.0-pre.15": {
"type": "package",
"compile": {
"lib/net8.0/OpenTK.Compute.dll": {
"related": ".pdb;.xml"
}
},
"runtime": {
"lib/net8.0/OpenTK.Compute.dll": {
"related": ".pdb;.xml"
}
}
},
"OpenTK.Core/5.0.0-pre.15": {
"type": "package",
"compile": {
"lib/net8.0/OpenTK.Core.dll": {
"related": ".pdb;.xml"
}
},
"runtime": {
"lib/net8.0/OpenTK.Core.dll": {
"related": ".pdb;.xml"
}
}
},
"OpenTK.Graphics/5.0.0-pre.15": {
"type": "package",
"dependencies": {
"OpenTK.Core": "[5.0.0-pre.15, 6.0.0-pre)",
"OpenTK.Mathematics": "[5.0.0-pre.15, 6.0.0-pre)"
},
"compile": {
"lib/net8.0/OpenTK.Graphics.dll": {
"related": ".pdb"
}
},
"runtime": {
"lib/net8.0/OpenTK.Graphics.dll": {
"related": ".pdb"
}
}
},
"OpenTK.Input/5.0.0-pre.15": {
"type": "package",
"compile": {
"lib/net8.0/OpenTK.Input.dll": {
"related": ".pdb;.xml"
}
},
"runtime": {
"lib/net8.0/OpenTK.Input.dll": {
"related": ".pdb;.xml"
}
}
},
"OpenTK.Mathematics/5.0.0-pre.15": {
"type": "package",
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
},
"compile": {
"lib/net8.0/OpenTK.Mathematics.dll": {
"related": ".pdb;.xml"
}
},
"runtime": {
"lib/net8.0/OpenTK.Mathematics.dll": {
"related": ".pdb;.xml"
}
}
},
"OpenTK.Platform/5.0.0-pre.15": {
"type": "package",
"compile": {
"lib/net8.0/OpenTK.Platform.dll": {
"related": ".pdb;.xml"
}
},
"runtime": {
"lib/net8.0/OpenTK.Platform.dll": {
"related": ".pdb;.xml"
}
}
},
"OpenTK.redist.glfw/3.4.0.44": {
"type": "package",
"compile": {
"lib/netstandard2.0/_._": {}
},
"runtime": {
"lib/netstandard2.0/_._": {}
},
"runtimeTargets": {
"runtimes/linux-x64/native/libglfw.so.3": {
"assetType": "native",
"rid": "linux-x64"
},
"runtimes/osx-arm64/native/libglfw.3.dylib": {
"assetType": "native",
"rid": "osx-arm64"
},
"runtimes/osx-x64/native/libglfw.3.dylib": {
"assetType": "native",
"rid": "osx-x64"
},
"runtimes/win-x64/native/glfw3.dll": {
"assetType": "native",
"rid": "win-x64"
},
"runtimes/win-x86/native/glfw3.dll": {
"assetType": "native",
"rid": "win-x86"
}
}
},
"OpenTK.Windowing.Common/5.0.0-pre.15": {
"type": "package",
"dependencies": {
"OpenTK.Core": "[5.0.0-pre.15, 6.0.0-pre)",
"OpenTK.Mathematics": "[5.0.0-pre.15, 6.0.0-pre)"
},
"compile": {
"lib/net8.0/OpenTK.Windowing.Common.dll": {
"related": ".pdb;.xml"
}
},
"runtime": {
"lib/net8.0/OpenTK.Windowing.Common.dll": {
"related": ".pdb;.xml"
}
}
},
"OpenTK.Windowing.Desktop/5.0.0-pre.15": {
"type": "package",
"dependencies": {
"OpenTK.Core": "[5.0.0-pre.15, 6.0.0-pre)",
"OpenTK.Mathematics": "[5.0.0-pre.15, 6.0.0-pre)",
"OpenTK.Windowing.Common": "[5.0.0-pre.15, 6.0.0-pre)",
"OpenTK.Windowing.GraphicsLibraryFramework": "[5.0.0-pre.15, 6.0.0-pre)"
},
"compile": {
"lib/net8.0/OpenTK.Windowing.Desktop.dll": {
"related": ".pdb;.xml"
}
},
"runtime": {
"lib/net8.0/OpenTK.Windowing.Desktop.dll": {
"related": ".pdb;.xml"
}
}
},
"OpenTK.Windowing.GraphicsLibraryFramework/5.0.0-pre.15": {
"type": "package",
"dependencies": {
"OpenTK.Core": "[5.0.0-pre.15, 6.0.0-pre)",
"OpenTK.redist.glfw": "3.4.0.44"
},
"compile": {
"lib/net8.0/OpenTK.Windowing.GraphicsLibraryFramework.dll": {
"related": ".pdb;.xml"
}
},
"runtime": {
"lib/net8.0/OpenTK.Windowing.GraphicsLibraryFramework.dll": {
"related": ".pdb;.xml"
}
}
},
"StbImageSharp/2.30.15": {
"type": "package",
"compile": {
"lib/netstandard2.0/StbImageSharp.dll": {}
},
"runtime": {
"lib/netstandard2.0/StbImageSharp.dll": {}
}
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
"type": "package",
"compile": {
"lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/netcoreapp3.1/_._": {}
}
}
}
},
"libraries": {
"OpenTK/5.0.0-pre.15": {
"sha512": "CDGbelIIaGCBNPekNqh/zQsy63q+PTrVOWWWi7A3d/QrHVd0T5nDhSqqJpD77Xs/qHFRDhL1C3+Qh5CDYJyzig==",
"type": "package",
"path": "opentk/5.0.0-pre.15",
"files": [
".nupkg.metadata",
".signature.p7s",
"icon.png",
"opentk.5.0.0-pre.15.nupkg.sha512",
"opentk.nuspec"
]
},
"OpenTK.Audio/5.0.0-pre.15": {
"sha512": "lX3FR1RvXz+xjEGl5MFvGWQg7M/z4qdeHB6vdI5F1K1ODyjeuDlSnEc7hjA9fSdmKKEq3K1yCcU4kGgs4UC0ZQ==",
"type": "package",
"path": "opentk.audio/5.0.0-pre.15",
"files": [
".nupkg.metadata",
".signature.p7s",
"docs/README.md",
"images/opentk-blue-hexagon.png",
"lib/net8.0/OpenTK.Audio.dll",
"lib/net8.0/OpenTK.Audio.pdb",
"lib/net8.0/OpenTK.Audio.xml",
"opentk.audio.5.0.0-pre.15.nupkg.sha512",
"opentk.audio.nuspec"
]
},
"OpenTK.Compute/5.0.0-pre.15": {
"sha512": "uaT2JJGUEvlLYwKga5/cxAm7LiFdRKPjpWPE6tnhg2fYzHwX/6WfVCXU9xvYRLUqYHZIU7dYzJOzlXFZuDZNAw==",
"type": "package",
"path": "opentk.compute/5.0.0-pre.15",
"files": [
".nupkg.metadata",
".signature.p7s",
"docs/README.md",
"images/opentk-blue-hexagon.png",
"lib/net8.0/OpenTK.Compute.dll",
"lib/net8.0/OpenTK.Compute.pdb",
"lib/net8.0/OpenTK.Compute.xml",
"opentk.compute.5.0.0-pre.15.nupkg.sha512",
"opentk.compute.nuspec"
]
},
"OpenTK.Core/5.0.0-pre.15": {
"sha512": "Y/sir5MXEoGB9b4bmCSXknEtjbBIoqaRaeW5XnhIvY8FWBEsxT21jqq5zF1/TXjyCdcNkcfzPq70T6P4FYE5uQ==",
"type": "package",
"path": "opentk.core/5.0.0-pre.15",
"files": [
".nupkg.metadata",
".signature.p7s",
"docs/README.md",
"images/opentk-blue-hexagon.png",
"lib/net8.0/OpenTK.Core.dll",
"lib/net8.0/OpenTK.Core.pdb",
"lib/net8.0/OpenTK.Core.xml",
"opentk.core.5.0.0-pre.15.nupkg.sha512",
"opentk.core.nuspec"
]
},
"OpenTK.Graphics/5.0.0-pre.15": {
"sha512": "0oobd6dbdmKazMiBtiExv8hzlcJIxkEAD/ozyGX2T0WYPCMv0iZXRqqFl/qJ+18tfhIGoQ7USIp5Sw9ZxhDgjA==",
"type": "package",
"path": "opentk.graphics/5.0.0-pre.15",
"files": [
".nupkg.metadata",
".signature.p7s",
"docs/README.md",
"images/opentk-blue-hexagon.png",
"lib/net8.0/OpenTK.Graphics.dll",
"lib/net8.0/OpenTK.Graphics.pdb",
"opentk.graphics.5.0.0-pre.15.nupkg.sha512",
"opentk.graphics.nuspec"
]
},
"OpenTK.Input/5.0.0-pre.15": {
"sha512": "O30U9gMveJW6bYPxxC7nYZVoViwlxpImMnIuWywcd1JnUfvScgDlWFwhPO7xBdaPu8FYa29N0yBRsl5eJufPcg==",
"type": "package",
"path": "opentk.input/5.0.0-pre.15",
"files": [
".nupkg.metadata",
".signature.p7s",
"docs/README.md",
"images/opentk-blue-hexagon.png",
"lib/net8.0/OpenTK.Input.dll",
"lib/net8.0/OpenTK.Input.pdb",
"lib/net8.0/OpenTK.Input.xml",
"opentk.input.5.0.0-pre.15.nupkg.sha512",
"opentk.input.nuspec"
]
},
"OpenTK.Mathematics/5.0.0-pre.15": {
"sha512": "JFflFJNMLV0E/08bqsnzNXU/aUJJwy8xCZVU1ECMFvi1lKoCXi/FHSLJKW+s+p+bbTZ6HpPzdc+o4TBerecrjQ==",
"type": "package",
"path": "opentk.mathematics/5.0.0-pre.15",
"files": [
".nupkg.metadata",
".signature.p7s",
"docs/README.md",
"images/opentk-blue-hexagon.png",
"lib/net8.0/OpenTK.Mathematics.dll",
"lib/net8.0/OpenTK.Mathematics.pdb",
"lib/net8.0/OpenTK.Mathematics.xml",
"opentk.mathematics.5.0.0-pre.15.nupkg.sha512",
"opentk.mathematics.nuspec"
]
},
"OpenTK.Platform/5.0.0-pre.15": {
"sha512": "5GCXACJm8ybTrumj2jb7c5oGNQyb/LwWCNbJsl72IeY/miBTMBPXM0RD8oXBXd/oH36pKz5EwzaRl/MT6/WajA==",
"type": "package",
"path": "opentk.platform/5.0.0-pre.15",
"files": [
".nupkg.metadata",
".signature.p7s",
"lib/net8.0/OpenTK.Platform.dll",
"lib/net8.0/OpenTK.Platform.pdb",
"lib/net8.0/OpenTK.Platform.xml",
"opentk.platform.5.0.0-pre.15.nupkg.sha512",
"opentk.platform.nuspec"
]
},
"OpenTK.redist.glfw/3.4.0.44": {
"sha512": "HEjbdk0wWxSRrXHl3DSmrA8trecndgJpAHHloJJ1vPseNfeu/ynmrH/LturU1KguRn4r3IzZ81UIp5xRjnyahg==",
"type": "package",
"path": "opentk.redist.glfw/3.4.0.44",
"files": [
".nupkg.metadata",
".signature.p7s",
"COPYING.md",
"lib/netstandard2.0/_._",
"opentk.png",
"opentk.redist.glfw.3.4.0.44.nupkg.sha512",
"opentk.redist.glfw.nuspec",
"runtimes/linux-x64/native/libglfw.so.3",
"runtimes/osx-arm64/native/libglfw.3.dylib",
"runtimes/osx-x64/native/libglfw.3.dylib",
"runtimes/win-x64/native/glfw3.dll",
"runtimes/win-x86/native/glfw3.dll"
]
},
"OpenTK.Windowing.Common/5.0.0-pre.15": {
"sha512": "wPoz4uW8f3/zNHFVSWgMQPx5yhzUBKlpwdJp5PDiemZyO63tBJKaaty3TIJakDDdG/TioSIjnQb0YY1tEBkjuA==",
"type": "package",
"path": "opentk.windowing.common/5.0.0-pre.15",
"files": [
".nupkg.metadata",
".signature.p7s",
"docs/README.md",
"images/opentk-blue-hexagon.png",
"lib/net8.0/OpenTK.Windowing.Common.dll",
"lib/net8.0/OpenTK.Windowing.Common.pdb",
"lib/net8.0/OpenTK.Windowing.Common.xml",
"opentk.windowing.common.5.0.0-pre.15.nupkg.sha512",
"opentk.windowing.common.nuspec"
]
},
"OpenTK.Windowing.Desktop/5.0.0-pre.15": {
"sha512": "Er5s+lSp5VwJ5NzrSjRMmhBpZdVGEFswuIE+joGtTUtIzznws6/Owi30tBaAC/byHHPrgH5hGegwlvEP5rDKRA==",
"type": "package",
"path": "opentk.windowing.desktop/5.0.0-pre.15",
"files": [
".nupkg.metadata",
".signature.p7s",
"docs/README.md",
"images/opentk-blue-hexagon.png",
"lib/net8.0/OpenTK.Windowing.Desktop.dll",
"lib/net8.0/OpenTK.Windowing.Desktop.pdb",
"lib/net8.0/OpenTK.Windowing.Desktop.xml",
"opentk.windowing.desktop.5.0.0-pre.15.nupkg.sha512",
"opentk.windowing.desktop.nuspec"
]
},
"OpenTK.Windowing.GraphicsLibraryFramework/5.0.0-pre.15": {
"sha512": "o+t3c2tFiNpqkvTZ1tKw+Anjm76t+OvkiBVHUuSQ5WMBI/O+uzpZYEl0pdSRDpL3UT3udJkM8iefIqK2+YzAxA==",
"type": "package",
"path": "opentk.windowing.graphicslibraryframework/5.0.0-pre.15",
"files": [
".nupkg.metadata",
".signature.p7s",
"docs/README.md",
"images/opentk-blue-hexagon.png",
"lib/net8.0/OpenTK.Windowing.GraphicsLibraryFramework.dll",
"lib/net8.0/OpenTK.Windowing.GraphicsLibraryFramework.pdb",
"lib/net8.0/OpenTK.Windowing.GraphicsLibraryFramework.xml",
"opentk.windowing.graphicslibraryframework.5.0.0-pre.15.nupkg.sha512",
"opentk.windowing.graphicslibraryframework.nuspec"
]
},
"StbImageSharp/2.30.15": {
"sha512": "7QqbupVhz2kcFUPTgMw4iHR9rYDHGundzzee19Mwmd1typ2Lnv8EVJcLJxlkeBM2+4ex0NwsMtdbGSJctp1XCQ==",
"type": "package",
"path": "stbimagesharp/2.30.15",
"files": [
".nupkg.metadata",
".signature.p7s",
"lib/net471/StbImageSharp.dll",
"lib/netstandard2.0/StbImageSharp.dll",
"stbimagesharp.2.30.15.nupkg.sha512",
"stbimagesharp.nuspec"
]
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
"sha512": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
"type": "package",
"path": "system.runtime.compilerservices.unsafe/6.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets",
"buildTransitive/netcoreapp3.1/_._",
"lib/net461/System.Runtime.CompilerServices.Unsafe.dll",
"lib/net461/System.Runtime.CompilerServices.Unsafe.xml",
"lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll",
"lib/net6.0/System.Runtime.CompilerServices.Unsafe.xml",
"lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll",
"lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.xml",
"lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll",
"lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml",
"system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
"system.runtime.compilerservices.unsafe.nuspec",
"useSharedDesignerContext.txt"
]
}
},
"projectFileDependencyGroups": {
"net9.0": [
"OpenTK >= 5.0.0-pre.15",
"StbImageSharp >= 2.30.15"
]
},
"packageFolders": {
"/home/avery/.nuget/packages/": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/2DRenderer.csproj",
"projectName": "2DRenderer",
"projectPath": "/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/2DRenderer.csproj",
"packagesPath": "/home/avery/.nuget/packages/",
"outputPath": "/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/avery/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"dependencies": {
"OpenTK": {
"target": "Package",
"version": "[5.0.0-pre.15, )"
},
"StbImageSharp": {
"target": "Package",
"version": "[2.30.15, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/home/avery/.dotnet/sdk/9.0.311/PortableRuntimeIdentifierGraph.json"
}
}
}
}

View File

@@ -0,0 +1,23 @@
{
"version": 2,
"dgSpecHash": "gGxXlgQ9yFY=",
"success": true,
"projectFilePath": "/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/2DRenderer.csproj",
"expectedPackageFiles": [
"/home/avery/.nuget/packages/opentk/5.0.0-pre.15/opentk.5.0.0-pre.15.nupkg.sha512",
"/home/avery/.nuget/packages/opentk.audio/5.0.0-pre.15/opentk.audio.5.0.0-pre.15.nupkg.sha512",
"/home/avery/.nuget/packages/opentk.compute/5.0.0-pre.15/opentk.compute.5.0.0-pre.15.nupkg.sha512",
"/home/avery/.nuget/packages/opentk.core/5.0.0-pre.15/opentk.core.5.0.0-pre.15.nupkg.sha512",
"/home/avery/.nuget/packages/opentk.graphics/5.0.0-pre.15/opentk.graphics.5.0.0-pre.15.nupkg.sha512",
"/home/avery/.nuget/packages/opentk.input/5.0.0-pre.15/opentk.input.5.0.0-pre.15.nupkg.sha512",
"/home/avery/.nuget/packages/opentk.mathematics/5.0.0-pre.15/opentk.mathematics.5.0.0-pre.15.nupkg.sha512",
"/home/avery/.nuget/packages/opentk.platform/5.0.0-pre.15/opentk.platform.5.0.0-pre.15.nupkg.sha512",
"/home/avery/.nuget/packages/opentk.redist.glfw/3.4.0.44/opentk.redist.glfw.3.4.0.44.nupkg.sha512",
"/home/avery/.nuget/packages/opentk.windowing.common/5.0.0-pre.15/opentk.windowing.common.5.0.0-pre.15.nupkg.sha512",
"/home/avery/.nuget/packages/opentk.windowing.desktop/5.0.0-pre.15/opentk.windowing.desktop.5.0.0-pre.15.nupkg.sha512",
"/home/avery/.nuget/packages/opentk.windowing.graphicslibraryframework/5.0.0-pre.15/opentk.windowing.graphicslibraryframework.5.0.0-pre.15.nupkg.sha512",
"/home/avery/.nuget/packages/stbimagesharp/2.30.15/stbimagesharp.2.30.15.nupkg.sha512",
"/home/avery/.nuget/packages/system.runtime.compilerservices.unsafe/6.0.0/system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
],
"logs": []
}

View File

@@ -0,0 +1 @@
"restore":{"projectUniqueName":"/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/2DRenderer.csproj","projectName":"2DRenderer","projectPath":"/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/2DRenderer.csproj","outputPath":"/home/avery/Projects/Awperative/Modules/2DRenderer/2DRenderer/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net9.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net9.0":{"targetAlias":"net9.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"},"SdkAnalysisLevel":"9.0.300"}"frameworks":{"net9.0":{"targetAlias":"net9.0","dependencies":{"OpenTK":{"target":"Package","version":"[5.0.0-pre.15, )"},"StbImageSharp":{"target":"Package","version":"[2.30.15, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/home/avery/.dotnet/sdk/9.0.311/PortableRuntimeIdentifierGraph.json"}}

View File

@@ -0,0 +1 @@
17729103684913577

View File

@@ -0,0 +1 @@
17729103684913577