From 91d317f964b3287a51d408d199f0aa6ebdef2822 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 23 Jul 2015 12:42:55 -0700 Subject: [PATCH 01/11] testing windows render bug --- libraries/render-utils/src/simple.slv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/simple.slv b/libraries/render-utils/src/simple.slv index 380734e70c..43b139c565 100644 --- a/libraries/render-utils/src/simple.slv +++ b/libraries/render-utils/src/simple.slv @@ -23,7 +23,7 @@ void main(void) { gl_TexCoord[0] = gl_MultiTexCoord0; // pass along the diffuse color - gl_FrontColor = gl_Color; + gl_FrontColor = vec4(0,1,0,1); //gl_Color; // standard transform TransformCamera cam = getTransformCamera(); From a0666d5e99a4877c1bdd478bd975d771e226e04c Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 23 Jul 2015 13:17:12 -0700 Subject: [PATCH 02/11] testing windows render bug --- libraries/render-utils/src/DeferredLightingEffect.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 7da314cdf2..9a45ea488e 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -142,6 +142,10 @@ void DeferredLightingEffect::bindSimpleProgram(gpu::Batch& batch, bool textured, bool emmisive, bool depthBias) { SimpleProgramKey config{textured, culled, emmisive, depthBias}; batch.setPipeline(getPipeline(config)); + + gpu::ShaderPointer program = (config.isEmissive()) ? _emissiveShader : _simpleShader; + int glowIntensity = program->getUniforms().findLocation("glowIntensity"); + batch._glUniform1f(glowIntensity, 1.0f); if (!config.isTextured()) { // If it is not textured, bind white texture and keep using textured pipeline From 5774af08560ae0619ecab25c5dc9f8449cef794a Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 23 Jul 2015 13:38:08 -0700 Subject: [PATCH 03/11] more hacking --- libraries/render-utils/src/simple.slf | 6 +++--- libraries/render-utils/src/simple_textured.slf | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/libraries/render-utils/src/simple.slf b/libraries/render-utils/src/simple.slf index bbbb44cc51..8d49de4e46 100644 --- a/libraries/render-utils/src/simple.slf +++ b/libraries/render-utils/src/simple.slf @@ -21,7 +21,7 @@ void main(void) { packDeferredFragment( normalize(interpolatedNormal.xyz), glowIntensity, - gl_Color.rgb, - gl_FrontMaterial.specular.rgb, - gl_FrontMaterial.shininess); + vec3(0,0,1), //gl_Color.rgb, + vec3(0,0,1), //gl_FrontMaterial.specular.rgb, + 1); //gl_FrontMaterial.shininess); } diff --git a/libraries/render-utils/src/simple_textured.slf b/libraries/render-utils/src/simple_textured.slf index 7444d512e4..5a3909c7ce 100644 --- a/libraries/render-utils/src/simple_textured.slf +++ b/libraries/render-utils/src/simple_textured.slf @@ -25,8 +25,8 @@ void main(void) { packDeferredFragment( normalize(interpolatedNormal.xyz), - glowIntensity * texel.a, - gl_Color.rgb * texel.rgb, - gl_FrontMaterial.specular.rgb, - gl_FrontMaterial.shininess); + glowIntensity, // glowIntensity * texel.a, + vec3(0,0,1), // gl_Color.rgb * texel.rgb, + vec3(0,0,1), // gl_FrontMaterial.specular.rgb, + 1); // gl_FrontMaterial.shininess); } \ No newline at end of file From 9496b6c024d1d6c304c42a2a02ce0abf0bcb99b7 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 23 Jul 2015 13:56:59 -0700 Subject: [PATCH 04/11] more hacking --- libraries/render-utils/src/simple_textured.slf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/render-utils/src/simple_textured.slf b/libraries/render-utils/src/simple_textured.slf index 5a3909c7ce..814854e169 100644 --- a/libraries/render-utils/src/simple_textured.slf +++ b/libraries/render-utils/src/simple_textured.slf @@ -26,7 +26,7 @@ void main(void) { packDeferredFragment( normalize(interpolatedNormal.xyz), glowIntensity, // glowIntensity * texel.a, - vec3(0,0,1), // gl_Color.rgb * texel.rgb, - vec3(0,0,1), // gl_FrontMaterial.specular.rgb, - 1); // gl_FrontMaterial.shininess); + gl_Color.rgb, // gl_Color.rgb * texel.rgb, + gl_FrontMaterial.specular.rgb, + gl_FrontMaterial.shininess); } \ No newline at end of file From 96e83e3ed496fa582fcf2483fd094ca0d9c0d855 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 23 Jul 2015 14:11:28 -0700 Subject: [PATCH 05/11] remove gl_FrontMaterial --- libraries/render-utils/src/simple.slf | 6 +++--- libraries/render-utils/src/simple_textured.slf | 8 ++++---- libraries/render-utils/src/simple_textured_emisive.slf | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/libraries/render-utils/src/simple.slf b/libraries/render-utils/src/simple.slf index 8d49de4e46..1d77dde0d3 100644 --- a/libraries/render-utils/src/simple.slf +++ b/libraries/render-utils/src/simple.slf @@ -21,7 +21,7 @@ void main(void) { packDeferredFragment( normalize(interpolatedNormal.xyz), glowIntensity, - vec3(0,0,1), //gl_Color.rgb, - vec3(0,0,1), //gl_FrontMaterial.specular.rgb, - 1); //gl_FrontMaterial.shininess); + gl_Color.rgb, + vec3(0.1), + 10); } diff --git a/libraries/render-utils/src/simple_textured.slf b/libraries/render-utils/src/simple_textured.slf index 814854e169..88b196543c 100644 --- a/libraries/render-utils/src/simple_textured.slf +++ b/libraries/render-utils/src/simple_textured.slf @@ -25,8 +25,8 @@ void main(void) { packDeferredFragment( normalize(interpolatedNormal.xyz), - glowIntensity, // glowIntensity * texel.a, - gl_Color.rgb, // gl_Color.rgb * texel.rgb, - gl_FrontMaterial.specular.rgb, - gl_FrontMaterial.shininess); + glowIntensity * texel.a, + gl_Color.rgb * texel.rgb, + vec3(0.1), + 10); } \ No newline at end of file diff --git a/libraries/render-utils/src/simple_textured_emisive.slf b/libraries/render-utils/src/simple_textured_emisive.slf index 643dcde190..c5749114f3 100644 --- a/libraries/render-utils/src/simple_textured_emisive.slf +++ b/libraries/render-utils/src/simple_textured_emisive.slf @@ -27,7 +27,7 @@ void main(void) { normalize(interpolatedNormal.xyz), glowIntensity * texel.a, gl_Color.rgb, - gl_FrontMaterial.specular.rgb, - gl_FrontMaterial.shininess, + vec3(0.1), + 10, texel.rgb); } \ No newline at end of file From 1177ffd43954333ec4fb105934a33ca28c094c23 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 23 Jul 2015 14:12:52 -0700 Subject: [PATCH 06/11] more hacking --- libraries/render-utils/src/simple.slv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/simple.slv b/libraries/render-utils/src/simple.slv index 43b139c565..380734e70c 100644 --- a/libraries/render-utils/src/simple.slv +++ b/libraries/render-utils/src/simple.slv @@ -23,7 +23,7 @@ void main(void) { gl_TexCoord[0] = gl_MultiTexCoord0; // pass along the diffuse color - gl_FrontColor = vec4(0,1,0,1); //gl_Color; + gl_FrontColor = gl_Color; // standard transform TransformCamera cam = getTransformCamera(); From b26f4b0c8d034f298bc317db6fbb157cc66992d1 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 23 Jul 2015 14:49:15 -0700 Subject: [PATCH 07/11] fix for underdamped avatar rotation momentum --- interface/src/avatar/MyAvatar.cpp | 40 ++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index ac0cb3feda..980a4d3e14 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -54,7 +54,7 @@ using namespace std; const glm::vec3 DEFAULT_UP_DIRECTION(0.0f, 1.0f, 0.0f); -const float YAW_SPEED = 500.0f; // degrees/sec +const float YAW_SPEED = 150.0f; // degrees/sec const float PITCH_SPEED = 100.0f; // degrees/sec const float DEFAULT_REAL_WORLD_FIELD_OF_VIEW_DEGREES = 30.0f; @@ -1290,22 +1290,34 @@ bool MyAvatar::shouldRenderHead(const RenderArgs* renderArgs) const { void MyAvatar::updateOrientation(float deltaTime) { // Smoothly rotate body with arrow keys - _bodyYawDelta -= _driveKeys[ROT_RIGHT] * YAW_SPEED * deltaTime; - _bodyYawDelta += _driveKeys[ROT_LEFT] * YAW_SPEED * deltaTime; - getHead()->setBasePitch(getHead()->getBasePitch() + (_driveKeys[ROT_UP] - _driveKeys[ROT_DOWN]) * PITCH_SPEED * deltaTime); + float driveLeft = _driveKeys[ROT_LEFT] - _driveKeys[ROT_RIGHT]; + float targetSpeed = (_driveKeys[ROT_LEFT] - _driveKeys[ROT_RIGHT]) * YAW_SPEED; + if (targetSpeed != 0.0f) { + const float ROTATION_RAMP_TIMESCALE = 0.1f; + float blend = deltaTime / ROTATION_RAMP_TIMESCALE; + if (blend > 1.0f) { + blend = 1.0f; + } + _bodyYawDelta = (1.0f - blend) * _bodyYawDelta + blend * targetSpeed; + } else if (_bodyYawDelta != 0.0f) { + // attenuate body rotation speed + const float ROTATION_DECAY_TIMESCALE = 0.05f; + float attenuation = 1.0f - deltaTime / ROTATION_DECAY_TIMESCALE; + if (attenuation < 0.0f) { + attenuation = 0.0f; + } + _bodyYawDelta *= attenuation; + float MINIMUM_ROTATION_RATE = 2.0f; + if (fabsf(_bodyYawDelta) < MINIMUM_ROTATION_RATE) { + _bodyYawDelta = 0.0f; + } + } + + getHead()->setBasePitch(getHead()->getBasePitch() + (_driveKeys[ROT_UP] - _driveKeys[ROT_DOWN]) * PITCH_SPEED * deltaTime); // update body orientation by movement inputs setOrientation(getOrientation() * - glm::quat(glm::radians(glm::vec3(0.0f, _bodyYawDelta, 0.0f) * deltaTime))); - - // decay body rotation momentum - const float BODY_SPIN_FRICTION = 7.5f; - float bodySpinMomentum = 1.0f - BODY_SPIN_FRICTION * deltaTime; - if (bodySpinMomentum < 0.0f) { bodySpinMomentum = 0.0f; } - _bodyYawDelta *= bodySpinMomentum; - - float MINIMUM_ROTATION_RATE = 2.0f; - if (fabs(_bodyYawDelta) < MINIMUM_ROTATION_RATE) { _bodyYawDelta = 0.0f; } + glm::quat(glm::radians(glm::vec3(0.0f, _bodyYawDelta * deltaTime, 0.0f)))); if (qApp->isHMDMode()) { // these angles will be in radians From e6262de864f1607c3be7ba52153ee6f21240e462 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 23 Jul 2015 14:56:52 -0700 Subject: [PATCH 08/11] CR feedback --- libraries/render-utils/src/DeferredBufferWrite.slh | 3 +++ libraries/render-utils/src/simple.slf | 3 +-- libraries/render-utils/src/simple_textured.slf | 3 +-- libraries/render-utils/src/simple_textured_emisive.slf | 3 +-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/render-utils/src/DeferredBufferWrite.slh b/libraries/render-utils/src/DeferredBufferWrite.slh index a7f4055bba..ab070db9e9 100755 --- a/libraries/render-utils/src/DeferredBufferWrite.slh +++ b/libraries/render-utils/src/DeferredBufferWrite.slh @@ -21,6 +21,9 @@ float evalOpaqueFinalAlpha(float alpha, float mapAlpha) { return mix(alpha * glowIntensity, 1.0 - alpha * glowIntensity, step(mapAlpha, alphaThreshold)); } +const DEFAULT_SPECULAR = vec3(0.1); +const DEFAULT_SHININESS = 10; + void packDeferredFragment(vec3 normal, float alpha, vec3 diffuse, vec3 specular, float shininess) { if (alpha != glowIntensity) { discard; diff --git a/libraries/render-utils/src/simple.slf b/libraries/render-utils/src/simple.slf index 1d77dde0d3..84f1752c37 100644 --- a/libraries/render-utils/src/simple.slf +++ b/libraries/render-utils/src/simple.slf @@ -22,6 +22,5 @@ void main(void) { normalize(interpolatedNormal.xyz), glowIntensity, gl_Color.rgb, - vec3(0.1), - 10); + DEFAULT_SPECULAR, DEFAULT_SHININESS); } diff --git a/libraries/render-utils/src/simple_textured.slf b/libraries/render-utils/src/simple_textured.slf index 88b196543c..68d235050d 100644 --- a/libraries/render-utils/src/simple_textured.slf +++ b/libraries/render-utils/src/simple_textured.slf @@ -27,6 +27,5 @@ void main(void) { normalize(interpolatedNormal.xyz), glowIntensity * texel.a, gl_Color.rgb * texel.rgb, - vec3(0.1), - 10); + DEFAULT_SPECULAR, DEFAULT_SHININESS); } \ No newline at end of file diff --git a/libraries/render-utils/src/simple_textured_emisive.slf b/libraries/render-utils/src/simple_textured_emisive.slf index c5749114f3..d2c7d403c3 100644 --- a/libraries/render-utils/src/simple_textured_emisive.slf +++ b/libraries/render-utils/src/simple_textured_emisive.slf @@ -27,7 +27,6 @@ void main(void) { normalize(interpolatedNormal.xyz), glowIntensity * texel.a, gl_Color.rgb, - vec3(0.1), - 10, + DEFAULT_SPECULAR, DEFAULT_SHININESS, texel.rgb); } \ No newline at end of file From 5f33ac545907426624c2c3ed17f430d714b552dc Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 23 Jul 2015 15:30:54 -0700 Subject: [PATCH 09/11] Update script print() to be variadic --- libraries/script-engine/src/ScriptEngine.cpp | 22 +++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 7bb62a01ab..99497c7f55 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -46,13 +46,21 @@ static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine){ - qCDebug(scriptengine) << "script:print()<<" << context->argument(0).toString(); - QString message = context->argument(0).toString() - .replace("\\", "\\\\") - .replace("\n", "\\n") - .replace("\r", "\\r") - .replace("'", "\\'"); - engine->evaluate("Script.print('" + message + "')"); + QString message = ""; + for (int i = 0; i < context->argumentCount(); i++) { + if (i > 0) { + message += " "; + } + message += context->argument(i).toString(); + } + qCDebug(scriptengine) << "script:print()<<" << message; + + QString scriptMessage = message.replace("\\", "\\\\") + .replace("\n", "\\n") + .replace("\r", "\\r") + .replace("'", "\\'"); + engine->evaluate("Script.print('" + scriptMessage + "')"); + return QScriptValue(); } From 396bb613f8a1a3a9c382c0179bce5bce972f3339 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 23 Jul 2015 15:32:40 -0700 Subject: [PATCH 10/11] Avoid creating a new variable in js print --- libraries/script-engine/src/ScriptEngine.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 99497c7f55..d5e727657c 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -55,11 +55,11 @@ static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine){ } qCDebug(scriptengine) << "script:print()<<" << message; - QString scriptMessage = message.replace("\\", "\\\\") - .replace("\n", "\\n") - .replace("\r", "\\r") - .replace("'", "\\'"); - engine->evaluate("Script.print('" + scriptMessage + "')"); + message = message.replace("\\", "\\\\") + .replace("\n", "\\n") + .replace("\r", "\\r") + .replace("'", "\\'"); + engine->evaluate("Script.print('" + message + "')"); return QScriptValue(); } From 8007fba909961905a36077c6867925625ae284bb Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 23 Jul 2015 15:37:56 -0700 Subject: [PATCH 11/11] add type to shader include --- libraries/render-utils/src/DeferredBufferWrite.slh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/render-utils/src/DeferredBufferWrite.slh b/libraries/render-utils/src/DeferredBufferWrite.slh index ab070db9e9..a3edfbdbbb 100755 --- a/libraries/render-utils/src/DeferredBufferWrite.slh +++ b/libraries/render-utils/src/DeferredBufferWrite.slh @@ -21,8 +21,8 @@ float evalOpaqueFinalAlpha(float alpha, float mapAlpha) { return mix(alpha * glowIntensity, 1.0 - alpha * glowIntensity, step(mapAlpha, alphaThreshold)); } -const DEFAULT_SPECULAR = vec3(0.1); -const DEFAULT_SHININESS = 10; +const vec3 DEFAULT_SPECULAR = vec3(0.1); +const float DEFAULT_SHININESS = 10; void packDeferredFragment(vec3 normal, float alpha, vec3 diffuse, vec3 specular, float shininess) { if (alpha != glowIntensity) {