@@ -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
3435import { 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