• Render target's material turns dark and makes the viewmodel dissappear
    1 replies, posted
So basically the title is pretty much self explanatory. I've been working on a kind of security system for a while and came up with this: [video=youtube;OyE1cRPKm40]https://www.youtube.com/watch?v=OyE1cRPKm40[/video] These are the issues I've faced: -the screen turns darker when picked up with the physgun (maybe its because of the halo) -the viewmodel dissappears when the screen is updated (it updates every .25 seconds) -the screen's material is not drawn on the other screens This is the code I've used: [CODE]include("shared.lua") local TEXTURE_FLAGS_CLAMP_S = 0x0004 local TEXTURE_FLAGS_CLAMP_T = 0x0008 surface.CreateFont("CamFont", { font = "DebugFixed", size = 32, weight = 300, antialias = false, }) surface.CreateFont("CamFont/2", { font = "DebugFixed", size = 16, weight = 300, antialias = false, }) surface.CreateFont("CamFont/4", { font = "DebugFixed", size = 8, weight = 300, antialias = false, }) function ENT:Initialize() self.Cams = {} for i = 0, 4 do table.insert(self.Cams, Cameras[i]) end self.ID = #ents.FindByClass(self:GetClass()) self.ScreenRT = GetRenderTargetEx("CCTV_monitor"..self.ID, 512, 512, RT_SIZE_NO_CHANGE, MATERIAL_RT_DEPTH_SEPARATE, TEXTURE_FLAGS_CLAMP_S || TEXTURE_FLAGS_CLAMP_T, CREATERENDERTARGETFLAGS_UNFILTERABLE_OK, IMAGE_FORMAT_RGB565 ) self.ScreenMat = CreateMaterial("CCTV_Monitor"..self.ID,"UnlitGeneric",{ ["$basetexture"] = self.ScreenRT:GetName() }) self.DisplayMode = 2 end function ENT:Draw() if !UpdateTime then UpdateTime = CurTime() end if UpdateTime < CurTime() and self.ScreenRT then InDraw = true render.PushRenderTarget(self.ScreenRT) render.Clear(0, 0, 0, 255) render.ClearDepth() render.ClearStencil() cam.Start2D() for k, v in pairs(self.Cams) do if self.DisplayMode == 1 then render.RenderView({ angles = v.ang, origin = v.pos, x = 0, y = 0, w = 512, h = 512, fov = 90, }) surface.DrawRect(0, 0, 4, 4) draw.SimpleText("Camera"..((k<10 and "0"..k) or k), "CamFont", 3*128, 3.5*128, Color(255, 255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) draw.SimpleText(os.date("!%d-%m-%Y %a %H:%M:%S", os.time() + 10800), "CamFont/2", 0.125*128, 0.15*128, Color(255, 255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) break end if self.DisplayMode == 2 then render.RenderView({ angles = v.ang, origin = v.pos, x = k%2*256, y = 2%k*128, w = 256, h = 256, fov = 90, }) draw.SimpleText("Camera"..((k<10 and "0"..k) or k), "CamFont/4", k%2*256 + 3*64, 2%k*128 + 3.5*64, Color(255, 255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) draw.SimpleText(os.date("!%d-%m-%Y %a %H:%M:%S", os.time() + 10800), "CamFont/2", k%2*256 + 0.125*64, 2%k*128 + 0.15*64, Color(255, 255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) if k >= 4 then break end end end cam.End2D() render.PopRenderTarget() InDraw = false UpdateTime = CurTime() + 0.25 end render.MaterialOverrideByIndex(1, self.ScreenMat) self:DrawModel() render.MaterialOverrideByIndex() end[/CODE] [CODE]hook.Add("ShouldDrawLocalPlayer", "Camera_DrawLocalPlayer", function() return InDraw end)[/CODE] Note: I've meaningly used the worst image format I could for the render target.
I think its an issue with halo's, not 100% certain though.
Sorry, you need to Log In to post a reply to this thread.