Cogs.Core
SampleVolumeTask.h
1#if 0
2#pragma once
3#include <atomic>
4#include <glm/glm.hpp>
5#include <vector>
6#include "../Systems/UniformFieldAggregatorSystem.h"
7#include "../TileSetManager.h"
8
9namespace Cogs
10{
11 namespace Core
12 {
13
14 namespace EchoSounder
15 {
16 struct GridRemappedTaskData;
17 struct GridRemapTileTaskData;
18
19 struct SampleVolumeTask2
20 {
21 TileValue* field;
22 uint16_t* times;
23 GridRemapTileTaskData& data;
24 EchoSounder::PingInfo* pinf;
25 uint32_t numPings;
26 glm::ivec3 minIndex;
27 glm::ivec3 maxIndex;
28 std::atomic<uint64_t>* elapsed_us;
29
30 SampleVolumeTask2(TileValue* field,
31 uint16_t* times,
32 GridRemapTileTaskData& data,
33 EchoSounder::PingInfo* pinf,
34 uint32_t numPings,
35 glm::ivec3 minIndex,
36 glm::ivec3 maxIndex,
37 std::atomic<uint64_t>* elapsed_us)
38 : field(field), times(times), data(data), pinf(pinf),
39 numPings(numPings),minIndex(minIndex), maxIndex(maxIndex),
40 elapsed_us(elapsed_us)
41 {}
42
43 void operator()();
44
45 void runVanilla(TileValue * dstValues,
46 uint16_t * timeValues,
47 const PingInfo* pinf,
48 const uint32_t upperFansToRemove,
49 const uint32_t numPings,
50 const uint32_t numSamples,
51 const uint32_t gridSizeX,
52 const uint32_t gridSizeY,
53 const float depthOffset,
54 const float depthStep,
55 const float sampleSpacing,
56 const float decay,
57 const std::vector<float>& beamAngleAlongship,
58 const std::vector<float>& beamAngleAthwartship,
59 const glm::ivec3& this_minIndex,
60 const glm::ivec3& this_maxIndex);
61
62 void runSSE4_1(TileValue * dstValues,
63 uint16_t * timeValues,
64 const PingInfo* pinf,
65 const uint32_t upperFansToRemove,
66 const uint32_t numPings,
67 const uint32_t numSamples,
68 const uint32_t gridSizeX,
69 const uint32_t gridSizeY,
70 const float depthOffset,
71 const float depthStep,
72 const float sampleSpacing,
73 const float decay,
74 const std::vector<float>& beamAngleAlongship,
75 const std::vector<float>& beamAngleAthwartship,
76 const glm::ivec3& this_minIndex,
77 const glm::ivec3& this_maxIndex);
78
79#ifdef COGS_EXTENSIONS_AVX
80 void runAVX2(TileValue * dstValues,
81 uint16_t * timeValues,
82 const PingInfo* pinf,
83 const uint32_t upperFansToRemove,
84 const uint32_t numPings,
85 const uint32_t numSamples,
86 const uint32_t gridSizeX,
87 const uint32_t gridSizeY,
88 const float depthOffset,
89 const float depthStep,
90 const float sampleSpacing,
91 const float decay,
92 const std::vector<float>& beamAngleAlongship,
93 const std::vector<float>& beamAngleAthwartship,
94 const glm::ivec3& this_minIndex,
95 const glm::ivec3& this_maxIndex);
96#endif
97
98 };
99
100 }
101 }
102}
103#endif
Contains all Cogs related functionality.
Definition: FieldSetter.h:23