Skip to content

Commit

Permalink
Fix panorama texture support
Browse files Browse the repository at this point in the history
  • Loading branch information
Alphalaneous committed Mar 8, 2024
1 parent a71941b commit bf51a84
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 11 deletions.
2 changes: 1 addition & 1 deletion assets/shaders/fragment.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ void main(){
float rotX = (time / resolution.x) * -20.0 * 3.14;
float rotY = (resolution.y/2 / resolution.y) * 3.14;

vec2 uv = 2.5 * (gl_FragCoord.xy - 0.5 * resolution.xy) / resolution.xx;
vec2 uv = 4 * (gl_FragCoord.xy - 0.5 * resolution.xy) / resolution.xx;

vec3 camO = vec3(cos(rotX), cos(rotY), sin(rotX));

Expand Down
2 changes: 1 addition & 1 deletion mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"gd": {
"win": "2.204"
},
"version": "v0.5.10",
"version": "v0.5.11",
"id": "zalphalaneous.minecraft",
"name": "Minecraftify!",
"developer": "Alphalaneous",
Expand Down
12 changes: 3 additions & 9 deletions src/ui/nodes/Panorama.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "Panorama.h"
#include "../../utils/GlobalVars.h"
#include "../../utils/Utils.h"

Panorama* Panorama::create(){
auto node = new Panorama;
Expand Down Expand Up @@ -66,16 +67,9 @@ bool Panorama::init(){
glBindTexture(GL_TEXTURE_CUBE_MAP, textureID);

for (unsigned int i = 0; i < faces.size(); i++) {

CCImage img;
img.initWithImageFile(faces[i].c_str());

glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0,
GL_RGB,
img.getWidth(),
img.getHeight(), 0, GL_RGB, GL_UNSIGNED_BYTE, img.getData());

Utils::generateTexture(faces[i].c_str(), GL_TEXTURE_CUBE_MAP_POSITIVE_X + i);
}

glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
Expand Down
46 changes: 46 additions & 0 deletions src/utils/Utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,56 @@

using namespace geode::prelude;


class Utils {

public:

static void generateTexture(std::string filePath, GLenum target){

CCImage img;
img.initWithImageFile(filePath.c_str());

CCTexture2D texture;
texture.initWithImage(&img);

int pixelsWide = texture.getPixelsWide();
int pixelsHigh = texture.getPixelsHigh();

CCTexture2DPixelFormat pixelFormat = texture.getPixelFormat();

auto data = img.getData();

switch(pixelFormat)
{
case kCCTexture2DPixelFormat_RGBA8888:
glTexImage2D(target, 0, GL_RGBA, (GLsizei)pixelsWide, (GLsizei)pixelsHigh, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
break;
case kCCTexture2DPixelFormat_RGB888:
glTexImage2D(target, 0, GL_RGB, (GLsizei)pixelsWide, (GLsizei)pixelsHigh, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
break;
case kCCTexture2DPixelFormat_RGBA4444:
glTexImage2D(target, 0, GL_RGBA, (GLsizei)pixelsWide, (GLsizei)pixelsHigh, 0, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, data);
break;
case kCCTexture2DPixelFormat_RGB5A1:
glTexImage2D(target, 0, GL_RGBA, (GLsizei)pixelsWide, (GLsizei)pixelsHigh, 0, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, data);
break;
case kCCTexture2DPixelFormat_RGB565:
glTexImage2D(target, 0, GL_RGB, (GLsizei)pixelsWide, (GLsizei)pixelsHigh, 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, data);
break;
case kCCTexture2DPixelFormat_AI88:
glTexImage2D(target, 0, GL_LUMINANCE_ALPHA, (GLsizei)pixelsWide, (GLsizei)pixelsHigh, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, data);
break;
case kCCTexture2DPixelFormat_A8:
glTexImage2D(target, 0, GL_ALPHA, (GLsizei)pixelsWide, (GLsizei)pixelsHigh, 0, GL_ALPHA, GL_UNSIGNED_BYTE, data);
break;
case kCCTexture2DPixelFormat_I8:
glTexImage2D(target, 0, GL_LUMINANCE, (GLsizei)pixelsWide, (GLsizei)pixelsHigh, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, data);
break;
}
}


static CCSprite* createSprite(gd::string path){

float scale = CCDirector::sharedDirector()->getContentScaleFactor()/4;
Expand Down

0 comments on commit bf51a84

Please sign in to comment.