ó
    Uši	  ã                   óV   • S SK r S SKrSS jrSS jr\S:X  a  S r\" \" 5       5        gg)é    Nc                 óº   • [        U R                  S5      5      n[        R                  " 5       R                  R
                  S-   U-
  nSU< S[        U SS9< S3$ )aM  
Call this method from a function that defines a literal shader string as the "body" argument.
Dresses up a shader string in three ways:
    1) Insert #version at the top
    2) Insert #line number declaration
    3) un-indents
The line number information can help debug glsl compile errors.
The version string needs to be the very first characters in the shader,
which can be distracting, requiring backslashes or other tricks.
The unindenting allows you to type the shader code at a pleasing indent level
in your python method, while still creating an unindented GLSL string at the end.
Ú
é   z	#version é   )Ústack_frame)ÚlenÚsplitÚinspectÚcurrentframeÚf_backÚf_linenoÚshader_substring)ÚbodyÚglsl_versionÚ
line_countÚline_numbers       ÚU/home/james-whalen/.local/lib/python3.13/site-packages/openvr/glframework/__init__.pyÚshader_stringr      sT   € ô T—Z‘Z Ó%Ó&€JÜ×&Ò&Ó(×/Ñ/×8Ñ8¸1Ñ<¸zÑIKó Ô% d¸Ô:ð<ð <ó    c                 ó®   • [        U R                  S5      5      n[        R                  " 5       U   S   S-   U-
  nSU[        R
                  " U 5      4-  $ )a   
Call this method from a function that defines a literal shader string as the "body" argument.
Dresses up a shader string in two ways:
    1) Insert #line number declaration
    2) un-indents
The line number information can help debug glsl compile errors.
The unindenting allows you to type the shader code at a pleasing indent level
in your python method, while still creating an unindented GLSL string at the end.
Tr   r   z#line %d
%s
)r   Ú
splitlinesr
   ÚstackÚtextwrapÚdedent)r   r   r   r   s       r   r   r      sX   € ô T—_‘_ TÓ*Ó+€JÜ—-’-“/ +Ñ.¨qÑ1°AÑ5¸
ÑB€Kðð ”H—O’O DÓ)Ð*ñ+ð +r   Ú__main__c                  ó   • [        S5      $ )Na?  
            layout(location = 0) in vec3 in_Position;
            layout(location = 1) in vec3 in_Normal;

            layout(location = 0) uniform mat4 projection = mat4(1);
            layout(location = 1) uniform mat4 model_view = mat4(1);

            out vec3 normal;

            void main() 
            {
                gl_Position = projection * model_view * vec4(in_Position, 1.0);
                mat4 normal_matrix = transpose(inverse(model_view));
                normal = normalize((normal_matrix * vec4(in_Normal, 0)).xyz);
            }        
            )r   © r   r   Úvertex_shaderr   .   s   € Üð ó ð 	r   )z450 core)r   )r
   r   r   r   Ú__name__r   Úprintr   r   r   Ú<module>r!      s5   ðÛ Û ô<ô*+ð$ ˆzÓòñ" 
‰-‹/Õð' r   