public void LoadAdaptor(SkinningCompute compute, SkinningBlend blend, bool tension) { switch (compute) { case SkinningCompute.Auto: if (SystemInfo.supportsComputeShaders) { LoadAdaptor(SkinningCompute.ForceGPGPU, blend, tension); } else { LoadAdaptor(SkinningCompute.ForceCPU, blend, tension); } break; case SkinningCompute.ForceGPGPU: { ComputeShaderSkinningAdapter computeAdapter = new ComputeShaderSkinningAdapter(blend, computeShader, chunk, chunk.GetBones(transform.parent), material, tension); adapter = computeAdapter as IRenderAdapter; disposable = computeAdapter as IDisposable; } break; case SkinningCompute.ForceCPU: { DefaultSkinningAdapter defaultAdapter = new DefaultSkinningAdapter(blend, chunk, chunk.GetBones(transform.parent), material); adapter = defaultAdapter as IRenderAdapter; disposable = defaultAdapter as IDisposable; } break; } }
public void SelectSkinning(SkinningSelector selector) { switch (selector) { case SkinningSelector.Auto: AutoSelectSkinning(); break; case SkinningSelector.ForceGPGPU: { ComputeShaderSkinningAdapter computeAdapter = new ComputeShaderSkinningAdapter(method, computeShader, chunk, chunk.GetBones(transform.parent), material); adapter = computeAdapter as IRenderAdapter; disposable = computeAdapter as IDisposable; } break; case SkinningSelector.ForceGPU: throw new ArgumentOutOfRangeException("SkinningSelector selector", "GPU Skinning not support."); case SkinningSelector.ForceCPU: { DefaultSkinningAdapter defaultAdapter = new DefaultSkinningAdapter(method, chunk, chunk.GetBones(transform.parent), material); adapter = defaultAdapter as IRenderAdapter; disposable = defaultAdapter as IDisposable; } break; } }
public void ReloadAdaptor(SkinningCompute compute, SkinningBlend blend, bool tension) { if (disposable != null) { disposable.Dispose(); } adapter = null; disposable = null; LoadAdaptor(compute, blend, tension); }
public void AutoSelectSkinning() { if (SystemInfo.supportsComputeShaders) { ComputeShaderSkinningAdapter computeAdapter = new ComputeShaderSkinningAdapter(method, computeShader, chunk, chunk.GetBones(transform.parent), material); adapter = computeAdapter as IRenderAdapter; disposable = computeAdapter as IDisposable; } else // last fallback { DefaultSkinningAdapter defaultAdapter = new DefaultSkinningAdapter(method, chunk, chunk.GetBones(transform.parent), material); adapter = defaultAdapter as IRenderAdapter; disposable = defaultAdapter as IDisposable; } }
public PatternRenderer(IRenderAdapter renderedAdapter) { _renderedAdapter = renderedAdapter; }