Created
January 12, 2018 17:52
-
-
Save h3xcat/8a8844c4b9154485e9a9c868b8cdfd59 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--@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