Subversion Repository Public Repository

Divide-Framework

This repository has no backups
This repository's network speed is throttled to 100KB/sec

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
-- Vertex

in vec3  inVertexData;
in vec2  inTexCoordData;
vec4  dvd_Vertex;

#if defined(USE_GPU_SKINNING)
in vec4  inBoneWeightData;
in ivec4 inBoneIndiceData;

vec4  dvd_BoneWeight;
ivec4 dvd_BoneIndice;

uniform bool hasAnimations;
uniform mat4 boneTransforms[60];
#endif

out vec4 _vertexMV;
out vec2 _texCoord;
uniform mat4 dvd_ModelViewMatrix;

layout(std140) uniform dvd_MatrixBlock
{
    mat4 dvd_ProjectionMatrix;
	mat4 dvd_ViewMatrix;
};

void computeData(void){

	dvd_Vertex = vec4(inVertexData,1.0);
	_texCoord       = inTexCoordData;

#if defined(USE_GPU_SKINNING)
	dvd_BoneWeight = inBoneWeightData;
	dvd_BoneIndice = inBoneIndiceData;
#endif
}

#if defined(USE_GPU_SKINNING)
void applyBoneTransforms(inout vec4 position){
	if(hasAnimations) {
	 // ///w - weight value
	  dvd_BoneWeight.w = 1.0 - dot(dvd_BoneWeight.xyz, vec3(1.0, 1.0, 1.0));

	   vec4 newPosition  = dvd_BoneWeight.x * boneTransforms[dvd_BoneIndice.x] * position;
		    newPosition += dvd_BoneWeight.y * boneTransforms[dvd_BoneIndice.y] * position;
		    newPosition += dvd_BoneWeight.z * boneTransforms[dvd_BoneIndice.z] * position;
		    newPosition += dvd_BoneWeight.w * boneTransforms[dvd_BoneIndice.w] * position;

	  position = newPosition;
	}
}
#endif

void main(void){

	computeData();
#if defined(USE_GPU_SKINNING)
	applyBoneTransforms(dvd_Vertex);
#endif
	// Transformed position 
	_vertexMV = dvd_ModelViewMatrix * dvd_Vertex;
	//Compute the final vert position
	gl_Position = dvd_ProjectionMatrix * _vertexMV;
}

-- Fragment

in vec2 _texCoord;
in vec4 _vertexMV;
out vec4 _colorOut;
//Opacity and specular maps
uniform float opacity;
#if defined(USE_OPACITY_MAP)
//Opacity and specular maps
uniform sampler2D texOpacityMap;
#endif

void main(){

	float opacityValue = opacity;
#if defined(USE_OPACITY_MAP)
	opacityValue = 1.1 - texture(texOpacityMap, _texCoord).a;
#endif

	/*if(opacityValue < ALPHA_DISCARD_THRESHOLD)
		gl_FragDepth = 1.0; //Discard for depth, basically*/

	float depth = (_vertexMV.z / _vertexMV.w) * 0.5 + 0.5;
	// Adjusting moments (this is sort of bias per pixel) using partial derivative
	float dx = dFdx(depth);
	float dy = dFdy(depth);
	_colorOut =  vec4(depth , (depth * depth) + 0.25 * (dx * dx + dy * dy), 0.0, 0.0);
}

Commits for Divide-Framework/trunk/assets/shaders/GLSL/depthPass.glsl

Diff revisions: vs.
Revision Author Commited Message
168 Diff Diff k1ngp1n picture k1ngp1n Sat 26 Oct, 2013 19:03:21 +0000

- Reworked the Camera class[[BR]]
— Now fully quaternion based [[BR]]
— Basic camera types added but not used yet (third person, first person, orbit) [[BR]]
- Cleaned up Material and Texture handling [[BR]]
- Added clipping plane support [[BR]]
— Similar to OpenGL fixed-function clip planes but fully shader driven [[BR]]
— Added a new class, “Plane”, that helps define clip planes [[BR]]
- Optimized the Singleton class to allow faster “getInstance” calls without performance penalties [[BR]]
-- “createInstance” must be called for each singleton class before usage. Or “gerOrCreateInstance” can be used, which is basically the former “getInstance” implementation [[BR]]
- Improved console logging by changing some heap allocations to stack and removing dependencies on the std::string class [[BR]]
- Added a lot of performance optimizations related to coding standards and redundant calculations [[BR]]
— e.g. Frustum AABB check didn’t need to recompute the AABB points as they were calculated already [[BR]]
— e.g. A vector did not need to be set to 0 on initialization as that is already it’s default state on creation [[BR]]
— e.g. Faster Framerate and Timing calculations by using less member variables that are not needed outsied of calling functions [[BR]]
- The SceneState now contains the SceneRenderState and is passed on to the SceneGraph’s update calls [[BR]]
- Better material export/import to/from XML format [[BR]]
- More bug fixes and cleanups [[BR]]

152 Diff Diff k1ngp1n picture k1ngp1n Thu 20 Jun, 2013 14:23:31 +0000

[Ionut] [[BR]]
- New rendering pipeline (experimental and unstable): [[BR]]
— OpenGL 3.x clean context (glLight commands are still used for now, but UBO support is there, but not used yet) [[BR]]
— Custom matrix stacks and UBO based shader data (UBOs cause some link errors on some nVidia cards)[[BR]]
— Multi-threaded texture loading and shader compilation (mt shader compilation disabled for now. needs more tests) [[BR]]
— VAO rendering is self contained (no more enable/disable calls before a draw request) [[BR]]
— Render instance class used for rendering information [[BR]]
[[BR]]
- New unique ID generation base class: GUIDWrapper. Each class that derives from this, gets an application wide unique id on construction [[BR]]
- Added base code for an in-game editor using CEGUI [[BR]]
- Replaced some mutex locks with lockless data structures or atomic data [[BR]]
- CEGUI 0.8.2, FTGL-GL3 and GLIM 0.4 modified to support GLEW_MX if defined [[BR]]
- Dropped VS2008 support [[BR]]
- Networking library, server framework and ReCast files are now projects inside the Divide Framework solution [[BR]]
- New console command “setFov” that modifies the horizontal FoV value in realtime [[BR]]
- New console command “recompileShader” that reparses shader files, recompiles shaders and relinks shader programs who’s names match or contain the argument string [[BR]]
- New debug utility: axis angle drawn in corner of the screen if needed [[BR]]
- More ‘const’-s pasted around the code, more loop performance tweaks (allocations before a loop, tighter loops, etc), more utility member functions added to various classes [[BR]]

146 k1ngp1n picture k1ngp1n Wed 10 Apr, 2013 13:20:15 +0000

[Ionut] [[BR]]
*Final LightBranch updates 2/3 : Main trunk merge and build test (VC90, VC100, gDebugger) [[BR]]
-Merged light branch with trunk [[BR]]
-Deleted light branch [[BR]]