コード例 #1
0
ファイル: PrimeEngine.cs プロジェクト: HungryBear/OptixCore
 public PrimeEngine(RayFormat rayFormat, RayHitType hitType, RTPBufferType bufferType = RTPBufferType.Host, bool useCPU = false)
 {
     _rayFormat  = rayFormat;
     _hitType    = hitType;
     _bufferType = bufferType;
     _context    = new PrimeContext(!useCPU);
 }
コード例 #2
0
        public static unsafe PrimeBuffer Create <T>(PrimeContext ctx, PrimeBufferDesc desc, T[] data)
            where T : struct
        {
            var dataToCopy = new Memory <T>(data);
            var data2Cpy   = dataToCopy.Pin();
            var dataLength = Unsafe.SizeOf <T>() * data.Length;
            var dataPtr    = IntPtr.Zero;

            if (desc.Type == RTPBufferType.CudaLinear)
            {
                //CudaDriverApi.CudaCall(CudaDriverApi.cuMemAlloc(ref dataPtr, (uint) dataLength));

                CudaRunTimeApi.CudaCall(CudaRunTimeApi.cudaMalloc(ref dataPtr, (uint)dataLength));
                CudaRunTimeApi.CudaCall(CudaRunTimeApi.cudaMemcpy(dataPtr.ToPointer(), new IntPtr(data2Cpy.Pointer), (uint)dataLength, CudaMemCpyKind.cudaMemcpyHostToDevice));
                // CudaDriverApi.CudaCall(CudaDriverApi.cuMemcpyHtoD(ref dataPtr, data2Cpy.Pointer, (uint) dataLength));
            }
            else
            {
                dataPtr = Marshal.AllocHGlobal(dataLength);
                GC.AddMemoryPressure(dataLength);
                var span = new Span <T>(data);
                MemoryHelper.CopyFromManaged(ref span, dataPtr, (uint)data.Length);
                // Unsafe.Copy(dataPtr.ToPointer(), ref data);
            }
            data2Cpy.Dispose();

            var buffer = new PrimeBuffer(ctx, desc, dataPtr)
            {
                size = dataLength
            };

            return(buffer);
        }
コード例 #3
0
ファイル: PrimeBuffer.cs プロジェクト: uzbekdev1/OptixCore
        public static PrimeBuffer Create <T>(PrimeContext ctx, PrimeBufferDesc desc, T[] data)
        {
            var h    = GCHandle.Alloc(data, GCHandleType.Pinned);
            var span = new Span <T>(data);

            //MemoryHelper.CopyFromManaged(ref span, );
            throw new NotImplementedException();
        }
コード例 #4
0
ファイル: PrimeModel.cs プロジェクト: uzbekdev1/OptixCore
 public PrimeModel(PrimeContext context) : base(context)
 {
     CheckError(PrimeApi.rtpModelCreate(context.InternalPtr, out InternalPtr));
 }
コード例 #5
0
ファイル: PrimeBuffer.cs プロジェクト: uzbekdev1/OptixCore
 public PrimeBuffer(PrimeContext context, PrimeBufferDesc fmt, IntPtr data) : base(context)
 {
     _dataPointer = data;
     CheckError(PrimeApi.rtpBufferDescCreate(context.InternalPtr, (RTPbufferformat)fmt.Format, (RTPbuffertype)fmt.Type, data, out InternalPtr));
 }
コード例 #6
0
ファイル: Traversal.cs プロジェクト: uzbekdev1/OptixCore
 protected OptixPrimeNode(PrimeContext context)
 {
     this.mContext = context;
 }
コード例 #7
0
 public PrimeQuery(PrimeContext context, PrimeModel model, QueryType queryType) : base(context)
 {
     _queryType = queryType;
     CheckError(PrimeApi.rtpQueryCreate(model.InternalPtr, (RTPquerytype)queryType, out InternalPtr));
 }