From 91aa5ae4f9e8b5592542836427d47bc7368e924d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D7=93=D7=95=D7=A8=20=D7=A9=D7=A4=D7=99=D7=A8=D7=90?= Date: Mon, 19 Sep 2022 22:54:14 +0300 Subject: [PATCH 1/4] making the shaders_basic_lighting.py and the shaders_fog.py file more python"y" style --- examples/shaders/shaders_basic_lighting.py | 115 ++++++++++----------- examples/shaders/shaders_fog.py | 32 +++--- 2 files changed, 70 insertions(+), 77 deletions(-) diff --git a/examples/shaders/shaders_basic_lighting.py b/examples/shaders/shaders_basic_lighting.py index 299caee..06a29b6 100755 --- a/examples/shaders/shaders_basic_lighting.py +++ b/examples/shaders/shaders_basic_lighting.py @@ -30,7 +30,6 @@ import raylib as rl - from raylib.colors import * from dataclasses import dataclass from enum import Enum @@ -43,12 +42,13 @@ from rlmath import * # lighting system from light_system import * -#// Initialization -#//-------------------------------------------------------------------------------------- -screenWidth = 1200; -screenHeight = 720; +# Initialization +# -------------------------------------------------------------------------------------- +screenWidth = 1200 +screenHeight = 720 -rl.SetConfigFlags(rl.FLAG_MSAA_4X_HINT| rl.FLAG_WINDOW_RESIZABLE); # Enable Multi Sampling Anti Aliasing 4x (if available) +rl.SetConfigFlags( + rl.FLAG_MSAA_4X_HINT | rl.FLAG_WINDOW_RESIZABLE); # Enable Multi Sampling Anti Aliasing 4x (if available) rl.InitWindow(screenWidth, screenHeight, b"raylib [shaders] example - basic lighting") camera = rl.ffi.new('struct Camera3D *', [ @@ -59,101 +59,98 @@ camera = rl.ffi.new('struct Camera3D *', [ rl.CAMERA_PERSPECTIVE ]) -#// Load models +# Load models modelA = rl.LoadModelFromMesh(rl.GenMeshTorus(0.4, 1.0, 16, 32)) modelB = rl.LoadModelFromMesh(rl.GenMeshCube(1.0, 1.0, 1.0)) modelC = rl.LoadModelFromMesh(rl.GenMeshSphere(0.5, 32, 32)) -#// Load models texture +# Load models texture texture = rl.LoadTexture(b"resources/texel_checker.png") -#// Assign texture to default model material +# Assign texture to default model material modelA.materials[0].maps[rl.MATERIAL_MAP_ALBEDO].texture = texture modelB.materials[0].maps[rl.MATERIAL_MAP_ALBEDO].texture = texture modelC.materials[0].maps[rl.MATERIAL_MAP_ALBEDO].texture = texture -angle = 6.282; +angle = 6.282 -#// Using 4 point lights, white, red, green and blue +# Using 4 point lights, white, red, green and blue -lights0 = Light(LIGHT_POINT, [ 4, 2, 4 ], Vector3Zero(), WHITE) -lights1 = Light(LIGHT_POINT, [4, 2, 4 ], Vector3Zero(), RED) -lights2 = Light(LIGHT_POINT, [ 0, 4, 2 ], Vector3Zero(), GREEN) -lights3 = Light(LIGHT_POINT, [ 0, 4, 2 ], Vector3Zero(), BLUE) +lights0 = Light(LIGHT_POINT, [4, 2, 4], Vector3Zero(), WHITE) +lights1 = Light(LIGHT_POINT, [4, 2, 4], Vector3Zero(), RED) +lights2 = Light(LIGHT_POINT, [0, 4, 2], Vector3Zero(), GREEN) +lights3 = Light(LIGHT_POINT, [0, 4, 2], Vector3Zero(), BLUE) -lightSystem = LightSystem([ 0.2, 0.2, 0.2, 1.0 ], lights0, lights1, lights2, lights3) +lightSystem = LightSystem([0.2, 0.2, 0.2, 1.0], lights0, lights1, lights2, lights3) fogD = rl.GetShaderLocation(lightSystem.shader, b'FogDensity') fogDensity = 0.0 -#// All models use the same shader - which lights them +# All models use the same shader - which lights them modelA.materials[0].shader = lightSystem.shader modelB.materials[0].shader = lightSystem.shader modelC.materials[0].shader = lightSystem.shader rl.SetCameraMode(camera[0], rl.CAMERA_ORBITAL) # Set an orbital camera mode -rl.SetTargetFPS(60) # // Set our game to run at 60 frames-per-second -#//-------------------------------------------------------------------------------------- +rl.SetTargetFPS(60) # // Set our game to run at 60 frames-per-second +# -------------------------------------------------------------------------------------- -#// Main game loop -while not rl.WindowShouldClose(): #// Detect window close button or ESC key - #// Update - #//---------------------------------------------------------------------------------- +# Main game loop +while not rl.WindowShouldClose(): # Detect window close button or ESC key + # Update + # ---------------------------------------------------------------------------------- if rl.IsKeyPressed(rl.KEY_W): lights0.enabled = not lights0.enabled if rl.IsKeyPressed(rl.KEY_R): lights1.enabled = not lights1.enabled if rl.IsKeyPressed(rl.KEY_G): lights2.enabled = not lights2.enabled if rl.IsKeyPressed(rl.KEY_B): lights3.enabled = not lights3.enabled - rl.UpdateCamera(camera) #// Update camera + rl.UpdateCamera(camera) # Update camera - #// Make the lights do differing orbits + # Make the lights do differing orbits angle -= 0.02 - lights0.position.x = math.cos(angle)*4.0 - lights0.position.z = math.sin(angle)*4.0 - lights1.position.x = math.cos(-angle*0.6)*4.0 - lights1.position.z = math.sin(-angle*0.6)*4.0 - lights2.position.y = math.cos(angle*0.2)*4.0 - lights2.position.z = math.sin(angle*0.2)*4.0 - lights3.position.y = math.cos(-angle*0.35)*4.0 - lights3.position.z = math.sin(-angle*0.35)*4.0 + lights0.position.x = math.cos(angle) * 4.0 + lights0.position.z = math.sin(angle) * 4.0 + lights1.position.x = math.cos(-angle * 0.6) * 4.0 + lights1.position.z = math.sin(-angle * 0.6) * 4.0 + lights2.position.y = math.cos(angle * 0.2) * 4.0 + lights2.position.z = math.sin(angle * 0.2) * 4.0 + lights3.position.y = math.cos(-angle * 0.35) * 4.0 + lights3.position.z = math.sin(-angle * 0.35) * 4.0 - #// Update the light shader with the camera view position + # Update the light shader with the camera view position lightSystem.update(camera.position) - -# ffi.cast('wchar_t', x) -# modelA.transform = ffi.cast('Matrix *', MatrixRotateY(angle*1.7))[0] -# modelA.transform = MatrixRotateY(angle*1.7) - #// Rotate the torus -# modelA.transform = MatrixMultiply(modelA.transform, MatrixRotateX(-0.025)[0])[0] -# modelA.transform = MatrixMultiply(modelA.transform, MatrixRotateZ(0.012)[0])[0] + # ffi.cast('wchar_t', x) + # modelA.transform = ffi.cast('Matrix *', MatrixRotateY(angle*1.7))[0] + # modelA.transform = MatrixRotateY(angle*1.7) + # Rotate the torus + # modelA.transform = MatrixMultiply(modelA.transform, MatrixRotateX(-0.025)[0])[0] + # modelA.transform = MatrixMultiply(modelA.transform, MatrixRotateZ(0.012)[0])[0] modelA.transform = rl.ffi.cast('Matrix *', MatrixMultiply(modelA.transform, MatrixRotateX(-0.025)))[0] modelA.transform = rl.ffi.cast('Matrix *', MatrixMultiply(modelA.transform, MatrixRotateZ(0.012)))[0] if (rl.IsKeyPressed(rl.KEY_F)): rl.ToggleFullscreen() + # ---------------------------------------------------------------------------------- - #//---------------------------------------------------------------------------------- - - #// Draw - #//---------------------------------------------------------------------------------- + # Draw + # ---------------------------------------------------------------------------------- rl.BeginDrawing() rl.ClearBackground(RAYWHITE) rl.BeginMode3D(camera[0]) - #// Draw the three models - rl.DrawModel(modelA, [0,0,0], 1.0, WHITE) - rl.DrawModel(modelB, [-1.6,0,0], 1.0, WHITE) - rl.DrawModel(modelC, [ 1.6,0,0], 1.0, WHITE) + # Draw the three models + rl.DrawModel(modelA, [0, 0, 0], 1.0, WHITE) + rl.DrawModel(modelB, [-1.6, 0, 0], 1.0, WHITE) + rl.DrawModel(modelC, [1.6, 0, 0], 1.0, WHITE) - #// Draw markers to show where the lights are + # Draw markers to show where the lights are lightSystem.draw() - rl.DrawGrid(10, 1.0) rl.EndMode3D() @@ -163,17 +160,17 @@ while not rl.WindowShouldClose(): #// Detect window close button or E rl.DrawText(b"Keys RGB & W toggle lights", 10, 30, 20, DARKGRAY) rl.EndDrawing() -#//---------------------------------------------------------------------------------- +# ---------------------------------------------------------------------------------- -#// De-Initialization -#//-------------------------------------------------------------------------------------- -rl.UnloadModel(modelA) # // Unload the modelA -rl.UnloadModel(modelB) # // Unload the modelB -rl.UnloadModel(modelC) # // Unload the modelC +# De-Initialization +# -------------------------------------------------------------------------------------- +rl.UnloadModel(modelA) # Unload the modelA +rl.UnloadModel(modelB) # Unload the modelB +rl.UnloadModel(modelC) # Unload the modelC -rl.UnloadTexture(texture) #// Unload the texture +rl.UnloadTexture(texture) # Unload the texture rl.UnloadShader(lightSystem.shader) -rl.CloseWindow() #// Close window and OpenGL context +rl.CloseWindow() # Close window and OpenGL context diff --git a/examples/shaders/shaders_fog.py b/examples/shaders/shaders_fog.py index 1ae40c1..cb75075 100755 --- a/examples/shaders/shaders_fog.py +++ b/examples/shaders/shaders_fog.py @@ -37,10 +37,10 @@ model.materials[0].maps[rl.MATERIAL_MAP_ALBEDO].texture = texture model2.materials[0].maps[rl.MATERIAL_MAP_ALBEDO].texture = texture model3.materials[0].maps[rl.MATERIAL_MAP_ALBEDO].texture = texture -light = Light(LIGHT_POINT, [ 0, 4, 0 ], Vector3Zero(), WHITE) -lightSystem = LightSystem([ 0.2, 0.2, 0.2, 1.0 ], light) +light = Light(LIGHT_POINT, [0, 4, 0], Vector3Zero(), WHITE) +lightSystem = LightSystem([0.2, 0.2, 0.2, 1.0], light) -fog_color = rl.ffi.new('float[]', [0.2,0.2,1.0,1.0]) +fog_color = rl.ffi.new('float[]', [0.2, 0.2, 1.0, 1.0]) fogC = rl.GetShaderLocation(lightSystem.shader, b'fogColor') rl.SetShaderValue(lightSystem.shader, fogC, fog_color, rl.SHADER_UNIFORM_VEC4); @@ -55,20 +55,19 @@ model2.materials[0].shader = lightSystem.shader model3.materials[0].shader = lightSystem.shader rl.SetTargetFPS(60) -a=0.0 +a = 0.0 while not rl.WindowShouldClose(): - - a+=0.01 - camera.position.x = math.sin(a)*6 - camera.position.z = math.cos(a)*6 + + a += 0.01 + camera.position.x = math.sin(a) * 6 + camera.position.z = math.cos(a) * 6 rl.UpdateCamera(camera) lightSystem.update(camera.position) - - model.transform = rl.ffi.cast("Matrix *",MatrixMultiply(model.transform, MatrixRotateX(-0.025)))[0] - model.transform = rl.ffi.cast("Matrix *",MatrixMultiply(model.transform, MatrixRotateZ(0.012)))[0] - + model.transform = rl.ffi.cast("Matrix *", MatrixMultiply(model.transform, MatrixRotateX(-0.025)))[0] + model.transform = rl.ffi.cast("Matrix *", MatrixMultiply(model.transform, MatrixRotateZ(0.012)))[0] + if rl.IsKeyDown(rl.KEY_UP): fogDensity = min(fogDensity + 0.001, 1) @@ -84,18 +83,16 @@ while not rl.WindowShouldClose(): if rl.IsKeyDown(rl.KEY_SPACE): rl.ClearBackground(BLACK) - rl.BeginMode3D(camera[0]) rl.DrawModel(model, [0] * 3, 1, WHITE) rl.DrawModel(model2, [-2.6, 0, 0], 1, WHITE) - rl.DrawModel(model3, [ 2.6, 0, 0], 1, WHITE) + rl.DrawModel(model3, [2.6, 0, 0], 1, WHITE) for i in range(-20, 20, 2): rl.DrawModel(model, [i, 0, 2], 1, WHITE) - - #Raylib removed this function - #rl.DrawGizmo([1000, 1000, 1000]) + # Raylib removed this function + # rl.DrawGizmo([1000, 1000, 1000]) rl.EndMode3D() @@ -110,4 +107,3 @@ rl.UnloadModel(model3) rl.UnloadTexture(texture) rl.UnloadShader(lightSystem.shader) rl.CloseWindow() - From 3836c7ed93ae0f8dd45f53bfeb68b7596ed93de8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D7=93=D7=95=D7=A8=20=D7=A9=D7=A4=D7=99=D7=A8=D7=90?= Date: Tue, 20 Sep 2022 21:19:30 +0300 Subject: [PATCH 2/4] adding shapes lines bezier example --- examples/shapes/shapes_lines_bezier.py | 59 ++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 examples/shapes/shapes_lines_bezier.py diff --git a/examples/shapes/shapes_lines_bezier.py b/examples/shapes/shapes_lines_bezier.py new file mode 100644 index 0000000..7b40d49 --- /dev/null +++ b/examples/shapes/shapes_lines_bezier.py @@ -0,0 +1,59 @@ +""" + +raylib [shapes] example - Lines Bezier + +""" + +from pyray import * +from raylib.colors import ( + RAYWHITE, + GRAY, + RED +) + + +# ------------------------------------------------------------------------------------ +# Program main entry point +# ------------------------------------------------------------------------------------ +def main(): + # Initialization + screenWidth = 800 + screenHeight = 450 + + set_config_flags(ConfigFlags.FLAG_MSAA_4X_HINT) + init_window(screenWidth, screenHeight, "raylib [shapes] example - cubic-bezier lines") + + start = Vector2(0, 0) + end = Vector2(screenWidth, screenHeight) + + set_target_fps(60) # Set our game to run at 60 frames-per-second + # ------------------------------------------------------------------------------------- + + # Main game loop + while not window_should_close(): # Detect window close button or ESC key + # Update + # ---------------------------------------------------------------------------------- + if is_mouse_button_down(MouseButton.MOUSE_BUTTON_LEFT): start = get_mouse_position() + if is_mouse_button_down(MouseButton.MOUSE_BUTTON_RIGHT): end = get_mouse_position() + # ---------------------------------------------------------------------------------- + + # Draw + # ---------------------------------------------------------------------------------- + begin_drawing() + + clear_background(RAYWHITE) + + draw_text("USE MOUSE LEFT-RIGHT CLICK to DEFINE LINE START and END POINTS", 15, 20, 20, GRAY) + + draw_line_bezier(start, end, 2.0, RED) + + end_drawing() + # ---------------------------------------------------------------------------------- + + # De-Initialization + # ---------------------------------------------------------------------------------- + close_window() # Close window and OpenGL context + # ---------------------------------------------------------------------------------- + +if __name__ == '__main__': + main() From 9f11c90e290b78d38e35d626ecd925eeb6a1ed55 Mon Sep 17 00:00:00 2001 From: Dor Shapira <107134807+sDos280@users.noreply.github.com> Date: Wed, 21 Sep 2022 18:00:23 +0300 Subject: [PATCH 3/4] Update shapes_lines_bezier.py --- examples/shapes/shapes_lines_bezier.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/shapes/shapes_lines_bezier.py b/examples/shapes/shapes_lines_bezier.py index 7b40d49..c3c0952 100644 --- a/examples/shapes/shapes_lines_bezier.py +++ b/examples/shapes/shapes_lines_bezier.py @@ -17,6 +17,7 @@ from raylib.colors import ( # ------------------------------------------------------------------------------------ def main(): # Initialization + # ------------------------------------------------------------------------------------ screenWidth = 800 screenHeight = 450 @@ -55,5 +56,6 @@ def main(): close_window() # Close window and OpenGL context # ---------------------------------------------------------------------------------- +# execute the main function if __name__ == '__main__': main() From 8eb8a386fdf33ec908eeafcae83d2eed74bc7fd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D7=93=D7=95=D7=A8=20=D7=A9=D7=A4=D7=99=D7=A8=D7=90?= Date: Fri, 23 Sep 2022 16:46:07 +0300 Subject: [PATCH 4/4] fixing the issue in the image_loading.py Fixed #89 --- examples/textures/image_loading.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/examples/textures/image_loading.py b/examples/textures/image_loading.py index 0ff6a52..889c099 100644 --- a/examples/textures/image_loading.py +++ b/examples/textures/image_loading.py @@ -5,9 +5,7 @@ screenHeight = 450 InitWindow(screenWidth, screenHeight, b"raylib [textures] example - image loading") - - -image = LoadImage(b"resources/raylib_logo.jpg") +image = LoadImage(b"resources/raylib_logo.png") texture = LoadTextureFromImage(image) UnloadImage(image) @@ -24,8 +22,6 @@ while not WindowShouldClose(): EndDrawing() +UnloadTexture(texture) - - -UnloadTexture(texture) CloseWindow()