Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MobileStandardMaterial #557

Merged
merged 3 commits into from
Oct 22, 2018
Merged

MobileStandardMaterial #557

merged 3 commits into from
Oct 22, 2018

Conversation

robertlong
Copy link
Contributor

@robertlong robertlong commented Sep 6, 2018

Replaces any StandardMaterials with the MobileStandardMaterial when on low quality mode (mobile and standalone). This improves performance of glTF models loaded via the media tools that do not use MOZ_alt_materials and KHR_materials_unlit.

The MobileStandardMaterial currently uses an unlit shading model. It uses the color, map, aoMap, aoMapIntensity, emissive, emissiveMap, and opacity fields from the StandardMaterial. The result is visually similar to the output of gltf-unlit-generator.

We could also use this material instead of using gltf-unlit-generator and MOZ_alt_materials in our art pipeline. It would result in downloading more textures and a slightly more expensive shader, but can be used in all situations without export-time generation of an unlit map.

Future versions of MobileStandardMaterial could also use the metallic, roughness, and normal maps in a more efficient manner than the StandardMaterial. Disabling dynamic lighting and using a cheaper approximate BRDF will improve the performance while still looking physically correct.

@@ -76,7 +77,7 @@ function cloneGltf(gltf) {

cloneSkinnedMesh.bind(new THREE.Skeleton(orderedCloneBones, skeleton.boneInverses), cloneSkinnedMesh.matrixWorld);

cloneSkinnedMesh.material = skinnedMesh.material.clone();
// cloneSkinnedMesh.material = skinnedMesh.material.clone();
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I needed to comment this line out to get the ShaderMaterial to work. This means that models from the same url will share a material and changing the uniforms of one material will affect the other. Because we are no longer using the audio feedback for making the avatar's head brighter, I think this is safe? Maybe we are modifying materials somewhere else?

@@ -256,8 +257,12 @@ async function loadGLTF(src, contentType, preferredTechnique, onProgress) {

gltf.scene.traverse(object => {
if (object.material && object.material.type === "MeshStandardMaterial") {
object.material.envMap = envMap;
object.material.needsUpdate = true;
if (preferredTechnique === "KHR_materials_unlit") {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see this wasn't so hacky! :)

(thanks for the PR when you are technically on vacation!)

Copy link
Contributor

@netpro2k netpro2k left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will have to be careful to watch StandardShader for changes upstream to make sure we include them here, but otherwise LGTM

@robertlong robertlong merged commit cd4424b into master Oct 22, 2018
@buildsize
Copy link

buildsize bot commented Oct 22, 2018

File name Previous Size New Size Change
avatar-selector.html 608 bytes 608 bytes 0 bytes (0%)
favicon.ico 33.69 KB 33.69 KB 0 bytes (0%)
hub-preview.png 16.5 KB 16.5 KB 0 bytes (0%)
hub.html 26.69 KB 26.69 KB 0 bytes (0%)
index.html 695 bytes 695 bytes 0 bytes (0%)
link.html 803 bytes 803 bytes 0 bytes (0%)
LoadingObject_Atom-[hash].glb 27.43 KB 27.43 KB 0 bytes (0%)
waternormals-[hash].jpg 242.98 KB 242.98 KB 0 bytes (0%)
bubble_off-[hash].png 4.22 KB 4.22 KB 0 bytes (0%)
bubble_off-hover-[hash].png 5.85 KB 5.85 KB 0 bytes (0%)
bubble_on-[hash].png 5.65 KB 5.65 KB 0 bytes (0%)
bubble_on-hover-[hash].png 5.46 KB 5.46 KB 0 bytes (0%)
create_object-[hash].png 8.38 KB 8.38 KB 0 bytes (0%)
create_object-hover-[hash].png 10.65 KB 10.65 KB 0 bytes (0%)
freeze_off-[hash].png 7.53 KB 7.53 KB 0 bytes (0%)
freeze_off-hover-[hash].png 9.96 KB 9.96 KB 0 bytes (0%)
freeze_on-[hash].png 7.36 KB 7.36 KB 0 bytes (0%)
freeze_on-hover-[hash].png 9.45 KB 9.45 KB 0 bytes (0%)
mute_off-[hash].png 2.76 KB 2.76 KB 0 bytes (0%)
mute_off-hover-[hash].png 3.65 KB 3.65 KB 0 bytes (0%)
mute_on-[hash].png 5.48 KB 5.48 KB 0 bytes (0%)
mute_on-hover-[hash].png 5.29 KB 5.29 KB 0 bytes (0%)
spawn_photo-[hash].png 3.14 KB 3.14 KB 0 bytes (0%)
tooltip.9-[hash].png 640 bytes 640 bytes 0 bytes (0%)
account-[hash].svg 826 bytes 826 bytes 0 bytes (0%)
daydream_entry-[hash].svg 6.45 KB 6.45 KB 0 bytes (0%)
default_thumbnail-[hash].png 3.02 KB 3.02 KB 0 bytes (0%)
desktop_screen_entry-[hash].svg 376 bytes 376 bytes 0 bytes (0%)
device_entry-[hash].svg 10.47 KB 10.47 KB 0 bytes (0%)
dropdown_arrow-[hash].png 172 bytes 172 bytes 0 bytes (0%)
dropdown_arrow@2x-[hash].png 233 bytes 233 bytes 0 bytes (0%)
gearvr_entry-[hash].svg 574 bytes 574 bytes 0 bytes (0%)
generic_vr_entry-[hash].svg 950 bytes 950 bytes 0 bytes (0%)
giphy_logo-[hash].png 1.02 KB 1.02 KB 0 bytes (0%)
level_background-[hash].png 4.03 KB 4.03 KB 0 bytes (0%)
level_background@2x-[hash].png 4.63 KB 4.63 KB 0 bytes (0%)
level_fill-[hash].png 1.03 KB 1.03 KB 0 bytes (0%)
level_fill@2x-[hash].png 2.02 KB 2.02 KB 0 bytes (0%)
logo-[hash].svg 14.21 KB 14.21 KB 0 bytes (0%)
mic_denied-[hash].png 2.02 KB 2.02 KB 0 bytes (0%)
mic_denied@2x-[hash].png 3.97 KB 3.97 KB 0 bytes (0%)
mic_granted-[hash].png 2.21 KB 2.21 KB 0 bytes (0%)
mic_granted@2x-[hash].png 4.26 KB 4.26 KB 0 bytes (0%)
mic_level-[hash].png 697 bytes 697 bytes 0 bytes (0%)
mic_level@2x-[hash].png 1.48 KB 1.48 KB 0 bytes (0%)
mic_small-[hash].png 234 bytes 234 bytes 0 bytes (0%)
mic_small@2x-[hash].png 370 bytes 370 bytes 0 bytes (0%)
mobile_screen_entry-[hash].svg 914 bytes 914 bytes 0 bytes (0%)
speaker_level-[hash].png 626 bytes 626 bytes 0 bytes (0%)
speaker_level@2x-[hash].png 1.29 KB 1.29 KB 0 bytes (0%)
warning_icon-[hash].png 442 bytes 442 bytes 0 bytes (0%)
warning_icon@2x-[hash].png 699 bytes 699 bytes 0 bytes (0%)
aframe-inspector.min-[hash].js 384.44 KB 384.44 KB 0 bytes (0%)
avatar-selector-[hash].js 33.93 KB 37.57 KB 3.64 KB (11%)
avatar-selector-[hash].js.map 74.08 KB 78.66 KB 4.58 KB (6%)
engine-[hash].js 1.42 MB 1.42 MB 1 bytes (0%)
engine-[hash].js.map 4.47 MB 4.47 MB 0 bytes (0%)
gifparsing.worker-[hash].js 1.91 KB 1.91 KB 0 bytes (0%)
gifparsing.worker-[hash].js.map 8.32 KB 8.32 KB 0 bytes (0%)
hub-[hash].js 330.35 KB 333.99 KB 3.64 KB (1%)
hub-[hash].js.map 779.11 KB 783.65 KB 4.54 KB (1%)
index-[hash].js 49.6 KB 49.6 KB 0 bytes (0%)
index-[hash].js.map 81.9 KB 81.9 KB 0 bytes (0%)
link-[hash].js 28.69 KB 28.69 KB 0 bytes (0%)
link-[hash].js.map 60.54 KB 60.54 KB 0 bytes (0%)
sketchfab-zip.worker-[hash].js 155.49 KB 155.49 KB 0 bytes (0%)
sketchfab-zip.worker-[hash].js.map 774.45 KB 774.45 KB 0 bytes (0%)
vendor-[hash].js 596.71 KB 596.71 KB 1 bytes (0%)
vendor-[hash].js.map 1.99 MB 1.99 MB 0 bytes (0%)
quack-[hash].mp3 7.03 KB 7.03 KB 0 bytes (0%)
specialquack-[hash].mp3 11.57 KB 11.57 KB 0 bytes (0%)
tone-[hash].mp3 53.92 KB 53.92 KB 0 bytes (0%)
tone-[hash].wav 385.29 KB 385.29 KB 0 bytes (0%)
tone-[hash].webm 32.04 KB 32.04 KB 0 bytes (0%)
tone-[hash].ogg 32.55 KB 32.55 KB 0 bytes (0%)
avatar-selector-[hash].css 1.15 KB 1.15 KB 0 bytes (0%)
avatar-selector-[hash].css.map 136 bytes 136 bytes 0 bytes (0%)
hub-[hash].css 77.92 KB 77.92 KB 0 bytes (0%)
hub-[hash].css.map 124 bytes 124 bytes 0 bytes (0%)
index-[hash].css 34.1 KB 34.1 KB 0 bytes (0%)
index-[hash].css.map 126 bytes 126 bytes 0 bytes (0%)
link-[hash].css 6.1 KB 6.1 KB 0 bytes (0%)
link-[hash].css.map 125 bytes 125 bytes 0 bytes (0%)
home-[hash].mp4 2 MB 2 MB 0 bytes (0%)
home-[hash].webm 1.81 MB 1.81 MB 0 bytes (0%)
negx-[hash].jpg 54.45 KB 54.45 KB 0 bytes (0%)
negy-[hash].jpg 50.97 KB 50.97 KB 0 bytes (0%)
negz-[hash].jpg 53.29 KB 53.29 KB 0 bytes (0%)
posx-[hash].jpg 58.64 KB 58.64 KB 0 bytes (0%)
posy-[hash].jpg 19.17 KB 19.17 KB 0 bytes (0%)
posz-[hash].jpg 57.49 KB 57.49 KB 0 bytes (0%)
spawn_pen-[hash].png 2.39 KB 2.39 KB 0 bytes (0%)
spawn_pen-hover-[hash].png 3.07 KB 3.07 KB 0 bytes (0%)
spawn_camera-[hash].png 2.93 KB 2.93 KB 0 bytes (0%)
spawn_camera-hover-[hash].png 4.06 KB 4.06 KB 0 bytes (0%)
scene.html 1.55 KB 1.55 KB 0 bytes (0%)
scene-[hash].js 89.44 KB 93.08 KB 3.64 KB (4%)
scene-[hash].js.map 206.71 KB 211.17 KB 4.46 KB (2%)
scene-[hash].css 4.56 KB 4.56 KB 0 bytes (0%)
scene-[hash].css.map 126 bytes 126 bytes 0 bytes (0%)
camera_tool-[hash].glb 757.23 KB 757.23 KB 0 bytes (0%)
hub-preview-white-[hash].png 62.76 KB 62.76 KB 0 bytes (0%)
link_dialog_header-[hash].svg 950 bytes 950 bytes 0 bytes (0%)
moz-logo-black-[hash].png 1.71 KB 1.71 KB 0 bytes (0%)
hub-preview-light-no-shadow-[hash].png 9.35 KB 9.35 KB 0 bytes (0%)
spoke.html 1.42 KB 1.42 KB 0 bytes (0%)
spoke-[hash].js 16.68 KB 16.68 KB 0 bytes (0%)
spoke-[hash].js.map 27.24 KB 27.24 KB 0 bytes (0%)
spoke-[hash].css 6.22 KB 6.22 KB 0 bytes (0%)
spoke-[hash].css.map 126 bytes 126 bytes 0 bytes (0%)
spoke_logo-[hash].png 148.82 KB 148.82 KB 0 bytes (0%)
spoke_logo_black-[hash].png 45.87 KB 45.87 KB 0 bytes (0%)
twitter-[hash].svg 869 bytes 869 bytes 0 bytes (0%)
presence_desktop-[hash].png 252 bytes 252 bytes 0 bytes (0%)
presence_phone-[hash].png 237 bytes 237 bytes 0 bytes (0%)
presence_vr-[hash].png 558 bytes 558 bytes 0 bytes (0%)
spoke-[hash].webm 5.52 MB 5.52 MB 0 bytes (0%)
spoke-[hash].mp4 6.27 MB 6.27 MB 0 bytes (0%)

@brianpeiris brianpeiris added the whats new Include this PR on the "What's New" page label Oct 22, 2018
@robertlong robertlong deleted the feature/mobile-standard-material branch November 15, 2018 16:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
whats new Include this PR on the "What's New" page
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants