Skip to content

Instantly share code, notes, and snippets.

@h3xcat
Created January 12, 2018 17:52
Show Gist options
  • Save h3xcat/8a8844c4b9154485e9a9c868b8cdfd59 to your computer and use it in GitHub Desktop.
Save h3xcat/8a8844c4b9154485e9a9c868b8cdfd59 to your computer and use it in GitHub Desktop.
--@name view_matrix_test
--@author
--@shared
SCREEN_SIZE_W = 1600
SCREEN_SIZE_H = 900
local size = 64
if SERVER then
local welded_to = chip():isWeldedTo()
if isValid(welded_to) then
welded_to:linkComponent(chip())
end
elseif CLIENT then
if not render.getGameResolution then
function render.getGameResolution()
return SCREEN_SIZE_W, SCREEN_SIZE_H
end
end
local COLOR_WHITE = Color(255,255,255,255)
local COLOR_BLACK = Color(0,0,0,255)
local MAT_WHITE = render.getTextureID("debug/debugwhite")
render.createRenderTarget("rt_screen")
render.createRenderTarget("rt_screen_fix")
local function draw_objects( )
render.enableDepth(true)
local chip_pos = chip():getPos()
render.setColor(COLOR_WHITE)
render.setTexture(MAT_WHITE)
render.setColor(Color(0,0,255))
render.draw3DSphere(Vector(0,size*math.sin(timer.realtime()*1),size/2),10,10,10)
render.setColor(Color(255,0,0))
render.draw3DSphere(Vector(size*math.sin(timer.realtime()*1),0,size/2),10,10,10)
render.setColor(COLOR_WHITE)
render.draw3DBox(Vector(0,0,size/2),Angle(),Vector(-size/2,-5,-5),Vector(size/2,5,5))
render.draw3DBox(Vector(0,0,size/2),Angle(),Vector(-5,-size/2,-5),Vector(5,size/2,5))
render.draw3DBox(Vector(0,0,size/2),Angle(),Vector(-5,-5,-size/2),Vector(5,5,size/2))
render.setColor(Color(0,0,255))
render.draw3DSphere(chip_pos+Vector(0,size*math.sin(timer.realtime()*1),size/2),10,10,10)
render.setColor(Color(255,0,0))
render.draw3DSphere(chip_pos+Vector(size*math.sin(timer.realtime()*1),0,size/2),10,10,10)
render.setColor(COLOR_WHITE)
render.draw3DBox(chip_pos+Vector(0,0,size/2),Angle(),Vector(-size/2,-5,-5),Vector(size/2,5,5))
render.draw3DBox(chip_pos+Vector(0,0,size/2),Angle(),Vector(-5,-size/2,-5),Vector(5,size/2,5))
render.draw3DBox(chip_pos+Vector(0,0,size/2),Angle(),Vector(-5,-5,-size/2),Vector(5,5,size/2))
render.enableDepth(false)
end
local screen_w, screen_h = render.getGameResolution()
local VIEW_FIX = false
local function render_screen()
render.selectRenderTarget("rt_screen")
local eye_pos = player():getEyePos()
local eye_ang = player():getEyeAngles()
local view_w, view_h = 1024, 1024
if VIEW_FIX then
view_w = math.min(1024,screen_w)
view_h = math.min(1024,screen_h)
end
render.pushViewMatrix({
x=0,
y=0,
w=view_w,
h=view_h,
type="3D",
origin=eye_pos,
angles=eye_ang,
})
render.clear(COLOR_BLACK,true)
draw_objects()
render.popViewMatrix()
render.drawRectOutline(0,0,view_w,view_h)
render.setColor(COLOR_WHITE)
if VIEW_FIX then
render.selectRenderTarget("rt_screen_fix")
render.setRenderTargetTexture("rt_screen")
render.drawTexturedRect(0,0,1024*(1024/view_w),1024*(1024/view_h))
render.selectRenderTarget("rt_screen")
render.setRenderTargetTexture("rt_screen_fix")
render.drawTexturedRect(0,0,1024,1024)
end
render.selectRenderTarget()
end
hook.add("renderoffscreen","",function()
render_screen()
end)
hook.add("drawhud","",function()
render.setRenderTargetTexture("rt_screen")
render.setColor(Color(255,255,255,100))
render.drawTexturedRect(0,0,screen_w,screen_h)
if timer.realtime()%0.5 > 0.25 then return end
render.pushViewMatrix({type="3D"})
render.setTexture(MAT_WHITE)
draw_objects()
render.popViewMatrix()
end)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment