Browse Source

init commit

marauder2k7 2 years ago
parent
commit
e325902bac

+ 4 - 4
Engine/source/gfx/D3D11/gfxD3D11StateBlock.cpp

@@ -186,10 +186,10 @@ GFXD3D11StateBlock::GFXD3D11StateBlock(const GFXStateBlockDesc& desc)
          else
             mSamplerDesc[i].Filter = comparison ? D3D11_FILTER_COMPARISON_ANISOTROPIC : D3D11_FILTER_ANISOTROPIC;
 
-         mSamplerDesc[i].BorderColor[0] = 1.0f;
-         mSamplerDesc[i].BorderColor[1] = 1.0f;
-         mSamplerDesc[i].BorderColor[2] = 1.0f;
-         mSamplerDesc[i].BorderColor[3] = 1.0f;
+         mSamplerDesc[i].BorderColor[0] = gfxSamplerState.borderColor.red;
+         mSamplerDesc[i].BorderColor[1] = gfxSamplerState.borderColor.green;
+         mSamplerDesc[i].BorderColor[2] = gfxSamplerState.borderColor.blue;
+         mSamplerDesc[i].BorderColor[3] = gfxSamplerState.borderColor.alpha;
          mSamplerDesc[i].ComparisonFunc = GFXD3D11CmpFunc[gfxSamplerState.samplerFunc];
 
          hr = D3D11DEVICE->CreateSamplerState(&mSamplerDesc[i], &mSamplerStates[i]);

+ 1 - 0
Engine/source/gfx/gfxStateBlock.cpp

@@ -278,6 +278,7 @@ GFXSamplerStateDesc::GFXSamplerStateDesc()
    samplerFunc = GFXCmpNever;
    maxAnisotropy = 1;
    mipLODBias = 0.0f;
+   borderColor = LinearColorF::WHITE;
 }
 
 GFXSamplerStateDesc GFXSamplerStateDesc::getWrapLinear()

+ 2 - 0
Engine/source/gfx/gfxStateBlock.h

@@ -49,6 +49,8 @@ struct GFXSamplerStateDesc
 
    GFXCmpFunc samplerFunc;
 
+   LinearColorF borderColor;
+
    /// The maximum anisotropy used when one of the filter types
    /// is set to anisotropic.
    ///

+ 1 - 1
Engine/source/gfx/gl/gfxGLEnumTranslate.cpp

@@ -93,7 +93,7 @@ void GFXGLEnumTranslate::init()
    GFXGLTextureAddress[GFXAddressWrap] = GL_REPEAT;
    GFXGLTextureAddress[GFXAddressMirror] = GL_REPEAT;
    GFXGLTextureAddress[GFXAddressClamp] = GL_CLAMP_TO_EDGE;
-   GFXGLTextureAddress[GFXAddressBorder] = GL_REPEAT;
+   GFXGLTextureAddress[GFXAddressBorder] = GL_CLAMP_TO_BORDER;
    GFXGLTextureAddress[GFXAddressMirrorOnce] = GL_REPEAT;
    
    // Stencil ops

+ 1 - 0
Engine/source/gfx/gl/gfxGLTextureObject.cpp

@@ -220,6 +220,7 @@ void GFXGLTextureObject::initSamplerState(const GFXSamplerStateDesc &ssd)
    if(static_cast< GFXGLDevice* >( GFX )->supportsAnisotropic() )
       glTexParameterf(mBinding, GL_TEXTURE_MAX_ANISOTROPY_EXT, ssd.maxAnisotropy);
 
+   glTexParameterfv(mBinding, GL_TEXTURE_BORDER_COLOR, ssd.borderColor);
    mNeedInitSamplerState = false;
    mSampler = ssd;
 }

+ 2 - 0
Engine/source/gfx/sim/gfxStateBlockData.cpp

@@ -315,6 +315,8 @@ void GFXSamplerStateData::initPersistFields()
 
    endGroup( "Filter State" );
 
+   addField("borderColor", TypeColorF, Offset(mState.borderColor, GFXSamplerStateData), "");
+
    addField("samplerFunc", TypeGFXCmpFunc, Offset(mState.samplerFunc, GFXSamplerStateData),
       "Compares sampled data against existing sampled data.  The default is GFXCmpNever.");
 }