GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
define_linktarget(3) Arcan Lua API define_linktarget(3)

define_linktarget - Create a linked offscreen rendering pipe

bool:status
define_linktarget( vid:dst, vid:link )
define_linktarget( vid:dst, vid:link, int:scale )
define_linktarget( vid:dst, vid:link, int:scale, int:rate )
define_linktarget( vid:dst, vid:link, int:scale, int:rate, int:format )

Rendertargets and related functions (calctargets, recordtargets etc.) all have their own attachment pipelines with the vids that are part of the related renderpass. They have the restriction that there is only one object that is allowed to be tagged as the camera or view for that rendertarget. This resulted in a lot of manual management to be able to process the same set of objects with different view and storage parameters since either two identical sets needed to be managed, leading to a high vid allocation count with all the adverse performance considerations that follows. This function creates a rendertarget that renders into dst just like define_rendertarget , but the pipeline is combined with link . This setup may also prompt the engine to process linked rendertargets in parallel, making it a more efficient solution for certain 3D effects.

1
if dst already is a rendertarget its link target will be updated and the original pipeline in dst will be kept.
2
the densities of objects respect their primary attachment
3
passing a vid that is not a qualified rendertarget as link is a terminal state transition.
4
if link is deleted, dst reverts into a normal rendertarget.
5
creating cycles by chaining linktargets together will go through, but the processing will be stopped when the first cycle reference is found.

function define_linktarget0()
      local halfw = math.floor(VRESW * 0.5);
      local mt = alloc_surface(halfw, VRESH);
      local link = alloc_surface(halfw, VRESH);
      move_image(link, halfw, 0);
      show_image({mt, link});
-- create example surfaces and bind to rendertarget
      local a = fill_surface(64, 64, 255, 0, 0);
      local b = fill_surface(64, 64, 0, 255, 0);
      local c = fill_surface(64, 64, 0, 0, 255);
      define_rendertarget(mt, {a,b,c}, RENDERTARGET_DETACH);
-- update the linktarget at a lower rate than the parent
      define_linktarget(link, mt, RENDERTARGET_NOSCALE, a, 2);
-- set up some nonsens animation
      move_image(a, halfw - 64, VRESH - 64, 100);
      move_image(a, 0, 0, 100);
      move_image(b, halfw - 64, 0, 100);
      move_image(b, 0, 0, 100);
      move_image(c, 0, VRESW - 64, 100);
      move_image(c, 0, 0, 100);
      image_transform_cycle(a, true);
      image_transform_cycle(b, true);
      image_transform_cycle(c, true);
      show_image({a, b, c});
end

define_rendertarget(3)

June 2022 targetcontrol

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.