Skip to content

Commit bad300f

Browse files
committed
Shadows added to the Campfire Env.
1 parent 61ee27f commit bad300f

File tree

8 files changed

+688
-58
lines changed

8 files changed

+688
-58
lines changed

docs/js/procPages/ProcPage.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,8 @@ export class ProcPage {
296296

297297
let vidId = mediaData.src;
298298
let ytEmbed;
299-
if( typeof YT === 'undefined' ){
299+
if( typeof YT === 'undefined' || typeof YT.Player === 'undefined' ){
300+
// Fallback to iframe if YT API is not loaded
300301
ytEmbed = document.createElement('iframe');
301302
ytEmbed.src = "https://www.youtube-nocookie.com/embed/"+vidId;
302303
ytEmbed.title = mediaData.alt;

docs/js/pxlNav.esm.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Binary file not shown.

docs/js/pxlRooms/CampfireEnvironment/CampfireEnvironment.js

Lines changed: 84 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ import {
2828
DoubleSide, FrontSide,
2929
UniformsUtils, UniformsLib,
3030
SRGBColorSpace, LinearSRGBColorSpace,
31-
AmbientLight
31+
AmbientLight,
32+
MeshPhongMaterial
3233
} from "../../libs/three/three.module.min.js";
3334

3435
import { RoomEnvironment, pxlShaders, pxlEffects } from "../../pxlNav.esm.js";
@@ -394,6 +395,29 @@ export class CampfireEnvironment extends RoomEnvironment{
394395

395396
// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
396397

398+
399+
let lightTypeList = Object.keys( this.lightList );
400+
if( lightTypeList.length>0){
401+
lightTypeList.forEach( (type)=>{
402+
this.lightList[type].forEach( (light)=>{
403+
if( type == "DirectionalLight" ){
404+
light.castShadow=false;
405+
}else if( type == "PointLight" ){
406+
light.shadow.radius = 5;
407+
light.shadow.receiveShadow = true;
408+
light.shadow.mapSize.width = 512; // default
409+
light.shadow.mapSize.height = 512; // default
410+
light.shadow.camera.near = 0.5; // default
411+
light.shadow.camera.far = 35; // default
412+
light.shadow.bias = .025; // default
413+
light.shadow.radius = 5; // default
414+
}
415+
});
416+
});
417+
}
418+
419+
// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
420+
397421
// Log replicator time!
398422
// Making some shader materials for our burny burny logs.
399423
// Lets get them crackling in that flame!
@@ -455,9 +479,17 @@ export class CampfireEnvironment extends RoomEnvironment{
455479

456480
let curMesh = this.pxlAnim.getMesh( animKey );
457481
if(curMesh){
482+
483+
let envGroundSettings = {
484+
//'shadows' : this.mobile ? false : true,
485+
}
486+
487+
curMesh.castShadow = true;
488+
curMesh.receiveShadow = true;
489+
458490
let curMtl = curMesh.material;
459491
curMtl.side = DoubleSide;
460-
let newSkinnedMtl = this.setSkinnedMaterial( curMesh, rabbitDruidVert(), rabbitDruidFrag() );
492+
let newSkinnedMtl = this.setSkinnedMaterial( curMesh, rabbitDruidVert(envGroundSettings), rabbitDruidFrag(envGroundSettings) );
461493
this.materialList[ "RabbitDruidA" ] = newSkinnedMtl;
462494
}
463495

@@ -469,10 +501,14 @@ export class CampfireEnvironment extends RoomEnvironment{
469501

470502
setSkinnedMaterial( bindObj, vertShader=null, fragShader=null ){
471503

504+
// Enable shadows for non-mobile devices
505+
let shadowMapUniforms = this.mobile ? {} : UniformsLib[ "shadowmap" ];
506+
472507
let skinnedMtlUniforms = UniformsUtils.merge(
473508
[
474509
UniformsLib['common'],
475510
UniformsLib['lights'],
511+
shadowMapUniforms,
476512
{
477513
'diffuseTexture' : { type:'t', value: null },
478514
'areTexture' : { type:'t', value: null },
@@ -513,25 +549,31 @@ export class CampfireEnvironment extends RoomEnvironment{
513549
// -- Environment Ground Material - -- --
514550
// -- -- -- -- -- -- -- -- -- -- -- -- -- --
515551

552+
// Enable shadows for non-mobile devices
553+
let shadowMapUniforms = this.mobile ? {} : UniformsLib[ "shadowmap" ];
554+
let hasShadowSettings = {
555+
'shadows' : this.mobile ? false : true,
556+
}
557+
516558
let envGroundUniforms = UniformsUtils.merge(
517-
[
518-
UniformsLib[ "common" ],
519-
UniformsLib[ "lights" ],
520-
UniformsLib[ "shadowmap" ],
521-
{
522-
'diffuse' : { type:'t', value: null },
523-
'dirtDiffuse' : { type:'t', value: null },
524-
'crackedDirtDiffuse' : { type:'t', value: null },
525-
'hillDiffuse' : { type:'t', value: null },
526-
'mossDiffuse' : { type:'t', value: null },
527-
'grassDiffuse' : { type:'t', value: null },
528-
'dataDiffuse' : { type:'t', value: null },
529-
'fogColor': { type:'c', value: null },
530-
'noiseTexture' : { type:'t', value: null },
531-
'uniformNoise' : { type:'t', value: null },
532-
}
533-
]
534-
);
559+
[
560+
UniformsLib[ "common" ],
561+
UniformsLib[ "lights" ],
562+
shadowMapUniforms,
563+
{
564+
'diffuse' : { type:'t', value: null },
565+
'dirtDiffuse' : { type:'t', value: null },
566+
'crackedDirtDiffuse' : { type:'t', value: null },
567+
'hillDiffuse' : { type:'t', value: null },
568+
'mossDiffuse' : { type:'t', value: null },
569+
'grassDiffuse' : { type:'t', value: null },
570+
'dataDiffuse' : { type:'t', value: null },
571+
'fogColor': { type:'c', value: null },
572+
'noiseTexture' : { type:'t', value: null },
573+
'uniformNoise' : { type:'t', value: null },
574+
}
575+
]
576+
);
535577

536578
envGroundUniforms.fogColor.value = this.fogColor;
537579
envGroundUniforms.diffuse.value = this.pxlUtils.loadTexture( this.assetPath+"EnvGround_Diffuse.webp", null, {'encoding':SRGBColorSpace} );
@@ -546,9 +588,16 @@ export class CampfireEnvironment extends RoomEnvironment{
546588
envGroundUniforms.noiseTexture.value = this.cloud3dTexture;
547589
envGroundUniforms.uniformNoise.value = this.pxlUtils.loadTexture( this.assetPath+"Noise_UniformWebbing.jpg", null, {'encoding':LinearSRGBColorSpace} );
548590

549-
let environmentGroundMat=this.pxlFile.pxlShaderBuilder( envGroundUniforms, envGroundVert(), envGroundFrag(4) );
591+
var defines = {
592+
'USE_MAP' : "",
593+
};
594+
595+
let environmentGroundMat=this.pxlFile.pxlShaderBuilder( envGroundUniforms, envGroundVert(hasShadowSettings), envGroundFrag(hasShadowSettings), defines );
550596
environmentGroundMat.lights= true;
551597
environmentGroundMat.transparent=false;
598+
environmentGroundMat.meshSettings = {
599+
'receiveShadow' : true,
600+
};
552601

553602
envGroundUniforms.uniformNoise.value.wrapS = RepeatWrapping;
554603
envGroundUniforms.uniformNoise.value.wrapT = RepeatWrapping;
@@ -644,7 +693,9 @@ export class CampfireEnvironment extends RoomEnvironment{
644693

645694
let grassClusterUniforms = UniformsUtils.merge(
646695
[
696+
UniformsLib[ "common" ],
647697
UniformsLib[ "lights" ],
698+
shadowMapUniforms,
648699
{
649700
'noiseTexture' : { type:'t', value: null },
650701
'fogColor' : { type: "c", value: this.fogColor },
@@ -653,7 +704,7 @@ export class CampfireEnvironment extends RoomEnvironment{
653704
grassClusterUniforms.noiseTexture.value = this.pxlUtils.loadTexture( this.assetPath+"Noise_UniformWebbing.jpg", null, {'encoding':SRGBColorSpace} );
654705

655706

656-
let grassMat=this.pxlFile.pxlShaderBuilder( grassClusterUniforms, grassClusterVert(), grassClusterFrag() );
707+
let grassMat=this.pxlFile.pxlShaderBuilder( grassClusterUniforms, grassClusterVert(hasShadowSettings), grassClusterFrag(hasShadowSettings) );
657708
grassMat.side = FrontSide;
658709
grassMat.lights = true;
659710
grassMat.transparent = false;
@@ -668,8 +719,9 @@ export class CampfireEnvironment extends RoomEnvironment{
668719

669720
let grassCardsAUniforms = UniformsUtils.merge(
670721
[
671-
UniformsLib[ "lights" ],
672-
/*UniformsLib[ "shadowmap" ],*/
722+
UniformsLib[ "common" ],
723+
UniformsLib[ "lights" ],
724+
shadowMapUniforms,
673725
{
674726
'diffuse' : { type:'t', value: null },
675727
'alphaMap' : { type:'t', value: null },
@@ -689,15 +741,19 @@ export class CampfireEnvironment extends RoomEnvironment{
689741
'addCampfire' : true,
690742
'depthScalar': 0.003,
691743
'fogDepthScalar': 0.8,
744+
'shadows' : this.mobile ? false : true,
692745
}
693746

694-
let grassCardsMat=this.pxlFile.pxlShaderBuilder( grassCardsAUniforms, instPlantsVert(), instPlantsFrag( grassCardSettings ) );
747+
let grassCardsMat=this.pxlFile.pxlShaderBuilder( grassCardsAUniforms, instPlantsVert( hasShadowSettings ), instPlantsFrag( grassCardSettings ) );
695748
grassCardsMat.side = DoubleSide;
696749
grassCardsMat.lights = true;
697750
grassCardsMat.transparent = false;
698-
//grassCardsMat.alphaTest = .5;
699-
//grassCardsMat.blending = ;
700751

752+
grassCardSettings['shadow'] = false; // Disable shadow for the far grass cards
753+
let grassCardsFarMat=this.pxlFile.pxlShaderBuilder( grassCardsAUniforms, instPlantsVert( {} ), instPlantsFrag( grassCardSettings ) );
754+
grassCardsFarMat.side = DoubleSide;
755+
grassCardsFarMat.lights = true;
756+
grassCardsFarMat.transparent = false;
701757

702758

703759
// -- -- --
@@ -745,6 +801,7 @@ export class CampfireEnvironment extends RoomEnvironment{
745801
//this.materialList[ "mushroomA_lod1_geo" ] = grassMat;
746802
this.materialList[ "grassCardsA_lod0_geo" ] = grassCardsMat;
747803
this.materialList[ "grassCardsA_lod1_geo" ] = grassCardsMat;
804+
this.materialList[ "grassCardsA_lod2_geo" ] = grassCardsFarMat;
748805

749806

750807
//

0 commit comments

Comments
 (0)