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