add textures and programs for plants

This commit is contained in:
Thyme1 2022-01-25 19:11:47 +01:00
parent 1ecf2d309f
commit c99d7d76db
17 changed files with 39427 additions and 6 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<ShowAllFiles>true</ShowAllFiles> <ShowAllFiles>false</ShowAllFiles>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -35,6 +35,8 @@ void main()
vec3 R = reflect(-normalize(lightDir),normal); vec3 R = reflect(-normalize(lightDir),normal);
float ambient = 0.2; float ambient = 0.2;
float specular = pow(max(0,dot(R,V)),1000); float specular = pow(max(0,dot(R,V)),1000);
gl_FragColor = vec4(color*(ambient + (1-ambient)*diffuse)+vec3(1)*specular*0.2, 1.0) * (1.0f - depth) + vec4(depth * vec3(0.0f, 0.109f, 0.447f), 1.0f);; gl_FragColor = vec4(color*(ambient + (1-ambient)*diffuse)+vec3(1)*specular*0.2, 1.0);
//gl_FragColor = vec4(color*(ambient + (1-ambient)*diffuse)+vec3(1)*specular*0.2, 1.0) * (1.0f - depth) + vec4(depth * vec3(0.0f, 0.109f, 0.447f), 1.0f);;
} }

View File

@ -17,6 +17,13 @@ void Core::Engine::initRenderContexts() {
loadModelToContext("models/fish.obj", this->fishContext); loadModelToContext("models/fish.obj", this->fishContext);
loadModelToContext("models/submarine.obj", this->submarineContext); loadModelToContext("models/submarine.obj", this->submarineContext);
loadModelToContext("models/sphere.obj", this->bubbleContext); loadModelToContext("models/sphere.obj", this->bubbleContext);
loadModelToContext("models/arch.obj", this->archContext);
loadModelToContext("models/coral01.obj", this->coral1Context);
loadModelToContext("models/plant1.obj", this->plant1Context);
loadModelToContext("models/plant2.obj", this->plant2Context);
loadModelToContext("models/plant3.obj", this->plant3Context);
loadModelToContext("models/rocktower1.obj", this->rocktower1Context);
this->terrain = Terrain(this->heightGenerator); this->terrain = Terrain(this->heightGenerator);
obj::Model model = this->terrain.generateTerrain(); obj::Model model = this->terrain.generateTerrain();
@ -28,6 +35,12 @@ void Core::Engine::loadTextures() {
this->submarineTexture = LoadTexture("textures/submarine.png"); this->submarineTexture = LoadTexture("textures/submarine.png");
this->bubbleTexture = LoadTexture("textures/bubble.png"); this->bubbleTexture = LoadTexture("textures/bubble.png");
this->terrainTexture = LoadTexture("textures/sand2.jpg"); this->terrainTexture = LoadTexture("textures/sand2.jpg");
this->archTexture = LoadTexture("textures/arch.png");
this->coral1Texture = LoadTexture("textures/coral01.png");
this->plant1Texture = LoadTexture("textures/plant1.png");
this->plant2Texture = LoadTexture("textures/plant2.png");
this->plant3Texture = LoadTexture("textures/plant3.png");
this->rocktowerTexture = LoadTexture("textures/rocktower1.png");
this->skyboxTexture = loadCubemap(); this->skyboxTexture = loadCubemap();
} }
@ -84,6 +97,14 @@ void Core::Engine::generateBubbleArray() {
} }
} }
void Core::Engine::generateGrassArray() {
for (int i = 0; i < 200; i++) {
float random1 = this->distr(this->gen);
float random2 = this->distr(this->gen);
grassArray[i] = glm::vec3(random1, -skyboxVerticeParameter + 10, random2);
}
}
void Core::Engine::initBubbles() { void Core::Engine::initBubbles() {
this->generateBubbleArray(); this->generateBubbleArray();
} }

View File

@ -15,10 +15,11 @@ namespace Core {
class Engine { class Engine {
public: public:
GLuint textureShader, skyboxShader, bubbleShader; GLuint textureShader, skyboxShader, bubbleShader;
GLuint submarineTexture, bubbleTexture, fishTexture, terrainTexture, skyboxTexture; GLuint submarineTexture, bubbleTexture, fishTexture, terrainTexture, skyboxTexture, plant1Texture, plant2Texture, plant3Texture, coral1Texture, rocktowerTexture, archTexture ;
GLuint skyboxVAO; GLuint skyboxVAO;
Core::RenderContext submarineContext, fishContext, bubbleContext, terrainContext; Core::RenderContext submarineContext, fishContext, bubbleContext, terrainContext, plant1Context, plant2Context, plant3Context, coral1Context, rocktower1Context, archContext;
std::vector<glm::vec3> bubbleArray[300]; std::vector<glm::vec3> bubbleArray[300];
glm::vec3 grassArray[200];
void initShaderPrograms(); void initShaderPrograms();
void shutdownShaderPrograms(); void shutdownShaderPrograms();
void initRenderContexts(); void initRenderContexts();
@ -37,6 +38,7 @@ namespace Core {
std::default_random_engine gen; std::default_random_engine gen;
void initCube(); void initCube();
void generateBubbleArray(); void generateBubbleArray();
void generateGrassArray();
std::vector<glm::vec3> genBubbleKeyPoints(); std::vector<glm::vec3> genBubbleKeyPoints();
}; };

View File

@ -232,7 +232,6 @@ void renderScene()
Core::drawObjectTexture(engine.fishContext, animationMatrix(time + 15, change2, fishKeyPoints, glm::vec3(0.25f), 1.f), engine.fishTexture, engine.textureShader, lightDir, cameraMatrix, perspectiveMatrix); Core::drawObjectTexture(engine.fishContext, animationMatrix(time + 15, change2, fishKeyPoints, glm::vec3(0.25f), 1.f), engine.fishTexture, engine.textureShader, lightDir, cameraMatrix, perspectiveMatrix);
Core::drawObjectTexture(engine.fishContext, animationMatrix(time + 15, change3, fishKeyPoints, glm::vec3(0.25f), 1.f), engine.fishTexture, engine.textureShader, lightDir, cameraMatrix, perspectiveMatrix); Core::drawObjectTexture(engine.fishContext, animationMatrix(time + 15, change3, fishKeyPoints, glm::vec3(0.25f), 1.f), engine.fishTexture, engine.textureShader, lightDir, cameraMatrix, perspectiveMatrix);
Core::drawObjectTexture(engine.fishContext, animationMatrix(time + 15, change4, fishKeyPoints, glm::vec3(0.25f), 1.f), engine.fishTexture, engine.textureShader, lightDir, cameraMatrix, perspectiveMatrix); Core::drawObjectTexture(engine.fishContext, animationMatrix(time + 15, change4, fishKeyPoints, glm::vec3(0.25f), 1.f), engine.fishTexture, engine.textureShader, lightDir, cameraMatrix, perspectiveMatrix);
time -= 6; time -= 6;
} }
} }
@ -242,7 +241,6 @@ void renderScene()
glm::mat4 terrainTransformation = glm::translate(glm::vec3(200, -185, 200)) * glm::rotate(glm::radians(180.f), glm::vec3(0, 1, 0)) * glm::scale(glm::vec3(8.f)); glm::mat4 terrainTransformation = glm::translate(glm::vec3(200, -185, 200)) * glm::rotate(glm::radians(180.f), glm::vec3(0, 1, 0)) * glm::scale(glm::vec3(8.f));
Core::drawObjectTexture(engine.terrainContext, terrainTransformation, engine.terrainTexture, engine.textureShader, lightDir, cameraMatrix, perspectiveMatrix); Core::drawObjectTexture(engine.terrainContext, terrainTransformation, engine.terrainTexture, engine.textureShader, lightDir, cameraMatrix, perspectiveMatrix);
glutSwapBuffers(); glutSwapBuffers();
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB