Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
OpenWalnut
OpenWalnut Core
Commits
3a7affac
Commit
3a7affac
authored
Jan 19, 2011
by
Sebastian Eichelbaum
Browse files
[CHANGE] - removed unused code.
parent
0fdbd630
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
36 additions
and
122 deletions
+36
-122
src/graphicsEngine/postprocessing/WGEPostprocessingNode.cpp
src/graphicsEngine/postprocessing/WGEPostprocessingNode.cpp
+2
-7
src/graphicsEngine/shaders/shaders/WGEPostprocessor-fragment.glsl
...hicsEngine/shaders/shaders/WGEPostprocessor-fragment.glsl
+28
-99
src/modules/fiberDisplaySimple/WMFiberDisplaySimple.cpp
src/modules/fiberDisplaySimple/WMFiberDisplaySimple.cpp
+4
-15
src/modules/fiberDisplaySimple/shaders/WMFiberDisplaySimple-fragment.glsl
...rDisplaySimple/shaders/WMFiberDisplaySimple-fragment.glsl
+2
-1
No files found.
src/graphicsEngine/postprocessing/WGEPostprocessingNode.cpp
View file @
3a7affac
...
...
@@ -74,8 +74,8 @@ WGEPostprocessingNode::WGEPostprocessingNode( osg::ref_ptr< osg::Camera > refere
namesAndDefs
.
push_back
(
Tuple
(
"Color Only"
,
"No Post-Processing."
,
"WGE_POSTPROCESSOR_COLOR"
)
);
namesAndDefs
.
push_back
(
Tuple
(
"Smoothed Color"
,
"Smoothed Color Image using Gauss Filter."
,
"WGE_POSTPROCESSOR_GAUSSEDCOLOR"
)
);
namesAndDefs
.
push_back
(
Tuple
(
"PPL - Phong"
,
"Per-Pixel-Lighting using Phong."
,
"WGE_POSTPROCESSOR_PPLPHONG"
)
);
namesAndDefs
.
push_back
(
Tuple
(
"
SSAO"
,
"Screen-Space Ambient Occlusion."
,
"WGE_POSTPROCESSOR_
SSAO
"
)
);
namesAndDefs
.
push_back
(
Tuple
(
"
Cel Shad
ing"
,
"U
nder-sampling of the color for cartoon-like shading
."
,
"WGE_POSTPROCESSOR_
CELSH
ADING"
)
);
namesAndDefs
.
push_back
(
Tuple
(
"
Cel-Shading"
,
"Under-sampling of the color for cartoon-like shading."
,
"WGE_POSTPROCESSOR_
CELSHADING
"
)
);
namesAndDefs
.
push_back
(
Tuple
(
"
Depth-Cue
ing"
,
"U
se the Depth to fade out the pixel's brightness
."
,
"WGE_POSTPROCESSOR_
DEPTHF
ADING"
)
);
namesAndDefs
.
push_back
(
Tuple
(
"Edge"
,
"Edge of Rendered Geometry."
,
"WGE_POSTPROCESSOR_EDGE"
)
);
namesAndDefs
.
push_back
(
Tuple
(
"Depth"
,
"Depth Value only."
,
"WGE_POSTPROCESSOR_DEPTH"
)
);
namesAndDefs
.
push_back
(
Tuple
(
"Smoothed Depth"
,
"Gauss-Smoothed Depth Value only."
,
"WGE_POSTPROCESSOR_GAUSSEDDEPTH"
)
);
...
...
@@ -100,11 +100,6 @@ WGEPostprocessingNode::WGEPostprocessingNode( osg::ref_ptr< osg::Camera > refere
m_offscreen
->
getTextureHUD
()
->
addUpdateCallback
(
new
WGENodeMaskCallback
(
m_showHUD
)
);
// let the activePostprocessors property control the options in the shader:
m_postProcessShader
->
addPreprocessor
(
activePostprocessorsOpts
);
// some of the post-processors need some white noise, like the ssao
const
size_t
size
=
64
;
osg
::
ref_ptr
<
WGETexture2D
>
randTex
=
wge
::
genWhiteNoiseTexture
(
size
,
3
);
m_postprocess
->
bind
(
randTex
,
3
);
}
WGEPostprocessingNode
::~
WGEPostprocessingNode
()
...
...
src/graphicsEngine/shaders/shaders/WGEPostprocessor-fragment.glsl
View file @
3a7affac
...
...
@@ -390,101 +390,6 @@ float getGaussedDepth()
return
getGaussedDepth
(
pixelCoord
);
}
/**
* Calculate the screen-space ambient occlusion from normal and depth map.
*
* \return the SSAO factor
*/
float
getSSAO
()
{
// NOTE: Currently, most of the code is from http://www.gamerendering.com/2009/01/14/ssao/
// TODO(ebaum): optimize code. It is quite slow curretly.
// some switches which can be used to fine-tune this.
// TODO(ebaum): provide uniforms for this
float
totStrength
=
1
.
38
;
// total strength - scaling the resulting AO
float
falloff
=
0
.
000002
;
float
rad
=
0
.
006
;
#define SAMPLES 32 // 10+ is good
const
float
invSamples
=
1
.
0
/
float
(
SAMPLES
);
const
float
strength
=
0
.
07
;
// these are the random vectors inside a unit sphere
vec3
pSphere
[
46
]
=
vec3
[](
vec3
(
0
.
53812504
,
0
.
18565957
,
-
0
.
43192
),
vec3
(
0
.
13790712
,
0
.
24864247
,
0
.
44301823
),
vec3
(
0
.
33715037
,
0
.
56794053
,
-
0
.
0057
89503
),
vec3
(
-
0
.
6999805
,
-
0
.
04511441
,
-
0
.
001
9965635
),
vec3
(
0
.
06
896307
,
-
0
.
15983082
,
-
0
.
85477847
),
vec3
(
0
.
0560
99437
,
0
.
006
954967
,
-
0
.
1843352
),
vec3
(
-
0
.
01465363
8
,
0
.
14027752
,
0
.
0762037
),
vec3
(
0
.
01001
9933
,
-
0
.
1924225
,
-
0
.
0344433
86
),
vec3
(
-
0
.
35775623
,
-
0
.
5301969
,
-
0
.
43581226
),
vec3
(
-
0
.
3169221
,
0
.
106360726
,
0
.
015
860917
),
vec3
(
0
.
010350345
,
-
0
.
58698344
,
0
.
00462
93875
),
vec3
(
-
0
.
08972908
,
-
0
.
49408212
,
0
.
3287904
),
vec3
(
0
.
7119986
,
-
0
.
01546
90035
,
-
0
.
09183723
),
vec3
(
-
0
.
0533
82345
,
0
.
05
9675813
,
-
0
.
5411899
),
vec3
(
0
.
035267662
,
-
0
.
0631
88605
,
0
.
54602677
),
vec3
(
-
0
.
47761092
,
0
.
2847911
,
-
0
.
0271716
),
vec3
(
0
.
24710192
,
0
.
6445882
,
0
.
033550154
),
vec3
(
0
.
00
991752
,
-
0
.
21947019
,
0
.
7196721
),
vec3
(
0
.
25109035
,
-
0
.
1787317
,
-
0
.
0115
80509
),
vec3
(
-
0
.
08781511
,
0
.
44514698
,
0
.
56647956
),
vec3
(
-
0
.
011737
816
,
-
0
.
0643377
,
0
.
16030222
),
vec3
(
0
.
035
941467
,
0
.
04
990871
,
-
0
.
46533614
),
vec3
(
-
0
.
05
8801126
,
0
.
7347013
,
-
0
.
25399926
),
vec3
(
-
0
.
24799341
,
-
0
.
02205207
8
,
-
0
.
13399573
),
vec3
(
-
0
.
13657719
,
0
.
30651027
,
0
.
16118456
),
vec3
(
-
0
.
14714938
,
0
.
33245975
,
-
0
.
113095455
),
vec3
(
0
.
03065
9059
,
0
.
27887347
,
-
0
.
7332209
),
vec3
(
0
.
00
9913514
,
-
0
.
89884496
,
0
.
073
81549
),
vec3
(
0
.
04031
8526
,
0
.
40091
,
0
.
6847858
),
vec3
(
0
.
22311053
,
-
0
.
3039437
,
-
0
.
19340435
),
vec3
(
0
.
36235332
,
0
.
21894878
,
-
0
.
05407306
),
vec3
(
-
0
.
15198798
,
-
0
.
38409665
,
-
0
.
46785462
),
vec3
(
-
0
.
0134
92276
,
-
0
.
5345803
,
0
.
11307949
),
vec3
(
-
0
.
4972847
,
0
.
037064247
,
-
0
.
4381323
),
vec3
(
-
0
.
024175
806
,
-
0
.
00
8928787
,
0
.
17719103
),
vec3
(
0
.
694014
,
-
0
.
122672155
,
0
.
33098832
),
vec3
(
-
0
.
010735
935
,
0
.
0164701
8
,
0
.
0062425
877
),
vec3
(
-
0
.
0653336
9
,
0
.
3647007
,
-
0
.
13746321
),
vec3
(
-
0
.
6539235
,
-
0
.
0167263
88
,
-
0
.
53000957
),
vec3
(
0
.
40958285
,
0
.
005242
8036
,
-
0
.
5591124
),
vec3
(
-
0
.
1465366
,
0
.
09899267
,
0
.
15571679
),
vec3
(
-
0
.
44122112
,
-
0
.
5458797
,
0
.
04
912532
),
vec3
(
0
.
03755566
,
-
0
.
10961345
,
-
0
.
33040273
),
vec3
(
0
.
01
9100213
,
0
.
29652783
,
0
.
066237666
),
vec3
(
0
.
8765323
,
0
.
011236004
,
0
.
28265962
),
vec3
(
0
.
29264435
,
-
0
.
40794238
,
0
.
15964167
)
);
// grab a normal for reflecting the sample rays later on
vec3
fres
=
normalize
(
(
texture2D
(
u_texture3Sampler
,
pixelCoord
*
u_texture3SizeX
).
xyz
*
2
.
0
)
-
vec3
(
1
.
0
)
);
vec3
currentPixelSample
=
getNormal
(
pixelCoord
).
xyz
;
float
currentPixelDepth
=
getDepth
(
pixelCoord
);
// current fragment coords in screen space
vec3
ep
=
vec3
(
pixelCoord
.
xy
,
currentPixelDepth
);
// get the normal of current fragment
vec3
norm
=
currentPixelSample
.
xyz
;
// accumulated occlusion
float
bl
=
0
.
0
;
// adjust for the depth ( not shure if this is good..)
float
radD
=
rad
/
currentPixelDepth
;
// some temporaries
vec3
ray
,
se
,
occNorm
;
float
occDepth
,
depthDifference
,
normDiff
;
for
(
int
i
=
0
;
i
<
SAMPLES
;
++
i
)
{
// get a vector (randomized inside of a sphere with radius 1.0) from a texture and reflect it
ray
=
radD
*
reflect
(
pSphere
[
i
],
fres
);
// if the ray is outside the hemisphere then change direction
se
=
ep
+
sign
(
dot
(
ray
,
norm
)
)
*
ray
;
// get the depth of the occluder fragment
occDepth
=
getDepth
(
se
.
xy
);
// get the normal of the occluder fragment
occNorm
=
0
.
75
*
getNormal
(
se
.
xy
).
xyz
;
// if depthDifference is negative = occluder is behind current fragment
depthDifference
=
currentPixelDepth
-
occDepth
;
// calculate the difference between the normals as a weight
normDiff
=
1
.
0
-
dot
(
occNorm
,
norm
);
// the falloff equation, starts at falloff and is kind of 1/x^2 falling
bl
+=
step
(
falloff
,
depthDifference
)
*
1
.
0
*
normDiff
*
(
1
.
0
-
smoothstep
(
falloff
,
strength
,
depthDifference
)
);
}
// output the result
return
1
.
0
-
(
totStrength
*
bl
*
invSamples
);
}
/**
* Calculate the cel-shading of a specified color. The number of colors is defined by the u_celShadingSamples uniform.
*
...
...
@@ -512,6 +417,30 @@ vec4 getCelShading()
return
getCelShading
(
getColor
()
);
}
/**
* Returns a fade-out factor basing on pixel depth for the specified pixel
*
* \param where pixel coordinate
*
* \return the fade-out factor.
*/
float
getDepthFading
(
vec2
where
)
{
// TODO(ebaum): add uniforms for this limits
float
invD
=
(
1
.
0
-
getDepth
(
where
)
);
return
smoothstep
(
0
.
20
,
0
.
5
,
invD
);
}
/**
* Returns a fade-out factor basing on pixel depth for the current pixel.
*
* \return the fade-out factor.
*/
float
getDepthFading
()
{
return
getDepthFading
(
pixelCoord
);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Main
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
...
...
@@ -545,14 +474,14 @@ void main()
blendScale
(
getPPLPhong
()
);
#endif
#ifdef WGE_POSTPROCESSOR_SSAO
blendScale
(
getSSAO
()
);
#endif
#ifdef WGE_POSTPROCESSOR_CELSHADING
blend
(
getCelShading
()
);
#endif
#ifdef WGE_POSTPROCESSOR_DEPTHFADING
blendScale
(
getDepthFading
()
);
#endif
#ifdef WGE_POSTPROCESSOR_EDGE
blendAdd
(
getEdge
()
);
#endif
...
...
src/modules/fiberDisplaySimple/WMFiberDisplaySimple.cpp
View file @
3a7affac
...
...
@@ -31,7 +31,6 @@
#include "../../dataHandler/WDataTexture3D.h"
#include "../../graphicsEngine/callbacks/WGEFunctorCallback.h"
#include "../../graphicsEngine/callbacks/WGENodeMaskCallback.h"
#include "../../graphicsEngine/postprocessing/WGEPostprocessingNode.h"
#include "../../graphicsEngine/shaders/WGEShader.h"
#include "../../graphicsEngine/shaders/WGEShaderDefineOptions.h"
#include "../../graphicsEngine/shaders/WGEShaderPropertyDefineOptions.h"
...
...
@@ -94,7 +93,7 @@ void WMFiberDisplaySimple::properties()
m_clipPlaneGroup
=
m_properties
->
addPropertyGroup
(
"Clipping"
,
"Clip the fiber data basing on an arbitrary plane."
);
m_clipPlaneEnabled
=
m_clipPlaneGroup
->
addProperty
(
"Enabled"
,
"If set, clipping of fibers is done using an arbitrary plane and plane distance."
,
false
);
m_clipPlaneShowPlane
=
m_clipPlaneGroup
->
addProperty
(
"Show Clip Plane"
,
"If set, the clipping plane will be shown."
,
tru
e
);
m_clipPlaneShowPlane
=
m_clipPlaneGroup
->
addProperty
(
"Show Clip Plane"
,
"If set, the clipping plane will be shown."
,
fals
e
);
m_clipPlanePoint
=
m_clipPlaneGroup
->
addProperty
(
"Plane point"
,
"An point on the plane."
,
wmath
::
WPosition
(
0.0
,
0.0
,
0.0
)
);
m_clipPlaneVector
=
m_clipPlaneGroup
->
addProperty
(
"Plane normal"
,
"The normal of the plane."
,
wmath
::
WPosition
(
1.0
,
0.0
,
0.0
)
);
m_clipPlaneDistance
=
m_clipPlaneGroup
->
addProperty
(
"Clip distance"
,
"The distance from the plane where fibers get clipped."
,
10.0
);
...
...
@@ -146,19 +145,9 @@ void WMFiberDisplaySimple::moduleMain()
ready
();
// create the post-processing node which actually does the nice stuff to the rendered image
osg
::
ref_ptr
<
WGEPostprocessingNode
>
postNode
=
new
WGEPostprocessingNode
(
WKernel
::
getRunningKernel
()
->
getGraphicsEngine
()
->
getViewer
()
->
getCamera
()
);
postNode
->
setEnabled
(
false
);
// do not use it by default
postNode
->
addUpdateCallback
(
new
WGENodeMaskCallback
(
m_active
)
);
// disable the postNode with m_active
WKernel
::
getRunningKernel
()
->
getGraphicsEngine
()
->
getScene
()
->
insert
(
postNode
);
// provide the properties of the post-processor to the user
m_properties
->
addProperty
(
postNode
->
getProperties
()
);
// this node keeps the geode
osg
::
ref_ptr
<
WGEGroupNode
>
rootNode
=
osg
::
ref_ptr
<
WGEGroupNode
>
(
new
WGEGroupNode
()
);
postNode
->
insert
(
rootNode
,
m_shader
);
osg
::
ref_ptr
<
WGE
Managed
GroupNode
>
rootNode
=
osg
::
ref_ptr
<
WGE
Managed
GroupNode
>
(
new
WGE
Managed
GroupNode
(
m_active
)
);
WKernel
::
getRunningKernel
()
->
getGraphicsEngine
()
->
getScene
()
->
insert
(
rootNode
);
// needed to observe the properties of the input connector data
boost
::
shared_ptr
<
WPropertyObserver
>
propObserver
=
WPropertyObserver
::
create
();
...
...
@@ -347,7 +336,7 @@ void WMFiberDisplaySimple::moduleMain()
// At this point, the container managing this module signalled to shutdown. The main loop has ended and you should clean up. Always remove
// allocated memory and remove all OSG nodes.
WKernel
::
getRunningKernel
()
->
getGraphicsEngine
()
->
getScene
()
->
remove
(
pos
tNode
);
WKernel
::
getRunningKernel
()
->
getGraphicsEngine
()
->
getScene
()
->
remove
(
roo
tNode
);
}
void
WMFiberDisplaySimple
::
clipPlaneCallback
(
osg
::
Node
*
node
)
...
...
src/modules/fiberDisplaySimple/shaders/WMFiberDisplaySimple-fragment.glsl
View file @
3a7affac
...
...
@@ -24,6 +24,8 @@
#version 120
#include "WGETextureTools.glsl"
/////////////////////////////////////////////////////////////////////////////
// Varyings
/////////////////////////////////////////////////////////////////////////////
...
...
@@ -70,6 +72,5 @@ void main()
#endif
gl_FragColor
=
gl_Color
;
gl_FragDepth
=
gl_FragCoord
.
z
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment