protected int LocateUniform(string uniformName, bool softFail = true)
        {
            int location = 0;

            if (UniformLocations.TryGetValue(uniformName, out location))
            {
                return(location);
            }

            location = GL.GetUniformLocation(Handle, uniformName);
            if (location == -1)
            {
                if (softFail)
                {
                    LogWarn($"Could not locate {uniformName}");
                }
                else
                {
                    throw new InvalidOperationException($"ShaderProgram.LocateUniform ({Name}): Could not locate {uniformName}");
                }
            }

            UniformLocations.Add(uniformName, location);

            return(location);
        }
Beispiel #2
0
 private int GetUniformLocation(string name)
 {
     if (!UniformLocations.TryGetValue(name, out int location))
     {
         location = GL.GetUniformLocation(Handle, name);
         UniformLocations.Add(name, location);
     }
     return(location);
 }
Beispiel #3
0
        private void SetUniforms(UniformLocations uniformsLocations, UniformValues uniformsValues)
        {
            if (LocationValidation.Enabled(uniformsLocations.Location_iTime))
            {
                Gl.Uniform1f <float>(uniformsLocations.Location_iTime, 1, (float)uniformsValues.Time);
            }

            if (LocationValidation.Enabled(uniformsLocations.Location_iResolution))
            {
                Gl.Uniform2f(uniformsLocations.Location_iResolution, 1, uniformsValues.Resolution);
            }

            if (LocationValidation.Enabled(uniformsLocations.Location_iCursorPosition))
            {
                Gl.Uniform3f(uniformsLocations.Location_iCursorPosition, 1, uniformsValues.CursorPosition);
            }

            if (LocationValidation.Enabled(uniformsLocations.Location_iCursorMovement))
            {
                Gl.Uniform3f(uniformsLocations.Location_iCursorMovement, 1, uniformsValues.CursorMovement);
            }
        }