class_docstr: Rudimentary, generic GLSL printing tools.
  
  Additional settings:
  'use_operators': Boolean (should the printer use operators for +,-,*, or functions?)
class_docstr_tok: ["Rudimentary",",","generic","GLSL","printing","tools",".","Additional","settings",":","'use_operators","'",":","Boolean","(","should","the","printer","use","operators","for","+",",","-",",","*",",","or","functions","?",")"]
code: def _print_MatrixBase(self, mat):
      mat_separator = self._settings["mat_separator"]
      mat_transpose = self._settings["mat_transpose"]
      column_vector = (
          (mat.rows == 1) if mat_transpose else (mat.cols == 1)
      )
      A = mat.transpose() if mat_transpose != column_vector else mat
  
      glsl_types = self._settings["glsl_types"]
      array_type = self._settings["array_type"]
      array_size = A.cols * A.rows
      array_constructor = "{}[{}]".format(array_type, array_size)
  
      if A.cols == 1:
          return self._print(A[0])
      if A.rows <= 4 and A.cols <= 4 and glsl_types:
          if A.rows == 1:
              return "vec{}{}".format(
                  A.cols, A.table(self, rowstart="(", rowend=")")
              )
          elif A.rows == A.cols:
              return "mat{}({})".format(
                  A.rows,
                  A.table(self, rowsep=", ", rowstart="", rowend=""),
              )
          else:
              return "mat{}x{}({})".format(
                  A.cols,
                  A.rows,
                  A.table(self, rowsep=", ", rowstart="", rowend=""),
              )
      elif S.One in A.shape:
          return "{}({})".format(
              array_constructor,
              A.table(
                  self, rowsep=mat_separator, rowstart="", rowend=""
              ),
          )
      elif not self._settings["mat_nested"]:
          return "{}(\n{}\n) /* a {}x{} matrix */".format(
              array_constructor,
              A.table(
                  self, rowsep=mat_separator, rowstart="", rowend=""
              ),
              A.rows,
              A.cols,
          )
      elif self._settings["mat_nested"]:
          return "{}[{}][{}](\n{}\n)".format(
              array_type,
              A.rows,
              A.cols,
              A.table(
                  self,
                  rowsep=mat_separator,
                  rowstart="float[](",
                  rowend=")",
              ),
          )
  
imports: from __future__ import annotations
  from sympy.core import Basic, S
  from sympy.core.function import Lambda
  from sympy.core.numbers import equal_valued
  from sympy.printing.codeprinter import CodePrinter
  from sympy.printing.precedence import precedence
  from functools import reduce
label_desc: Use image node_id 8 for calling the GLSLPrinter obj's underlying member method code with example usage: obj._print_MatrixBase(mat) and returns: self, str, str, str, str, str, str