diff options
author | AndreyL ProductEngine <alihatskiy@productengine.com> | 2019-02-23 20:08:03 +0200 |
---|---|---|
committer | AndreyL ProductEngine <alihatskiy@productengine.com> | 2019-02-23 20:08:03 +0200 |
commit | 599e08181544f214142703928a6d242a0ae72e60 (patch) | |
tree | 84e1d0e3f2aaa0d0cb6c5f8f51380a5b040641aa /indra | |
parent | 020c5c956168abc8b38a8da8d2cff4306c4acdb6 (diff) |
Backed out changeset: d5795c04fecc
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/app_settings/settings.xml | 199 | ||||
-rw-r--r-- | indra/newview/app_settings/shaders/class1/objects/previewV.glsl | 8 | ||||
-rw-r--r-- | indra/newview/lldynamictexture.cpp | 30 | ||||
-rw-r--r-- | indra/newview/llfloatermodelpreview.cpp | 527 | ||||
-rw-r--r-- | indra/newview/llfloatermodelpreview.h | 2 | ||||
-rw-r--r-- | indra/newview/pipeline.cpp | 6 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_model_preview.xml | 369 |
7 files changed, 299 insertions, 842 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index b2f86fa301..8e525aceda 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -6628,189 +6628,8 @@ <key>Value</key> <integer>600</integer> </map> - <key>MeshPreviewCanvasColor</key> - <map> - <key>Comment</key> - <string>Canvas colour for the Mesh uploader</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.169</real> - <real>0.169</real> - <real>0.169</real> - <real>1.0</real> - </array> - </map> - <key>MeshPreviewEdgeColor</key> - <map> - <key>Comment</key> - <string>Edge colour for the Mesh uploader preview</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.4</real> - <real>0.4</real> - <real>0.4</real> - <real>1.0</real> - </array> - </map> - <key>MeshPreviewBaseColor</key> - <map> - <key>Comment</key> - <string>base diffuse colour for the Mesh uploader</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>MeshPreviewBrightnessColor</key> - <map> - <key>Comment</key> - <string>Brightness modifier</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color3</string> - <key>Value</key> - <array> - <real>0.9</real> - <real>0.9</real> - <real>0.9</real> - </array> - </map> - <key>MeshPreviewEdgeWidth</key> - <map> - <key>Comment</key> - <string>line thickness used when display edges is selected in mesh preview</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>F32</string> - <key>Value</key> - <real>1.0</real> - </map> - <key>MeshPreviewPhysicsEdgeColor</key> - <map> - <key>Comment</key> - <string>Edge colour for the Mesh uploader physics preview</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>0.25</real> - <real>0.5</real> - <real>0.25</real> - </array> - </map> - <key>MeshPreviewPhysicsFillColor</key> - <map> - <key>Comment</key> - <string>Fill colour for the Mesh uploader physics preview</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>0.5</real> - <real>1.0</real> - <real>0.5</real> - </array> - </map> - <key>MeshPreviewPhysicsEdgeWidth</key> - <map> - <key>Comment</key> - <string>line thickness used when display physics is selected in mesh preview</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>F32</string> - <key>Value</key> - <real>1.0</real> - </map> - <key>MeshPreviewDegenerateEdgeColor</key> - <map> - <key>Comment</key> - <string>Edge colour for the Mesh uploader Degenerate preview</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>0.0</real> - <real>0.0</real> - <real>1.0</real> - </array> - </map> - <key>MeshPreviewDegenerateFillColor</key> - <map> - <key>Comment</key> - <string>Fill colour for the Mesh uploader Degenerate preview</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>0.0</real> - <real>0.0</real> - <real>0.5</real> - </array> - </map> - <key>MeshPreviewDegenerateEdgeWidth</key> - <map> - <key>Comment</key> - <string>line thickness used when display Degenerate is selected in mesh preview</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>F32</string> - <key>Value</key> - <real>3.0</real> - </map> - <key>MeshPreviewDegeneratePointSize</key> - <map> - <key>Comment</key> - <string>Large point size used to highlight degenerate triangle vertices in Mesh preview</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>F32</string> - <key>Value</key> - <real>8.0</real> - </map> - <key>MeshPreviewZoomLimit</key> - <map> - <key>Comment</key> - <string>Maximum Zoom level in preview</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>F32</string> - <key>Value</key> - <real>10.0</real> - </map> - <map> + <key>MigrateCacheDirectory</key> + <map> <key>Comment</key> <string>Check for old version of disk cache to migrate to current location</string> <key>Persist</key> @@ -8049,17 +7868,7 @@ <key>Value</key> <integer>13</integer> </map> - <key>PreviewRenderSize</key> - <map> - <key>Comment</key> - <string>Resolution of the image rendered for the mesh upload preview</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>S32</string> - <key>Value</key> - <integer>1024</integer> - </map> + <key>PreviewAmbientColor</key> <map> <key>Comment</key> @@ -8076,6 +7885,8 @@ <real>1.0</real> </array> </map> + + <key>PreviewDiffuse0</key> <map> <key>Comment</key> diff --git a/indra/newview/app_settings/shaders/class1/objects/previewV.glsl b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl index 3424613e94..7f3f84398b 100644 --- a/indra/newview/app_settings/shaders/class1/objects/previewV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl @@ -91,10 +91,8 @@ void main() // Collect normal lights (need to be divided by two, as we later multiply by 2) col.rgb += light_diffuse[1].rgb * calcDirectionalLight(norm, light_position[1].xyz); -// col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].z); - col.rgb += light_diffuse[2].rgb * calcDirectionalLight(norm, light_position[2].xyz); -// col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].z); - col.rgb += light_diffuse[3].rgb * calcDirectionalLight(norm, light_position[3].xyz); - col /= 2.0; + col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].z); + col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].z); + vertex_color = col*color; } diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp index af6977d3cd..fa9a0712fa 100644 --- a/indra/newview/lldynamictexture.cpp +++ b/indra/newview/lldynamictexture.cpp @@ -125,17 +125,11 @@ BOOL LLViewerDynamicTexture::render() //----------------------------------------------------------------------------- void LLViewerDynamicTexture::preRender(BOOL clear_depth) { - // <FS:Beq> changes to support higher resolution rendering in the preview - ////only images up to 512x512 are supported - //llassert(mFullHeight <= 512); - //llassert(mFullWidth <= 512); - gPipeline.allocatePhysicsBuffer(); - llassert(mFullWidth <= static_cast<S32>(gPipeline.mPhysicsDisplay.getWidth())); - llassert(mFullHeight <= static_cast<S32>(gPipeline.mPhysicsDisplay.getHeight())); + //only images up to 512x512 are supported + llassert(mFullHeight <= 512); + llassert(mFullWidth <= 512); -// if (gGLManager.mHasFramebufferObject && gPipeline.mWaterDis.isComplete() && !gGLManager.mIsATI) - if (gGLManager.mHasFramebufferObject && gPipeline.mPhysicsDisplay.isComplete() && !gGLManager.mIsATI) -// </FS:Beq> + if (gGLManager.mHasFramebufferObject && gPipeline.mWaterDis.isComplete() && !gGLManager.mIsATI) { //using offscreen render target, just use the bottom left corner mOrigin.set(0, 0); } @@ -221,15 +215,14 @@ BOOL LLViewerDynamicTexture::updateAllInstances() { return TRUE; } - // <FS:Beq> changes to support higher resolution rendering in the preview - // bool use_fbo = gGLManager.mHasFramebufferObject && gPipeline.mWaterDis.isComplete() && !gGLManager.mIsATI; - bool use_fbo = gGLManager.mHasFramebufferObject && gPipeline.mPhysicsDisplay.isComplete() && !gGLManager.mIsATI; + + bool use_fbo = gGLManager.mHasFramebufferObject && gPipeline.mWaterDis.isComplete() && !gGLManager.mIsATI; + if (use_fbo) { -// gPipeline.mWaterDis.bindTarget(); - gPipeline.mPhysicsDisplay.bindTarget(); + gPipeline.mWaterDis.bindTarget(); } - // </FS:Beq> + LLGLSLShader::bindNoShader(); LLVertexBuffer::unbind(); @@ -265,10 +258,7 @@ BOOL LLViewerDynamicTexture::updateAllInstances() if (use_fbo) { - // <FS:Beq> changes to support higher resolution rendering in the preview - // gPipeline.mWaterDis.flush(); - gPipeline.mPhysicsDisplay.flush(); - // </FS:Beq> + gPipeline.mWaterDis.flush(); } return ret; diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 7624245c16..4f1ea4a89e 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -427,11 +427,8 @@ void LLFloaterModelPreview::initModelPreview() { delete mModelPreview; } - // <FS:Beq> mesh uploader changes to allow higher resolution render - // mModelPreview = new LLModelPreview(512, 512, this); - auto size = gSavedSettings.getS32("PreviewRenderSize"); - mModelPreview = new LLModelPreview(size, size, this ); - // </FS:Beq> + + mModelPreview = new LLModelPreview(512, 512, this ); mModelPreview->setPreviewTarget(16.f); mModelPreview->setDetailsCallback(boost::bind(&LLFloaterModelPreview::setDetails, this, _1, _2, _3, _4, _5)); mModelPreview->setModelUpdatedCallback(boost::bind(&LLFloaterModelPreview::toggleCalculateButton, this, _1)); @@ -441,16 +438,8 @@ void LLFloaterModelPreview::onViewOptionChecked(LLUICtrl* ctrl) { if (mModelPreview) { - // <FS:Beq> only show explode when phsyics is on - // mModelPreview->mViewOption[ctrl->getName()] = !mModelPreview->mViewOption[ctrl->getName()]; - auto name = ctrl->getName(); - mModelPreview->mViewOption[name] = !mModelPreview->mViewOption[name]; - if (name == "show_physics") - { - auto enabled = mModelPreview->mViewOption[name]; - childSetEnabled("physics_explode", enabled); - childSetVisible("physics_explode", enabled); - } + mModelPreview->mViewOption[ctrl->getName()] = !mModelPreview->mViewOption[ctrl->getName()]; + mModelPreview->refresh(); } } @@ -664,43 +653,6 @@ void LLFloaterModelPreview::onLODParamCommit(S32 lod, bool enforce_tri_limit) } } -// <FS:Beq> extracted method to simplify changes in layout -void LLFloaterModelPreview::draw3dPreview() -{ - gGL.color3f(1.f, 1.f, 1.f); - - gGL.getTexUnit(0)->bind(mModelPreview); - - - LLView* preview_panel = getChild<LLView>("preview_panel"); - - if (!preview_panel) - { - LL_WARNS() << "preview_panel not found in floater definition" << LL_ENDL; - } - LLRect rect = preview_panel->getRect(); - - if (rect != mPreviewRect) - { - mModelPreview->refresh(); - mPreviewRect = preview_panel->getRect(); - } - - gGL.begin( LLRender::QUADS ); - { - gGL.texCoord2f(0.f, 1.f); - gGL.vertex2i(mPreviewRect.mLeft, mPreviewRect.mTop-1); - gGL.texCoord2f(0.f, 0.f); - gGL.vertex2i(mPreviewRect.mLeft, mPreviewRect.mBottom); - gGL.texCoord2f(1.f, 0.f); - gGL.vertex2i(mPreviewRect.mRight-1, mPreviewRect.mBottom); - gGL.texCoord2f(1.f, 1.f); - gGL.vertex2i(mPreviewRect.mRight-1, mPreviewRect.mTop-1); - } - gGL.end(); - - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); -} //----------------------------------------------------------------------------- // draw() @@ -1266,7 +1218,6 @@ LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp) , mResetJoints( false ) , mModelNoErrors( true ) , mLastJointUpdate( false ) -, mHasDegenerate( false ) // <FS:Beq> { mNeedsUpdate = TRUE; mCameraDistance = 0.f; @@ -2756,20 +2707,8 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim void LLModelPreview::updateStatusMessages() { -// <FS:Beq> bit mask values for physics errors. used to prevent overwrite of single line status -// TODO: use this to provied multiline status - enum PhysicsError - { - NONE=0, - NOHAVOK=1, - DEGENERATE=2, - TOOMANYHULLS=4, - TOOMANYVERTSINHULL=8 - }; -// </FS:Beq> assert_main_thread(); - U32 has_physics_error{ PhysicsError::NONE }; // <FS:Beq> physics error bitmap //triangle/vertex/submesh count for each mesh asset for each lod std::vector<S32> tris[LLModel::NUM_LODS]; std::vector<S32> verts[LLModel::NUM_LODS]; @@ -2858,72 +2797,44 @@ void LLModelPreview::updateStatusMessages() { mMaxTriangleLimit = total_tris[LLModel::LOD_HIGH]; } - // <FS:Beq> make has_degenerate a member so that we can use it in the render method - // has_degenerate = false - mHasDegenerate = false; + + bool has_degenerate = false; + {//check for degenerate triangles in physics mesh U32 lod = LLModel::LOD_PHYSICS; const LLVector4a scale(0.5f); - for (U32 i = 0; i < mModel[lod].size() && !mHasDegenerate; ++i)// <FS:Beq> make has_degenerate a member + for (U32 i = 0; i < mModel[lod].size() && !has_degenerate; ++i) { //for each model in the lod if (mModel[lod][i] && mModel[lod][i]->mPhysics.mHull.empty()) { //no decomp exists S32 cur_submeshes = mModel[lod][i]->getNumVolumeFaces(); - for (S32 j = 0; j < cur_submeshes && !mHasDegenerate; ++j)// <FS:Beq> make has_degenerate a member + for (S32 j = 0; j < cur_submeshes && !has_degenerate; ++j) { //for each submesh (face), add triangles and vertices to current total LLVolumeFace& face = mModel[lod][i]->getVolumeFace(j); - for (S32 k = 0; (k < face.mNumIndices) && !mHasDegenerate; )// <FS:Beq> make has_degenerate a member + for (S32 k = 0; (k < face.mNumIndices) && !has_degenerate; ) { - U16 index_a = face.mIndices[k + 0]; - U16 index_b = face.mIndices[k + 1]; - U16 index_c = face.mIndices[k + 2]; - // <FS:Beq> FIRE-23367/23387 - Allow forced empty triangle placeholders created by the LOD processing. - // LLVector4a v1; v1.setMul(face.mPositions[index_a], scale); - // LLVector4a v2; v2.setMul(face.mPositions[index_b], scale); - // LLVector4a v3; v3.setMul(face.mPositions[index_c], scale); - - // if (ll_is_degenerate(v1, v2, v3)) - // { - // mHasDegenerate = true;// <FS:Beq> make has_degenerate a member - // } - // else - // { - // k += 3; - // } - if (index_c == 0 && index_b == 0 && index_a == 0) // test in reverse as 3rd index is less likely to be 0 in a normal case + U16 index_a = face.mIndices[k+0]; + U16 index_b = face.mIndices[k+1]; + U16 index_c = face.mIndices[k+2]; + + LLVector4a v1; v1.setMul(face.mPositions[index_a], scale); + LLVector4a v2; v2.setMul(face.mPositions[index_b], scale); + LLVector4a v3; v3.setMul(face.mPositions[index_c], scale); + + if (ll_is_degenerate(v1,v2,v3)) { - LL_DEBUGS("MeshValidation") << "Empty placeholder triangle (3 identical index 0 verts) ignored" << LL_ENDL; + has_degenerate = true; } else { - LLVector4a v1; v1.setMul(face.mPositions[index_a], scale); - LLVector4a v2; v2.setMul(face.mPositions[index_b], scale); - LLVector4a v3; v3.setMul(face.mPositions[index_c], scale); - if (ll_is_degenerate(v1, v2, v3)) - { - mHasDegenerate = true;// <FS:Beq> make has_degenerate a member - } + k += 3; } - k += 3; } } } } } - // <FS:Beq> flag degenerates here rather than deferring to a MAV error later - mFMP->childSetVisible("physics_status_message_text", mHasDegenerate); //display or clear - auto degenerateIcon = mFMP->getChild<LLIconCtrl>("physics_status_message_icon"); - degenerateIcon->setVisible(mHasDegenerate); - if (mHasDegenerate) - { - has_physics_error |= PhysicsError::DEGENERATE; - mFMP->childSetValue("physics_status_message_text", mFMP->getString("phys_status_degenerate_triangles")); - LLUIImagePtr img = LLUI::getUIImage("ModelImport_Status_Error"); - degenerateIcon->setImage(img); - } - // </FS:Beq> - mFMP->childSetTextArg("submeshes_info", "[SUBMESHES]", llformat("%d", total_submeshes[LLModel::LOD_HIGH])); std::string mesh_status_na = mFMP->getString("mesh_status_na"); @@ -3048,22 +2959,14 @@ void LLModelPreview::updateStatusMessages() } } } - + mFMP->childSetVisible("physics_status_message_text", physExceededVertexLimit); + LLIconCtrl* physStatusIcon = mFMP->getChild<LLIconCtrl>("physics_status_message_icon"); + physStatusIcon->setVisible(physExceededVertexLimit); if (physExceededVertexLimit) { - has_physics_error |= PhysicsError::TOOMANYVERTSINHULL; - } - - if (!(has_physics_error & PhysicsError::DEGENERATE)){ // only update this field (incluides clearing it) if it is not already in use. - mFMP->childSetVisible("physics_status_message_text", physExceededVertexLimit); - LLIconCtrl* physStatusIcon = mFMP->getChild<LLIconCtrl>("physics_status_message_icon"); - physStatusIcon->setVisible(physExceededVertexLimit); - if (physExceededVertexLimit) - { - mFMP->childSetValue("physics_status_message_text", mFMP->getString("phys_status_vertex_limit_exceeded")); - LLUIImagePtr img = LLUI::getUIImage("ModelImport_Status_Warning"); - physStatusIcon->setImage(img); - } + mFMP->childSetValue("physics_status_message_text", mFMP->getString("phys_status_vertex_limit_exceeded")); + LLUIImagePtr img = LLUI::getUIImage("ModelImport_Status_Warning"); + physStatusIcon->setImage(img); } if (getLoadState() >= LLModelLoader::ERROR_PARSING) @@ -3092,21 +2995,12 @@ void LLModelPreview::updateStatusMessages() mModelNoErrors = false; } } - // <FS:Beq> Improve the error checking the TO DO here is no longer applicable but not an FS comment so edited to stop it being picked up - //// To do investigate use of has_degenerate and include into mModelNoErrors upload blocking mechanics - //// current use of has_degenerate won't block upload permanently - later checks will restore the button - //if (!mModelNoErrors || mHasDegenerate) - //{ - // mFMP->childDisable("ok_btn"); - if (!mModelNoErrors || mHasDegenerate) + + // Todo: investigate use of has_degenerate and include into mModelNoErrors upload blocking mechanics + // current use of has_degenerate won't block upload permanently - later checks will restore the button + if (!mModelNoErrors || has_degenerate) { mFMP->childDisable("ok_btn"); - mFMP->childDisable("calculate_btn"); - } - else - { - mFMP->childEnable("ok_btn"); - mFMP->childEnable("calculate_btn"); } //add up physics triangles etc @@ -3722,30 +3616,11 @@ BOOL LLModelPreview::render() bool textures = mViewOption["show_textures"]; bool physics = mViewOption["show_physics"]; - // <FS:Beq> Extra configurability, to be exposed later as controls? - static LLCachedControl<LLColor4> canvas_col(gSavedSettings, "MeshPreviewCanvasColor"); - static LLCachedControl<LLColor4> edge_col(gSavedSettings, "MeshPreviewEdgeColor"); - static LLCachedControl<LLColor4> base_col(gSavedSettings, "MeshPreviewBaseColor"); - static LLCachedControl<LLColor3> brightness(gSavedSettings, "MeshPreviewBrightnessColor"); - static LLCachedControl<F32> edge_width(gSavedSettings, "MeshPreviewEdgeWidth"); - static LLCachedControl<LLColor4> phys_edge_col(gSavedSettings, "MeshPreviewPhysicsEdgeColor"); - static LLCachedControl<LLColor4> phys_fill_col(gSavedSettings, "MeshPreviewPhysicsFillColor"); - static LLCachedControl<F32> phys_edge_width(gSavedSettings, "MeshPreviewPhysicsEdgeWidth"); - static LLCachedControl<LLColor4> deg_edge_col(gSavedSettings, "MeshPreviewDegenerateEdgeColor"); - static LLCachedControl<LLColor4> deg_fill_col(gSavedSettings, "MeshPreviewDegenerateFillColor"); - static LLCachedControl<F32> deg_edge_width(gSavedSettings, "MeshPreviewDegenerateEdgeWidth"); - static LLCachedControl<F32> deg_point_size(gSavedSettings, "MeshPreviewDegeneratePointSize"); - // </FS:Beq> S32 width = getWidth(); S32 height = getHeight(); LLGLSUIDefault def; LLGLDisable no_blend(GL_BLEND); -// <FS:Beq> Clean up render of mesh preview -// LLGLEnable blend(GL_BLEND); -// gGL.blendFunc(LLRender::BF_SOURCE_ALPHA, LLRender::BF_ONE_MINUS_SOURCE_ALPHA); -// </FS:Beq> - LLGLEnable cull(GL_CULL_FACE); LLGLDepthTest depth(GL_TRUE); LLGLDisable fog(GL_FOG); @@ -3764,9 +3639,9 @@ BOOL LLModelPreview::render() gGL.matrixMode(LLRender::MM_MODELVIEW); gGL.pushMatrix(); gGL.loadIdentity(); - // <FS:Beq> uploader improvements - //gGL.color4f(0.169f, 0.169f, 0.169f, 1.f); - gGL.color4fv(static_cast<LLColor4>(canvas_col).mV); + + gGL.color4f(0.169f, 0.169f, 0.169f, 1.f); + gl_rect_2d_simple( width, height ); gGL.matrixMode(LLRender::MM_PROJECTION); @@ -3914,11 +3789,8 @@ BOOL LLModelPreview::render() stop_glerror(); gGL.pushMatrix(); - // <FS:Beq> mesh uploader improvements configurable brightness - //const F32 BRIGHTNESS = 0.9f; - //gGL.color3f(BRIGHTNESS, BRIGHTNESS, BRIGHTNESS); - gGL.color4fv(edge_col().mV); - // </FS:Beq> + const F32 BRIGHTNESS = 0.9f; + gGL.color3f(BRIGHTNESS, BRIGHTNESS, BRIGHTNESS); const U32 type_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD0; @@ -4003,22 +3875,16 @@ BOOL LLModelPreview::render() } else { - // <FS:Beq> improved mesh uploader - // gGL.diffuseColor4f(1,1,1,1); - gGL.diffuseColor4fv(static_cast<LLColor4>(base_col).mV); - // </FS:Beq> - + gGL.diffuseColor4f(1,1,1,1); } buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0); gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - // <FS:Beq> improved mesh uploader - //gGL.diffuseColor3f(0.4f, 0.4f, 0.4f); - gGL.diffuseColor4fv(static_cast<LLColor4>(edge_col).mV); - // </FS:Beq> + gGL.diffuseColor3f(0.4f, 0.4f, 0.4f); + if (edges) { - glLineWidth(edge_width); + glLineWidth(3.f); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); @@ -4030,25 +3896,11 @@ BOOL LLModelPreview::render() if (physics) { - // <FS:Beq> model upload improvements - use the settings - ////Vector4a physicsFillColour(0.4, 0.4, 0.4, 0.4); - //const LLColor4 physicsFillColour(0.0, 0.5, 1.0, 0.5); - ////LLVector4a physicsEdgeColour(1.0, 1.0, 0.0, 1.0); - //const LLColor4 physicsEdgeColour=physicsFillColour*0.5; - //const LLColor4 degenerateFill(1.0, 0.0, 0.0, 0.5); - //const LLColor4 degenerateEdge(1.0,0.0,0.0,1.0); - // </FS:Beq> - glClear(GL_DEPTH_BUFFER_BIT); - //<FS:Beq> refactor to remove silly variable names - // for (U32 i = 0; i < 2; i++) - for (U32 pass = 0; pass < 2; pass++) - //</FS:Beq> + + for (U32 i = 0; i < 2; i++) { - //<FS:Beq> refactor to remove silly variable names - //if (i == 0) - if (pass == 0) - //</FS:Beq> + if (i == 0) { //depth only pass gGL.setColorMask(false, false); } @@ -4058,11 +3910,8 @@ BOOL LLModelPreview::render() } //enable alpha blending on second pass but not first pass - //<FS:Beq> refactor to remove silly variable names - //LLGLState blend(GL_BLEND, i); - LLGLState blend(GL_BLEND, pass); - //</FS:Beq> - + LLGLState blend(GL_BLEND, i); + gGL.blendFunc(LLRender::BF_SOURCE_ALPHA, LLRender::BF_ONE_MINUS_SOURCE_ALPHA); for (LLMeshUploadThread::instance_list::iterator iter = mUploadData.begin(); iter != mUploadData.end(); ++iter) @@ -4071,196 +3920,175 @@ BOOL LLModelPreview::render() LLModel* model = instance.mLOD[LLModel::LOD_PHYSICS]; - if (!model) - { - continue; - } - - gGL.pushMatrix(); - LLMatrix4 mat = instance.mTransform; + if (!model) + { + continue; + } - gGL.multMatrix((GLfloat*)mat.mMatrix); + gGL.pushMatrix(); + LLMatrix4 mat = instance.mTransform; + gGL.multMatrix((GLfloat*) mat.mMatrix); - bool render_mesh = true; - LLPhysicsDecomp* decomp = gMeshRepo.mDecompThread; - if (decomp) - { - LLMutexLock(decomp->mMutex); - LLModel::Decomposition& physics = model->mPhysics; + bool render_mesh = true; - if (!physics.mHull.empty()) + LLPhysicsDecomp* decomp = gMeshRepo.mDecompThread; + if (decomp) { - render_mesh = false; + LLMutexLock(decomp->mMutex); - if (physics.mMesh.empty()) - { //build vertex buffer for physics mesh - gMeshRepo.buildPhysicsMesh(physics); - } + LLModel::Decomposition& physics = model->mPhysics; - if (!physics.mMesh.empty()) - { //render hull instead of mesh - for (U32 i = 0; i < physics.mMesh.size(); ++i) - { - if (explode > 0.f) + if (!physics.mHull.empty()) + { + render_mesh = false; + + if (physics.mMesh.empty()) + { //build vertex buffer for physics mesh + gMeshRepo.buildPhysicsMesh(physics); + } + + if (!physics.mMesh.empty()) + { //render hull instead of mesh + for (U32 i = 0; i < physics.mMesh.size(); ++i) { - gGL.pushMatrix(); + if (explode > 0.f) + { + gGL.pushMatrix(); - LLVector3 offset = model->mHullCenter[i] - model->mCenterOfHullCenters; - offset *= explode; + LLVector3 offset = model->mHullCenter[i]-model->mCenterOfHullCenters; + offset *= explode; - gGL.translatef(offset.mV[0], offset.mV[1], offset.mV[2]); - } + gGL.translatef(offset.mV[0], offset.mV[1], offset.mV[2]); + } - static std::vector<LLColor4U> hull_colors; + static std::vector<LLColor4U> hull_colors; - if (i + 1 >= hull_colors.size()) - { - hull_colors.push_back(LLColor4U(rand() % 128 + 127, rand() % 128 + 127, rand() % 128 + 127, 128)); - } + if (i+1 >= hull_colors.size()) + { + hull_colors.push_back(LLColor4U(rand()%128+127, rand()%128+127, rand()%128+127, 128)); + } - gGL.diffuseColor4ubv(hull_colors[i].mV); - LLVertexBuffer::drawArrays(LLRender::TRIANGLES, physics.mMesh[i].mPositions, physics.mMesh[i].mNormals); + gGL.diffuseColor4ubv(hull_colors[i].mV); + LLVertexBuffer::drawArrays(LLRender::TRIANGLES, physics.mMesh[i].mPositions, physics.mMesh[i].mNormals); - if (explode > 0.f) - { - gGL.popMatrix(); + if (explode > 0.f) + { + gGL.popMatrix(); + } } } } } - } - - if (render_mesh) - { - if (mVertexBuffer[LLModel::LOD_PHYSICS].empty()) + + if (render_mesh) { - genBuffers(LLModel::LOD_PHYSICS, false); - } + if (mVertexBuffer[LLModel::LOD_PHYSICS].empty()) + { + genBuffers(LLModel::LOD_PHYSICS, false); + } - U32 num_models = mVertexBuffer[LLModel::LOD_PHYSICS][model].size(); - if (pass > 0){ + U32 num_models = mVertexBuffer[LLModel::LOD_PHYSICS][model].size(); for (U32 i = 0; i < num_models; ++i) { LLVertexBuffer* buffer = mVertexBuffer[LLModel::LOD_PHYSICS][model][i]; gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - gGL.diffuseColor4fv(phys_fill_col().mV); + gGL.diffuseColor4f(0.4f, 0.4f, 0.0f, 0.4f); buffer->setBuffer(type_mask & buffer->getTypeMask()); - buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts() - 1, buffer->getNumIndices(), 0); + buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0); + + gGL.diffuseColor3f(1.f, 1.f, 0.f); - gGL.diffuseColor4fv(phys_edge_col().mV); - glLineWidth(phys_edge_width); + glLineWidth(2.f); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts() - 1, buffer->getNumIndices(), 0); + buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glLineWidth(1.f); } } + + gGL.popMatrix(); } - gGL.popMatrix(); - } + glLineWidth(3.f); + glPointSize(8.f); + gPipeline.enableLightsFullbright(LLColor4::white); + //show degenerate triangles + LLGLDepthTest depth(GL_TRUE, GL_TRUE, GL_ALWAYS); + LLGLDisable cull(GL_CULL_FACE); + gGL.diffuseColor4f(1.f,0.f,0.f,1.f); + const LLVector4a scale(0.5f); - //<FS:Beq> refactor to remove silly variable names - // also only do this if mDegenerate was set in the preceding mesh checks [Check this if the ordering ever breaks] - //if (i > 0) - if (pass > 0 && mHasDegenerate) - //</FS:Beq> + for (LLMeshUploadThread::instance_list::iterator iter = mUploadData.begin(); iter != mUploadData.end(); ++iter) { - glLineWidth(deg_edge_width); - glPointSize(deg_point_size); -// <FS:Beq> This single line is why the degenerate triangles display has been crap forever. -// gPipeline.enableLightsFullbright(LLColor4::white); - //show degenerate triangles - LLGLDepthTest depth(GL_TRUE, GL_TRUE, GL_ALWAYS); - LLGLDisable cull(GL_CULL_FACE); - const LLVector4a scale(0.5f); - - for (LLMeshUploadThread::instance_list::iterator iter = mUploadData.begin(); iter != mUploadData.end(); ++iter) - { - LLModelInstance& instance = *iter; + LLModelInstance& instance = *iter; - LLModel* model = instance.mLOD[LLModel::LOD_PHYSICS]; + LLModel* model = instance.mLOD[LLModel::LOD_PHYSICS]; - if (!model) - { - continue; - } + if (!model) + { + continue; + } - gGL.pushMatrix(); - LLMatrix4 mat = instance.mTransform; + gGL.pushMatrix(); + LLMatrix4 mat = instance.mTransform; - gGL.multMatrix((GLfloat*)mat.mMatrix); + gGL.multMatrix((GLfloat*) mat.mMatrix); - LLPhysicsDecomp* decomp = gMeshRepo.mDecompThread; - if (decomp) - { - LLMutexLock(decomp->mMutex); + LLPhysicsDecomp* decomp = gMeshRepo.mDecompThread; + if (decomp) + { + LLMutexLock(decomp->mMutex); - LLModel::Decomposition& physics = model->mPhysics; + LLModel::Decomposition& physics = model->mPhysics; - if (physics.mHull.empty()) + if (physics.mHull.empty()) + { + if (mVertexBuffer[LLModel::LOD_PHYSICS].empty()) { - if (mVertexBuffer[LLModel::LOD_PHYSICS].empty()) - { - genBuffers(LLModel::LOD_PHYSICS, false); - } - - auto num_degenerate = 0; - //<FS:Beq> More nested i variable silliness - // for (U32 i = 0; i < mVertexBuffer[LLModel::LOD_PHYSICS][model].size(); ++i) - auto num_models = mVertexBuffer[LLModel::LOD_PHYSICS][model].size(); - for (U32 v = 0; v < num_models; ++v) - { - LLVertexBuffer* buffer = mVertexBuffer[LLModel::LOD_PHYSICS][model][v]; - //</FS:Beq> - if(buffer->getNumVerts() < 3)continue; + genBuffers(LLModel::LOD_PHYSICS, false); + } + + for (U32 i = 0; i < mVertexBuffer[LLModel::LOD_PHYSICS][model].size(); ++i) + { + LLVertexBuffer* buffer = mVertexBuffer[LLModel::LOD_PHYSICS][model][i]; - buffer->setBuffer(type_mask & buffer->getTypeMask()); + buffer->setBuffer(type_mask & buffer->getTypeMask()); - LLStrider<LLVector3> pos_strider; - buffer->getVertexStrider(pos_strider, 0); - LLVector4a* pos = (LLVector4a*)pos_strider.get(); + LLStrider<LLVector3> pos_strider; + buffer->getVertexStrider(pos_strider, 0); + LLVector4a* pos = (LLVector4a*) pos_strider.get(); + + LLStrider<U16> idx; + buffer->getIndexStrider(idx, 0); - LLStrider<U16> idx; - buffer->getIndexStrider(idx, 0); + for (U32 i = 0; i < buffer->getNumIndices(); i += 3) + { + LLVector4a v1; v1.setMul(pos[*idx++], scale); + LLVector4a v2; v2.setMul(pos[*idx++], scale); + LLVector4a v3; v3.setMul(pos[*idx++], scale); - LLVector4a v1, v2, v3; - //<FS:Beq> rename inner most i to avoid merge confusion - for (U32 indices_offset = 0; indices_offset < buffer->getNumIndices(); indices_offset += 3) + if (ll_is_degenerate(v1,v2,v3)) { - v1.setMul(pos[*idx++], scale); - v2.setMul(pos[*idx++], scale); - v3.setMul(pos[*idx++], scale); - - if (ll_is_degenerate(v1, v2, v3)) - { - num_degenerate++; - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - gGL.diffuseColor3fv(deg_edge_col().mV); - buffer->drawRange(LLRender::TRIANGLES, 0, 2, 3, indices_offset); - buffer->drawRange(LLRender::POINTS, 0, 2, 3, indices_offset); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - gGL.diffuseColor3fv(deg_fill_col().mV); - buffer->drawRange(LLRender::TRIANGLES, 0, 2, 3, indices_offset); - } + buffer->draw(LLRender::LINE_LOOP, 3, i); + buffer->draw(LLRender::POINTS, 3, i); } } } } - - gGL.popMatrix(); } - glLineWidth(1.f); - glPointSize(1.f); - gPipeline.enableLightsPreview(); - gGL.setSceneBlendType(LLRender::BT_ALPHA); + + gGL.popMatrix(); } + glLineWidth(1.f); + glPointSize(1.f); + gPipeline.enableLightsPreview(); + gGL.setSceneBlendType(LLRender::BT_ALPHA); } } } @@ -4342,19 +4170,16 @@ BOOL LLModelPreview::render() } buffer->draw(LLRender::TRIANGLES, buffer->getNumIndices(), 0); - // <FS:Beq> configurable colour and width - //gGL.diffuseColor3f(0.4f, 0.4f, 0.4f); + gGL.diffuseColor3f(0.4f, 0.4f, 0.4f); if (edges) { - gGL.diffuseColor4fv(edge_col().mV); - glLineWidth(edge_width); + glLineWidth(3.f); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); buffer->draw(LLRender::TRIANGLES, buffer->getNumIndices(), 0); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glLineWidth(1.f); } - // </FS:Beq> } } } @@ -4412,11 +4237,8 @@ void LLModelPreview::rotate(F32 yaw_radians, F32 pitch_radians) void LLModelPreview::zoom(F32 zoom_amt) { F32 new_zoom = mCameraZoom+zoom_amt; - // <FS:Beq> add configurable zoom TODO: stop clamping in render - // mCameraZoom = llclamp(new_zoom, 1.f, 10.f); - static LLCachedControl<F32> zoom_limit(gSavedSettings, "MeshPreviewZoomLimit"); - mCameraZoom = llclamp(new_zoom, 1.f, zoom_limit()); - // </FS:Beq> + + mCameraZoom = llclamp(new_zoom, 1.f, 10.f); } void LLModelPreview::pan(F32 right, F32 up) @@ -4622,22 +4444,11 @@ void LLFloaterModelPreview::toggleCalculateButton(bool visible) childSetTextArg("server_weight", "[SIM]", tbd); childSetTextArg("physics_weight", "[PH]", tbd); childSetTextArg("upload_fee", "[FEE]", tbd); - // <FS:Beq> add extended info fields - //childSetTextArg("price_breakdown", "[STREAMING]", dashes); - //childSetTextArg("price_breakdown", "[PHYSICS]", dashes); - //childSetTextArg("price_breakdown", "[INSTANCES]", dashes); - //childSetTextArg("price_breakdown", "[TEXTURES]", dashes); - //childSetTextArg("price_breakdown", "[MODEL]", dashes); - std::string dashes = hasString("--") ? getString("--") : "--"; - childSetTextArg("price_breakdown", "[STREAMING]", dashes); - childSetTextArg("price_breakdown", "[PHYSICS]", dashes); - childSetTextArg("price_breakdown", "[INSTANCES]", dashes); - childSetTextArg("price_breakdown", "[TEXTURES]", dashes); - childSetTextArg("price_breakdown", "[MODEL]", dashes); - childSetTextArg("physics_breakdown", "[PCH]", dashes); - childSetTextArg("physics_breakdown", "[PM]", dashes); - childSetTextArg("physics_breakdown", "[PHU]", dashes); - // </FS:Beq> + childSetTextArg("price_breakdown", "[STREAMING]", tbd); + childSetTextArg("price_breakdown", "[PHYSICS]", tbd); + childSetTextArg("price_breakdown", "[INSTANCES]", tbd); + childSetTextArg("price_breakdown", "[TEXTURES]", tbd); + childSetTextArg("price_breakdown", "[MODEL]", tbd); } } @@ -4687,16 +4498,6 @@ void LLFloaterModelPreview::handleModelPhysicsFeeReceived() childSetTextArg("price_breakdown", "[INSTANCES]", llformat("%d", result["upload_price_breakdown"]["mesh_instance"].asInteger())); childSetTextArg("price_breakdown", "[TEXTURES]", llformat("%d", result["upload_price_breakdown"]["texture"].asInteger())); childSetTextArg("price_breakdown", "[MODEL]", llformat("%d", result["upload_price_breakdown"]["model"].asInteger())); -//<FS:Beq> Updates for enhanced Mesh feedback at upload - childSetTextArg("physics_breakdown", "[PCH]", llformat("%0.3f", result["model_physics_cost"]["hull"].asReal())); - childSetTextArg("physics_breakdown", "[PM]", llformat("%0.3f", result["model_physics_cost"]["mesh"].asReal())); - childSetTextArg("physics_breakdown", "[PHU]", llformat("%0.3f", result["model_physics_cost"]["decomposition"].asReal())); - childSetTextArg("streaming_breakdown", "[STR_TOTAL]", llformat("%d", result["streaming_cost"].asInteger())); - childSetTextArg("streaming_breakdown", "[STR_HIGH]", llformat("%d", result["streaming_params"]["high_lod"].asInteger())); - childSetTextArg("streaming_breakdown", "[STR_MED]", llformat("%d", result["streaming_params"]["medium_lod"].asInteger())); - childSetTextArg("streaming_breakdown", "[STR_LOW]", llformat("%d", result["streaming_params"]["low_lod"].asInteger())); - childSetTextArg("streaming_breakdown", "[STR_LOWEST]", llformat("%d", result["streaming_params"]["lowest_lod"].asInteger())); -//</FS:Beq> childSetVisible("upload_fee", true); childSetVisible("price_breakdown", true); mUploadBtn->setEnabled(isModelUploadAllowed()); diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index 564f4c39de..7ec6a58ac7 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -152,7 +152,6 @@ protected: static void onAutoFillCommit(LLUICtrl*,void*); void onLODParamCommit(S32 lod, bool enforce_tri_limit); - void draw3dPreview(); static void onExplodeCommit(LLUICtrl*, void*); @@ -311,7 +310,6 @@ public: static bool sIgnoreLoadedCallback; std::vector<S32> mLodsQuery; std::vector<S32> mLodsWithParsingError; - bool mHasDegenerate; protected: diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index c7626304ed..40d6d325ba 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -6582,7 +6582,7 @@ void LLPipeline::enableLightsPreview() light->enable(); light->setPosition(light_pos); light->setDiffuse(diffuse0); - light->setAmbient(ambient); + light->setAmbient(LLColor4::black); light->setSpecular(specular0); light->setSpotExponent(0.f); light->setSpotCutoff(180.f); @@ -6593,7 +6593,7 @@ void LLPipeline::enableLightsPreview() light->enable(); light->setPosition(light_pos); light->setDiffuse(diffuse1); - light->setAmbient(ambient); + light->setAmbient(LLColor4::black); light->setSpecular(specular1); light->setSpotExponent(0.f); light->setSpotCutoff(180.f); @@ -6603,7 +6603,7 @@ void LLPipeline::enableLightsPreview() light->enable(); light->setPosition(light_pos); light->setDiffuse(diffuse2); - light->setAmbient(ambient); + light->setAmbient(LLColor4::black); light->setSpecular(specular2); light->setSpotExponent(0.f); light->setSpotCutoff(180.f); diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index e073268b0a..5a86eb06fb 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -2,12 +2,12 @@ <floater can_close="true" can_drag_on_left="false" - can_minimize="true" - can_resize="true" - height="600" - min_height="600" - width="1024" - min_width="1024" + can_minimize="false" + can_resize="false" + height="480" + min_height="480" + width="980" + min_width="980" name="Model Preview" title="UPLOAD MODEL" help_topic="upload_model" > @@ -33,21 +33,19 @@ <string name="mesh_status_missing_lod">Missing required level of detail.</string> <string name="mesh_status_invalid_material_list">LOD materials are not a subset of reference model.</string> <string name="phys_status_vertex_limit_exceeded">Some physical hulls exceed vertex limitations.</string> - <string name="phys_status_degenerate_triangles">The physics mesh too dense remove the small thin triangles (see preview)</string> - <string name="phys_status_no_havok">The Firestorm OpenSim build is not supported for physics upload in SL.</string> <string name="layer_all">All</string> <!-- Text to display in physics layer combo box for "all layers" --> <string name="decomposing">Analyzing...</string> <string name="simplifying">Simplifying...</string> <string name="tbd">TBD</string> - <panel - follows="top|left" - height="580" - layout="topleft" - left="3" - name="left_panel" - top_pad="0" - width="630"> +<panel + follows="top|left" + height="455" + layout="topleft" + left="3" + name="left_panel" + top_pad="10" + width="630"> <panel follows="all" height="50" @@ -757,9 +755,8 @@ name="first_step_name" text_color="White" top_pad="0" - width="210" - valign="center"> - Step 1: Pick a physics model : + width="210"> + Step 1: Level of Detail </text> <combo_box follows="left|top" @@ -801,7 +798,7 @@ layout="topleft" left="18" name="physics_tab_border" - top_pad="10" + top_pad="15" width="589"/> <panel bg_alpha_color="0 0 0 0" @@ -810,7 +807,7 @@ follows="top|left" left="18" name="physics analysis" - top_pad="10" + top_pad="15" visible="true" width="589"> <text @@ -822,7 +819,7 @@ name="method_label" text_color="White" top_pad="0"> - Step 2: Convert to hulls (optional) + Step 2: Analyze </text> <text follows="top|left" @@ -908,7 +905,7 @@ layout="topleft" left="18" name="physics_tab_border" - top_pad="10" + top_pad="15" width="589"/> <panel bg_alpha_color="0 0 0 0" @@ -917,7 +914,7 @@ height="66" left="18" name="physics simplification" - top_pad="10" + top_pad="15" width="589"> <text text_color="White" @@ -1016,7 +1013,7 @@ layout="topleft" left="18" name="physics_tab_border" - top_pad="10" + top_pad="15" width="589"/> <panel bg_alpha_color="0 0 0 0" @@ -1078,9 +1075,10 @@ follows="left|top" height="19" layout="topleft" - top_pad="5" + left_pad="5" + top_delta="0" name="physics message" - width="589"> + width="270"> <icon follows="left|top" height="16" @@ -1095,7 +1093,7 @@ layout="topleft" left_pad="2" name="physics_status_message_text" - width="573" + width="252" top_delta="3"/> </panel> </panel> @@ -1221,14 +1219,13 @@ </panel> </tab_container> <panel - follows="top|left|bottom" - layout="topleft" - height="184" - left="4" - border="true" + follows="top|left" + height="80" + layout="top|left" + left="0" name="weights_and_warning_panel" top_pad="3" - width="629"> + width="625"> <button follows="top|left" label="Calculate weights & fee" @@ -1268,10 +1265,10 @@ label_color="White" layout="topleft" name="reset_btn" - right="-5" + right="-2" top="3" height="20" - width="265"/> + width="275"/> <!-- ========== WEIGHTS ==========--> <text follows="top|left" @@ -1290,7 +1287,7 @@ left_pad="0" name="prim_weight" top_delta="0" - width="130" + width="120" word_wrap="true"> Land impact: [EQ] </text> @@ -1300,7 +1297,7 @@ left_pad="0" name="download_weight" top_delta="0" - width="130" + width="100" word_wrap="true"> Download: [ST] </text> @@ -1310,7 +1307,7 @@ layout="topleft" left_pad="0" name="physics_weight" - width="130" + width="90" word_wrap="true"> Physics: [PH] </text> @@ -1320,148 +1317,17 @@ layout="topleft" left_pad="0" name="server_weight" - width="130" + width="83" word_wrap="true"> Server: [SIM] </text> - <!-- =========== Cost breakdown ======== --> - <panel - border="true" - top_pad="5" - layout="topleft" - left="6" - name="price_breakdown_panel" - width="120" - height="100"> - <text - layout="topleft" - left="3"> - Price Breakdown - </text> - <view_border - bevel_style="none" - follows="top|left" - height="0" - layout="topleft" - left="3" - name="price_breakdown_border" - top_pad="5" - width="110"/> - <text - height="80" - top_pad="5" - layout="topleft" - left="3" - name="price_breakdown_labels" - width="70" - word_wrap="false"> -Download: -Physics: -Instances: -Textures: -Model: - </text> - <text - height="80" - top_delta="0" - layout="topleft" - halign="right" - left_pad="0" - name="price_breakdown" - width="40" - word_wrap="false"> -[STREAMING] -[PHYSICS] -[INSTANCES] -[TEXTURES] -[MODEL] - </text> - </panel> - <!-- - Streaming breakdown numbers are available but not fully understood - uncommenting the following sections will display the numbers for debugging purposes - <text - height="80" - top_delta="0" - layout="topleft" - left="130" - name="streaming_breakdown_labels" - width="65" - word_wrap="true"> -Streaming/Download: -High: -Medium: -Low: -Lowest: - </text> + <!-- ========== NOTE MESSAGE ========== --> <text - height="80" - top_delta="0" - layout="topleft" - left_pad="0" - name="streaming_breakdown" - width="95" - word_wrap="true"> -[STR_TOTAL] -[STR_HIGH] -[STR_MED] -[STR_LOW] -[STR_LOWEST] - </text>--> - <panel - border="true" - layout="topleft" - left_pad="265" - name="price_breakdown_panel" - width="120" - height="100"> - <text - layout="topleft" - left="3"> - Physics Costs - </text> - <view_border - bevel_style="none" - follows="top|left" - height="0" - layout="topleft" - left="3" - name="price_breakdown_border" - top_pad="5" - width="110"/> - <text - height="80" - top_pad="5" - layout="topleft" - left="5" - name="physics_breakdown_labels" - width="65"> -Base Hull: -Mesh: -Analysed: - </text> - <text - height="80" - top_delta="0" - layout="topleft" - left_pad="0" - name="physics_breakdown" - width="40" - halign="right" - word_wrap="false" - visible="true"> -[PCH] -[PM] -[PHU] - </text>--> - </panel> - <!-- ========== NOTE MESSAGE ========== --> - <text font="SansSerif" layout="topleft" left="6" name="warning_title" - top_pad="5" + top_pad="10" text_color="DrYellow" visible="false" width="40"> @@ -1480,110 +1346,104 @@ Analysed: visible="false"> You dont have rights to upload mesh models. [[VURL] Find out how] to get certified. </text> - <text text_color="Yellow" layout="topleft" top_delta="5" left="6" name="status"> -[STATUS] - </text> + <text text_color="Yellow" layout="topleft" top_delta="20" left="6" name="status">[STATUS]</text> + </panel> - </panel> - <panel - follows="top|left|bottom|right" - can_resize="true" - name="right_panel" - top="0" - left="640" - background_visible="true" - width="375"> - <text +</panel> + +<text + follows="left|top" + layout="topleft" + left="640" + name="lod_label" + text_color="White" + top="13" + height="15" + width="290"> + Preview: + </text> +<panel + border="true" + bevel_style="none" + follows="top|left" + name="preview_panel" + top_pad="4" + width="290" + height="290"/> + +<panel + follows="all" + height="130" + layout="topleft" + name="right_panel" + top_pad="5" + width="340"> + <combo_box + top_pad="3" follows="left|top" + height="18" layout="topleft" - left="0" - name="lod_label" - text_color="White" - top="13" - height="15" - width="290"> - Preview: - </text> - <panel - can_resize="false" - follows="top|left" - height="20" - name="right_upper_panel" - top="8" - left="60" - background_visible="true" - width="315"> - <combo_box - top_pad="3" - can_resize="false" - follows="top|left" - height="18" - layout="topleft" - name="preview_lod_combo" - width="75" - tool_tip="LOD to view in preview render"> + name="preview_lod_combo" + width="150" + tool_tip="LOD to view in preview render"> <combo_item name="high"> High </combo_item> <combo_item name="medium"> Medium </combo_item> <combo_item name="low"> Low </combo_item> <combo_item name="lowest"> Lowest </combo_item> - </combo_box> - </panel> - </panel> - <panel - border="true" - bevel_style="none" - follows="top|left|right|bottom" - layout="topleft" - name="preview_panel" - top="30" - width="375" - height="525"/> - - <panel - follows="left|right|bottom" - layout="topleft" - height="40" - name="lower_right_panel" - top_pad="5" - width="375"> - <check_box - follows="right|bottom" - label="Edges" + </combo_box> + <text + follows="top|left" + layout="topleft" + text_color="White" + top="5" + left_pad="20" + name="label_display" + width="50"> + Display... + </text> + <check_box + follows="top|left" + label="Edges" label_text.text_color="White" layout="topleft" + left_delta="0" name="show_edges" - width="70" - left="0" - top_pad="8"/> + top_pad="8"> + </check_box> <check_box - follows="right|bottom" - left_pad="8" + follows="top|left" label="Physics" label_text.text_color="White" - name="show_physics"/> + layout="topleft" + name="show_physics" + top_pad="8"> + </check_box> <check_box - follows="right|bottom" + follows="top|left" label="Textures" label_text.text_color="White" layout="topleft" name="show_textures" - left_pad="0"/> + top_pad="8"> + </check_box> <check_box - follows="right|bottom" - label="Weights" + follows="top|left" + label="Skin weights" label_text.text_color="White" layout="topleft" name="show_skin_weight" - left_pad="0"/> + top_pad="8"> + </check_box> <check_box - follows="right|bottom" + follows="top|left" label="Joints" label_text.text_color="White" layout="topleft" name="show_joint_positions" - left_pad="0"/> + top_pad="8"> + </check_box> <text - follows="right|bottom" + follows="top|left" layout="topleft" left="2" name="physics_explode_label" @@ -1593,13 +1453,12 @@ Analysed: </text> <slider name="physics_explode" - follows="right|bottom" - valign="center" - top="15" - left="80" + follows="top|left" + top="100" + left="0" min_val="0.0" max_val="3.0" height="20" - width="120"/> - </panel> + width="150"/> +</panel> </floater> |