Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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); });
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
 public VTFSkinningAdapter(SkinningMethod method, RenderChunk chunk, Material material)
 {
 }
Exemplo n.º 5
0
 public DefaultSkinningAdapter(SkinningMethod method, RenderChunk chunk, Transform[] bones, Material material)
 {
 }