/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/Engine/Core/Graphics/Implementation/AmbientCubeBasis_inl.h
64 строки
2 KB
Jan Krassnigg
Slight improvements to ezMemoryUtils
11 мар 2023, 20:02
11 мар 2023, 20:02
fcc7abe
Код
Авторство
О чём код?
#pragma once template <typename T> EZ_ALWAYS_INLINE ezAmbientCube<T>::ezAmbientCube() { ezMemoryUtils::ZeroFillArray(m_Values); } template <typename T> template <typename U> EZ_ALWAYS_INLINE ezAmbientCube<T>::ezAmbientCube(const ezAmbientCube<U>& other) { *this = other; } template <typename T> template <typename U> EZ_FORCE_INLINE void ezAmbientCube<T>::operator=(const ezAmbientCube<U>& other) { for (ezUInt32 i = 0; i < ezAmbientCubeBasis::NumDirs; ++i) { m_Values[i] = other.m_Values[i]; } } template <typename T> EZ_FORCE_INLINE bool ezAmbientCube<T>::operator==(const ezAmbientCube& other) const { return ezMemoryUtils::IsEqual(m_Values, other.m_Values); } template <typename T> EZ_ALWAYS_INLINE bool ezAmbientCube<T>::operator!=(const ezAmbientCube& other) const { return !(*this == other); } template <typename T> void ezAmbientCube<T>::AddSample(const ezVec3& vDir, const T& value) { m_Values[vDir.x > 0.0f ? 0 : 1] += ezMath::Abs(vDir.x) * value; m_Values[vDir.y > 0.0f ? 2 : 3] += ezMath::Abs(vDir.y) * value; m_Values[vDir.z > 0.0f ? 4 : 5] += ezMath::Abs(vDir.z) * value; } template <typename T> T ezAmbientCube<T>::Evaluate(const ezVec3& vNormal) const { ezVec3 vNormalSquared = vNormal.CompMul(vNormal); return vNormalSquared.x * m_Values[vNormal.x > 0.0f ? 0 : 1] + vNormalSquared.y * m_Values[vNormal.y > 0.0f ? 2 : 3] + vNormalSquared.z * m_Values[vNormal.z > 0.0f ? 4 : 5]; } template <typename T> ezResult ezAmbientCube<T>::Serialize(ezStreamWriter& inout_stream) const { return inout_stream.WriteArray(m_Values); } template <typename T> ezResult ezAmbientCube<T>::Deserialize(ezStreamReader& inout_stream) { return inout_stream.ReadArray(m_Values); }