# render

## Functions:

### screen\_size

`render.screen_size():` <mark style="color:purple;">`vector`</mark>

### camera\_position

`render.camera_position():` <mark style="color:purple;">`vector`</mark>

Returns the camera position vector.

### camera\_angles

`render.camera_angles([angles: vector]):` <mark style="color:purple;">`vector`</mark>

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>angles</strong></td><td><strong><code>vector</code></strong></td><td>New camera angles</td></tr></tbody></table>

Returns or sets the camera angles.

### world\_to\_screen

`render.world_to_screen(position: vector):` <mark style="color:purple;">`vector`</mark>

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>position</strong></td><td><strong><code>vector</code></strong></td><td>Position in world space</td></tr></tbody></table>

📌 Note that there is a cleaner alternative, the [`:to_screen`](https://docs-csgo.neverlose.cc/documentation/vector#render.line-22) vector function.

Returns the screen position vector, or nil if the world position is not visible on your screen. This can only be called from the render callback.

### get\_offscreen

`render.get_offscreen(position: vector, radius: number[, accurate: boolean]):` <mark style="color:purple;">`vector`</mark>, <mark style="color:purple;">`number`</mark>, <mark style="color:purple;">`boolean`</mark>

<table><thead><tr><th width="159.95526570812686">Name</th><th width="150">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>position</strong></td><td><strong><code>vector</code></strong></td><td>Position in world space</td></tr><tr><td><strong>radius</strong></td><td><strong><code>number</code></strong></td><td>Distance from the center of the screen as a percentage in the range [0.0, ∞]</td></tr><tr><td><strong>accurate</strong></td><td><strong><code>boolean</code></strong></td><td>Optional. If <mark style="color:purple;"><code>true</code></mark> then accurate calculations will be used</td></tr></tbody></table>

Returns the <mark style="color:blue;">`position`</mark>, <mark style="color:blue;">`rotation`</mark>, and <mark style="color:blue;">`is_out_of_fov`</mark> arguments or nil on failure.

<mark style="color:blue;">`position`</mark>: Screen coordinates (Returns ellipse-based position if the world position is out of FOV)\ <mark style="color:blue;">`rotation`</mark>: Yaw axis that can be used to rotate drawing stuff\ <mark style="color:blue;">`is_out_of_fov`</mark>: Returns <mark style="color:green;">`true`</mark> if the world position is out of FOV.

### get\_pixel

`render.get_pixel(position: vector)`

{% hint style="warning" %}
Getting the color of the pixel is a heavy process. Do not do it inside callbacks that are called a lot of times per second.
{% endhint %}

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>position</strong></td><td><strong><code>vector</code></strong></td><td>Screen position</td></tr></tbody></table>

Returns the color of the specified pixel on the screen.

### load\_font

📌 Render any text via the [`draw:text`](#text) function.

{% tabs %}
{% tab title="Size as a number" %}
`render.load_font(name: string, size: number[, flags: string]):` <mark style="color:purple;">`FontObject`</mark>

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>name</strong></td><td><strong><code>string</code></strong></td><td>Font that will be initialized</td></tr><tr><td><strong>size</strong></td><td><strong><code>number</code></strong></td><td>Size of the font</td></tr><tr><td><strong>flags</strong></td><td><strong><code>string</code></strong></td><td><mark style="color:purple;"><code>a</code></mark> for anti-aliasing,  <mark style="color:purple;"><code>i</code></mark> for cursive text, and <mark style="color:purple;"><code>b</code></mark> for bold text, <mark style="color:purple;"><code>o</code></mark> for outlined text, <mark style="color:purple;"><code>d</code></mark> for the drop shadow effect.</td></tr></tbody></table>
{% endtab %}

{% tab title="Size as a vector" %}
`render.load_font(name: string, size: vector[, flags: string]):` <mark style="color:purple;">`FontObject`</mark>

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>name</strong></td><td><strong><code>string</code></strong></td><td>Font that will be initialized</td></tr><tr><td><strong>size</strong></td><td><strong><code>vector</code></strong></td><td>A vector object containing <mark style="color:blue;"><code>width</code></mark>, <mark style="color:blue;"><code>height</code></mark>, and <mark style="color:blue;"><code>spacing</code></mark>.</td></tr><tr><td><strong>flags</strong></td><td><strong><code>string</code></strong></td><td><mark style="color:purple;"><code>a</code></mark> for anti-aliasing,  <mark style="color:purple;"><code>i</code></mark> for cursive text, and <mark style="color:purple;"><code>b</code></mark> for bold text, <mark style="color:purple;"><code>o</code></mark> for outlined text, <mark style="color:purple;"><code>d</code></mark> for the drop shadow effect, <mark style="color:purple;"><code>u</code></mark> to enable extra symbol support.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

Returns the `FontObject` struct or nil on failure.

### load\_image

📌 Render any image via the [`:texture`](#texture) function.

`render.load_image(contents: string, size: vector):` <mark style="color:purple;">`ImgObject`</mark>

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>contents</strong></td><td><strong><code>string</code></strong></td><td>Raw image file contents</td></tr><tr><td><strong>size</strong></td><td><strong><code>vector</code></strong></td><td>Size of the image</td></tr></tbody></table>

Returns the `ImgObject` struct or nil on failure. Supports JPG, PNG, BMP, SVG, and GIF formats.

### load\_image\_rgba

📌 Render any image via the [`:texture`](#texture) function.

`render.load_image_rgba(contents: string, size: vector):` <mark style="color:purple;">`ImgObject`</mark>

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>contents</strong></td><td><strong><code>string</code></strong></td><td><code>RGBA</code> buffer (<code>HEX</code> encoded)</td></tr><tr><td><strong>size</strong></td><td><strong><code>vector</code></strong></td><td>Size of the image</td></tr></tbody></table>

Returns the `ImgObject` struct or nil on failure.

### load\_image\_from\_file

📌 Render any image via the [`:texture`](#texture) function.

`render.load_image_from_file(path: string, size: vector):` <mark style="color:purple;">`ImgObject`</mark>

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>path</strong></td><td><strong><code>string</code></strong></td><td>Path to the image</td></tr><tr><td><strong>size</strong></td><td><strong><code>vector</code></strong></td><td>Size of the image</td></tr></tbody></table>

> ℹ️ Loading images from game resources is supported.
>
> Example: `render.load_image_from_file 'materials/panorama/images/icons/ui/warning.svg'`

Returns the `ImgObject` struct or nil on failure. Supports JPG, PNG, BMP, SVG, and GIF formats.

### measure\_text

`render.measure_text(font: FontObject[, flags: string], text: string):` <mark style="color:purple;">`vector`</mark>

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>font</strong></td><td><strong><code>FontObject</code></strong></td><td>Font object or <mark style="color:blue;"><code>1</code></mark> for <mark style="color:purple;"><code>Default</code></mark> font, <br><mark style="color:blue;"><code>2</code></mark> for <mark style="color:purple;"><code>Small</code></mark> font, or <mark style="color:blue;"><code>3</code></mark> for <mark style="color:purple;"><code>Console</code></mark> font</td></tr><tr><td><strong>flags</strong></td><td><strong><code>string</code></strong></td><td>Optional. <mark style="color:purple;"><code>s</code></mark> for DPI scaled text</td></tr><tr><td><strong>text</strong></td><td><strong><code>string</code></strong></td><td>Text that will be measured</td></tr></tbody></table>

Returns the measured size of the text.

### highlight\_hitbox

`render.highlight_hitbox(entity: entity, hitbox: number, color: color)`

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>entity</strong></td><td><strong><code>entity</code></strong></td><td>The player whose hitbox(es) are to be highlighted.</td></tr><tr><td><strong>hitbox</strong></td><td><strong><code>number</code></strong></td><td>Hitbox index (an integer between 0 and 18). A table with hitbox indices can also be used to highlight multiple hitboxes. Pass 19 to highlight every hitbox.</td></tr><tr><td><strong>color</strong></td><td><strong><code>color</code></strong></td><td>The color with which you want to highlight the hitbox(es).</td></tr></tbody></table>

Highlights the specified hitbox / hitboxes.

### get\_scale

`render.get_scale(type: number):` <mark style="color:purple;">`number`</mark>

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>type</strong></td><td><strong><code>number</code></strong></td><td><p>The type of DPI scale to return.</p><p><mark style="color:purple;"><code>1</code></mark> - Menu Scale, <mark style="color:purple;"><code>2</code></mark> - ESP Scale.</p></td></tr></tbody></table>

Returns the DPI scale value.

## Structs

### 🔗 <mark style="color:blue;">`ImgObject`</mark>

#### width

`img.width` `:` <mark style="color:purple;">`number`</mark>

#### height

`img.height` `:` <mark style="color:purple;">`number`</mark>

#### resolution

`img.resolution` `:` <mark style="color:purple;">`number`</mark>

### 🔗 <mark style="color:blue;">`FontObject`</mark>

#### width

`font.width` `:` <mark style="color:purple;">`number`</mark>

#### height

`font.height` `:` <mark style="color:purple;">`number`</mark>

#### spacing

`font.spacing` `:` <mark style="color:purple;">`number`</mark>

#### :set\_size

{% tabs %}
{% tab title="Size as a number" %}
`font:set_size(size: number)`<br>

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>size</strong></td><td><strong><code>number</code></strong></td><td>New size of the font</td></tr></tbody></table>
{% endtab %}

{% tab title="Size as a vector" %}
`font:set_size(size: vector)`

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>size</strong></td><td><strong><code>vector</code></strong></td><td>A vector object containing <mark style="color:blue;"><code>width</code></mark>, <mark style="color:blue;"><code>height</code></mark>, and <mark style="color:blue;"><code>spacing</code></mark>.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

Sets the new font size.

## Draw functions

### blur

`render.blur(position_a: vector, position_b: vector, strength: number, alpha: number[, rounding: number])`

<table><thead><tr><th width="150">Name</th><th width="150">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>position_a</strong></td><td><strong><code>vector</code></strong></td><td>Start position</td></tr><tr><td><strong>position_b</strong></td><td><strong><code>vector</code></strong></td><td>End position</td></tr><tr><td><strong>strength</strong></td><td><strong><code>number</code></strong></td><td>Blur strength</td></tr><tr><td><strong>alpha</strong></td><td><strong><code>number</code></strong></td><td>Alpha percentage in the range [0.0, 1.0]</td></tr><tr><td><strong>rounding</strong></td><td><strong><code>number</code></strong></td><td>Optional. Rounding of the blur rectangle in pixels</td></tr></tbody></table>

### line

`render.line(position_a: vector, position_b: vector, color: color)`

<table><thead><tr><th width="159.95526570812686">Name</th><th width="150">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>position_a</strong></td><td><strong><code>vector</code></strong></td><td>Start position</td></tr><tr><td><strong>position_b</strong></td><td><strong><code>vector</code></strong></td><td>End position</td></tr><tr><td><strong>color</strong></td><td><strong><code>color</code></strong></td><td>Color of the line</td></tr></tbody></table>

### poly

`render.poly(color: color, positions: vector[, ...])`

<table><thead><tr><th width="159.95526570812686">Name</th><th width="150">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>color</strong></td><td><strong><code>color</code></strong></td><td>Color of the polyline</td></tr><tr><td><strong>positions</strong></td><td><strong><code>vector</code></strong></td><td>Screen positions</td></tr><tr><td><strong>...</strong></td><td></td><td>Comma-separated vectors to concatenate with <code>positions</code></td></tr></tbody></table>

### poly\_blur

`render.poly_blur(opacity: number, strength: number, positions: vector[, ...])`

<table><thead><tr><th width="159.95526570812686">Name</th><th width="150">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>opacity</strong></td><td><strong><code>number</code></strong></td><td>Opacity percentage in the range [0.0, 1.0]</td></tr><tr><td><strong>strength</strong></td><td><strong><code>number</code></strong></td><td>Blur strength</td></tr><tr><td><strong>positions</strong></td><td><strong><code>vector</code></strong></td><td>Screen positions</td></tr><tr><td><strong>...</strong></td><td></td><td>Comma-separated vectors to concatenate with <code>positions</code></td></tr></tbody></table>

### poly\_line

`render.poly_line(color: color, positions: vector[, ...])`

<table><thead><tr><th width="159.95526570812686">Name</th><th width="150">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>color</strong></td><td><strong><code>color</code></strong></td><td>Color of the polyline</td></tr><tr><td><strong>positions</strong></td><td><strong><code>vector</code></strong></td><td>Screen positions</td></tr><tr><td><strong>...</strong></td><td></td><td>Comma-separated vectors to concatenate with <code>positions</code></td></tr></tbody></table>

### rect

`render.rect(position_a: vector, position_b: vector, color: color[, rounding: number, no_clamp: boolean])`

<table><thead><tr><th width="150">Name</th><th width="150">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>position_a</strong></td><td><strong><code>vector</code></strong></td><td>Start position</td></tr><tr><td><strong>position_b</strong></td><td><strong><code>vector</code></strong></td><td>End position</td></tr><tr><td><strong>color</strong></td><td><strong><code>color</code></strong></td><td>Color of the rectangle</td></tr><tr><td><strong>rounding</strong></td><td><strong><code>number</code></strong></td><td>Optional. Rounding of the rectangle in pixels</td></tr><tr><td><strong>no_clamp</strong></td><td><strong><code>boolean</code></strong></td><td>Optional. If <mark style="color:purple;"><code>true</code></mark>, negative sizes will be allowed</td></tr></tbody></table>

### rect\_outline

`render.rect_outline(position_a: vector, position_b: vector, color: color[, thickness: number, rounding: number, no_clamp: boolean])`

<table><thead><tr><th width="150">Name</th><th width="150">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>position_a</strong></td><td><strong><code>vector</code></strong></td><td>Start position</td></tr><tr><td><strong>position_b</strong></td><td><strong><code>vector</code></strong></td><td>End position</td></tr><tr><td><strong>color</strong></td><td><strong><code>color</code></strong></td><td>Color of the rectangle</td></tr><tr><td><strong>thickness</strong></td><td><strong><code>number</code></strong></td><td>Optional. Thickness of the rectangle in pixels</td></tr><tr><td><strong>rounding</strong></td><td><strong><code>number</code></strong></td><td>Optional. Rounding of the rectangle in pixels</td></tr><tr><td><strong>no_clamp</strong></td><td><strong><code>boolean</code></strong></td><td>Optional. If <mark style="color:purple;"><code>true</code></mark>, <code>position_a &#x3C; position_b</code> will be allowed</td></tr></tbody></table>

### gradient

`render.gradient(position_a: vector, position_b: vector, top_left: color, top_right: color, bottom_left: color, bottom_right: color[, rounding: number])`

<table><thead><tr><th width="167.11046639986603">Name</th><th width="150">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>position_a</strong></td><td><strong><code>vector</code></strong></td><td>Start position</td></tr><tr><td><strong>position_b</strong></td><td><strong><code>vector</code></strong></td><td>End position</td></tr><tr><td><strong>top_left</strong></td><td><strong><code>color</code></strong></td><td>Color of the top left rectangle position</td></tr><tr><td><strong>top_right</strong></td><td><strong><code>color</code></strong></td><td>Color of the top right rectangle position</td></tr><tr><td><strong>bottom_left</strong></td><td><strong><code>color</code></strong></td><td>Color of the bottom left rectangle position</td></tr><tr><td><strong>bottom_right</strong></td><td><strong><code>color</code></strong></td><td>Color of the bottom right rectangle position</td></tr><tr><td><strong>rounding</strong></td><td><strong><code>number</code></strong></td><td>Optional. Rounding of the gradient in pixels</td></tr></tbody></table>

### circle

`render.circle(position: vector, color: color, radius: number, start_deg: number, pct: number)`

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>position</strong></td><td><strong><code>type</code></strong></td><td>Screen position</td></tr><tr><td><strong>color</strong></td><td><strong><code>color</code></strong></td><td>Color of the circle</td></tr><tr><td><strong>radius</strong></td><td><strong><code>number</code></strong></td><td>Radius of the circle in pixels</td></tr><tr><td><strong>start_deg</strong></td><td><strong><code>number</code></strong></td><td><mark style="color:purple;"><code>0</code></mark> is the right side, <mark style="color:purple;"><code>90</code></mark> is the bottom, <mark style="color:purple;"><code>180</code></mark> is the left, <mark style="color:purple;"><code>270</code></mark> is the top</td></tr><tr><td><strong>pct</strong></td><td><strong><code>number</code></strong></td><td>Percentage in the range [0.0-1.0] determining how full the circle is</td></tr></tbody></table>

### circle\_outline

`render.circle_outline(position: vector, color: color, radius: number, start_deg: number, pct: number[, thickness: number])`

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>position</strong></td><td><strong><code>vector</code></strong></td><td>Screen position</td></tr><tr><td><strong>color</strong></td><td><strong><code>color</code></strong></td><td>Color of the circle</td></tr><tr><td><strong>radius</strong></td><td><strong><code>number</code></strong></td><td>Radius of the circle in pixels</td></tr><tr><td><strong>start_deg</strong></td><td><strong><code>number</code></strong></td><td><mark style="color:purple;"><code>0</code></mark> is the right side, <mark style="color:purple;"><code>90</code></mark> is the bottom, <mark style="color:purple;"><code>180</code></mark> is the left, <mark style="color:purple;"><code>270</code></mark> is the top</td></tr><tr><td><strong>pct</strong></td><td><strong><code>number</code></strong></td><td>Percentage in the range [0.0-1.0] determining how full the circle is</td></tr><tr><td><strong>thickness</strong></td><td><strong><code>number</code></strong></td><td>Optional. Thickness of the outline in pixels</td></tr></tbody></table>

### circle\_gradient

`render.circle_gradient(position: vector, color_outer: color, color_inner: color, radius: number, start_deg: number, pct: number)`

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>position</strong></td><td><strong><code>vector</code></strong></td><td>Screen position</td></tr><tr><td><strong>color_outer</strong></td><td><strong><code>color</code></strong></td><td>Outer color of the circle</td></tr><tr><td><strong>color_inner</strong></td><td><strong><code>color</code></strong></td><td>Inner color of the circle</td></tr><tr><td><strong>radius</strong></td><td><strong><code>number</code></strong></td><td>Radius of the circle in pixels</td></tr><tr><td><strong>start_deg</strong></td><td><strong><code>number</code></strong></td><td><mark style="color:purple;"><code>0</code></mark> is the right side, <mark style="color:purple;"><code>90</code></mark> is the bottom, <mark style="color:purple;"><code>180</code></mark> is the left, <mark style="color:purple;"><code>270</code></mark> is the top</td></tr><tr><td><strong>pct</strong></td><td><strong><code>number</code></strong></td><td>Percentage in the range [0.0-1.0] determining how full the circle is</td></tr></tbody></table>

### circle\_3d

`render.circle_3d(position: vector, color: color, radius: number, start_deg: number, pct: number[, outline: boolean])`

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>position</strong></td><td><strong><code>vector</code></strong></td><td>Screen position</td></tr><tr><td><strong>color</strong></td><td><strong><code>color</code></strong></td><td>Color of the circle</td></tr><tr><td><strong>radius</strong></td><td><strong><code>number</code></strong></td><td>Radius of the circle in pixels</td></tr><tr><td><strong>start_deg</strong></td><td><strong><code>number</code></strong></td><td><mark style="color:purple;"><code>0</code></mark> is the right side, <mark style="color:purple;"><code>90</code></mark> is the bottom, <mark style="color:purple;"><code>180</code></mark> is the left, <mark style="color:purple;"><code>270</code></mark> is the top</td></tr><tr><td><strong>pct</strong></td><td><strong><code>number</code></strong></td><td>Percentage in the range [0.0-1.0] determining how full the circle is</td></tr><tr><td><strong>outline</strong></td><td><strong><code>boolean</code></strong></td><td>Optional. Render the circle outline</td></tr></tbody></table>

### circle\_3d\_outline

`render.circle_3d_outline(position: vector, color: color, radius: number, start_deg: number, pct: number[, thickness: number])`

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>position</strong></td><td><strong><code>vector</code></strong></td><td>Screen position</td></tr><tr><td><strong>color</strong></td><td><strong><code>color</code></strong></td><td>Color of the circle</td></tr><tr><td><strong>radius</strong></td><td><strong><code>number</code></strong></td><td>Radius of the circle in pixels</td></tr><tr><td><strong>start_deg</strong></td><td><strong><code>number</code></strong></td><td><mark style="color:purple;"><code>0</code></mark> is the right side, <mark style="color:purple;"><code>90</code></mark> is the bottom, <mark style="color:purple;"><code>180</code></mark> is the left, <mark style="color:purple;"><code>270</code></mark> is the top</td></tr><tr><td><strong>pct</strong></td><td><strong><code>number</code></strong></td><td>Percentage in the range [0.0-1.0] determining how full the circle is</td></tr><tr><td><strong>thickness</strong></td><td><strong><code>number</code></strong></td><td>Thickness of the outline in pixels</td></tr></tbody></table>

### circle\_3d\_gradient

`render.circle_3d_gradient(position: vector, color_outer: color, color_inner: color, radius: number, start_deg: number, pct: number)`

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>position</strong></td><td><strong><code>vector</code></strong></td><td>Screen position</td></tr><tr><td><strong>color_outer</strong></td><td><strong><code>color</code></strong></td><td>Outer color of the circle</td></tr><tr><td><strong>color_inner</strong></td><td><strong><code>color</code></strong></td><td>Inner color of the circle</td></tr><tr><td><strong>radius</strong></td><td><strong><code>number</code></strong></td><td>Radius of the circle in pixels</td></tr><tr><td><strong>start_deg</strong></td><td><strong><code>number</code></strong></td><td><mark style="color:purple;"><code>0</code></mark> is the right side, <mark style="color:purple;"><code>90</code></mark> is the bottom, <mark style="color:purple;"><code>180</code></mark> is the left, <mark style="color:purple;"><code>270</code></mark> is the top</td></tr><tr><td><strong>pct</strong></td><td><strong><code>number</code></strong></td><td>Percentage in the range [0.0-1.0] determining how full the circle is</td></tr></tbody></table>

### text

📌 Render any text via the [`:load_font`](#load_font) function.

`render.text(font: FontObject, position: vector, color: color, flags: string, text:any[, ...])`

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>font</strong></td><td><strong><code>FontObject</code></strong></td><td>Font object or <mark style="color:blue;"><code>1</code></mark> for <mark style="color:purple;"><code>Default</code></mark> font, <br><mark style="color:blue;"><code>2</code></mark> for <mark style="color:purple;"><code>Small</code></mark> font, <mark style="color:blue;"><code>3</code></mark> for <mark style="color:purple;"><code>Console</code></mark> font, or <mark style="color:blue;"><code>4</code></mark> for <mark style="color:purple;"><code>Bold</code></mark> font</td></tr><tr><td><strong>position</strong></td><td><strong><code>vector</code></strong></td><td>Screen position</td></tr><tr><td><strong>color</strong></td><td><strong><code>color</code></strong></td><td>Color of the text</td></tr><tr><td><strong>flags</strong></td><td><strong><code>string</code></strong></td><td><p><mark style="color:purple;"><code>c</code></mark> for centered text, <mark style="color:purple;"><code>r</code></mark> for right-aligned text, <mark style="color:purple;"><code>s</code></mark> for DPI scaled text.</p><p><mark style="color:purple;"><code>nil</code></mark> can be specified for normal uncentered text.</p></td></tr><tr><td><strong>text</strong></td><td><strong><code>any</code></strong></td><td>Text that will be drawn</td></tr><tr><td><strong>...</strong></td><td></td><td>Comma-separated vectors to concatenate with <code>text</code></td></tr></tbody></table>

Draws the specified text.

### texture

📌 Create the texture via the [`:load_image`](#load_image) function.

`render.texture(texture: ImgObject, position: vector[, size: vector, color: color, mode: string, rounding: number])`

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>texture</strong></td><td><strong><code>ImgObject</code></strong></td><td>Image object</td></tr><tr><td><strong>position</strong></td><td><strong><code>vector</code></strong></td><td>Screen position</td></tr><tr><td><strong>size</strong></td><td><strong><code>vector</code></strong></td><td>Optional. Size of the texture</td></tr><tr><td><strong>color</strong></td><td><strong><code>color</code></strong></td><td>Optional. Color of the texture</td></tr><tr><td><strong>mode</strong></td><td><strong><code>string</code></strong></td><td>Optional. <mark style="color:purple;"><code>f</code></mark> for fill, <mark style="color:purple;"><code>r</code></mark> for repeat</td></tr><tr><td><strong>rounding</strong></td><td><strong><code>number</code></strong></td><td>Optional. Roundness of the texture</td></tr></tbody></table>

### push\_rotation

`render.push_rotation(degrees: number)`

<table><thead><tr><th width="150">Name</th><th width="162.52330706200414">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>degrees</strong></td><td><strong><code>number</code></strong></td><td>Rotation degrees (0 - 360)</td></tr></tbody></table>

Applies the rotation for all subsequent elements.

### pop\_rotation

`render.pop_rotation()`

Discards an early set rotation.

### push\_clip\_rect

`render.push_clip_rect(pos_a: vector, pos_b: vector[, intersect: boolean])`

<table><thead><tr><th width="159.95526570812686">Name</th><th width="150">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>pos_a</strong></td><td><strong><code>vector</code></strong></td><td>Screen position of point A</td></tr><tr><td><strong>pos_b</strong></td><td><strong><code>vector</code></strong></td><td>Screen position of point B</td></tr><tr><td><strong>intersect</strong></td><td><strong><code>boolean</code></strong></td><td>Optional. Allow intersections with other clip regions</td></tr></tbody></table>

Applies the clip region to the given rectangle for all subsequent elements.

### pop\_clip\_rect

`render.pop_clip_rect()`

Discards an early set rectangle clipping region.

### shadow

`render.shadow(pos_a: vector, pos_b: vector, clr: color[, thickness: number, offset: number, rounding: number])`

<table><thead><tr><th width="159.95526570812686">Name</th><th width="150">Type</th><th width="410.3276962436035">Description</th></tr></thead><tbody><tr><td><strong>pos_a</strong></td><td><strong><code>vector</code></strong></td><td>Screen position of point A</td></tr><tr><td><strong>pos_b</strong></td><td><strong><code>vector</code></strong></td><td>Screen position of point B</td></tr><tr><td><strong>clr</strong></td><td><strong><code>color</code></strong></td><td>The color of the shadow</td></tr><tr><td><strong>thickness</strong></td><td><strong><code>number</code></strong></td><td>The thickness of the shadow</td></tr><tr><td><strong>offset</strong></td><td><strong><code>number</code></strong></td><td>Shadow offset</td></tr><tr><td><strong>rounding</strong></td><td><strong><code>number</code></strong></td><td>The rounding of the shadow rectangle</td></tr></tbody></table>

Draws a shadow rectangle.
