示例#1
0
        public void TestFragment()
        {
            var code = @"
uniform sampler2D tex;
 
void main()
{
    vec4 color = texture2D(tex,gl_TexCoord[0].st);
    gl_FragColor = color;
}";

            using (var optimizer = new GLSLOptimizer(Target.OpenGL))
            {
                var result = optimizer.Optimize(ShaderType.Fragment, code, OptimizationOptions.None);

                Assert.That(result.OutputCode, Is.EqualTo("uniform sampler2D tex;\nvoid main ()\n{\n  gl_FragColor = texture2D (tex, gl_TexCoord[0].xy);\n}\n\n"));

                Assert.That(result.Inputs.Count, Is.EqualTo(1));
                Assert.That(result.Inputs[0].Name, Is.EqualTo("gl_TexCoord"));
                Assert.That(result.Inputs[0].Type, Is.EqualTo(BasicType.Float));
                Assert.That(result.Inputs[0].VectorSize, Is.EqualTo(4));

                Assert.That(result.Uniforms.Count, Is.EqualTo(0));

                Assert.That(result.Textures.Count, Is.EqualTo(1));
                Assert.That(result.Textures[0].Name, Is.EqualTo("tex"));
                Assert.That(result.Textures[0].Type, Is.EqualTo(BasicType.Tex2D));
            }
        }
        public void TestFragment()
        {
            var code = @"
            uniform sampler2D tex;

            void main()
            {
            vec4 color = texture2D(tex,gl_TexCoord[0].st);
            gl_FragColor = color;
            }";

            using (var optimizer = new GLSLOptimizer(Target.OpenGL))
            {
                var result = optimizer.Optimize(ShaderType.Fragment, code, OptimizationOptions.None);

                Assert.That(result.OutputCode, Is.EqualTo("uniform sampler2D tex;\nvoid main ()\n{\n  gl_FragColor = texture2D (tex, gl_TexCoord[0].xy);\n}\n\n"));

                Assert.That(result.Inputs.Count, Is.EqualTo(1));
                Assert.That(result.Inputs[0].Name, Is.EqualTo("gl_TexCoord"));
                Assert.That(result.Inputs[0].Type, Is.EqualTo(BasicType.Float));
                Assert.That(result.Inputs[0].VectorSize, Is.EqualTo(4));

                Assert.That(result.Uniforms.Count, Is.EqualTo(0));

                Assert.That(result.Textures.Count, Is.EqualTo(1));
                Assert.That(result.Textures[0].Name, Is.EqualTo("tex"));
                Assert.That(result.Textures[0].Type, Is.EqualTo(BasicType.Tex2D));
            }
        }
示例#3
0
        public GLSLOptimizerResultSet(GLSLOptimizer.IShader shader)
        {
            m_ResultsPanel.Dock = DockStyle.Fill;
            TabPage page;

            string AnalysisText="";
            if( !shader.HadError )
            {
                AnalysisText = String.Format("GLSLOptimizer stats:\r\nMathOps:\t{0}\r\nTextureOps:\t{1}\r\nFlowOps:\t{2}\r\n",
                                             shader.MathOps,
                                             shader.TextureOps,
                                             shader.ControlFlowOps);

                m_ResultsPanel.TabPages.Add("Optimized Output");
                page = m_ResultsPanel.TabPages[m_ResultsPanel.TabPages.Count - 1];
                TextBox txtOutput = new TextBox();
                txtOutput.ReadOnly = true;
                txtOutput.Dock = DockStyle.Fill;
                txtOutput.Multiline = true;
                txtOutput.ScrollBars = ScrollBars.Both;
                txtOutput.Text = shader.Output.Replace("\n", Environment.NewLine) ;
                txtOutput.WordWrap = false;
                page.Controls.Add(txtOutput);

                m_ResultsPanel.TabPages.Add("Raw Output");
                page = m_ResultsPanel.TabPages[m_ResultsPanel.TabPages.Count - 1];
                TextBox txtRawOutput = new TextBox();
                txtRawOutput.ReadOnly = true;
                txtRawOutput.Dock = DockStyle.Fill;
                txtRawOutput.Multiline = true;
                txtRawOutput.ScrollBars = ScrollBars.Both;
                txtRawOutput.Text = shader.RawOutput.Replace("\n",Environment.NewLine);
                txtRawOutput.WordWrap = false;
                page.Controls.Add(txtRawOutput);
            }

            m_ResultsPanel.TabPages.Add("Log");
            page = m_ResultsPanel.TabPages[m_ResultsPanel.TabPages.Count - 1];
            TextBox txtLog = new TextBox();
            txtLog.ReadOnly = true;
            txtLog.Dock = DockStyle.Fill;
            txtLog.Multiline = true;
            txtLog.ScrollBars = ScrollBars.Both;
            txtLog.WordWrap = false;
            txtLog.Text = shader.Log.Replace("\n", Environment.NewLine);

            page.Controls.Add(txtLog);

            m_AnalysisPanel.ReadOnly = true;
            m_AnalysisPanel.Dock = DockStyle.Fill;
            m_AnalysisPanel.Text = AnalysisText;
            m_AnalysisPanel.Multiline = true;
            m_AnalysisPanel.Font = new System.Drawing.Font("Lucida Console", 8);
        }
        public void TestCase()
        {
            var sb = new StringBuilder ();
            sb.Append("uniform mat4 _mv;");
            sb.Append("void main () {");
            sb.Append("  gl_Position = ftransform();");
            sb.Append("}");
            sb.Append("void vs_main () {");
            sb.Append("}");

            using (var optimizer = new GLSLOptimizer(Target.OpenGL))
            {
                var result = optimizer.Optimize(ShaderType.Vertex, sb.ToString(), OptimizationOptions.None);
            }
        }
示例#5
0
        public void TestCase()
        {
            var sb = new StringBuilder();

            sb.Append("uniform mat4 _mv;");
            sb.Append("void main () {");
            sb.Append("  gl_Position = ftransform();");
            sb.Append("}");
            sb.Append("void vs_main () {");
            sb.Append("}");

            using (var optimizer = new GLSLOptimizer(Target.OpenGL))
            {
                var result = optimizer.Optimize(ShaderType.Vertex, sb.ToString(), OptimizationOptions.None);
            }
        }