2020-04-09 01:00:08 +02:00
|
|
|
noise = -1
|
|
|
|
Editor.setPropertyType(this, "noise", Editor.RESOURCE_PROPERTY, "texture")
|
|
|
|
|
2018-10-13 00:09:34 +02:00
|
|
|
function postprocess(env, transparent_phase, ldr_buffer, gbuffer0, gbuffer1, gbuffer_depth, shadowmap)
|
|
|
|
if not enabled then return ldr_buffer end
|
|
|
|
if transparent_phase ~= "post_tonemap" then return ldr_buffer end
|
2020-04-09 01:00:08 +02:00
|
|
|
if noise == -1 then return ldr_buffer end
|
2019-07-06 14:52:14 +02:00
|
|
|
local res = env.createRenderbuffer(1, 1, true, "rgba8", "film_grain")
|
2018-10-13 00:09:34 +02:00
|
|
|
env.beginBlock("film_grain")
|
2019-10-09 22:01:54 +02:00
|
|
|
if env.film_grain_shader == nil then
|
|
|
|
env.film_grain_shader = env.preloadShader("pipelines/film_grain.shd")
|
2018-10-13 00:09:34 +02:00
|
|
|
end
|
|
|
|
|
2019-10-06 16:57:48 +02:00
|
|
|
env.setRenderTargets(res)
|
2020-04-09 01:00:08 +02:00
|
|
|
env.bindTextures({noise}, 1)
|
2019-10-09 22:01:54 +02:00
|
|
|
env.drawArray(0, 4, env.film_grain_shader,
|
2019-07-06 14:52:14 +02:00
|
|
|
{ ldr_buffer },
|
|
|
|
{},
|
|
|
|
{},
|
|
|
|
{ depth_test = false, blending = ""}
|
|
|
|
)
|
2018-10-13 00:09:34 +02:00
|
|
|
env.endBlock()
|
|
|
|
return res
|
|
|
|
end
|
|
|
|
|
|
|
|
function awake()
|
2020-04-07 20:07:00 +02:00
|
|
|
_G["postprocesses"] = _G["postprocesses"] or {}
|
|
|
|
_G["postprocesses"]["filmgrain"] = postprocess
|
2018-10-13 00:09:34 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
function onDestroy()
|
2020-04-07 20:07:00 +02:00
|
|
|
_G["postprocesses"]["filmgrain"] = nil
|
2018-10-13 00:09:34 +02:00
|
|
|
end
|