Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
车家大少爷
three.js
提交
a763534c
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,体验更适合开发者的 AI 搜索 >>
提交
a763534c
编写于
2月 25, 2016
作者:
B
Ben Houston
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add support for linearToOutputTexel texture.encoding.
上级
4e8c25ac
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
34 addition
and
40 deletion
+34
-40
src/renderers/shaders/ShaderChunk/encodings.glsl
src/renderers/shaders/ShaderChunk/encodings.glsl
+1
-1
src/renderers/shaders/ShaderChunk/linear_to_gamma_fragment.glsl
...nderers/shaders/ShaderChunk/linear_to_gamma_fragment.glsl
+1
-1
src/renderers/webgl/WebGLProgram.js
src/renderers/webgl/WebGLProgram.js
+23
-20
src/renderers/webgl/WebGLPrograms.js
src/renderers/webgl/WebGLPrograms.js
+9
-18
未找到文件。
src/renderers/shaders/ShaderChunk/encodings.glsl
浏览文件 @
a763534c
...
...
@@ -7,7 +7,7 @@ vec4 LinearToLinear( in vec4 value ) {
vec4
GammaToLinear
(
in
vec4
value
,
in
float
gammaFactor
)
{
return
vec4
(
pow
(
value
.
xyz
,
vec3
(
gammaFactor
)
),
value
.
w
);
}
vec4
LinearTo
s
Gamma
(
in
vec4
value
,
in
float
gammaFactor
)
{
vec4
LinearToGamma
(
in
vec4
value
,
in
float
gammaFactor
)
{
return
vec4
(
pow
(
value
.
xyz
,
vec3
(
1
.
0
/
gammaFactor
)
),
value
.
w
);
}
...
...
src/renderers/shaders/ShaderChunk/linear_to_gamma_fragment.glsl
浏览文件 @
a763534c
outgoingLight
=
linearToOutput
(
outgoingLight
);
outgoingLight
=
linearToOutput
Texel
(
outgoingLight
);
src/renderers/webgl/WebGLProgram.js
浏览文件 @
a763534c
...
...
@@ -7,40 +7,42 @@ THREE.WebGLProgram = ( function () {
var
arrayStructRe
=
/^
([\w\d
_
]
+
)\[(\d
+
)\]\.([\w\d
_
]
+
)
$/
;
var
arrayRe
=
/^
([\w\d
_
]
+
)\[
0
\]
$/
;
function
getTexelDecodingFunction
(
functionName
,
encoding
)
{
var
code
=
"
vec4
"
+
functionName
+
"
( vec4 value ) { return
"
;
function
getEncodingComponents
(
encoding
)
{
switch
(
encoding
)
{
case
THREE
.
LinearEncoding
:
code
+=
"
value
"
;
break
;
return
[
'
Linear
'
,
'
( value )
'
];
case
THREE
.
sRGBEncoding
:
code
+=
"
sRGBToLinear( value )
"
;
break
;
return
[
'
sRGB
'
,
'
( value )
'
];
case
THREE
.
RGBEEncoding
:
code
+=
"
RGBEToLinear( value )
"
;
break
;
return
[
'
RGBE
'
,
'
( value )
'
];
case
THREE
.
RGBM7Encoding
:
code
+=
"
RGBMToLinear( value, 7.0 )
"
;
break
;
return
[
'
RGBM
'
,
'
( value, 7.0 )
'
];
case
THREE
.
RGBM16Encoding
:
code
+=
"
RGBMToLinear( value, 16.0 )
"
;
break
;
return
[
'
RGBM
'
,
'
( value, 16.0 )
'
];
case
THREE
.
RGBDEncoding
:
code
+=
"
RGBDToLinear( value, 256.0 )
"
;
break
;
return
[
'
RGBD
'
,
'
( value, 256.0 )
'
];
case
THREE
.
GammaEncoding
:
code
+=
"
GammaToLinear( value, float( GAMMA_FACTOR ) )
"
;
break
;
return
[
'
Gamma
'
,
'
( value, float( GAMMA_FACTOR ) )
'
];
default
:
throw
new
Error
(
'
unsupported encoding:
'
+
encoding
);
}
code
+=
"
; }
"
;
return
code
;
}
function
getTexelDecodingFunction
(
functionName
,
encoding
)
{
var
components
=
getEncodingComponents
(
encoding
);
return
"
vec4
"
+
functionName
+
"
( vec4 value ) { return
"
+
components
[
0
]
+
"
ToLinear
"
+
components
[
1
]
+
"
; }
"
;
}
function
getTexelEncodingFunction
(
functionName
,
encoding
)
{
var
components
=
getEncodingComponents
(
encoding
);
return
"
vec4
"
+
functionName
+
"
( vec4 value ) { return LinearTo
"
+
components
[
0
]
+
components
[
1
]
+
"
; }
"
;
}
...
...
@@ -496,8 +498,9 @@ THREE.WebGLProgram = ( function () {
'
uniform mat4 viewMatrix;
'
,
'
uniform vec3 cameraPosition;
'
,
(
parameters
.
mapEncoding
||
parameters
.
envMapEncoding
||
parameters
.
emissiveMapEncoding
)
?
THREE
.
ShaderChunk
[
'
encodings
'
]
:
''
,
(
parameters
.
outputEncoding
||
parameters
.
mapEncoding
||
parameters
.
envMapEncoding
||
parameters
.
emissiveMapEncoding
)
?
THREE
.
ShaderChunk
[
'
encodings
'
]
:
''
,
parameters
.
outputEncoding
?
getTexelEncodingFunction
(
"
linearToOutputTexel
"
,
parameters
.
outputEncoding
)
:
''
,
parameters
.
mapEncoding
?
getTexelDecodingFunction
(
'
mapTexelToLinear
'
,
parameters
.
mapEncoding
)
:
''
,
parameters
.
envMapEncoding
?
getTexelDecodingFunction
(
'
envMapTexelToLinear
'
,
parameters
.
envMapEncoding
)
:
''
,
parameters
.
emissiveMapEncoding
?
getTexelDecodingFunction
(
'
emissiveMapTexelToLinear
'
,
parameters
.
emissiveMapEncoding
)
:
''
,
...
...
src/renderers/webgl/WebGLPrograms.js
浏览文件 @
a763534c
...
...
@@ -68,7 +68,6 @@ THREE.WebGLPrograms = function ( renderer, capabilities ) {
}
this
.
getParameters
=
function
(
material
,
lights
,
fog
,
object
)
{
var
shaderID
=
shaderIDs
[
material
.
type
];
// heuristics to create shader parameters according to lights in the scene
// (not to blow over maxLights budget)
...
...
@@ -88,21 +87,13 @@ THREE.WebGLPrograms = function ( renderer, capabilities ) {
}
var
getTextureEncodingFromMap
=
function
(
map
)
{
if
(
!
map
)
{
// no texture
return
false
;
}
var
getTextureEncodingFromMap
=
function
(
map
,
gammaOverrideLinear
)
{
var
encoding
;
if
(
map
.
encoding
!==
undefined
)
{
// standard texture
encoding
=
map
.
encoding
;
}
else
if
(
map
.
texture
!==
undefined
)
{
// render target pretending to be a texture, get the texture inside it.
encoding
=
map
.
texture
.
encoding
;
if
(
!
map
)
{
encoding
=
THREE
.
LinearEncoding
;
}
else
{
throw
new
Error
(
"
can not determine texture encoding from map:
"
+
map
);
}
// add backwards compatibility for WebGLRenderer.gammaInput parameter, should probably be removed at some point.
else
if
(
map
instanceof
THREE
.
Texture
)
{
// add backwards compatibility for WebGLRenderer.gammaInput parameter, should probably be removed at some point.
if
(
encoding
===
THREE
.
LinearEncoding
&&
renderer
.
gammaInput
)
{
encoding
=
THREE
.
GammaEncoding
;
}
...
...
@@ -115,16 +106,16 @@ THREE.WebGLPrograms = function ( renderer, capabilities ) {
precision
:
precision
,
supportsVertexTextures
:
capabilities
.
vertexTextures
,
outputEncoding
:
getTextureEncodingFromMap
(
renderer
.
_currentRenderTarget
,
renderer
.
gammaOutput
),
map
:
!!
material
.
map
,
mapEncoding
:
getTextureEncodingFromMap
(
material
.
map
),
mapEncoding
:
getTextureEncodingFromMap
(
material
.
map
,
renderer
.
gammaInput
),
envMap
:
!!
material
.
envMap
,
envMapMode
:
material
.
envMap
&&
material
.
envMap
.
mapping
,
envMapEncoding
:
getTextureEncodingFromMap
(
material
.
envMap
),
envMapEncoding
:
getTextureEncodingFromMap
(
material
.
envMap
,
renderer
.
gammaInput
),
lightMap
:
!!
material
.
lightMap
,
aoMap
:
!!
material
.
aoMap
,
emissiveMap
:
!!
material
.
emissiveMap
,
emissiveMapEncoding
:
getTextureEncodingFromMap
(
material
.
emissiveMap
),
emissiveMapEncoding
:
getTextureEncodingFromMap
(
material
.
emissiveMap
,
renderer
.
gammaInput
),
bumpMap
:
!!
material
.
bumpMap
,
normalMap
:
!!
material
.
normalMap
,
displacementMap
:
!!
material
.
displacementMap
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录