2
0
Эх сурвалжийг харах

Update most Intro examples;

bjorn 3 жил өмнө
parent
commit
6cd32ffab7

+ 2 - 2
examples/Intro/360_Photo/main.lua

@@ -4,6 +4,6 @@ function lovr.load()
   skybox = lovr.graphics.newTexture('equirectangular.jpg', { mipmaps = false })
 end
 
-function lovr.draw()
-  lovr.graphics.skybox(skybox)
+function lovr.draw(pass)
+  pass:skybox(skybox)
 end

+ 0 - 3
examples/Intro/3D_Model/conf.lua

@@ -1,3 +0,0 @@
-function lovr.conf(t)
-  t.window.msaa = 8
-end

+ 4 - 5
examples/Intro/3D_Model/main.lua

@@ -1,11 +1,10 @@
--- Note: Wireframe rendering doesn't work in WebGL
+-- Note: Wireframe rendering doesn't work in browsers
 
 function lovr.load()
   model = lovr.graphics.newModel('suzanne.obj')
 end
 
-function lovr.draw()
-  lovr.graphics.setWireframe(true)
-  model:draw(0, 1.7, -3, 1, lovr.timer.getTime() * .25)
-  lovr.graphics.setWireframe(false)
+function lovr.draw(pass)
+  pass:setWireframe(true)
+  pass:draw(model, 0, 1.7, -3, 1, lovr.headset.getTime() * .25)
 end

+ 2 - 2
examples/Intro/Hello_World/main.lua

@@ -1,3 +1,3 @@
-function lovr.draw()
-  lovr.graphics.print('hello world', 0, 1.7, -5)
+function lovr.draw(pass)
+  pass:text('hello world', 0, 1.7, -5)
 end

+ 35 - 35
examples/Intro/Shapes/main.lua

@@ -1,22 +1,20 @@
 shader = require 'shader'
 
-local function drawLabel(str, x, y, z)
-  lovr.graphics.setColor(1, 1, 1)
-  lovr.graphics.print(str, x, y, z, .1)
-end
+lovr.graphics.setBackground(.1, .1, .1)
 
-function lovr.draw()
-  lovr.graphics.setBackgroundColor(.1, .1, .1)
-  lovr.graphics.setShader(shader)
+local function drawLabel(pass, str, x, y, z)
+  pass:setColor(1, 1, 1)
+  pass:text(str, x, y, z, .1)
+end
 
-  local hx, hy, hz = lovr.headset.getPosition()
+function lovr.draw(pass)
+  local t = lovr.headset.getTime()
   local x, y, z
 
   -- Point
   x, y, z = -.3, 1.1, -1
-  lovr.graphics.setPointSize(5)
-  lovr.graphics.setColor(1, 1, 1)
-  lovr.graphics.points(x, y, z)
+  pass:setColor(1, 1, 1)
+  pass:points(x, y, z)
 
   -- Line
   x, y, z = .3, 1.1, -1
@@ -24,46 +22,48 @@ function lovr.draw()
     x - .1, y, z,
     x + .1, y, z
   }
-  lovr.graphics.setColor(1, 1, 1)
-  lovr.graphics.line(points)
+  pass:setColor(1, 1, 1)
+  pass:line(points)
+
+  pass:setShader(shader)
 
   -- Plane
   local x, y, z = -.6, 1.7, -1.5
-  lovr.graphics.setColor(.94, .33, .31)
-  lovr.graphics.plane('fill', x, y, z, .4, .4, lovr.timer.getTime())
+  pass:setColor(.94, .33, .31)
+  pass:plane(x, y, z, .4, .4, t)
 
   -- Cube
   local x, y, z = 0, 1.7, -1.5
-  lovr.graphics.setColor(.49, .34, .76)
-  lovr.graphics.cube('fill', x, y, z, .3, lovr.timer.getTime())
+  pass:setColor(.49, .34, .76)
+  pass:cube(x, y, z, .3, t)
 
   -- Box
   local x, y, z = .6, 1.7, -1.5
-  lovr.graphics.setColor(1, .65, .18)
-  lovr.graphics.box('fill', x, y, z, .4, .2, .3, lovr.timer.getTime())
+  pass:setColor(1, .65, .18)
+  pass:box(x, y, z, .4, .2, .3, t)
 
   -- Cylinder
   local x, y, z = -.6, 2.4, -2
-  lovr.graphics.setColor(.4, .73, .42)
-  lovr.graphics.cylinder(x, y, z, .4, lovr.timer.getTime(), 0, 1, 0, .1, .1)
+  pass:setColor(.4, .73, .42)
+  pass:cylinder(x, y, z, .1, .4, t)
 
   -- Cone
-  local x, y, z = 0, 2.4, -2
-  lovr.graphics.setColor(1, .95, .46)
-  lovr.graphics.cylinder(x, y, z, .4, math.pi / 2, 1, 0, 0, 0, .18)
+  local x, y, z = 0, 2.2, -2
+  pass:setColor(1, .95, .46)
+  pass:cone(x, y, z, .18, .4, math.pi / 2, 1, 0, 0)
 
   -- Sphere
   local x, y, z = .6, 2.4, -2
-  lovr.graphics.setColor(.3, .82, 1)
-  lovr.graphics.sphere(x, y, z, .2)
+  pass:setColor(.3, .82, 1)
+  pass:sphere(x, y, z, .2)
 
-  lovr.graphics.setShader()
-  drawLabel('Point', -.3, 1.4, -1)
-  drawLabel('Line', .3, 1.4, -1)
-  drawLabel('Plane', -.6, 2.0, -1.5)
-  drawLabel('Cube', 0, 2.0, -1.5)
-  drawLabel('Box', .6, 2.0, -1.5)
-  drawLabel('Cylinder', -.6, 2.7, -2)
-  drawLabel('Cone', 0, 2.7, -2)
-  drawLabel('Sphere', .6, 2.7, -2)
+  pass:setShader()
+  drawLabel(pass, 'Point', -.3, 1.4, -1)
+  drawLabel(pass, 'Line', .3, 1.4, -1)
+  drawLabel(pass, 'Plane', -.6, 2.0, -1.5)
+  drawLabel(pass, 'Cube', 0, 2.0, -1.5)
+  drawLabel(pass, 'Box', .6, 2.0, -1.5)
+  drawLabel(pass, 'Cylinder', -.6, 2.7, -2)
+  drawLabel(pass, 'Cone', 0, 2.7, -2)
+  drawLabel(pass, 'Sphere', .6, 2.7, -2)
 end

+ 12 - 35
examples/Intro/Shapes/shader.lua

@@ -1,43 +1,20 @@
 return lovr.graphics.newShader([[
-
-// All of these are in view-space.
-out vec3 lightDirection; // A vector from the vertex to the light
-out vec3 normalDirection;
-out vec3 vertexPosition;
-
-vec4 position(mat4 projection, mat4 transform, vec4 vertex) {
-  vec3 lightPosition = vec3(0., 10., 3.);
-  vec4 vVertex = transform * vec4(lovrPosition, 1.);
-  vec4 vLight = lovrView * vec4(lightPosition, 1.);
-
-  lightDirection = normalize(vec3(vLight - vVertex));
-  normalDirection = normalize(lovrNormalMatrix * lovrNormal);
-  vertexPosition = vVertex.xyz;
-
-  return projection * transform * vertex;
+vec4 lovrmain() {
+  PointSize = 5.0;
+  return DefaultPosition;
 }
 ]], [[
-in vec3 lightDirection;
-in vec3 normalDirection;
-in vec3 vertexPosition;
-
-vec4 color(vec4 graphicsColor, sampler2D image, vec2 uv) {
-  vec3 cAmbient = vec3(.25);
-  vec3 cDiffuse = vec3(1.);
-  vec3 cSpecular = vec3(.35);
-
-  float diffuse = max(dot(normalDirection, lightDirection), 0.);
-  float specular = 0.;
+vec4 lovrmain() {
+  const vec3 lightPosition = vec3(0., 2.0, -1.);
+  float distance = length(PositionWorld - lightPosition);
+  const vec3 lightDirection = normalize(PositionWorld - lightPosition);
+  const vec4 lightColor = vec4(1, 1, 1, 5);
 
-  if (diffuse > 0.) {
-    vec3 r = reflect(lightDirection, normalDirection);
-    vec3 viewDirection = normalize(-vertexPosition);
+  Surface surface;
+  initSurface(surface);
 
-    float specularAngle = max(dot(r, viewDirection), 0.);
-    specular = pow(specularAngle, 5.);
-  }
+  vec3 lighting = getLighting(surface, lightDirection, lightColor, 1.0 / distance);
 
-  vec3 cFinal = pow(clamp(vec3(diffuse) * cDiffuse + vec3(specular) * cSpecular, cAmbient, vec3(1.)), vec3(.4545));
-  return vec4(cFinal, 1.) * graphicsColor * texture(image, uv);
+  return vec4(Color.rgb * lighting, Color.a);
 }
 ]])

+ 2 - 2
examples/Intro/Spinning_Cube/main.lua

@@ -1,3 +1,3 @@
-function lovr.draw()
-  lovr.graphics.cube('line', 0, 1.7, -1, .5, lovr.timer.getTime())
+function lovr.draw(pass)
+  pass:cube(0, 1.7, -1, .5, lovr.headset.getTime(), 0, 1, 0, 'line')
 end

+ 2 - 2
examples/Intro/Thread/main.lua

@@ -26,7 +26,7 @@ function lovr.update(dt)
   message = channel:pop()
 end
 
-function lovr.draw()
+function lovr.draw(pass)
   -- Display the message on screen/headset
-  lovr.graphics.print(tostring(message), 0, 1.7, -5)
+  pass:text(tostring(message), 0, 1.7, -5)
 end

+ 2 - 2
examples/Intro/Tracked_Hands/main.lua

@@ -1,6 +1,6 @@
-function lovr.draw()
+function lovr.draw(pass)
   for i, hand in ipairs(lovr.headset.getHands()) do
     local x, y, z = lovr.headset.getPosition(hand)
-    lovr.graphics.sphere(x, y, z, .1)
+    pass:sphere(x, y, z, .1)
   end
 end