Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/eevee/shaders/surface_lib.glsl
| /** This describe the entire interface of the shader. */ | /** This describe the entire interface of the shader. */ | ||||
| /* Samplers */ | /* Samplers */ | ||||
| uniform sampler2D colorBuffer; | uniform sampler2D colorBuffer; | ||||
| uniform sampler2D depthBuffer; | uniform sampler2D depthBuffer; | ||||
| /* Uniforms */ | /* Uniforms */ | ||||
| uniform float refractionDepth; | uniform float refractionDepth; | ||||
| #define SURFACE_INTERFACE \ | #define SURFACE_INTERFACE \ | ||||
| vec3 worldPosition; \ | vec3 worldPosition; \ | ||||
| vec3 viewPosition; \ | vec3 viewPosition; \ | ||||
| vec3 worldNormal; \ | vec3 worldNormal; \ | ||||
| vec3 viewNormal; | vec3 viewNormal; | ||||
| #ifdef GPU_GEOMETRY_SHADER | #if defined(STEP_RESOLVE) || defined(STEP_RAYTRACE) | ||||
| /* SSR will set these global variables itself. | |||||
| * Also make false positive compiler warnings disapear by setting values. */ | |||||
| vec3 worldPosition = vec3(0); | |||||
| vec3 viewPosition = vec3(0); | |||||
| vec3 worldNormal = vec3(0); | |||||
| vec3 viewNormal = vec3(0); | |||||
| #elif defined(GPU_GEOMETRY_SHADER) | |||||
| in ShaderStageInterface{SURFACE_INTERFACE} dataIn[]; | in ShaderStageInterface{SURFACE_INTERFACE} dataIn[]; | ||||
| out ShaderStageInterface{SURFACE_INTERFACE} dataOut; | out ShaderStageInterface{SURFACE_INTERFACE} dataOut; | ||||
| # define PASS_SURFACE_INTERFACE(vert) \ | # define PASS_SURFACE_INTERFACE(vert) \ | ||||
| dataOut.worldPosition = dataIn[vert].worldPosition; \ | dataOut.worldPosition = dataIn[vert].worldPosition; \ | ||||
| dataOut.viewPosition = dataIn[vert].viewPosition; \ | dataOut.viewPosition = dataIn[vert].viewPosition; \ | ||||
| dataOut.worldNormal = dataIn[vert].worldNormal; \ | dataOut.worldNormal = dataIn[vert].worldNormal; \ | ||||
| dataOut.viewNormal = dataIn[vert].viewNormal; | dataOut.viewNormal = dataIn[vert].viewNormal; | ||||
| #else | #else /* GPU_VERTEX_SHADER || GPU_FRAGMENT_SHADER*/ | ||||
| IN_OUT ShaderStageInterface{SURFACE_INTERFACE}; | IN_OUT ShaderStageInterface{SURFACE_INTERFACE}; | ||||
| #endif | #endif | ||||
| #ifdef HAIR_SHADER | #ifdef HAIR_SHADER | ||||
| IN_OUT ShaderHairInterface | IN_OUT ShaderHairInterface | ||||
| { | { | ||||
| /* world space */ | /* world space */ | ||||
| vec3 hairTangent; | vec3 hairTangent; | ||||
| float hairThickTime; | float hairThickTime; | ||||
| float hairThickness; | float hairThickness; | ||||
| float hairTime; | float hairTime; | ||||
| flat int hairStrandID; | flat int hairStrandID; | ||||
| }; | }; | ||||
| #endif | #endif | ||||