3
0

ReflectionProbeVisualization.azsli 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <viewsrg.srgi>
  9. #include <Atom/Features/PBR/DefaultObjectSrg.azsli>
  10. #include <Atom/RPI/ShaderResourceGroups/DefaultDrawSrg.azsli>
  11. #include <Atom/Features/VertexUtility.azsli>
  12. #define ENABLE_DEBUG_MODIFY_OUTPUT 0
  13. #if MATERIALPIPELINE_SHADER_HAS_PIXEL_STAGE
  14. #define MATERIAL_HAS_UVS 0
  15. struct VsInput
  16. {
  17. float3 position : POSITION;
  18. float3 normal : NORMAL;
  19. };
  20. struct VsSystemValues
  21. {
  22. uint m_instanceId;
  23. };
  24. struct VsOutput
  25. {
  26. precise linear centroid float4 position : SV_Position;
  27. float3 normal: NORMAL;
  28. float3 worldPosition : UV0;
  29. };
  30. VsOutput EvaluateVertexGeometry(VsInput IN, VsSystemValues SV)
  31. {
  32. VsOutput output;
  33. output.worldPosition = LocalSpaceToWorldSpace(IN.position, SV.m_instanceId);
  34. output.position = WorldSpaceToClipSpace(output.worldPosition);
  35. output.normal = IN.normal;
  36. return output;
  37. }
  38. class PixelGeometryData
  39. {
  40. float3 positionWS;
  41. float3 vertexNormal;
  42. };
  43. PixelGeometryData EvaluatePixelGeometry(VsOutput IN, bool isFrontFace)
  44. {
  45. PixelGeometryData geoData;
  46. geoData.positionWS = IN.worldPosition;
  47. geoData.vertexNormal = normalize(IN.normal);
  48. return geoData;
  49. }
  50. #include <Atom/Feature/Common/Assets/Shaders/Materials/BasePBR/BasePBR_SurfaceData.azsli>
  51. Surface EvaluateSurface(VsOutput IN, PixelGeometryData geoData)
  52. {
  53. Surface surface;
  54. surface.position = geoData.positionWS;
  55. surface.vertexNormal = geoData.vertexNormal;
  56. surface.normal = geoData.vertexNormal;
  57. float3 baseColor = float3(1,1,1);
  58. float specularF0Factor = 0.5;
  59. float metallic = 1;
  60. surface.SetAlbedoAndSpecularF0(baseColor, specularF0Factor, metallic);
  61. surface.roughnessLinear = 0;
  62. surface.CalculateRoughnessA();
  63. return surface;
  64. }
  65. #else
  66. #include <Atom/Feature/Common/Assets/Shaders/Materials/DepthPass_VertexData.azsli>
  67. #include <Atom/Feature/Common/Assets/Shaders/Materials/DepthPass_VertexEval.azsli>
  68. #endif