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 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); } }
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); } }