mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-04-23 20:50:59 -05:00
refactor abuffer and add msaa support. volumes temporarily disabled.
This commit is contained in:
@@ -23,6 +23,8 @@
|
||||
****************************************************************************************/
|
||||
|
||||
// openspace
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
#include <modules/base/rendering/renderableconstellationbounds.h>
|
||||
#include <openspace/util/spicemanager.h>
|
||||
#include <openspace/util/updatestructures.h>
|
||||
@@ -90,9 +92,11 @@ RenderableConstellationBounds::~RenderableConstellationBounds() {
|
||||
}
|
||||
|
||||
bool RenderableConstellationBounds::initialize() {
|
||||
_program = ghoul::opengl::ProgramObject::Build("ConstellationBounds",
|
||||
"${MODULE_BASE}/shaders/constellationbounds_vs.glsl",
|
||||
"${MODULE_BASE}/shaders/constellationbounds_fs.glsl");
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
_program = renderEngine->buildRenderProgram("ConstellationBounds",
|
||||
"${MODULE_BASE}/shaders/constellationbounds_vs.glsl",
|
||||
"${MODULE_BASE}/shaders/constellationbounds_fs.glsl");
|
||||
|
||||
if (!_program)
|
||||
return false;
|
||||
|
||||
@@ -138,8 +142,11 @@ bool RenderableConstellationBounds::deinitialize() {
|
||||
glDeleteVertexArrays(1, &_vao);
|
||||
_vao = 0;
|
||||
|
||||
delete _program;
|
||||
_program = nullptr;
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
if (_program) {
|
||||
renderEngine->removeRenderProgram(_program);
|
||||
_program = nullptr;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -176,9 +183,6 @@ void RenderableConstellationBounds::render(const RenderData& data) {
|
||||
}
|
||||
|
||||
void RenderableConstellationBounds::update(const UpdateData& data) {
|
||||
if (_program->isDirty())
|
||||
_program->rebuildFromFile();
|
||||
|
||||
SpiceManager::ref().getPositionTransformMatrix(
|
||||
_originReferenceFrame,
|
||||
"GALACTIC",
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
// ie after I see model on screen)
|
||||
|
||||
// open space includes
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
#include <modules/base/rendering/renderablemodel.h>
|
||||
#include <openspace/util/constants.h>
|
||||
#include <modules/base/rendering/modelgeometry.h>
|
||||
@@ -126,9 +127,12 @@ bool RenderableModel::initialize() {
|
||||
bool completeSuccess = true;
|
||||
if (_programObject == nullptr) {
|
||||
// NH shader
|
||||
_programObject = ghoul::opengl::ProgramObject::Build("ModelProgram",
|
||||
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
_programObject = renderEngine->buildRenderProgram("ModelProgram",
|
||||
"${MODULE_BASE}/shaders/model_vs.glsl",
|
||||
"${MODULE_BASE}/shaders/model_fs.glsl");
|
||||
|
||||
if (!_programObject)
|
||||
return false;
|
||||
}
|
||||
@@ -152,8 +156,12 @@ bool RenderableModel::deinitialize() {
|
||||
delete _texture;
|
||||
_texture = nullptr;
|
||||
|
||||
delete _programObject;
|
||||
_programObject = nullptr;
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
if (_programObject) {
|
||||
renderEngine->removeRenderProgram(_programObject);
|
||||
_programObject = nullptr;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <ghoul/opengl/programobject.h>
|
||||
#include <ghoul/misc/highresclock.h>
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
#include <openspace/interaction/interactionhandler.h>
|
||||
#include <fstream>
|
||||
|
||||
@@ -99,10 +100,12 @@ bool RenderablePath::initialize() {
|
||||
}
|
||||
|
||||
bool completeSuccess = true;
|
||||
_programObject = ghoul::opengl::ProgramObject::Build("PathProgram",
|
||||
"${MODULE_BASE}/shaders/path_vs.glsl",
|
||||
"${MODULE_BASE}/shaders/path_fs.glsl"
|
||||
);
|
||||
|
||||
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
_programObject = renderEngine->buildRenderProgram("PathProgram",
|
||||
"${MODULE_BASE}/shaders/path_vs.glsl",
|
||||
"${MODULE_BASE}/shaders/path_fs.glsl");
|
||||
if (!_programObject)
|
||||
return false;
|
||||
|
||||
@@ -124,8 +127,11 @@ bool RenderablePath::deinitialize() {
|
||||
glDeleteBuffers(1, &_vBufferID);
|
||||
_vBufferID = 0;
|
||||
|
||||
delete _programObject;
|
||||
_programObject = nullptr;
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
if (_programObject) {
|
||||
renderEngine->removeRenderProgram(_programObject);
|
||||
_programObject = nullptr;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -144,9 +144,12 @@ bool RenderablePlane::initialize() {
|
||||
|
||||
if (_shader == nullptr) {
|
||||
// Plane Program
|
||||
_shader = ghoul::opengl::ProgramObject::Build("PlaneProgram",
|
||||
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
_shader = renderEngine->buildRenderProgram("PlaneProgram",
|
||||
"${MODULE_BASE}/shaders/plane_vs.glsl",
|
||||
"${MODULE_BASE}/shaders/plane_fs.glsl");
|
||||
"${MODULE_BASE}/shaders/plane_fs.glsl"
|
||||
);
|
||||
if (!_shader)
|
||||
return false;
|
||||
}
|
||||
@@ -173,8 +176,11 @@ bool RenderablePlane::deinitialize() {
|
||||
delete _textureFile;
|
||||
_textureFile = nullptr;
|
||||
|
||||
delete _shader;
|
||||
_shader = nullptr;
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
if (_shader) {
|
||||
renderEngine->removeRenderProgram(_shader);
|
||||
_shader = nullptr;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
#include <openspace/engine/configurationmanager.h>
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
#include <modules/base/rendering/planetgeometry.h>
|
||||
#include <openspace/util/constants.h>
|
||||
#include <openspace/util/time.h>
|
||||
@@ -122,10 +123,26 @@ RenderablePlanet::~RenderablePlanet() {
|
||||
}
|
||||
|
||||
bool RenderablePlanet::initialize() {
|
||||
if (_programObject == nullptr && _hasNightTexture)
|
||||
OsEng.ref().configurationManager()->getValue("nightTextureProgram", _programObject);
|
||||
else if (_programObject == nullptr)
|
||||
OsEng.ref().configurationManager()->getValue("pscShader", _programObject);
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
if (_programObject == nullptr && _hasNightTexture) {
|
||||
// Night texture program
|
||||
_programObject = renderEngine->buildRenderProgram(
|
||||
"nightTextureProgram",
|
||||
"${SHADERS}/nighttexture_vs.glsl",
|
||||
"${SHADERS}/nighttexture_fs.glsl");
|
||||
if (!_programObject) return false;
|
||||
}
|
||||
else if (_programObject == nullptr) {
|
||||
// pscstandard
|
||||
_programObject = renderEngine->buildRenderProgram(
|
||||
"pscstandard",
|
||||
"${SHADERS}/pscstandard_vs.glsl",
|
||||
"${SHADERS}/pscstandard_fs.glsl");
|
||||
if (!_programObject) return false;
|
||||
|
||||
}
|
||||
_programObject->setIgnoreSubroutineUniformLocationError(true);
|
||||
|
||||
|
||||
loadTexture();
|
||||
_geometry->initialize(this);
|
||||
@@ -143,6 +160,12 @@ bool RenderablePlanet::deinitialize() {
|
||||
if (_nightTexture)
|
||||
delete _nightTexture;
|
||||
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
if (_programObject) {
|
||||
renderEngine->removeRenderProgram(_programObject);
|
||||
_programObject = nullptr;
|
||||
}
|
||||
|
||||
_geometry = nullptr;
|
||||
_texture = nullptr;
|
||||
_nightTexture = nullptr;
|
||||
@@ -206,6 +229,10 @@ void RenderablePlanet::render(const RenderData& data)
|
||||
_nightTexture->bind();
|
||||
_programObject->setUniform("nightTex", nightUnit);
|
||||
}
|
||||
|
||||
glEnable(GL_CULL_FACE);
|
||||
glCullFace(GL_BACK);
|
||||
|
||||
// render
|
||||
_geometry->render();
|
||||
|
||||
|
||||
@@ -22,10 +22,12 @@
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
|
||||
#include <modules/base/rendering/renderablesphere.h>
|
||||
#include <openspace/util/constants.h>
|
||||
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
#include <ghoul/io/texture/texturereader.h>
|
||||
#include <ghoul/opengl/textureunit.h>
|
||||
#include <ghoul/filesystem/filesystem.h>
|
||||
@@ -116,7 +118,8 @@ bool RenderableSphere::initialize() {
|
||||
_sphere->initialize();
|
||||
|
||||
// pscstandard
|
||||
_shader = ghoul::opengl::ProgramObject::Build("Sphere",
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
_shader = renderEngine->buildRenderProgram("Sphere",
|
||||
"${MODULES}/base/shaders/sphere_vs.glsl",
|
||||
"${MODULES}/base/shaders/sphere_fs.glsl");
|
||||
if (!_shader)
|
||||
@@ -134,8 +137,11 @@ bool RenderableSphere::deinitialize() {
|
||||
delete _texture;
|
||||
_texture = nullptr;
|
||||
|
||||
delete _shader;
|
||||
_shader = nullptr;
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
if (_shader) {
|
||||
renderEngine->removeRenderProgram(_shader);
|
||||
_shader = nullptr;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -154,7 +160,6 @@ void RenderableSphere::render(const RenderData& data) {
|
||||
_shader->setUniform("ViewProjection", data.camera.viewProjectionMatrix());
|
||||
_shader->setUniform("ModelTransform", transform);
|
||||
setPscUniforms(_shader, &data.camera, data.position);
|
||||
|
||||
_shader->setUniform("alpha", _transparency);
|
||||
|
||||
ghoul::opengl::TextureUnit unit;
|
||||
@@ -162,6 +167,9 @@ void RenderableSphere::render(const RenderData& data) {
|
||||
_texture->bind();
|
||||
_shader->setUniform("texture1", unit);
|
||||
|
||||
glEnable(GL_CULL_FACE);
|
||||
glCullFace(GL_BACK);
|
||||
|
||||
_sphere->render();
|
||||
|
||||
_shader->setIgnoreUniformLocationError(false);
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
#include <modules/base/rendering/renderablestars.h>
|
||||
|
||||
#include <openspace/util/updatestructures.h>
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
|
||||
#include <ghoul/filesystem/filesystem>
|
||||
#include <ghoul/misc/templatefactory.h>
|
||||
@@ -90,8 +92,8 @@ RenderableStars::RenderableStars(const ghoul::Dictionary& dictionary)
|
||||
, _colorTextureIsDirty(true)
|
||||
, _colorOption("colorOption", "Color Option")
|
||||
, _dataIsDirty(true)
|
||||
, _scaleFactor("scaleFactor", "Scale Factor", 5.f, 0.f, 10.f)
|
||||
, _minBillboardSize("minBillboardSize", "Min Billboard Size", 15.f, 1.f, 100.f)
|
||||
, _scaleFactor("scaleFactor", "Scale Factor", 1.f, 0.f, 10.f)
|
||||
, _minBillboardSize("minBillboardSize", "Min Billboard Size", 1.f, 1.f, 100.f)
|
||||
, _program(nullptr)
|
||||
, _speckFile("")
|
||||
, _nValuesPerStar(0)
|
||||
@@ -147,10 +149,12 @@ bool RenderableStars::isReady() const {
|
||||
bool RenderableStars::initialize() {
|
||||
bool completeSuccess = true;
|
||||
|
||||
_program = ghoul::opengl::ProgramObject::Build("Star",
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
_program = renderEngine->buildRenderProgram("Star",
|
||||
"${MODULE_BASE}/shaders/star_vs.glsl",
|
||||
"${MODULE_BASE}/shaders/star_fs.glsl",
|
||||
"${MODULE_BASE}/shaders/star_ge.glsl");
|
||||
|
||||
if (!_program)
|
||||
return false;
|
||||
completeSuccess &= loadData();
|
||||
@@ -168,17 +172,16 @@ bool RenderableStars::deinitialize() {
|
||||
delete _pointSpreadFunctionTexture;
|
||||
_pointSpreadFunctionTexture = nullptr;
|
||||
|
||||
if(_program)
|
||||
delete _program;
|
||||
_program = nullptr;
|
||||
return true;
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
if (_program) {
|
||||
renderEngine->removeRenderProgram(_program);
|
||||
_program = nullptr;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void RenderableStars::render(const RenderData& data) {
|
||||
//glEnable(GL_BLEND);
|
||||
//glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
|
||||
glDepthMask(false);
|
||||
_program->activate();
|
||||
|
||||
// @Check overwriting the scaling from the camera; error as parsec->meter conversion
|
||||
@@ -223,16 +226,10 @@ void RenderableStars::render(const RenderData& data) {
|
||||
_program->setIgnoreUniformLocationError(false);
|
||||
_program->deactivate();
|
||||
|
||||
//glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glDepthMask(true);
|
||||
}
|
||||
|
||||
void RenderableStars::update(const UpdateData& data) {
|
||||
if (_program->isDirty()) {
|
||||
_program->rebuildFromFile();
|
||||
_dataIsDirty = true;
|
||||
}
|
||||
|
||||
if (_dataIsDirty) {
|
||||
const int value = _colorOption;
|
||||
LDEBUG("Regenerating data");
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <ghoul/opengl/programobject.h>
|
||||
#include <ghoul/misc/highresclock.h>
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
#include <openspace/interaction/interactionhandler.h>
|
||||
|
||||
#include <limits>
|
||||
@@ -119,9 +120,13 @@ bool RenderableTrail::initialize() {
|
||||
}
|
||||
|
||||
bool completeSuccess = true;
|
||||
_programObject = ghoul::opengl::ProgramObject::Build("EphemerisProgram",
|
||||
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
_programObject = renderEngine->buildRenderProgram("EphemerisProgram",
|
||||
"${MODULE_BASE}/shaders/ephemeris_vs.glsl",
|
||||
"${MODULE_BASE}/shaders/ephemeris_fs.glsl");
|
||||
|
||||
|
||||
if (!_programObject)
|
||||
return false;
|
||||
|
||||
@@ -131,6 +136,13 @@ bool RenderableTrail::initialize() {
|
||||
bool RenderableTrail::deinitialize() {
|
||||
glDeleteVertexArrays(1, &_vaoID);
|
||||
glDeleteBuffers(1, &_vBufferID);
|
||||
|
||||
RenderEngine* renderEngine = OsEng.renderEngine();
|
||||
if (_programObject) {
|
||||
renderEngine->removeRenderProgram(_programObject);
|
||||
_programObject = nullptr;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -198,8 +210,6 @@ void RenderableTrail::update(const UpdateData& data) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (_programObject->isDirty())
|
||||
_programObject->rebuildFromFile();
|
||||
double lightTime = 0.0;
|
||||
psc pscPos;
|
||||
|
||||
|
||||
@@ -22,24 +22,23 @@
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#version __CONTEXT__
|
||||
|
||||
uniform vec4 campos;
|
||||
uniform vec4 objpos;
|
||||
//uniform vec3 camdir; // add this for specular
|
||||
|
||||
in vec4 vs_position;
|
||||
|
||||
#include "ABuffer/abufferStruct.hglsl"
|
||||
#include "ABuffer/abufferAddToBuffer.hglsl"
|
||||
#include "PowerScaling/powerScaling_fs.hglsl"
|
||||
#include "fragment.glsl"
|
||||
|
||||
//#include "PowerScaling/powerScaling_vs.hglsl"
|
||||
void main()
|
||||
Fragment getFragment()
|
||||
{
|
||||
vec4 position = vs_position;
|
||||
float depth = pscDepth(position);
|
||||
Fragment frag;
|
||||
|
||||
ABufferStruct_t frag = createGeometryFragment(vec4(1.0, 0.0, 0.0, 1.0), position, depth);
|
||||
addToBuffer(frag);
|
||||
}
|
||||
frag.color = vec4(1.0, 0.0, 0.0, 1.0);
|
||||
frag.depth = depth;
|
||||
|
||||
return frag;
|
||||
}
|
||||
|
||||
@@ -22,8 +22,6 @@
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#version __CONTEXT__
|
||||
|
||||
in vec4 vs_point_position;
|
||||
in vec4 vs_point_velocity;
|
||||
in float fade;
|
||||
@@ -31,15 +29,17 @@ uniform float forceFade;
|
||||
|
||||
uniform vec3 color;
|
||||
|
||||
#include "ABuffer/abufferStruct.hglsl"
|
||||
#include "ABuffer/abufferAddToBuffer.hglsl"
|
||||
#include "PowerScaling/powerScaling_fs.hglsl"
|
||||
#include "fragment.glsl"
|
||||
|
||||
void main() {
|
||||
Fragment getFragment() {
|
||||
vec4 position = vs_point_position;
|
||||
float depth = pscDepth(position);
|
||||
|
||||
vec4 c = vec4(color, fade*forceFade);
|
||||
ABufferStruct_t frag = createGeometryFragment(c, position, depth);
|
||||
addToBuffer(frag);
|
||||
}
|
||||
Fragment frag;
|
||||
frag.color = c;
|
||||
frag.depth = depth;
|
||||
|
||||
return frag;
|
||||
}
|
||||
|
||||
@@ -22,19 +22,16 @@
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#version __CONTEXT__
|
||||
|
||||
uniform float time;
|
||||
uniform sampler2D texture1;
|
||||
|
||||
in vec2 vs_st;
|
||||
in vec4 vs_position;
|
||||
|
||||
#include "ABuffer/abufferStruct.hglsl"
|
||||
#include "ABuffer/abufferAddToBuffer.hglsl"
|
||||
#include "PowerScaling/powerScaling_fs.hglsl"
|
||||
#include "fragment.glsl"
|
||||
|
||||
void main()
|
||||
Fragment getFragment()
|
||||
{
|
||||
vec4 position = vs_position;
|
||||
float depth = pscDepth(position);
|
||||
@@ -44,7 +41,9 @@ void main()
|
||||
else {
|
||||
diffuse = vec4(0.8);
|
||||
}
|
||||
|
||||
ABufferStruct_t frag = createGeometryFragment(diffuse, position, depth);
|
||||
addToBuffer(frag);
|
||||
}
|
||||
|
||||
Fragment frag;
|
||||
frag.color = diffuse;
|
||||
frag.depth = depth;
|
||||
return frag;
|
||||
}
|
||||
|
||||
@@ -22,8 +22,6 @@
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#version __CONTEXT__
|
||||
|
||||
uniform vec4 campos;
|
||||
uniform vec4 objpos;
|
||||
uniform vec3 cam_dir; // add this for specular
|
||||
@@ -43,20 +41,16 @@ in vec2 vs_st;
|
||||
in vec4 vs_normal;
|
||||
in vec4 vs_position;
|
||||
|
||||
#include "ABuffer/abufferStruct.hglsl"
|
||||
#include "ABuffer/abufferAddToBuffer.hglsl"
|
||||
#include "PowerScaling/powerScaling_fs.hglsl"
|
||||
#include "fragment.glsl"
|
||||
|
||||
//#include "PowerScaling/powerScaling_vs.hglsl"
|
||||
void main()
|
||||
{
|
||||
Fragment getFragment() {
|
||||
vec4 position = vs_position;
|
||||
float depth = pscDepth(position);
|
||||
//depth = length(campos - position);
|
||||
vec4 diffuse = texture(texture1, vs_st);
|
||||
|
||||
|
||||
diffuse[3] = fading;
|
||||
|
||||
|
||||
if (_performShading) {
|
||||
vec4 spec = vec4(0.0);
|
||||
@@ -79,16 +73,12 @@ void main()
|
||||
spec = specular * pow(intSpec, shine);
|
||||
}
|
||||
diffuse = vec4(max(intensity * diffuse , ambient).xyz,1) +spec*1.5*diffuse ;
|
||||
|
||||
diffuse[3] = fading*transparency;
|
||||
|
||||
ABufferStruct_t frag = createGeometryFragment(diffuse, position, depth);
|
||||
addToBuffer(frag);
|
||||
}
|
||||
else {
|
||||
diffuse[3] = fading*transparency;
|
||||
ABufferStruct_t frag = createGeometryFragment(diffuse, position, depth);
|
||||
addToBuffer(frag);
|
||||
}
|
||||
|
||||
}
|
||||
diffuse[3] = fading*transparency;
|
||||
|
||||
Fragment frag;
|
||||
frag.color = diffuse;
|
||||
frag.depth = depth;
|
||||
return frag;
|
||||
}
|
||||
|
||||
@@ -22,24 +22,23 @@
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#version __CONTEXT__
|
||||
|
||||
in vec4 vs_point_position;
|
||||
flat in int isHour;
|
||||
in vec4 vs_point_color;
|
||||
|
||||
uniform vec3 color;
|
||||
|
||||
#include "ABuffer/abufferStruct.hglsl"
|
||||
#include "ABuffer/abufferAddToBuffer.hglsl"
|
||||
#include "PowerScaling/powerScaling_fs.hglsl"
|
||||
#include "fragment.glsl"
|
||||
|
||||
void main() {
|
||||
Fragment getFragment() {
|
||||
vec4 position = vs_point_position;
|
||||
float depth = pscDepth(position);
|
||||
|
||||
vec4 diffuse = vs_point_color;
|
||||
|
||||
ABufferStruct_t frag = createGeometryFragment(diffuse, position, depth);
|
||||
addToBuffer(frag);
|
||||
|
||||
Fragment frag;
|
||||
frag.color = diffuse;
|
||||
frag.depth = depth;
|
||||
return frag;
|
||||
}
|
||||
|
||||
@@ -22,20 +22,16 @@
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#version __CONTEXT__
|
||||
|
||||
uniform float time;
|
||||
uniform sampler2D texture1;
|
||||
|
||||
in vec2 vs_st;
|
||||
in vec4 vs_position;
|
||||
|
||||
#include "ABuffer/abufferStruct.hglsl"
|
||||
#include "ABuffer/abufferAddToBuffer.hglsl"
|
||||
#include "PowerScaling/powerScaling_fs.hglsl"
|
||||
#include "fragment.glsl"
|
||||
|
||||
void main()
|
||||
{
|
||||
Fragment getFragment() {
|
||||
vec4 position = vs_position;
|
||||
float depth = pscDepth(position);
|
||||
vec4 diffuse;
|
||||
@@ -50,10 +46,12 @@ void main()
|
||||
// diffuse = vec4(1,0,0,1);
|
||||
// }
|
||||
|
||||
ABufferStruct_t frag = createGeometryFragment(diffuse, position, depth);
|
||||
addToBuffer(frag);
|
||||
|
||||
gl_FragDepth = depth;
|
||||
if (diffuse.a == 0.0)
|
||||
discard;
|
||||
}
|
||||
|
||||
Fragment frag;
|
||||
frag.color = diffuse;
|
||||
frag.depth = depth;
|
||||
return frag;
|
||||
|
||||
}
|
||||
|
||||
@@ -22,8 +22,6 @@
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#version __CONTEXT__
|
||||
|
||||
uniform float time;
|
||||
uniform sampler2D texture1;
|
||||
uniform float alpha;
|
||||
@@ -31,16 +29,14 @@ uniform float alpha;
|
||||
in vec2 vs_st;
|
||||
in vec4 vs_position;
|
||||
|
||||
#include "ABuffer/abufferStruct.hglsl"
|
||||
#include "ABuffer/abufferAddToBuffer.hglsl"
|
||||
#include "fragment.glsl"
|
||||
#include "PowerScaling/powerScaling_fs.hglsl"
|
||||
|
||||
void main()
|
||||
Fragment getFragment()
|
||||
{
|
||||
vec4 position = vs_position;
|
||||
// This has to be fixed with the ScaleGraph in place (precision deficiency in depth buffer) ---abock
|
||||
// float depth = pscDepth(position);
|
||||
float depth = 200;
|
||||
float depth = pscDepth(position);
|
||||
vec4 diffuse;
|
||||
|
||||
vec2 texCoord = vs_st;
|
||||
@@ -75,7 +71,8 @@ void main()
|
||||
|
||||
//diffuse = vec4(1.0, 0.0, 0.0, 1.0);
|
||||
|
||||
ABufferStruct_t frag = createGeometryFragment(diffuse, position, depth);
|
||||
addToBuffer(frag);
|
||||
|
||||
}
|
||||
Fragment frag;
|
||||
frag.color = diffuse;
|
||||
frag.depth = depth;
|
||||
return frag;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#version __CONTEXT__
|
||||
|
||||
// keep in sync with renderablestars.h:ColorOption enum
|
||||
const int COLOROPTION_COLOR = 0;
|
||||
@@ -42,8 +41,7 @@ in float ge_speed;
|
||||
in vec2 texCoord;
|
||||
in float billboardSize;
|
||||
|
||||
#include "ABuffer/abufferStruct.hglsl"
|
||||
#include "ABuffer/abufferAddToBuffer.hglsl"
|
||||
#include "fragment.glsl"
|
||||
#include "PowerScaling/powerScaling_fs.hglsl"
|
||||
|
||||
uniform vec2 magnitudeClamp;
|
||||
@@ -56,7 +54,7 @@ vec4 bv2rgb(float bv) {
|
||||
return texture(colorTexture, t);
|
||||
}
|
||||
|
||||
void main() {
|
||||
Fragment getFragment() {
|
||||
// Something in the color calculations need to be changed because before it was dependent
|
||||
// on the gl blend functions since the abuffer was not involved
|
||||
|
||||
@@ -77,21 +75,17 @@ void main() {
|
||||
vec4 textureColor = texture(psfTexture, texCoord);
|
||||
vec4 fullColor = vec4(color.rgb, textureColor.a);
|
||||
|
||||
if (minBillboardSize != 1.0) {
|
||||
float normSize = (billboardSize - 1.0) / (minBillboardSize - 1.0);
|
||||
normSize = pow(normSize, 3);
|
||||
fullColor *= clamp(normSize, 0.0, 1.0);
|
||||
vec4 position = vs_position;
|
||||
// This has to be fixed when the scale graph is in place ---emiax
|
||||
position.w = 19;
|
||||
|
||||
Fragment frag;
|
||||
frag.color = fullColor;
|
||||
frag.depth = pscDepth(position);
|
||||
|
||||
if (fullColor.a == 0) {
|
||||
discard;
|
||||
}
|
||||
|
||||
vec4 position = vs_position;
|
||||
// This has to be fixed when the scale graph is in place ---abock
|
||||
float depth = pscDepth(position) + 1;
|
||||
// float depth = 10000.0;
|
||||
// gl_FragDepth = depth;
|
||||
|
||||
ABufferStruct_t frag = createGeometryFragment(fullColor, position, depth);
|
||||
addToBuffer(frag);
|
||||
|
||||
if (fullColor.a == 0)
|
||||
discard;
|
||||
return frag;
|
||||
}
|
||||
|
||||
@@ -53,6 +53,7 @@ out float billboardSize;
|
||||
uniform mat4 projection;
|
||||
|
||||
uniform float scaleFactor;
|
||||
uniform float minBillboardSize;
|
||||
|
||||
void main() {
|
||||
if ((psc_position[0].x == 0.0) && (psc_position[0].y == 0.0) && (psc_position[0].z == 0.0))
|
||||
@@ -68,8 +69,8 @@ void main() {
|
||||
|
||||
vec4 projPos[4];
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
vec4 p1 = gl_in[0].gl_Position;
|
||||
p1.xy += vec2(modifiedSpriteSize * (corners[i] - vec2(0.5)));
|
||||
vec4 p1 = gl_in[0].gl_Position;
|
||||
p1.xy += vec2(modifiedSpriteSize * (corners[i] - vec2(0.5)));
|
||||
projPos[i] = projection * p1;
|
||||
}
|
||||
|
||||
@@ -82,7 +83,7 @@ void main() {
|
||||
// The billboard is smaller than one pixel, we can discard it
|
||||
vec2 distance = abs(ll - ur);
|
||||
float sizeInPixels = length(distance);
|
||||
if (sizeInPixels < 5)
|
||||
if (sizeInPixels < minBillboardSize)
|
||||
return;
|
||||
|
||||
for(int i = 0; i < 4; i++){
|
||||
|
||||
Reference in New Issue
Block a user