Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
6ca97c79
T
three.js
项目概览
Ablesons
/
three.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
three.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6ca97c79
编写于
1月 24, 2016
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #8006 from Mugen87/dev
#7952 New Stencil Buffer Management
上级
48d2ab00
85733da4
变更
19
隐藏空白更改
内联
并排
Showing
19 changed file
with
99 addition
and
94 deletion
+99
-94
examples/js/postprocessing/AdaptiveToneMappingPass.js
examples/js/postprocessing/AdaptiveToneMappingPass.js
+1
-0
examples/js/postprocessing/BloomPass.js
examples/js/postprocessing/BloomPass.js
+1
-5
examples/js/postprocessing/BokehPass.js
examples/js/postprocessing/BokehPass.js
+5
-5
examples/js/postprocessing/ClearPass.js
examples/js/postprocessing/ClearPass.js
+4
-1
examples/js/postprocessing/DotScreenPass.js
examples/js/postprocessing/DotScreenPass.js
+2
-1
examples/js/postprocessing/EffectComposer.js
examples/js/postprocessing/EffectComposer.js
+5
-20
examples/js/postprocessing/FilmPass.js
examples/js/postprocessing/FilmPass.js
+2
-1
examples/js/postprocessing/GlitchPass.js
examples/js/postprocessing/GlitchPass.js
+14
-12
examples/js/postprocessing/MaskPass.js
examples/js/postprocessing/MaskPass.js
+22
-28
examples/js/postprocessing/RenderPass.js
examples/js/postprocessing/RenderPass.js
+1
-1
examples/js/postprocessing/SavePass.js
examples/js/postprocessing/SavePass.js
+2
-1
examples/js/postprocessing/ShaderPass.js
examples/js/postprocessing/ShaderPass.js
+2
-1
examples/js/postprocessing/TexturePass.js
examples/js/postprocessing/TexturePass.js
+2
-2
examples/webgl_postprocessing_advanced.html
examples/webgl_postprocessing_advanced.html
+17
-13
examples/webgl_postprocessing_masking.html
examples/webgl_postprocessing_masking.html
+4
-2
src/loaders/Loader.js
src/loaders/Loader.js
+2
-0
src/loaders/MaterialLoader.js
src/loaders/MaterialLoader.js
+2
-0
src/materials/Material.js
src/materials/Material.js
+6
-0
src/renderers/WebGLRenderer.js
src/renderers/WebGLRenderer.js
+5
-1
未找到文件。
examples/js/postprocessing/AdaptiveToneMappingPass.js
浏览文件 @
6ca97c79
...
...
@@ -163,6 +163,7 @@ THREE.AdaptiveToneMappingPass.prototype = {
}
this
.
quad
.
material
=
this
.
materialToneMap
;
this
.
quad
.
material
.
stencilTest
=
maskActive
;
this
.
materialToneMap
.
uniforms
.
tDiffuse
.
value
=
readBuffer
;
renderer
.
render
(
this
.
scene
,
this
.
camera
,
writeBuffer
,
this
.
clear
);
...
...
examples/js/postprocessing/BloomPass.js
浏览文件 @
6ca97c79
...
...
@@ -78,8 +78,6 @@ THREE.BloomPass.prototype = {
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
,
maskActive
)
{
if
(
maskActive
)
renderer
.
context
.
disable
(
renderer
.
context
.
STENCIL_TEST
);
// Render quad with blured scene into texture (convolution pass 1)
this
.
quad
.
material
=
this
.
materialConvolution
;
...
...
@@ -100,13 +98,11 @@ THREE.BloomPass.prototype = {
// Render original scene with superimposed blur to texture
this
.
quad
.
material
=
this
.
materialCopy
;
this
.
quad
.
material
.
stencilTest
=
maskActive
;
this
.
copyUniforms
[
"
tDiffuse
"
].
value
=
this
.
renderTargetY
;
if
(
maskActive
)
renderer
.
context
.
enable
(
renderer
.
context
.
STENCIL_TEST
);
renderer
.
render
(
this
.
scene
,
this
.
camera
,
readBuffer
,
this
.
clear
);
}
};
...
...
examples/js/postprocessing/BokehPass.js
浏览文件 @
6ca97c79
...
...
@@ -37,7 +37,7 @@ THREE.BokehPass = function ( scene, camera, params ) {
console
.
error
(
"
THREE.BokehPass relies on THREE.BokehShader
"
);
}
var
bokehShader
=
THREE
.
BokehShader
;
var
bokehUniforms
=
THREE
.
UniformsUtils
.
clone
(
bokehShader
.
uniforms
);
...
...
@@ -63,8 +63,8 @@ THREE.BokehPass = function ( scene, camera, params ) {
this
.
camera2
=
new
THREE
.
OrthographicCamera
(
-
1
,
1
,
1
,
-
1
,
0
,
1
);
this
.
scene2
=
new
THREE
.
Scene
();
this
.
quad
2
=
new
THREE
.
Mesh
(
new
THREE
.
PlaneBufferGeometry
(
2
,
2
),
null
);
this
.
scene2
.
add
(
this
.
quad
2
);
this
.
quad
=
new
THREE
.
Mesh
(
new
THREE
.
PlaneBufferGeometry
(
2
,
2
),
null
);
this
.
scene2
.
add
(
this
.
quad
);
};
...
...
@@ -72,7 +72,8 @@ THREE.BokehPass.prototype = {
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
,
maskActive
)
{
this
.
quad2
.
material
=
this
.
materialBokeh
;
this
.
quad
.
material
=
this
.
materialBokeh
;
this
.
quad
.
material
.
stencilTest
=
maskActive
;
// Render depth into texture
...
...
@@ -99,4 +100,3 @@ THREE.BokehPass.prototype = {
}
};
examples/js/postprocessing/ClearPass.js
浏览文件 @
6ca97c79
...
...
@@ -10,11 +10,14 @@ THREE.ClearPass = function () {
THREE
.
ClearPass
.
prototype
=
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
)
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
,
maskActive
)
{
renderer
.
setRenderTarget
(
readBuffer
);
renderer
.
clear
();
renderer
.
setRenderTarget
(
writeBuffer
);
renderer
.
clear
();
}
};
examples/js/postprocessing/DotScreenPass.js
浏览文件 @
6ca97c79
...
...
@@ -38,12 +38,13 @@ THREE.DotScreenPass = function ( center, angle, scale ) {
THREE
.
DotScreenPass
.
prototype
=
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
)
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
,
maskActive
)
{
this
.
uniforms
[
"
tDiffuse
"
].
value
=
readBuffer
;
this
.
uniforms
[
"
tSize
"
].
value
.
set
(
readBuffer
.
width
,
readBuffer
.
height
);
this
.
quad
.
material
=
this
.
material
;
this
.
quad
.
material
.
stencilTest
=
maskActive
;
if
(
this
.
renderToScreen
)
{
...
...
examples/js/postprocessing/EffectComposer.js
浏览文件 @
6ca97c79
...
...
@@ -24,13 +24,10 @@ THREE.EffectComposer = function ( renderer, renderTarget ) {
this
.
writeBuffer
=
this
.
renderTarget1
;
this
.
readBuffer
=
this
.
renderTarget2
;
this
.
passes
=
[];
if
(
THREE
.
CopyShader
===
undefined
)
console
.
error
(
"
THREE.EffectComposer relies on THREE.CopyShader
"
);
this
.
copyPass
=
new
THREE
.
ShaderPass
(
THREE
.
CopyShader
);
if
(
THREE
.
MaskPass
===
undefined
)
console
.
error
(
"
THREE.EffectComposer relies on THREE.MaskPass
"
);
this
.
passes
=
[];
};
THREE
.
EffectComposer
.
prototype
=
{
...
...
@@ -57,11 +54,11 @@ THREE.EffectComposer.prototype = {
render
:
function
(
delta
)
{
var
maskActive
=
false
;
this
.
writeBuffer
=
this
.
renderTarget1
;
this
.
readBuffer
=
this
.
renderTarget2
;
var
maskActive
=
false
;
var
pass
,
i
,
il
=
this
.
passes
.
length
;
for
(
i
=
0
;
i
<
il
;
i
++
)
{
...
...
@@ -74,18 +71,6 @@ THREE.EffectComposer.prototype = {
if
(
pass
.
needsSwap
)
{
if
(
maskActive
)
{
var
context
=
this
.
renderer
.
context
;
context
.
stencilFunc
(
context
.
NOTEQUAL
,
1
,
0xffffffff
);
this
.
copyPass
.
render
(
this
.
renderer
,
this
.
writeBuffer
,
this
.
readBuffer
,
delta
);
context
.
stencilFunc
(
context
.
EQUAL
,
1
,
0xffffffff
);
}
this
.
swapBuffers
();
}
...
...
examples/js/postprocessing/FilmPass.js
浏览文件 @
6ca97c79
...
...
@@ -39,12 +39,13 @@ THREE.FilmPass = function ( noiseIntensity, scanlinesIntensity, scanlinesCount,
THREE
.
FilmPass
.
prototype
=
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
)
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
,
maskActive
)
{
this
.
uniforms
[
"
tDiffuse
"
].
value
=
readBuffer
;
this
.
uniforms
[
"
time
"
].
value
+=
delta
;
this
.
quad
.
material
=
this
.
material
;
this
.
quad
.
material
.
stencilTest
=
maskActive
;
if
(
this
.
renderToScreen
)
{
...
...
examples/js/postprocessing/GlitchPass.js
浏览文件 @
6ca97c79
/**
*/
THREE
.
GlitchPass
=
function
(
dt_size
)
{
if
(
THREE
.
DigitalGlitch
===
undefined
)
console
.
error
(
"
THREE.GlitchPass relies on THREE.DigitalGlitch
"
);
var
shader
=
THREE
.
DigitalGlitch
;
this
.
uniforms
=
THREE
.
UniformsUtils
.
clone
(
shader
.
uniforms
);
if
(
dt_size
==
undefined
)
dt_size
=
64
;
this
.
uniforms
[
"
tDisp
"
].
value
=
this
.
generateHeightmap
(
dt_size
);
this
.
material
=
new
THREE
.
ShaderMaterial
(
{
uniforms
:
this
.
uniforms
,
...
...
@@ -31,21 +31,21 @@ THREE.GlitchPass = function ( dt_size ) {
this
.
quad
=
new
THREE
.
Mesh
(
new
THREE
.
PlaneBufferGeometry
(
2
,
2
),
null
);
this
.
scene
.
add
(
this
.
quad
);
this
.
goWild
=
false
;
this
.
curF
=
0
;
this
.
generateTrigger
();
};
THREE
.
GlitchPass
.
prototype
=
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
)
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
,
maskActive
)
{
this
.
uniforms
[
"
tDiffuse
"
].
value
=
readBuffer
;
this
.
uniforms
[
'
seed
'
].
value
=
Math
.
random
();
//default seeding
this
.
uniforms
[
'
byp
'
].
value
=
0
;
if
(
this
.
curF
%
this
.
randX
==
0
||
this
.
goWild
==
true
)
{
this
.
uniforms
[
'
amount
'
].
value
=
Math
.
random
()
/
30
;
...
...
@@ -72,8 +72,10 @@ THREE.GlitchPass.prototype = {
}
this
.
curF
++
;
this
.
quad
.
material
=
this
.
material
;
this
.
quad
.
material
.
stencilTest
=
maskActive
;
if
(
this
.
renderToScreen
)
{
renderer
.
render
(
this
.
scene
,
this
.
camera
);
...
...
@@ -94,7 +96,7 @@ THREE.GlitchPass.prototype = {
var
data_arr
=
new
Float32Array
(
dt_size
*
dt_size
*
3
);
var
length
=
dt_size
*
dt_size
;
for
(
var
i
=
0
;
i
<
length
;
i
++
)
{
var
val
=
THREE
.
Math
.
randFloat
(
0
,
1
);
...
...
@@ -103,7 +105,7 @@ THREE.GlitchPass.prototype = {
data_arr
[
i
*
3
+
2
]
=
val
;
}
var
texture
=
new
THREE
.
DataTexture
(
data_arr
,
dt_size
,
dt_size
,
THREE
.
RGBFormat
,
THREE
.
FloatType
);
texture
.
needsUpdate
=
true
;
return
texture
;
...
...
examples/js/postprocessing/MaskPass.js
浏览文件 @
6ca97c79
...
...
@@ -8,7 +8,7 @@ THREE.MaskPass = function ( scene, camera ) {
this
.
camera
=
camera
;
this
.
enabled
=
true
;
this
.
clear
=
tru
e
;
this
.
clear
=
fals
e
;
this
.
needsSwap
=
false
;
this
.
inverse
=
false
;
...
...
@@ -17,20 +17,16 @@ THREE.MaskPass = function ( scene, camera ) {
THREE
.
MaskPass
.
prototype
=
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
)
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
,
maskActive
)
{
var
context
=
renderer
.
context
;
// don't update color or depth
context
.
colorMask
(
false
,
false
,
false
,
false
);
context
.
depthMask
(
false
);
var
writeValue
,
clearValue
;
// set up stencil
var
context
=
renderer
.
context
;
var
state
=
renderer
.
state
;
var
writeValue
,
clearValue
;
// check inverse masking
if
(
this
.
inverse
)
{
if
(
this
.
inverse
===
true
)
{
writeValue
=
0
;
clearValue
=
1
;
...
...
@@ -42,26 +38,28 @@ THREE.MaskPass.prototype = {
}
context
.
enable
(
context
.
STENCIL_TEST
);
context
.
stencilOp
(
context
.
REPLACE
,
context
.
REPLACE
,
context
.
REPLACE
);
context
.
stencilFunc
(
context
.
ALWAYS
,
writeValue
,
0xffffffff
);
context
.
clearStencil
(
clearValue
);
// setup WebGL state to prepare the stencil test
state
.
clearStencil
(
clearValue
);
state
.
setStencilFunc
(
context
.
ALWAYS
,
writeValue
,
0xffffffff
);
state
.
setStencilOp
(
context
.
REPLACE
,
context
.
REPLACE
,
context
.
REPLACE
);
// clear the stencil buffer before drawing
renderer
.
clearTarget
(
readBuffer
,
false
,
false
,
true
);
renderer
.
clearTarget
(
writeBuffer
,
false
,
false
,
true
);
// draw into the stencil buffer
renderer
.
render
(
this
.
scene
,
this
.
camera
,
readBuffer
,
this
.
clear
);
renderer
.
render
(
this
.
scene
,
this
.
camera
,
writeBuffer
,
this
.
clear
);
// re-enable update of color and depth
context
.
colorMask
(
true
,
true
,
true
,
true
);
context
.
depthMask
(
true
);
// setup WebGL state for upcoming stencil tests.
// only render where stencil is set to 1
context
.
stencilFunc
(
context
.
EQUAL
,
1
,
0xffffffff
);
// draw if == 1
context
.
stencilOp
(
context
.
KEEP
,
context
.
KEEP
,
context
.
KEEP
);
state
.
setStencilFunc
(
context
.
EQUAL
,
1
,
0xffffffff
);
// draw if == 1
state
.
setStencilOp
(
context
.
KEEP
,
context
.
KEEP
,
context
.
KEEP
);
}
};
...
...
@@ -75,11 +73,7 @@ THREE.ClearMaskPass = function () {
THREE
.
ClearMaskPass
.
prototype
=
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
)
{
var
context
=
renderer
.
context
;
context
.
disable
(
context
.
STENCIL_TEST
);
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
,
maskActive
)
{
}
...
...
examples/js/postprocessing/RenderPass.js
浏览文件 @
6ca97c79
...
...
@@ -23,7 +23,7 @@ THREE.RenderPass = function ( scene, camera, overrideMaterial, clearColor, clear
THREE
.
RenderPass
.
prototype
=
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
)
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
,
maskActive
)
{
this
.
scene
.
overrideMaterial
=
this
.
overrideMaterial
;
...
...
examples/js/postprocessing/SavePass.js
浏览文件 @
6ca97c79
...
...
@@ -45,7 +45,7 @@ THREE.SavePass = function ( renderTarget ) {
THREE
.
SavePass
.
prototype
=
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
)
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
,
maskActive
)
{
if
(
this
.
uniforms
[
this
.
textureID
]
)
{
...
...
@@ -54,6 +54,7 @@ THREE.SavePass.prototype = {
}
this
.
quad
.
material
=
this
.
material
;
this
.
quad
.
material
.
stencilTest
=
maskActive
;
renderer
.
render
(
this
.
scene
,
this
.
camera
,
this
.
renderTarget
,
this
.
clear
);
...
...
examples/js/postprocessing/ShaderPass.js
浏览文件 @
6ca97c79
...
...
@@ -45,7 +45,7 @@ THREE.ShaderPass = function( shader, textureID ) {
THREE
.
ShaderPass
.
prototype
=
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
)
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
,
maskActive
)
{
if
(
this
.
uniforms
[
this
.
textureID
]
)
{
...
...
@@ -54,6 +54,7 @@ THREE.ShaderPass.prototype = {
}
this
.
quad
.
material
=
this
.
material
;
this
.
quad
.
material
.
stencilTest
=
maskActive
;
if
(
this
.
renderToScreen
)
{
...
...
examples/js/postprocessing/TexturePass.js
浏览文件 @
6ca97c79
...
...
@@ -25,7 +25,6 @@ THREE.TexturePass = function ( texture, opacity ) {
this
.
enabled
=
true
;
this
.
needsSwap
=
false
;
this
.
camera
=
new
THREE
.
OrthographicCamera
(
-
1
,
1
,
1
,
-
1
,
0
,
1
);
this
.
scene
=
new
THREE
.
Scene
();
...
...
@@ -36,9 +35,10 @@ THREE.TexturePass = function ( texture, opacity ) {
THREE
.
TexturePass
.
prototype
=
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
)
{
render
:
function
(
renderer
,
writeBuffer
,
readBuffer
,
delta
,
maskActive
)
{
this
.
quad
.
material
=
this
.
material
;
this
.
quad
.
material
.
stencilTest
=
maskActive
;
renderer
.
render
(
this
.
scene
,
this
.
camera
,
readBuffer
);
...
...
examples/webgl_postprocessing_advanced.html
浏览文件 @
6ca97c79
...
...
@@ -61,6 +61,7 @@
<script
src=
"js/postprocessing/TexturePass.js"
></script>
<script
src=
"js/postprocessing/ShaderPass.js"
></script>
<script
src=
"js/postprocessing/MaskPass.js"
></script>
<script
src=
"js/postprocessing/ClearPass.js"
></script>
<script
src=
"js/Detector.js"
></script>
<script
src=
"js/libs/stats.min.js"
></script>
...
...
@@ -157,7 +158,7 @@
stats
=
new
Stats
();
stats
.
domElement
.
style
.
position
=
'
absolute
'
;
stats
.
domElement
.
style
.
top
=
'
0px
'
;
//
container.appendChild( stats.domElement );
container
.
appendChild
(
stats
.
domElement
);
//
...
...
@@ -193,18 +194,16 @@
effectColorify1
.
uniforms
[
'
color
'
].
value
.
setRGB
(
1
,
0.8
,
0.8
);
effectColorify2
.
uniforms
[
'
color
'
].
value
.
setRGB
(
1
,
0.75
,
0.5
);
effectColorify1
.
needsSwap
=
false
;
var
clear
=
new
THREE
.
ClearPass
();
var
clearMask
=
new
THREE
.
ClearMaskPass
();
var
renderMask
=
new
THREE
.
MaskPass
(
sceneModel
,
cameraPerspective
);
var
renderMaskInverse
=
new
THREE
.
MaskPass
(
sceneModel
,
cameraPerspective
);
renderMaskInverse
.
inverse
=
true
;
//effectFilm.renderToScreen = true;
//effectFilmBW.renderToScreen = true;
//effectDotScreen.renderToScreen = true;
//effectBleach.renderToScreen = true;
effectVignette
.
renderToScreen
=
true
;
//effectCopy.renderToScreen = true;
//
...
...
@@ -227,6 +226,7 @@
composerScene
=
new
THREE
.
EffectComposer
(
renderer
,
new
THREE
.
WebGLRenderTarget
(
rtWidth
*
2
,
rtHeight
*
2
,
rtParameters
)
);
composerScene
.
addPass
(
clear
);
composerScene
.
addPass
(
renderBackground
);
composerScene
.
addPass
(
renderModel
);
composerScene
.
addPass
(
renderMaskInverse
);
...
...
@@ -238,20 +238,22 @@
renderScene
=
new
THREE
.
TexturePass
(
composerScene
.
renderTarget2
);
//
//
bottom left
composer1
=
new
THREE
.
EffectComposer
(
renderer
,
new
THREE
.
WebGLRenderTarget
(
rtWidth
,
rtHeight
,
rtParameters
)
);
composer1
.
addPass
(
clear
);
composer1
.
addPass
(
renderScene
);
//composer1.addPass( renderMask );
composer1
.
addPass
(
effectFilmBW
);
//composer1.addPass( clearMask );
composer1
.
addPass
(
effectVignette
);
//
//
bottom right
composer2
=
new
THREE
.
EffectComposer
(
renderer
,
new
THREE
.
WebGLRenderTarget
(
rtWidth
,
rtHeight
,
rtParameters
)
);
composer2
.
addPass
(
clear
);
composer2
.
addPass
(
renderScene
);
composer2
.
addPass
(
effectDotScreen
);
composer2
.
addPass
(
renderMask
);
...
...
@@ -262,10 +264,11 @@
composer2
.
addPass
(
clearMask
);
composer2
.
addPass
(
effectVignette
);
//
//
top left
composer3
=
new
THREE
.
EffectComposer
(
renderer
,
new
THREE
.
WebGLRenderTarget
(
rtWidth
,
rtHeight
,
rtParameters
)
);
composer3
.
addPass
(
clear
);
composer3
.
addPass
(
renderScene
);
//composer3.addPass( renderMask );
composer3
.
addPass
(
effectSepia
);
...
...
@@ -273,10 +276,11 @@
//composer3.addPass( clearMask );
composer3
.
addPass
(
effectVignette
);
//
//
top right
composer4
=
new
THREE
.
EffectComposer
(
renderer
,
new
THREE
.
WebGLRenderTarget
(
rtWidth
,
rtHeight
,
rtParameters
)
);
composer4
.
addPass
(
clear
);
composer4
.
addPass
(
renderScene
);
//composer4.addPass( renderMask );
composer4
.
addPass
(
effectBloom
);
...
...
@@ -287,8 +291,6 @@
//
//onWindowResize();
renderScene
.
uniforms
[
"
tDiffuse
"
].
value
=
composerScene
.
renderTarget2
;
window
.
addEventListener
(
'
resize
'
,
onWindowResize
,
false
);
...
...
@@ -341,7 +343,9 @@
shininess
:
20
,
map
:
new
THREE
.
TextureLoader
().
load
(
"
obj/leeperrysmith/Map-COL.jpg
"
),
normalMap
:
new
THREE
.
TextureLoader
().
load
(
"
obj/leeperrysmith/Infinite-Level_02_Tangent_SmoothUV.jpg
"
),
normalScale
:
new
THREE
.
Vector2
(
0.75
,
0.75
)
normalScale
:
new
THREE
.
Vector2
(
0.75
,
0.75
),
stencilTest
:
true
,
stencilWrite
:
true
}
);
...
...
examples/webgl_postprocessing_masking.html
浏览文件 @
6ca97c79
...
...
@@ -47,10 +47,12 @@
var
scene1
=
new
THREE
.
Scene
();
var
scene2
=
new
THREE
.
Scene
();
box
=
new
THREE
.
Mesh
(
new
THREE
.
BoxGeometry
(
4
,
4
,
4
)
);
var
maskMaterial
=
new
THREE
.
MeshBasicMaterial
(
{
stencilTest
:
true
,
stencilWrite
:
true
,
colorWrite
:
false
,
depthWrite
:
false
}
);
box
=
new
THREE
.
Mesh
(
new
THREE
.
BoxGeometry
(
4
,
4
,
4
),
maskMaterial
);
scene1
.
add
(
box
);
torus
=
new
THREE
.
Mesh
(
new
THREE
.
TorusGeometry
(
3
,
1
,
16
,
32
)
);
torus
=
new
THREE
.
Mesh
(
new
THREE
.
TorusGeometry
(
3
,
1
,
16
,
32
)
,
maskMaterial
);
scene2
.
add
(
torus
);
renderer
=
new
THREE
.
WebGLRenderer
(
{
antialias
:
false
}
);
...
...
src/loaders/Loader.js
浏览文件 @
6ca97c79
...
...
@@ -229,6 +229,8 @@ THREE.Loader.prototype = {
break
;
case
'
depthTest
'
:
case
'
depthWrite
'
:
case
'
stencilTest
'
:
case
'
stencilWrite
'
:
case
'
colorWrite
'
:
case
'
opacity
'
:
case
'
reflectivity
'
:
...
...
src/loaders/MaterialLoader.js
浏览文件 @
6ca97c79
...
...
@@ -70,6 +70,8 @@ THREE.MaterialLoader.prototype = {
if
(
json
.
alphaTest
!==
undefined
)
material
.
alphaTest
=
json
.
alphaTest
;
if
(
json
.
depthTest
!==
undefined
)
material
.
depthTest
=
json
.
depthTest
;
if
(
json
.
depthWrite
!==
undefined
)
material
.
depthWrite
=
json
.
depthWrite
;
if
(
json
.
stencilTest
!==
undefined
)
material
.
stencilTest
=
json
.
stencilTest
;
if
(
json
.
stencilWrite
!==
undefined
)
material
.
stencilWrite
=
json
.
stencilWrite
;
if
(
json
.
colorWrite
!==
undefined
)
material
.
colorWrite
=
json
.
colorWrite
;
if
(
json
.
wireframe
!==
undefined
)
material
.
wireframe
=
json
.
wireframe
;
if
(
json
.
wireframeLinewidth
!==
undefined
)
material
.
wireframeLinewidth
=
json
.
wireframeLinewidth
;
...
...
src/materials/Material.js
浏览文件 @
6ca97c79
...
...
@@ -30,6 +30,9 @@ THREE.Material = function () {
this
.
depthTest
=
true
;
this
.
depthWrite
=
true
;
this
.
stencilTest
=
false
;
this
.
stencilWrite
=
false
;
this
.
colorWrite
=
true
;
this
.
precision
=
null
;
// override the renderer's default precision for this material
...
...
@@ -257,6 +260,9 @@ THREE.Material.prototype = {
this
.
depthTest
=
source
.
depthTest
;
this
.
depthWrite
=
source
.
depthWrite
;
this
.
stencilTest
=
source
.
stencilTest
;
this
.
stencilWrite
=
source
.
stencilWrite
;
this
.
colorWrite
=
source
.
colorWrite
;
this
.
precision
=
source
.
precision
;
...
...
src/renderers/WebGLRenderer.js
浏览文件 @
6ca97c79
...
...
@@ -1196,10 +1196,12 @@ THREE.WebGLRenderer = function ( parameters ) {
}
// Ensure
depth buffer writing is enabled so it
can be cleared on next render
// Ensure
buffer writing is enabled so they
can be cleared on next render
state
.
setDepthTest
(
true
);
state
.
setDepthWrite
(
true
);
state
.
setStencilTest
(
true
);
state
.
setStencilWrite
(
true
);
state
.
setColorWrite
(
true
);
// _gl.finish();
...
...
@@ -1562,6 +1564,8 @@ THREE.WebGLRenderer = function ( parameters ) {
state
.
setDepthFunc
(
material
.
depthFunc
);
state
.
setDepthTest
(
material
.
depthTest
);
state
.
setDepthWrite
(
material
.
depthWrite
);
state
.
setStencilTest
(
material
.
stencilTest
);
state
.
setStencilWrite
(
material
.
stencilWrite
);
state
.
setColorWrite
(
material
.
colorWrite
);
state
.
setPolygonOffset
(
material
.
polygonOffset
,
material
.
polygonOffsetFactor
,
material
.
polygonOffsetUnits
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录