public OptixIntersectionDevice(IRayEngineScene scene, bool lowLatency = false) : base(scene) { this.lowLatency = lowLatency; Context = new Context { CpuNumThreads = 4, RayTypeCount = 1, EntryPointCount = 1 }; var rayBufferDesc = new BufferDesc() { Format = Format.User, Width = (uint)(lowLatency ? RayBuffer.RayBufferSize / 8 : RayBuffer.RayBufferSize), Type = BufferType.InputOutput, ElemSize = (uint)Marshal.SizeOf(typeof(RayData)) }; var rayHitBufferDesc = new BufferDesc() { Format = Format.User, Width = (uint)(lowLatency ? RayBuffer.RayBufferSize / 8 : RayBuffer.RayBufferSize), Type = BufferType.InputOutput, ElemSize = (uint)Marshal.SizeOf(typeof(RayHit)) }; this.todoRayBuffers = new InputRayBufferCollection(); this.doneRayBuffers = new OutputRayBufferCollection(); this.started = false; Rays = new DeviceBuffer(Context, rayBufferDesc); RayHits = new DeviceBuffer(Context, rayHitBufferDesc); Context["rayHits"].Set(RayHits); Context["rays"].Set(Rays); Builder = AccelBuilder.TriangleKdTree; Traverser = AccelTraverser.KdTree; GeoGroup = new GeometryGroup(Context); this.SetScene(scene); }
internal Acceleration(Context ctx, IntPtr acc) : base(ctx) { InternalPtr = acc; CheckError(Api.rtAccelerationGetBuilder(InternalPtr, out var builderStr)); mBuilder = (AccelBuilder)Enum.Parse(mBuilder.GetType(), builderStr); CheckError(Api.rtAccelerationGetTraverser(InternalPtr, out var traverseStr)); mTraverser = (AccelTraverser)Enum.Parse(mTraverser.GetType(), traverseStr); }
public Acceleration(Context context, AccelBuilder mBuilder, AccelTraverser mTraverser) : base(context) { CheckError(Api.rtAccelerationCreate(context.InternalPtr, ref InternalPtr)); gch = GCHandle.Alloc(InternalPtr, GCHandleType.Pinned); Builder = mBuilder; Traverser = mTraverser; MarkAsDirty(); }
public OptixOBJLoader(string filename, Context context, GeometryGroup geoGroup, Material material) : base(filename) { Context = context; GeoGroup = geoGroup; Material = material; Builder = AccelBuilder.Sbvh; Traverser = AccelTraverser.Bvh; }
public OptixOBJLoader(string filename, Context context, GeometryGroup geoGroup, Material defaultMaterial, Func <string, Material> materialResolveFunc) : base(filename) { _materialResolveFunc = materialResolveFunc; Context = context; GeoGroup = geoGroup; DefaultMaterial = defaultMaterial; Builder = AccelBuilder.Sbvh; Traverser = AccelTraverser.Bvh; }