Subject | Hash | Author | Date (UTC) |
---|---|---|---|
clusters depth slices and depth convertions | a0d15a75baa2bdeef9c033c19ded7424ab29da1a | jp.larry | 2020-01-10 12:06:17 |
plane struct inherited from vector of size 4 with normal and offset | 74331763aa73548b17ff91aab0d6abaa6fa0e7d8 | jp.larry | 2020-01-10 10:29:04 |
changed identation | c815eb8588c6229bbf56606446e76b0a75553eee | jp.larry | 2020-01-10 10:28:20 |
sqrt function | 856c393e7ba60f99bd18e524ef408f427e04fa1c | jp.larry | 2020-01-10 10:27:55 |
removed unused matrix files | 1bc1e845a6a391cce90be9023fae41937dbd100d | jp.larry | 2020-01-07 13:55:53 |
frustum data type | 48480173a43561e7502458579378b78591716d1c | jp.larry | 2020-01-07 13:53:57 |
different projection matrix built functions for different fov specifications (horizontal, vertical, both) | 0aa5dbb5e22c616a559bb6f6d75b0313db7b3e84 | jp.larry | 2020-01-07 13:53:30 |
normal from 3 points and plane from normal and offset functions | 432070f339b8c48b18c4e2dab4389dc19ffa241c | jp.larry | 2020-01-06 07:27:29 |
check if floating point when converting from degrees | 75397be78960535bca1ec487221b6b46382e0724 | jp.larry | 2020-01-06 07:26:59 |
distance between 2 vectors and intersection line with plane | 1620677672179226ea92affb5e3dc600cd3fa133 | jp.larry | 2020-01-05 03:22:56 |
2D vector rotate function | 049eae7f349cf44bde666b66684a47c8bb4f1300 | jp.larry | 2020-01-01 05:09:07 |
removed nodiscard from matrix *= operator and removed redundant function rotate(axis) | 0dea084c205202125acfe390a248be61c962d393 | jp.larry | 2020-01-01 03:09:48 |
rafactoring update, matrix multiplication now works in different way | 2f2e01d80896cd96428a9c9394382e6f040f92fb | jp.larry | 2019-12-31 11:00:01 |
round_down function | 672a293659a39e29be0d84f28801cf2718070f10 | Jackalope | 2019-12-28 03:02:03 |
migw warning solved | 80dec7906c5fe2dc026d6774fd526df2ded049cc | Jackalope | 2019-12-21 10:22:55 |
refactoring | 8b9c8aef3bcbbe3a3a72160eacd15b2d8397524c | jp.larry | 2019-12-19 08:10:49 |
lookat and projection functions refactoring | f37008f4ad0e4501e89a6a26b4270bc5d6080578 | jp.larry | 2019-12-16 10:58:53 |
gcem correct include | 03e0350e04d3e1b2c9e7d4f58ef473ce9b5cf319 | Your Name | 2019-11-27 04:30:39 |
changed directories layout | abcc3ff61e8246f0519498b755bfe23877626144 | Your Name | 2019-11-26 22:52:02 |
CMakeLists.txt added | 41ddc92280ce3969f8b3f16efce7e63c8c70425a | Your Name | 2019-11-12 10:32:19 |
File | Lines added | Lines deleted |
---|---|---|
include/math/frustum.h | 18 | 12 |
File include/math/frustum.h changed (mode: 100644) (index 7abf2f1..b522ef2) | |||
... | ... | namespace math | |
55 | 55 | [[nodiscard]] constexpr T bound_y(T depth) const { | [[nodiscard]] constexpr T bound_y(T depth) const { |
56 | 56 | return depth * gcem::tan(fov_y()); | return depth * gcem::tan(fov_y()); |
57 | 57 | } | } |
58 | }; | ||
59 | |||
60 | template<typename T = float> | ||
61 | struct clusters_depth | ||
62 | { | ||
63 | T scale; | ||
64 | T bias; | ||
65 | |||
66 | template<Fov F> | ||
67 | void update(const frustum<F,T> &f, const T &nSlices) { | ||
68 | T lfn = gcem::log(f.zFar / f.zNear); | ||
69 | scale = nSlices / lfn; | ||
70 | bias = gcem::log(f.zNear); | ||
71 | } | ||
58 | 72 | ||
59 | [[nodiscard]] constexpr int32_t | ||
60 | cluster_slice(T nSlices, T depth) const { | ||
61 | T lfn = gcem::log(zFar / zNear); | ||
62 | T scale = nSlices / lfn; | ||
63 | T bias = -(nSlices * gcem::log(zNear) / lfn); | ||
64 | return int32_t(gcem::log(depth) * scale + bias); | ||
73 | [[nodiscard]] constexpr int32_t slice(const T &depth) const { | ||
74 | return int32_t((gcem::log(depth) - bias) * scale); | ||
65 | 75 | } | } |
66 | [[nodiscard]] constexpr T | ||
67 | cluster_depth(T nSlices, uint cluster_slice) const { | ||
68 | T lfn = gcem::log(zFar / zNear); | ||
69 | T scale = nSlices / lfn; | ||
70 | T bias = -(nSlices * gcem::log(zNear) / lfn); | ||
71 | return gcem::exp((cluster_slice - bias) / scale); | ||
76 | [[nodiscard]] constexpr T depth(uint slice) const { | ||
77 | return gcem::exp(slice / scale + bias); | ||
72 | 78 | } | } |
73 | 79 | }; | }; |
74 | 80 | } | } |