diff --git a/libraries/entities-renderer/src/polyvox.slf b/libraries/entities-renderer/src/polyvox.slf index 5772a93f7d..c694630770 100644 --- a/libraries/entities-renderer/src/polyvox.slf +++ b/libraries/entities-renderer/src/polyvox.slf @@ -12,16 +12,12 @@ // <@include gpu/Inputs.slh@> - -layout(location = 0) out vec4 _fragColor0; -layout(location = 1) out vec4 _fragColor1; -layout(location = 2) out vec4 _fragColor2; - <@include model/Material.slh@> +<@include DeferredBufferWrite.slh@> in vec3 _normal; in vec4 _position; -in vec4 _inPosition; +in vec4 _worldPosition; uniform sampler2D xMap; uniform sampler2D yMap; @@ -29,12 +25,12 @@ uniform sampler2D zMap; uniform vec3 voxelVolumeSize; void main(void) { - vec3 worldNormal = cross(dFdy(_inPosition.xyz), dFdx(_inPosition.xyz)); + vec3 worldNormal = cross(dFdy(_worldPosition.xyz), dFdx(_worldPosition.xyz)); worldNormal = normalize(worldNormal); - float inPositionX = (_inPosition.x - 0.5) / voxelVolumeSize.x; - float inPositionY = (_inPosition.y - 0.5) / voxelVolumeSize.y; - float inPositionZ = (_inPosition.z - 0.5) / voxelVolumeSize.z; + float inPositionX = (_worldPosition.x - 0.5) / voxelVolumeSize.x; + float inPositionY = (_worldPosition.y - 0.5) / voxelVolumeSize.y; + float inPositionZ = (_worldPosition.z - 0.5) / voxelVolumeSize.z; vec4 xyDiffuse = texture(xMap, vec2(-inPositionX, -inPositionY)); vec4 xzDiffuse = texture(yMap, vec2(-inPositionX, inPositionZ)); @@ -43,12 +39,7 @@ void main(void) { vec3 xyDiffuseScaled = xyDiffuse.rgb * abs(worldNormal.z); vec3 xzDiffuseScaled = xzDiffuse.rgb * abs(worldNormal.y); vec3 yzDiffuseScaled = yzDiffuse.rgb * abs(worldNormal.x); - vec4 diffuse = vec4(xyDiffuseScaled + xzDiffuseScaled + yzDiffuseScaled, 1.0); - Material mat = getMaterial(); - - _fragColor0 = vec4(diffuse.rgb, 0.0); - _fragColor1 = vec4(_normal, 1.0); - _fragColor2 = vec4(getMaterialSpecular(mat), getMaterialShininess(mat) / 128.0); + packDeferredFragment(_normal, 0.0, vec3(diffuse), vec3(0.01, 0.01, 0.01), 10.0); } diff --git a/libraries/entities-renderer/src/polyvox.slv b/libraries/entities-renderer/src/polyvox.slv index 0074993c80..eb8d264a1b 100644 --- a/libraries/entities-renderer/src/polyvox.slv +++ b/libraries/entities-renderer/src/polyvox.slv @@ -17,7 +17,7 @@ <$declareStandardTransform()$> out vec4 _position; -out vec4 _inPosition; +out vec4 _worldPosition; out vec3 _normal; void main(void) { @@ -26,5 +26,5 @@ void main(void) { TransformObject obj = getTransformObject(); <$transformModelToEyeAndClipPos(cam, obj, inPosition, _position, gl_Position)$> <$transformModelToEyeDir(cam, obj, inNormal.xyz, _normal)$> - _inPosition = inPosition; + _worldPosition = inPosition; }