|
@@ -24,14 +24,14 @@ return {
|
|
example = [=[
|
|
example = [=[
|
|
function lovr.load()
|
|
function lovr.load()
|
|
-- Create a ShaderBlock to store positions for 1000 models
|
|
-- Create a ShaderBlock to store positions for 1000 models
|
|
- block = lovr.graphics.newShaderBlock({
|
|
|
|
|
|
+ block = lovr.graphics.newShaderBlock('uniform', {
|
|
modelPositions = { 'mat4', 1000 }
|
|
modelPositions = { 'mat4', 1000 }
|
|
- }, { writable = false, usage = 'static' })
|
|
|
|
|
|
+ }, { usage = 'static' })
|
|
|
|
|
|
-- Write some random transforms to the block
|
|
-- Write some random transforms to the block
|
|
local transforms = {}
|
|
local transforms = {}
|
|
for i = 1, 1000 do
|
|
for i = 1, 1000 do
|
|
- transforms[i] = lovr.math.newTransform()
|
|
|
|
|
|
+ transforms[i] = lovr.math.mat4()
|
|
local random, randomNormal = lovr.math.random, lovr.math.randomNormal
|
|
local random, randomNormal = lovr.math.random, lovr.math.randomNormal
|
|
transforms[i]:translate(randomNormal(8), randomNormal(8), randomNormal(8))
|
|
transforms[i]:translate(randomNormal(8), randomNormal(8), randomNormal(8))
|
|
transforms[i]:rotate(random(2 * math.pi), random(), random(), random())
|
|
transforms[i]:rotate(random(2 * math.pi), random(), random(), random())
|
|
@@ -54,7 +54,7 @@ return {
|
|
-- Draw the model 1000 times, using positions from the shader block
|
|
-- Draw the model 1000 times, using positions from the shader block
|
|
function lovr.draw()
|
|
function lovr.draw()
|
|
lovr.graphics.setShader(shader)
|
|
lovr.graphics.setShader(shader)
|
|
- model:drawInstanced(1000)
|
|
|
|
|
|
+ model:draw(lovr.math.mat4(), 1000)
|
|
lovr.graphics.setShader()
|
|
lovr.graphics.setShader()
|
|
end
|
|
end
|
|
]=]
|
|
]=]
|