Deferred renderer: fix shadows behind transparent objects

This commit is contained in:
Nikita Lisitsa 2020-12-09 19:43:22 +03:00
parent e799771a40
commit dd520c4cae

View file

@ -777,6 +777,9 @@ void main()
if (o.mat.lit && o.mat.transparent)
throw std::runtime_error("Materials that are both tit & transparent are not supported");
if (o.casts_shadow && o.mat.transparent)
throw std::runtime_error("Transparent objects cannot cast shadow");
objects_by_mask[mask(objects[i])].push_back(i);
if (o.mat.lit) lit_bbox |= o.bbox;
@ -900,7 +903,7 @@ void main()
impl().transparent_pass_program["u_max_intensity"] = opts.max_intensity;
gl::Enable(gl::BLEND);
gl::BlendFuncSeparate(gl::SRC_ALPHA, gl::ONE_MINUS_SRC_ALPHA, gl::ONE, gl::ZERO);
gl::BlendFuncSeparate(gl::SRC_ALPHA, gl::ONE_MINUS_SRC_ALPHA, gl::ZERO, gl::ONE);
gl::DepthMask(gl::FALSE);