本文整理汇总了C#中FeralTic.DX11.DX11RenderContext.CleanUpCS方法的典型用法代码示例。如果您正苦于以下问题:C# DX11RenderContext.CleanUpCS方法的具体用法?C# DX11RenderContext.CleanUpCS怎么用?C# DX11RenderContext.CleanUpCS使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FeralTic.DX11.DX11RenderContext
的用法示例。
在下文中一共展示了DX11RenderContext.CleanUpCS方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Update
//.........这里部分代码省略.........
if (validdepth) { state.DepthStencil = ds; }
if (validblend) { state.Blend = bs; }
context.RenderStateStack.Push(state);
}
r.RenderWidth = w;
r.RenderHeight = h;
r.BackBuffer = elem.Element;
this.varmanager.ApplyGlobal(shaderdata.ShaderInstance);
//Apply settings (note that textures swap is handled later)
this.varmanager.ApplyPerObject(context, shaderdata.ShaderInstance, or, i);
//Bind last render target
this.BindTextureSemantic(shaderdata.ShaderInstance.Effect, "PREVIOUS", lastrt);
this.BindPassIndexSemantic(shaderdata.ShaderInstance.Effect, j);
this.BindPassIterIndexSemantic(shaderdata.ShaderInstance.Effect, kiter);
if (this.FDepthIn.PluginIO.IsConnected)
{
if (this.FDepthIn[0].Contains(context))
{
this.BindTextureSemantic(shaderdata.ShaderInstance.Effect, "DEPTHTEXTURE", this.FDepthIn[0][context]);
}
}
//Apply pass and draw quad
pass.Apply(ctx);
if (pi.ComputeData.Enabled)
{
pi.ComputeData.Dispatch(context, w, h);
context.CleanUpCS();
}
else
{
ctx.ComputeShader.Set(null);
context.Primitives.FullScreenTriangle.Draw();
ctx.OutputMerger.SetTargets(this.nullrtvs);
}
//Generate mips if applicable
if (mips) { ctx.GenerateMips(rt.SRV); }
if (!pi.KeepTarget)
{
preserve = false;
rtlist.Add(rt);
lastrt = rt;
lasttmp = elem;
preservedtarget = null;
passcounter++;
}
else
{
preserve = true;
preservedtarget = elem;
}
context.RenderTargetStack.Pop();
if (validblend || validdepth)
{
context.RenderStateStack.Pop();
}
示例2: Update
public void Update(IPluginIO pin, DX11RenderContext context)
{
Device device = context.Device;
DeviceContext ctx = context.CurrentDeviceContext;
if (!this.FOutLinkBuffer[0].Contains(context) || !this.FOutOffsetBuffer[0].Contains(context) || FInGridcellCount.IsChanged)
{
this.FOutLinkBuffer[0].Dispose(context);
this.FOutOffsetBuffer[0].Dispose(context);
DX11RWStructuredBuffer lb = new DX11RWStructuredBuffer(device, FInEleCount[0], 8, eDX11BufferMode.Counter);
DX11RWStructuredBuffer ob = new DX11RWStructuredBuffer(device, FInGridcellCount[0] * FInGridcellCount[0] * FInGridcellCount[0], 4, eDX11BufferMode.Counter);
this.FOutLinkBuffer[0][context] = lb;
this.FOutOffsetBuffer[0][context] = ob;
}
// clear offsetbuffer
int[] mask = new int[4] { -1, -1, -1, -1 };
ctx.ClearUnorderedAccessView(FOutOffsetBuffer[0][context].UAV,mask);
// load shader
if (this.shader == null)
{
string basepath = "LinkedList.effects.LinkedList.fx";
DX11Effect effect = DX11Effect.FromResource(Assembly.GetExecutingAssembly(), basepath);
this.shader = new DX11ShaderInstance(context, effect);
}
if (this.FInPcBuffer.PluginIO.IsConnected)
{
shader.SelectTechnique("BuildHash");
shader.SetBySemantic("POINTCLOUDBUFFER", FInPcBuffer[0][context].SRV);
shader.SetBySemantic("POINTTRANSFORM", FInTransform[0]);
shader.SetBySemantic("RWLINKBUFFER", FOutLinkBuffer[0][context].UAV, 0);
shader.SetBySemantic("RWOFFSETBUFFER", FOutOffsetBuffer[0][context].UAV);
shader.SetBySemantic("GRIDCELLSIZE", FInGridcellCount[0]);
shader.ApplyPass(0);
ctx.Dispatch((FInEleCount[0] + 63) / 64, 1, 1);
context.CleanUp();
context.CleanUpCS();
}
}
示例3: Update
//.........这里部分代码省略.........
else
{
h = pi.Reference == ImageShaderPass.eImageScaleReference.Initial ? he : lastrt.Height;
w = pi.Reference == ImageShaderPass.eImageScaleReference.Initial ? wi : lastrt.Width;
}
if (pi.DoScale)
{
h = Convert.ToInt32((float)h * pi.Scale);
w = Convert.ToInt32((float)w * pi.Scale);
h = Math.Max(h, 1);
w = Math.Max(w, 1);
}
//Check format support for render target, and default to rgb8 if not
if (!context.IsSupported(FormatSupport.RenderTarget, fmt))
{
fmt = Format.R8G8B8A8_UNorm;
}
//Since device is not capable of telling us BGR not supported
if (fmt == Format.B8G8R8A8_UNorm) { fmt = Format.R8G8B8A8_UNorm; }
DX11ResourcePoolEntry<DX11RenderTarget2D> elem = context.ResourcePool.LockRenderTarget(w, h, fmt, new SampleDescription(1, 0), mips, 0);
locktargets.Add(elem);
DX11RenderTarget2D rt = elem.Element;
ctx.OutputMerger.SetTargets(rt.RTV);
r.RenderWidth = w;
r.RenderHeight = h;
r.BackBuffer = rt;
this.varmanager.ApplyGlobal(shaderdata.ShaderInstance);
//Apply settings (note that textures swap is handled later)
this.varmanager.ApplyPerObject(context, shaderdata.ShaderInstance, or, i);
Viewport vp = new Viewport();
vp.Width = rt.Width;
vp.Height = rt.Height;
ctx.Rasterizer.SetViewports(vp);
//Bind last render target
this.BindTextureSemantic(shaderdata.ShaderInstance.Effect, "PREVIOUS", lastrt);
//Apply pass and draw quad
pass.Apply(ctx);
if (pi.ComputeData.Enabled)
{
pi.ComputeData.Dispatch(context, w, h);
context.CleanUpCS();
}
else
{
ctx.ComputeShader.Set(null);
context.Primitives.FullScreenTriangle.Draw();
ctx.OutputMerger.SetTargets(this.nullrtvs);
}
//Generate mips if applicable
if (pi.Mips) { ctx.GenerateMips(rt.SRV); }
rtlist.Add(rt);
lastrt = rt;
lasttmp = elem;
}
//Set last render target
this.FOut[i][context] = lastrt;
//Unlock all resources
foreach (DX11ResourcePoolEntry<DX11RenderTarget2D> lt in locktargets)
{
lt.UnLock();
}
//Keep lock on last rt, since don't want it overidden
lasttmp.Lock();
//this.lastframetargets.
//this.lasttarget = lasttmp;
this.lastframetargets.Add(lasttmp);
//previousrts[context] = lasttmp.Element;
}
else
{
this.FOut[i][context] = this.FIn[i][context];
}
}
context.RenderStateStack.Pop();
this.OnEndQuery(context);
//UnLock previous frame in applicable
//if (previoustarget != null) { context.ResourcePool.Unlock(previoustarget); }
}
示例4: Update
public void Update(IPluginIO pin, DX11RenderContext context)
{
Device device = context.Device;
DeviceContext ctx = context.CurrentDeviceContext;
if ( !this.FOutPointcloudRingBuffer[0].Contains(context) || !this.FOutUpdatedBuffer[0].Contains(context) || !this.bCounter.Contains(context) || !this.bOffset.Contains(context) || this.FInPointcloudRingBufferSize.IsChanged || this.FInEleCount.IsChanged)
{
this.FOutPointcloudRingBuffer[0].Dispose(context);
DX11RWStructuredBuffer brPointcloud = new DX11RWStructuredBuffer(device, FInPointcloudRingBufferSize[0], FInStride[0], eDX11BufferMode.Counter);
this.FOutPointcloudRingBuffer[0][context] = brPointcloud;
this.FOutUpdatedBuffer[0].Dispose(context);
DX11RWStructuredBuffer brUpdated = new DX11RWStructuredBuffer(device, FInPointcloudRingBufferSize[0], 4, eDX11BufferMode.Counter);
this.FOutUpdatedBuffer[0][context] = brUpdated;
this.bOffset.Dispose(context);
this.bOffset[context] = new DX11RawBuffer(device, 16);
this.bCounter.Dispose(context);
this.bCounter[context] = new DX11RWStructuredBuffer(device, FInEleCount[0], 4, eDX11BufferMode.Counter);
}
// load shader
if (this.shader == null)
{
string basepath = "RingBuffer.effects.RingBuffer.fx";
DX11Effect effect = DX11Effect.FromResource(Assembly.GetExecutingAssembly(), basepath);
this.shader = new DX11ShaderInstance(context, effect);
}
if (this.FInPointcloudBuffer.PluginIO.IsConnected && FInSet[0] && currentFrame != FHDEHost.FrameTime)
{
currentFrame = FHDEHost.FrameTime; // prevents to execute this a second time
int[] mask = new int[4] { 0, 0, 0, 0 };
ctx.ClearUnorderedAccessView(FOutUpdatedBuffer[0][context].UAV, mask);
shader.SelectTechnique("AddPoints");
shader.SetBySemantic("POINTCLOUDBUFFER", FInPointcloudBuffer[0][context].SRV);
shader.SetBySemantic("POINTCLOUDCOUNTBUFFER", FInCountBuffer[0][context].SRV);
shader.SetBySemantic("POINTCLOUDRINGBUFFER", FOutPointcloudRingBuffer[0][context].UAV, FInPointcloudRingBufferSize[0]);
shader.SetBySemantic("UPDATEDRINGBUFFER", FOutUpdatedBuffer[0][context].UAV, FInPointcloudRingBufferSize[0]);
shader.SetBySemantic("POINTCLOUDRINGBUFFERSIZE", FInPointcloudRingBufferSize[0]);
shader.SetBySemantic("OFFSETBUFFER", this.bOffset[context].SRV);
shader.SetBySemantic("COUNTERBUFFER", this.bCounter[context].UAV, 0);
shader.ApplyPass(0);
ctx.Dispatch((FInEleCount[0] + 63) / 64, 1, 1);
ctx.CopyStructureCount(this.bCounter[context].UAV, this.bOffset[context].Buffer, 0);
shader.SelectTechnique("CalcOffset");
shader.ApplyPass(0);
ctx.Dispatch(1, 1, 1);
context.CleanUp();
context.CleanUpCS();
}
}
示例5: Update
public void Update(IPluginIO pin, DX11RenderContext context)
{
Device device = context.Device;
DeviceContext ctx = context.CurrentDeviceContext;
if (!this.FOutPointcloudBuffer[0].Contains(context) || !this.FOutIndexBuffer[0].Contains(context) || this.FInEleCount.IsChanged )
{
this.FOutPointcloudBuffer[0].Dispose(context);
this.FOutIndexBuffer[0].Dispose(context);
DX11RWStructuredBuffer pcBuffer = new DX11RWStructuredBuffer(device, FInEleCount[0], FInStride[0], eDX11BufferMode.Counter);
DX11RWStructuredBuffer idBuffer = new DX11RWStructuredBuffer(device, FInEleCount[0], 4, eDX11BufferMode.Counter);
this.FOutPointcloudBuffer[0][context] = pcBuffer;
this.FOutIndexBuffer[0][context] = idBuffer;
}
// clear offsetbuffer
int[] mask = new int[4] { -1, -1, -1, -1 };
ctx.ClearUnorderedAccessView(FOutIndexBuffer[0][context].UAV,mask);
// load shader
if (this.shader == null)
{
string basepath = "RingBufferIndexing.effects.RingBufferIndexing.fx";
DX11Effect effect = DX11Effect.FromResource(Assembly.GetExecutingAssembly(), basepath);
this.shader = new DX11ShaderInstance(context, effect);
}
if (this.FInPointcloudBuffer.PluginIO.IsConnected /* && currentFrame != FHDEHost.FrameTime*/)
{
currentFrame = FHDEHost.FrameTime; // prevents to execute this a second time
shader.SelectTechnique("BuildHash");
shader.SetBySemantic("POINTCLOUDBUFFERIN", FInPointcloudBuffer[0][context].SRV);
shader.SetBySemantic("POINTCLOUDBUFFEROUT", FOutPointcloudBuffer[0][context].UAV, 0);
shader.SetBySemantic("INDEXBUFFER", FOutIndexBuffer[0][context].UAV);
shader.ApplyPass(0);
ctx.Dispatch((FInEleCount[0] + 63) / 64, 1, 1);
context.CleanUp();
context.CleanUpCS();
}
}