# 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/variables/pages/SCvYOqxhw0Zri5gtCIPa#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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs-csgo.neverlose.cc/documentation/variables/render.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
