예제 #1
0
        public static ShaderProgram Parse(ShaderAlias shader)
        {
            Shader vertex   = new Shader($"Shaders/{shader.VertexShader}.vs", ShaderType.VertexShader);
            Shader fragment = new Shader($"Shaders/{shader.FragmentShader}.fs", ShaderType.FragmentShader);

            return(new ShaderProgram(shader.Uniform, vertex, fragment));
        }
예제 #2
0
        private void LoadVO()
        {
            //Setting buffers

            _cube = RenderAPI.I.Core.RM.Get <Mesh>("Meshes/cube", AshyCore.Resource.ResourceTarget.LoadedLevelPrivateRender);
            Buf   = Engine.I.Device.LoadMesh(_cube);

            //Creating shader program

            var uniformTypes = new Dictionary <string, string>
            {
                { "viewProjectionMat", "Mat4" },
                { "ambientLight", "Vec3" },
                { "lightPos", "Vec3" },
                { "modelMat", "Mat4" }
            };
            var skyShader = new ShaderAlias(@"skybox", @"skybox", uniformTypes);

            ShaderProgram = ShaderProgram.Parse(skyShader).Compile();
        }
예제 #3
0
 public ShaderProgram LoadShader(ShaderAlias shader)
 {
     return(ShaderPrograms.GetOrAdd(shader, _ => ShaderProgram.Parse(shader).Compile()));
 }