Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
车家大少爷
three.js
提交
3186bbf3
T
three.js
项目概览
车家大少爷
/
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,发现更多精彩内容 >>
提交
3186bbf3
编写于
4月 06, 2015
作者:
R
Ricardo Cabello
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #6342 from benaadams/improve_program_dealloc
Reuse program when not changed
上级
320baf9c
a9e0b9de
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
37 addition
and
24 deletion
+37
-24
src/renderers/WebGLRenderer.js
src/renderers/WebGLRenderer.js
+37
-24
未找到文件。
src/renderers/WebGLRenderer.js
浏览文件 @
3186bbf3
...
...
@@ -2244,30 +2244,8 @@ THREE.WebGLRenderer = function ( parameters ) {
function
initMaterial
(
material
,
lights
,
fog
,
object
)
{
material
.
addEventListener
(
'
dispose
'
,
onMaterialDispose
);
var
shaderID
=
shaderIDs
[
material
.
type
];
if
(
shaderID
)
{
var
shader
=
THREE
.
ShaderLib
[
shaderID
];
material
.
__webglShader
=
{
uniforms
:
THREE
.
UniformsUtils
.
clone
(
shader
.
uniforms
),
vertexShader
:
shader
.
vertexShader
,
fragmentShader
:
shader
.
fragmentShader
}
}
else
{
material
.
__webglShader
=
{
uniforms
:
material
.
uniforms
,
vertexShader
:
material
.
vertexShader
,
fragmentShader
:
material
.
fragmentShader
}
}
// heuristics to create shader parameters according to lights in the scene
// (not to blow over maxLights budget)
...
...
@@ -2366,6 +2344,43 @@ THREE.WebGLRenderer = function ( parameters ) {
var
code
=
chunks
.
join
();
if
(
!
material
.
program
)
{
// new material
material
.
addEventListener
(
'
dispose
'
,
onMaterialDispose
);
}
else
if
(
material
.
program
.
code
!==
code
)
{
// changed glsl or parameters
deallocateMaterial
(
material
);
}
else
{
// same glsl and parameters
return
;
}
if
(
shaderID
)
{
var
shader
=
THREE
.
ShaderLib
[
shaderID
];
material
.
__webglShader
=
{
uniforms
:
THREE
.
UniformsUtils
.
clone
(
shader
.
uniforms
),
vertexShader
:
shader
.
vertexShader
,
fragmentShader
:
shader
.
fragmentShader
}
}
else
{
material
.
__webglShader
=
{
uniforms
:
material
.
uniforms
,
vertexShader
:
material
.
vertexShader
,
fragmentShader
:
material
.
fragmentShader
}
}
var
program
;
// Check if code has been already compiled
...
...
@@ -2477,8 +2492,6 @@ THREE.WebGLRenderer = function ( parameters ) {
if
(
material
.
needsUpdate
)
{
if
(
material
.
program
)
deallocateMaterial
(
material
);
initMaterial
(
material
,
lights
,
fog
,
object
);
material
.
needsUpdate
=
false
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录