RenderTargetGroup GetData, Shader uint support

This commit is contained in:
Simon Lübeß
2022-05-25 22:00:11 +02:00
parent 1418063d68
commit 28f1fad464
19 changed files with 354 additions and 44 deletions
@@ -33,7 +33,17 @@ namespace GlitchyEditor.EditWindows
_selectedEntities.Clear();
_scene = scene;
}
/*public bool SelectEntityWithId(uint32 id, bool addToSelection = false)
{
if (!addToSelection)
_selectedEntities.Clear();
_scene.[Friend]_ecsWorld.IsValid(id);
_selectedEntities.Add();
}*/
protected override void InternalShow()
{
if(!ImGui.Begin(s_WindowTitle, &_open, .MenuBar))
@@ -12,11 +12,11 @@ namespace GlitchyEditor.EditWindows
{
public const String s_WindowTitle = "Scene";
private RenderTarget2D _renderTarget ~ _?.ReleaseRef();
private RenderTargetGroup _renderTarget ~ _?.ReleaseRef();
public Event<EventHandler<Vector2>> ViewportSizeChangedEvent ~ _.Dispose();
public RenderTarget2D RenderTarget
public RenderTargetGroup RenderTarget
{
get => _renderTarget;
set
@@ -93,7 +93,34 @@ namespace GlitchyEditor.EditWindows
if(_renderTarget != null)
{
ImGui.Image(_renderTarget, viewportSize);
ImGui.Image(_renderTarget.GetViewBinding(0), viewportSize);
}
Vector2 relativeMouse = (Vector2)ImGui.GetMousePos() - (Vector2)ImGui.GetItemRectMin();
int x = Renderer.[Friend]_gBuffer.Target.Width;
int y = Renderer.[Friend]_gBuffer.Target.Height;
if (Input.IsMouseButtonPressing(.LeftButton) && relativeMouse.X >= 0 && relativeMouse.Y >= 0 &&
relativeMouse.X < viewportSize.x && relativeMouse.Y < viewportSize.y &&
relativeMouse.X < x && relativeMouse.Y < y)
{
uint32 id = 0;
Renderer.[Friend]_gBuffer.Target.GetData<uint32>(&id, 5, (.)relativeMouse.X, (.)relativeMouse.Y, 1, 1);
id--;
//_renderTarget.GetData<uint32>(&pixel, 0, );
Log.EngineLogger.Info($"{relativeMouse} || ID = {id}");
/*if (id != uint32.MaxValue)
{
_editor.CurrentScene.[Friend]_ecsWorld.GetCurrentVersion()
}*/
//_editor.EntityHierarchyWindow.SelectEntityWithId(id, true);
}
DrawImGuizmo(viewportSize);
+12 -4
View File
@@ -44,7 +44,7 @@ namespace GlitchyEditor
Editor _editor ~ delete _;
RenderTarget2D _cameraTarget ~ _.ReleaseRef();
RenderTarget2D _viewportTarget ~ _.ReleaseRef();
RenderTargetGroup _viewportTarget ~ _.ReleaseRef();
SettingsWindow _settingsWindow = new .() ~ delete _;
@@ -89,8 +89,16 @@ namespace GlitchyEditor
_cameraTarget = new RenderTarget2D(RenderTarget2DDescription(.R16G16B16A16_Float, 100, 100) {DepthStencilFormat = .D32_Float});
_cameraTarget.SamplerState = SamplerStateManager.LinearClamp;
_viewportTarget = new RenderTarget2D(RenderTarget2DDescription(.R8G8B8A8_UNorm, 100, 100));
_viewportTarget.SamplerState = SamplerStateManager.LinearClamp;
//_viewportTarget = new RenderTarget2D(RenderTarget2DDescription(.R8G8B8A8_UNorm, 100, 100));
//_viewportTarget.SamplerState = SamplerStateManager.LinearClamp;
_viewportTarget = new RenderTargetGroup(.()
{
Width = 100,
Height = 100,
ColorTargetDescriptions = TargetDescription[](
.(.R8G8B8A8_UNorm))
});
_editorIcons = new Texture2D("Textures/EditorIcons.dds");
_editorIcons.SamplerState = SamplerStateManager.AnisotropicClamp;
@@ -114,7 +122,7 @@ namespace GlitchyEditor
RenderCommand.Clear(_viewportTarget, .Color | .Depth, .(0.2f, 0.2f, 0.2f), 1.0f, 0);
RenderCommand.SetRenderTarget(_viewportTarget, 0, true);
RenderCommand.SetRenderTargetGroup(_viewportTarget, true);
RenderCommand.BindRenderTargets();
RenderCommand.SetViewport(Viewport(0, 0, _viewportTarget.Width, _viewportTarget.Height));