Nearly EVERYTHING Invisible With Low Graphics Quality

I believe streaming enabled has a min distance of 64 studs and the OP issue is going invisible at much closer.

Are these objects that disappear unions or parts or both?

But still just disable it as it is very buggy. Once in client my game was getting completely invisible due to streaming like yours.

Everything, terrain, unions, parts…

It’s already disabled, not sure what the real issue is. This doesn’t happen even with the lowest graphics quality settings in most Roblox games

I’ve had these same issues myself, and I feel like I’ve solved your issue while experimenting with Roblox’s camera. Apparently, Roblox’s camera class also contains a property known as Camera.Focus, which tells Roblox where to focus on handling it’s lighting and rendering. Roblox’s default camera scripts handle Camera.Focus automatically. However, if you’re implementing your own camera script, you are going to need to update the camera’s focus manually. In your case, you probably need to update Camera.Focus every frame towards the end of your camera processing functions. Try this code below and see if it works:

-- LOCALS --
local UIS = game:GetService("UserInputService")
local GuiService = game:GetService("GuiService")

-- Services
local uis = game:GetService("UserInputService")
local rs = game:GetService("RunService")
local context = game:GetService("ContextActionService")

-- Player & Character
local plr = game:GetService("Players").LocalPlayer

-- Other
local Camera = game:GetService("Workspace").CurrentCamera
local mouse = plr:GetMouse()
local cameraDB = false
local zoomDB = false

-- Values

local xAngle = 0
local yAngle = 0
local cameraPos = Vector3.new(2,0,8.5)


-- CAMERA SETTING --


-- FUNCTIONS --
if UIS.TouchEnabled and not UIS.KeyboardEnabled and not UIS.MouseEnabled
	and not UIS.GamepadEnabled and not GuiService:IsTenFootInterface() then
	

	-- mobile device
	rs.RenderStepped:Connect(function()
		local character = plr.Character or plr.CharacterAdded:Wait()
		Camera.CameraSubject = plr.Character:WaitForChild("Humanoid")
		Camera.CameraType = Enum.CameraType.Custom
		Camera.CFrame = plr.Character:WaitForChild("Head").CFrame
		Camera.Focus = Camera.CFrame
	end)
else
	wait(0.01)
	Camera.CameraType = Enum.CameraType.Scriptable
	
	context:BindAction("CameraMovement", function(_,_,input)
		xAngle = xAngle - input.Delta.x*0.4
		yAngle = math.clamp(yAngle - input.Delta.y*0.4,-80,80)
	end, false, Enum.UserInputType.MouseMovement)

	rs.RenderStepped:Connect(function()
		local c = plr.Character or plr.CharacterAdded:Wait()
		local rootPart = c:FindFirstChild("HumanoidRootPart")

		if c and rootPart then
			local startCFrame = CFrame.new((rootPart.CFrame.p + Vector3.new(0,2,0)))*CFrame.Angles(0, math.rad(xAngle), 0)*CFrame.Angles(math.rad(yAngle), 0, 0)

			local cameraCFrame = startCFrame + startCFrame:VectorToWorldSpace(Vector3.new(cameraPos.X,cameraPos.Y,cameraPos.Z))
			local cameraFocus = startCFrame + startCFrame:VectorToWorldSpace(Vector3.new(cameraPos.X,cameraPos.Y,-50000))

			Camera.CFrame = CFrame.new(cameraCFrame.p,cameraFocus.p)
		end

		Camera.Focus = Camera.CFrame
	end)
end

I set the camera’s focus directly to the camera’s CFrame, so hopefully doing this should fix your problems.