Merge pull request #180 from Wellinator/feature/texture_wraping

Adds support for texture region repeat
This commit is contained in:
Sandro Sobczyński
2024-02-11 13:38:20 +01:00
committed by GitHub
12 changed files with 327 additions and 3 deletions
@@ -62,7 +62,8 @@ class Texture {
/** Set texture wrapping */
void setWrapSettings(const TextureWrap t_horizontal,
const TextureWrap t_vertical);
const TextureWrap t_vertical, int minu = 0, int minv = 0,
int maxu = 0, int maxv = 0);
// ----
// Other
@@ -96,9 +97,10 @@ class Texture {
void print(const std::string& name) const { print(name.c_str()); }
std::string getPrint(const char* name = nullptr) const;
void setDefaultWrapSettings();
private:
void setPsm();
void setDefaultWrapSettings();
texwrap_t wrap;
};
@@ -29,6 +29,12 @@ class RendererCoreTexture {
RendererCoreTextureBuffers useTexture(const Texture* t_tex);
/**
* Called by user after changing texture wrap settings
* Updates texture packet without reallocate it
*/
RendererCoreTextureBuffers updateTextureInfo(const Texture* t_tex);
/** Called by renderer during initialization */
void init(RendererCoreGS* gs, Path3* path3);
@@ -178,9 +178,14 @@ void Texture::setDefaultWrapSettings() {
}
void Texture::setWrapSettings(const TextureWrap t_horizontal,
const TextureWrap t_vertical) {
const TextureWrap t_vertical, int minu, int minv,
int maxu, int maxv) {
wrap.horizontal = t_horizontal;
wrap.vertical = t_vertical;
wrap.minu = minu;
wrap.minv = minv;
wrap.maxu = maxu;
wrap.maxv = maxv;
}
void Texture::addLink(const u32& t_id) {
@@ -57,6 +57,17 @@ RendererCoreTextureBuffers RendererCoreTexture::useTexture(
return newTexBuffer;
}
RendererCoreTextureBuffers RendererCoreTexture::updateTextureInfo(
const Texture* t_tex) {
TYRA_ASSERT(t_tex != nullptr, "Provided nullptr texture!");
auto allocated = getAllocatedBuffersByTextureId(t_tex->id);
TYRA_ASSERT(allocated.id != 0, "Can't update an unallocated texture!");
path3->sendTexture(t_tex, allocated);
return allocated;
}
RendererCoreTextureBuffers RendererCoreTexture::getAllocatedBuffersByTextureId(
const u32& t_id) {
for (u32 i = 0; i < currentAllocations.size(); i++)