From 0b873365edad54c9dd0c94673f1d5a8eb09208c1 Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 9 Jun 2016 14:35:44 -0700 Subject: [PATCH] save current state --- .../render-utils/src/DebugDeferredBuffer.cpp | 1 + .../render-utils/src/SubsurfaceScattering.cpp | 6 ++-- .../src/subsurfaceScattering_makeLUT.slf | 33 ++++++++++++++++++- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/libraries/render-utils/src/DebugDeferredBuffer.cpp b/libraries/render-utils/src/DebugDeferredBuffer.cpp index 2fbdc92b22..09b0e04f4c 100644 --- a/libraries/render-utils/src/DebugDeferredBuffer.cpp +++ b/libraries/render-utils/src/DebugDeferredBuffer.cpp @@ -301,6 +301,7 @@ void DebugDeferredBuffer::run(const SceneContextPointer& sceneContext, const Ren gpu::doInBatch(args->_context, [&](gpu::Batch& batch) { batch.enableStereo(false); + batch.setViewportTransform(args->_viewport); const auto geometryBuffer = DependencyManager::get(); const auto framebufferCache = DependencyManager::get(); diff --git a/libraries/render-utils/src/SubsurfaceScattering.cpp b/libraries/render-utils/src/SubsurfaceScattering.cpp index 89cb80b285..b0d0e9a38e 100644 --- a/libraries/render-utils/src/SubsurfaceScattering.cpp +++ b/libraries/render-utils/src/SubsurfaceScattering.cpp @@ -144,9 +144,7 @@ vec3 integrate(double cosTheta, double skinRadius) { double a = -(_PI); - double inc = 0.001; - if (cosTheta > 0) - inc = 0.01; + double inc = 0.1; while (a <= (_PI)) { double sampleAngle = theta + a; @@ -304,7 +302,7 @@ gpu::TexturePointer SubsurfaceScattering::generatePreIntegratedScattering(Render const int WIDTH = 128; const int HEIGHT = 128; auto scatteringLUT = gpu::TexturePointer(gpu::Texture::create2D(gpu::Element::COLOR_RGBA_32, WIDTH, HEIGHT)); - // diffuseScatter(scatteringLUT); + // diffuseScatter(scatteringLUT); diffuseScatterGPU(profileMap, scatteringLUT, args); return scatteringLUT; } diff --git a/libraries/render-utils/src/subsurfaceScattering_makeLUT.slf b/libraries/render-utils/src/subsurfaceScattering_makeLUT.slf index 577fffba9a..e008c52385 100644 --- a/libraries/render-utils/src/subsurfaceScattering_makeLUT.slf +++ b/libraries/render-utils/src/subsurfaceScattering_makeLUT.slf @@ -20,11 +20,42 @@ vec3 scatter(float r) { } +vec3 integrate(float cosTheta, float skinRadius) { + // Angle from lighting direction. + float theta = acos(cosTheta); + vec3 totalWeights = vec3(0.0); + vec3 totalLight= vec3(0.0); + vec3 skinColour = vec3(1.0); + + float a = -(_PI); + + float inc = 0.1; + + while (a <= (_PI)) { + float sampleAngle = theta + a; + float diffuse = clamp(cos(sampleAngle), 0.0, 1.0); + + // Distance. + float sampleDist = abs(2.0 * skinRadius * sin(a * 0.5)); + + // Profile Weight. + vec3 weights = scatter(sampleDist); + + totalWeights += weights; + totalLight += diffuse * weights /** (skinColour * skinColour)*/; + a += inc; + } + + vec3 result = sqrt(totalLight / totalWeights); + + return min(result, vec3(1.0)); +} + in vec2 varTexCoord0; out vec4 outFragColor; void main(void) { - outFragColor = vec4(scatter(varTexCoord0.x * 2.0), 1.0); + outFragColor = vec4(integrate(varTexCoord0.x * 2.0 - 1, 2.0 * varTexCoord0.y), 1.0); }