all planets has random textures
@ -14,15 +14,19 @@ private:
|
||||
float scale;
|
||||
glm::vec3 position;
|
||||
glm::mat4 positionMatrix;
|
||||
GLuint textureID;
|
||||
GLuint normalMapID;
|
||||
|
||||
public:
|
||||
Planet(GameObject* center, float distanceFromCenter, float rotationSpeed, float scale, Core::RenderContext sphereContext) {
|
||||
Planet(GameObject* center, float distanceFromCenter, float rotationSpeed, float scale, Core::RenderContext sphereContext, GLuint textureID, GLuint normalMapID) {
|
||||
this->center = center;
|
||||
this->distanceFromCenter = distanceFromCenter;
|
||||
this->rotationSpeed = rotationSpeed;
|
||||
this->sphereContext = sphereContext;
|
||||
this->scale = scale;
|
||||
this->position = glm::vec3(0);
|
||||
this->textureID = textureID;
|
||||
this->normalMapID = normalMapID;
|
||||
}
|
||||
|
||||
glm::mat4 getPositionMatrix() override {
|
||||
@ -37,6 +41,6 @@ public:
|
||||
float rotationAngle = glm::radians(time * rotationSpeed);
|
||||
positionMatrix = center->getPositionMatrix() * glm::eulerAngleY(time * rotationSpeed) * glm::translate(glm::vec3(distanceFromCenter, 0, 0));
|
||||
glm::mat4 modelMatrix = positionMatrix * glm::scale(glm::vec3(scale));
|
||||
Core::drawObjectPBR(sphereContext, modelMatrix, glm::vec3(0.2, 0.7, 0.3), 0.3, 0.0, program);
|
||||
Core::drawObjectPBRTexture(sphereContext, modelMatrix, textureID, 0.7, 0.0, program);
|
||||
}
|
||||
};
|
@ -43,6 +43,14 @@ namespace texture {
|
||||
GLuint earthTexture;
|
||||
}
|
||||
|
||||
struct TextureTuple {
|
||||
GLuint textureID;
|
||||
GLuint normalMapID;
|
||||
};
|
||||
|
||||
std::vector<TextureTuple> planetTextures;
|
||||
|
||||
|
||||
void createGalaxy(glm::vec3 galaxyPosition);
|
||||
|
||||
GLuint depthMapFBO;
|
||||
@ -85,6 +93,15 @@ void updateDeltaTime(float time) {
|
||||
lastTime = time;
|
||||
}
|
||||
|
||||
TextureTuple getRandomPlanetTexture() {
|
||||
int textureIndex = rand() % planetTextures.size();
|
||||
TextureTuple selectedTextures = planetTextures[textureIndex];
|
||||
//GLuint textureID = selectedTextures.textureID;
|
||||
//GLuint normalMapID = selectedTextures.normalMapID;
|
||||
|
||||
return planetTextures[textureIndex];
|
||||
}
|
||||
|
||||
void renderShadowapSun() {
|
||||
float time = glfwGetTime();
|
||||
glViewport(0, 0, SHADOW_WIDTH, SHADOW_HEIGHT);
|
||||
@ -113,12 +130,13 @@ void renderScene(GLFWwindow* window)
|
||||
sun->draw();
|
||||
}
|
||||
|
||||
glUseProgram(program);
|
||||
|
||||
glUseProgram(programTex);
|
||||
for (Planet* p : planets) {
|
||||
p->draw(time, program);
|
||||
p->draw(time, programTex);
|
||||
}
|
||||
|
||||
glUseProgram(program);
|
||||
|
||||
spaceship->renderBullets(glfwGetTime(), program);
|
||||
|
||||
|
||||
@ -196,8 +214,11 @@ void createSolarSystem(glm::vec3 sunPos, float sunScale, float* planetSizes, int
|
||||
sun = new Sun(programSun, models::sphereContext, sunPos, glm::vec3(-0.93633f, 0.351106, 0.003226f), glm::vec3(0.9f, 0.9f, 0.7f) * 5, sunScale);
|
||||
gu->getSuns()->push_back(sun);
|
||||
for (int i = 0; i < numberOfPlanets; i++) {
|
||||
TextureTuple textures = getRandomPlanetTexture();
|
||||
GLuint texID = textures.textureID;
|
||||
GLuint norMapID = textures.normalMapID;
|
||||
float distanceFromSum = (i + 1) * planetsDistance;
|
||||
Planet* planet = new Planet(sun, distanceFromSum, i * 0.1f + planetSpeedCoef, planetSizes[i], models::sphereContext);
|
||||
Planet* planet = new Planet(sun, distanceFromSum, i * 0.1f + planetSpeedCoef, planetSizes[i], models::sphereContext, texID, norMapID);
|
||||
planets.push_back(planet);
|
||||
}
|
||||
}
|
||||
@ -210,6 +231,25 @@ void createEnemies() {
|
||||
|
||||
}
|
||||
|
||||
void loadPlanetsTextures() {
|
||||
planetTextures.clear();
|
||||
|
||||
std::vector<std::pair<std::string, std::string>> texturePaths = {
|
||||
{"./textures/planets/planet1.png", "./textures/planets/planet1normal.png"},
|
||||
{"./textures/planets/planet2.png", "./textures/planets/planet2normal.png"},
|
||||
{"./textures/planets/planet3.png", "./textures/planets/planet3normal.png"},
|
||||
{"./textures/planets/planet4.png", "./textures/planets/planet4normal.png"}
|
||||
};
|
||||
|
||||
for (const auto& paths : texturePaths) {
|
||||
GLuint textureID = Core::LoadTexture(paths.first.c_str());
|
||||
GLuint normalMapID = Core::LoadTexture(paths.second.c_str());
|
||||
planetTextures.push_back({ textureID, normalMapID });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void init(GLFWwindow* window)
|
||||
{
|
||||
GameUtils* gameUtils = GameUtils::getInstance();
|
||||
@ -244,9 +284,10 @@ void init(GLFWwindow* window)
|
||||
"bkg2_back6.png"
|
||||
};
|
||||
|
||||
loadPlanetsTextures();
|
||||
texture::cubemapTexture = Core::LoadCubemap(cubeFaces);
|
||||
texture::spaceshipTexture = Core::LoadTexture("./textures/spaceship/Material.001_Base_color.jpg");
|
||||
texture::earthTexture = Core::LoadTexture("./textures/spaceship/earth_daymap.jpg");
|
||||
texture::earthTexture = Core::LoadTexture("./textures/planets/8k_earth_daymap.jpg");
|
||||
|
||||
spaceship->createParticles();
|
||||
createSuns();
|
||||
|
BIN
grk/project/textures/planets/8k_earth_clouds.jpg
Normal file
After Width: | Height: | Size: 11 MiB |
BIN
grk/project/textures/planets/8k_earth_daymap.jpg
Normal file
After Width: | Height: | Size: 4.4 MiB |
BIN
grk/project/textures/planets/8k_earth_nightmap.jpg
Normal file
After Width: | Height: | Size: 3.0 MiB |
BIN
grk/project/textures/planets/8k_earth_normal_map.jpg
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
grk/project/textures/planets/earth_daymap.jpg
Normal file
After Width: | Height: | Size: 452 KiB |
BIN
grk/project/textures/planets/planet1.png
Normal file
After Width: | Height: | Size: 3.1 MiB |
BIN
grk/project/textures/planets/planet1normal.png
Normal file
After Width: | Height: | Size: 1.7 MiB |
BIN
grk/project/textures/planets/planet2.png
Normal file
After Width: | Height: | Size: 2.4 MiB |
BIN
grk/project/textures/planets/planet2normal.png
Normal file
After Width: | Height: | Size: 2.1 MiB |
BIN
grk/project/textures/planets/planet3.png
Normal file
After Width: | Height: | Size: 3.7 MiB |
BIN
grk/project/textures/planets/planet3normal.png
Normal file
After Width: | Height: | Size: 2.2 MiB |
BIN
grk/project/textures/planets/planet4.png
Normal file
After Width: | Height: | Size: 3.3 MiB |
BIN
grk/project/textures/planets/planet4normal.png
Normal file
After Width: | Height: | Size: 2.3 MiB |