This is the changelog for developers, != changelog for the end user
that we distribute with the binaries. (see changelog)
+17/01/2007
+namespace
+- Fixed "jumping" texcoords when switching to a shader with different size
+- (Todo) Toolbar: add button for refresh-models. (Shaderman)
+- Aniso fix (Shaderman)
+- Translucency fix (Shaderman)
+
05/01/2007
namespace
- UFO:Alien Invasion Plugin (mattn2)
Grid: background colour should be different when the smallest grid is invisible due to being zoomed out.
Brush: option to disable dots on selected faces when not in face mode.
Entity: draw direction arrow for func_door and func_button angle.
-Toolbar: add button for refresh-models.
Build Menu: support for editing variables.
Shaders: handle doom3 materials with multiple bumpmaps stage - use first stage, ignore later stages.
Brush: warn when a brush is dragged into a configuration with <0 volume
#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D
#define GL_SECONDARY_COLOR_ARRAY 0x845E
#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
+#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
#define GL_TEXTURE_FILTER_CONTROL 0x8500
#define GL_TEXTURE_LOD_BIAS 0x8501
#define GL_INCR_WRAP 0x8507
Brush_textureChanged();
m_observer->shaderChanged();
updateFiltered();
+ planeChanged();
SceneChangeNotify();
}
void shaderChanged()
{
updateFiltered();
+ planeChanged();
}
void evaluateBRep() const
#include "math/vector.h"
#include "itexdef.h"
+#include "debugging/debugging.h"
// Timo
// new brush primitive texdef
struct brushprimit_texdef_t
void addScale(std::size_t width, std::size_t height)
{
#if 1
+ ASSERT_MESSAGE(width > 0, "shader-width is 0");
+ ASSERT_MESSAGE(height > 0, "shader-height is 0");
coords[0][0] /= width;
coords[0][1] /= width;
coords[0][2] /= width;
// TODO: call light inspector
//GtkButton* g_view_lightinspector_button = toolbar_append_button(toolbar, "Light Inspector", "lightinspector.bmp", "ToggleLightInspector");
+ gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
+ GtkButton* g_refresh_models_button = toolbar_append_button(toolbar, "Refresh Models", "refresh_models.bmp", "RefreshReferences");
+
+
// disable the console and texture button in the regular layouts
if(style == MainFrame::eRegular || style == MainFrame::eRegularLeft)
{
globalErrorStream() << "WARNING: OpenGL driver reports support for " << extension << " but does not implement it\n";
}
+float g_maxTextureAnisotropy;
+
+float QGL_maxTextureAnisotropy()
+{
+ return g_maxTextureAnisotropy;
+}
+
void QGL_sharedContextCreated(OpenGLBinding& table)
{
QGL_InitVersion();
table.support_ARB_fragment_shader = QGL_ExtensionSupported("GL_ARB_fragment_shader");
table.support_ARB_shading_language_100 = QGL_ExtensionSupported("GL_ARB_shading_language_100");
+
+ if(QGL_ExtensionSupported("GL_EXT_texture_filter_anisotropic"))
+ {
+ glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &g_maxTextureAnisotropy);
+ globalOutputStream() << "Anisotropic filtering possible (max " << g_maxTextureAnisotropy << "x)\n";
+ }
+ else
+ {
+ globalOutputStream() << "No Anisotropic filtering available\n";
+ }
}
void QGL_sharedContextDestroyed(OpenGLBinding& table)
void QGL_sharedContextCreated(OpenGLBinding& table);
void QGL_sharedContextDestroyed(OpenGLBinding& table);
+bool QGL_ExtensionSupported(const char* extension);
+
+float QGL_maxTextureAnisotropy();
+
#endif
state.m_colour[2] = 0;
state.m_colour[3] = 0.3f;
state.m_state = RENDER_FILL|RENDER_DEPTHTEST|RENDER_CULLFACE|RENDER_BLEND|RENDER_COLOURWRITE|RENDER_DEPTHWRITE;
- state.m_sort = OpenGLState::eSortHighlight;
+
+ // The bug "Selecting translucent brushes, such as clip, cause them to disappear leaving
+ // only the red selection box." seems to be fixed by removing the next line.
+
+ // state.m_sort = OpenGLState::eSortHighlight;
state.m_depthfunc = GL_LEQUAL;
}
else if(string_equal(name+1, "CAM_OVERLAY"))
eTextures_LINEAR = 3,
eTextures_LINEAR_MIPMAP_NEAREST = 4,
eTextures_LINEAR_MIPMAP_LINEAR = 5,
+ eTextures_MAX_ANISOTROPY = 6,
};
enum TextureCompressionFormat
void SetTexParameters(ETexturesMode mode)
{
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0f);
+
switch (mode)
{
case eTextures_NEAREST:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
break;
+ case eTextures_MAX_ANISOTROPY:
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, QGL_maxTextureAnisotropy());
+ break;
default:
globalOutputStream() << "invalid texture mode\n";
}
case 5:
Textures_SetMode(eTextures_LINEAR_MIPMAP_LINEAR);
break;
+ case 6:
+ Textures_SetMode(eTextures_MAX_ANISOTROPY);
}
}
typedef ReferenceCaller1<ETexturesMode, int, TextureModeImport> TextureModeImportCaller;
case eTextures_LINEAR_MIPMAP_LINEAR:
importer(5);
break;
+ case eTextures_MAX_ANISOTROPY:
+ importer(6);
+ break;
default:
importer(4);
}
FloatExportCallback(FloatExportCaller(g_texture_globals.fGamma))
);
{
- const char* texture_mode[] = { "Nearest", "Nearest Mipmap", "Linear", "Bilinear", "Bilinear Mipmap", "Trilinear" };
+ const char* texture_mode[] = { "Nearest", "Nearest Mipmap", "Linear", "Bilinear", "Bilinear Mipmap", "Trilinear", "Anisotropy" };
page.appendCombo(
"Texture Render Mode",
STRING_ARRAY_RANGE(texture_mode),
<file name="patch_weld.bmp"/>
<file name="patch_wireframe.bmp"/>
<file name="popup_selection.bmp"/>
+ <file name="refresh_models.bmp"/>
<file name="scalelockx.bmp"/>
<file name="scalelocky.bmp"/>
<file name="scalelockz.bmp"/>