From e72661e6d53cb1ee250048b3c948382d257e967f Mon Sep 17 00:00:00 2001 From: Jonas Haller Date: Mon, 8 Nov 2021 15:52:59 +0100 Subject: [PATCH 1/2] Initializing branch --- .../RenderToTexture/Core/Assets/FuseeText.png | Bin 0 -> 4009 bytes .../Core/Assets/Lato-Black.ttf | Bin 0 -> 114588 bytes ...Fusee.Examples.RenderToTexture.Core.csproj | 26 ++ .../RenderToTexture/Core/RenderToTexture.cs | 228 ++++++++++++++++++ ...ee.Examples.RenderToTexture.Desktop.csproj | 14 ++ .../RenderToTexture/Desktop/FuseeLogo.ico | Bin 0 -> 113246 bytes .../Complete/RenderToTexture/Desktop/Main.cs | 63 +++++ Fusee.sln | 203 +++++++++++++++- src/Engine/Core/Effects/SurfaceEffectInput.cs | 25 +- src/Engine/Core/FusSceneConverter.cs | 24 +- 10 files changed, 562 insertions(+), 21 deletions(-) create mode 100644 Examples/Complete/RenderToTexture/Core/Assets/FuseeText.png create mode 100644 Examples/Complete/RenderToTexture/Core/Assets/Lato-Black.ttf create mode 100644 Examples/Complete/RenderToTexture/Core/Fusee.Examples.RenderToTexture.Core.csproj create mode 100644 Examples/Complete/RenderToTexture/Core/RenderToTexture.cs create mode 100644 Examples/Complete/RenderToTexture/Desktop/Fusee.Examples.RenderToTexture.Desktop.csproj create mode 100644 Examples/Complete/RenderToTexture/Desktop/FuseeLogo.ico create mode 100644 Examples/Complete/RenderToTexture/Desktop/Main.cs diff --git a/Examples/Complete/RenderToTexture/Core/Assets/FuseeText.png b/Examples/Complete/RenderToTexture/Core/Assets/FuseeText.png new file mode 100644 index 0000000000000000000000000000000000000000..af5ffb051429032bdc106a7c45f2446f0784eecc GIT binary patch literal 4009 zcmV;a4_5GrP)*z$frJ_hut?~Z>uviqn`c-Hd729lAUO>?KlZ38qb&E@fB>J_1t@T85eJe z#KUf+IU))_2i8td3cW}tk#tDokb-68(T8*fsSs%{(l9UTaun%hY`lD-i)@4ZDjQLo zWrCGiMFH<`1?w|YS$RkYkV^WU-kkB8oAB^3(#0UJP2`{xX)jm@8$Fv&!MrK25d&N^ z5$PR#_F>o*FFBtOlDK~X5lm~tP#Y6PQK~`v;_7 zBgJ`92HiW`Mt0O-{$JzqbEK(AfAu1NZ;Gulj~ZT18q#&wzIzASza+KoN1 zYikJ<=hcC}xf9yXbunr;^!TLW0f>u`(vfLn@wgc&N$5h-aN|bkU}%C4B4fiKB2t4L zVV&JAmVW5%wm@flFBq}?s4b1H-Re9+fFUAE3&Tf6!LX5$NKr7Hj<)}wzIhCe{!k-$ zuMp$XigJJ82BFO)~n*Dy`i{)_j;>mEf zsud3AR*25ySWXRmzOK;m|6tRj5E~nTd6Yv{wO({SA7$sk$-GAAq&vZ?XNGdGr4GoL zI}#>M83v;#4uQ~c@dlfoE;H1hF+xqb0V;oLfwID8FzNZ3dF_TpkagE|sH-Kr=~Rf}GI!Wl2m=<_-jsv?q?Z^_5?t=6D&% zqCoIuY$P!oZ~xQXZD!I|6C!Py{M{E0L0yGG^z|L4^U^%fgiGwuaEOixmv!&vf8-<6 zp6`%a6b5fA3k~W7<->Zubh2;-Vg#mO*aCwyXqlRrmdn_DP~E7Ye*cr(!A219ijypH zFGMKyAmt^^U^ZLWGPGR84cEcq-=xE}x2Hnk{#rP+qY^4htgpKyc|9*W$Y-F8%SJ-- zG|%p@lwIg4PoFbxxK7KYjVE+<^s-L# zO%0SoKfW&&AFGEcmyYr}FLG9ye#K};)Ny-0D}y3rWYM#NMCPILG+NL7z~h_YfHyiW zd4WkhKj70zcsY|-@%x?|*dP7vHT$8W*nRhkm?_hz;Nha|HQ&O2cHE(8F{367f!m&# z0SzmRuM`y5FlRSIvienRu?yPwfD*@GAP)!>KdCQ>Fbl`e#vK&I=HJ6 zwrnZ{O`P((XA;Il!#&T=hFnx1w!Bj`z`*@^ue%4dj@#ZY&q>|c-7h9C%%PJ?UGWq0 zGk#*_7Fcv=DqL~15<86CG5fl4sA6eQ=j7Su=BHi>wAFX-S2ax=ar@-k-s2v`S;@{LxTa(8SDVfrdbk^#Lt$ zYbtFkZW8TSLxxAd9Z%0>&e+#vO@^a|RnXXMlB_cu&UyCoFFH`ioMGl%KMv+EnE=so z$};fPE0Q7q`zn{mw@W_NnJ2(Rt_;RiugOY}i!jXyAboZcqb9wHkyMxr-Kb;pduI(D zp<{39jWs4zCoIg_d;eDzka_t?wu518iZYv?hbBZahw`dZ;

Af&lPq6>nAW!+^`r zIqNse0{IdMVdXr>6?VrKAxB0%YuS}cHoh=q<_M9kIz*F>d=AQ3Ht?@vlAs= zbCYywsRYV-%yV`uT$%!@>4}iNc?mq0^@ZDc(tY21=|{*~H4RohGY{H~oltqU1z!%O z@6(D=Nd2G2ecLPIrB zc--@<7$1T{I95r&Srz=I(0F zhZU4C;T{z4$HoIQiI7_7mOnU3`S%ZFjb zqtltbrX+g0&9LdUd??PX7raJ`Q|%?wtmRhK_;x{nHl}{~YM!^-T@*#2jh8^QDlnkb z)uVK|6@TtQV#Z7|RR8zyM_}Gf6X4q0Qxu6=)^OGcA7+|{5E#h+>t=y1afx{kA@i;TYgkXMH4T`)ODjRw-<1aGvlC@a zpJb3H=k2{nJS#WFwlbf$Cs1sO+?)!Cjt^%NQE8B>lE0^lIqwKXYIKJBTX+1<4la;x z4paH10L%Lv8*M56+ypig8KI@Fov98Z#zZkUz|6TLMLD_DpKW7dOn=;UMriwW4$?BP zhVgeWZqbi*aL4@jnZ%`U z$MT4yo3Ts^W53k3F2H;Ti1vJ1#?r|Dm&&AI&M_#FX{!>YX|cU1sv}7NdYS9)Ff&zv zbl2uu6V#TsvHE$ycBFk^jegFs=I*WV`sh7iG<31x(7uH8z&5q@z%?mvvVecyY#J2< zp12Bb1$tuK{owR1hEqlIJ++)bmVN2#p1_#57#V2>{(K7QN#J})gBYr=qK%OZ(5lR8 zEaN*)`t3-sf;D8mpb?Z9$j;0PfsDj|LV6pl1C@5VvKg?gwHry1zL1Q{lWNB>av+DB z;E8cxK)L~(qS<%}nrj~K_d?geTWKzRjy_}oR^}y!iu9sRG?2(QlOq9Ehq#pT#wm*daZ z!TPBnxfTdwRElfA2J_r5GY@XvNNWEM>-Q`k$?`xt>3k$H$|f-cxy;eB@=p2~iHPz@ z)X=xK=mREEwzB9mR5Sx*fQRov3;-I;WUQq~E!%AM;hX;-1Z$M|RbG@O2h=tcjDzOx zdEmPbweW$~$f?br=R4_<8L<(mQOUK8DlG2}1XUJ+&hQ$TFD+l$8H%RzDM)EZ6q$}b zGD4OJQfg`HC54o%1*Kj}eR3YyZX*WUhvsOlcQg{M3Dep-rI9*AZA{ZVwE^8rgMhqo zDycr0-+&6E?F)-E1HOP|Q9r1~K#sn{a;YtSHPdim!E!zNL5h;1HmT$v$5@fTI+7dJ zVH>GkHYwIeZRG2+{Nhw=V_=m6BM*##U4R(GAUt7^aR+fhVvunMaY5pLiyPDo9FWI2 P00000NkvXXu0mjfDowSt literal 0 HcmV?d00001 diff --git a/Examples/Complete/RenderToTexture/Core/Assets/Lato-Black.ttf b/Examples/Complete/RenderToTexture/Core/Assets/Lato-Black.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6848db0d1acf36f95ee7dc0130eab9e6fb1d19a6 GIT binary patch literal 114588 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 Fe*xhL&Wiv5 literal 0 HcmV?d00001 diff --git a/Examples/Complete/RenderToTexture/Core/Fusee.Examples.RenderToTexture.Core.csproj b/Examples/Complete/RenderToTexture/Core/Fusee.Examples.RenderToTexture.Core.csproj new file mode 100644 index 000000000..bacfac2ae --- /dev/null +++ b/Examples/Complete/RenderToTexture/Core/Fusee.Examples.RenderToTexture.Core.csproj @@ -0,0 +1,26 @@ + + + netstandard2.1 + $(BaseOutputPath)\Examples\Simple\Core\ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Examples/Complete/RenderToTexture/Core/RenderToTexture.cs b/Examples/Complete/RenderToTexture/Core/RenderToTexture.cs new file mode 100644 index 000000000..7761e4946 --- /dev/null +++ b/Examples/Complete/RenderToTexture/Core/RenderToTexture.cs @@ -0,0 +1,228 @@ +using Fusee.Base.Common; +using Fusee.Base.Core; +using Fusee.Engine.Common; +using Fusee.Engine.Core; +using Fusee.Engine.Core.Effects; +using Fusee.Engine.Core.Scene; +using Fusee.Engine.Core.ShaderShards; +using Fusee.Engine.GUI; +using Fusee.Math.Core; +using Fusee.Xene; +using System.Collections.Generic; +using System.Linq; +using static Fusee.Engine.Core.Input; +using static Fusee.Engine.Core.Time; + +namespace Fusee.Examples.RenderToTexture.Core +{ + [FuseeApplication(Name = "FUSEE Texture Rendering Example", Description = "An example on how to render a camera to a texture.")] + public class RenderToTexture : RenderCanvas + { + // angle variables + private static float _angleHorz = M.PiOver3, _angleVert = -M.PiOver6 * 0.5f, _angleVelHorz, _angleVelVert; + + private const float RotationSpeed = 7; + private const float Damping = 0.8f; + + private SceneContainer _rocketScene; + private SceneRendererForward _sceneRenderer; + + private const float ZNear = 1f; + private const float ZFar = 1000; + private readonly float _fovy = M.PiOver4; + + private SceneRendererForward _guiRenderer; + private SceneContainer _gui; + private SceneInteractionHandler _sih; + private readonly CanvasRenderMode _canvasRenderMode = CanvasRenderMode.Screen; + + private bool _keys; + + // Init is called on startup. + public override void Init() + { + _gui = CreateGui(); + + // Create the interaction handler + _sih = new SceneInteractionHandler(_gui); + + // Set the clear color for the backbuffer to white (100% intensity in all color channels R, G, B, A). + RC.ClearColor = new float4(1, 1, 1, 1); + + // Load the rocket model + _rocketScene = AssetStorage.Get("RocketFus.fus"); + + // Wrap a SceneRenderer around the model. + _sceneRenderer = new SceneRendererForward(_rocketScene); + _guiRenderer = new SceneRendererForward(_gui); + } + + // RenderAFrame is called once a frame + public override void RenderAFrame() + { + // Clear the backbuffer + RC.Clear(ClearFlags.Color | ClearFlags.Depth); + + RC.Viewport(0, 0, Width, Height); + + // Mouse and keyboard movement + if (Keyboard.LeftRightAxis != 0 || Keyboard.UpDownAxis != 0) + { + _keys = true; + } + + if (Mouse.LeftButton) + { + _keys = false; + _angleVelHorz = -RotationSpeed * Mouse.XVel * DeltaTime * 0.0005f; + _angleVelVert = -RotationSpeed * Mouse.YVel * DeltaTime * 0.0005f; + } + else if (Touch.GetTouchActive(TouchPoints.Touchpoint_0)) + { + _keys = false; + var touchVel = Touch.GetVelocity(TouchPoints.Touchpoint_0); + _angleVelHorz = -RotationSpeed * touchVel.x * DeltaTime * 0.0005f; + _angleVelVert = -RotationSpeed * touchVel.y * DeltaTime * 0.0005f; + } + else + { + if (_keys) + { + _angleVelHorz = -RotationSpeed * Keyboard.LeftRightAxis * DeltaTime; + _angleVelVert = -RotationSpeed * Keyboard.UpDownAxis * DeltaTime; + } + else + { + var curDamp = (float)System.Math.Exp(-Damping * DeltaTime); + _angleVelHorz *= curDamp; + _angleVelVert *= curDamp; + } + } + + _angleHorz += _angleVelHorz; + _angleVert += _angleVelVert; + + // Create the camera matrix and set it as the current ModelView transformation + var mtxRot = float4x4.CreateRotationX(_angleVert) * float4x4.CreateRotationY(_angleHorz); + var mtxCam = float4x4.LookAt(0, +2, -10, 0, +2, 0, 0, 1, 0); + + var view = mtxCam * mtxRot; + var perspective = float4x4.CreatePerspectiveFieldOfView(_fovy, (float)Width / Height, ZNear, ZFar); + var orthographic = float4x4.CreateOrthographic(Width, Height, ZNear, ZFar); + + // Render the scene loaded in Init() + RC.View = view; + RC.Projection = perspective; + _sceneRenderer.Render(RC); + + //Constantly check for interactive objects. + + RC.Projection = orthographic; + if (!Mouse.Desc.Contains("Android")) + _sih.CheckForInteractiveObjects(RC, Mouse.Position, Width, Height); + if (Touch.GetTouchActive(TouchPoints.Touchpoint_0) && !Touch.TwoPoint) + { + _sih.CheckForInteractiveObjects(RC, Touch.GetPosition(TouchPoints.Touchpoint_0), Width, Height); + } + + _guiRenderer.Render(RC); + + // Swap buffers: Show the contents of the backbuffer (containing the currently rendered frame) on the front buffer. + Present(); + } + + private SceneContainer CreateGui() + { + var vsTex = AssetStorage.Get("texture.vert"); + var psTex = AssetStorage.Get("texture.frag"); + var psText = AssetStorage.Get("text.frag"); + + var canvasWidth = Width / 100f; + var canvasHeight = Height / 100f; + + var btnFuseeLogo = new GUIButton + { + Name = "Canvas_Button" + }; + btnFuseeLogo.OnMouseEnter += BtnLogoEnter; + btnFuseeLogo.OnMouseExit += BtnLogoExit; + btnFuseeLogo.OnMouseDown += BtnLogoDown; + + var guiFuseeLogo = new Texture(AssetStorage.Get("FuseeText.png")); + var fuseeLogo = new TextureNode( + "fuseeLogo", + vsTex, + psTex, + //Set the albedo texture you want to use. + guiFuseeLogo, + //Define anchor points. They are given in percent, seen from the lower left corner, respectively to the width/height of the parent. + //In this setup the element will stretch horizontally but stay the same vertically if the parent element is scaled. + UIElementPosition.GetAnchors(AnchorPos.TopTopLeft), + //Define Offset and therefor the size of the element. + UIElementPosition.CalcOffsets(AnchorPos.TopTopLeft, new float2(0, canvasHeight - 0.5f), canvasHeight, canvasWidth, new float2(1.75f, 0.5f)), + float2.One + ); + fuseeLogo.AddComponent(btnFuseeLogo); + + var fontLato = AssetStorage.Get("Lato-Black.ttf"); + var guiLatoBlack = new FontMap(fontLato, 24); + + var text = new TextNode( + "FUSEE Simple Example", + "ButtonText", + vsTex, + psText, + UIElementPosition.GetAnchors(AnchorPos.StretchHorizontal), + UIElementPosition.CalcOffsets(AnchorPos.StretchHorizontal, new float2(canvasWidth / 2 - 4, 0), canvasHeight, canvasWidth, new float2(8, 1)), + guiLatoBlack, + (float4)ColorUint.Greenery, + HorizontalTextAlignment.Center, + VerticalTextAlignment.Center); + + var canvas = new CanvasNode( + "Canvas", + _canvasRenderMode, + new MinMaxRect + { + Min = new float2(-canvasWidth / 2, -canvasHeight / 2f), + Max = new float2(canvasWidth / 2, canvasHeight / 2f) + }) + { + Children = new ChildList() + { + //Simple Texture Node, contains the fusee logo. + fuseeLogo, + text + } + }; + + return new SceneContainer + { + Children = new List + { + //Add canvas. + canvas + } + }; + } + + public void BtnLogoEnter(CodeComponent sender) + { + var effect = _gui.Children.FindNodes(node => node.Name == "fuseeLogo").First().GetComponent(); + effect.SetFxParam(UniformNameDeclarations.Albedo, (float4)ColorUint.Black); + effect.SetFxParam(UniformNameDeclarations.AlbedoMix, 0.8f); + } + + public void BtnLogoExit(CodeComponent sender) + { + var effect = _gui.Children.FindNodes(node => node.Name == "fuseeLogo").First().GetComponent(); + effect.SetFxParam(UniformNameDeclarations.Albedo, float4.One); + effect.SetFxParam(UniformNameDeclarations.AlbedoMix, 1f); + } + + public void BtnLogoDown(CodeComponent sender) + { + OpenLink("http://fusee3d.org"); + } + } +} \ No newline at end of file diff --git a/Examples/Complete/RenderToTexture/Desktop/Fusee.Examples.RenderToTexture.Desktop.csproj b/Examples/Complete/RenderToTexture/Desktop/Fusee.Examples.RenderToTexture.Desktop.csproj new file mode 100644 index 000000000..42c7a0884 --- /dev/null +++ b/Examples/Complete/RenderToTexture/Desktop/Fusee.Examples.RenderToTexture.Desktop.csproj @@ -0,0 +1,14 @@ + + + netcoreapp3.1 + Exe + $(BaseOutputPath)\Examples\Simple\Desktop\ + + + + + + + + + \ No newline at end of file diff --git a/Examples/Complete/RenderToTexture/Desktop/FuseeLogo.ico b/Examples/Complete/RenderToTexture/Desktop/FuseeLogo.ico new file mode 100644 index 0000000000000000000000000000000000000000..dbdc5bc33048f406734a624df530aec169067ee4 GIT binary patch literal 113246 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 + { + if (!Path.GetExtension(id).Contains("ttf", System.StringComparison.OrdinalIgnoreCase)) return null; + return new Font { _fontImp = new FontImp((Stream)storage) }; + }, + Checker = id => Path.GetExtension(id).Contains("ttf", System.StringComparison.OrdinalIgnoreCase) + }); + fap.RegisterTypeHandler( + new AssetHandler + { + ReturnedType = typeof(SceneContainer), + Decoder = (string id, object storage) => + { + if (!Path.GetExtension(id).Contains("fus", System.StringComparison.OrdinalIgnoreCase)) return null; + return FusSceneConverter.ConvertFrom(ProtoBuf.Serializer.Deserialize((Stream)storage), id); + }, + Checker = id => Path.GetExtension(id).Contains("fus", System.StringComparison.OrdinalIgnoreCase) + }); + + AssetStorage.RegisterProvider(fap); + + var app = new Core.RenderToTexture(); + + // Inject Fusee.Engine InjectMe dependencies (hard coded) + System.Drawing.Icon appIcon = System.Drawing.Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location); + app.CanvasImplementor = new Fusee.Engine.Imp.Graphics.Desktop.RenderCanvasImp(appIcon); + app.ContextImplementor = new Fusee.Engine.Imp.Graphics.Desktop.RenderContextImp(app.CanvasImplementor); + Input.AddDriverImp(new Fusee.Engine.Imp.Graphics.Desktop.RenderCanvasInputDriverImp(app.CanvasImplementor)); + Input.AddDriverImp(new Fusee.Engine.Imp.Graphics.Desktop.WindowsTouchInputDriverImp(app.CanvasImplementor)); + // app.InputImplementor = new Fusee.Engine.Imp.Graphics.Desktop.InputImp(app.CanvasImplementor); + // app.AudioImplementor = new Fusee.Engine.Imp.Sound.Desktop.AudioImp(); + // app.NetworkImplementor = new Fusee.Engine.Imp.Network.Desktop.NetworkImp(); + // app.InputDriverImplementor = new Fusee.Engine.Imp.Input.Desktop.InputDriverImp(); + // app.VideoManagerImplementor = ImpFactory.CreateIVideoManagerImp(); + + // Start the app + app.Run(); + } + } +} \ No newline at end of file diff --git a/Fusee.sln b/Fusee.sln index 5caf88174..98604fffc 100644 --- a/Fusee.sln +++ b/Fusee.sln @@ -247,7 +247,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Scene", "Scene", "{A9EE99FE EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Components", "Components", "{87F19962-A219-45D7-AB71-C0E3618CCF41}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Fusee.Test.Scene.Components", "src\Tests\Scene\Components\Fusee.Test.Scene.Components\Fusee.Test.Scene.Components.csproj", "{45F790CB-C1C5-4CC3-AAB2-788696BC65E4}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Fusee.Test.Scene.Components", "src\Tests\Scene\Components\Fusee.Test.Scene.Components\Fusee.Test.Scene.Components.csproj", "{45F790CB-C1C5-4CC3-AAB2-788696BC65E4}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "GameWindow", "GameWindow", "{ED2FBF72-1E63-4DDE-8646-9008F2BF3CAC}" EndProject @@ -259,6 +259,14 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Fusee.Examples.Starkiller.C EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Fusee.Examples.Starkiller.Desktop", "Examples\Complete\Starkiller\Desktop\Fusee.Examples.Starkiller.Desktop.csproj", "{6629EF3B-DA6B-4217-8A21-2B3A0863FBF9}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Fusee.Examples.RenderToTexture.Core", "Examples\Complete\RenderToTexture\Core\Fusee.Examples.RenderToTexture.Core.csproj", "{53781070-8492-444A-A3A6-5D5210C1CD68}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "RenderToTexture", "RenderToTexture", "{EA29105D-BE52-48C1-B468-864FED1C03C3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Fusee.Examples.RenderToTexture.Android", "Examples\Complete\RenderToTexture\Android\Fusee.Examples.RenderToTexture.Android.csproj", "{810E3CE0-2CE6-4BF9-B512-837FC7C3771F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Fusee.Examples.RenderToTexture.Desktop", "Examples\Complete\RenderToTexture\Desktop\Fusee.Examples.RenderToTexture.Desktop.csproj", "{E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}" +EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution src\Engine\Imp\Graphics\Shared\Fusee.Engine.Imp.Graphics.Shared.projitems*{253263c9-9c67-44a5-94d3-51c586bbdaec}*SharedItemsImports = 13 @@ -4713,6 +4721,195 @@ Global {6629EF3B-DA6B-4217-8A21-2B3A0863FBF9}.Release-WebAsm|x64.Build.0 = Release|Any CPU {6629EF3B-DA6B-4217-8A21-2B3A0863FBF9}.Release-WebAsm|x86.ActiveCfg = Release|Any CPU {6629EF3B-DA6B-4217-8A21-2B3A0863FBF9}.Release-WebAsm|x86.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug|x64.ActiveCfg = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug|x64.Build.0 = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug|x86.ActiveCfg = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug|x86.Build.0 = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-Android|Any CPU.ActiveCfg = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-Android|Any CPU.Build.0 = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-Android|x64.ActiveCfg = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-Android|x64.Build.0 = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-Android|x86.ActiveCfg = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-Android|x86.Build.0 = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-Desktop|Any CPU.ActiveCfg = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-Desktop|Any CPU.Build.0 = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-Desktop|x64.ActiveCfg = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-Desktop|x64.Build.0 = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-Desktop|x86.ActiveCfg = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-Desktop|x86.Build.0 = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-WebAsm|Any CPU.ActiveCfg = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-WebAsm|Any CPU.Build.0 = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-WebAsm|x64.ActiveCfg = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-WebAsm|x64.Build.0 = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-WebAsm|x86.ActiveCfg = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Debug-WebAsm|x86.Build.0 = Debug|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release|Any CPU.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release|x64.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release|x64.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release|x86.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release|x86.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-Android|Any CPU.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-Android|Any CPU.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-Android|x64.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-Android|x64.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-Android|x86.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-Android|x86.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-Desktop|Any CPU.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-Desktop|Any CPU.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-Desktop|x64.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-Desktop|x64.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-Desktop|x86.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-Desktop|x86.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-NuGet|Any CPU.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-NuGet|Any CPU.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-NuGet|x64.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-NuGet|x64.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-NuGet|x86.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-NuGet|x86.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-WebAsm|Any CPU.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-WebAsm|Any CPU.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-WebAsm|x64.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-WebAsm|x64.Build.0 = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-WebAsm|x86.ActiveCfg = Release|Any CPU + {53781070-8492-444A-A3A6-5D5210C1CD68}.Release-WebAsm|x86.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug|x64.ActiveCfg = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug|x64.Build.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug|x64.Deploy.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug|x86.ActiveCfg = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug|x86.Build.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug|x86.Deploy.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Android|Any CPU.ActiveCfg = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Android|Any CPU.Build.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Android|Any CPU.Deploy.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Android|x64.ActiveCfg = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Android|x64.Build.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Android|x64.Deploy.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Android|x86.ActiveCfg = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Android|x86.Build.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Android|x86.Deploy.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Desktop|Any CPU.ActiveCfg = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Desktop|Any CPU.Build.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Desktop|Any CPU.Deploy.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Desktop|x64.ActiveCfg = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Desktop|x64.Build.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Desktop|x64.Deploy.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Desktop|x86.ActiveCfg = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Desktop|x86.Build.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-Desktop|x86.Deploy.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-WebAsm|Any CPU.ActiveCfg = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-WebAsm|Any CPU.Build.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-WebAsm|Any CPU.Deploy.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-WebAsm|x64.ActiveCfg = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-WebAsm|x64.Build.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-WebAsm|x64.Deploy.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-WebAsm|x86.ActiveCfg = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-WebAsm|x86.Build.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Debug-WebAsm|x86.Deploy.0 = Debug|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release|Any CPU.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release|Any CPU.Deploy.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release|x64.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release|x64.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release|x64.Deploy.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release|x86.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release|x86.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release|x86.Deploy.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Android|Any CPU.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Android|Any CPU.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Android|Any CPU.Deploy.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Android|x64.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Android|x64.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Android|x64.Deploy.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Android|x86.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Android|x86.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Android|x86.Deploy.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Desktop|Any CPU.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Desktop|Any CPU.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Desktop|Any CPU.Deploy.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Desktop|x64.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Desktop|x64.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Desktop|x64.Deploy.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Desktop|x86.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Desktop|x86.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-Desktop|x86.Deploy.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-NuGet|Any CPU.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-NuGet|Any CPU.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-NuGet|Any CPU.Deploy.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-NuGet|x64.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-NuGet|x64.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-NuGet|x64.Deploy.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-NuGet|x86.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-NuGet|x86.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-NuGet|x86.Deploy.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-WebAsm|Any CPU.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-WebAsm|Any CPU.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-WebAsm|Any CPU.Deploy.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-WebAsm|x64.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-WebAsm|x64.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-WebAsm|x64.Deploy.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-WebAsm|x86.ActiveCfg = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-WebAsm|x86.Build.0 = Release|Any CPU + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F}.Release-WebAsm|x86.Deploy.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug|x64.ActiveCfg = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug|x64.Build.0 = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug|x86.ActiveCfg = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug|x86.Build.0 = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-Android|Any CPU.ActiveCfg = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-Android|Any CPU.Build.0 = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-Android|x64.ActiveCfg = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-Android|x64.Build.0 = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-Android|x86.ActiveCfg = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-Android|x86.Build.0 = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-Desktop|Any CPU.ActiveCfg = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-Desktop|Any CPU.Build.0 = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-Desktop|x64.ActiveCfg = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-Desktop|x64.Build.0 = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-Desktop|x86.ActiveCfg = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-Desktop|x86.Build.0 = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-WebAsm|Any CPU.ActiveCfg = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-WebAsm|Any CPU.Build.0 = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-WebAsm|x64.ActiveCfg = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-WebAsm|x64.Build.0 = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-WebAsm|x86.ActiveCfg = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Debug-WebAsm|x86.Build.0 = Debug|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release|Any CPU.Build.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release|x64.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release|x64.Build.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release|x86.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release|x86.Build.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-Android|Any CPU.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-Android|Any CPU.Build.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-Android|x64.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-Android|x64.Build.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-Android|x86.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-Android|x86.Build.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-Desktop|Any CPU.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-Desktop|Any CPU.Build.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-Desktop|x64.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-Desktop|x64.Build.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-Desktop|x86.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-Desktop|x86.Build.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-NuGet|Any CPU.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-NuGet|Any CPU.Build.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-NuGet|x64.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-NuGet|x64.Build.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-NuGet|x86.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-NuGet|x86.Build.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-WebAsm|Any CPU.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-WebAsm|Any CPU.Build.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-WebAsm|x64.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-WebAsm|x64.Build.0 = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-WebAsm|x86.ActiveCfg = Release|Any CPU + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7}.Release-WebAsm|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -4830,6 +5027,10 @@ Global {C8A57860-4A53-46BA-969D-02EB861B3309} = {E68628DA-312F-4171-A5ED-08072B5CCA3C} {E3CA0E6F-729D-4C5E-B3B0-E328F48C33CD} = {C8A57860-4A53-46BA-969D-02EB861B3309} {6629EF3B-DA6B-4217-8A21-2B3A0863FBF9} = {C8A57860-4A53-46BA-969D-02EB861B3309} + {53781070-8492-444A-A3A6-5D5210C1CD68} = {EA29105D-BE52-48C1-B468-864FED1C03C3} + {EA29105D-BE52-48C1-B468-864FED1C03C3} = {E68628DA-312F-4171-A5ED-08072B5CCA3C} + {810E3CE0-2CE6-4BF9-B512-837FC7C3771F} = {EA29105D-BE52-48C1-B468-864FED1C03C3} + {E114ECBB-4231-4DA9-BC63-AE6A46C0DFD7} = {EA29105D-BE52-48C1-B468-864FED1C03C3} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {CC1775C2-579F-4897-8770-592966D00E3D} diff --git a/src/Engine/Core/Effects/SurfaceEffectInput.cs b/src/Engine/Core/Effects/SurfaceEffectInput.cs index 931e22be8..012e5ab5a 100644 --- a/src/Engine/Core/Effects/SurfaceEffectInput.cs +++ b/src/Engine/Core/Effects/SurfaceEffectInput.cs @@ -1,4 +1,5 @@ using Fusee.Math.Core; +using Fusee.Engine.Common; using System; namespace Fusee.Engine.Core.Effects @@ -279,7 +280,7 @@ public float AlbedoMix ///

/// The albedo texture. /// - public Texture AlbedoTex + public ITextureBase AlbedoTex { get => _albedoTex; set @@ -291,12 +292,12 @@ public Texture AlbedoTex } } } - private Texture _albedoTex; + private ITextureBase _albedoTex; /// /// The normal texture. /// - public Texture NormalTex + public ITextureBase NormalTex { get => _normalTex; set @@ -308,7 +309,7 @@ public Texture NormalTex } } } - private Texture _normalTex; + private ITextureBase _normalTex; /// /// The normal texture. @@ -371,7 +372,7 @@ public float AlbedoMix /// /// The albedo texture. /// - public Texture AlbedoTex + public ITextureBase AlbedoTex { get => _albedoTex; set @@ -383,7 +384,7 @@ public Texture AlbedoTex } } } - private Texture _albedoTex; + private ITextureBase _albedoTex; /// /// The normal texture. @@ -412,7 +413,7 @@ public class TextureInputColor : TextureInputColorUnlit /// /// The normal texture. /// - public Texture NormalTex + public ITextureBase NormalTex { get => _normalTex; set @@ -424,7 +425,7 @@ public Texture NormalTex } } } - private Texture _normalTex; + private ITextureBase _normalTex; /// /// The normal texture. @@ -470,7 +471,7 @@ public float AlbedoMix /// /// The albedo texture. /// - public Texture AlbedoTex + public ITextureBase AlbedoTex { get => _albedoTex; set @@ -482,12 +483,12 @@ public Texture AlbedoTex } } } - private Texture _albedoTex; + private ITextureBase _albedoTex; /// /// The normal texture. /// - public Texture NormalTex + public ITextureBase NormalTex { get => _normalTex; set @@ -499,7 +500,7 @@ public Texture NormalTex } } } - private Texture _normalTex; + private ITextureBase _normalTex; /// /// The normal texture. diff --git a/src/Engine/Core/FusSceneConverter.cs b/src/Engine/Core/FusSceneConverter.cs index 7a211be3c..547c7fffe 100644 --- a/src/Engine/Core/FusSceneConverter.cs +++ b/src/Engine/Core/FusSceneConverter.cs @@ -1018,17 +1018,21 @@ public void ConvEffect(DefaultSurfaceEffect effect) Color = surfaceInput.Albedo }; - if (surfaceInput.AlbedoTex != null) + if (surfaceInput.AlbedoTex != null && surfaceInput.AlbedoTex is Texture) { + Texture albedoTex = surfaceInput.AlbedoTex as Texture; + mat.Albedo.Mix = surfaceInput.AlbedoMix; - mat.Albedo.Texture = surfaceInput.AlbedoTex?.PathAndName; + mat.Albedo.Texture = albedoTex?.PathAndName; } - if (surfaceInput.NormalTex != null) + if (surfaceInput.NormalTex != null && surfaceInput.NormalTex is Texture) { + Texture normalTex = surfaceInput.NormalTex as Texture; + mat.NormalMap = new NormapMapChannel() { - Texture = surfaceInput.NormalTex.PathAndName, + Texture = normalTex.PathAndName, Intensity = surfaceInput.NormalMappingStrength }; } @@ -1080,17 +1084,21 @@ public void ConvEffect(DefaultSurfaceEffect effect) Color = surfaceInput.Albedo }; - if (surfaceInput.AlbedoTex != null) + if (surfaceInput.AlbedoTex != null && surfaceInput.AlbedoTex is Texture) { + Texture albedoTex = surfaceInput.AlbedoTex as Texture; + mat.Albedo.Mix = surfaceInput.AlbedoMix; - mat.Albedo.Texture = surfaceInput.AlbedoTex?.PathAndName; + mat.Albedo.Texture = albedoTex?.PathAndName; } - if (surfaceInput.NormalTex != null) + if (surfaceInput.NormalTex != null && surfaceInput.NormalTex is Texture) { + Texture normalTex = surfaceInput.NormalTex as Texture; + mat.NormalMap = new NormapMapChannel() { - Texture = surfaceInput.NormalTex.PathAndName, + Texture = normalTex.PathAndName, Intensity = surfaceInput.NormalMappingStrength }; } From 364faaa6fe2ca4309b5914185913ee27bfe8ec51 Mon Sep 17 00:00:00 2001 From: Jonas Haller Date: Mon, 15 Nov 2021 20:36:03 +0100 Subject: [PATCH 2/2] Set up example scene and SurfaceEffect --- .../RenderToTexture/Core/RenderToTexture.cs | 208 ++++++++++++------ src/Engine/Core/MakeEffect.cs | 15 ++ 2 files changed, 151 insertions(+), 72 deletions(-) diff --git a/Examples/Complete/RenderToTexture/Core/RenderToTexture.cs b/Examples/Complete/RenderToTexture/Core/RenderToTexture.cs index 7761e4946..0ea459bc1 100644 --- a/Examples/Complete/RenderToTexture/Core/RenderToTexture.cs +++ b/Examples/Complete/RenderToTexture/Core/RenderToTexture.cs @@ -18,30 +18,110 @@ namespace Fusee.Examples.RenderToTexture.Core [FuseeApplication(Name = "FUSEE Texture Rendering Example", Description = "An example on how to render a camera to a texture.")] public class RenderToTexture : RenderCanvas { - // angle variables - private static float _angleHorz = M.PiOver3, _angleVert = -M.PiOver6 * 0.5f, _angleVelHorz, _angleVelVert; - - private const float RotationSpeed = 7; - private const float Damping = 0.8f; - - private SceneContainer _rocketScene; + private SceneContainer _scene; private SceneRendererForward _sceneRenderer; - private const float ZNear = 1f; - private const float ZFar = 1000; - private readonly float _fovy = M.PiOver4; - private SceneRendererForward _guiRenderer; private SceneContainer _gui; private SceneInteractionHandler _sih; private readonly CanvasRenderMode _canvasRenderMode = CanvasRenderMode.Screen; - private bool _keys; + private readonly Engine.Core.Scene.Camera _renderCam = new Engine.Core.Scene.Camera(ProjectionMethod.Perspective, 5, 100, M.PiOver4); + private readonly Engine.Core.Scene.Camera _mainCam = new Engine.Core.Scene.Camera(ProjectionMethod.Perspective, 1, 1000, M.PiOver4); + private Transform _renderCamTransform; + private Transform _mainCamTransform; + + private WritableTexture _renderTexture = new WritableTexture(RenderTargetTextureTypes.Albedo, new ImagePixelFormat(ColorFormat.RGB), 500, 500); // Init is called on startup. public override void Init() { + _mainCam.Viewport = new float4(0, 0, 100, 100); + _mainCam.BackgroundColor = new float4(1f, 1f, 1f, 1); + _mainCam.Layer = 10; + + _renderCam.Viewport = new float4(0, 0, 10, 10); + _renderCam.BackgroundColor = new float4(0f, 0f, 0f, 1); + _renderCam.Layer = 20; + _renderCam.RenderTexture = _renderTexture; + + _mainCamTransform = new Transform() + { + Rotation = new float3(0, 0, 0), + Translation = new float3(0, 20, 20), + Scale = new float3(1, 1, 1), + }; + var rotation = float4x4.LookAt(_mainCamTransform.Translation, new float3(0, -5, 0), float3.UnitY); + _mainCamTransform.Rotate(rotation.RotationComponent()); + + + SceneNode mainCam = new SceneNode() + { + Name = "MainCam", + Components = new List() + { + _mainCamTransform, + _mainCam, + } + }; + + _renderCamTransform = new Transform() + { + Rotation = float3.Zero, + Translation = new float3(0, 5, -20), + Scale = new float3(1, 1, 1), + }; + + SceneNode renderCam = new SceneNode() + { + Name = "RenderCam", + Components = new List() + { + _renderCamTransform, + _renderCam, + MakeEffect.FromDiffuseSpecular(new float4(1,0,0,1), float4.Zero), + new Engine.Core.Primitives.Cube(), + + }, + Children = new ChildList() + { + new SceneNode() + { + Components = new List() + { + new Transform() + { + Scale = new float3(0.5f, 0.5f, 1f), + Translation = new float3(0,0, 1f) + }, + new Engine.Core.Primitives.Cube() + } + } + } + }; + + SceneNode plane = new SceneNode() + { + Name = "Plane", + Components = new List() + { + new Transform + { + Rotation = new float3(0, M.Pi, 0), + Translation = new float3(0, 5, 20), + Scale = float3.One + }, + MakeEffect.FromDiffuseRenderTexture((float4)ColorUint.Red, _renderTexture, new float2(1, 1), .5f), + new Engine.Core.Primitives.Plane() + } + }; + _gui = CreateGui(); + _scene = CreateScene(); + + _scene.Children.Add(mainCam); + _scene.Children.Add(renderCam); + _scene.Children.Add(plane); // Create the interaction handler _sih = new SceneInteractionHandler(_gui); @@ -49,11 +129,8 @@ public override void Init() // Set the clear color for the backbuffer to white (100% intensity in all color channels R, G, B, A). RC.ClearColor = new float4(1, 1, 1, 1); - // Load the rocket model - _rocketScene = AssetStorage.Get("RocketFus.fus"); - // Wrap a SceneRenderer around the model. - _sceneRenderer = new SceneRendererForward(_rocketScene); + _sceneRenderer = new SceneRendererForward(_scene); _guiRenderer = new SceneRendererForward(_gui); } @@ -66,66 +143,12 @@ public override void RenderAFrame() RC.Viewport(0, 0, Width, Height); // Mouse and keyboard movement - if (Keyboard.LeftRightAxis != 0 || Keyboard.UpDownAxis != 0) - { - _keys = true; - } - if (Mouse.LeftButton) - { - _keys = false; - _angleVelHorz = -RotationSpeed * Mouse.XVel * DeltaTime * 0.0005f; - _angleVelVert = -RotationSpeed * Mouse.YVel * DeltaTime * 0.0005f; - } - else if (Touch.GetTouchActive(TouchPoints.Touchpoint_0)) - { - _keys = false; - var touchVel = Touch.GetVelocity(TouchPoints.Touchpoint_0); - _angleVelHorz = -RotationSpeed * touchVel.x * DeltaTime * 0.0005f; - _angleVelVert = -RotationSpeed * touchVel.y * DeltaTime * 0.0005f; - } - else - { - if (_keys) - { - _angleVelHorz = -RotationSpeed * Keyboard.LeftRightAxis * DeltaTime; - _angleVelVert = -RotationSpeed * Keyboard.UpDownAxis * DeltaTime; - } - else - { - var curDamp = (float)System.Math.Exp(-Damping * DeltaTime); - _angleVelHorz *= curDamp; - _angleVelVert *= curDamp; - } - } - - _angleHorz += _angleVelHorz; - _angleVert += _angleVelVert; - - // Create the camera matrix and set it as the current ModelView transformation - var mtxRot = float4x4.CreateRotationX(_angleVert) * float4x4.CreateRotationY(_angleHorz); - var mtxCam = float4x4.LookAt(0, +2, -10, 0, +2, 0, 0, 1, 0); - - var view = mtxCam * mtxRot; - var perspective = float4x4.CreatePerspectiveFieldOfView(_fovy, (float)Width / Height, ZNear, ZFar); - var orthographic = float4x4.CreateOrthographic(Width, Height, ZNear, ZFar); + _mainCamTransform.RotateAround(new float3(0, -50, 0), new float3(0, DeltaTime * 0.2f, 0)); // Render the scene loaded in Init() - RC.View = view; - RC.Projection = perspective; _sceneRenderer.Render(RC); - - //Constantly check for interactive objects. - - RC.Projection = orthographic; - if (!Mouse.Desc.Contains("Android")) - _sih.CheckForInteractiveObjects(RC, Mouse.Position, Width, Height); - if (Touch.GetTouchActive(TouchPoints.Touchpoint_0) && !Touch.TwoPoint) - { - _sih.CheckForInteractiveObjects(RC, Touch.GetPosition(TouchPoints.Touchpoint_0), Width, Height); - } - - _guiRenderer.Render(RC); + //_guiRenderer.Render(RC); // Swap buffers: Show the contents of the backbuffer (containing the currently rendered frame) on the front buffer. Present(); @@ -206,6 +229,47 @@ private SceneContainer CreateGui() }; } + private SceneContainer CreateScene() + { + var scene = new SceneContainer + { + Header = new SceneHeader + { + CreationDate = "November 2021", + CreatedBy = "Jonas Haller", + Generator = "Handcoded with pride :)", + }, + Children = new List { }, + }; + + var rand = new System.Random(); + + for (int i = 0; i < 20; i++) + { + int x = rand.Next(-10, 10); + int y = rand.Next(-10, 10); + int z = rand.Next(-10, 10); + + var cube = new SceneNode + { + Name = "Cube" + i, + Components = new List + { + new Transform { + Translation=new float3(x, y, z), + Scale = float3.One + }, + MakeEffect.FromDiffuseSpecular((float4)ColorUint.Gray, float4.Zero, 4.0f, 1f), + new Engine.Core.Primitives.Cube() + } + }; + + scene.Children.Add(cube); + } + + return scene; + } + public void BtnLogoEnter(CodeComponent sender) { var effect = _gui.Children.FindNodes(node => node.Name == "fuseeLogo").First().GetComponent(); diff --git a/src/Engine/Core/MakeEffect.cs b/src/Engine/Core/MakeEffect.cs index 9d9c2b5e3..1b11e4638 100644 --- a/src/Engine/Core/MakeEffect.cs +++ b/src/Engine/Core/MakeEffect.cs @@ -442,6 +442,21 @@ public static DefaultSurfaceEffect FromDiffuseAlbedoTexture(float4 albedoColor, return new DefaultSurfaceEffect(lighingSetup, input, FragShards.SurfOutBody_Textures(lighingSetup), VertShards.SufOutBody_PosNorm); } + public static DefaultSurfaceEffect FromDiffuseRenderTexture(float4 albedoColor, WritableTexture albedoTex, float2 texTiles, float albedoMix, float roughness = 0f) + { + var input = new TextureInputColor() + { + Albedo = albedoColor, + AlbedoTex = albedoTex, + AlbedoMix = albedoMix, + TexTiles = texTiles, + Roughness = roughness + }; + + var lighingSetup = LightingSetupFlags.DiffuseOnly | LightingSetupFlags.AlbedoTex; + return new DefaultSurfaceEffect(lighingSetup, input, FragShards.SurfOutBody_Textures(lighingSetup), VertShards.SufOutBody_PosNorm); + } + /// /// Builds a simple shader effect with diffuse component. ///