コード例 #1
0
ファイル: xMatClasses.cs プロジェクト: hhergeth/RisenEditor
 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;
 }
コード例 #2
0
ファイル: xMatClasses.cs プロジェクト: hhergeth/RisenEditor
 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;
 }
コード例 #3
0
ファイル: xMatClasses.cs プロジェクト: hhergeth/RisenEditor
 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;
 }