SHADER模块整理,初始化代码移至main
This commit is contained in:
@@ -7,7 +7,6 @@ VIB= require("Zframework/vib")
|
|||||||
SFX= require("Zframework/sfx")
|
SFX= require("Zframework/sfx")
|
||||||
|
|
||||||
LIGHT= require("Zframework/light")
|
LIGHT= require("Zframework/light")
|
||||||
SHADER= require("Zframework/shader")
|
|
||||||
BG= require("Zframework/bg")
|
BG= require("Zframework/bg")
|
||||||
WIDGET= require("Zframework/widget")
|
WIDGET= require("Zframework/widget")
|
||||||
TEXT= require("Zframework/text")
|
TEXT= require("Zframework/text")
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
--LIGHT MODULE(Optimized by MrZ,Original on github/love2d community/simple-love-lights)
|
--LIGHT MODULE (Optimized by MrZ, Original on github/love2d community/simple-love-lights)
|
||||||
--Heavily based on mattdesl's libGDX implementation:
|
--Heavily based on mattdesl's libGDX implementation:
|
||||||
--https://github.com/mattdesl/lwjgl-basics/wiki/2D-Pixel-Perfect-Shadows
|
--https://github.com/mattdesl/lwjgl-basics/wiki/2D-Pixel-Perfect-Shadows
|
||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local C=gc.clear
|
local clear,translate=gc.clear,gc.translate
|
||||||
local shadowMapShader=gc.newShader("Zframework/shader/shadowMap.glsl")--Shader for caculating the 1D shadow map.
|
local setCanvas,setShader=gc.setCanvas,gc.setShader
|
||||||
local lightRenderShader=gc.newShader("Zframework/shader/lightRender.glsl")--Shader for rendering blurred lights and shadows.
|
local render=gc.draw
|
||||||
|
|
||||||
|
local shadowMapShader=gc.newShader("Zframework/light/shadowMap.glsl")--Shader for caculating the 1D shadow map.
|
||||||
|
local lightRenderShader=gc.newShader("Zframework/light/lightRender.glsl")--Shader for rendering blurred lights and shadows.
|
||||||
local Lights={}--Lightsource objects
|
local Lights={}--Lightsource objects
|
||||||
local function move(L,x,y)
|
local function move(L,x,y)
|
||||||
L.x,L.y=x,y
|
L.x,L.y=x,y
|
||||||
@@ -20,9 +23,9 @@ end
|
|||||||
local function draw(L)
|
local function draw(L)
|
||||||
--Initialization
|
--Initialization
|
||||||
local r,g,b,a=love.graphics.getColor()
|
local r,g,b,a=love.graphics.getColor()
|
||||||
gc.setCanvas(L.blackCanvas)C()
|
setCanvas(L.blackCanvas)clear()
|
||||||
gc.setCanvas(L.shadowCanvas)C()
|
setCanvas(L.shadowCanvas)clear()
|
||||||
gc.setCanvas(L.renderCanvas)C()
|
setCanvas(L.renderCanvas)clear()
|
||||||
lightRenderShader:send("xresolution",L.size)
|
lightRenderShader:send("xresolution",L.size)
|
||||||
shadowMapShader:send("yresolution",L.size)
|
shadowMapShader:send("yresolution",L.size)
|
||||||
|
|
||||||
@@ -31,26 +34,26 @@ local function draw(L)
|
|||||||
local Y=L.y-L.size*.5
|
local Y=L.y-L.size*.5
|
||||||
|
|
||||||
--Render solid
|
--Render solid
|
||||||
gc.translate(-X,-Y)
|
translate(-X,-Y)
|
||||||
L.blackCanvas:renderTo(L.blackFn)
|
L.blackCanvas:renderTo(L.blackFn)
|
||||||
gc.translate(X,Y)
|
translate(X,Y)
|
||||||
|
|
||||||
--Render shade canvas by solid
|
--Render shade canvas by solid
|
||||||
gc.setShader(shadowMapShader)
|
setShader(shadowMapShader)
|
||||||
gc.setCanvas(L.shadowCanvas)
|
setCanvas(L.shadowCanvas)
|
||||||
gc.draw(L.blackCanvas)
|
render(L.blackCanvas)
|
||||||
|
|
||||||
--Render light canvas by shade
|
--Render light canvas by shade
|
||||||
gc.setShader(lightRenderShader)
|
setShader(lightRenderShader)
|
||||||
gc.setCanvas(L.renderCanvas)
|
setCanvas(L.renderCanvas)
|
||||||
gc.draw(L.shadowCanvas,0,0,0,1,L.size)
|
render(L.shadowCanvas,0,0,0,1,L.size)
|
||||||
|
|
||||||
--Ready to final render
|
--Ready to final render
|
||||||
gc.setShader()gc.setCanvas()gc.setBlendMode("add")
|
setShader()setCanvas()gc.setBlendMode("add")
|
||||||
|
|
||||||
--Render to screes
|
--Render to screes
|
||||||
gc.setColor(r,g,b,a)
|
gc.setColor(r,g,b,a)
|
||||||
gc.draw(L.renderCanvas,X,Y+L.size,0,1,-1)
|
render(L.renderCanvas,X,Y+L.size,0,1,-1)
|
||||||
|
|
||||||
--Reset
|
--Reset
|
||||||
gc.setBlendMode("alpha")
|
gc.setBlendMode("alpha")
|
||||||
@@ -71,7 +74,6 @@ end
|
|||||||
function LIGHT.add(x,y,R,F)
|
function LIGHT.add(x,y,R,F)
|
||||||
local id=#Lights+1
|
local id=#Lights+1
|
||||||
Lights[id]={
|
Lights[id]={
|
||||||
--Methods
|
|
||||||
id=id,
|
id=id,
|
||||||
x=x,y=y,size=R,
|
x=x,y=y,size=R,
|
||||||
blackCanvas=gc.newCanvas(R,R),--Solid canvas
|
blackCanvas=gc.newCanvas(R,R),--Solid canvas
|
||||||
@@ -79,7 +81,6 @@ function LIGHT.add(x,y,R,F)
|
|||||||
renderCanvas=gc.newCanvas(R,R),--Light canvas
|
renderCanvas=gc.newCanvas(R,R),--Light canvas
|
||||||
blackFn=F,--Solid draw funcion
|
blackFn=F,--Solid draw funcion
|
||||||
|
|
||||||
|
|
||||||
move=move,
|
move=move,
|
||||||
setPow=setPow,
|
setPow=setPow,
|
||||||
draw=draw,
|
draw=draw,
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
local function N(file)
|
|
||||||
return love.graphics.newShader("Zframework/shader/"..file..".glsl")
|
|
||||||
end
|
|
||||||
return{
|
|
||||||
-- glow=gc.newShader("Zframework/shader/glow.cs"),
|
|
||||||
alpha=N("alpha"),
|
|
||||||
warning=N("warning"),
|
|
||||||
|
|
||||||
aura=N("aura"),
|
|
||||||
gradient1=N("grad1"),--Horizonal red-blue gradient
|
|
||||||
gradient2=N("grad2"),--Vertical red-green gradient
|
|
||||||
rgb1=N("rgb1"),--Colorful RGB
|
|
||||||
rgb2=N("rgb2"),--Blue RGB
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
extern float X,Y,W,H;
|
|
||||||
vec4 effect(vec4 C,Image Tx,vec2 pos,vec2 scr_pos){
|
|
||||||
C[3]=min((scr_pos.x-X)/W*0.3+(scr_pos.y-Y)/H*0.1,0.3)+0.5;
|
|
||||||
return C;
|
|
||||||
}
|
|
||||||
12
main.lua
12
main.lua
@@ -113,7 +113,6 @@ PLAYERS={alive={}}--Players data
|
|||||||
CURMODE=nil--Current mode object
|
CURMODE=nil--Current mode object
|
||||||
RANKS={sprint_10=0}
|
RANKS={sprint_10=0}
|
||||||
|
|
||||||
|
|
||||||
--Load modules
|
--Load modules
|
||||||
require("Zframework")
|
require("Zframework")
|
||||||
|
|
||||||
@@ -192,6 +191,17 @@ VOC.set{
|
|||||||
"welcome_voc",
|
"welcome_voc",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
--Load shader files from SOURCE ONLY
|
||||||
|
SHADER={}
|
||||||
|
for _,v in next,love.filesystem.getDirectoryItems("parts/shaders")do
|
||||||
|
if love.filesystem.getRealDirectory("parts/shaders/"..v)~=SAVEDIR then
|
||||||
|
local name=v:sub(1,-6)
|
||||||
|
SHADER[name]=love.graphics.newShader("parts/shaders/"..name..".glsl")
|
||||||
|
else
|
||||||
|
LOG.print("Dangerous file : %SAVE%/parts/shaders/"..v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
--Load background files from SOURCE ONLY
|
--Load background files from SOURCE ONLY
|
||||||
for _,v in next,love.filesystem.getDirectoryItems("parts/backgrounds")do
|
for _,v in next,love.filesystem.getDirectoryItems("parts/backgrounds")do
|
||||||
if love.filesystem.getRealDirectory("parts/backgrounds/"..v)~=SAVEDIR then
|
if love.filesystem.getRealDirectory("parts/backgrounds/"..v)~=SAVEDIR then
|
||||||
|
|||||||
@@ -2,22 +2,23 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local rnd=math.random
|
local rnd=math.random
|
||||||
local back={}
|
local back={}
|
||||||
|
local shader=SHADER.aura
|
||||||
local t
|
local t
|
||||||
|
|
||||||
function back.init()
|
function back.init()
|
||||||
t=rnd()*2600
|
t=rnd()*2600
|
||||||
BG.resize(SCR.w,SCR.h)
|
BG.resize(SCR.w,SCR.h)
|
||||||
end
|
end
|
||||||
function back.resize(_,h)
|
function back.resize(_,h)
|
||||||
SHADER.aura:send("w",SCR.W)
|
shader:send("w",SCR.W)
|
||||||
SHADER.aura:send("h",h*SCR.dpi)
|
shader:send("h",h*SCR.dpi)
|
||||||
end
|
end
|
||||||
function back.update(dt)
|
function back.update(dt)
|
||||||
t=t+dt
|
t=t+dt
|
||||||
end
|
end
|
||||||
function back.draw()
|
function back.draw()
|
||||||
SHADER.aura:send("t",t)
|
shader:send("t",t)
|
||||||
gc.setShader(SHADER.aura)
|
gc.setShader(shader)
|
||||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||||
gc.setShader()
|
gc.setShader()
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local rnd=math.random
|
local rnd=math.random
|
||||||
local back={}
|
local back={}
|
||||||
|
local shader=SHADER.grad1
|
||||||
|
|
||||||
local t
|
local t
|
||||||
function back.init()
|
function back.init()
|
||||||
@@ -9,14 +10,14 @@ function back.init()
|
|||||||
BG.resize()
|
BG.resize()
|
||||||
end
|
end
|
||||||
function back.resize()
|
function back.resize()
|
||||||
SHADER.gradient1:send("w",SCR.W)
|
shader:send("w",SCR.W)
|
||||||
end
|
end
|
||||||
function back.update(dt)
|
function back.update(dt)
|
||||||
t=t+dt
|
t=t+dt
|
||||||
end
|
end
|
||||||
function back.draw()
|
function back.draw()
|
||||||
SHADER.gradient1:send("t",t)
|
shader:send("t",t)
|
||||||
gc.setShader(SHADER.gradient1)
|
gc.setShader(shader)
|
||||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||||
gc.setShader()
|
gc.setShader()
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local rnd=math.random
|
local rnd=math.random
|
||||||
local back={}
|
local back={}
|
||||||
|
local shader=SHADER.grad2
|
||||||
|
|
||||||
local t
|
local t
|
||||||
function back.init()
|
function back.init()
|
||||||
@@ -9,14 +10,14 @@ function back.init()
|
|||||||
BG.resize(nil,SCR.h)
|
BG.resize(nil,SCR.h)
|
||||||
end
|
end
|
||||||
function back.resize(_,h)
|
function back.resize(_,h)
|
||||||
SHADER.gradient2:send("h",h*SCR.dpi)
|
shader:send("h",h*SCR.dpi)
|
||||||
end
|
end
|
||||||
function back.update(dt)
|
function back.update(dt)
|
||||||
t=t+dt
|
t=t+dt
|
||||||
end
|
end
|
||||||
function back.draw()
|
function back.draw()
|
||||||
SHADER.gradient2:send("t",t)
|
shader:send("t",t)
|
||||||
gc.setShader(SHADER.gradient2)
|
gc.setShader(shader)
|
||||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||||
gc.setShader()
|
gc.setShader()
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local rnd=math.random
|
local rnd=math.random
|
||||||
local back={}
|
local back={}
|
||||||
|
local shader=SHADER.rgb1
|
||||||
|
|
||||||
local t
|
local t
|
||||||
function back.init()
|
function back.init()
|
||||||
@@ -9,15 +10,15 @@ function back.init()
|
|||||||
BG.resize(SCR.w,SCR.h)
|
BG.resize(SCR.w,SCR.h)
|
||||||
end
|
end
|
||||||
function back.resize(_,h)
|
function back.resize(_,h)
|
||||||
SHADER.rgb1:send("w",SCR.W)
|
shader:send("w",SCR.W)
|
||||||
SHADER.rgb1:send("h",h*SCR.dpi)
|
shader:send("h",h*SCR.dpi)
|
||||||
end
|
end
|
||||||
function back.update(dt)
|
function back.update(dt)
|
||||||
t=t+dt
|
t=t+dt
|
||||||
end
|
end
|
||||||
function back.draw()
|
function back.draw()
|
||||||
SHADER.rgb1:send("t",t)
|
shader:send("t",t)
|
||||||
gc.setShader(SHADER.rgb1)
|
gc.setShader(shader)
|
||||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||||
gc.setShader()
|
gc.setShader()
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local rnd=math.random
|
local rnd=math.random
|
||||||
local back={}
|
local back={}
|
||||||
|
local shader=SHADER.rgb2
|
||||||
|
|
||||||
local t
|
local t
|
||||||
function back.init()
|
function back.init()
|
||||||
@@ -9,15 +10,15 @@ function back.init()
|
|||||||
BG.resize(SCR.w,SCR.h)
|
BG.resize(SCR.w,SCR.h)
|
||||||
end
|
end
|
||||||
function back.resize(_,h)
|
function back.resize(_,h)
|
||||||
SHADER.rgb2:send("w",SCR.W)
|
shader:send("w",SCR.W)
|
||||||
SHADER.rgb2:send("h",h*SCR.dpi)
|
shader:send("h",h*SCR.dpi)
|
||||||
end
|
end
|
||||||
function back.update(dt)
|
function back.update(dt)
|
||||||
t=t+dt
|
t=t+dt
|
||||||
end
|
end
|
||||||
function back.draw()
|
function back.draw()
|
||||||
SHADER.rgb2:send("t",t)
|
shader:send("t",t)
|
||||||
gc.setShader(SHADER.rgb2)
|
gc.setShader(shader)
|
||||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||||
gc.setShader()
|
gc.setShader()
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user