Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
328b3cfe
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,体验更适合开发者的 AI 搜索 >>
未验证
提交
328b3cfe
编写于
9月 16, 2019
作者:
M
Mr.doob
提交者:
GitHub
9月 16, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #17512 from gero3/cleanupWebGLProgram
WebGLProgram: Clean up
上级
feca7fd4
5e792a68
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
69 addition
and
20 deletion
+69
-20
src/renderers/webgl/WebGLProgram.js
src/renderers/webgl/WebGLProgram.js
+69
-20
未找到文件。
src/renderers/webgl/WebGLProgram.js
浏览文件 @
328b3cfe
...
...
@@ -243,14 +243,29 @@ function unrollLoops( string ) {
}
function
WebGLProgram
(
renderer
,
extensions
,
code
,
material
,
shader
,
parameters
,
capabilitie
s
)
{
function
generatePrecision
(
parameter
s
)
{
var
gl
=
renderer
.
getContext
()
;
var
precisionstring
=
"
precision
"
+
parameters
.
precision
+
"
float;
\n
precision
"
+
parameters
.
precision
+
"
int;
"
;
var
defines
=
material
.
defines
;
if
(
parameters
.
precision
===
"
highp
"
)
{
var
vertexShader
=
shader
.
vertexShader
;
var
fragmentShader
=
shader
.
fragmentShader
;
precisionstring
+=
"
\n
#define HIGH_PRECISION;
"
;
}
else
if
(
parameters
.
precision
===
"
mediump
"
)
{
precisionstring
+=
"
\n
#define MEDIUM_PRECISION;
"
;
}
else
if
(
parameters
.
precision
===
"
lowp
"
)
{
precisionstring
+=
"
\n
#define LOW_PRECISION;
"
;
}
return
precisionstring
;
}
function
generateShadowMapTypeDefine
(
parameters
)
{
var
shadowMapTypeDefine
=
'
SHADOWMAP_TYPE_BASIC
'
;
...
...
@@ -268,9 +283,13 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
}
return
shadowMapTypeDefine
;
}
function
generateEnvMapTypeDefine
(
parameters
,
material
)
{
var
envMapTypeDefine
=
'
ENVMAP_TYPE_CUBE
'
;
var
envMapModeDefine
=
'
ENVMAP_MODE_REFLECTION
'
;
var
envMapBlendingDefine
=
'
ENVMAP_BLENDING_MULTIPLY
'
;
if
(
parameters
.
envMap
)
{
...
...
@@ -297,6 +316,18 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
}
}
return
envMapTypeDefine
;
}
function
generateEnvMapModeDefine
(
parameters
,
material
)
{
var
envMapModeDefine
=
'
ENVMAP_MODE_REFLECTION
'
;
if
(
parameters
.
envMap
)
{
switch
(
material
.
envMap
.
mapping
)
{
case
CubeRefractionMapping
:
...
...
@@ -306,6 +337,18 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
}
}
return
envMapModeDefine
;
}
function
generateEnvMapBlendingDefine
(
parameters
,
material
)
{
var
envMapBlendingDefine
=
'
ENVMAP_BLENDING_MULTIPLY
'
;
if
(
parameters
.
envMap
)
{
switch
(
material
.
combine
)
{
case
MultiplyOperation
:
...
...
@@ -324,18 +367,30 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
}
var
gammaFactorDefine
=
(
renderer
.
gammaFactor
>
0
)
?
renderer
.
gammaFactor
:
1.0
;
return
envMapBlendingDefine
;
// console.log( 'building new program ' );
}
//
function
WebGLProgram
(
renderer
,
extensions
,
code
,
material
,
shader
,
parameters
,
capabilities
)
{
var
gl
=
renderer
.
getContext
();
var
defines
=
material
.
defines
;
var
vertexShader
=
shader
.
vertexShader
;
var
fragmentShader
=
shader
.
fragmentShader
;
var
shadowMapTypeDefine
=
generateShadowMapTypeDefine
(
parameters
);
var
envMapTypeDefine
=
generateEnvMapTypeDefine
(
parameters
,
material
);
var
envMapModeDefine
=
generateEnvMapModeDefine
(
parameters
,
material
);
var
envMapBlendingDefine
=
generateEnvMapBlendingDefine
(
parameters
,
material
);
var
gammaFactorDefine
=
(
renderer
.
gammaFactor
>
0
)
?
renderer
.
gammaFactor
:
1.0
;
var
customExtensions
=
capabilities
.
isWebGL2
?
''
:
generateExtensions
(
material
.
extensions
,
parameters
,
extensions
);
var
customDefines
=
generateDefines
(
defines
);
//
var
program
=
gl
.
createProgram
();
var
prefixVertex
,
prefixFragment
;
...
...
@@ -374,10 +429,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
prefixVertex
=
[
'
precision
'
+
parameters
.
precision
+
'
float;
'
,
'
precision
'
+
parameters
.
precision
+
'
int;
'
,
(
parameters
.
precision
===
'
highp
'
)
?
'
#define HIGH_PRECISION
'
:
''
,
generatePrecision
(
parameters
),
'
#define SHADER_NAME
'
+
shader
.
name
,
...
...
@@ -509,10 +561,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
customExtensions
,
'
precision
'
+
parameters
.
precision
+
'
float;
'
,
'
precision
'
+
parameters
.
precision
+
'
int;
'
,
(
parameters
.
precision
===
'
highp
'
)
?
'
#define HIGH_PRECISION
'
:
''
,
generatePrecision
(
parameters
),
'
#define SHADER_NAME
'
+
shader
.
name
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录