don't hurt me...
This commit is contained in:
parent
7b2a464d8c
commit
fd24f276e2
2 changed files with 36 additions and 18 deletions
|
@ -7,17 +7,28 @@ local local_light_shader = preloadShader("pipelines/local_light.shd")
|
||||||
local prepare_terrain_shader = preloadShader("pipelines/prepare_terrain.shd")
|
local prepare_terrain_shader = preloadShader("pipelines/prepare_terrain.shd")
|
||||||
local debug_shadowmap = false
|
local debug_shadowmap = false
|
||||||
|
|
||||||
function transparentPass(colorbuffer, dsbuffer)
|
local decal_state = {
|
||||||
beginBlock("transparent_pass")
|
blending = "add",
|
||||||
|
depth_write = false
|
||||||
|
}
|
||||||
|
|
||||||
|
local transparent_state = {
|
||||||
|
blending = "add",
|
||||||
|
depth_write = false
|
||||||
|
}
|
||||||
|
|
||||||
|
local default_state = {
|
||||||
|
define = "DEFERRED",
|
||||||
|
depth_write = true
|
||||||
|
}
|
||||||
|
|
||||||
|
function transparentPass(transparent_set, colorbuffer, dsbuffer)
|
||||||
setRenderTargets(colorbuffer, dsbuffer)
|
setRenderTargets(colorbuffer, dsbuffer)
|
||||||
|
|
||||||
local view_params = getCameraParams()
|
beginBlock("transparent_pass")
|
||||||
blending("add")
|
renderBucket(transparent_set, transparent_state)
|
||||||
--renderMeshes("", view_params)
|
--renderParticles(view_params)
|
||||||
renderParticles(view_params)
|
|
||||||
endBlock()
|
endBlock()
|
||||||
blending("")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function geomPass(default_set, decal_set)
|
function geomPass(default_set, decal_set)
|
||||||
|
@ -31,18 +42,18 @@ function geomPass(default_set, decal_set)
|
||||||
|
|
||||||
setRenderTargets(gbuffer0, gbuffer1, gbuffer2, dsbuffer)
|
setRenderTargets(gbuffer0, gbuffer1, gbuffer2, dsbuffer)
|
||||||
clear(CLEAR_ALL, 0, 0, 0, 1, 0)
|
clear(CLEAR_ALL, 0, 0, 0, 1, 0)
|
||||||
blending("")
|
|
||||||
local view_params = getCameraParams()
|
local view_params = getCameraParams()
|
||||||
setStencil(0xff, STENCIL_ALWAYS, 1, 0xff, STENCIL_REPLACE, STENCIL_REPLACE, STENCIL_REPLACE);
|
setStencil(0xff, STENCIL_ALWAYS, 1, 0xff, STENCIL_REPLACE, STENCIL_REPLACE, STENCIL_REPLACE);
|
||||||
renderTerrains("DEFERRED", view_params)
|
renderTerrains("DEFERRED", view_params)
|
||||||
renderBucket("DEFERRED", default_set)
|
renderBucket(default_set, default_state)
|
||||||
setStencil(0xff, STENCIL_DISABLE, 0, 0, STENCIL_KEEP, STENCIL_KEEP, STENCIL_KEEP);
|
setStencil(0xff, STENCIL_DISABLE, 0, 0, STENCIL_KEEP, STENCIL_KEEP, STENCIL_KEEP);
|
||||||
|
endBlock()
|
||||||
|
|
||||||
|
beginBlock("decals")
|
||||||
bindTextures({
|
bindTextures({
|
||||||
u_gbuffer_depth = gbuffer_depth,
|
u_gbuffer_depth = gbuffer_depth,
|
||||||
}, 0)
|
}, 0)
|
||||||
endBlock()
|
renderBucket(decal_set, decal_state)
|
||||||
beginBlock("decals")
|
|
||||||
renderBucket("", decal_set)
|
|
||||||
endBlock()
|
endBlock()
|
||||||
|
|
||||||
return gbuffer0, gbuffer1, gbuffer2, dsbuffer
|
return gbuffer0, gbuffer1, gbuffer2, dsbuffer
|
||||||
|
@ -150,11 +161,18 @@ end
|
||||||
|
|
||||||
function main()
|
function main()
|
||||||
local view_params = getCameraParams()
|
local view_params = getCameraParams()
|
||||||
local default_set, decal_set, local_light_set = prepareCommands(view_params, { default = 0, decal = 1, local_light = 2})
|
local default_set, decal_set, local_light_set, transparent_set = prepareCommands(view_params,
|
||||||
|
{
|
||||||
|
{ layers = { "default" } },
|
||||||
|
{ layers = { "decal" } },
|
||||||
|
{ layers = { "local_light" } },
|
||||||
|
{ layers = { "transparent" }, sort = "depth" }
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
local shadowmap = createRenderbuffer(4096, 1024, false, "depth24") --shadowPass()
|
local shadowmap = createRenderbuffer(4096, 1024, false, "depth24") --shadowPass()
|
||||||
local gbuffer0, gbuffer1, gbuffer2, gbuffer_depth = geomPass(default_set, decal_set)
|
local gbuffer0, gbuffer1, gbuffer2, gbuffer_depth = geomPass(default_set, decal_set, transparent_set)
|
||||||
local hdr_buffer = lightPass(gbuffer0, gbuffer1, gbuffer2, gbuffer_depth, shadowmap, local_light_set)
|
local hdr_buffer = lightPass(gbuffer0, gbuffer1, gbuffer2, gbuffer_depth, shadowmap, local_light_set)
|
||||||
|
|
||||||
local res = hdr_buffer
|
local res = hdr_buffer
|
||||||
|
@ -162,7 +180,7 @@ function main()
|
||||||
res = postprocess("pre", hdr_buffer, gbuffer0, gbuffer1, gbuffer2, gbuffer_depth, shadowmap)
|
res = postprocess("pre", hdr_buffer, gbuffer0, gbuffer1, gbuffer2, gbuffer_depth, shadowmap)
|
||||||
end
|
end
|
||||||
|
|
||||||
--transparentPass(res, gbuffer_depth)
|
transparentPass(transparent_set, res, gbuffer_depth)
|
||||||
setRenderTargets(hdr_buffer, gbuffer_depth)
|
setRenderTargets(hdr_buffer, gbuffer_depth)
|
||||||
renderTextMeshes()
|
renderTextMeshes()
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ fragment_shader [[
|
||||||
vec2 splat_uv = (ij / 2048.0 + v_uv / 1024.0 * 64 * s);
|
vec2 splat_uv = (ij / 2048.0 + v_uv / 1024.0 * 64 * s);
|
||||||
splat_uv.y = 1 - splat_uv.y;
|
splat_uv.y = 1 - splat_uv.y;
|
||||||
vec4 splat = texture(u_splatmap, splat_uv);
|
vec4 splat = texture(u_splatmap, splat_uv);
|
||||||
vec4 c2 = texture(u_detail_textures, vec3(splat_uv * 1024, 0.5 + splat.x * 256));
|
vec4 c2 = texture(u_detail_textures, vec3(splat_uv * 128, 0.5 + splat.x * 256));
|
||||||
o_color = vec4(c2.rgb, 1);
|
o_color = vec4(c2.rgb, 1);
|
||||||
//o_color = vec4(splat.rgb, 1);
|
//o_color = vec4(splat.rgb, 1);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue