Merge branch 'master' of ssh://git.xonotic.org/netradiant
This commit is contained in:
commit
4741e6535e
|
|
@ -11,6 +11,9 @@
|
||||||
// this is very evil, but right now there is no better way
|
// this is very evil, but right now there is no better way
|
||||||
#include "../../radiant/brush.h"
|
#include "../../radiant/brush.h"
|
||||||
|
|
||||||
|
// for limNames
|
||||||
|
#define MAX_MATERIAL_NAME 20
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Abstract baseclass for modelexporters
|
Abstract baseclass for modelexporters
|
||||||
the class collects all the data which then gets
|
the class collects all the data which then gets
|
||||||
|
|
@ -279,9 +282,9 @@ bool ExportDataAsWavefront::WriteToFile(const std::string& path, collapsemode mo
|
||||||
|
|
||||||
if(mat != lastMat)
|
if(mat != lastMat)
|
||||||
{
|
{
|
||||||
if(limNames && mat.size() > 20)
|
if(limNames && mat.size() > MAX_MATERIAL_NAME)
|
||||||
{
|
{
|
||||||
out << "\nusemtl " << mat.substr(mat.size() - 20, mat.size()).c_str();
|
out << "\nusemtl " << mat.substr(mat.size() - MAX_MATERIAL_NAME, mat.size()).c_str();
|
||||||
} else {
|
} else {
|
||||||
out << "\nusemtl " << mat.c_str();
|
out << "\nusemtl " << mat.c_str();
|
||||||
}
|
}
|
||||||
|
|
@ -308,9 +311,9 @@ bool ExportDataAsWavefront::WriteToFile(const std::string& path, collapsemode mo
|
||||||
outMtl << "# Material Count: " << (const Unsigned)materials.size() << "\n\n";
|
outMtl << "# Material Count: " << (const Unsigned)materials.size() << "\n\n";
|
||||||
for(std::set<std::string>::const_iterator it(materials.begin()); it != materials.end(); ++it)
|
for(std::set<std::string>::const_iterator it(materials.begin()); it != materials.end(); ++it)
|
||||||
{
|
{
|
||||||
if(limNames && it->size() > 20)
|
if(limNames && it->size() > MAX_MATERIAL_NAME)
|
||||||
{
|
{
|
||||||
outMtl << "newmtl " << it->substr(it->size() - 20, it->size()).c_str() << "\n";
|
outMtl << "newmtl " << it->substr(it->size() - MAX_MATERIAL_NAME, it->size()).c_str() << "\n";
|
||||||
} else {
|
} else {
|
||||||
outMtl << "newmtl " << it->c_str() << "\n";
|
outMtl << "newmtl " << it->c_str() << "\n";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -104,18 +104,18 @@ inline void aabb_testselect(const AABB& aabb, SelectionTest& test, SelectionInte
|
||||||
|
|
||||||
inline void aabb_draw_wire(const Vector3 points[8])
|
inline void aabb_draw_wire(const Vector3 points[8])
|
||||||
{
|
{
|
||||||
typedef std::size_t index_t;
|
unsigned int indices[32] = {
|
||||||
index_t indices[24] = {
|
|
||||||
0, 1, 1, 2, 2, 3, 3, 0,
|
0, 1, 1, 2, 2, 3, 3, 0,
|
||||||
4, 5, 5, 6, 6, 7, 7, 4,
|
4, 5, 5, 6, 6, 7, 7, 4,
|
||||||
0, 4, 1, 5, 2, 6, 3, 7,
|
0, 4, 1, 5, 2, 6, 3, 7,
|
||||||
|
0, 6, 1, 7, 2, 4, 3, 5 // X cross
|
||||||
};
|
};
|
||||||
#if 1
|
#if 1
|
||||||
glVertexPointer(3, GL_FLOAT, 0, points);
|
glVertexPointer(3, GL_FLOAT, 0, points);
|
||||||
glDrawElements(GL_LINES, sizeof(indices)/sizeof(index_t), GL_UNSIGNED_INT, indices);
|
glDrawElements(GL_LINES, sizeof(indices)/sizeof(indices[0]), GL_UNSIGNED_INT, indices);
|
||||||
#else
|
#else
|
||||||
glBegin(GL_LINES);
|
glBegin(GL_LINES);
|
||||||
for(std::size_t i = 0; i < sizeof(indices)/sizeof(index_t); ++i)
|
for(std::size_t i = 0; i < sizeof(indices)/sizeof(indices[0]); ++i)
|
||||||
{
|
{
|
||||||
glVertex3fv(points[indices[i]]);
|
glVertex3fv(points[indices[i]]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1421,6 +1421,7 @@ typedef struct
|
||||||
{
|
{
|
||||||
vec3_t dir;
|
vec3_t dir;
|
||||||
vec3_t color;
|
vec3_t color;
|
||||||
|
vec3_t ambient;
|
||||||
int style;
|
int style;
|
||||||
}
|
}
|
||||||
contribution_t;
|
contribution_t;
|
||||||
|
|
@ -1514,6 +1515,7 @@ void TraceGrid( int num )
|
||||||
/* add a contribution */
|
/* add a contribution */
|
||||||
VectorCopy( trace.color, contributions[ numCon ].color );
|
VectorCopy( trace.color, contributions[ numCon ].color );
|
||||||
VectorCopy( trace.direction, contributions[ numCon ].dir );
|
VectorCopy( trace.direction, contributions[ numCon ].dir );
|
||||||
|
VectorClear( contributions[ numCon ].ambient );
|
||||||
contributions[ numCon ].style = trace.light->style;
|
contributions[ numCon ].style = trace.light->style;
|
||||||
numCon++;
|
numCon++;
|
||||||
|
|
||||||
|
|
@ -1533,51 +1535,56 @@ void TraceGrid( int num )
|
||||||
|
|
||||||
/////// Floodlighting for point //////////////////
|
/////// Floodlighting for point //////////////////
|
||||||
//do our floodlight ambient occlusion loop, and add a single contribution based on the brightest dir
|
//do our floodlight ambient occlusion loop, and add a single contribution based on the brightest dir
|
||||||
if (floodlighty)
|
if( floodlighty )
|
||||||
{
|
{
|
||||||
int q;
|
int k;
|
||||||
float addSize,f;
|
float addSize, f;
|
||||||
vec3_t col,dir;
|
vec3_t dir = { 0, 0, 1 };
|
||||||
col[0]=col[1]=col[2]=floodlightIntensity;
|
float ambientFrac = 0.25f;
|
||||||
dir[0]=dir[1]=0;
|
|
||||||
dir[2]=1;
|
trace.testOcclusion = qtrue;
|
||||||
|
trace.forceSunlight = qfalse;
|
||||||
trace.testOcclusion = qtrue;
|
trace.inhibitRadius = DEFAULT_INHIBIT_RADIUS;
|
||||||
trace.forceSunlight = qfalse;
|
trace.testAll = qtrue;
|
||||||
trace.inhibitRadius = DEFAULT_INHIBIT_RADIUS;
|
|
||||||
trace.testAll = qtrue;
|
for( k = 0; k < 2; k++ )
|
||||||
|
{
|
||||||
for (q=0;q<2;q++)
|
if( k == 0 ) // upper hemisphere
|
||||||
{
|
{
|
||||||
if (q==0) //upper hemisphere
|
trace.normal[0] = 0;
|
||||||
{
|
trace.normal[1] = 0;
|
||||||
trace.normal[0]=0;
|
trace.normal[2] = 1;
|
||||||
trace.normal[1]=0;
|
}
|
||||||
trace.normal[2]=1;
|
else //lower hemisphere
|
||||||
}
|
{
|
||||||
else //lower hemisphere
|
trace.normal[0] = 0;
|
||||||
{
|
trace.normal[1] = 0;
|
||||||
trace.normal[0]=0;
|
trace.normal[2] = -1;
|
||||||
trace.normal[1]=0;
|
}
|
||||||
trace.normal[2]=-1;
|
|
||||||
}
|
f = FloodLightForSample( &trace, floodlightDistance, floodlight_lowquality );
|
||||||
|
|
||||||
f = FloodLightForSample(&trace, floodlightDistance, floodlight_lowquality);
|
/* add a fraction as pure ambient, half as top-down direction */
|
||||||
|
contributions[ numCon ].color[0]= floodlightRGB[0] * floodlightIntensity * f * ( 1.0f - ambientFrac );
|
||||||
contributions[ numCon ].color[0]=col[0]*f;
|
contributions[ numCon ].color[1]= floodlightRGB[1] * floodlightIntensity * f * ( 1.0f - ambientFrac );
|
||||||
contributions[ numCon ].color[1]=col[1]*f;
|
contributions[ numCon ].color[2]= floodlightRGB[2] * floodlightIntensity * f * ( 1.0f - ambientFrac );
|
||||||
contributions[ numCon ].color[2]=col[2]*f;
|
|
||||||
|
contributions[ numCon ].ambient[0]= floodlightRGB[0] * floodlightIntensity * f * ambientFrac;
|
||||||
contributions[ numCon ].dir[0]=dir[0];
|
contributions[ numCon ].ambient[1]= floodlightRGB[1] * floodlightIntensity * f * ambientFrac;
|
||||||
contributions[ numCon ].dir[1]=dir[1];
|
contributions[ numCon ].ambient[2]= floodlightRGB[2] * floodlightIntensity * f * ambientFrac;
|
||||||
contributions[ numCon ].dir[2]=dir[2];
|
|
||||||
|
contributions[ numCon ].dir[0] = dir[0];
|
||||||
contributions[ numCon ].style = 0;
|
contributions[ numCon ].dir[1] = dir[1];
|
||||||
numCon++;
|
contributions[ numCon ].dir[2] = dir[2];
|
||||||
/* push average direction around */
|
|
||||||
addSize = VectorLength( col );
|
contributions[ numCon ].style = 0;
|
||||||
VectorMA( gp->dir, addSize, dir, gp->dir );
|
|
||||||
}
|
/* push average direction around */
|
||||||
|
addSize = VectorLength( contributions[ numCon ].color );
|
||||||
|
VectorMA( gp->dir, addSize, dir, gp->dir );
|
||||||
|
|
||||||
|
numCon++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/////////////////////
|
/////////////////////
|
||||||
|
|
||||||
|
|
@ -1632,6 +1639,8 @@ void TraceGrid( int num )
|
||||||
d = 0.25f * (1.0f - d);
|
d = 0.25f * (1.0f - d);
|
||||||
VectorMA( gp->ambient[ j ], d, contributions[ i ].color, gp->ambient[ j ] );
|
VectorMA( gp->ambient[ j ], d, contributions[ i ].color, gp->ambient[ j ] );
|
||||||
|
|
||||||
|
VectorAdd( gp->ambient[ j ], contributions[ i ].ambient, gp->ambient[ j ] );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* div0:
|
* div0:
|
||||||
* the total light average = ambient value + 0.25 * sum of all directional values
|
* the total light average = ambient value + 0.25 * sum of all directional values
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user