SHADER模块整理,初始化代码移至main
This commit is contained in:
@@ -7,7 +7,6 @@ VIB= require("Zframework/vib")
|
||||
SFX= require("Zframework/sfx")
|
||||
|
||||
LIGHT= require("Zframework/light")
|
||||
SHADER= require("Zframework/shader")
|
||||
BG= require("Zframework/bg")
|
||||
WIDGET= require("Zframework/widget")
|
||||
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:
|
||||
--https://github.com/mattdesl/lwjgl-basics/wiki/2D-Pixel-Perfect-Shadows
|
||||
local gc=love.graphics
|
||||
local C=gc.clear
|
||||
local shadowMapShader=gc.newShader("Zframework/shader/shadowMap.glsl")--Shader for caculating the 1D shadow map.
|
||||
local lightRenderShader=gc.newShader("Zframework/shader/lightRender.glsl")--Shader for rendering blurred lights and shadows.
|
||||
local clear,translate=gc.clear,gc.translate
|
||||
local setCanvas,setShader=gc.setCanvas,gc.setShader
|
||||
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 function move(L,x,y)
|
||||
L.x,L.y=x,y
|
||||
@@ -20,9 +23,9 @@ end
|
||||
local function draw(L)
|
||||
--Initialization
|
||||
local r,g,b,a=love.graphics.getColor()
|
||||
gc.setCanvas(L.blackCanvas)C()
|
||||
gc.setCanvas(L.shadowCanvas)C()
|
||||
gc.setCanvas(L.renderCanvas)C()
|
||||
setCanvas(L.blackCanvas)clear()
|
||||
setCanvas(L.shadowCanvas)clear()
|
||||
setCanvas(L.renderCanvas)clear()
|
||||
lightRenderShader:send("xresolution",L.size)
|
||||
shadowMapShader:send("yresolution",L.size)
|
||||
|
||||
@@ -31,26 +34,26 @@ local function draw(L)
|
||||
local Y=L.y-L.size*.5
|
||||
|
||||
--Render solid
|
||||
gc.translate(-X,-Y)
|
||||
translate(-X,-Y)
|
||||
L.blackCanvas:renderTo(L.blackFn)
|
||||
gc.translate(X,Y)
|
||||
translate(X,Y)
|
||||
|
||||
--Render shade canvas by solid
|
||||
gc.setShader(shadowMapShader)
|
||||
gc.setCanvas(L.shadowCanvas)
|
||||
gc.draw(L.blackCanvas)
|
||||
setShader(shadowMapShader)
|
||||
setCanvas(L.shadowCanvas)
|
||||
render(L.blackCanvas)
|
||||
|
||||
--Render light canvas by shade
|
||||
gc.setShader(lightRenderShader)
|
||||
gc.setCanvas(L.renderCanvas)
|
||||
gc.draw(L.shadowCanvas,0,0,0,1,L.size)
|
||||
setShader(lightRenderShader)
|
||||
setCanvas(L.renderCanvas)
|
||||
render(L.shadowCanvas,0,0,0,1,L.size)
|
||||
|
||||
--Ready to final render
|
||||
gc.setShader()gc.setCanvas()gc.setBlendMode("add")
|
||||
setShader()setCanvas()gc.setBlendMode("add")
|
||||
|
||||
--Render to screes
|
||||
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
|
||||
gc.setBlendMode("alpha")
|
||||
@@ -71,7 +74,6 @@ end
|
||||
function LIGHT.add(x,y,R,F)
|
||||
local id=#Lights+1
|
||||
Lights[id]={
|
||||
--Methods
|
||||
id=id,
|
||||
x=x,y=y,size=R,
|
||||
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
|
||||
blackFn=F,--Solid draw funcion
|
||||
|
||||
|
||||
move=move,
|
||||
setPow=setPow,
|
||||
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
|
||||
RANKS={sprint_10=0}
|
||||
|
||||
|
||||
--Load modules
|
||||
require("Zframework")
|
||||
|
||||
@@ -192,6 +191,17 @@ VOC.set{
|
||||
"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
|
||||
for _,v in next,love.filesystem.getDirectoryItems("parts/backgrounds")do
|
||||
if love.filesystem.getRealDirectory("parts/backgrounds/"..v)~=SAVEDIR then
|
||||
|
||||
@@ -2,22 +2,23 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local back={}
|
||||
|
||||
local shader=SHADER.aura
|
||||
local t
|
||||
|
||||
function back.init()
|
||||
t=rnd()*2600
|
||||
BG.resize(SCR.w,SCR.h)
|
||||
end
|
||||
function back.resize(_,h)
|
||||
SHADER.aura:send("w",SCR.W)
|
||||
SHADER.aura:send("h",h*SCR.dpi)
|
||||
shader:send("w",SCR.W)
|
||||
shader:send("h",h*SCR.dpi)
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
SHADER.aura:send("t",t)
|
||||
gc.setShader(SHADER.aura)
|
||||
shader:send("t",t)
|
||||
gc.setShader(shader)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local back={}
|
||||
local shader=SHADER.grad1
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
@@ -9,14 +10,14 @@ function back.init()
|
||||
BG.resize()
|
||||
end
|
||||
function back.resize()
|
||||
SHADER.gradient1:send("w",SCR.W)
|
||||
shader:send("w",SCR.W)
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
SHADER.gradient1:send("t",t)
|
||||
gc.setShader(SHADER.gradient1)
|
||||
shader:send("t",t)
|
||||
gc.setShader(shader)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local back={}
|
||||
local shader=SHADER.grad2
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
@@ -9,14 +10,14 @@ function back.init()
|
||||
BG.resize(nil,SCR.h)
|
||||
end
|
||||
function back.resize(_,h)
|
||||
SHADER.gradient2:send("h",h*SCR.dpi)
|
||||
shader:send("h",h*SCR.dpi)
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
SHADER.gradient2:send("t",t)
|
||||
gc.setShader(SHADER.gradient2)
|
||||
shader:send("t",t)
|
||||
gc.setShader(shader)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local back={}
|
||||
local shader=SHADER.rgb1
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
@@ -9,15 +10,15 @@ function back.init()
|
||||
BG.resize(SCR.w,SCR.h)
|
||||
end
|
||||
function back.resize(_,h)
|
||||
SHADER.rgb1:send("w",SCR.W)
|
||||
SHADER.rgb1:send("h",h*SCR.dpi)
|
||||
shader:send("w",SCR.W)
|
||||
shader:send("h",h*SCR.dpi)
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
SHADER.rgb1:send("t",t)
|
||||
gc.setShader(SHADER.rgb1)
|
||||
shader:send("t",t)
|
||||
gc.setShader(shader)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local back={}
|
||||
local shader=SHADER.rgb2
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
@@ -9,15 +10,15 @@ function back.init()
|
||||
BG.resize(SCR.w,SCR.h)
|
||||
end
|
||||
function back.resize(_,h)
|
||||
SHADER.rgb2:send("w",SCR.W)
|
||||
SHADER.rgb2:send("h",h*SCR.dpi)
|
||||
shader:send("w",SCR.W)
|
||||
shader:send("h",h*SCR.dpi)
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
SHADER.rgb2:send("t",t)
|
||||
gc.setShader(SHADER.rgb2)
|
||||
shader:send("t",t)
|
||||
gc.setShader(shader)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user