@@ -8,12 +8,18 @@ import { GodraysPass, GodraysPassParams, GodraysUpsampleQuality } from '../../sr
88
99THREE . ColorManagement . enabled = true ;
1010
11- interface GodraysPassParamsState extends Omit < GodraysPassParams , 'color' | 'blur' > {
11+ interface GodraysPassParamsState
12+ extends Omit < GodraysPassParams , 'color' | 'blur' | 'adaptiveSteps' | 'debugSteps' > {
1213 color : number ;
1314 enableBlur : boolean ;
1415 blurVariance : number ;
1516 blurKernelSize : KernelSize ;
1617 upsampleQuality : GodraysUpsampleQuality ;
18+ debugSteps : boolean ;
19+ useAdaptiveSteps : boolean ;
20+ stepSize : number ;
21+ minSteps : number ;
22+ maxSteps : number ;
1723}
1824
1925export class BaseDemo extends Demo {
@@ -26,11 +32,16 @@ export class BaseDemo extends Demo {
2632 color : new THREE . Color ( 0xffffff ) . getHex ( ) ,
2733 raymarchSteps : 60 ,
2834 enableBlur : true ,
29- blurVariance : 0.1 ,
30- blurKernelSize : KernelSize . SMALL ,
35+ blurVariance : 0.125 ,
36+ blurKernelSize : KernelSize . MEDIUM ,
3137 gammaCorrection : false ,
3238 resolutionScale : 0.5 ,
3339 upsampleQuality : GodraysUpsampleQuality . HIGH ,
40+ useAdaptiveSteps : false ,
41+ stepSize : 3.5 ,
42+ minSteps : 8 ,
43+ maxSteps : 125 ,
44+ debugSteps : false ,
3445 } ;
3546
3647 public composer : EffectComposer ;
@@ -40,16 +51,35 @@ export class BaseDemo extends Demo {
4051 this . composer = composer ;
4152 }
4253
43- public onParamChange = ( key : string , value : any ) = > {
44- this . params [ key ] = value ;
45-
46- this . godraysPass . setParams ( {
47- ... this . params ,
54+ public buildPassParams ( ) : Partial < GodraysPassParams > {
55+ const passParams : Partial < GodraysPassParams > = {
56+ density : this . params . density ,
57+ maxDensity : this . params . maxDensity ,
58+ distanceAttenuation : this . params . distanceAttenuation ,
4859 color : new THREE . Color ( this . params . color ) ,
4960 blur : this . params . enableBlur
5061 ? { variance : this . params . blurVariance , kernelSize : this . params . blurKernelSize }
5162 : false ,
52- } ) ;
63+ gammaCorrection : this . params . gammaCorrection ,
64+ resolutionScale : this . params . resolutionScale ,
65+ upsampleQuality : this . params . upsampleQuality ,
66+ debugSteps : this . params . debugSteps ,
67+ } ;
68+ if ( this . params . useAdaptiveSteps ) {
69+ passParams . adaptiveSteps = {
70+ stepSize : this . params . stepSize ,
71+ minSteps : this . params . minSteps ,
72+ maxSteps : this . params . maxSteps ,
73+ } ;
74+ } else {
75+ passParams . raymarchSteps = this . params . raymarchSteps ;
76+ }
77+ return passParams ;
78+ }
79+
80+ public onParamChange = ( key : string , value : any ) => {
81+ this . params [ key ] = value ;
82+ this . godraysPass . setParams ( this . buildPassParams ( ) ) ;
5383 } ;
5484
5585 registerOptions ( menu : GUI ) {
@@ -69,6 +99,11 @@ export class BaseDemo extends Demo {
6999 . onChange ( mkOnChange ( 'upsampleQuality' ) ) ;
70100 menu . add ( this . params , 'resolutionScale' , 0.1 , 1 , 0.05 ) . onChange ( mkOnChange ( 'resolutionScale' ) ) ;
71101 menu . add ( this . params , 'raymarchSteps' , 1 , 200 , 1 ) . onChange ( mkOnChange ( 'raymarchSteps' ) ) ;
102+ menu . add ( this . params , 'debugSteps' ) . onChange ( mkOnChange ( 'debugSteps' ) ) ;
103+ menu . add ( this . params , 'useAdaptiveSteps' ) . onChange ( mkOnChange ( 'useAdaptiveSteps' ) ) ;
104+ menu . add ( this . params , 'stepSize' , 0.1 , 50 , 0.1 ) . onChange ( mkOnChange ( 'stepSize' ) ) ;
105+ menu . add ( this . params , 'minSteps' , 1 , 50 , 1 ) . onChange ( mkOnChange ( 'minSteps' ) ) ;
106+ menu . add ( this . params , 'maxSteps' , 10 , 300 , 1 ) . onChange ( mkOnChange ( 'maxSteps' ) ) ;
72107 menu . add ( this . params , 'enableBlur' , true ) . onChange ( mkOnChange ( 'enableBlur' ) ) ;
73108 menu . add ( this . params , 'blurVariance' , 0.001 , 0.5 , 0.001 ) . onChange ( mkOnChange ( 'blurVariance' ) ) ;
74109 menu
0 commit comments