void Splat(FluidPoint point) { splatProgram.SetTexture("_Target", velocity_dfbo.GetReadFBO()); splatProgram.SetFloat("_aspectRatio", screen_w / screen_h); splatProgram.SetColor("_point", new Color(point.x / screen_w, point.y / screen_h, 0f)); splatProgram.SetColor("_color", new Color(point.dx, point.dy, 1.0f)); splatProgram.SetFloat("_radius", splat_radius / 100.0f); splatProgram.Blit(velocity_dfbo.GetWriteFBO(), velocity_dfbo.GetWriteFBO(), blendOption); velocity_dfbo.Swap(); splatProgram.SetTexture("_Target", density_dfbo.GetReadFBO()); splatProgram.SetColor("_color", point.color); splatProgram.Blit(density_dfbo.GetWriteFBO(), density_dfbo.GetWriteFBO(), blendOption); density_dfbo.Swap(); }
DoubleFBO ResizeDoubleFBO(DoubleFBO target, int w, int h, int d, RenderTextureFormat format, FilterMode filterMode) { target.SetReadFBO(ResizeFBO(target.GetReadFBO(), w, h, 0, format, filterMode)); target.SetWriteFBO(CreateFBO(w, h, 0, format, filterMode)); return(target); }