From 66b096d97848eb096a043781f1f305e7189f2a00 Mon Sep 17 00:00:00 2001 From: raysan5 Date: Wed, 30 Mar 2016 20:09:16 +0200 Subject: Added support for render to texture (use RenderTexture2D) Now it's possible to render to texture, old postprocessing system will be removed on next raylib version. --- examples/shaders_postprocessing.c | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) (limited to 'examples/shaders_postprocessing.c') diff --git a/examples/shaders_postprocessing.c b/examples/shaders_postprocessing.c index 44829648..fabf5131 100644 --- a/examples/shaders_postprocessing.c +++ b/examples/shaders_postprocessing.c @@ -41,7 +41,11 @@ int main() Shader shader = LoadShader("resources/shaders/base.vs", "resources/shaders/bloom.fs"); // Load postpro shader - SetPostproShader(shader); // Set fullscreen postprocessing shader + // NOTE: Old postprocessing system is not flexible enough despite being very easy to use + //SetPostproShader(shader); // Set fullscreen postprocessing shader + + // New postprocessing system let the user create multiple RenderTexture2D and perform multiple render passes + RenderTexture2D target = LoadRenderTexture(screenWidth, screenHeight); // Setup orbital camera SetCameraMode(CAMERA_ORBITAL); // Set an orbital camera mode @@ -65,15 +69,26 @@ int main() ClearBackground(RAYWHITE); - Begin3dMode(camera); + BeginTextureMode(target); // Enable render to texture RenderTexture2D + + Begin3dMode(camera); - DrawModel(dwarf, position, 2.0f, WHITE); // Draw 3d model with texture + DrawModel(dwarf, position, 2.0f, WHITE); // Draw 3d model with texture - DrawGrid(10, 1.0f); // Draw a grid + DrawGrid(10, 1.0f); // Draw a grid - End3dMode(); + End3dMode(); + + DrawText("HELLO TEXTURE!!!", 120, 200, 60, RED); + + EndTextureMode(); // End drawing to texture (now we have a texture available for next passes) + + SetCustomShader(shader); + // NOTE: Render texture must be y-flipped due to default OpenGL coordinates (left-bottom) + DrawTextureRec(target.texture, (Rectangle){ 0, target.texture.height, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE); + SetDefaultShader(); - DrawText("(c) Dwarf 3D model by David Moreno", screenWidth - 200, screenHeight - 20, 10, BLACK); + DrawText("(c) Dwarf 3D model by David Moreno", screenWidth - 200, screenHeight - 20, 10, DARKGRAY); DrawFPS(10, 10); @@ -83,11 +98,12 @@ int main() // De-Initialization //-------------------------------------------------------------------------------------- - UnloadShader(shader); // Unload shader - UnloadTexture(texture); // Unload texture - UnloadModel(dwarf); // Unload model + UnloadShader(shader); // Unload shader + UnloadTexture(texture); // Unload texture + UnloadModel(dwarf); // Unload model + UnloadRenderTexture(target); // Unload render texture - CloseWindow(); // Close window and OpenGL context + CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- return 0; -- cgit v1.2.3 From 06a8d7eb06e1573d5cce991ca39f6cb1067ea6fb Mon Sep 17 00:00:00 2001 From: raysan5 Date: Fri, 1 Apr 2016 10:39:33 +0200 Subject: Remove old postprocessing system --- examples/shaders_postprocessing.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'examples/shaders_postprocessing.c') diff --git a/examples/shaders_postprocessing.c b/examples/shaders_postprocessing.c index fabf5131..0bcd5156 100644 --- a/examples/shaders_postprocessing.c +++ b/examples/shaders_postprocessing.c @@ -41,10 +41,7 @@ int main() Shader shader = LoadShader("resources/shaders/base.vs", "resources/shaders/bloom.fs"); // Load postpro shader - // NOTE: Old postprocessing system is not flexible enough despite being very easy to use - //SetPostproShader(shader); // Set fullscreen postprocessing shader - - // New postprocessing system let the user create multiple RenderTexture2D and perform multiple render passes + // Create a RenderTexture2D to be used for render to texture RenderTexture2D target = LoadRenderTexture(screenWidth, screenHeight); // Setup orbital camera @@ -69,7 +66,7 @@ int main() ClearBackground(RAYWHITE); - BeginTextureMode(target); // Enable render to texture RenderTexture2D + BeginTextureMode(target); // Enable drawing to texture Begin3dMode(camera); -- cgit v1.2.3 From 1d545449bb19148b45d2d92f213e1001a8eb527c Mon Sep 17 00:00:00 2001 From: raysan5 Date: Thu, 7 Apr 2016 12:32:32 +0200 Subject: Reviewed shaders and added comments --- examples/shaders_postprocessing.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'examples/shaders_postprocessing.c') diff --git a/examples/shaders_postprocessing.c b/examples/shaders_postprocessing.c index 0bcd5156..632a6371 100644 --- a/examples/shaders_postprocessing.c +++ b/examples/shaders_postprocessing.c @@ -38,8 +38,8 @@ int main() Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position - Shader shader = LoadShader("resources/shaders/base.vs", - "resources/shaders/bloom.fs"); // Load postpro shader + Shader shader = LoadShader("resources/shaders/glsl330/base.vs", + "resources/shaders/glsl330/bloom.fs"); // Load postpro shader // Create a RenderTexture2D to be used for render to texture RenderTexture2D target = LoadRenderTexture(screenWidth, screenHeight); @@ -76,7 +76,7 @@ int main() End3dMode(); - DrawText("HELLO TEXTURE!!!", 120, 200, 60, RED); + DrawText("HELLO POSTPROCESSING!", 70, 190, 50, RED); EndTextureMode(); // End drawing to texture (now we have a texture available for next passes) -- cgit v1.2.3 From aa22d979834eeddb849f45bba7c0f467b575e6db Mon Sep 17 00:00:00 2001 From: raysan5 Date: Thu, 7 Apr 2016 13:31:53 +0200 Subject: Simplified texture flip and added comments --- examples/shaders_postprocessing.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'examples/shaders_postprocessing.c') diff --git a/examples/shaders_postprocessing.c b/examples/shaders_postprocessing.c index 632a6371..e9fafe15 100644 --- a/examples/shaders_postprocessing.c +++ b/examples/shaders_postprocessing.c @@ -82,7 +82,7 @@ int main() SetCustomShader(shader); // NOTE: Render texture must be y-flipped due to default OpenGL coordinates (left-bottom) - DrawTextureRec(target.texture, (Rectangle){ 0, target.texture.height, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE); + DrawTextureRec(target.texture, (Rectangle){ 0, 0, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE); SetDefaultShader(); DrawText("(c) Dwarf 3D model by David Moreno", screenWidth - 200, screenHeight - 20, 10, DARKGRAY); -- cgit v1.2.3