public override ShaderResourceTexture CreateTexture(API_Device D) { return (Source0 as subClassBase).CreateTexture(D); eEColorSrcCombinerType q = (eEColorSrcCombinerType)base.Container.Properties["CombinerType"].Object; ShaderResourceTexture src0 = ColorSrc1.CreateTexture(D); ShaderResourceTexture src1 = ColorSrc2.CreateTexture(D); if (src0 == null || src1 == null) return src0 != null ? src0 : src1; ShaderResourceTexture R = new ShaderResourceTexture(Math.Max(src0.Width, src1.Width), Math.Max(src0.Height, src1.Height), 1, SlimDX.Direct3D11.ResourceUsage.Default, SlimDX.Direct3D11.BindFlags.ShaderResource, SlimDX.Direct3D11.CpuAccessFlags.None, SlimDX.DXGI.Format.B8G8R8A8_UNorm, 1, SlimDX.Direct3D11.ResourceOptionFlags.None, D); FileManager.e_MatEffect.Variables["sourceTex0"].SetVariable(src0.ShaderResourceView); FileManager.e_MatEffect.Variables["sourceTex1"].SetVariable(src1.ShaderResourceView); FileManager.e_MatEffect.Variables["dim"].SetVariable(new Vector2(R.Width, R.Height)); FileManager.g_pApp.PauseRendering(); FileManager.r_MatTarget.SetTarget(ClearType.All); switch (q) { case eEColorSrcCombinerType.eEColorSrcCombinerType_Add : FullScreenQuad.RenderQuad(FileManager.e_MatEffect.Techniques["Combiner_Add"].Passes[0]); break; case eEColorSrcCombinerType.eEColorSrcCombinerType_Subtract: FullScreenQuad.RenderQuad(FileManager.e_MatEffect.Techniques["Combiner_Sub"].Passes[0]); break; case eEColorSrcCombinerType.eEColorSrcCombinerType_Multiply: FullScreenQuad.RenderQuad(FileManager.e_MatEffect.Techniques["Combiner_Mul"].Passes[0]); break; case eEColorSrcCombinerType.eEColorSrcCombinerType_Max: FullScreenQuad.RenderQuad(FileManager.e_MatEffect.Techniques["Combiner_Max"].Passes[0]); break; case eEColorSrcCombinerType.eEColorSrcCombinerType_Min: FullScreenQuad.RenderQuad(FileManager.e_MatEffect.Techniques["Combiner_Min"].Passes[0]); break; } R.CopyFrom(FileManager.r_MatTarget, 0, 0, R.Width, 0, R.Height, 0, 0); FileManager.g_pApp.ResumeRendering(); //src0.ToFile("src0.dds", SlimDX.Direct3D11.ImageFileFormat.Dds); //src1.ToFile("src1.dds", SlimDX.Direct3D11.ImageFileFormat.Dds); //R.ToFile("res.dds", SlimDX.Direct3D11.ImageFileFormat.Dds); return R; }
public ShaderResourceTexture CreateTexture(API_Device D) { if(ColorModifier == eEShaderColorModifier.eEShaderColorModifier_Default) return (Operand as subClassBase).CreateTexture(D); ShaderResourceTexture src = (Operand as subClassBase).CreateTexture(D); ShaderResourceTexture R = new ShaderResourceTexture(src.Width, src.Height, 1, SlimDX.Direct3D11.ResourceUsage.Default, SlimDX.Direct3D11.BindFlags.ShaderResource, SlimDX.Direct3D11.CpuAccessFlags.None, SlimDX.DXGI.Format.B8G8R8A8_UNorm, 1, SlimDX.Direct3D11.ResourceOptionFlags.None, D); FileManager.e_MatEffect.Variables["sourceTex0"].SetVariable(src.ShaderResourceView); FileManager.e_MatEffect.Variables["dim"].SetVariable(new Vector2(R.Width, R.Height)); bool all = ColorComponent == eEShaderColorSrcComponent.eEShaderColorSrcComponent_Default; bool rgb = ColorComponent == eEShaderColorSrcComponent.eEShaderColorSrcComponent_RGB; FileManager.e_MatEffect.Variables["r"].SetVariable(ColorComponent == eEShaderColorSrcComponent.eEShaderColorSrcComponent_R || all || rgb); FileManager.e_MatEffect.Variables["g"].SetVariable(ColorComponent == eEShaderColorSrcComponent.eEShaderColorSrcComponent_G || all || rgb); FileManager.e_MatEffect.Variables["b"].SetVariable(ColorComponent == eEShaderColorSrcComponent.eEShaderColorSrcComponent_B || all || rgb); FileManager.e_MatEffect.Variables["a"].SetVariable(ColorComponent == eEShaderColorSrcComponent.eEShaderColorSrcComponent_A || all); FileManager.e_MatEffect.Variables["op"].SetVariable((int)ColorModifier - 1); FileManager.g_pApp.PauseRendering(); FileManager.r_MatTarget.SetTarget(ClearType.All); FullScreenQuad.RenderQuad(FileManager.e_MatEffect.Techniques["blend"].Passes[0]); R.CopyFrom(FileManager.r_MatTarget, 0, 0, R.Width, 0, R.Height, 0, 0); FileManager.g_pApp.ResumeRendering(); return R; }
public override ShaderResourceTexture CreateTexture(API_Device D) { return (ColorSrc1.Operand as subClassBase).CreateTexture(D); ShaderResourceTexture src0 = ColorSrc1.CreateTexture(D); ShaderResourceTexture src1 = ColorSrc1.CreateTexture(D); ShaderResourceTexture src2 = BlendSrc.CreateTexture(D); int w = Math.Max(Math.Max(src0.Width, src1.Width), src2.Width); int h = Math.Max(Math.Max(src0.Height, src1.Height), src2.Height); ShaderResourceTexture R = new ShaderResourceTexture(w, h, 1, SlimDX.Direct3D11.ResourceUsage.Default, SlimDX.Direct3D11.BindFlags.ShaderResource, SlimDX.Direct3D11.CpuAccessFlags.None, SlimDX.DXGI.Format.B8G8R8A8_UNorm, 1, SlimDX.Direct3D11.ResourceOptionFlags.None, D); FileManager.e_MatEffect.Variables["sourceTex0"].SetVariable(src0.ShaderResourceView); FileManager.e_MatEffect.Variables["sourceTex1"].SetVariable(src1.ShaderResourceView); FileManager.e_MatEffect.Variables["sourceTex2"].SetVariable(src2.ShaderResourceView); FileManager.e_MatEffect.Variables["dim"].SetVariable(new Vector2(w, h)); FileManager.g_pApp.PauseRendering(); FileManager.r_MatTarget.SetTarget(ClearType.All); FullScreenQuad.RenderQuad(FileManager.e_MatEffect.Techniques["Lerp"].Passes[0]); R.CopyFrom(FileManager.r_MatTarget, 0, 0, R.Width, 0, R.Height, 0, 0); FileManager.g_pApp.ResumeRendering(); return R; }