//public override async void ClientInitialize() //{ // await CreateTestTexturePreviewer(); //} private static async Task CreateTestTexturePreviewer() { var sourceTextureResource = new TextureResource("FX/SkinToneMaps/ImageToModify.png"); var lutTextureResource = new TextureResource3D("FX/SkinToneMaps/Lut1.png", depth: 24, isTransparent: false); var lutTexture3D = await Client.Rendering.LoadTexture3D(lutTextureResource); var textureSize = await Client.Rendering.GetTextureSize(sourceTextureResource); var textureWidth = textureSize.X; var textureHeight = textureSize.Y; var renderingTag = nameof(BootstrapperSkinToneRemapping); var renderingMaterial = RenderingMaterial.Create(new EffectResource("ColorLutRemap")); renderingMaterial.EffectParameters.Set("TextureLut", lutTexture3D); var sceneObjectCamera = Client.Scene.CreateSceneObject("Skin tone remapping camera"); var camera = Client.Rendering.CreateCamera(sceneObjectCamera, renderingTag: renderingTag, drawOrder: -10, drawMode: CameraDrawMode.Auto); var renderTarget = Client.Rendering.CreateRenderTexture(renderingTag, textureWidth, textureHeight); camera.RenderTarget = renderTarget; camera.ClearColor = Color.FromArgb(0, 0, 0, 0); camera.SetOrthographicProjection(textureWidth, textureHeight); Client.Rendering.CreateSpriteRenderer(sceneObjectCamera, sourceTextureResource, renderingTag: renderingTag, // draw down spritePivotPoint: (0, 1)) .RenderingMaterial = renderingMaterial; var rectangle = new Rectangle { Width = textureWidth, Height = textureHeight, Fill = Api.Client.UI.CreateImageBrushForRenderTarget(camera.RenderTarget), Stretch = Stretch.Uniform, UseLayoutRounding = true }; Panel.SetZIndex(rectangle, int.MaxValue); Api.Client.UI.LayoutRootChildren.Add(rectangle); }
public static async Task <IRenderTarget2D> ApplyColorizerLut( ProceduralTextureRequest request, ITextureResource sourceTextureResource, string lutTextureFilePath) { var lutTextureResource = new TextureResource3D(lutTextureFilePath, depth: 24, isTransparent: false); var lutTexture3D = await Renderer.LoadTexture3D(lutTextureResource); var textureSize = await Renderer.GetTextureSize(sourceTextureResource); var textureWidth = textureSize.X; var textureHeight = textureSize.Y; var renderingMaterial = RenderingMaterial.Create(new EffectResource("ColorLutRemap")); renderingMaterial.EffectParameters.Set("TextureLut", lutTexture3D); var renderingTag = "Colorizer camera for procedural texture: " + request.TextureName; var cameraObject = Api.Client.Scene.CreateSceneObject(renderingTag); var camera = Renderer.CreateCamera(cameraObject, renderingTag: renderingTag, drawOrder: -10, drawMode: CameraDrawMode.Manual); var renderTarget = Renderer.CreateRenderTexture(renderingTag, textureWidth, textureHeight); camera.RenderTarget = renderTarget; camera.ClearColor = Color.FromArgb(0, 0, 0, 0); camera.SetOrthographicProjection(textureWidth, textureHeight); Renderer.CreateSpriteRenderer(cameraObject, sourceTextureResource, renderingTag: renderingTag, // draw down spritePivotPoint: (0, 1)) .RenderingMaterial = renderingMaterial; await camera.DrawAsync(); cameraObject.Destroy(); request.ThrowIfCancelled(); return(renderTarget); }