public static ICompute CreateComputeBy(SkinningMethod method, RenderChunk chunk) { switch (method) { case SkinningMethod.Linear: return(new LinearBlendSkinningCompute()); case SkinningMethod.DualQuaternion: return(new DualQuaternionBlendSkinningCompute()); default: return(null); } }
public ComputeShaderSkinningAdapter(SkinningMethod method, ComputeShader computeShader, RenderChunk chunk, Transform[] bones, Material material) { this.method = method; meshDataBuffer = new ComputeBuffer(chunk.vertexCount, Marshal.SizeOf(typeof(MeshDataInfo))); meshDataBuffer.SetData(chunk.meshData); meshDataStream = new ComputeBuffer(chunk.vertexCount, Marshal.SizeOf(typeof(RenderData))); meshDataStream.SetData(chunk.meshData); sourceDispatcher = new DataToDataDispatcher(computeShader, () => { return(meshDataBuffer); }, () => { return(meshDataStream); }); dispatchcer = ComputeShaderSkinningDispatcherFactory.CreateComputeBy(method, computeShader, chunk, bones, () => { return(meshDataBuffer); }, () => { return(meshDataStream); }); renderer = new ComputeShaderRenderer(chunk, material, () => { return(meshDataStream); }); }
public static IDisposableDispatch CreateComputeBy(SkinningMethod method, ComputeShader computeShader, RenderChunk chunk, Transform[] bones, Func <ComputeBuffer> getMeshDataBuffer, Func <ComputeBuffer> getMeshDataStream) { switch (method) { case SkinningMethod.Linear: return(new LinearBlendSkinningDispatcher(computeShader, chunk, bones, getMeshDataBuffer, getMeshDataStream)); case SkinningMethod.DualQuaternion: return(new DualQuaternionBlendSkinningDispatcher(computeShader, chunk, bones, getMeshDataBuffer, getMeshDataStream)); case SkinningMethod.OpimizedCenterOfRoation: return(new OptimizedCenterOfRotationSkinningDispatcher(computeShader, chunk, bones, getMeshDataBuffer, getMeshDataStream)); default: return(null); } }
public VTFSkinningAdapter(SkinningMethod method, RenderChunk chunk, Material material) { }
public DefaultSkinningAdapter(SkinningMethod method, RenderChunk chunk, Transform[] bones, Material material) { }