working heightmap shader?

This commit is contained in:
Jorijn van der Graaf 2025-05-25 23:04:56 +02:00
commit fe15d3e8ca
15 changed files with 331 additions and 76 deletions

View file

@ -80,32 +80,32 @@ void WindowWaylandWayland::Start() {
thread = std::thread([this](){
while (open && wl_display_dispatch(display) != -1) {
wl_surface_attach(surface, buffer, 0, 0);
for(UiElement* element : elements.components) {
for(const UiElement& element : elements) {
std::int32_t realX;
std::int32_t realY;
std::int32_t elementWidth;
std::int32_t elementHeight;
if(element->ignoreScaling) {
if(element->useRelativeSize) {
elementWidth = element->relativeWidth*width;
elementHeight = element->relativeHeight*height;
if(element.ignoreScaling) {
if(element.useRelativeSize) {
elementWidth = element.relativeWidth*width;
elementHeight = element.relativeHeight*height;
} else {
elementWidth = element->absoluteWidth;
elementHeight = element->absoluteHeight;
elementWidth = element.absoluteWidth;
elementHeight = element.absoluteHeight;
}
} else {
if(element->useRelativeSize) {
elementWidth = element->relativeWidth*width*scale;
elementHeight = element->relativeHeight*height*scale;
if(element.useRelativeSize) {
elementWidth = element.relativeWidth*width*scale;
elementHeight = element.relativeHeight*height*scale;
} else {
elementWidth = element->absoluteWidth*scale;
elementHeight = element->absoluteHeight*scale;
elementWidth = element.absoluteWidth*scale;
elementHeight = element.absoluteHeight*scale;
}
}
realX = (element->anchorX*width)-(element->anchorOffsetX*elementWidth);
realY = (element->anchorY*height)-(element->anchorOffsetY*elementHeight);
realX = (element.anchorX*width)-(element.anchorOffsetX*elementWidth);
realY = (element.anchorY*height)-(element.anchorOffsetY*elementHeight);
std::vector<Pixel_RU8_GU8_BU8_AU8> scaled(elementWidth*elementHeight);
ScaleBitmapR8G8B8(scaled.data(), element->buffer.data(), element->bufferWidth, element->bufferHeight, elementWidth, elementHeight);
ScaleBitmapR8G8B8(scaled.data(), element.buffer.data(), element.bufferWidth, element.bufferHeight, elementWidth, elementHeight);
for(std::int32_t x = realX; x-realX < elementWidth; x++) {
for(std::int32_t y = realY; y-realY < elementHeight; y++) {
if(x > 0 && x < width && y > 0 && y < height) {