|
@@ -80,6 +80,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
// internal state cache
|
|
|
|
|
|
_currentProgram = null,
|
|
|
+ _currentRenderTarget = null,
|
|
|
_currentFramebuffer = null,
|
|
|
_currentMaterialId = - 1,
|
|
|
_currentGeometryProgram = '',
|
|
@@ -217,6 +218,12 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
//
|
|
|
|
|
|
+ function getTargetPixelRatio() {
|
|
|
+
|
|
|
+ return _currentRenderTarget === null ? pixelRatio : 1;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
function glClearColor( r, g, b, a ) {
|
|
|
|
|
|
if ( _premultipliedAlpha === true ) {
|
|
@@ -843,7 +850,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( material.wireframe === true ) {
|
|
|
|
|
|
- state.setLineWidth( material.wireframeLinewidth * pixelRatio );
|
|
|
+ state.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );
|
|
|
renderer.setMode( _gl.LINES );
|
|
|
|
|
|
} else {
|
|
@@ -873,7 +880,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material
|
|
|
|
|
|
- state.setLineWidth( lineWidth * pixelRatio );
|
|
|
+ state.setLineWidth( lineWidth * getTargetPixelRatio() );
|
|
|
|
|
|
if ( object instanceof THREE.LineSegments ) {
|
|
|
|
|
@@ -1977,7 +1984,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
uniforms.psColor.value = material.color;
|
|
|
uniforms.opacity.value = material.opacity;
|
|
|
- uniforms.size.value = material.size * pixelRatio;
|
|
|
+ uniforms.size.value = material.size * getTargetPixelRatio();
|
|
|
uniforms.scale.value = _canvas.height / 2.0; // TODO: Cache this.
|
|
|
|
|
|
uniforms.map.value = material.map;
|
|
@@ -3358,6 +3365,8 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
this.setRenderTarget = function ( renderTarget ) {
|
|
|
|
|
|
+ _currentRenderTarget = renderTarget;
|
|
|
+
|
|
|
if ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {
|
|
|
|
|
|
setupRenderTarget( renderTarget );
|