diff options
-rw-r--r-- | res/DataModelMetadata/en-us/MetaData.xml | 2 | ||||
-rw-r--r-- | src/dm/systems/Qt3DSDMComposerTypeDefinitions.cpp | 2 | ||||
-rw-r--r-- | src/dm/systems/Qt3DSDMComposerTypeDefinitions.h | 2 | ||||
-rw-r--r-- | src/engine/Qt3DSRenderRuntimeBindingImplTranslation.cpp | 2 | ||||
-rw-r--r-- | src/runtime/Qt3DSAttributeHashes.cpp | 2 | ||||
-rw-r--r-- | src/runtime/Qt3DSAttributeHashes.h | 2 | ||||
-rw-r--r-- | src/runtime/Qt3DSAttributeHashes.txt | 2 | ||||
-rw-r--r-- | src/runtimerender/Qt3DSRenderCustomMaterialShaderGenerator.cpp | 6 | ||||
-rw-r--r-- | src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp | 4 | ||||
-rw-r--r-- | src/runtimerender/Qt3DSRenderDefaultMaterialShaderGenerator.cpp | 6 | ||||
-rw-r--r-- | src/runtimerender/Qt3DSRenderEffectSystem.cpp | 4 | ||||
-rw-r--r-- | src/runtimerender/Qt3DSRenderUIPLoader.cpp | 2 | ||||
-rw-r--r-- | src/runtimerender/Qt3DSRenderUIPSharedTranslation.cpp | 38 | ||||
-rw-r--r-- | src/runtimerender/Qt3DSRenderUIPSharedTranslation.h | 16 | ||||
-rw-r--r-- | src/runtimerender/graphobjects/Qt3DSRenderImage.cpp | 2 | ||||
-rw-r--r-- | src/runtimerender/graphobjects/Qt3DSRenderImage.h | 2 |
16 files changed, 89 insertions, 5 deletions
diff --git a/res/DataModelMetadata/en-us/MetaData.xml b/res/DataModelMetadata/en-us/MetaData.xml index b793df7..4e3268a 100644 --- a/res/DataModelMetadata/en-us/MetaData.xml +++ b/res/DataModelMetadata/en-us/MetaData.xml @@ -128,6 +128,8 @@ <Property name="positionv" formalName="V Position" description="Offset of the image along the V\ndirection of the material" /> <Property name="pivotu" formalName="U Pivot" description="Offset the image in the U direction\nwithout affecting rotation center" /> <Property name="pivotv" formalName="V Pivot" description="Offset the image in the V direction\nwithout affecting rotation center" /> + <Property name="minfilter" formalName="Minification Filter" default="LinearMipmapLinear" description="The minification filter of the image" list="Nearest:Linear:NearestMipmapNearest:NearestMipmapLinear:LinearMipmapNearest:LinearMipmapLinear" /> + <Property name="magfilter" formalName="Magnification Filter" default="Linear" description="The magnification filter of the image" list="Nearest:Linear" /> <!-- Texture subpresentation is not set to controllable as it does not currently work in runtime --> <Property name="subpresentation" formalName="Sub-Presentation" description="Presentation or QML stream\nto use instead of the image" type="Renderable" /> diff --git a/src/dm/systems/Qt3DSDMComposerTypeDefinitions.cpp b/src/dm/systems/Qt3DSDMComposerTypeDefinitions.cpp index fc2500a..7f1a734 100644 --- a/src/dm/systems/Qt3DSDMComposerTypeDefinitions.cpp +++ b/src/dm/systems/Qt3DSDMComposerTypeDefinitions.cpp @@ -154,6 +154,8 @@ struct DataConstructor<SObjectRefType> #define QT3DS_WCHAR_T_positionv L"positionv" #define QT3DS_WCHAR_T_pivotu L"pivotu" #define QT3DS_WCHAR_T_pivotv L"pivotv" +#define QT3DS_WCHAR_T_minfilter L"minfilter" +#define QT3DS_WCHAR_T_magfilter L"magfilter" #define QT3DS_WCHAR_T_subpresentation L"subpresentation" #define QT3DS_WCHAR_T_iblprobe L"iblprobe" #define QT3DS_WCHAR_T_shaderlighting L"shaderlighting" diff --git a/src/dm/systems/Qt3DSDMComposerTypeDefinitions.h b/src/dm/systems/Qt3DSDMComposerTypeDefinitions.h index bd1dcb5..22ef680 100644 --- a/src/dm/systems/Qt3DSDMComposerTypeDefinitions.h +++ b/src/dm/systems/Qt3DSDMComposerTypeDefinitions.h @@ -146,6 +146,8 @@ class IPropertySystem; HANDLE_COMPOSER_PROPERTY(positionv, m_PositionV, float, 0.f) \ HANDLE_COMPOSER_PROPERTY(pivotu, m_PivotU, float, 0.f) \ HANDLE_COMPOSER_PROPERTY(pivotv, m_PivotV, float, 0.f) \ + HANDLE_COMPOSER_PROPERTY(minfilter, m_MinFilter, TDataStrPtr, L"LinearMipmapLinear") \ + HANDLE_COMPOSER_PROPERTY(magfilter, m_MagFilter, TDataStrPtr, L"Linear") \ HANDLE_COMPOSER_PROPERTY(subpresentation, m_SubPresentation, TDataStrPtr, L"") \ HANDLE_COMPOSER_PROPERTY_DUPLICATE(controlledproperty, m_ControlledProperty, TDataStrPtr, L"") diff --git a/src/engine/Qt3DSRenderRuntimeBindingImplTranslation.cpp b/src/engine/Qt3DSRenderRuntimeBindingImplTranslation.cpp index 9f8296a..03ad243 100644 --- a/src/engine/Qt3DSRenderRuntimeBindingImplTranslation.cpp +++ b/src/engine/Qt3DSRenderRuntimeBindingImplTranslation.cpp @@ -654,6 +654,8 @@ struct SRuntimePropertyParser #define Image_MappingMode ATTRIBUTE_MAPPINGMODE #define Image_HorizontalTilingMode ATTRIBUTE_TILINGMODEHORZ #define Image_VerticalTilingMode ATTRIBUTE_TILINGMODEVERT +#define Image_MinFilter ATTRIBUTE_MINFILTER +#define Image_MagFilter ATTRIBUTE_MAGFILTER #define Text_Text ATTRIBUTE_TEXTSTRING #define Text_Font ATTRIBUTE_FONT #define Text_FontSize ATTRIBUTE_SIZE diff --git a/src/runtime/Qt3DSAttributeHashes.cpp b/src/runtime/Qt3DSAttributeHashes.cpp index 527bc31..924e10e 100644 --- a/src/runtime/Qt3DSAttributeHashes.cpp +++ b/src/runtime/Qt3DSAttributeHashes.cpp @@ -179,6 +179,8 @@ const char *GetAttributeString(const EAttribute inAttribute) case ATTRIBUTE_MAPPINGMODE: return "mappingmode"; case ATTRIBUTE_SUBPRESENTATION: return "subpresentation"; case ATTRIBUTE_URI: return "uri"; + case ATTRIBUTE_MINFILTER: return "minfilter"; + case ATTRIBUTE_MAGFILTER: return "magfilter"; case ATTRIBUTE_TRANSPARENT: return "transparent"; case ATTRIBUTE_PROGRESSIVEAA: return "progressiveaa"; case ATTRIBUTE_MULTISAMPLEAA: return "multisampleaa"; diff --git a/src/runtime/Qt3DSAttributeHashes.h b/src/runtime/Qt3DSAttributeHashes.h index c373d62..5f9fdf1 100644 --- a/src/runtime/Qt3DSAttributeHashes.h +++ b/src/runtime/Qt3DSAttributeHashes.h @@ -170,6 +170,8 @@ enum EAttribute { ATTRIBUTE_MAPPINGMODE = 0x002715CF, // mappingmode ATTRIBUTE_SUBPRESENTATION = 0x03CA7426, // subpresentation ATTRIBUTE_URI = 0x00296894, // uri + ATTRIBUTE_MINFILTER = 0x0165D276, // minfilter + ATTRIBUTE_MAGFILTER = 0x031C0635, // magfilter ATTRIBUTE_TRANSPARENT = 0x0316BA2E, // transparent ATTRIBUTE_PROGRESSIVEAA = 0x019F1955, // progressiveaa ATTRIBUTE_MULTISAMPLEAA = 0x013D29FD, // multisampleaa diff --git a/src/runtime/Qt3DSAttributeHashes.txt b/src/runtime/Qt3DSAttributeHashes.txt index 567f737..65c2045 100644 --- a/src/runtime/Qt3DSAttributeHashes.txt +++ b/src/runtime/Qt3DSAttributeHashes.txt @@ -135,6 +135,8 @@ mappingtype mappingmode subpresentation uri +minfilter +magfilter transparent progressiveaa diff --git a/src/runtimerender/Qt3DSRenderCustomMaterialShaderGenerator.cpp b/src/runtimerender/Qt3DSRenderCustomMaterialShaderGenerator.cpp index 7423c0e..a09a896 100644 --- a/src/runtimerender/Qt3DSRenderCustomMaterialShaderGenerator.cpp +++ b/src/runtimerender/Qt3DSRenderCustomMaterialShaderGenerator.cpp @@ -442,6 +442,12 @@ struct SShaderGenerator : public ICustomMaterialShaderGenerator inImage.m_Image.m_HorizontalTilingMode); inImage.m_Image.m_TextureData.m_Texture->SetTextureWrapT( inImage.m_Image.m_VerticalTilingMode); + if (inImage.m_Image.m_MinFilter > NVRenderTextureMinifyingOp::Linear + && inImage.m_Image.m_TextureData.m_Texture->GetNumMipmaps() == 0) { + inImage.m_Image.m_TextureData.m_Texture->GenerateMipmaps(); + } + inImage.m_Image.m_TextureData.m_Texture->SetMinFilter(inImage.m_Image.m_MinFilter); + inImage.m_Image.m_TextureData.m_Texture->SetMagFilter(inImage.m_Image.m_MagFilter); theShaderProps.m_Sampler.Set(inImage.m_Image.m_TextureData.m_Texture); theShaderProps.m_Offsets.Set(offsets); diff --git a/src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp b/src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp index 1b2e6a0..62ff5c6 100644 --- a/src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp +++ b/src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp @@ -1305,8 +1305,8 @@ struct SMaterialSystem : public ICustomMaterialSystem auto *texture = image->m_TextureData.m_Texture; texture->SetTextureWrapS(image->m_HorizontalTilingMode); texture->SetTextureWrapT(image->m_VerticalTilingMode); - texture->SetMinFilter(inDefinition.m_MinFilterOp); - texture->SetMagFilter(inDefinition.m_MagFilterOp); + texture->SetMinFilter(image->m_MinFilter); + texture->SetMagFilter(image->m_MagFilter); if (inDefinition.m_MinFilterOp != NVRenderTextureMinifyingOp::Nearest && inDefinition.m_MinFilterOp != NVRenderTextureMinifyingOp::Linear && !texture->GetNumMipmaps()) { diff --git a/src/runtimerender/Qt3DSRenderDefaultMaterialShaderGenerator.cpp b/src/runtimerender/Qt3DSRenderDefaultMaterialShaderGenerator.cpp index 157434d..cfa6cff 100644 --- a/src/runtimerender/Qt3DSRenderDefaultMaterialShaderGenerator.cpp +++ b/src/runtimerender/Qt3DSRenderDefaultMaterialShaderGenerator.cpp @@ -862,6 +862,12 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator inImage.m_Image.m_HorizontalTilingMode); inImage.m_Image.m_TextureData.m_Texture->SetTextureWrapT( inImage.m_Image.m_VerticalTilingMode); + if (inImage.m_Image.m_MinFilter > NVRenderTextureMinifyingOp::Linear + && inImage.m_Image.m_TextureData.m_Texture->GetNumMipmaps() == 0) { + inImage.m_Image.m_TextureData.m_Texture->GenerateMipmaps(); + } + inImage.m_Image.m_TextureData.m_Texture->SetMinFilter(inImage.m_Image.m_MinFilter); + inImage.m_Image.m_TextureData.m_Texture->SetMagFilter(inImage.m_Image.m_MagFilter); theShaderProps.m_Sampler.Set(imageTexture); theShaderProps.m_Offsets.Set(offsets); theShaderProps.m_Rotations.Set(rotations); diff --git a/src/runtimerender/Qt3DSRenderEffectSystem.cpp b/src/runtimerender/Qt3DSRenderEffectSystem.cpp index e3da5b0..6ece380 100644 --- a/src/runtimerender/Qt3DSRenderEffectSystem.cpp +++ b/src/runtimerender/Qt3DSRenderEffectSystem.cpp @@ -1063,8 +1063,8 @@ struct SEffectSystem : public IEffectSystem auto *texture = image->m_TextureData.m_Texture; texture->SetTextureWrapS(image->m_HorizontalTilingMode); texture->SetTextureWrapT(image->m_VerticalTilingMode); - texture->SetMinFilter(inDefinition.m_MinFilterOp); - texture->SetMagFilter(inDefinition.m_MagFilterOp); + texture->SetMinFilter(image->m_MinFilter); + texture->SetMagFilter(image->m_MagFilter); if (inDefinition.m_MinFilterOp != NVRenderTextureMinifyingOp::Nearest && inDefinition.m_MinFilterOp != NVRenderTextureMinifyingOp::Linear && !texture->GetNumMipmaps()) { diff --git a/src/runtimerender/Qt3DSRenderUIPLoader.cpp b/src/runtimerender/Qt3DSRenderUIPLoader.cpp index 2cecc1a..8d26350 100644 --- a/src/runtimerender/Qt3DSRenderUIPLoader.cpp +++ b/src/runtimerender/Qt3DSRenderUIPLoader.cpp @@ -841,6 +841,8 @@ struct SRenderUIPLoader : public IDOMReferenceResolver #define Image_Rotation "rotationuv" #define Image_Position_X "positionu" #define Image_Position_Y "positionv" +#define Image_MinFilter "minfilter" +#define Image_MagFilter "magfilter" #define Image_MappingMode "mappingmode" #define Image_HorizontalTilingMode "tilingmodehorz" #define Image_VerticalTilingMode "tilingmodevert" diff --git a/src/runtimerender/Qt3DSRenderUIPSharedTranslation.cpp b/src/runtimerender/Qt3DSRenderUIPSharedTranslation.cpp index e63dd76..998de32 100644 --- a/src/runtimerender/Qt3DSRenderUIPSharedTranslation.cpp +++ b/src/runtimerender/Qt3DSRenderUIPSharedTranslation.cpp @@ -113,6 +113,12 @@ namespace render { #define WCHAR_T_Front L"Front" #define WCHAR_T_All L"All" #define WCHAR_T_None L"None" +#define WCHAR_T_Nearest L"Nearest" +#define WCHAR_T_Linear L"Linear" +#define WCHAR_T_NearestMipmapNearest L"NearestMipmapNearest" +#define WCHAR_T_LinearMipmapNearest L"LinearMipmapNearest" +#define WCHAR_T_NearestMipmapLinear L"NearestMipmapLinear" +#define WCHAR_T_LinearMipmapLinear L"LinearMipmapLinear" #define CHAR_T_Directional "Directional" #define CHAR_T_Point "Point" @@ -195,6 +201,12 @@ namespace render { #define CHAR_T_Front "Front" #define CHAR_T_All "All" #define CHAR_T_None "None" +#define CHAR_T_Nearest "Nearest" +#define CHAR_T_Linear "Linear" +#define CHAR_T_NearestMipmapNearest "NearestMipmapNearest" +#define CHAR_T_LinearMipmapNearest "LinearMipmapNearest" +#define CHAR_T_NearestMipmapLinear "NearestMipmapLinear" +#define CHAR_T_LinearMipmapLinear "LinearMipmapLinear" #define DEFINE_NAME_MAP_ENTRY(enumval, name) \ { \ @@ -246,6 +258,22 @@ namespace render { { (QT3DSU32)-1, NULL }, }; + SEnumNameMap g_RenderTextureMinifyingOpMap[] = { + DEFINE_NAME_MAP_ENTRY(NVRenderTextureMinifyingOp::Nearest, Nearest), + DEFINE_NAME_MAP_ENTRY(NVRenderTextureMinifyingOp::Linear, Linear), + DEFINE_NAME_MAP_ENTRY(NVRenderTextureMinifyingOp::NearestMipmapNearest, NearestMipmapNearest), + DEFINE_NAME_MAP_ENTRY(NVRenderTextureMinifyingOp::LinearMipmapNearest, LinearMipmapNearest), + DEFINE_NAME_MAP_ENTRY(NVRenderTextureMinifyingOp::NearestMipmapLinear, NearestMipmapLinear), + DEFINE_NAME_MAP_ENTRY(NVRenderTextureMinifyingOp::LinearMipmapLinear, LinearMipmapLinear), + { (QT3DSU32)-1, NULL }, + }; + + SEnumNameMap g_RenderTextureMagnifyingOpMap[] = { + DEFINE_NAME_MAP_ENTRY(NVRenderTextureMagnifyingOp::Nearest, Nearest), + DEFINE_NAME_MAP_ENTRY(NVRenderTextureMagnifyingOp::Linear, Linear), + { (QT3DSU32)-1, NULL }, + }; + SEnumNameMap g_TextHorizontalAlignmentMap[] = { DEFINE_NAME_MAP_ENTRY(TextHorizontalAlignment::Left, Left), DEFINE_NAME_MAP_ENTRY(TextHorizontalAlignment::Center, Center), @@ -414,6 +442,16 @@ namespace render { return g_RenderTextureCoordOpMap; } + SEnumNameMap *SEnumParseMap<NVRenderTextureMinifyingOp::Enum>::GetMap() + { + return g_RenderTextureMinifyingOpMap; + } + + SEnumNameMap *SEnumParseMap<NVRenderTextureMagnifyingOp::Enum>::GetMap() + { + return g_RenderTextureMagnifyingOpMap; + } + SEnumNameMap *SEnumParseMap<TextHorizontalAlignment::Enum>::GetMap() { return g_TextHorizontalAlignmentMap; diff --git a/src/runtimerender/Qt3DSRenderUIPSharedTranslation.h b/src/runtimerender/Qt3DSRenderUIPSharedTranslation.h index a7e8d4a..11299c9 100644 --- a/src/runtimerender/Qt3DSRenderUIPSharedTranslation.h +++ b/src/runtimerender/Qt3DSRenderUIPSharedTranslation.h @@ -88,6 +88,18 @@ namespace render { }; template <> + struct SEnumParseMap<NVRenderTextureMinifyingOp::Enum> + { + static SEnumNameMap *GetMap(); + }; + + template <> + struct SEnumParseMap<NVRenderTextureMagnifyingOp::Enum> + { + static SEnumNameMap *GetMap(); + }; + + template <> struct SEnumParseMap<TextHorizontalAlignment::Enum> { static SEnumNameMap *GetMap(); @@ -460,7 +472,9 @@ namespace render { HANDLE_QT3DS_RENDER_VEC2_PROPERTY(Image, Position, TransformDirty) \ HANDLE_QT3DS_RENDER_ENUM_PROPERTY(Image, MappingMode, Dirty) \ HANDLE_QT3DS_RENDER_ENUM_PROPERTY(Image, HorizontalTilingMode, Dirty) \ - HANDLE_QT3DS_RENDER_ENUM_PROPERTY(Image, VerticalTilingMode, Dirty) + HANDLE_QT3DS_RENDER_ENUM_PROPERTY(Image, VerticalTilingMode, Dirty) \ + HANDLE_QT3DS_RENDER_ENUM_PROPERTY(Image, MinFilter, Dirty) \ + HANDLE_QT3DS_RENDER_ENUM_PROPERTY(Image, MagFilter, Dirty) #define ITERATE_QT3DS_RENDER_TEXT_PROPERTIES \ HANDLE_QT3DS_RENDER_PROPERTY(Text, Text, TextDirty) \ diff --git a/src/runtimerender/graphobjects/Qt3DSRenderImage.cpp b/src/runtimerender/graphobjects/Qt3DSRenderImage.cpp index 78760b6..f2ca055 100644 --- a/src/runtimerender/graphobjects/Qt3DSRenderImage.cpp +++ b/src/runtimerender/graphobjects/Qt3DSRenderImage.cpp @@ -48,6 +48,8 @@ SImage::SImage() , m_MappingMode(ImageMappingModes::Normal) , m_HorizontalTilingMode(NVRenderTextureCoordOp::ClampToEdge) , m_VerticalTilingMode(NVRenderTextureCoordOp::ClampToEdge) + , m_MinFilter(NVRenderTextureMinifyingOp::LinearMipmapLinear) + , m_MagFilter(NVRenderTextureMagnifyingOp::Linear) { m_Flags.SetActive(true); m_Flags.SetDirty(true); diff --git a/src/runtimerender/graphobjects/Qt3DSRenderImage.h b/src/runtimerender/graphobjects/Qt3DSRenderImage.h index 04d890f..16cd02c 100644 --- a/src/runtimerender/graphobjects/Qt3DSRenderImage.h +++ b/src/runtimerender/graphobjects/Qt3DSRenderImage.h @@ -78,6 +78,8 @@ namespace render { ImageMappingModes::Enum m_MappingMode; NVRenderTextureCoordOp::Enum m_HorizontalTilingMode; NVRenderTextureCoordOp::Enum m_VerticalTilingMode; + NVRenderTextureMinifyingOp::Enum m_MinFilter; + NVRenderTextureMagnifyingOp::Enum m_MagFilter; // Setting any of the above variables means this object is dirty. // Setting any of the vec2 properties means this object's transform is dirty |