Review models examples
This commit is contained in:
parent
a197f40bb4
commit
be6d237b9e
12 changed files with 44 additions and 33 deletions
|
@ -31,7 +31,7 @@ int main()
|
||||||
|
|
||||||
// NOTE: By default each cube is mapped to one part of texture atlas
|
// NOTE: By default each cube is mapped to one part of texture atlas
|
||||||
Texture2D texture = LoadTexture("resources/cubicmap_atlas.png"); // Load map texture
|
Texture2D texture = LoadTexture("resources/cubicmap_atlas.png"); // Load map texture
|
||||||
model.material.maps[MAP_DIFFUSE].texture = texture; // Set map diffuse texture
|
model.materials[0].maps[MAP_DIFFUSE].texture = texture; // Set map diffuse texture
|
||||||
|
|
||||||
Vector3 mapPosition = { -16.0f, 0.0f, -8.0f }; // Set model position
|
Vector3 mapPosition = { -16.0f, 0.0f, -8.0f }; // Set model position
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ int main()
|
||||||
Mesh mesh = GenMeshHeightmap(image, (Vector3){ 16, 8, 16 }); // Generate heightmap mesh (RAM and VRAM)
|
Mesh mesh = GenMeshHeightmap(image, (Vector3){ 16, 8, 16 }); // Generate heightmap mesh (RAM and VRAM)
|
||||||
Model model = LoadModelFromMesh(mesh); // Load model from generated mesh
|
Model model = LoadModelFromMesh(mesh); // Load model from generated mesh
|
||||||
|
|
||||||
model.material.maps[MAP_DIFFUSE].texture = texture; // Set map diffuse texture
|
model.materials[0].maps[MAP_DIFFUSE].texture = texture; // Set map diffuse texture
|
||||||
Vector3 mapPosition = { -8.0f, 0.0f, -8.0f }; // Define model position
|
Vector3 mapPosition = { -8.0f, 0.0f, -8.0f }; // Define model position
|
||||||
|
|
||||||
UnloadImage(image); // Unload heightmap image from RAM, already uploaded to VRAM
|
UnloadImage(image); // Unload heightmap image from RAM, already uploaded to VRAM
|
||||||
|
|
|
@ -38,16 +38,16 @@ int main()
|
||||||
|
|
||||||
// Load model and PBR material
|
// Load model and PBR material
|
||||||
Model model = LoadModel("resources/pbr/trooper.obj");
|
Model model = LoadModel("resources/pbr/trooper.obj");
|
||||||
MeshTangents(&model.mesh);
|
MeshTangents(&model.meshes[0]);
|
||||||
model.material = LoadMaterialPBR((Color){ 255, 255, 255, 255 }, 1.0f, 1.0f);
|
model.materials[0] = LoadMaterialPBR((Color){ 255, 255, 255, 255 }, 1.0f, 1.0f);
|
||||||
|
|
||||||
// Define lights attributes
|
// Define lights attributes
|
||||||
// NOTE: Shader is passed to every light on creation to define shader bindings internally
|
// NOTE: Shader is passed to every light on creation to define shader bindings internally
|
||||||
Light lights[MAX_LIGHTS] = {
|
Light lights[MAX_LIGHTS] = {
|
||||||
CreateLight(LIGHT_POINT, (Vector3){ LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 0, 255 }, model.material.shader),
|
CreateLight(LIGHT_POINT, (Vector3){ LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 0, 255 }, model.materials[0].shader),
|
||||||
CreateLight(LIGHT_POINT, (Vector3){ 0.0f, LIGHT_HEIGHT, LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 255, 0, 255 }, model.material.shader),
|
CreateLight(LIGHT_POINT, (Vector3){ 0.0f, LIGHT_HEIGHT, LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 255, 0, 255 }, model.materials[0].shader),
|
||||||
CreateLight(LIGHT_POINT, (Vector3){ -LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 0, 255, 255 }, model.material.shader),
|
CreateLight(LIGHT_POINT, (Vector3){ -LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 0, 255, 255 }, model.materials[0].shader),
|
||||||
CreateLight(LIGHT_DIRECTIONAL, (Vector3){ 0.0f, LIGHT_HEIGHT*2.0f, -LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 255, 255 }, model.material.shader)
|
CreateLight(LIGHT_DIRECTIONAL, (Vector3){ 0.0f, LIGHT_HEIGHT*2.0f, -LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 255, 255 }, model.materials[0].shader)
|
||||||
};
|
};
|
||||||
|
|
||||||
SetCameraMode(camera, CAMERA_ORBITAL); // Set an orbital camera mode
|
SetCameraMode(camera, CAMERA_ORBITAL); // Set an orbital camera mode
|
||||||
|
@ -64,7 +64,7 @@ int main()
|
||||||
|
|
||||||
// Send to material PBR shader camera view position
|
// Send to material PBR shader camera view position
|
||||||
float cameraPos[3] = { camera.position.x, camera.position.y, camera.position.z };
|
float cameraPos[3] = { camera.position.x, camera.position.y, camera.position.z };
|
||||||
SetShaderValue(model.material.shader, model.material.shader.locs[LOC_VECTOR_VIEW], cameraPos, UNIFORM_VEC3);
|
SetShaderValue(model.materials[0].shader, model.materials[0].shader.locs[LOC_VECTOR_VIEW], cameraPos, UNIFORM_VEC3);
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
|
|
||||||
// Draw
|
// Draw
|
||||||
|
|
|
@ -39,7 +39,7 @@ int main()
|
||||||
models[7] = LoadModelFromMesh(GenMeshPoly(5, 2.0f));
|
models[7] = LoadModelFromMesh(GenMeshPoly(5, 2.0f));
|
||||||
|
|
||||||
// Set checked texture as default diffuse component for all models material
|
// Set checked texture as default diffuse component for all models material
|
||||||
for (int i = 0; i < NUM_MODELS; i++) models[i].material.maps[MAP_DIFFUSE].texture = texture;
|
for (int i = 0; i < NUM_MODELS; i++) models[i].materials[0].maps[MAP_DIFFUSE].texture = texture;
|
||||||
|
|
||||||
// Define the camera to look into our 3d world
|
// Define the camera to look into our 3d world
|
||||||
Camera camera = {{ 5.0f, 5.0f, 5.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f, 0 };
|
Camera camera = {{ 5.0f, 5.0f, 5.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f, 0 };
|
||||||
|
@ -65,6 +65,17 @@ int main()
|
||||||
{
|
{
|
||||||
currentModel = (currentModel + 1)%NUM_MODELS; // Cycle between the textures
|
currentModel = (currentModel + 1)%NUM_MODELS; // Cycle between the textures
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IsKeyPressed(KEY_RIGHT))
|
||||||
|
{
|
||||||
|
currentModel++;
|
||||||
|
if (currentModel >= NUM_MODELS) currentModel = 0;
|
||||||
|
}
|
||||||
|
else if (IsKeyPressed(KEY_LEFT))
|
||||||
|
{
|
||||||
|
currentModel--;
|
||||||
|
if (currentModel < 0) currentModel = NUM_MODELS - 1;
|
||||||
|
}
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
|
|
||||||
// Draw
|
// Draw
|
||||||
|
|
|
@ -26,7 +26,7 @@ int main()
|
||||||
|
|
||||||
// Define the camera to look into our 3d world
|
// Define the camera to look into our 3d world
|
||||||
Camera camera = { 0 };
|
Camera camera = { 0 };
|
||||||
camera.position = (Vector3){ 20.0f, 20.0f, 20.0f }; // Camera position
|
camera.position = (Vector3){ 20.0f, 20.0f, 20.0f }; // Camera position
|
||||||
camera.target = (Vector3){ 0.0f, 8.0f, 0.0f }; // Camera looking at point
|
camera.target = (Vector3){ 0.0f, 8.0f, 0.0f }; // Camera looking at point
|
||||||
camera.up = (Vector3){ 0.0f, 1.6f, 0.0f }; // Camera up vector (rotation towards target)
|
camera.up = (Vector3){ 0.0f, 1.6f, 0.0f }; // Camera up vector (rotation towards target)
|
||||||
camera.fovy = 45.0f; // Camera field-of-view Y
|
camera.fovy = 45.0f; // Camera field-of-view Y
|
||||||
|
@ -36,10 +36,10 @@ int main()
|
||||||
|
|
||||||
Model tower = LoadModel("resources/models/turret.obj"); // Load OBJ model
|
Model tower = LoadModel("resources/models/turret.obj"); // Load OBJ model
|
||||||
Texture2D texture = LoadTexture("resources/models/turret_diffuse.png"); // Load model texture
|
Texture2D texture = LoadTexture("resources/models/turret_diffuse.png"); // Load model texture
|
||||||
tower.material.maps[MAP_DIFFUSE].texture = texture; // Set model diffuse texture
|
tower.materials[0].maps[MAP_DIFFUSE].texture = texture; // Set model diffuse texture
|
||||||
|
|
||||||
Vector3 towerPos = { 0.0f, 0.0f, 0.0f }; // Set model position
|
Vector3 towerPos = { 0.0f, 0.0f, 0.0f }; // Set model position
|
||||||
BoundingBox towerBBox = MeshBoundingBox(tower.mesh); // Get mesh bounding box
|
BoundingBox towerBBox = MeshBoundingBox(tower.meshes[0]); // Get mesh bounding box
|
||||||
bool hitMeshBBox = false;
|
bool hitMeshBBox = false;
|
||||||
bool hitTriangle = false;
|
bool hitTriangle = false;
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ int main()
|
||||||
|
|
||||||
Model model = LoadModel("resources/models/castle.obj"); // Load OBJ model
|
Model model = LoadModel("resources/models/castle.obj"); // Load OBJ model
|
||||||
Texture2D texture = LoadTexture("resources/models/castle_diffuse.png"); // Load model texture
|
Texture2D texture = LoadTexture("resources/models/castle_diffuse.png"); // Load model texture
|
||||||
model.material.maps[MAP_DIFFUSE].texture = texture; // Set map diffuse texture
|
model.materials[0].maps[MAP_DIFFUSE].texture = texture; // Set map diffuse texture
|
||||||
Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position
|
Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position
|
||||||
|
|
||||||
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
|
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
|
||||||
|
|
|
@ -27,13 +27,13 @@ int main()
|
||||||
|
|
||||||
Model model = LoadModel("resources/models/turret.obj"); // Load default model obj
|
Model model = LoadModel("resources/models/turret.obj"); // Load default model obj
|
||||||
Texture2D texture = LoadTexture("resources/models/turret_diffuse.png"); // Load default model texture
|
Texture2D texture = LoadTexture("resources/models/turret_diffuse.png"); // Load default model texture
|
||||||
model.material.maps[MAP_DIFFUSE].texture = texture; // Bind texture to model
|
model.materials[0].maps[MAP_DIFFUSE].texture = texture; // Bind texture to model
|
||||||
|
|
||||||
Vector3 position = { 0.0, 0.0, 0.0 }; // Set model position
|
Vector3 position = { 0.0, 0.0, 0.0 }; // Set model position
|
||||||
BoundingBox bounds = MeshBoundingBox(model.mesh); // Set model bounds
|
BoundingBox bounds = MeshBoundingBox(model.meshes[0]); // Set model bounds
|
||||||
bool selected = false; // Selected object flag
|
bool selected = false; // Selected object flag
|
||||||
|
|
||||||
SetCameraMode(camera, CAMERA_FREE); // Set a free camera mode
|
SetCameraMode(camera, CAMERA_FREE); // Set a free camera mode
|
||||||
|
|
||||||
char objFilename[64] = "turret.obj";
|
char objFilename[64] = "turret.obj";
|
||||||
|
|
||||||
|
@ -54,15 +54,15 @@ int main()
|
||||||
{
|
{
|
||||||
if (IsFileExtension(droppedFiles[0], ".obj"))
|
if (IsFileExtension(droppedFiles[0], ".obj"))
|
||||||
{
|
{
|
||||||
UnloadMesh(&model.mesh);
|
UnloadMesh(&model.meshes[0]);
|
||||||
model.mesh = LoadMesh(droppedFiles[0]);
|
model.meshes[0] = LoadMesh(droppedFiles[0]);
|
||||||
bounds = MeshBoundingBox(model.mesh);
|
bounds = MeshBoundingBox(model.meshes[0]);
|
||||||
}
|
}
|
||||||
else if (IsFileExtension(droppedFiles[0], ".png"))
|
else if (IsFileExtension(droppedFiles[0], ".png"))
|
||||||
{
|
{
|
||||||
UnloadTexture(texture);
|
UnloadTexture(texture);
|
||||||
texture = LoadTexture(droppedFiles[0]);
|
texture = LoadTexture(droppedFiles[0]);
|
||||||
model.material.maps[MAP_DIFFUSE].texture = texture;
|
model.materials[0].maps[MAP_DIFFUSE].texture = texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(objFilename, GetFileName(droppedFiles[0]));
|
strcpy(objFilename, GetFileName(droppedFiles[0]));
|
||||||
|
|
|
@ -29,8 +29,8 @@ int main()
|
||||||
|
|
||||||
// Load skybox shader and set required locations
|
// Load skybox shader and set required locations
|
||||||
// NOTE: Some locations are automatically set at shader loading
|
// NOTE: Some locations are automatically set at shader loading
|
||||||
skybox.material.shader = LoadShader("resources/shaders/skybox.vs", "resources/shaders/skybox.fs");
|
skybox.materials[0].shader = LoadShader("resources/shaders/skybox.vs", "resources/shaders/skybox.fs");
|
||||||
SetShaderValue(skybox.material.shader, GetShaderLocation(skybox.material.shader, "environmentMap"), (int[1]){ MAP_CUBEMAP }, UNIFORM_INT);
|
SetShaderValue(skybox.materials[0].shader, GetShaderLocation(skybox.materials[0].shader, "environmentMap"), (int[1]){ MAP_CUBEMAP }, UNIFORM_INT);
|
||||||
|
|
||||||
// Load cubemap shader and setup required shader locations
|
// Load cubemap shader and setup required shader locations
|
||||||
Shader shdrCubemap = LoadShader("resources/shaders/cubemap.vs", "resources/shaders/cubemap.fs");
|
Shader shdrCubemap = LoadShader("resources/shaders/cubemap.vs", "resources/shaders/cubemap.fs");
|
||||||
|
@ -41,7 +41,7 @@ int main()
|
||||||
|
|
||||||
// Generate cubemap (texture with 6 quads-cube-mapping) from panorama HDR texture
|
// Generate cubemap (texture with 6 quads-cube-mapping) from panorama HDR texture
|
||||||
// NOTE: New texture is generated rendering to texture, shader computes the sphre->cube coordinates mapping
|
// NOTE: New texture is generated rendering to texture, shader computes the sphre->cube coordinates mapping
|
||||||
skybox.material.maps[MAP_CUBEMAP].texture = GenTextureCubemap(shdrCubemap, texHDR, 512);
|
skybox.materials[0].maps[MAP_CUBEMAP].texture = GenTextureCubemap(shdrCubemap, texHDR, 512);
|
||||||
|
|
||||||
UnloadTexture(texHDR); // Texture not required anymore, cubemap already generated
|
UnloadTexture(texHDR); // Texture not required anymore, cubemap already generated
|
||||||
UnloadShader(shdrCubemap); // Unload cubemap generation shader, not required anymore
|
UnloadShader(shdrCubemap); // Unload cubemap generation shader, not required anymore
|
||||||
|
|
|
@ -37,10 +37,10 @@ int main()
|
||||||
RenderTexture2D framebuffer = LoadRenderTexture(192, 192);
|
RenderTexture2D framebuffer = LoadRenderTexture(192, 192);
|
||||||
|
|
||||||
// Model loading
|
// Model loading
|
||||||
Model model = LoadModel("resources/plane.obj"); // Load OBJ model
|
Model model = LoadModel("resources/plane.obj"); // Load OBJ model
|
||||||
model.material.maps[MAP_DIFFUSE].texture = LoadTexture("resources/plane_diffuse.png"); // Set map diffuse texture
|
model.materials[0].maps[MAP_DIFFUSE].texture = LoadTexture("resources/plane_diffuse.png"); // Set map diffuse texture
|
||||||
|
|
||||||
GenTextureMipmaps(&model.material.maps[MAP_DIFFUSE].texture);
|
GenTextureMipmaps(&model.materials[0].maps[MAP_DIFFUSE].texture);
|
||||||
|
|
||||||
Camera camera = { 0 };
|
Camera camera = { 0 };
|
||||||
camera.position = (Vector3){ 0.0f, 60.0f, -120.0f };// Camera position perspective
|
camera.position = (Vector3){ 0.0f, 60.0f, -120.0f };// Camera position perspective
|
||||||
|
|
|
@ -45,7 +45,7 @@ int main()
|
||||||
|
|
||||||
Model model = LoadModel("resources/models/barracks.obj"); // Load OBJ model
|
Model model = LoadModel("resources/models/barracks.obj"); // Load OBJ model
|
||||||
Texture2D texture = LoadTexture("resources/models/barracks_diffuse.png"); // Load model texture (diffuse map)
|
Texture2D texture = LoadTexture("resources/models/barracks_diffuse.png"); // Load model texture (diffuse map)
|
||||||
model.material.maps[MAP_DIFFUSE].texture = texture; // Set model diffuse texture
|
model.materials[0].maps[MAP_DIFFUSE].texture = texture; // Set model diffuse texture
|
||||||
|
|
||||||
Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position
|
Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position
|
||||||
|
|
||||||
|
|
|
@ -50,8 +50,8 @@ int main()
|
||||||
// NOTE: Defining 0 (NULL) for vertex shader forces usage of internal default vertex shader
|
// NOTE: Defining 0 (NULL) for vertex shader forces usage of internal default vertex shader
|
||||||
Shader shader = LoadShader(0, FormatText("resources/shaders/glsl%i/grayscale.fs", GLSL_VERSION));
|
Shader shader = LoadShader(0, FormatText("resources/shaders/glsl%i/grayscale.fs", GLSL_VERSION));
|
||||||
|
|
||||||
model.material.shader = shader; // Set shader effect to 3d model
|
model.materials[0].shader = shader; // Set shader effect to 3d model
|
||||||
model.material.maps[MAP_DIFFUSE].texture = texture; // Bind texture to model
|
model.materials[0].maps[MAP_DIFFUSE].texture = texture; // Bind texture to model
|
||||||
|
|
||||||
Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position
|
Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@ int main()
|
||||||
|
|
||||||
Model model = LoadModel("resources/models/church.obj"); // Load OBJ model
|
Model model = LoadModel("resources/models/church.obj"); // Load OBJ model
|
||||||
Texture2D texture = LoadTexture("resources/models/church_diffuse.png"); // Load model texture (diffuse map)
|
Texture2D texture = LoadTexture("resources/models/church_diffuse.png"); // Load model texture (diffuse map)
|
||||||
model.material.maps[MAP_DIFFUSE].texture = texture; // Set model diffuse texture
|
model.materials[0].maps[MAP_DIFFUSE].texture = texture; // Set model diffuse texture
|
||||||
|
|
||||||
Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position
|
Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue