xurfer/xurfer/ext/startupscene/main.lua

70 lines
2.5 KiB
Lua

local api = ...
local envTex
local shader
return {
name = "startupscene",
enabled = (lovr ~= nil),
init = function() end,
update = function()
local iui = api.iui
local backend = api.backend
local mainWindow = api.mainWindow
end,
load = function()
--if api.iui.idiom == "vr" then
envTex = api.graphics.newTexture("runtime/lovr/assets/img/env.png", {})
api.world.skybox = api.graphics.newTexture({
px = 'ext/startupscene/skybox/Dayright.jpg', -- 'px.png',
nx = 'ext/startupscene/skybox/Dayleft.jpg', -- 'nx.png',
py = 'ext/startupscene/skybox/Daytop.jpg', -- 'py.png',
ny = 'ext/startupscene/skybox/Daybottom.jpg', -- 'ny.png',
pz = 'ext/startupscene/skybox/Dayfront.jpg', -- 'pz.png',
nz = 'ext/startupscene/skybox/Dayback.jpg' -- 'nz.png'
})
api.world.environmentMap = lovr.graphics.newTexture('ext/startupscene/skybox/ibl.ktx')
api.world.sphericalHarmonics = lovr.graphics.newBuffer({ 'vec3', layout = 'std140' }, {
{ 0.611764907836914, 0.599504590034485, 0.479980736970901 },
{ 0.659514904022217, 0.665349841117859, 0.567680120468140 },
{ 0.451633930206299, 0.450751245021820, 0.355226665735245 },
{ -0.044383134692907, -0.053154513239861, -0.019974749535322 },
{ -0.053045745939016, -0.057957146316767, -0.011247659102082 },
{ 0.485697060823441, 0.490428507328033, 0.397530466318130 },
{ -0.023690477013588, -0.024272611364722, -0.021886156871915 },
{ -0.179465517401695, -0.181243389844894, -0.141314014792442 },
{ -0.144527092576027, -0.143508568406105, -0.122757166624069 }
})
end,
draw = function(pass)
if api.iui.idiom == "vr" then
-- skybox
pass:setCullMode('back')
pass:setBlendMode()
pass:skybox(api.world.skybox)
pass:setColor(1, 1, 1)
pass:setMaterial(envTex)
pass:draw(envTex, 0, 0, 0, 512, math.pi * 0.5, 1, 0, 0)
-- floor
--pass:setMaterial()
pass:setCullMode('front')
pass:setBlendMode('alpha')
pass:setMaterial()
pass:setColor(0.8,0.8,0.8,1)
pass:plane(0, 0, 0, 500, 500, math.pi * 0.5, 1, 0, 0, "fill", 5, 5)
pass:setColor( 0, 0, 0, 0.75 )
pass:plane(0, 0.01, 0, 500, 500, math.pi * 0.5, 1, 0, 0, "line", 100, 100)
pass:setShader( lovr.shader.pbr )
pass:send('cubemap', api.world.environmentMap)
pass:send('sphericalHarmonics', api.world.sphericalHarmonics)
end
end
}