Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
d1d38c9b
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,发现更多精彩内容 >>
提交
d1d38c9b
编写于
3月 28, 2018
作者:
T
Takahiro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
WebGLRenderer WebGL2.0 basic support
上级
764875d4
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
75 addition
and
10 deletion
+75
-10
src/renderers/WebGLRenderer.js
src/renderers/WebGLRenderer.js
+2
-2
src/renderers/webgl/WebGLExtensions.js
src/renderers/webgl/WebGLExtensions.js
+29
-2
src/renderers/webgl/WebGLProgram.js
src/renderers/webgl/WebGLProgram.js
+35
-4
src/renderers/webgl/WebGLTextures.js
src/renderers/webgl/WebGLTextures.js
+7
-1
src/renderers/webgl/WebGLUtils.js
src/renderers/webgl/WebGLUtils.js
+2
-1
未找到文件。
src/renderers/WebGLRenderer.js
浏览文件 @
d1d38c9b
...
...
@@ -2427,7 +2427,7 @@ function WebGLRenderer( parameters ) {
};
this
.
setRenderTarget
=
function
(
renderTarget
)
{
this
.
setRenderTarget
=
function
(
renderTarget
,
optType
)
{
_currentRenderTarget
=
renderTarget
;
...
...
@@ -2469,7 +2469,7 @@ function WebGLRenderer( parameters ) {
if
(
_currentFramebuffer
!==
framebuffer
)
{
_gl
.
bindFramebuffer
(
_gl
.
FRAMEBUFFER
,
framebuffer
);
_gl
.
bindFramebuffer
(
optType
||
_gl
.
FRAMEBUFFER
,
framebuffer
);
_currentFramebuffer
=
framebuffer
;
}
...
...
src/renderers/webgl/WebGLExtensions.js
浏览文件 @
d1d38c9b
...
...
@@ -6,6 +6,8 @@ function WebGLExtensions( gl ) {
var
extensions
=
{};
var
isWebGL2
=
(
typeof
WebGL2RenderingContext
!==
'
undefined
'
&&
gl
instanceof
WebGL2RenderingContext
);
return
{
get
:
function
(
name
)
{
...
...
@@ -21,7 +23,17 @@ function WebGLExtensions( gl ) {
switch
(
name
)
{
case
'
WEBGL_depth_texture
'
:
extension
=
gl
.
getExtension
(
'
WEBGL_depth_texture
'
)
||
gl
.
getExtension
(
'
MOZ_WEBGL_depth_texture
'
)
||
gl
.
getExtension
(
'
WEBKIT_WEBGL_depth_texture
'
);
if
(
isWebGL2
)
{
extension
=
gl
;
}
else
{
extension
=
gl
.
getExtension
(
'
WEBGL_depth_texture
'
)
||
gl
.
getExtension
(
'
MOZ_WEBGL_depth_texture
'
)
||
gl
.
getExtension
(
'
WEBKIT_WEBGL_depth_texture
'
);
}
break
;
case
'
EXT_texture_filter_anisotropic
'
:
...
...
@@ -41,7 +53,22 @@ function WebGLExtensions( gl ) {
break
;
default
:
extension
=
gl
.
getExtension
(
name
);
if
(
isWebGL2
&&
[
'
ANGLE_instanced_arrays
'
,
'
OES_texture_float
'
,
'
OES_texture_half_float
'
,
'
OES_texture_half_float_linear
'
,
'
OES_element_index_uint
'
,
'
OES_standard_derivatives
'
].
indexOf
(
name
)
>=
0
)
{
extension
=
gl
;
}
else
{
extension
=
gl
.
getExtension
(
name
);
}
}
...
...
src/renderers/webgl/WebGLProgram.js
浏览文件 @
d1d38c9b
...
...
@@ -79,15 +79,15 @@ function getToneMappingFunction( functionName, toneMapping ) {
}
function
generateExtensions
(
extensions
,
parameters
,
rendererExtensions
)
{
function
generateExtensions
(
extensions
,
parameters
,
rendererExtensions
,
isWebGL2
)
{
extensions
=
extensions
||
{};
var
chunks
=
[
(
extensions
.
derivatives
||
parameters
.
envMapCubeUV
||
parameters
.
bumpMap
||
parameters
.
normalMap
||
parameters
.
flatShading
)
?
'
#extension GL_OES_standard_derivatives : enable
'
:
''
,
(
!
isWebGL2
&&
(
extensions
.
derivatives
||
parameters
.
envMapCubeUV
||
parameters
.
bumpMap
||
parameters
.
normalMap
||
parameters
.
flatShading
)
)
?
'
#extension GL_OES_standard_derivatives : enable
'
:
''
,
(
extensions
.
fragDepth
||
parameters
.
logarithmicDepthBuffer
)
&&
rendererExtensions
.
get
(
'
EXT_frag_depth
'
)
?
'
#extension GL_EXT_frag_depth : enable
'
:
''
,
(
extensions
.
drawBuffers
)
&&
rendererExtensions
.
get
(
'
WEBGL_draw_buffers
'
)
?
'
#extension GL_EXT_draw_buffers : require
'
:
''
,
(
extensions
.
shaderTextureLOD
||
parameters
.
envMap
)
&&
rendererExtensions
.
get
(
'
EXT_shader_texture_lod
'
)
?
'
#extension GL_EXT_shader_texture_lod : enable
'
:
''
(
!
isWebGL2
&&
(
extensions
.
shaderTextureLOD
||
parameters
.
envMap
)
&&
rendererExtensions
.
get
(
'
EXT_shader_texture_lod
'
)
)
?
'
#extension GL_EXT_shader_texture_lod : enable
'
:
''
];
return
chunks
.
filter
(
filterEmptyLine
).
join
(
'
\n
'
);
...
...
@@ -206,6 +206,8 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters
var
gl
=
renderer
.
context
;
var
isWebGL2
=
typeof
WebGL2RenderingContext
!==
'
undefined
'
&&
gl
instanceof
WebGL2RenderingContext
;
var
defines
=
material
.
defines
;
var
vertexShader
=
shader
.
vertexShader
;
...
...
@@ -285,7 +287,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters
//
var
customExtensions
=
generateExtensions
(
material
.
extensions
,
parameters
,
extensions
);
var
customExtensions
=
generateExtensions
(
material
.
extensions
,
parameters
,
extensions
,
isWebGL2
);
var
customDefines
=
generateDefines
(
defines
);
...
...
@@ -517,6 +519,35 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters
var
vertexGlsl
=
prefixVertex
+
vertexShader
;
var
fragmentGlsl
=
prefixFragment
+
fragmentShader
;
if
(
isWebGL2
)
{
// GLSL 3.0 conversion
var
gles3VS
=
[
'
#define attribute in
'
,
'
#define varying out
'
,
'
#define texture2D texture
'
].
join
(
'
\n
'
);
var
gles3PS
=
[
'
#define varying in
'
,
'
out highp vec4 pc_fragColor;
'
,
'
#define gl_FragColor pc_fragColor
'
,
'
#define texture2D texture
'
,
'
#define textureCube texture
'
,
'
#define texture2DProj textureProj
'
,
'
#define texture2DLodEXT textureLod
'
,
'
#define texture2DProjLodEXT textureProjLod
'
,
'
#define textureCubeLodEXT textureLod
'
,
'
#define texture2DGradEXT textureGrad
'
,
'
#define texture2DProjGradEXT textureProjGrad
'
,
'
#define textureCubeGradEXT textureGrad
'
].
join
(
'
\n
'
);
vertexGlsl
=
'
#version 300 es
\n
'
+
gles3VS
+
'
\n
'
+
vertexGlsl
;
fragmentGlsl
=
'
#version 300 es
\n
'
+
gles3PS
+
'
\n
'
+
fragmentGlsl
;
}
// console.log( '*VERTEX*', vertexGlsl );
// console.log( '*FRAGMENT*', fragmentGlsl );
...
...
src/renderers/webgl/WebGLTextures.js
浏览文件 @
d1d38c9b
...
...
@@ -545,7 +545,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
}
else
{
state
.
texImage2D
(
_gl
.
TEXTURE_2D
,
0
,
glFormat
,
image
.
width
,
image
.
height
,
0
,
glFormat
,
glType
,
image
.
data
);
// temporal workaround
// @TODO Fix
var
isWebGL2
=
(
typeof
WebGL2RenderingContext
!==
'
undefined
'
&&
_gl
instanceof
WebGL2RenderingContext
);
var
glInternalFormat
=
(
isWebGL2
&&
glFormat
===
_gl
.
RGBA
&&
glType
===
_gl
.
FLOAT
)
?
_gl
.
RGBA32F
:
glFormat
;
state
.
texImage2D
(
_gl
.
TEXTURE_2D
,
0
,
glInternalFormat
,
image
.
width
,
image
.
height
,
0
,
glFormat
,
glType
,
image
.
data
);
textureProperties
.
__maxMipLevel
=
0
;
}
...
...
src/renderers/webgl/WebGLUtils.js
浏览文件 @
d1d38c9b
...
...
@@ -38,7 +38,8 @@ function WebGLUtils( gl, extensions ) {
extension
=
extensions
.
get
(
'
OES_texture_half_float
'
);
if
(
extension
!==
null
)
return
extension
.
HALF_FLOAT_OES
;
var
isWebGL2
=
(
typeof
WebGL2RenderingContext
!==
'
undefined
'
&&
gl
instanceof
WebGL2RenderingContext
);
return
isWebGL2
?
gl
.
HALF_FLOAT
:
extension
.
HALF_FLOAT_OES
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录