<p><a href="https://khronos.org/registry/OpenGL/specs/gl/GLSLangSpec.4.40.pdf" rel="noreferrer">The GLSL Specification</a> in section 6.1.1 &quot;Function Calling Conventions&quot; states:</p>
<blockquote>
<ul>
<li><p>The keyword <strong>in</strong> is used as a qualifier to denote a parameter is to be copied in, but not copied out.</p>
</li>
<li><p>The keyword <strong>out</strong> is used as a qualifier to denote a parameter is to be copied out, but not copied in. This should be used whenever possible to avoid unnecessarily copying parameters in.</p>
</li>
<li><p>The keyword <strong>inout</strong> is used as a qualifier to denote the parameter is to be both copied in and copied out. It means the same thing as specifying both in and out.</p>
</li>
<li><p>A function parameter declared with no such qualifier means the same thing as specifying <strong>in</strong>.</p>
</li>
</ul>
</blockquote>

CC BY-SA 3.0
2017-06-04T23:24:27.413Z
It should be noted that this is true for all versions of GLSL, all the way back to 1.10 and even the ES versions.
Nicol Bolas
CC BY-SA 3.0
2017-06-01T04:29:24.750Z
2017-06-01T09:08:45.190Z
2020-06-18T08:32:12.800Z
user1118321
<p>In <a href="https://www.khronos.org/opengl/wiki/GLSL_:_common_mistakes#Functions_inputs_and_outputs" rel="nofollow noreferrer">GLSL: Common Mistakes</a> it states:</p>

<blockquote>
  <p>Functions parameters must be declared with the <code>in</code>, <code>out</code>, or <code>inout</code> qualifiers.</p>
</blockquote>

<p>but I have never declared function parameters with <code>in</code>, <code>out</code>, or <code>inout</code> qualifiers and I have never run into any problems. Could this be because of my specific graphics card? What are the side effects of not using the <code>in</code>, <code>out</code>, or <code>inout</code> qualifiers?</p>

<p>Info: I am using GLSL 3.3 and I have an Intel graphics card</p>

<glsl>
GLSL function parameters
Archmede
# GLSL function parameters

(Asked by: username_0 on 2017-06-01)

In [GLSL: Common Mistakes](https://www.khronos.org/opengl/wiki/GLSL_:_common_mistakes#Functions_inputs_and_outputs) it states:

> Functions parameters must be declared with the `in`, `out`, or `inout` qualifiers.

but I have never declared function parameters with `in`, `out`, or `inout` qualifiers and I have never run into any problems. Could this be because of my specific graphics card? What are the side effects of not using the `in`, `out`, or `inout` qualifiers?

Info: I am using GLSL 3.3 and I have an Intel graphics card

**Tags:** glsl


---

## 1 answers

### Answer by username_1 on 2017-06-01. Score: 5 | Accepted answer

[The GLSL Specification](https://khronos.org/registry/OpenGL/specs/gl/GLSLangSpec.4.40.pdf) in section 6.1.1 "Function Calling Conventions" states:

> * The keyword **in** is used as a qualifier to denote a parameter is to be copied in, but not copied out.
> * The keyword **out** is used as a qualifier to denote a parameter is to be copied out, but not copied in. This should be used whenever possible to avoid unnecessarily copying parameters in.
> * The keyword **inout** is used as a qualifier to denote the parameter is to be both copied in and copied out. It means the same thing as specifying both in and out.
> * A function parameter declared with no such qualifier means the same thing as specifying **in**.

> **Comments:**
> **username_2**: It should be noted that this is true for all versions of GLSL, all the way back to 1.10 and even the ES versions.  

---

