Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
1c5ca1d6
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,发现更多精彩内容 >>
未验证
提交
1c5ca1d6
编写于
3月 30, 2021
作者:
V
Vis
提交者:
GitHub
3月 29, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
SSRPassCorrectReflectorDepth2Pr (#21537)
上级
f268ef88
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
8 addition
and
15 deletion
+8
-15
examples/jsm/objects/ReflectorForSSRPass.js
examples/jsm/objects/ReflectorForSSRPass.js
+8
-14
examples/webgl_postprocessing_ssr.html
examples/webgl_postprocessing_ssr.html
+0
-1
未找到文件。
examples/jsm/objects/ReflectorForSSRPass.js
浏览文件 @
1c5ca1d6
...
...
@@ -44,7 +44,6 @@ var ReflectorForSSRPass = function ( geometry, options ) {
scope
.
maxDistance
=
ReflectorForSSRPass
.
ReflectorShader
.
uniforms
.
maxDistance
.
value
;
scope
.
opacity
=
ReflectorForSSRPass
.
ReflectorShader
.
uniforms
.
opacity
.
value
;
scope
.
color
=
color
;
scope
.
worldYBias
=
options
.
worldYBias
||
0
;
scope
.
resolution
=
options
.
resolution
||
new
Vector2
(
window
.
innerWidth
,
window
.
innerHeight
);
...
...
@@ -139,7 +138,6 @@ var ReflectorForSSRPass = function ( geometry, options ) {
material
.
uniforms
[
'
maxDistance
'
].
value
=
scope
.
maxDistance
;
material
.
uniforms
[
'
color
'
].
value
=
scope
.
color
;
material
.
uniforms
[
'
opacity
'
].
value
=
scope
.
opacity
;
material
.
uniforms
[
'
worldYBias
'
].
value
=
scope
.
worldYBias
;
vecTemp0
.
copy
(
camera
.
position
).
normalize
();
vecTemp1
.
copy
(
vecTemp0
).
reflect
(
yAxis
);
...
...
@@ -183,11 +181,11 @@ var ReflectorForSSRPass = function ( geometry, options ) {
virtualCamera
.
updateMatrixWorld
();
virtualCamera
.
projectionMatrix
.
copy
(
camera
.
projectionMatrix
);
material
.
uniforms
[
'
virtualCameraNear
'
].
value
=
virtualC
amera
.
near
;
material
.
uniforms
[
'
virtualCameraFar
'
].
value
=
virtualC
amera
.
far
;
material
.
uniforms
[
'
virtualCameraMatrixWorld
'
].
value
=
virtualCamera
.
matrixWorld
;
material
.
uniforms
[
'
virtualCameraProjectionMatrix
'
].
value
=
virtualC
amera
.
projectionMatrix
;
material
.
uniforms
[
'
virtualCamera
InverseProjectionMatrix
'
].
value
=
virtualC
amera
.
projectionMatrixInverse
;
material
.
uniforms
[
'
virtualCameraNear
'
].
value
=
c
amera
.
near
;
material
.
uniforms
[
'
virtualCameraFar
'
].
value
=
c
amera
.
far
;
material
.
uniforms
[
'
virtualCameraMatrixWorld
'
].
value
=
virtualCamera
.
matrixWorld
;
material
.
uniforms
[
'
virtualCameraProjectionMatrix
'
].
value
=
c
amera
.
projectionMatrix
;
material
.
uniforms
[
'
virtualCamera
ProjectionMatrixInverse
'
].
value
=
c
amera
.
projectionMatrixInverse
;
material
.
uniforms
[
'
resolution
'
].
value
=
scope
.
resolution
;
// Update the texture matrix
...
...
@@ -295,12 +293,11 @@ ReflectorForSSRPass.ReflectorShader = {
maxDistance
:
{
value
:
180
},
opacity
:
{
value
:
0.5
},
fresnelCoe
:
{
value
:
null
},
worldYBias
:
{
value
:
null
},
virtualCameraNear
:
{
value
:
null
},
virtualCameraFar
:
{
value
:
null
},
virtualCameraProjectionMatrix
:
{
value
:
new
Matrix4
()
},
virtualCameraMatrixWorld
:
{
value
:
new
Matrix4
()
},
virtualCamera
InverseProjectionMatrix
:
{
value
:
new
Matrix4
()
},
virtualCamera
ProjectionMatrixInverse
:
{
value
:
new
Matrix4
()
},
resolution
:
{
value
:
new
Vector2
()
},
},
...
...
@@ -325,11 +322,10 @@ ReflectorForSSRPass.ReflectorShader = {
uniform float maxDistance;
uniform float opacity;
uniform float fresnelCoe;
uniform float worldYBias;
uniform float virtualCameraNear;
uniform float virtualCameraFar;
uniform mat4 virtualCameraProjectionMatrix;
uniform mat4 virtualCamera
InverseProjectionMatrix
;
uniform mat4 virtualCamera
ProjectionMatrixInverse
;
uniform mat4 virtualCameraMatrixWorld;
uniform vec2 resolution;
varying vec4 vUv;
...
...
@@ -349,7 +345,7 @@ ReflectorForSSRPass.ReflectorShader = {
vec3 getViewPosition( const in vec2 uv, const in float depth/*clip space*/, const in float clipW ) {
vec4 clipPosition = vec4( ( vec3( uv, depth ) - 0.5 ) * 2.0, 1.0 );//ndc
clipPosition *= clipW; //clip
return ( virtualCamera
InverseProjectionMatrix
* clipPosition ).xyz;//view
return ( virtualCamera
ProjectionMatrixInverse
* clipPosition ).xyz;//view
}
void main() {
vec4 base = texture2DProj( tDiffuse, vUv );
...
...
@@ -361,8 +357,6 @@ ReflectorForSSRPass.ReflectorShader = {
float clipW = virtualCameraProjectionMatrix[2][3] * viewZ+virtualCameraProjectionMatrix[3][3];
vec3 viewPosition=getViewPosition( uv, depth, clipW );
vec3 worldPosition=(virtualCameraMatrixWorld*vec4(viewPosition,1)).xyz;
worldPosition.y+=worldYBias; // TODO: Don't know why not start from zero, temporarily use manually defined bias, need fix afterwards.
worldPosition.y=max(0.,worldPosition.y);
if(worldPosition.y>maxDistance) discard;
float op=opacity;
#ifdef DISTANCE_ATTENUATION
...
...
examples/webgl_postprocessing_ssr.html
浏览文件 @
1c5ca1d6
...
...
@@ -131,7 +131,6 @@
geometry
=
new
THREE
.
PlaneBufferGeometry
(
1
,
1
);
groundReflector
=
new
ReflectorForSSRPass
(
geometry
,
{
clipBias
:
0
,
worldYBias
:
-
0.027450980392156862
,
textureWidth
:
window
.
innerWidth
,
textureHeight
:
window
.
innerHeight
,
color
:
0x888888
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录