mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-12 22:28:32 +09:00
[Feat] (MG_State/SamplerState): Uniform SamplerParameters.
This commit is contained in:
@@ -3,106 +3,103 @@
|
|||||||
namespace MobileGL {
|
namespace MobileGL {
|
||||||
namespace MG_State {
|
namespace MG_State {
|
||||||
namespace GLState {
|
namespace GLState {
|
||||||
|
SamplerObject::SamplerObject(Uint externalIndex) : m_externalIndex(externalIndex) {}
|
||||||
SamplerObject::SamplerObject(Uint externalIndex)
|
|
||||||
: m_externalIndex(externalIndex), m_wrapS(SamplerWrapMode::Repeat), m_wrapT(SamplerWrapMode::Repeat),
|
|
||||||
m_wrapR(SamplerWrapMode::Repeat), m_minFilter(SamplerFilterMode::Linear),
|
|
||||||
m_magFilter(SamplerFilterMode::Linear), m_mipmapMode(SamplerMipmapMode::None), m_minLod(0.0f),
|
|
||||||
m_maxLod(1000.0f), m_lodBias(0.0f), m_compareMode(SamplerCompareMode::None),
|
|
||||||
m_compareFunc(SamplerCompareFunc::Less) {}
|
|
||||||
|
|
||||||
void SamplerObject::SetWrapS(SamplerWrapMode mode) {
|
void SamplerObject::SetWrapS(SamplerWrapMode mode) {
|
||||||
m_wrapS = mode;
|
m_samplerParameters.wrapS = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplerObject::SetWrapT(SamplerWrapMode mode) {
|
void SamplerObject::SetWrapT(SamplerWrapMode mode) {
|
||||||
m_wrapT = mode;
|
m_samplerParameters.wrapT = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplerObject::SetWrapR(SamplerWrapMode mode) {
|
void SamplerObject::SetWrapR(SamplerWrapMode mode) {
|
||||||
m_wrapR = mode;
|
m_samplerParameters.wrapR = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplerObject::SetMinFilter(SamplerFilterMode mode) {
|
void SamplerObject::SetMinFilter(SamplerFilterMode mode) {
|
||||||
m_minFilter = mode;
|
m_samplerParameters.minFilter = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplerObject::SetMagFilter(SamplerFilterMode mode) {
|
void SamplerObject::SetMagFilter(SamplerFilterMode mode) {
|
||||||
m_magFilter = mode;
|
m_samplerParameters.magFilter = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplerObject::SetMipmapMode(SamplerMipmapMode mode) {
|
void SamplerObject::SetMipmapMode(SamplerMipmapMode mode) {
|
||||||
m_mipmapMode = mode;
|
m_samplerParameters.mipmapMode = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplerObject::SetLodRange(Float minLod, Float maxLod) {
|
void SamplerObject::SetLodRange(Float minLod, Float maxLod) {
|
||||||
if (minLod > maxLod) {
|
if (minLod > maxLod) {
|
||||||
THROW_EXCEPTION("minLod cannot be greater than maxLod");
|
THROW_EXCEPTION("minLod cannot be greater than maxLod");
|
||||||
}
|
}
|
||||||
m_minLod = minLod;
|
m_samplerParameters.minLod = minLod;
|
||||||
m_maxLod = maxLod;
|
m_samplerParameters.maxLod = maxLod;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplerObject::SetLodBias(Float bias) {
|
void SamplerObject::SetLodBias(Float bias) {
|
||||||
m_lodBias = bias;
|
m_samplerParameters.lodBias = bias;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplerObject::SetSamplerCompareFunc(SamplerCompareFunc func) {
|
void SamplerObject::SetSamplerCompareFunc(SamplerCompareFunc func) {
|
||||||
m_compareFunc = func;
|
m_samplerParameters.compareFunc = func;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SamplerObject::SetCompareMode(SamplerCompareMode mode) {
|
void SamplerObject::SetCompareMode(SamplerCompareMode mode) {
|
||||||
m_compareMode = mode;
|
m_samplerParameters.compareMode = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
SamplerWrapMode SamplerObject::GetWrapS() const {
|
SamplerWrapMode SamplerObject::GetWrapS() const {
|
||||||
return m_wrapS;
|
return m_samplerParameters.wrapS;
|
||||||
}
|
}
|
||||||
|
|
||||||
SamplerWrapMode SamplerObject::GetWrapT() const {
|
SamplerWrapMode SamplerObject::GetWrapT() const {
|
||||||
return m_wrapT;
|
return m_samplerParameters.wrapT;
|
||||||
}
|
}
|
||||||
|
|
||||||
SamplerWrapMode SamplerObject::GetWrapR() const {
|
SamplerWrapMode SamplerObject::GetWrapR() const {
|
||||||
return m_wrapR;
|
return m_samplerParameters.wrapR;
|
||||||
}
|
}
|
||||||
|
|
||||||
SamplerFilterMode SamplerObject::GetMinFilter() const {
|
SamplerFilterMode SamplerObject::GetMinFilter() const {
|
||||||
return m_minFilter;
|
return m_samplerParameters.minFilter;
|
||||||
}
|
}
|
||||||
|
|
||||||
SamplerFilterMode SamplerObject::GetMagFilter() const {
|
SamplerFilterMode SamplerObject::GetMagFilter() const {
|
||||||
return m_magFilter;
|
return m_samplerParameters.magFilter;
|
||||||
}
|
}
|
||||||
|
|
||||||
SamplerMipmapMode SamplerObject::GetMipmapMode() const {
|
SamplerMipmapMode SamplerObject::GetMipmapMode() const {
|
||||||
return m_mipmapMode;
|
return m_samplerParameters.mipmapMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
Float SamplerObject::GetMinLod() const {
|
Float SamplerObject::GetMinLod() const {
|
||||||
return m_minLod;
|
return m_samplerParameters.minLod;
|
||||||
}
|
}
|
||||||
|
|
||||||
Float SamplerObject::GetMaxLod() const {
|
Float SamplerObject::GetMaxLod() const {
|
||||||
return m_maxLod;
|
return m_samplerParameters.maxLod;
|
||||||
}
|
}
|
||||||
|
|
||||||
Float SamplerObject::GetLodBias() const {
|
Float SamplerObject::GetLodBias() const {
|
||||||
return m_lodBias;
|
return m_samplerParameters.lodBias;
|
||||||
}
|
}
|
||||||
|
|
||||||
SamplerCompareMode SamplerObject::GetCompareMode() const {
|
SamplerCompareMode SamplerObject::GetCompareMode() const {
|
||||||
return m_compareMode;
|
return m_samplerParameters.compareMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
SamplerCompareFunc SamplerObject::GetSamplerCompareFunc() const {
|
SamplerCompareFunc SamplerObject::GetSamplerCompareFunc() const {
|
||||||
return m_compareFunc;
|
return m_samplerParameters.compareFunc;
|
||||||
}
|
}
|
||||||
|
|
||||||
Uint SamplerObject::GetExternalIndex() const {
|
Uint SamplerObject::GetExternalIndex() const {
|
||||||
return m_externalIndex;
|
return m_externalIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const SamplerParameters& SamplerObject::GetAllSamplerParameters() const {
|
||||||
|
return m_samplerParameters;
|
||||||
|
}
|
||||||
} // namespace GLState
|
} // namespace GLState
|
||||||
} // namespace MG_State
|
} // namespace MG_State
|
||||||
} // namespace MobileGL
|
} // namespace MobileGL
|
||||||
|
|||||||
@@ -45,6 +45,20 @@ namespace MobileGL {
|
|||||||
Unknown = -1
|
Unknown = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct SamplerParameters {
|
||||||
|
SamplerWrapMode wrapS = SamplerWrapMode::Repeat;
|
||||||
|
SamplerWrapMode wrapT = SamplerWrapMode::Repeat;
|
||||||
|
SamplerWrapMode wrapR = SamplerWrapMode::Repeat;
|
||||||
|
SamplerFilterMode minFilter = SamplerFilterMode::Linear;
|
||||||
|
SamplerFilterMode magFilter = SamplerFilterMode::Linear;
|
||||||
|
SamplerMipmapMode mipmapMode = SamplerMipmapMode::None;
|
||||||
|
Float minLod = -1000.0f;
|
||||||
|
Float maxLod = 1000.0f;
|
||||||
|
Float lodBias = 0.0f;
|
||||||
|
SamplerCompareFunc compareFunc = SamplerCompareFunc::Always;
|
||||||
|
SamplerCompareMode compareMode = SamplerCompareMode::None;
|
||||||
|
};
|
||||||
|
|
||||||
namespace MG_State {
|
namespace MG_State {
|
||||||
namespace GLState {
|
namespace GLState {
|
||||||
class SamplerObject {
|
class SamplerObject {
|
||||||
@@ -74,16 +88,11 @@ namespace MobileGL {
|
|||||||
SamplerCompareMode GetCompareMode() const;
|
SamplerCompareMode GetCompareMode() const;
|
||||||
SamplerCompareFunc GetSamplerCompareFunc() const;
|
SamplerCompareFunc GetSamplerCompareFunc() const;
|
||||||
Uint GetExternalIndex() const;
|
Uint GetExternalIndex() const;
|
||||||
|
const SamplerParameters& GetAllSamplerParameters() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const Uint m_externalIndex;
|
const Uint m_externalIndex;
|
||||||
SamplerWrapMode m_wrapS, m_wrapT, m_wrapR;
|
SamplerParameters m_samplerParameters;
|
||||||
SamplerFilterMode m_minFilter, m_magFilter;
|
|
||||||
SamplerMipmapMode m_mipmapMode;
|
|
||||||
Float m_minLod, m_maxLod;
|
|
||||||
Float m_lodBias;
|
|
||||||
SamplerCompareMode m_compareMode;
|
|
||||||
SamplerCompareFunc m_compareFunc;
|
|
||||||
};
|
};
|
||||||
} // namespace GLState
|
} // namespace GLState
|
||||||
} // namespace MG_State
|
} // namespace MG_State
|
||||||
|
|||||||
Reference in New Issue
Block a user