mirror of
https://github.com/JulianGro/overte.git
synced 2025-08-05 12:39:39 +02:00
Working on GL 4.1
This commit is contained in:
parent
be34b3c475
commit
f51c43f90d
8 changed files with 52 additions and 50 deletions
|
@ -11,18 +11,8 @@
|
||||||
<@if not GPU_CONFIG_SLH@>
|
<@if not GPU_CONFIG_SLH@>
|
||||||
<@def GPU_CONFIG_SLH@>
|
<@def GPU_CONFIG_SLH@>
|
||||||
|
|
||||||
<@if GLPROFILE == PC_GL @>
|
<@def GPU_FEATURE_PROFILE GPU_CORE@>
|
||||||
<@def GPU_FEATURE_PROFILE GPU_CORE@>
|
<@def GPU_TRANSFORM_PROFILE GPU_CORE@>
|
||||||
<@def GPU_TRANSFORM_PROFILE GPU_CORE@>
|
<@def VERSION_HEADER #version 410 core@>
|
||||||
<@def VERSION_HEADER #version 430 compatibility@>
|
|
||||||
<@elif GLPROFILE == MAC_GL @>
|
|
||||||
<@def GPU_FEATURE_PROFILE GPU_LEGACY@>
|
|
||||||
<@def GPU_TRANSFORM_PROFILE GPU_LEGACY@>
|
|
||||||
<@def VERSION_HEADER #version 120@>
|
|
||||||
<@else@>
|
|
||||||
<@def GPU_FEATURE_PROFILE GPU_LEGACY@>
|
|
||||||
<@def GPU_TRANSFORM_PROFILE GPU_LEGACY@>
|
|
||||||
<@def VERSION_HEADER #version 120@>
|
|
||||||
<@endif@>
|
|
||||||
|
|
||||||
<@endif@>
|
<@endif@>
|
||||||
|
|
26
libraries/gpu/src/gpu/Inputs.slh
Normal file
26
libraries/gpu/src/gpu/Inputs.slh
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
<!
|
||||||
|
// Config.slh
|
||||||
|
// interface/src
|
||||||
|
//
|
||||||
|
// Created by Bradley Austin Davis on 2015/06/19.
|
||||||
|
// Copyright 2015 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
!>
|
||||||
|
<@if not GPU_INPUTS_SLH@>
|
||||||
|
<@def GPU_INPUTS_SLH@>
|
||||||
|
|
||||||
|
layout(location = 0) in vec4 inPosition;
|
||||||
|
layout(location = 1) in vec3 inNormal;
|
||||||
|
layout(location = 2) in vec4 inColor;
|
||||||
|
layout(location = 3) in vec2 inTexCoord0;
|
||||||
|
layout(location = 4) in vec3 inTangent;
|
||||||
|
layout(location = 5) in ivec4 inSkinClusterIndex;
|
||||||
|
layout(location = 6) in vec4 inSkinClusterWeight;
|
||||||
|
layout(location = 7) in vec2 inTexCoord1;
|
||||||
|
layout(location = 8) in mat4 inInstanceXfm;
|
||||||
|
layout(location = 9) in vec2 inInstanceScale;
|
||||||
|
layout(location = 10) in vec2 inInstanceTranslate;
|
||||||
|
|
||||||
|
<@endif@>
|
|
@ -27,13 +27,17 @@ public:
|
||||||
// Possible input slots identifiers
|
// Possible input slots identifiers
|
||||||
enum InputSlot {
|
enum InputSlot {
|
||||||
POSITION = 0,
|
POSITION = 0,
|
||||||
NORMAL,
|
NORMAL = 1,
|
||||||
COLOR,
|
COLOR = 2,
|
||||||
TEXCOORD,
|
TEXCOORD0 = 3,
|
||||||
TANGENT,
|
TEXCOORD = TEXCOORD0,
|
||||||
SKIN_CLUSTER_INDEX,
|
TANGENT = 4,
|
||||||
SKIN_CLUSTER_WEIGHT,
|
SKIN_CLUSTER_INDEX = 5,
|
||||||
TEXCOORD1,
|
SKIN_CLUSTER_WEIGHT = 6,
|
||||||
|
TEXCOORD1 = 7,
|
||||||
|
INSTANCE_XFM = 8,
|
||||||
|
INSTANCE_SCALE = 9,
|
||||||
|
INSTANCE_TRANSLATE = 10,
|
||||||
|
|
||||||
NUM_INPUT_SLOTS,
|
NUM_INPUT_SLOTS,
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,28 +19,19 @@ struct Skybox {
|
||||||
vec4 _color;
|
vec4 _color;
|
||||||
};
|
};
|
||||||
|
|
||||||
<@if GPU_FEATURE_PROFILE == GPU_CORE @>
|
|
||||||
uniform skyboxBuffer {
|
uniform skyboxBuffer {
|
||||||
Skybox _skybox;
|
Skybox _skybox;
|
||||||
};
|
};
|
||||||
Skybox getSkybox() {
|
Skybox getSkybox() {
|
||||||
return _skybox;
|
return _skybox;
|
||||||
}
|
}
|
||||||
<@else@>
|
|
||||||
uniform vec4 skyboxBuffer[1];
|
|
||||||
Skybox getSkybox() {
|
|
||||||
Skybox _skybox;
|
|
||||||
_skybox._color = skyboxBuffer[0];
|
|
||||||
return _skybox;
|
|
||||||
}
|
|
||||||
<@endif@>
|
|
||||||
|
|
||||||
varying vec3 normal;
|
varying vec3 normal;
|
||||||
varying vec2 texcoord;
|
varying vec2 texcoord;
|
||||||
varying vec3 color;
|
varying vec3 color;
|
||||||
|
|
||||||
void main(void) {
|
void main(void) {
|
||||||
texcoord = gl_Vertex.xy;
|
texcoord = inPosition.xy;
|
||||||
|
|
||||||
Skybox skybox = getSkybox();
|
Skybox skybox = getSkybox();
|
||||||
color = skybox._color.xyz;
|
color = skybox._color.xyz;
|
||||||
|
|
|
@ -14,5 +14,5 @@
|
||||||
|
|
||||||
void main(void) {
|
void main(void) {
|
||||||
gl_TexCoord[0] = gl_MultiTexCoord0;
|
gl_TexCoord[0] = gl_MultiTexCoord0;
|
||||||
gl_Position = gl_Vertex;
|
gl_Position = inPosition;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,9 @@
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
//
|
||||||
|
|
||||||
|
<@include gpu/Input.slh@>
|
||||||
|
|
||||||
|
|
||||||
void main(void) {
|
void main(void) {
|
||||||
gl_Position = ftransform();
|
gl_Position = ftransform();
|
||||||
vec4 projected = gl_Position / gl_Position.w;
|
vec4 projected = gl_Position / gl_Position.w;
|
||||||
|
|
|
@ -14,16 +14,14 @@
|
||||||
|
|
||||||
<@include gpu/Transform.slh@>
|
<@include gpu/Transform.slh@>
|
||||||
|
|
||||||
|
<@include gpu/Inputs.slh@>
|
||||||
|
|
||||||
<$declareStandardTransform()$>
|
<$declareStandardTransform()$>
|
||||||
|
|
||||||
const int MAX_TEXCOORDS = 2;
|
const int MAX_TEXCOORDS = 2;
|
||||||
|
|
||||||
uniform mat4 texcoordMatrices[MAX_TEXCOORDS];
|
uniform mat4 texcoordMatrices[MAX_TEXCOORDS];
|
||||||
|
|
||||||
// the tangent vector
|
|
||||||
attribute vec3 tangent;
|
|
||||||
|
|
||||||
attribute vec2 texcoord1;
|
|
||||||
|
|
||||||
// the interpolated normal
|
// the interpolated normal
|
||||||
varying vec4 interpolatedNormal;
|
varying vec4 interpolatedNormal;
|
||||||
|
@ -51,9 +49,9 @@ void main(void) {
|
||||||
// standard transform
|
// standard transform
|
||||||
TransformCamera cam = getTransformCamera();
|
TransformCamera cam = getTransformCamera();
|
||||||
TransformObject obj = getTransformObject();
|
TransformObject obj = getTransformObject();
|
||||||
<$transformModelToClipPos(cam, obj, gl_Vertex, gl_Position)$>
|
<$transformModelToClipPos(cam, obj, inPosition, gl_Position)$>
|
||||||
<$transformModelToEyeDir(cam, obj, gl_Normal, interpolatedNormal.xyz)$>
|
<$transformModelToEyeDir(cam, obj, inNormal, interpolatedNormal.xyz)$>
|
||||||
<$transformModelToEyeDir(cam, obj, tangent, interpolatedTangent.xyz)$>
|
<$transformModelToEyeDir(cam, obj, inTangent, interpolatedTangent.xyz)$>
|
||||||
|
|
||||||
interpolatedNormal = vec4(normalize(interpolatedNormal.xyz), 0.0);
|
interpolatedNormal = vec4(normalize(interpolatedNormal.xyz), 0.0);
|
||||||
interpolatedTangent = vec4(normalize(interpolatedTangent.xyz), 0.0);
|
interpolatedTangent = vec4(normalize(interpolatedTangent.xyz), 0.0);
|
||||||
|
|
|
@ -188,21 +188,11 @@ int main (int argc, char** argv) {
|
||||||
std::ostringstream targetStringStream;
|
std::ostringstream targetStringStream;
|
||||||
if (makeCPlusPlus) {
|
if (makeCPlusPlus) {
|
||||||
targetStringStream << "// File generated by Scribe " << vars["_SCRIBE_DATE"] << std::endl;
|
targetStringStream << "// File generated by Scribe " << vars["_SCRIBE_DATE"] << std::endl;
|
||||||
|
|
||||||
targetStringStream << "#ifndef scribe_" << targetName << "_h" << std::endl;
|
targetStringStream << "#ifndef scribe_" << targetName << "_h" << std::endl;
|
||||||
targetStringStream << "#define scribe_" << targetName << "_h" << std::endl << std::endl;
|
targetStringStream << "#define scribe_" << targetName << "_h" << std::endl << std::endl;
|
||||||
|
// targetStringStream << "const char " << targetName << "[] = R\"XXXX(" << destStringStream.str() << ")XXXX\";";
|
||||||
// targetStringStream << "const char " << targetName << "[] = R\"XXXX(" << destStringStream.str() << ")XXXX\";";
|
|
||||||
std::istringstream destStringStreamAgain(destStringStream.str());
|
|
||||||
targetStringStream << "const char " << targetName << "[] = \n";
|
targetStringStream << "const char " << targetName << "[] = \n";
|
||||||
while (!destStringStreamAgain.eof()) {
|
targetStringStream << "R\"SHADER(" << destStringStream.str() << ")SHADER\";\n\n";
|
||||||
std::string lineToken;
|
|
||||||
std::getline(destStringStreamAgain, lineToken);
|
|
||||||
// targetStringStream << "\"" << lineToken << "\"\n";
|
|
||||||
targetStringStream << "R\"X(" << lineToken << ")X\"\"\\n\"\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
targetStringStream << ";\n" << std::endl << std::endl;
|
|
||||||
targetStringStream << "#endif" << std::endl;
|
targetStringStream << "#endif" << std::endl;
|
||||||
} else {
|
} else {
|
||||||
targetStringStream << destStringStream.str();
|
targetStringStream << destStringStream.str();
|
||||||
|
|
Loading…
Reference in a new issue