Files
Xune/UIX.RenderApi.Skia/Microsoft/Iris/Render/Graphics/Dx9ImageElement.cs
T

45 lines
2.7 KiB
C#
Raw Normal View History

2021-07-11 22:59:29 -05:00
// Decompiled with JetBrains decompiler
// Type: Microsoft.Iris.Render.Graphics.Dx9ImageElement
// Assembly: UIX.RenderApi, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: D47658B8-A8EA-43D6-8837-ECE823BFFFC1
// Assembly location: C:\Program Files\Zune\UIX.RenderApi.dll
using Microsoft.Iris.Library;
namespace Microsoft.Iris.Render.Graphics
{
2021-07-11 23:04:40 -05:00
internal class Dx9ImageElement
2021-07-11 22:59:29 -05:00
{
2021-07-11 23:04:40 -05:00
internal static void Generate(ImageElement efiImage, ref Dx9EffectBuilder effectBuilder)
{
Dx9TextureInfo textureInfo = effectBuilder.AllocateTexture();
2021-07-11 23:07:04 -05:00
effectBuilder.AddRequirement(textureInfo, Dx9TextureRequirements.TexelSize, null);
2021-07-11 23:04:40 -05:00
TextureVariableInfo textureVariableInfo = new TextureVariableInfo();
2021-07-11 23:07:04 -05:00
textureVariableInfo.ID = efiImage.ImageID;
2021-07-11 23:04:40 -05:00
textureVariableInfo.Type = Dx9VariableType.Texture;
textureVariableInfo.Name = effectBuilder.GenerateGlobalVariable(textureVariableInfo.Type, efiImage.Name);
2021-07-11 23:07:04 -05:00
textureVariableInfo.DefaultValue = efiImage.Image;
2021-07-11 23:04:40 -05:00
textureVariableInfo.SamplerName = textureInfo.Sampler;
textureVariableInfo.MinFilter = "Linear";
textureVariableInfo.MagFilter = "Linear";
textureVariableInfo.CoordinateMapID = -1;
textureVariableInfo.ImageIndexID = -1;
2021-07-11 23:07:04 -05:00
effectBuilder.AddPropertyVariable(textureVariableInfo);
2021-07-11 23:04:40 -05:00
VariableInfo variableInfo = new VariableInfo()
{
2021-07-11 23:07:04 -05:00
ID = efiImage.UVOffsetID,
2021-07-11 23:04:40 -05:00
Type = Dx9VariableType.Vector2,
IsDynamic = efiImage.IsDynamicProperty("UVOffset")
};
variableInfo.Name = variableInfo.IsDynamic ? effectBuilder.GenerateGlobalVariable(variableInfo.Type, "UVOffset") : effectBuilder.GenerateGlobalConstant(variableInfo.Type, "UVOffset");
2021-07-11 23:07:04 -05:00
variableInfo.DefaultValue = efiImage.UVOffset;
2021-07-11 23:04:40 -05:00
effectBuilder.AddPropertyVariable(variableInfo);
effectBuilder.PixelShaderOutput = effectBuilder.GenerateLocalVariable(Dx9VariableType.Vector4, efiImage.Name);
if (variableInfo.IsDynamic || !efiImage.UVOffset.IsApproximate(Vector2.Zero))
2021-07-11 23:07:04 -05:00
effectBuilder.EmitPixelFragment(InvariantString.Format(" // Load the image\r\n float4 {0} = tex2D({1}, {2} + float2({3}.x * {4}.x, {3}.y * {4}.y));\r\n\r\n", effectBuilder.PixelShaderOutput, textureInfo.Sampler, textureInfo.TexCoordInput, textureInfo.TexelSize, variableInfo.Name));
2021-07-11 23:04:40 -05:00
else
2021-07-11 23:07:04 -05:00
effectBuilder.EmitPixelFragment(InvariantString.Format(" // Load the image\r\n float4 {0} = tex2D({1}, {2});\r\n\r\n", effectBuilder.PixelShaderOutput, textureInfo.Sampler, textureInfo.TexCoordInput));
2021-07-11 23:04:40 -05:00
}
2021-07-11 22:59:29 -05:00
}
}