提交 1b940ff7 编写于 作者: B Ben Houston

add gamma GUI to webgl_shading_physical.html. But it is slightly incorrect...

add gamma GUI to webgl_shading_physical.html.  But it is slightly incorrect because the shaders are not properly recompiled upon gamma change.
上级 368b55f2
......@@ -88,6 +88,10 @@
shadowBias: -0.0002,
shadowDarkness: 0.3
}, gamma = {
gammaFactor: 2.0,
gammaInput: true,
gammaOutput: true
};
init();
......@@ -385,44 +389,70 @@
gui = new dat.GUI();
gui.add( shadowConfig, 'shadowCameraVisible' ).onChange( function() {
shadowGUI = gui.addFolder( "Shadow" );
shadowGUI.add( shadowConfig, 'shadowCameraVisible' ).onChange( function() {
sunLight.shadowCameraVisible = shadowConfig.shadowCameraVisible;
});
gui.add( shadowConfig, 'shadowCameraNear', 1, 1500 ).onChange( function() {
shadowGUI.add( shadowConfig, 'shadowCameraNear', 1, 1500 ).onChange( function() {
sunLight.shadowCamera.near = shadowConfig.shadowCameraNear;
sunLight.shadowCamera.updateProjectionMatrix();
});
gui.add( shadowConfig, 'shadowCameraFar', 1501, 5000 ).onChange( function() {
shadowGUI.add( shadowConfig, 'shadowCameraFar', 1501, 5000 ).onChange( function() {
sunLight.shadowCamera.far = shadowConfig.shadowCameraFar;
sunLight.shadowCamera.updateProjectionMatrix();
});
gui.add( shadowConfig, 'shadowCameraFov', 1, 120 ).onChange( function() {
shadowGUI.add( shadowConfig, 'shadowCameraFov', 1, 120 ).onChange( function() {
sunLight.shadowCamera.fov = shadowConfig.shadowCameraFov;
sunLight.shadowCamera.updateProjectionMatrix();
});
gui.add( shadowConfig, 'shadowBias', -0.01, 0.01 ).onChange( function() {
shadowGUI.add( shadowConfig, 'shadowBias', -0.01, 0.01 ).onChange( function() {
sunLight.shadowBias = shadowConfig.shadowBias;
});
gui.add( shadowConfig, 'shadowDarkness', 0, 1 ).onChange( function() {
shadowGUI.add( shadowConfig, 'shadowDarkness', 0, 1 ).onChange( function() {
});
shadowGUI.open();
gui.close();
gammaGUI = gui.addFolder( "Gamma" );
gammaGUI.add( gamma, 'gammaFactor', 0.1, 4.0 ).onChange( function() {
renderer.gammaFactor = gamma.gammaFactor;
});
gammaGUI.open();
/*
Not exposed because they are not easily dynamically updated - as all shaders need to be recompiled. -bhouston
gammaGUI.add( gamma, 'gammaInput', true ).onChange( function() {
renderer.gammaInput = gamma.gammaInput;
});
gammaGUI.add( gamma, 'gammaOutput', true ).onChange( function() {
renderer.gammaOutput = gamma.gammaOutput;
});*/
}
......
......@@ -40,7 +40,7 @@ vec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 poi
vec3 inputToLinear( in vec3 a ) {
#ifdef GAMMA_INPUT
return pow( a.rgb, vec3( float( GAMMA_FACTOR ) ) );
return pow( a, vec3( float( GAMMA_FACTOR ) ) );
#else
return a;
#endif
......@@ -48,7 +48,7 @@ vec3 inputToLinear( in vec3 a ) {
vec3 linearToOutput( in vec3 a ) {
#ifdef GAMMA_OUTPUT
return pow( a.rgb, vec3( 1.0 / float( GAMMA_FACTOR ) ) );
return pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );
#else
return a;
#endif
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册