Removed appearance utility from viewer source. Added appearance utility autobuild package.
parent
9307810e7e
commit
8808325ced
|
|
@ -8,9 +8,13 @@ Darwin.symbolfiles = "newview/Release/secondlife-symbols-darwin.tar.bz2"
|
|||
CYGWIN.symbolfiles = "newview/Release/secondlife-symbols-windows.tar.bz2"
|
||||
Linux.symbolfiles = "newview/secondlife-symbols-linux.tar.bz2"
|
||||
|
||||
variants=Release
|
||||
|
||||
# Use Public Upload Locations
|
||||
public_build = true
|
||||
|
||||
clean_on_success = false
|
||||
|
||||
# skip windows debug build until we can get a fix in.
|
||||
build_CYGWIN_Debug = false
|
||||
|
||||
|
|
|
|||
|
|
@ -1239,6 +1239,32 @@
|
|||
</map>
|
||||
</map>
|
||||
</map>
|
||||
<key>llappearanceutility-source</key>
|
||||
<map>
|
||||
<key>license</key>
|
||||
<string>TEMPORARY</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/llappearanceutility.txt</string>
|
||||
<key>name</key>
|
||||
<string>llappearanceutility-source</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>linux</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>a1197a789ccedb6cdd9d8aeb30e52b1b</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/264759/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120914.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>0.1</string>
|
||||
</map>
|
||||
<key>llphysicsextensions_source</key>
|
||||
<map>
|
||||
<key>license</key>
|
||||
|
|
|
|||
39
build.sh
39
build.sh
|
|
@ -113,11 +113,23 @@ build()
|
|||
check_for "Before 'autobuild build'" ${build_dir}/packages/dictionaries
|
||||
|
||||
"$AUTOBUILD" build --no-configure -c $variant
|
||||
viewer_build_ok=$?
|
||||
build_ok=$?
|
||||
end_section "Viewer$variant"
|
||||
|
||||
# Run build extensions
|
||||
if [ $build_ok -eq 0 -a -d ${build_dir}/packages/build-extensions ]; then
|
||||
for extension in ${build_dir}/packages/build-extensions/*.sh; do
|
||||
. $extension
|
||||
if [ $build_ok -ne 0 ]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# *TODO: Make this a build extension.
|
||||
package_llphysicsextensions_tpv
|
||||
tpvlib_build_ok=$?
|
||||
if [ $viewer_build_ok -eq 0 -a $tpvlib_build_ok -eq 0 ]
|
||||
if [ $build_ok -eq 0 -a $tpvlib_build_ok -eq 0 ]
|
||||
then
|
||||
echo true >"$build_dir"/build_ok
|
||||
else
|
||||
|
|
@ -299,7 +311,7 @@ then
|
|||
then
|
||||
if $build_viewer_deb && [ "$last_built_variant" == "Release" ]
|
||||
then
|
||||
begin_section "Build Debian Package"
|
||||
begin_section "Build Viewer Debian Package"
|
||||
# mangle the changelog
|
||||
dch --force-bad-version \
|
||||
--distribution unstable \
|
||||
|
|
@ -313,7 +325,16 @@ then
|
|||
# Unmangle the changelog file
|
||||
hg revert debian/changelog
|
||||
|
||||
end_section "Build Debian Package"
|
||||
end_section "Build Viewer Debian Package"
|
||||
|
||||
# Run debian extensions
|
||||
if [ -d ${build_dir}/packages/debian-extensions ]; then
|
||||
for extension in ${build_dir}/packages/debian-extensions/*.sh; do
|
||||
. $extension
|
||||
done
|
||||
fi
|
||||
# Move any .deb results.
|
||||
mv ${build_dir}/packages/*.deb ../ 2>/dev/null || true
|
||||
|
||||
# upload debian package and create repository
|
||||
begin_section "Upload Debian Repository"
|
||||
|
|
@ -394,8 +415,9 @@ then
|
|||
do
|
||||
upload_item symbolfile "$build_dir/$symbolfile" binary/octet-stream
|
||||
done
|
||||
|
||||
|
||||
# Upload the llphysicsextensions_tpv package, if one was produced
|
||||
# *TODO: Make this an upload-extension
|
||||
if [ -r "$build_dir/llphysicsextensions_package" ]
|
||||
then
|
||||
llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package)
|
||||
|
|
@ -409,6 +431,13 @@ then
|
|||
;;
|
||||
esac
|
||||
|
||||
# Run upload extensions
|
||||
if [ -d ${build_dir}/packages/upload-extensions ]; then
|
||||
for extension in ${build_dir}/packages/upload-extensions/*.sh; do
|
||||
. $extension
|
||||
done
|
||||
fi
|
||||
|
||||
# Upload stub installers
|
||||
upload_stub_installers "$build_dir_stubs"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,9 +1,3 @@
|
|||
secondlife-viewer (0.4) unstable; urgency=low
|
||||
|
||||
* Adding appearance utility package
|
||||
|
||||
-- Don Kjer <don@lindenlab.com> Thu, 06 Sep 2012 19:32:55 +0000
|
||||
|
||||
secondlife-viewer (0.3) unstable; urgency=low
|
||||
|
||||
* Initial debian configuration
|
||||
|
|
|
|||
|
|
@ -14,11 +14,3 @@ Depends: ${shlibs:Depends}, ${misc:Depends},
|
|||
Description: Second Life Viewer
|
||||
Second Life is an online virtual world developed by Linden Lab.
|
||||
|
||||
Package: secondlife-appearance-utility
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends},
|
||||
ia32-libs,
|
||||
ia32-libs-gtk
|
||||
Description: Second Life Appearance Utility
|
||||
Utility for manipulating Second Life avatar appearance.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,32 @@
|
|||
Copyright: 2012 Linden Research, Inc.
|
||||
Second Life Viewer Copyright: 2000-2012 Linden Research, Inc.
|
||||
|
||||
License:
|
||||
|
||||
No license to distribute, copy, modify, or make derivitave works of this
|
||||
software is granted unless specifically granted in writing by Linden Research,
|
||||
Inc.
|
||||
3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion
|
||||
APR Copyright (C) 2011 The Apache Software Foundation
|
||||
Collada DOM Copyright 2006 Sony Computer Entertainment Inc.
|
||||
cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se)
|
||||
DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc.
|
||||
expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
|
||||
FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
GL Copyright (C) 1999-2004 Brian Paul.
|
||||
GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University and David Luebke, Brenden Schubert, University of Virginia.
|
||||
google-perftools Copyright (c) 2005, Google Inc.
|
||||
Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
|
||||
jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
|
||||
jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
|
||||
ogg/vorbis Copyright (C) 2002, Xiphophorus
|
||||
OpenSSL Copyright (C) 1998-2008 The OpenSSL Project.
|
||||
PCRE Copyright (c) 1997-2012 University of Cambridge
|
||||
SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
|
||||
SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
xmlrpc-epi Copyright (C) 2000 Epinions, Inc.
|
||||
zlib Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler.
|
||||
|
||||
Second Life Viewer uses Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (and its Licensors). All Rights Reserved. See www.havok.com for details.
|
||||
|
||||
This software contains source code provided by NVIDIA Corporation.
|
||||
|
||||
All rights reserved. See licenses.txt for details.
|
||||
|
||||
Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
|
||||
|
|
|
|||
|
|
@ -17,12 +17,6 @@ VIEWER_DESTDIR=$(CURDIR)/debian/$(VIEWER_PKG)
|
|||
VIEWER_VERSION:=$(shell dpkg-parsechangelog | grep ^Version | sed 's/^Version: //')
|
||||
VIEWER_INSTALLDIR:=$(BASEDIR)/viewer/SecondLife-i686-$(VIEWER_VERSION)
|
||||
|
||||
UTILITY_PKG=secondlife-appearance-utility
|
||||
UTILITY_SRCDIR=indra/appearance_utility
|
||||
UTILITY_PACKAGEDIR=build-linux-i686/appearance_utility
|
||||
UTILITY_DESTDIR=$(CURDIR)/debian/$(UTILITY_PKG)
|
||||
UTILITY_INSTALLDIR:=$(BASEDIR)/utilities
|
||||
|
||||
configure: configure-stamp
|
||||
configure-stamp:
|
||||
dh_testdir
|
||||
|
|
@ -77,43 +71,6 @@ install: build
|
|||
dh_link -p $(VIEWER_PKG) /$(VIEWER_INSTALLDIR)/secondlife /usr/bin/secondlife
|
||||
dh_link -p $(VIEWER_PKG) $(BASEDIR)/viewer/SecondLife-i686-$(VIEWER_VERSION) $(BASEDIR)/viewer/SecondLife
|
||||
|
||||
# Add here commands to install the package into debian/secondlife-appearance-utility
|
||||
# create containing directory
|
||||
install -v -m 755 -o root -g root -d "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)"
|
||||
# install utility wrapper
|
||||
install -v -m 755 -o root -g root "$(UTILITY_SRCDIR)/wrapper.sh" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/wrapper.sh"
|
||||
# install appearance-utility
|
||||
install -v -m 755 -o root -g root "$(UTILITY_PACKAGEDIR)/appearance-utility-bin" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/appearance-utility-bin"
|
||||
dh_link -p $(UTILITY_PKG) $(UTILITY_INSTALLDIR)/wrapper.sh $(UTILITY_INSTALLDIR)/appearance-utility
|
||||
# install xml/image resources from viewer package
|
||||
for file in $$(find $(VIEWER_PACKAGEDIR)/character -name "avatar_*.xml" -o -name "*.tga" | sed 's~$(VIEWER_PACKAGEDIR)/~~'); do \
|
||||
# create containing directory \
|
||||
install -v -m 755 -o root -g root -d "$$(dirname "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file")"; \
|
||||
PERM=644; \
|
||||
if [ -x "$(VIEWER_PACKAGEDIR)/$$file" ]; then \
|
||||
PERM=755; \
|
||||
fi; \
|
||||
install -v -m $$PERM -o root -g root "$(VIEWER_PACKAGEDIR)/$$file" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file"; \
|
||||
done
|
||||
# install viewer libraries
|
||||
for file in $$(find $(VIEWER_PACKAGEDIR)/lib -type f -o -type l | sed 's~$(VIEWER_PACKAGEDIR)/~~'); do \
|
||||
# create containing directory \
|
||||
install -v -m 755 -o root -g root -d "$$(dirname "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file")"; \
|
||||
PERM=644; \
|
||||
if [ -x "$(VIEWER_PACKAGEDIR)/$$file" ]; then \
|
||||
PERM=755; \
|
||||
fi; \
|
||||
if [ -L "$(VIEWER_PACKAGEDIR)/$$file" ]; then \
|
||||
REAL="$$( readlink -f $(VIEWER_PACKAGEDIR)/$$file )"; \
|
||||
RELATIVE="$$( echo $$REAL | sed 's~$(CURDIR)/$(VIEWER_PACKAGEDIR)/~~' )"; \
|
||||
echo dh_link -p $(UTILITY_PKG) "$(UTILITY_INSTALLDIR)/$$RELATIVE" "$(UTILITY_INSTALLDIR)/$$file" ; \
|
||||
dh_link -p $(UTILITY_PKG) "$(UTILITY_INSTALLDIR)/$$RELATIVE" "$(UTILITY_INSTALLDIR)/$$file" ; \
|
||||
else \
|
||||
install -v -m $$PERM -o root -g root "$(VIEWER_PACKAGEDIR)/$$file" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file"; \
|
||||
fi; \
|
||||
done
|
||||
dh_link -p $(UTILITY_PKG) /$(UTILITY_INSTALLDIR)/appearance-utility /usr/bin/appearance-utility
|
||||
|
||||
|
||||
# Build architecture-independent files here.
|
||||
binary-indep: build install
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
misc:Depends=
|
||||
|
|
@ -83,7 +83,10 @@ if (VIEWER)
|
|||
if (LINUX)
|
||||
add_subdirectory(${VIEWER_PREFIX}linux_crash_logger)
|
||||
add_subdirectory(${VIEWER_PREFIX}linux_updater)
|
||||
add_subdirectory(${VIEWER_PREFIX}appearance_utility)
|
||||
if (INSTALL_PROPRIETARY)
|
||||
include(LLAppearanceUtility)
|
||||
add_subdirectory(${LLAPPEARANCEUTILITY_SRC_DIR} ${LLAPPEARANCEUTILITY_BIN_DIR})
|
||||
endif (INSTALL_PROPRIETARY)
|
||||
add_dependencies(viewer linux-crash-logger-strip-target linux-updater)
|
||||
elseif (DARWIN)
|
||||
add_subdirectory(${VIEWER_PREFIX}mac_crash_logger)
|
||||
|
|
|
|||
|
|
@ -1,66 +0,0 @@
|
|||
# -*- cmake -*-
|
||||
|
||||
project(appearance_utility)
|
||||
|
||||
include(00-Common)
|
||||
include(LLAppearance)
|
||||
include(LLCharacter)
|
||||
include(LLCommon)
|
||||
include(LLImage)
|
||||
include(LLInventory)
|
||||
include(LLMath)
|
||||
include(LLRender)
|
||||
include(LLVFS)
|
||||
include(LLXML)
|
||||
include(Linking)
|
||||
include(GooglePerfTools)
|
||||
|
||||
include_directories(
|
||||
${LLCOMMON_INCLUDE_DIRS}
|
||||
${LLVFS_INCLUDE_DIRS}
|
||||
${LLXML_INCLUDE_DIRS}
|
||||
${LLCHARACTER_INCLUDE_DIRS}
|
||||
${LLIMAGE_INCLUDE_DIRS}
|
||||
${LLMATH_INCLUDE_DIRS}
|
||||
${LLINVENTORY_INCLUDE_DIRS}
|
||||
${LLRENDER_INCLUDE_DIRS}
|
||||
${LLAPPEARANCE_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
set(appearance_utility_SOURCE_FILES
|
||||
appearance_utility.cpp
|
||||
llappappearanceutility.cpp
|
||||
llbakingavatar.cpp
|
||||
llbakingjoint.cpp
|
||||
llbakingjointmesh.cpp
|
||||
llbakingshadermgr.cpp
|
||||
llbakingtexlayer.cpp
|
||||
llprocessparams.cpp
|
||||
)
|
||||
|
||||
set(appearance_utility_HEADER_FILES
|
||||
CMakeLists.txt
|
||||
llappappearanceutility.h
|
||||
llbakingavatar.h
|
||||
llbakingjoint.h
|
||||
llbakingjointmesh.h
|
||||
llbakingprocess.h
|
||||
llbakingshadermgr.h
|
||||
llbakingtexlayer.h
|
||||
llprocessparams.h
|
||||
)
|
||||
|
||||
set_source_files_properties(${appearance_utility_HEADER_FILES}
|
||||
PROPERTIES HEADER_FILES_ONLY TRUE)
|
||||
|
||||
list(APPEND appearance_utility_SOURCE_FILES ${appearance_utility_HEADER_FILES})
|
||||
|
||||
add_executable(appearance-utility-bin ${appearance_utility_SOURCE_FILES})
|
||||
|
||||
target_link_libraries(appearance-utility-bin
|
||||
${LLAPPEARANCE_LIBRARIES}
|
||||
${TCMALLOC_LIBRARIES}
|
||||
)
|
||||
|
||||
add_custom_target(appearance-utility-bin-target ALL
|
||||
DEPENDS appearance-utility-bin)
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
/**
|
||||
* @file appearance_utility.cpp
|
||||
* @author Don Kjer <don@lindenlab.com>, Nyx Linden
|
||||
* @brief Utility for processing avatar appearance without a full viewer implementation.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
// linden includes
|
||||
#include "linden_common.h"
|
||||
#include "llapr.h"
|
||||
|
||||
// project includes
|
||||
#include "llappappearanceutility.h"
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
// Create an application instance.
|
||||
ll_init_apr();
|
||||
LLAppAppearanceUtility* app = new LLAppAppearanceUtility(argc, argv);
|
||||
|
||||
// Assume success, unless exception is thrown.
|
||||
EResult rv = RV_SUCCESS;
|
||||
try
|
||||
{
|
||||
// Process command line and initialize system.
|
||||
if (app->init())
|
||||
{
|
||||
// Run process.
|
||||
app->mainLoop();
|
||||
}
|
||||
}
|
||||
catch (LLAppException& e)
|
||||
{
|
||||
// Deal with errors.
|
||||
rv = e.getStatusCode();
|
||||
}
|
||||
|
||||
// Clean up application instance.
|
||||
app->cleanup();
|
||||
delete app;
|
||||
ll_cleanup_apr();
|
||||
|
||||
return (int) rv;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,445 +0,0 @@
|
|||
/**
|
||||
* @file llappappearanceutility.cpp
|
||||
* @brief Implementation of LLAppAppearanceUtility class.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
// linden includes
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llapr.h"
|
||||
#include "llerrorcontrol.h"
|
||||
#include "llsd.h"
|
||||
#include "llsdserialize.h"
|
||||
#include "llsdutil.h"
|
||||
|
||||
// appearance includes
|
||||
#include "llavatarappearance.h"
|
||||
#include "llwearabletype.h"
|
||||
|
||||
// project includes
|
||||
#include "llappappearanceutility.h"
|
||||
#include "llbakingprocess.h"
|
||||
#include "llprocessparams.h"
|
||||
|
||||
const std::string NOTHING_EXTRA("");
|
||||
|
||||
////////////////////////////////////////////
|
||||
// LLAppException
|
||||
////////////////////////////////////////////
|
||||
|
||||
static const std::string MESSAGE_RV_UNKNOWN("Unknown error.");
|
||||
static const std::string MESSAGE_RV_ARGUMENTS
|
||||
("Invalid arguments: ");
|
||||
static const std::string MESSAGE_RV_UNABLE_OPEN("Unable to open file: ");
|
||||
static const std::string MESSAGE_RV_UNABLE_TO_PARSE("Unable to parse input LLSD.");
|
||||
static const std::string MESSAGE_DUPLICATE_MODES = "Cannot specify more than one process mode.";
|
||||
|
||||
|
||||
LLAppException::LLAppException(EResult status_code, const std::string& extra) :
|
||||
mStatusCode(status_code)
|
||||
{
|
||||
switch(status_code)
|
||||
{
|
||||
case RV_UNKNOWN_ERROR:
|
||||
printErrorLLSD("unknown", MESSAGE_RV_UNKNOWN);
|
||||
case RV_BAD_ARGUMENTS:
|
||||
printErrorLLSD("arguments", MESSAGE_RV_ARGUMENTS + extra);
|
||||
break;
|
||||
case RV_UNABLE_OPEN:
|
||||
printErrorLLSD("file", MESSAGE_RV_UNABLE_OPEN + extra);
|
||||
break;
|
||||
case RV_UNABLE_TO_PARSE:
|
||||
printErrorLLSD("input", MESSAGE_RV_UNABLE_TO_PARSE);
|
||||
break;
|
||||
default:
|
||||
printErrorLLSD("arguments", "Unknown exception.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void LLAppException::printErrorLLSD(const std::string& key, const std::string& message)
|
||||
{
|
||||
LLSD error_llsd;
|
||||
error_llsd["success"] = false;
|
||||
error_llsd["error"]["key"] = key;
|
||||
error_llsd["error"]["message"] = message;
|
||||
|
||||
std::cerr << LLSDOStreamer<LLSDXMLFormatter>(error_llsd);
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////
|
||||
// LLAppAppearanceUtility
|
||||
////////////////////////////////////////////
|
||||
|
||||
///////// Option Parsing /////////
|
||||
|
||||
// Simple usage command.
|
||||
class LLProcessUsage : public LLBakingProcess
|
||||
{
|
||||
public:
|
||||
LLProcessUsage(LLAppAppearanceUtility* app) :
|
||||
LLBakingProcess(app) {}
|
||||
/*virtual*/ void process(LLSD& input, std::ostream& output)
|
||||
{
|
||||
mApp->usage(output);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
static const apr_getopt_option_t APPEARANCE_UTILITY_OPTIONS[] =
|
||||
{
|
||||
{"params", 'p', 0, "Generate appearance parameters for an agent."},
|
||||
{"output", 'o', 1, "The output file to write to. Default is stdout"},
|
||||
{"agent-id", 'a', 1, "The agent-id of the user."},
|
||||
//{"grid", 'g', 1, "The grid."},
|
||||
{"help", 'h', 0, "Print the help message."},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
void LLAppAppearanceUtility::usage(std::ostream& ostr)
|
||||
{
|
||||
ostr << "Utilities for processing agent appearance data."
|
||||
<< std::endl << std::endl
|
||||
<< "Usage:" << std::endl
|
||||
<< "\t" << mAppName << " [options] filename" << std::endl << std::endl
|
||||
<< "Will read from stdin if filename is set to '-'." << std::endl << std::endl
|
||||
<< "Options:" << std::endl;
|
||||
const apr_getopt_option_t* option = &APPEARANCE_UTILITY_OPTIONS[0];
|
||||
while(option->name)
|
||||
{
|
||||
ostr << "\t--" << option->name << "\t\t"
|
||||
<< option->description << std::endl;
|
||||
++option;
|
||||
}
|
||||
ostr << std::endl << "Return Values:" << std::endl
|
||||
<< "\t0\t\tSuccess." << std::endl
|
||||
<< "\t1\t\tUnknown error." << std::endl
|
||||
<< "\t2\t\tBad arguments." << std::endl
|
||||
<< "\t3\t\tUnable to open file. Possibly wrong filename"
|
||||
<< " or bad permissions." << std::endl
|
||||
<< "\t4\t\tUnable to parse input LLSD." << std::endl
|
||||
<< std::endl
|
||||
<< "Output:" << std::endl
|
||||
<< "If a non-zero status code is returned, additional error information"
|
||||
<< " will be returned on stderr." << std::endl
|
||||
<< "* This will be in the form of an LLSD document." << std::endl
|
||||
<< "* Check ['error']['message'] to get a human readable message." << std::endl
|
||||
<< "If a zero status code is returned, processed output will be written"
|
||||
<< " to the file specified by --out (or stdout, if not specified)." << std::endl
|
||||
<< std::endl
|
||||
<< std::endl;
|
||||
}
|
||||
|
||||
|
||||
/////// LLApp Interface ////////
|
||||
|
||||
LLAppAppearanceUtility::LLAppAppearanceUtility(int argc, char** argv) :
|
||||
LLApp(),
|
||||
mArgc(argc),
|
||||
mArgv(argv),
|
||||
mProcess(NULL),
|
||||
mInput(NULL),
|
||||
mOutput(NULL),
|
||||
mAppName(argv[0])
|
||||
{
|
||||
}
|
||||
|
||||
// virtual
|
||||
LLAppAppearanceUtility::~LLAppAppearanceUtility()
|
||||
{
|
||||
}
|
||||
|
||||
void LLAppAppearanceUtility::verifyNoProcess()
|
||||
{
|
||||
if (mProcess)
|
||||
{
|
||||
std::cerr << "Invalid arguments. " << MESSAGE_DUPLICATE_MODES << std::endl;
|
||||
usage(std::cerr);
|
||||
throw LLAppException(RV_BAD_ARGUMENTS, MESSAGE_DUPLICATE_MODES);
|
||||
}
|
||||
}
|
||||
|
||||
void LLAppAppearanceUtility::parseArguments()
|
||||
{
|
||||
////// BEGIN OPTION PARSING //////
|
||||
// Check for '-' as last option, since apr doesn't seem to like that.
|
||||
if (std::string(mArgv[mArgc-1]) == "-")
|
||||
{
|
||||
mInputFilename.assign("-");
|
||||
mArgc--;
|
||||
}
|
||||
|
||||
apr_status_t apr_err;
|
||||
const char* opt_arg = NULL;
|
||||
int opt_id = 0;
|
||||
apr_getopt_t* os = NULL;
|
||||
if(APR_SUCCESS != apr_getopt_init(&os, gAPRPoolp, mArgc, mArgv))
|
||||
{
|
||||
std::cerr << "Unable to initialize apr" << std::endl;
|
||||
throw LLAppException(RV_UNKNOWN_ERROR);
|
||||
}
|
||||
|
||||
//std::string grid;
|
||||
while(true)
|
||||
{
|
||||
apr_err = apr_getopt_long(os, APPEARANCE_UTILITY_OPTIONS, &opt_id, &opt_arg);
|
||||
if(APR_STATUS_IS_EOF(apr_err)) break;
|
||||
if(apr_err)
|
||||
{
|
||||
char buf[MAX_STRING]; /* Flawfinder: ignore */
|
||||
std::cerr << "Error parsing options: "
|
||||
<< apr_strerror(apr_err, buf, MAX_STRING) << std::endl;
|
||||
usage(std::cerr);
|
||||
throw LLAppException(RV_BAD_ARGUMENTS, buf);
|
||||
}
|
||||
switch (opt_id)
|
||||
{
|
||||
case 'h':
|
||||
verifyNoProcess();
|
||||
mProcess = new LLProcessUsage(this);
|
||||
break;
|
||||
case 'p':
|
||||
verifyNoProcess();
|
||||
mProcess = new LLProcessParams(this);
|
||||
break;
|
||||
case 'o':
|
||||
mOutputFilename.assign(opt_arg);
|
||||
break;
|
||||
case 'a':
|
||||
mAgentID.set(opt_arg);
|
||||
if (mAgentID.isNull())
|
||||
{
|
||||
const char* INVALID_AGENT_ID="agent-id must be a valid uuid.";
|
||||
std::cerr << "Invalid arguments. " << INVALID_AGENT_ID << std::endl;
|
||||
usage(std::cerr);
|
||||
throw LLAppException(RV_BAD_ARGUMENTS, INVALID_AGENT_ID);
|
||||
}
|
||||
break;
|
||||
//case 'g':
|
||||
// grid = opt_arg;
|
||||
// break;
|
||||
default:
|
||||
usage(std::cerr);
|
||||
throw LLAppException(RV_BAD_ARGUMENTS, "Unknown option.");
|
||||
}
|
||||
}
|
||||
|
||||
if ("-" != mInputFilename)
|
||||
{
|
||||
bool valid_input_filename = false;
|
||||
// Try to grab the input filename.
|
||||
if (os->argv && os->argv[os->ind])
|
||||
{
|
||||
mInputFilename.assign(os->argv[os->ind]);
|
||||
if (! mInputFilename.empty() )
|
||||
{
|
||||
valid_input_filename = true;
|
||||
}
|
||||
}
|
||||
if (!valid_input_filename)
|
||||
{
|
||||
const char* INVALID_FILENAME="Must specify input file.";
|
||||
std::cerr << "Invalid arguments. " << INVALID_FILENAME << std::endl;
|
||||
usage(std::cerr);
|
||||
throw LLAppException(RV_BAD_ARGUMENTS, INVALID_FILENAME);
|
||||
}
|
||||
}
|
||||
|
||||
////// END OPTION PARSING //////
|
||||
}
|
||||
|
||||
void LLAppAppearanceUtility::validateArguments()
|
||||
{
|
||||
///// BEGIN ARGUMENT VALIDATION /////
|
||||
|
||||
// Make sure we have a command specified.
|
||||
if (!mProcess)
|
||||
{
|
||||
const char* INVALID_MODE="No process mode specified.";
|
||||
std::cerr << "Invalid arguments. " << INVALID_MODE
|
||||
<< std::endl;
|
||||
usage(std::cerr);
|
||||
throw LLAppException(RV_BAD_ARGUMENTS, INVALID_MODE);
|
||||
}
|
||||
|
||||
///// END ARGUMENT VALIDATION /////
|
||||
}
|
||||
|
||||
void LLAppAppearanceUtility::initializeIO()
|
||||
{
|
||||
///// BEGIN OPEN INPUT FILE ////
|
||||
|
||||
if ( "-" == mInputFilename )
|
||||
{
|
||||
// Read unformated data from stdin in to memory.
|
||||
std::stringstream* data = new std::stringstream();
|
||||
const S32 BUFFER_SIZE = BUFSIZ;
|
||||
char buffer[BUFFER_SIZE];
|
||||
while (true)
|
||||
{
|
||||
std::cin.read(buffer, BUFFER_SIZE);
|
||||
// Check if anything out of the ordinary happened.
|
||||
if (!std::cin)
|
||||
{
|
||||
// See if something 'really bad' happened, or if we just
|
||||
// used up all of our buffer.
|
||||
if (std::cin.bad())
|
||||
{
|
||||
std::cerr << "Problem reading standard input." << std::endl;
|
||||
delete data;
|
||||
throw (RV_UNKNOWN_ERROR);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Output normally.
|
||||
data->write(buffer, std::cin.gcount());
|
||||
if (std::cin.eof()) break;
|
||||
|
||||
// Clear this problem. We have handled it.
|
||||
std::cin.clear();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
data->write(buffer, std::cin.gcount());
|
||||
if (std::cin.eof()) break;
|
||||
}
|
||||
}
|
||||
mInput = data;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Make sure we can open the input file.
|
||||
std::ifstream* input_file = new std::ifstream();
|
||||
input_file->open( mInputFilename.c_str(), std::fstream::in );
|
||||
if ( input_file->fail())
|
||||
{
|
||||
std::cerr << "Couldn't open input file '" << mInputFilename << "'." << std::endl;
|
||||
delete input_file;
|
||||
throw LLAppException(RV_UNABLE_OPEN, mInputFilename);
|
||||
}
|
||||
mInput = input_file;
|
||||
}
|
||||
///// END OPEN INPUT FILE ////
|
||||
|
||||
///// BEGIN OPEN OUTPUT FILE ////
|
||||
|
||||
if ("" == mOutputFilename)
|
||||
{
|
||||
mOutput = &std::cout;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Make sure we can open the output file.
|
||||
std::fstream* output_file = new std::fstream();
|
||||
output_file->open( mOutputFilename.c_str(), std::fstream::out );
|
||||
if ( output_file->fail() )
|
||||
{
|
||||
std::cerr << "Couldn't open output file '" << mOutputFilename << "'." << std::endl;
|
||||
delete output_file;
|
||||
throw LLAppException(RV_UNABLE_OPEN, mOutputFilename);
|
||||
}
|
||||
mOutput = output_file;
|
||||
}
|
||||
///// END OPEN OUTPUT FILE ////
|
||||
|
||||
///// BEGIN INPUT PARSING ////
|
||||
LLSDSerialize::fromXML( mInputData, *mInput );
|
||||
if (mInputData.isUndefined())
|
||||
{
|
||||
throw LLAppException(RV_UNABLE_TO_PARSE);
|
||||
}
|
||||
///// END INPUT PARSING ////
|
||||
}
|
||||
|
||||
class LLPassthroughTranslationBridge : public LLTranslationBridge
|
||||
{
|
||||
public:
|
||||
virtual std::string getString(const std::string &xml_desc)
|
||||
{
|
||||
// Just pass back the input string.
|
||||
return xml_desc;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
bool LLAppAppearanceUtility::init()
|
||||
{
|
||||
parseArguments();
|
||||
|
||||
bool log_to_stderr = true;
|
||||
LLError::initForApplication("", log_to_stderr);
|
||||
// *TODO: Add debug mode(s). Skip this in debug mode.
|
||||
LLError::setDefaultLevel(LLError::LEVEL_WARN);
|
||||
|
||||
validateArguments();
|
||||
initializeIO();
|
||||
|
||||
// Initialize classes.
|
||||
LLWearableType::initClass(new LLPassthroughTranslationBridge());
|
||||
|
||||
// *TODO: Create a texture bridge?
|
||||
LLAvatarAppearance::initClass();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool LLAppAppearanceUtility::cleanup()
|
||||
{
|
||||
LLAvatarAppearance::cleanupClass();
|
||||
LLWearableType::cleanupClass();
|
||||
|
||||
if (mProcess)
|
||||
{
|
||||
delete mProcess;
|
||||
mProcess = NULL;
|
||||
}
|
||||
if ("-" != mInputFilename && mInput)
|
||||
{
|
||||
static_cast<std::ifstream*>(mInput)->close();
|
||||
}
|
||||
if ("" != mOutputFilename && mOutput)
|
||||
{
|
||||
static_cast<std::ofstream*>(mOutput)->close();
|
||||
delete mOutput;
|
||||
mOutput = NULL;
|
||||
}
|
||||
delete mInput;
|
||||
mInput = NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool LLAppAppearanceUtility::mainLoop()
|
||||
{
|
||||
// This isn't really a loop, for this application. We just execute the requested command.
|
||||
mProcess->process(mInputData, *mOutput);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1,97 +0,0 @@
|
|||
/**
|
||||
* @file llappappearanceutility.h
|
||||
* @brief Declaration of LLAppAppearanceUtility class.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_LLAPPAPPEARANCEUTILITY_H
|
||||
#define LL_LLAPPAPPEARANCEUTILITY_H
|
||||
|
||||
#include <exception>
|
||||
|
||||
#include "llapp.h"
|
||||
|
||||
enum EResult
|
||||
{
|
||||
RV_SUCCESS = 0,
|
||||
RV_UNKNOWN_ERROR,
|
||||
RV_BAD_ARGUMENTS,
|
||||
RV_UNABLE_OPEN,
|
||||
RV_UNABLE_TO_PARSE,
|
||||
};
|
||||
|
||||
extern const std::string NOTHING_EXTRA;
|
||||
|
||||
class LLAppAppearanceUtility;
|
||||
class LLBakingProcess;
|
||||
|
||||
// Translate error status into error messages.
|
||||
class LLAppException : public std::exception
|
||||
{
|
||||
public:
|
||||
LLAppException(EResult status_code, const std::string& extra = NOTHING_EXTRA);
|
||||
EResult getStatusCode() { return mStatusCode; }
|
||||
|
||||
private:
|
||||
void printErrorLLSD(const std::string& key, const std::string& message);
|
||||
EResult mStatusCode;
|
||||
};
|
||||
|
||||
|
||||
class LLAppAppearanceUtility : public LLApp
|
||||
{
|
||||
public:
|
||||
LLAppAppearanceUtility(int argc, char** argv);
|
||||
virtual ~LLAppAppearanceUtility();
|
||||
|
||||
// LLApp interface.
|
||||
/*virtual*/ bool init();
|
||||
/*virtual*/ bool cleanup();
|
||||
/*virtual*/ bool mainLoop();
|
||||
|
||||
private:
|
||||
// Option parsing.
|
||||
void verifyNoProcess();
|
||||
void parseArguments();
|
||||
void validateArguments();
|
||||
void initializeIO();
|
||||
public:
|
||||
void usage(std::ostream& ostr);
|
||||
|
||||
|
||||
private:
|
||||
int mArgc;
|
||||
char** mArgv;
|
||||
LLBakingProcess* mProcess;
|
||||
std::istream* mInput;
|
||||
std::ostream* mOutput;
|
||||
std::string mAppName;
|
||||
std::string mInputFilename;
|
||||
std::string mOutputFilename;
|
||||
LLUUID mAgentID;
|
||||
LLSD mInputData;
|
||||
};
|
||||
|
||||
|
||||
#endif /* LL_LLAPPAPPEARANCEUTILITY_H */
|
||||
|
||||
|
|
@ -1,159 +0,0 @@
|
|||
/**
|
||||
* @File llbakingavatar.cpp
|
||||
* @brief Implementation of LLBakingAvatar class which is a derivation of LLAvatarAppearance
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
// linden includes
|
||||
#include "linden_common.h"
|
||||
#include "v3dmath.h"
|
||||
|
||||
// project includes
|
||||
#include "llbakingavatar.h"
|
||||
#include "llbakingjoint.h"
|
||||
#include "llbakingjointmesh.h"
|
||||
#include "llbakingtexlayer.h"
|
||||
|
||||
LLBakingAvatar::LLBakingAvatar(LLWearableData* wearable_data) :
|
||||
LLAvatarAppearance(wearable_data)
|
||||
{
|
||||
}
|
||||
|
||||
// virtual
|
||||
LLBakingAvatar::~LLBakingAvatar()
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Implemented methods
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
LLAvatarJoint* LLBakingAvatar::createAvatarJoint()
|
||||
{
|
||||
return new LLBakingJoint();
|
||||
}
|
||||
|
||||
LLAvatarJoint* LLBakingAvatar::createAvatarJoint(S32 joint_num)
|
||||
{
|
||||
return new LLBakingJoint(joint_num);
|
||||
}
|
||||
|
||||
LLAvatarJointMesh* LLBakingAvatar::createAvatarJointMesh()
|
||||
{
|
||||
return new LLBakingJointMesh();
|
||||
}
|
||||
|
||||
LLTexLayerSet* LLBakingAvatar::createTexLayerSet()
|
||||
{
|
||||
return new LLBakingTexLayerSet(this);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// (Ignored) Non-implemented methods.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void LLBakingAvatar::bodySizeChanged() {}
|
||||
void LLBakingAvatar::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components,
|
||||
LLAvatarAppearanceDefines::EBakedTextureIndex index) {}
|
||||
void LLBakingAvatar::invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result) {}
|
||||
void LLBakingAvatar::updateMeshTextures() {}
|
||||
void LLBakingAvatar::dirtyMesh() {}
|
||||
void LLBakingAvatar::dirtyMesh(S32 priority) {}
|
||||
void LLBakingAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake) {}
|
||||
|
||||
BOOL LLBakingAvatar::isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// (LLERR) Non-implemented methods.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
LLVector3 LLBakingAvatar::getCharacterPosition()
|
||||
{
|
||||
LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
|
||||
return LLVector3::zero;
|
||||
}
|
||||
|
||||
LLQuaternion LLBakingAvatar::getCharacterRotation()
|
||||
{
|
||||
LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
|
||||
return LLQuaternion::DEFAULT;
|
||||
}
|
||||
|
||||
LLVector3 LLBakingAvatar::getCharacterVelocity()
|
||||
{
|
||||
LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
|
||||
return LLVector3::zero;
|
||||
}
|
||||
|
||||
LLVector3 LLBakingAvatar::getCharacterAngularVelocity()
|
||||
{
|
||||
LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
|
||||
return LLVector3::zero;
|
||||
}
|
||||
|
||||
const LLUUID& LLBakingAvatar::getID() const
|
||||
{
|
||||
LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
|
||||
return LLUUID::null;
|
||||
}
|
||||
|
||||
void LLBakingAvatar::addDebugText(const std::string& text)
|
||||
{
|
||||
LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
|
||||
}
|
||||
|
||||
F32 LLBakingAvatar::getTimeDilation()
|
||||
{
|
||||
LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
void LLBakingAvatar::getGround(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm)
|
||||
{
|
||||
LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
|
||||
}
|
||||
|
||||
F32 LLBakingAvatar::getPixelArea() const
|
||||
{
|
||||
LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
LLVector3d LLBakingAvatar::getPosGlobalFromAgent(const LLVector3 &position)
|
||||
{
|
||||
LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
|
||||
return LLVector3d::zero;
|
||||
}
|
||||
|
||||
LLVector3 LLBakingAvatar::getPosAgentFromGlobal(const LLVector3d &position)
|
||||
{
|
||||
LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
|
||||
return LLVector3::zero;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,125 +0,0 @@
|
|||
/**
|
||||
* @file llbakingavatar.h
|
||||
* @brief Declaration of LLBakingAvatar class which is a derivation of LLAvatarAppearance
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_LLBAKINGAVATAR_H
|
||||
#define LL_LLBAKINGAVATAR_H
|
||||
|
||||
#include "llavatarappearance.h"
|
||||
|
||||
class LLBakingAvatar : public LLAvatarAppearance
|
||||
{
|
||||
LOG_CLASS(LLBakingAvatar);
|
||||
|
||||
/********************************************************************************
|
||||
** **
|
||||
** INITIALIZATION
|
||||
**/
|
||||
public:
|
||||
void* operator new(size_t size)
|
||||
{
|
||||
return ll_aligned_malloc_16(size);
|
||||
}
|
||||
|
||||
void operator delete(void* ptr)
|
||||
{
|
||||
ll_aligned_free_16(ptr);
|
||||
}
|
||||
|
||||
LLBakingAvatar(LLWearableData* wearable_data);
|
||||
virtual ~LLBakingAvatar();
|
||||
|
||||
static void initClass(); // initializes static members
|
||||
|
||||
/** Initialization
|
||||
** **
|
||||
*******************************************************************************/
|
||||
|
||||
/********************************************************************************
|
||||
** **
|
||||
** INHERITED
|
||||
**/
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// LLCharacter interface
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
/*virtual*/ LLVector3 getCharacterPosition();
|
||||
/*virtual*/ LLQuaternion getCharacterRotation();
|
||||
/*virtual*/ LLVector3 getCharacterVelocity();
|
||||
/*virtual*/ LLVector3 getCharacterAngularVelocity();
|
||||
|
||||
/*virtual*/ const LLUUID& getID() const;
|
||||
/*virtual*/ void addDebugText(const std::string& text);
|
||||
/*virtual*/ F32 getTimeDilation();
|
||||
/*virtual*/ void getGround(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm);
|
||||
/*virtual*/ F32 getPixelArea() const;
|
||||
/*virtual*/ LLVector3d getPosGlobalFromAgent(const LLVector3 &position);
|
||||
/*virtual*/ LLVector3 getPosAgentFromGlobal(const LLVector3d &position);
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// LLAvatarAppearance interface
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
/*virtual*/ void bodySizeChanged();
|
||||
/*virtual*/ void applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components,
|
||||
LLAvatarAppearanceDefines::EBakedTextureIndex index);
|
||||
/*virtual*/ void invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result);
|
||||
/*virtual*/ void updateMeshTextures();
|
||||
/*virtual*/ void dirtyMesh(); // Dirty the avatar mesh
|
||||
/*virtual*/ void onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake);
|
||||
/*virtual*/ BOOL isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index = 0) const;
|
||||
private:
|
||||
/*virtual*/ void dirtyMesh(S32 priority); // Dirty the avatar mesh, with priority
|
||||
|
||||
// LLAvatarAppearance instance factories:
|
||||
protected:
|
||||
/*virtual*/ LLAvatarJoint* createAvatarJoint();
|
||||
/*virtual*/ LLAvatarJoint* createAvatarJoint(S32 joint_num);
|
||||
/*virtual*/ LLAvatarJointMesh* createAvatarJointMesh();
|
||||
/*virtual*/ LLTexLayerSet* createTexLayerSet();
|
||||
|
||||
|
||||
/** Inherited
|
||||
** **
|
||||
*******************************************************************************/
|
||||
|
||||
/********************************************************************************
|
||||
** **
|
||||
** STATE
|
||||
**/
|
||||
public:
|
||||
/*virtual*/ bool isSelf() const { return true; }
|
||||
/*virtual*/ BOOL isValid() const { return TRUE; }
|
||||
/*virtual*/ BOOL isUsingBakedTextures() const { return TRUE; }
|
||||
|
||||
/** State
|
||||
** **
|
||||
*******************************************************************************/
|
||||
|
||||
};
|
||||
|
||||
#endif /* LL_LLBAKINGAVATAR_H */
|
||||
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
/**
|
||||
* @file llbakingjoint.cpp
|
||||
* @brief Implementation of LLBakingJoint class
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llbakingjoint.h"
|
||||
|
||||
|
||||
LLBakingJoint::LLBakingJoint() :
|
||||
LLAvatarJoint()
|
||||
{
|
||||
}
|
||||
|
||||
LLBakingJoint::LLBakingJoint(S32 joint_num) :
|
||||
LLAvatarJoint(joint_num)
|
||||
{
|
||||
}
|
||||
|
||||
// virtual
|
||||
LLBakingJoint::~LLBakingJoint()
|
||||
{
|
||||
}
|
||||
|
||||
// virtual
|
||||
U32 LLBakingJoint::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
|
||||
{
|
||||
llerrs << "LLBakingJoint::render() should never be called!" << llendl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
/**
|
||||
* @file llbakingjoint.h
|
||||
* @brief Implementation of LLBakingJoint class
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_LLBAKINGJOINT_H
|
||||
#define LL_LLBAKINGJOINT_H
|
||||
|
||||
#include "llavatarjoint.h"
|
||||
|
||||
class LLBakingJoint : public virtual LLAvatarJoint
|
||||
{
|
||||
public:
|
||||
LLBakingJoint();
|
||||
LLBakingJoint(S32 joint_num);
|
||||
virtual ~LLBakingJoint();
|
||||
|
||||
// LLViewerJoint interface
|
||||
virtual U32 render( F32 pixelArea, BOOL first_pass = TRUE, BOOL is_dummy = FALSE );
|
||||
};
|
||||
|
||||
#endif /* LL_LLBAKINGJOINT_H */
|
||||
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
/**
|
||||
* @file llbakingjointmesh.cpp
|
||||
* @brief Implementation of LLBakingJointMesh class
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llbakingjointmesh.h"
|
||||
|
||||
|
||||
LLBakingJointMesh::LLBakingJointMesh() :
|
||||
LLAvatarJointMesh()
|
||||
{
|
||||
}
|
||||
|
||||
// virtual
|
||||
LLBakingJointMesh::~LLBakingJointMesh()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
/**
|
||||
* @file llbakingjoint.h
|
||||
* @brief Implementation of LLBakingJointMesh class
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_LLBAKINGJOINTMESH_H
|
||||
#define LL_LLBAKINGJOINTMESH_H
|
||||
|
||||
#include "llavatarjointmesh.h"
|
||||
#include "llbakingjoint.h"
|
||||
|
||||
class LLBakingJointMesh : public LLAvatarJointMesh, public LLBakingJoint
|
||||
{
|
||||
public:
|
||||
LLBakingJointMesh();
|
||||
LLBakingJointMesh(S32 joint_num);
|
||||
virtual ~LLBakingJointMesh();
|
||||
|
||||
};
|
||||
|
||||
#endif /* LL_LLBAKINGJOINTMESH_H */
|
||||
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
/**
|
||||
* @file llbakingprocess.h
|
||||
* @brief Declaration of LLBakingProcess interface.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_LLBAKINGPROCESS_H
|
||||
#define LL_LLBAKINGPROCESS_H
|
||||
|
||||
#include <ostream>
|
||||
|
||||
class LLAppAppearanceUtility;
|
||||
class LLSD;
|
||||
|
||||
// Simple wrapper for various process modes.
|
||||
class LLBakingProcess
|
||||
{
|
||||
private:
|
||||
// Hide default constructor.
|
||||
LLBakingProcess() {}
|
||||
public:
|
||||
LLBakingProcess(LLAppAppearanceUtility* app) :
|
||||
mApp(app) {}
|
||||
virtual ~LLBakingProcess() {}
|
||||
|
||||
//virtual std::string getProcessName() const = 0;
|
||||
virtual void process(LLSD& input, std::ostream& output) = 0;
|
||||
|
||||
protected:
|
||||
LLAppAppearanceUtility* mApp;
|
||||
};
|
||||
|
||||
|
||||
#endif /* LL_LLBAKINGPROCESS_H */
|
||||
|
||||
|
|
@ -1,226 +0,0 @@
|
|||
|
||||
/**
|
||||
* @file LLBakingShaderMgr.cpp
|
||||
* @brief Viewer shader manager implementation.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2005&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llbakingshadermgr.h"
|
||||
|
||||
#include "lldir.h"
|
||||
#include "llfile.h"
|
||||
#include "llrender.h"
|
||||
#include "llvertexbuffer.h"
|
||||
|
||||
#if LL_DARWIN
|
||||
#include "OpenGL/OpenGL.h"
|
||||
#endif
|
||||
|
||||
#ifdef LL_RELEASE_FOR_DOWNLOAD
|
||||
#define UNIFORM_ERRS LL_WARNS_ONCE("Shader")
|
||||
#else
|
||||
#define UNIFORM_ERRS LL_ERRS("Shader")
|
||||
#endif
|
||||
|
||||
// Lots of STL stuff in here, using namespace std to keep things more readable
|
||||
using std::vector;
|
||||
using std::pair;
|
||||
using std::make_pair;
|
||||
using std::string;
|
||||
|
||||
BOOL LLBakingShaderMgr::sInitialized = FALSE;
|
||||
bool LLBakingShaderMgr::sSkipReload = false;
|
||||
|
||||
//utility shaders
|
||||
LLGLSLShader gAlphaMaskProgram;
|
||||
|
||||
|
||||
LLBakingShaderMgr::LLBakingShaderMgr() :
|
||||
mVertexShaderLevel(SHADER_COUNT, 0),
|
||||
mMaxAvatarShaderLevel(0)
|
||||
{
|
||||
}
|
||||
|
||||
LLBakingShaderMgr::~LLBakingShaderMgr()
|
||||
{
|
||||
mVertexShaderLevel.clear();
|
||||
mShaderList.clear();
|
||||
}
|
||||
|
||||
// static
|
||||
LLBakingShaderMgr * LLBakingShaderMgr::instance()
|
||||
{
|
||||
if(NULL == sInstance)
|
||||
{
|
||||
sInstance = new LLBakingShaderMgr();
|
||||
}
|
||||
|
||||
return static_cast<LLBakingShaderMgr*>(sInstance);
|
||||
}
|
||||
|
||||
void LLBakingShaderMgr::initAttribsAndUniforms(void)
|
||||
{
|
||||
if (mReservedAttribs.empty())
|
||||
{
|
||||
LLShaderMgr::initAttribsAndUniforms();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//============================================================================
|
||||
// Set Levels
|
||||
|
||||
S32 LLBakingShaderMgr::getVertexShaderLevel(S32 type)
|
||||
{
|
||||
return mVertexShaderLevel[type];
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
// Shader Management
|
||||
|
||||
void LLBakingShaderMgr::setShaders()
|
||||
{
|
||||
//setShaders might be called redundantly by gSavedSettings, so return on reentrance
|
||||
static bool reentrance = false;
|
||||
|
||||
if (!sInitialized || reentrance || sSkipReload)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
LLGLSLShader::sIndexedTextureChannels = llmax(gGLManager.mNumTextureImageUnits, 1);
|
||||
|
||||
//NEVER use more than 16 texture channels (work around for prevalent driver bug)
|
||||
LLGLSLShader::sIndexedTextureChannels = llmin(LLGLSLShader::sIndexedTextureChannels, 16);
|
||||
|
||||
if (gGLManager.mGLSLVersionMajor < 1 ||
|
||||
(gGLManager.mGLSLVersionMajor == 1 && gGLManager.mGLSLVersionMinor <= 20))
|
||||
{ //NEVER use indexed texture rendering when GLSL version is 1.20 or earlier
|
||||
LLGLSLShader::sIndexedTextureChannels = 1;
|
||||
}
|
||||
|
||||
reentrance = true;
|
||||
|
||||
//setup preprocessor definitions
|
||||
LLShaderMgr::instance()->mDefinitions["NUM_TEX_UNITS"] = llformat("%d", gGLManager.mNumTextureImageUnits);
|
||||
|
||||
// Make sure the compiled shader map is cleared before we recompile shaders.
|
||||
mShaderObjects.clear();
|
||||
|
||||
initAttribsAndUniforms();
|
||||
|
||||
// Shaders
|
||||
LL_INFOS("ShaderLoading") << "\n~~~~~~~~~~~~~~~~~~\n Loading Shaders:\n~~~~~~~~~~~~~~~~~~" << LL_ENDL;
|
||||
LL_INFOS("ShaderLoading") << llformat("Using GLSL %d.%d", gGLManager.mGLSLVersionMajor, gGLManager.mGLSLVersionMinor) << llendl;
|
||||
|
||||
for (S32 i = 0; i < SHADER_COUNT; i++)
|
||||
{
|
||||
mVertexShaderLevel[i] = 0;
|
||||
}
|
||||
mMaxAvatarShaderLevel = 0;
|
||||
|
||||
LLGLSLShader::sNoFixedFunction = false;
|
||||
LLVertexBuffer::unbind();
|
||||
if (gGLManager.mGLSLVersionMajor > 1 || gGLManager.mGLSLVersionMinor >= 10)
|
||||
{
|
||||
//using shaders, disable fixed function
|
||||
LLGLSLShader::sNoFixedFunction = true;
|
||||
|
||||
//gPipeline.mVertexShadersEnabled = TRUE;
|
||||
//gPipeline.mVertexShadersLoaded = 1;
|
||||
|
||||
loadShadersInterface();
|
||||
}
|
||||
else
|
||||
{
|
||||
LLGLSLShader::sNoFixedFunction = false;
|
||||
//gPipeline.mVertexShadersEnabled = FALSE;
|
||||
//gPipeline.mVertexShadersLoaded = 0;
|
||||
mVertexShaderLevel[SHADER_LIGHTING] = 0;
|
||||
mVertexShaderLevel[SHADER_INTERFACE] = 0;
|
||||
mVertexShaderLevel[SHADER_ENVIRONMENT] = 0;
|
||||
mVertexShaderLevel[SHADER_WATER] = 0;
|
||||
mVertexShaderLevel[SHADER_OBJECT] = 0;
|
||||
mVertexShaderLevel[SHADER_EFFECT] = 0;
|
||||
mVertexShaderLevel[SHADER_WINDLIGHT] = 0;
|
||||
mVertexShaderLevel[SHADER_AVATAR] = 0;
|
||||
}
|
||||
|
||||
//gPipeline.createGLBuffers();
|
||||
|
||||
reentrance = false;
|
||||
}
|
||||
|
||||
void LLBakingShaderMgr::unloadShaders()
|
||||
{
|
||||
gAlphaMaskProgram.unload();
|
||||
|
||||
mVertexShaderLevel[SHADER_INTERFACE] = 0;
|
||||
|
||||
//gPipeline.mVertexShadersLoaded = 0;
|
||||
}
|
||||
|
||||
BOOL LLBakingShaderMgr::loadShadersInterface()
|
||||
{
|
||||
BOOL success = TRUE;
|
||||
|
||||
if (success)
|
||||
{
|
||||
gAlphaMaskProgram.mName = "Alpha Mask Shader";
|
||||
gAlphaMaskProgram.mShaderFiles.clear();
|
||||
gAlphaMaskProgram.mShaderFiles.push_back(make_pair("interface/alphamaskV.glsl", GL_VERTEX_SHADER_ARB));
|
||||
gAlphaMaskProgram.mShaderFiles.push_back(make_pair("interface/alphamaskF.glsl", GL_FRAGMENT_SHADER_ARB));
|
||||
gAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
|
||||
success = gAlphaMaskProgram.createShader(NULL, NULL);
|
||||
}
|
||||
|
||||
if( !success )
|
||||
{
|
||||
mVertexShaderLevel[SHADER_INTERFACE] = 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
std::string LLBakingShaderMgr::getShaderDirPrefix(void)
|
||||
{
|
||||
return gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "shaders/class");
|
||||
}
|
||||
|
||||
void LLBakingShaderMgr::updateShaderUniforms(LLGLSLShader * shader)
|
||||
{
|
||||
}
|
||||
|
||||
LLBakingShaderMgr::shader_iter LLBakingShaderMgr::beginShaders() const
|
||||
{
|
||||
return mShaderList.begin();
|
||||
}
|
||||
|
||||
LLBakingShaderMgr::shader_iter LLBakingShaderMgr::endShaders() const
|
||||
{
|
||||
return mShaderList.end();
|
||||
}
|
||||
|
|
@ -1,137 +0,0 @@
|
|||
/**
|
||||
* @file llbakingshadermgr.h
|
||||
* @brief Texture Baking Shader Manager
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_BAKING_SHADER_MGR_H
|
||||
#define LL_BAKING_SHADER_MGR_H
|
||||
|
||||
#include "llshadermgr.h"
|
||||
|
||||
class LLBakingShaderMgr: public LLShaderMgr
|
||||
{
|
||||
public:
|
||||
static BOOL sInitialized;
|
||||
static bool sSkipReload;
|
||||
|
||||
LLBakingShaderMgr();
|
||||
/* virtual */ ~LLBakingShaderMgr();
|
||||
|
||||
// singleton pattern implementation
|
||||
static LLBakingShaderMgr * instance();
|
||||
|
||||
void initAttribsAndUniforms(void);
|
||||
void setShaders();
|
||||
void unloadShaders();
|
||||
S32 getVertexShaderLevel(S32 type);
|
||||
BOOL loadShadersInterface();
|
||||
|
||||
std::vector<S32> mVertexShaderLevel;
|
||||
S32 mMaxAvatarShaderLevel;
|
||||
|
||||
enum EShaderClass
|
||||
{
|
||||
SHADER_LIGHTING,
|
||||
SHADER_OBJECT,
|
||||
SHADER_AVATAR,
|
||||
SHADER_ENVIRONMENT,
|
||||
SHADER_INTERFACE,
|
||||
SHADER_EFFECT,
|
||||
SHADER_WINDLIGHT,
|
||||
SHADER_WATER,
|
||||
SHADER_DEFERRED,
|
||||
SHADER_TRANSFORM,
|
||||
SHADER_COUNT
|
||||
};
|
||||
|
||||
// simple model of forward iterator
|
||||
// http://www.sgi.com/tech/stl/ForwardIterator.html
|
||||
class shader_iter
|
||||
{
|
||||
private:
|
||||
friend bool operator == (shader_iter const & a, shader_iter const & b);
|
||||
friend bool operator != (shader_iter const & a, shader_iter const & b);
|
||||
|
||||
typedef std::vector<LLGLSLShader *>::const_iterator base_iter_t;
|
||||
public:
|
||||
shader_iter()
|
||||
{
|
||||
}
|
||||
|
||||
shader_iter(base_iter_t iter) : mIter(iter)
|
||||
{
|
||||
}
|
||||
|
||||
LLGLSLShader & operator * () const
|
||||
{
|
||||
return **mIter;
|
||||
}
|
||||
|
||||
LLGLSLShader * operator -> () const
|
||||
{
|
||||
return *mIter;
|
||||
}
|
||||
|
||||
shader_iter & operator++ ()
|
||||
{
|
||||
++mIter;
|
||||
return *this;
|
||||
}
|
||||
|
||||
shader_iter operator++ (int)
|
||||
{
|
||||
return mIter++;
|
||||
}
|
||||
|
||||
private:
|
||||
base_iter_t mIter;
|
||||
};
|
||||
|
||||
shader_iter beginShaders() const;
|
||||
shader_iter endShaders() const;
|
||||
|
||||
/* virtual */ std::string getShaderDirPrefix(void);
|
||||
|
||||
/* virtual */ void updateShaderUniforms(LLGLSLShader * shader);
|
||||
|
||||
private:
|
||||
|
||||
// the list of shaders we need to propagate parameters to.
|
||||
std::vector<LLGLSLShader *> mShaderList;
|
||||
|
||||
}; //LLBakingShaderMgr
|
||||
|
||||
inline bool operator == (LLBakingShaderMgr::shader_iter const & a, LLBakingShaderMgr::shader_iter const & b)
|
||||
{
|
||||
return a.mIter == b.mIter;
|
||||
}
|
||||
|
||||
inline bool operator != (LLBakingShaderMgr::shader_iter const & a, LLBakingShaderMgr::shader_iter const & b)
|
||||
{
|
||||
return a.mIter != b.mIter;
|
||||
}
|
||||
|
||||
extern LLVector4 gShinyOrigin;
|
||||
|
||||
#endif // LL_BAKING_SHADER_MGR_H
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
/**
|
||||
* @file llbakingtexlayer.cpp
|
||||
* @brief Implementation of LLBakingTexLayer class
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llbakingtexlayer.h"
|
||||
|
||||
LLBakingTexLayerSet::LLBakingTexLayerSet(LLAvatarAppearance* const appearance) :
|
||||
LLTexLayerSet(appearance)
|
||||
{
|
||||
}
|
||||
|
||||
// virtual
|
||||
LLBakingTexLayerSet::~LLBakingTexLayerSet()
|
||||
{
|
||||
}
|
||||
|
||||
// Ignored.
|
||||
void LLBakingTexLayerSet::requestUpdate()
|
||||
{
|
||||
}
|
||||
|
||||
void LLBakingTexLayerSet::createComposite()
|
||||
{
|
||||
llerrs << "TODO: Create a composite." << llendl;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
/**
|
||||
* @file llbakingtexlayer.h
|
||||
* @brief Declaration of LLBakingTexLayerSet.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_LLBAKINGTEXLAYER_H
|
||||
#define LL_LLBAKINGTEXLAYER_H
|
||||
|
||||
#include "lltexlayer.h"
|
||||
|
||||
class LLBakingTexLayerSet : public LLTexLayerSet
|
||||
{
|
||||
public:
|
||||
LLBakingTexLayerSet(LLAvatarAppearance* const appearance);
|
||||
virtual ~LLBakingTexLayerSet();
|
||||
|
||||
/*virtual*/void requestUpdate();
|
||||
/*virtual*/void createComposite();
|
||||
};
|
||||
|
||||
#endif /* LL_LLBAKINGTEXLAYER_H */
|
||||
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
/**
|
||||
* @file llprocessparams.cpp
|
||||
* @brief Implementation of LLProcessParams class.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
// linden includes
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llsd.h"
|
||||
#include "llsdserialize.h"
|
||||
#include "llsdutil.h"
|
||||
|
||||
// appearance includes
|
||||
#include "llwearabledata.h"
|
||||
|
||||
// project includes
|
||||
#include "llappappearanceutility.h"
|
||||
#include "llbakingavatar.h"
|
||||
#include "llprocessparams.h"
|
||||
|
||||
void LLProcessParams::process(LLSD& input, std::ostream& output)
|
||||
{
|
||||
LLWearableData wearable_data;
|
||||
LLBakingAvatar avatar(&wearable_data);
|
||||
avatar.initInstance();
|
||||
|
||||
LLSD result;
|
||||
result["success"] = true;
|
||||
result["input"] = input;
|
||||
output << LLSDOStreamer<LLSDXMLFormatter>(result);
|
||||
}
|
||||
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
/**
|
||||
* @file llprocessparams.h
|
||||
* @brief Declaration of LLProcessParams class.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_LLPROCESSPARAMS_H
|
||||
#define LL_LLPROCESSPARAMS_H
|
||||
|
||||
#include "llbakingprocess.h"
|
||||
|
||||
class LLProcessParams : public LLBakingProcess
|
||||
{
|
||||
public:
|
||||
LLProcessParams(LLAppAppearanceUtility* app) :
|
||||
LLBakingProcess(app) {}
|
||||
|
||||
/*virtual*/ void process(LLSD& intput, std::ostream& output);
|
||||
};
|
||||
|
||||
#endif /* LL_LLPROCESSPARAMS_H */
|
||||
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Simple wrapper for secondlife utilities.
|
||||
|
||||
## - Avoids an often-buggy X feature that doesn't really benefit us anyway.
|
||||
export SDL_VIDEO_X11_DGAMOUSE=0
|
||||
|
||||
## - Works around a problem with misconfigured 64-bit systems not finding GL
|
||||
export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH}":/usr/lib64/dri:/usr/lib32/dri:/usr/lib/dri
|
||||
|
||||
## - The 'scim' GTK IM module widely crashes the viewer. Avoid it.
|
||||
if [ "$GTK_IM_MODULE" = "scim" ]; then
|
||||
export GTK_IM_MODULE=xim
|
||||
fi
|
||||
|
||||
EXECUTABLE="$(basename "$0")-bin"
|
||||
SCRIPTSRC="$(readlink -f "$0" || echo "$0")"
|
||||
RUN_PATH="$(dirname "${SCRIPTSRC}" || echo .)"
|
||||
cd "${RUN_PATH}"
|
||||
|
||||
export LD_LIBRARY_PATH="$PWD/lib:${LD_LIBRARY_PATH}"
|
||||
|
||||
# Run the program.
|
||||
"./$EXECUTABLE" "$@"
|
||||
exit $?
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
# -*- cmake -*-
|
||||
include(Prebuilt)
|
||||
|
||||
# Linux proprietary build only
|
||||
if (INSTALL_PROPRIETARY)
|
||||
if(LINUX)
|
||||
use_prebuilt_binary(llappearanceutility-source)
|
||||
set(LLAPPEARANCEUTILITY_SRC_DIR ${LIBS_PREBUILT_DIR}/llappearanceutility/src)
|
||||
set(LLAPPEARANCEUTILITY_BIN_DIR ${CMAKE_BINARY_DIR}/llappearanceutility)
|
||||
endif (LINUX)
|
||||
endif (INSTALL_PROPRIETARY)
|
||||
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
const S32 LL_VERSION_MAJOR = 2;
|
||||
const S32 LL_VERSION_MINOR = 1;
|
||||
const S32 LL_VERSION_PATCH = 0;
|
||||
const S32 LL_VERSION_BUILD = 13828;
|
||||
const S32 LL_VERSION_BUILD = 264760;
|
||||
|
||||
const char * const LL_CHANNEL = "Second Life Server";
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
const S32 LL_VERSION_MAJOR = 3;
|
||||
const S32 LL_VERSION_MINOR = 4;
|
||||
const S32 LL_VERSION_PATCH = 1;
|
||||
const S32 LL_VERSION_BUILD = 0;
|
||||
const S32 LL_VERSION_BUILD = 264760;
|
||||
|
||||
const char * const LL_CHANNEL = "Second Life Developer";
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,6 @@
|
|||
|
||||
CFBundleName = "Second Life";
|
||||
|
||||
CFBundleShortVersionString = "Second Life version 2.1.0.13828";
|
||||
CFBundleGetInfoString = "Second Life version 2.1.0.13828, Copyright 2004-2009 Linden Research, Inc.";
|
||||
CFBundleShortVersionString = "Second Life version 3.4.1.264760";
|
||||
CFBundleGetInfoString = "Second Life version 3.4.1.264760, Copyright 2004-2009 Linden Research, Inc.";
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2.1.0.13828</string>
|
||||
<string>3.4.1.264760</string>
|
||||
<key>CSResourcesFileMapped</key>
|
||||
<true/>
|
||||
</dict>
|
||||
|
|
|
|||
|
|
@ -135,8 +135,8 @@ TOOLNO CURSOR "llno.cur"
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 2,1,1,0
|
||||
PRODUCTVERSION 2,1,1,0
|
||||
FILEVERSION 3,4,1,264760
|
||||
PRODUCTVERSION 3,4,1,264760
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
|
@ -153,12 +153,12 @@ BEGIN
|
|||
BEGIN
|
||||
VALUE "CompanyName", "Linden Lab"
|
||||
VALUE "FileDescription", "Second Life"
|
||||
VALUE "FileVersion", "2.1.1.0"
|
||||
VALUE "FileVersion", "3.4.1.264760"
|
||||
VALUE "InternalName", "Second Life"
|
||||
VALUE "LegalCopyright", "Copyright <20> 2001-2010, Linden Research, Inc."
|
||||
VALUE "OriginalFilename", "SecondLife.exe"
|
||||
VALUE "ProductName", "Second Life"
|
||||
VALUE "ProductVersion", "2.1.1.0"
|
||||
VALUE "ProductVersion", "3.4.1.264760"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
|
|||
Loading…
Reference in New Issue