+ Add settings for photo size, render distance, supersampling

This commit is contained in:
Nils Dagsson Moskopp 2023-11-25 18:56:16 +01:00
parent 6290c3394d
commit 389ca7db8d
Signed by: erle
GPG Key ID: A3BC671C35191080
2 changed files with 15 additions and 4 deletions

View File

@ -15,6 +15,10 @@ Codezeilen und schreibe das auch nicht dran.
]]-- ]]--
local get_setting = function( key, default_value )
return tonumber( minetest.settings:get( key ) or default_value )
end
local create_photo_item = function( pixels ) local create_photo_item = function( pixels )
local itemstack = ItemStack( "xcam:photo" ) local itemstack = ItemStack( "xcam:photo" )
local meta = itemstack:get_meta() local meta = itemstack:get_meta()
@ -103,8 +107,10 @@ x_offset_by_sample = { 0, 1, 0, 1, 0, 1,-1,-1,-1 }
y_offset_by_sample = { 0, 0, 1, 1,-1,-1, 0, 1,-1 } y_offset_by_sample = { 0, 0, 1, 1,-1,-1, 0, 1,-1 }
local create_photo_pixels = function( player_name ) local create_photo_pixels = function( player_name )
local width = 128 local width = get_setting( "xcam_photo_height", 128 )
local height = 128 local height = get_setting( "xcam_photo_width", 128 )
local render_distance = get_setting( "xcam_render_distance", 128 )
local samples = get_setting( "xcam_supersampling_samples", 4 )
local girl = minetest.get_player_by_name( player_name ) local girl = minetest.get_player_by_name( player_name )
local eye = girl:get_pos() + girl:get_eye_offset() / 10 local eye = girl:get_pos() + girl:get_eye_offset() / 10
eye.y = eye.y + girl:get_properties().eye_height eye.y = eye.y + girl:get_properties().eye_height
@ -128,7 +134,6 @@ local create_photo_pixels = function( player_name )
for w = 1,width,1 do for w = 1,width,1 do
local x = width - ( w - 1 ) local x = width - ( w - 1 )
local sky_color = 191 - math.floor ( y / 2 ) local sky_color = 191 - math.floor ( y / 2 )
local samples = 4 -- can be up to 9
local acc_color = 0 local acc_color = 0
for sample = 1,samples,1 do for sample = 1,samples,1 do
local x_offset = x_offset_by_sample[sample] * 0.2 local x_offset = x_offset_by_sample[sample] * 0.2
@ -138,7 +143,9 @@ local create_photo_pixels = function( player_name )
down * ( height/2 - y + y_offset ) down * ( height/2 - y + y_offset )
) )
local pos1 = eye local pos1 = eye
local pos2 = eye + lens + ( dir * 128 ) local pos2 = eye + lens + (
dir * render_distance
)
local color, hit_water = shade( local color, hit_water = shade(
pos1, pos1,
pos2, pos2,

4
settingtypes.txt Normal file
View File

@ -0,0 +1,4 @@
xcam_photo_height (Xcam Photo Height) int 128 16 192
xcam_photo_width (Xcam Photo Width) int 128 16 192
xcam_render_distance (Xcam Render Distance) float 128.0 1.0 256.0
xcam_supersampling_samples (Xcam Supersampling Samples) int 4 1 9