DefaultShader.h 8.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #pragma once
  2. #include "Text.h"
  3. namespace Framework
  4. {
  5. // Gibt einen simplen Vertex Shader zurück
  6. // ret: Eine Reference auf ein Text objekt, in dem der Shader gespeichert werden soll
  7. void getVertexShader( Text &ret )
  8. {
  9. ret = "//////////////////////////////////////////////////////////////////////////////// \n\
  10. ///////////// \n\
  11. // GLOBALS // \n\
  12. ///////////// \n\
  13. cbuffer MatrixBuffer : register( b0 ) \n\
  14. { \n\
  15. matrix knochenMatrix[ "; ret += MAX_KNOCHEN_ANZ; ret += " ]; \n\
  16. }; \n\
  17. \n\
  18. ////////////// \n\
  19. // TYPEDEFS // \n\
  20. ////////////// \n\
  21. struct VertexInputType \n\
  22. { \n\
  23. float4 position : POSITION; \n\
  24. float2 tex : TEXCOORD0; \n\
  25. uint knochen : KNOCHEN_ID0; \n\
  26. }; \n\
  27. \n\
  28. struct PixelInputType \n\
  29. { \n\
  30. float4 position : SV_POSITION; \n\
  31. float2 tex : TEXCOORD0; \n\
  32. }; \n\
  33. \n\
  34. //////////////////////////////////////////////////////////////////////////////// \n\
  35. // Vertex Shader \n\
  36. //////////////////////////////////////////////////////////////////////////////// \n\
  37. PixelInputType TextureVertexShader( VertexInputType input ) \n\
  38. { \n\
  39. //return input; \n\
  40. PixelInputType output; \n\
  41. \n\
  42. // Change the position vector to be 4 units for proper matrix calculations. \n\
  43. input.position.w = 1.0f; \n\
  44. \n\
  45. // Store the texture coordinates for the pixel shader. \n\
  46. output.tex = input.tex; \n\
  47. \n\
  48. // Calculate the position of the vertex against the world, view, and projection matrices. \n\
  49. output.position = mul( input.position, knochenMatrix[ input.knochen ] ); \n\
  50. \n\
  51. return output; \n\
  52. }";
  53. }
  54. // Gibt einen simplen Pixel Shader zurück
  55. // ret: Eine Reference auf ein Text objekt, in dem der Shader gespeichert werden soll
  56. void getPixelShader( Text &ret )
  57. {
  58. ret = "//////////////////////////////////////////////////////////////////////////////// \n\
  59. // Filename: texture.ps \n\
  60. //////////////////////////////////////////////////////////////////////////////// \n\
  61. \n\
  62. \n\
  63. ///////////// \n\
  64. // GLOBALS // \n\
  65. ///////////// \n\
  66. Texture2D shaderTexture; \n\
  67. SamplerState SampleType; \n\
  68. \n\
  69. \n\
  70. ////////////// \n\
  71. // TYPEDEFS // \n\
  72. ////////////// \n\
  73. struct PixelInputType \n\
  74. { \n\
  75. float4 position : SV_POSITION; \n\
  76. float2 tex : TEXCOORD0; \n\
  77. }; \n\
  78. \n\
  79. \n\
  80. //////////////////////////////////////////////////////////////////////////////// \n\
  81. // Pixel Shader \n\
  82. //////////////////////////////////////////////////////////////////////////////// \n\
  83. float4 TexturePixelShader( PixelInputType input ) : SV_TARGET \n\
  84. { \n\
  85. //return float4( 0.5, 0.5, 0.5, 0.5 ); \n\
  86. // Sample the pixel color from the texture using the sampler at this texture coordinate location. \n\
  87. float4 textureColor = shaderTexture.Sample( SampleType, input.tex ); \n\
  88. return textureColor; \n\
  89. }";
  90. }
  91. }