public void Pack(FileInfo archiveFile, DirectoryInfo rootDir) { var rootRecord = ScanDirectory(rootDir); var memoryStream = new MemoryStream(); Persistance.Write(memoryStream, rootRecord); var listingBytes = memoryStream.ToArray(); long listingSize = listingBytes.LongLength; long payloadSize = currentOffset; long payloadOffset = IntegerUtils.NextLargerMultiple(HeaderSize + listingSize, OffsetGranularity); long totalSize = payloadOffset + payloadSize; using (var archiveMap = MemoryMappedFile.CreateFromFile(archiveFile.FullName, FileMode.Create, archiveFile.Name, totalSize)) { //write header using (var headerAccessor = archiveMap.CreateViewAccessor(0, HeaderSize)) { headerAccessor.Write(0, listingSize); headerAccessor.Write(sizeof(long), payloadOffset); } //write listing using (var listingAccessor = archiveMap.CreateViewAccessor(HeaderSize, listingSize)) { listingAccessor.WriteArray(0, listingBytes, 0, listingBytes.Length); } WriteDirectory(archiveMap, payloadOffset, rootRecord, rootDir); } }
public OcclusionInfo[] Run(DeviceContext context, ShaderResourceView vertexInfos) { context.ClearState(); context.ComputeShader.Set(shader); context.ComputeShader.SetConstantBuffer(0, hemispherePointsAndWeightsConstantBuffer); context.ComputeShader.SetShaderResources(0, rasterCacheView, facesView, transparenciesView, vertexMasksView, faceMasksView, vertexInfos); context.ComputeShader.SetUnorderedAccessView(0, outputBufferManager.View); for (int baseVertexIdx = 0; baseVertexIdx < vertexCount; baseVertexIdx += BatchSize) { ArraySegment segment = new ArraySegment(baseVertexIdx, Math.Max(vertexCount - baseVertexIdx, BatchSize)); segmentBufferManager.Update(context, segment); context.ComputeShader.SetConstantBuffer(1, segmentBufferManager.Buffer); context.Dispatch(1, IntegerUtils.RoundUp(BatchSize, ShaderNumThreads / RasterRowCount), 1); context.Flush(); } return(outputBufferManager.ReadContents(context)); }
public UIElement Interpret(MenuViewMessage state) { var canvas = new Canvas { HorizontalAlignment = HorizontalAlignment.Stretch }; if (state == null) { return(canvas); } double position = state.Position; double topOffset = Height / 2 - itemHeight * position; int firstVisibleChildIdx = IntegerUtils.Clamp( (int)Math.Floor(-(itemHeight + topOffset) / itemHeight), 0, state.Items.Count); int lastVisibleChildIdx = IntegerUtils.Clamp( (int)Math.Ceiling((Height - topOffset) / itemHeight), 0, state.Items.Count - 1); for (int childIdx = firstVisibleChildIdx; childIdx <= lastVisibleChildIdx; ++childIdx) { var item = state.Items[childIdx]; var childElem = CreateItem(item); canvas.Children.Add(childElem); Canvas.SetTop(childElem, topOffset + itemHeight * childIdx); childElem.Width = Width; } return(canvas); }
public void IntegerUtils_ToString1Test() { int? int1 = new int?(1); String result = IntegerUtils.ToString(int1); Assert.AreEqual("1", result); }
public void CalculateOcclusion(DeviceContext context) { if (unmorphedWithChildrenOcclusionInfosToUpload != null) { unmorphedWithChildrenOcclusionInfosBufferManager.Update(context, unmorphedWithChildrenOcclusionInfosToUpload); unmorphedWithChildrenOcclusionInfosToUpload = null; } if (parametersResources == null) { return; } context.WithEvent("Occluder::CalculateOcclusion", () => { context.ClearState(); context.ComputeShader.Set(shader); context.ComputeShader.SetShaderResources(0, unmorphedWithoutChildrenOcclusionInfosView, unmorphedWithChildrenOcclusionInfosBufferManager.View, parametersResources.baseOcclusionView, parametersResources.channelWeightsBufferManager.View, parametersResources.occlusionDeltaWeightSegmentsView, parametersResources.occlusionDeltaWeightElemsView); context.ComputeShader.SetUnorderedAccessView(0, parametersResources.calculatedInfosBuffersBufferManager.OutView); context.Dispatch(IntegerUtils.RoundUp(parametersResources.vertexCount, ShaderNumThreads), 1, 1); context.ClearState(); }); }
public void IntegerUtils_ToString2Test() { int? int1 = null; String result = IntegerUtils.ToString(int1); Assert.AreEqual("", result); }
public void Scatter(DeviceContext context, ImageBasedLightingEnvironment lightingEnvironment, ShaderResourceView controlVertexInfosView) { context.WithEvent("Scatterer::Scatter", () => { context.ClearState(); context.ComputeShader.Set(samplingShader); lightingEnvironment.Apply(context.ComputeShader); context.ComputeShader.SetShaderResources(ShaderSlots.MaterialTextureStart, stencilSegments, stencilElems, controlVertexInfosView); context.ComputeShader.SetUnorderedAccessView(0, sampledIrrandiancesBufferManager.OutView); context.Dispatch(IntegerUtils.RoundUp(vertexCount, ShaderNumThreads), 1, 1); context.ClearState(); context.ComputeShader.Set(scatteringShader); context.ComputeShader.SetShaderResources(0, sampledIrrandiancesBufferManager.InView, formFactorSegments, formFactorElements); context.ComputeShader.SetUnorderedAccessView(0, scatteredIrrandiancesBufferManager.OutView); context.Dispatch(IntegerUtils.RoundUp(vertexCount, ShaderNumThreads), 1, 1); context.ClearState(); }); }
public void IntegerUtils_IsLowerThan4Test() { int? int1 = new int?(1); int? int2 = null; bool?result = IntegerUtils.IsLowerThan(int1, int2); Assert.AreEqual(null, result); }
public void IntegerUtils_Multiply3Test() { int?int1 = new int?(1); int?int2 = null; int?result = IntegerUtils.Multiply(int1, int2); Assert.AreEqual(null, result); }
public void IntegerUtils_Divide3Test() { int?int1 = new int?(1); int?int2 = null; int?result = IntegerUtils.Divide(int1, int2); Assert.AreEqual(null, result); }
public void IntegerUtils_CompareTo3Test() { int?int1 = new int?(1); int?int2 = null; int?result = IntegerUtils.CompareTo(int1, int2); Assert.AreEqual(null, result); }
public void TestClamp() { Assert.AreEqual(2, IntegerUtils.Clamp(1, 2, 4)); Assert.AreEqual(2, IntegerUtils.Clamp(2, 2, 4)); Assert.AreEqual(3, IntegerUtils.Clamp(3, 2, 4)); Assert.AreEqual(4, IntegerUtils.Clamp(4, 2, 4)); Assert.AreEqual(4, IntegerUtils.Clamp(5, 2, 4)); }
public void IntegerUtils_Substract3Test() { int?int1 = new int?(1); int?int2 = null; int?result = IntegerUtils.Substract(int1, int2); Assert.AreEqual(null, result); }
public void Refine(DeviceContext context, ShaderResourceView vertexPositionsView, UnorderedAccessView resultsView) { context.ClearState(); context.ComputeShader.Set(refinerShader); context.ComputeShader.SetShaderResources(0, stencilSegmentsView, stencilElemsView, vertexPositionsView); context.ComputeShader.SetUnorderedAccessView(0, resultsView); context.Dispatch(IntegerUtils.RoundUp(refinedVertexCount, ShaderNumThreads), 1, 1); context.ClearState(); }
public void TestNextLargerMultiple() { Assert.AreEqual(0, IntegerUtils.NextLargerMultiple(0, 3)); Assert.AreEqual(3, IntegerUtils.NextLargerMultiple(1, 3)); Assert.AreEqual(3, IntegerUtils.NextLargerMultiple(2, 3)); Assert.AreEqual(3, IntegerUtils.NextLargerMultiple(3, 3)); Assert.AreEqual(6, IntegerUtils.NextLargerMultiple(4, 3)); Assert.AreEqual(6, IntegerUtils.NextLargerMultiple(5, 3)); }
public void IntegerUtils_IsNullOrZeroValue3Test() { int? int1 = new int?(0); Boolean result = IntegerUtils.IsNullOrZeroValue(int1); Assert.IsNotNull(result); Assert.AreEqual(true, result); Assert.AreEqual("True", result.ToString()); }
public void IntegerUtils_IsNullOrZeroValue2Test() { int? int1 = new int?(1); bool result = IntegerUtils.IsNullOrZeroValue(int1); Assert.IsNotNull(result); Assert.AreEqual(false, result); Assert.AreEqual("False", result.ToString()); }
public void IntegerUtils_IsGreaterThan2Test() { int? int1 = new int?(1); int? int2 = new int?(1); bool?result = IntegerUtils.IsGreaterThan(int1, int2); Assert.IsNotNull(result); Assert.AreEqual(false, result); Assert.AreEqual("False", result.ToString()); }
public void IntegerUtils_IsLowerThan2Test() { int? int1 = new int?(1); int? int2 = new int?(2); bool?result = IntegerUtils.IsLowerThan(int1, int2); Assert.IsNotNull(result); Assert.AreEqual(true, result); Assert.AreEqual("True", result.ToString()); }
public void TestMod() { Assert.AreEqual(0, IntegerUtils.Mod(-3, 3)); Assert.AreEqual(1, IntegerUtils.Mod(-2, 3)); Assert.AreEqual(2, IntegerUtils.Mod(-1, 3)); Assert.AreEqual(0, IntegerUtils.Mod(0, 3)); Assert.AreEqual(1, IntegerUtils.Mod(1, 3)); Assert.AreEqual(2, IntegerUtils.Mod(2, 3)); Assert.AreEqual(0, IntegerUtils.Mod(3, 3)); Assert.AreEqual(1, IntegerUtils.Mod(4, 3)); Assert.AreEqual(2, IntegerUtils.Mod(5, 3)); }
public void IntegerUtils_Abs1Test() { int?int1 = new int?(1); int?result = (int?)IntegerUtils.Abs(int1); Assert.IsNotNull(result); Assert.AreEqual((byte)1, (byte)result); Assert.AreEqual((short)1, (short)result); Assert.AreEqual(1, result); Assert.AreEqual(1L, (long)result); Assert.AreEqual(1.0f, (float)result, 1.0f); Assert.AreEqual(1.0, (double)result, 1.0); Assert.AreEqual("1", result.ToString()); }
public void GetRandomNumbers() { var actual = false; var random = new Random(); var numOfNumbers = random.Next(100); var randomList = new List <int>(); randomList.AddRange(IntegerUtils.GetRandomNumbers(numOfNumbers)); if (randomList.Count == numOfNumbers) { actual = true; } Assert.IsTrue(actual, "Wrong numbers of numbers"); }
public void IntegerUtils_Add1Test() { int?int1 = new int?(1); int?int2 = new int?(1); int?result = IntegerUtils.Add(int1, int2); Assert.IsNotNull(result); Assert.AreEqual((byte)2, (byte)result); Assert.AreEqual((short)2, (short)result); Assert.AreEqual(2, result); Assert.AreEqual(2L, (long)result); Assert.AreEqual(2.0f, (float)result, 1.0f); Assert.AreEqual(2.0, (double)result, 1.0); Assert.AreEqual("2", result.ToString()); }
public void IntegerUtils_Substract1Test() { int?int1 = new int?(1); int?int2 = new int?(1); int?result = IntegerUtils.Substract(int1, int2); Assert.IsNotNull(result); Assert.AreEqual((byte)0, (byte)result); Assert.AreEqual((short)0, (short)result); Assert.AreEqual(0, result); Assert.AreEqual(0L, (long)result); Assert.AreEqual(0.0f, (float)result, 1.0f); Assert.AreEqual(0.0, (double)result, 1.0); Assert.AreEqual("0", result.ToString()); }
public void IntegerUtils_Add4Test() { int?int1 = new int?(1); int?int2 = new int?(1); int?int3 = new int?(1); int?result = IntegerUtils.Add(int1, int2, int3); Assert.IsNotNull(result); Assert.AreEqual((byte)3, (byte)result); Assert.AreEqual((short)3, (short)result); Assert.AreEqual(3, result); Assert.AreEqual(3L, (long)result); Assert.AreEqual(3.0f, (float)result, 1.0f); Assert.AreEqual(3.0, (double)result, 1.0); Assert.AreEqual("3", result.ToString()); }
public void TestToUShort() { //below range Assert.AreEqual(0, IntegerUtils.ToUShort(-1)); Assert.AreEqual(0, IntegerUtils.ToUShort(0)); Assert.AreEqual(0, IntegerUtils.ToUShort(0.999f / 0x10000)); Assert.AreEqual(1, IntegerUtils.ToUShort(1.001f / 0x10000)); Assert.AreEqual(1, IntegerUtils.ToUShort(1.999f / 0x10000)); Assert.AreEqual(ushort.MaxValue, IntegerUtils.ToUShort(1 - 1e-6f)); Assert.AreEqual(ushort.MaxValue, IntegerUtils.ToUShort(1)); //above range Assert.AreEqual(ushort.MaxValue, IntegerUtils.ToUShort(2)); }
public void IntegerUtils_Add6Test() { int?int1 = new int?(1); int?int2 = new int?(1); int?int3 = new int?(1); int?int4 = new int?(1); int?result = IntegerUtils.Add(int1, int2, int3, int4); Assert.IsNotNull(result); Assert.AreEqual((byte)4, (byte)result); Assert.AreEqual((short)4, (short)result); Assert.AreEqual(4, result); Assert.AreEqual(4L, (long)result); Assert.AreEqual(4.0f, (float)result, 1.0f); Assert.AreEqual(4.0, (double)result, 1.0); Assert.AreEqual("4", result.ToString()); }
public void ListSorter() { var actual = false; var random = new Random(); var numberCount = random.Next(100); var randomList = new List <int>(IntegerUtils.GetRandomNumbers(numberCount)); var sortedList = IntegerUtils.ListSorter(randomList); for (var i = 0; i < numberCount - 1; i++) { actual = sortedList[i] < sortedList[i + 1]; if (!actual) { break; } } Assert.IsTrue(actual, "Wrong sorting"); }
private void CalculatePositionsCommon( DeviceContext context, UnorderedAccessView vertexInfosOutView, ShaderResourceView occlusionInfosView, ShaderResourceView parentDeltasInView, UnorderedAccessView deltasOutView) { context.WithEvent("GpuShaper::CalculatePositions", () => { context.ClearState(); if (deltasOutView != null) { context.ComputeShader.Set(withDeltasShader); } else { context.ComputeShader.Set(withoutDeltasShader); } context.ComputeShader.SetShaderResources(0, initialPositionsView, deltaSegmentsView, deltaElemsView, morphWeightsBufferManager.View, baseDeltaWeightSegmentsView, baseDeltaWeightElemsView, boneWeightSegmentsView, boneWeightElemsView, boneTransformsBufferManager.View, occlusionInfosView, occlusionSurrogateMapView, occlusionSurrogateFacesView, occlusionSurrogateInfosBufferManager.View, parentDeltasInView); context.ComputeShader.SetUnorderedAccessViews(0, vertexInfosOutView, deltasOutView); context.Dispatch(IntegerUtils.RoundUp(vertexCount, ShaderNumThreads), 1, 1); context.ClearState(); }); }
private Pose GetBlendedPose(float time) { var posesByFrame = model.Animation.ActiveAnimation.PosesByFrame; float unloopedFrameIdx = time * FramesPerSecond; float currentFrameIdx = unloopedFrameIdx % posesByFrame.Count; int baseFrameIdx = (int)currentFrameIdx; Pose prevFramePose = posesByFrame[IntegerUtils.Mod(baseFrameIdx + 0, posesByFrame.Count)]; Pose nextFramePose = posesByFrame[IntegerUtils.Mod(baseFrameIdx + 1, posesByFrame.Count)]; var poseBlender = new PoseBlender(model.MainDefinition.BoneSystem.Bones.Count); float alpha = currentFrameIdx - baseFrameIdx; poseBlender.Add(1 - alpha, prevFramePose); poseBlender.Add(alpha, nextFramePose); var blendedPose = poseBlender.GetResult(); return(blendedPose); }