test_shadercompiler.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. from panda3d import core
  2. def test_shadercompiler_glsl_empty(compiler_glsl):
  3. assert not compiler_glsl.compile_now(
  4. core.ShaderModule.Stage.VERTEX,
  5. core.StringStream(b''),
  6. 'created-shader',
  7. )
  8. def test_shadercompiler_glsl_simple(compiler_glsl):
  9. code = """
  10. #version 330
  11. void main() {
  12. }
  13. """
  14. module = compiler_glsl.compile_now(
  15. core.ShaderModule.Stage.VERTEX,
  16. core.StringStream(code.encode('ascii')),
  17. 'created-shader',
  18. )
  19. assert module
  20. assert module.stage == core.ShaderModule.Stage.VERTEX
  21. def test_shadercompiler_glsl_invalid_version(compiler_glsl):
  22. code = """
  23. #version 123
  24. void main() {
  25. }
  26. """
  27. assert not compiler_glsl.compile_now(
  28. core.ShaderModule.Stage.VERTEX,
  29. core.StringStream(code.encode('ascii')),
  30. 'created-shader',
  31. )
  32. def test_shadercompiler_glsl150_bitcast(compiler_glsl):
  33. code = """
  34. #version 150
  35. in int a;
  36. out float b;
  37. void main() {
  38. b = floatBitsToInt(a);
  39. }
  40. """
  41. assert not compiler_glsl.compile_now(
  42. core.ShaderModule.Stage.VERTEX,
  43. core.StringStream(code.encode('ascii')),
  44. 'created-shader',
  45. )
  46. def test_shadercompiler_glsl150_bitcast_extension1(compiler_glsl):
  47. code = """
  48. #version 150
  49. #extension GL_ARB_shader_bit_encoding : enable
  50. in int a;
  51. out float b;
  52. void main() {
  53. b = floatBitsToInt(a);
  54. }
  55. """
  56. assert compiler_glsl.compile_now(
  57. core.ShaderModule.Stage.VERTEX,
  58. core.StringStream(code.encode('ascii')),
  59. 'created-shader',
  60. )
  61. def test_shadercompiler_glsl150_bitcast_extension2(compiler_glsl):
  62. code = """
  63. #version 150
  64. #extension GL_ARB_gpu_shader5 : enable
  65. in int a;
  66. out float b;
  67. void main() {
  68. b = floatBitsToInt(a);
  69. }
  70. """
  71. assert compiler_glsl.compile_now(
  72. core.ShaderModule.Stage.VERTEX,
  73. core.StringStream(code.encode('ascii')),
  74. 'created-shader',
  75. )
  76. def test_shadercompiler_glsl330_bitcast(compiler_glsl):
  77. code = """
  78. #version 330
  79. in int a;
  80. out float b;
  81. void main() {
  82. b = floatBitsToInt(a);
  83. }
  84. """
  85. assert compiler_glsl.compile_now(
  86. core.ShaderModule.Stage.VERTEX,
  87. core.StringStream(code.encode('ascii')),
  88. 'created-shader',
  89. )
  90. def test_shadercompiler_glsl150_explicit_attrib_location(compiler_glsl):
  91. code = """
  92. #version 150
  93. layout(location=2) in vec4 a;
  94. void main() {
  95. gl_Position = a;
  96. }
  97. """
  98. assert not compiler_glsl.compile_now(
  99. core.ShaderModule.Stage.VERTEX,
  100. core.StringStream(code.encode('ascii')),
  101. 'created-shader',
  102. )
  103. def test_shadercompiler_glsl150_explicit_attrib_location_extension(compiler_glsl):
  104. code = """
  105. #version 150
  106. #extension GL_ARB_explicit_attrib_location : enable
  107. layout(location=2) in vec4 a;
  108. void main() {
  109. gl_Position = a;
  110. }
  111. """
  112. module = compiler_glsl.compile_now(
  113. core.ShaderModule.Stage.VERTEX,
  114. core.StringStream(code.encode('ascii')),
  115. 'created-shader',
  116. )
  117. assert module
  118. assert len(module.inputs) == 1
  119. assert module.inputs[0].name.get_name() == "a"
  120. assert module.inputs[0].location == 2
  121. def test_shadercompiler_glsl330_explicit_attrib_location(compiler_glsl):
  122. code = """
  123. #version 330
  124. layout(location=2) in vec4 a;
  125. void main() {
  126. gl_Position = a;
  127. }
  128. """
  129. module = compiler_glsl.compile_now(
  130. core.ShaderModule.Stage.VERTEX,
  131. core.StringStream(code.encode('ascii')),
  132. 'created-shader',
  133. )
  134. assert module
  135. assert len(module.inputs) == 1
  136. assert module.inputs[0].name.get_name() == "a"
  137. assert module.inputs[0].location == 2