Add FSR and custom font examples.
This commit is contained in:
parent
8815751ac9
commit
969e64725e
BIN
examples/resources/NotoSans-Medium.ttf
Normal file
BIN
examples/resources/NotoSans-Medium.ttf
Normal file
Binary file not shown.
3905
examples/resources/fsr/fsrEasu.frag
Normal file
3905
examples/resources/fsr/fsrEasu.frag
Normal file
File diff suppressed because it is too large
Load Diff
3897
examples/resources/fsr/fsrRcas.frag
Normal file
3897
examples/resources/fsr/fsrRcas.frag
Normal file
File diff suppressed because it is too large
Load Diff
232
examples/shaders_postprocess_fsr.lua
Normal file
232
examples/shaders_postprocess_fsr.lua
Normal file
@ -0,0 +1,232 @@
|
||||
local screenWidth = 1920
|
||||
local screenHeight = 1080
|
||||
|
||||
local preset = 3
|
||||
local default_sharpness = 1.0
|
||||
|
||||
local presets = {
|
||||
{ 2.0, "Performance" },
|
||||
{ 1.7, "Balanced" },
|
||||
{ 1.5, "Quality" },
|
||||
{ 1.3, "Ultra Quality" },
|
||||
{ 1.0, "Custom (Native)" }
|
||||
}
|
||||
|
||||
local use_fsr = true
|
||||
|
||||
local ratio = presets[preset][1]
|
||||
|
||||
local num_blocks = 15
|
||||
|
||||
local screenSize = rl.new("Vector2", screenWidth, screenHeight)
|
||||
|
||||
local fbWidth = screenWidth / ratio
|
||||
local fbHeight = screenHeight / ratio
|
||||
|
||||
local fbSize = rl.new("Vector2", fbWidth, fbHeight)
|
||||
|
||||
rl.SetConfigFlags(rl.FLAG_FULLSCREEN_MODE)
|
||||
rl.InitWindow(screenWidth, screenHeight, "raylua [shaders] example - AMD FSR")
|
||||
|
||||
local render_texture = rl.LoadRenderTexture(fbWidth, fbHeight)
|
||||
|
||||
local dest_fb = rl.LoadRenderTexture(screenWidth, screenHeight)
|
||||
|
||||
local easu_shader = rl.LoadShader(nil, "resources/fsr/fsrEasu.frag")
|
||||
|
||||
local srcSize_loc = rl.GetShaderLocation(easu_shader, "srcSize")
|
||||
local dstSize_loc = rl.GetShaderLocation(easu_shader, "dstSize")
|
||||
|
||||
rl.SetShaderValue(easu_shader, srcSize_loc, fbSize, rl.SHADER_UNIFORM_VEC2)
|
||||
rl.SetShaderValue(easu_shader, dstSize_loc, screenSize, rl.SHADER_UNIFORM_VEC2)
|
||||
|
||||
local rcas_shader = rl.LoadShader(nil, "resources/fsr/fsrRcas.frag")
|
||||
|
||||
local sharpness_loc = rl.GetShaderLocation(rcas_shader, "sharpness")
|
||||
local size_loc = rl.GetShaderLocation(rcas_shader, "dstSize")
|
||||
|
||||
local sharpness = rl.new("float[1]", default_sharpness)
|
||||
|
||||
rl.SetShaderValue(rcas_shader, sharpness_loc, sharpness, rl.SHADER_UNIFORM_FLOAT)
|
||||
rl.SetShaderValue(rcas_shader, size_loc, screenSize, rl.SHADER_UNIFORM_VEC2)
|
||||
|
||||
local camera = rl.new("Camera3D", {
|
||||
position = { 30, 20, 30 },
|
||||
target = { 0, 0, 0 },
|
||||
up = { 0, 1, 0 },
|
||||
fovy = 70,
|
||||
type = rl.CAMERA_PERSPECTIVE
|
||||
})
|
||||
|
||||
local enable_easu = false
|
||||
local enable_rcas = false
|
||||
|
||||
local stop_animation = false
|
||||
local t = 0.0
|
||||
|
||||
local bilinear = false
|
||||
|
||||
while not rl.WindowShouldClose() do
|
||||
if not stop_animation then
|
||||
t = rl.GetTime()
|
||||
end
|
||||
|
||||
local scale = (2.0 + math.sin(t)) * 0.7
|
||||
local camera_time = t * 0.3
|
||||
|
||||
camera.position.x = math.cos(camera_time) * 40.0
|
||||
camera.position.z = math.sin(camera_time) * 40.0
|
||||
|
||||
if use_fsr then
|
||||
rl.BeginTextureMode(render_texture)
|
||||
else
|
||||
rl.BeginDrawing()
|
||||
end
|
||||
|
||||
rl.BeginMode3D(camera)
|
||||
rl.ClearBackground(rl.RAYWHITE)
|
||||
|
||||
rl.DrawGrid(10, 5.0)
|
||||
|
||||
for x=0,num_blocks-1 do
|
||||
for y=0,num_blocks-1 do
|
||||
for z=0,num_blocks-1 do
|
||||
local block_scale = (x + y + z) / 30
|
||||
local scatter = math.sin(block_scale * 20.0 + t * 4.0)
|
||||
|
||||
local cube_pos = rl.new("Vector3",
|
||||
(x - num_blocks / 2) * (scale * 3.0) + scatter,
|
||||
(y - num_blocks / 2) * (scale * 2.0) + scatter,
|
||||
(z - num_blocks / 2) * (scale * 3.0) + scatter)
|
||||
|
||||
local cube_color = rl.ColorFromHSV(
|
||||
(((x + y + z) * 18) % 360), 0.75, 0.9
|
||||
)
|
||||
|
||||
local cube_size = (2.4 - scale) * block_scale
|
||||
|
||||
rl.DrawCube(cube_pos, cube_size, cube_size, cube_size, cube_color)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
rl.EndMode3D()
|
||||
|
||||
if use_fsr then
|
||||
rl.EndTextureMode()
|
||||
|
||||
rl.BeginTextureMode(dest_fb)
|
||||
rl.ClearBackground(rl.RAYWHITE)
|
||||
|
||||
if enable_easu then
|
||||
rl.BeginShaderMode(easu_shader)
|
||||
end
|
||||
rl.DrawTextureEx(render_texture.texture, screenSize, 180, ratio, rl.WHITE)
|
||||
if enable_easu then
|
||||
rl.EndShaderMode()
|
||||
end
|
||||
|
||||
rl.EndTextureMode()
|
||||
|
||||
rl.BeginDrawing()
|
||||
rl.ClearBackground(rl.WHITE)
|
||||
|
||||
if enable_rcas then
|
||||
rl.BeginShaderMode(rcas_shader)
|
||||
end
|
||||
rl.DrawTextureEx(dest_fb.texture, screenSize, 180, 1.0, rl.WHITE)
|
||||
if enable_rcas then
|
||||
rl.EndShaderMode()
|
||||
end
|
||||
end
|
||||
|
||||
rl.DrawFPS(10, 10)
|
||||
|
||||
if use_fsr then
|
||||
rl.DrawText("EASU", 10, 32, 20, enable_easu and rl.GREEN or rl.RED)
|
||||
rl.DrawText("RCAS", 10, 54, 20, enable_rcas and rl.GREEN or rl.RED)
|
||||
rl.DrawText(string.format("sharpness: %.1f", sharpness[0]), 10, 74, 10, rl.BLACK)
|
||||
rl.DrawText(string.format("Preset: %s (%.1f)", presets[preset][2], ratio), 10, 86, 10, rl.BLACK)
|
||||
rl.DrawText(string.format("Resolution: %dx%d", fbWidth, fbHeight), 10, 98, 10, rl.BLACK)
|
||||
rl.DrawText(string.format("Filter: %s", bilinear and "bilinear" or "point"), 10, 110, 10, rl.BLACK)
|
||||
else
|
||||
rl.DrawText("NATIVE", 10, 32, 20, rl.BLUE)
|
||||
end
|
||||
|
||||
rl.EndDrawing()
|
||||
|
||||
if rl.IsKeyPressed(rl.KEY_E) then
|
||||
enable_easu = not enable_easu
|
||||
end
|
||||
|
||||
if rl.IsKeyPressed(rl.KEY_R) then
|
||||
enable_rcas = not enable_rcas
|
||||
end
|
||||
|
||||
if rl.IsKeyPressed(rl.KEY_N) then
|
||||
use_fsr = not use_fsr
|
||||
end
|
||||
|
||||
if rl.IsKeyPressed(rl.KEY_LEFT) then
|
||||
sharpness[0] = math.max(0.0, sharpness[0] - 0.1)
|
||||
rl.SetShaderValue(rcas_shader, sharpness_loc, sharpness, rl.SHADER_UNIFORM_FLOAT)
|
||||
end
|
||||
|
||||
if rl.IsKeyPressed(rl.KEY_RIGHT) then
|
||||
sharpness[0] = math.min(2.0, sharpness[0] + 0.1)
|
||||
rl.SetShaderValue(rcas_shader, sharpness_loc, sharpness, rl.SHADER_UNIFORM_FLOAT)
|
||||
end
|
||||
|
||||
if rl.IsKeyPressed(rl.KEY_F) then
|
||||
bilinear = not bilinear
|
||||
|
||||
rl.SetTextureFilter(render_texture.texture,
|
||||
bilinear and rl.TEXTURE_FILTER_BILINEAR or rl.TEXTURE_FILTER_POINT)
|
||||
end
|
||||
|
||||
local preset_changed = false
|
||||
if rl.IsKeyPressed(rl.KEY_UP) then
|
||||
preset_changed = true
|
||||
preset = preset + 1
|
||||
if preset == #presets + 1 then
|
||||
preset = 1
|
||||
end
|
||||
end
|
||||
|
||||
if rl.IsKeyPressed(rl.KEY_DOWN) then
|
||||
preset_changed = true
|
||||
preset = preset - 1
|
||||
if preset == 0 then
|
||||
preset = #presets
|
||||
end
|
||||
end
|
||||
|
||||
if rl.IsKeyPressed(rl.KEY_S) then
|
||||
stop_animation = not stop_animation
|
||||
end
|
||||
|
||||
if rl.IsKeyPressed(rl.KEY_F11) then
|
||||
rl.ToggleFullscreen()
|
||||
end
|
||||
|
||||
|
||||
if preset_changed then
|
||||
ratio = presets[preset][1]
|
||||
fbWidth = screenWidth / ratio
|
||||
fbHeight = screenHeight / ratio
|
||||
|
||||
fbSize = rl.new("Vector2", fbWidth, fbHeight)
|
||||
|
||||
rl.UnloadRenderTexture(render_texture)
|
||||
|
||||
render_texture = rl.LoadRenderTexture(fbWidth, fbHeight)
|
||||
|
||||
|
||||
rl.SetTextureFilter(render_texture.texture,
|
||||
bilinear and rl.TEXTURE_FILTER_BILINEAR or rl.TEXTURE_FILTER_POINT)
|
||||
end
|
||||
end
|
||||
|
||||
rl.UnloadRenderTexture(render_texture)
|
||||
rl.UnloadRenderTexture(dest_fb)
|
||||
rl.CloseWindow()
|
18
examples/text_custom_font.lua
Normal file
18
examples/text_custom_font.lua
Normal file
@ -0,0 +1,18 @@
|
||||
rl.SetConfigFlags(rl.FLAG_VSYNC_HINT)
|
||||
|
||||
rl.InitWindow(800, 450, "raylib [core] example - basic window")
|
||||
|
||||
local font = rl.LoadFontEx("resources/NotoSans-Medium.ttf", 32, nil, 255)
|
||||
|
||||
while not rl.WindowShouldClose() do
|
||||
rl.BeginDrawing()
|
||||
|
||||
rl.DrawFPS(10, 10)
|
||||
|
||||
rl.ClearBackground(rl.RAYWHITE)
|
||||
rl.DrawTextEx(font, "Congrats! You created your first window!", rl.new("Vector2", 174, 200), 32, 0, rl.BLACK)
|
||||
|
||||
rl.EndDrawing()
|
||||
end
|
||||
|
||||
rl.CloseWindow()
|
Loading…
Reference in New Issue
Block a user