From 440ba7a6de63779422944ed7933e1da5e8448c27 Mon Sep 17 00:00:00 2001 From: Cristian Duarte Date: Tue, 12 Jun 2018 19:46:59 -0300 Subject: [PATCH 001/332] Add a friends fragment and expose the access token to java --- android/app/src/main/cpp/native.cpp | 11 +++++ .../hifiinterface/MainActivity.java | 13 ++++++ .../fragment/FriendsFragment.java | 40 +++++++++++++++++++ .../src/main/res/layout/fragment_friends.xml | 9 +++++ .../app/src/main/res/menu/menu_navigation.xml | 4 ++ android/app/src/main/res/values/strings.xml | 1 + 6 files changed, 78 insertions(+) create mode 100644 android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java create mode 100644 android/app/src/main/res/layout/fragment_friends.xml diff --git a/android/app/src/main/cpp/native.cpp b/android/app/src/main/cpp/native.cpp index 437505be3f..3e3fb8f0b5 100644 --- a/android/app/src/main/cpp/native.cpp +++ b/android/app/src/main/cpp/native.cpp @@ -252,6 +252,17 @@ Java_io_highfidelity_hifiinterface_fragment_LoginFragment_nativeLogin(JNIEnv *en Q_ARG(const QString&, username), Q_ARG(const QString&, password)); } +JNIEXPORT jboolean JNICALL +Java_io_highfidelity_hifiinterface_fragment_FriendsFragment_nativeIsLoggedIn(JNIEnv *env, jobject instance) { + return AndroidHelper::instance().getAccountManager()->isLoggedIn(); +} + +JNIEXPORT jstring JNICALL +Java_io_highfidelity_hifiinterface_fragment_FriendsFragment_nativeGetAccessToken(JNIEnv *env, jobject instance) { + auto accountManager = AndroidHelper::instance().getAccountManager(); + return env->NewStringUTF(accountManager->getAccountInfo().getAccessToken().token.toLatin1().data()); +} + JNIEXPORT void JNICALL Java_io_highfidelity_hifiinterface_SplashActivity_registerLoadCompleteListener(JNIEnv *env, jobject instance) { diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java index 54161f60c6..8bb84168a5 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java @@ -29,6 +29,7 @@ import android.widget.TextView; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; +import io.highfidelity.hifiinterface.fragment.FriendsFragment; import io.highfidelity.hifiinterface.fragment.HomeFragment; import io.highfidelity.hifiinterface.fragment.LoginFragment; import io.highfidelity.hifiinterface.fragment.PolicyFragment; @@ -114,6 +115,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On case "Privacy Policy": loadPrivacyPolicyFragment(); break; + case "Friends": + loadFriendsFragment(); + break; default: Log.e(TAG, "Unknown fragment " + fragment); } @@ -137,6 +141,12 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On loadFragment(fragment, getString(R.string.privacyPolicy), true); } + private void loadFriendsFragment() { + Fragment fragment = FriendsFragment.newInstance(); + + loadFragment(fragment, getString(R.string.friends), true); + } + private void loadFragment(Fragment fragment, String title, boolean addToBackStack) { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction ft = fragmentManager.beginTransaction(); @@ -202,6 +212,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On case R.id.action_home: loadHomeFragment(); return true; + case R.id.action_friends: + loadFriendsFragment(); + return true; } return false; } diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java new file mode 100644 index 0000000000..64c02505cb --- /dev/null +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java @@ -0,0 +1,40 @@ +package io.highfidelity.hifiinterface.fragment; + + +import android.app.Fragment; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import io.highfidelity.hifiinterface.R; + +public class FriendsFragment extends Fragment { + + public native boolean nativeIsLoggedIn(); + + public native String nativeGetAccessToken(); + + public FriendsFragment() { + // Required empty public constructor + } + + public static FriendsFragment newInstance() { + FriendsFragment fragment = new FriendsFragment(); + return fragment; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View rootView = inflater.inflate(R.layout.fragment_friends, container, false); + + String accessToken = nativeGetAccessToken(); + + Log.d("[TOKENX]", "token : [" + accessToken + "]"); + + return rootView; + } + +} diff --git a/android/app/src/main/res/layout/fragment_friends.xml b/android/app/src/main/res/layout/fragment_friends.xml new file mode 100644 index 0000000000..347d7ffe24 --- /dev/null +++ b/android/app/src/main/res/layout/fragment_friends.xml @@ -0,0 +1,9 @@ + + + + diff --git a/android/app/src/main/res/menu/menu_navigation.xml b/android/app/src/main/res/menu/menu_navigation.xml index cf80c84177..de496bc4cb 100644 --- a/android/app/src/main/res/menu/menu_navigation.xml +++ b/android/app/src/main/res/menu/menu_navigation.xml @@ -5,4 +5,8 @@ android:id="@+id/action_home" android:title="@string/home" /> + diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 4f5f29e671..e29252c2c0 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,6 +1,7 @@ Interface Home + Friends Open in browser Share link Shared a link From 248be87fa3bb69c4e704f8df3b47dbe426d4a985 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Thu, 14 Jun 2018 15:19:21 -0300 Subject: [PATCH 002/332] Android - First list of friends implementation in List of Friends --- .../fragment/FriendsFragment.java | 15 +- .../provider/EndpointUsersProvider.java | 130 ++++++++++++++++++ .../hifiinterface/provider/UsersProvider.java | 20 +++ .../hifiinterface/view/UserListAdapter.java | 97 +++++++++++++ .../src/main/res/layout/fragment_friends.xml | 9 ++ android/app/src/main/res/layout/user_item.xml | 26 ++++ 6 files changed, 296 insertions(+), 1 deletion(-) create mode 100644 android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java create mode 100644 android/app/src/main/java/io/highfidelity/hifiinterface/provider/UsersProvider.java create mode 100644 android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java create mode 100644 android/app/src/main/res/layout/user_item.xml diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java index 64c02505cb..e70ecfbc57 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java @@ -3,12 +3,15 @@ package io.highfidelity.hifiinterface.fragment; import android.app.Fragment; import android.os.Bundle; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import io.highfidelity.hifiinterface.R; +import io.highfidelity.hifiinterface.view.UserListAdapter; public class FriendsFragment extends Fragment { @@ -16,6 +19,9 @@ public class FriendsFragment extends Fragment { public native String nativeGetAccessToken(); + private RecyclerView mUsersView; + private UserListAdapter mUsersAdapter; + public FriendsFragment() { // Required empty public constructor } @@ -32,7 +38,14 @@ public class FriendsFragment extends Fragment { String accessToken = nativeGetAccessToken(); - Log.d("[TOKENX]", "token : [" + accessToken + "]"); + Log.d("[USERS]", "token : [" + accessToken + "]"); + + mUsersView = rootView.findViewById(R.id.rvUsers); + int numberOfColumns = 1; + GridLayoutManager gridLayoutMgr = new GridLayoutManager(getContext(), numberOfColumns); + mUsersView.setLayoutManager(gridLayoutMgr); + mUsersAdapter = new UserListAdapter(getContext(), accessToken); + mUsersView.setAdapter(mUsersAdapter); return rootView; } diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java new file mode 100644 index 0000000000..3e034b654b --- /dev/null +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java @@ -0,0 +1,130 @@ +package io.highfidelity.hifiinterface.provider; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import io.highfidelity.hifiinterface.view.UserListAdapter; +import okhttp3.Interceptor; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; +import retrofit2.http.GET; +import retrofit2.http.Query; + +/** + * Created by cduarte on 6/13/18. + */ + +public class EndpointUsersProvider implements UsersProvider { + + public static final String BASE_URL = "https://metaverse.highfidelity.com/"; + private final Retrofit mRetrofit; + private final EndpointUsersProviderService mEndpointUsersProviderService; + + public EndpointUsersProvider(String accessToken) { + mRetrofit = createAuthorizedRetrofit(accessToken); + mEndpointUsersProviderService = mRetrofit.create(EndpointUsersProviderService.class); + } + + private Retrofit createAuthorizedRetrofit(String accessToken) { + Retrofit mRetrofit; + OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); + httpClient.addInterceptor(new Interceptor() { + @Override + public Response intercept(Chain chain) throws IOException { + Request original = chain.request(); + + Request request = original.newBuilder() + .header("Authorization", "Bearer " + accessToken) + .method(original.method(), original.body()) + .build(); + + return chain.proceed(request); + } + }); + OkHttpClient client = httpClient.build(); + + mRetrofit = new Retrofit.Builder() + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .client(client) + .build(); + return mRetrofit; + } + + @Override + public void retrieve(UsersCallback usersCallback) { + Call friendsCall = mEndpointUsersProviderService.getUsers( + "friends", + 400, + null); + friendsCall.enqueue(new Callback() { + @Override + public void onResponse(Call call, retrofit2.Response response) { + if (!response.isSuccessful()) { + usersCallback.retrieveError(new Exception("Error calling Users API"), "Error calling Users API"); + return; + } + UsersResponse usersResponse = response.body(); + List adapterUsers = new ArrayList<>(usersResponse.total_entries); + for (User user : usersResponse.data.users) { + UserListAdapter.User adapterUser = new UserListAdapter.User(); + adapterUser.connection = user.connection; + adapterUser.imageUrl = user.images.thumbnail; + adapterUser.name = user.username; + adapterUser.online = user.online; + adapterUsers.add(adapterUser); + } + usersCallback.retrieveOk(adapterUsers); + } + + @Override + public void onFailure(Call call, Throwable t) { + usersCallback.retrieveError(new Exception(t), "Error calling Users API"); + } + }); + } + + public interface EndpointUsersProviderService { + @GET("api/v1/users") + Call getUsers(@Query("filter") String filter, + @Query("per_page") int perPage, + @Query("online") Boolean online); + } + + class UsersResponse { + public UsersResponse() {} + String status; + int current_page; + int total_pages; + int per_page; + int total_entries; + Data data; + } + + class Data { + public Data() {} + List users; + } + + class User { + public User() {} + String username; + boolean online; + String connection; + Images images; + } + + class Images { + public Images() {} + String hero; + String thumbnail; + String tiny; + } + +} diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UsersProvider.java b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UsersProvider.java new file mode 100644 index 0000000000..13ed812ce6 --- /dev/null +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UsersProvider.java @@ -0,0 +1,20 @@ +package io.highfidelity.hifiinterface.provider; + +import java.util.List; + +import io.highfidelity.hifiinterface.view.UserListAdapter; + +/** + * Created by cduarte on 6/13/18. + */ + +public interface UsersProvider { + + void retrieve(UsersProvider.UsersCallback usersCallback); + + interface UsersCallback { + void retrieveOk(List users); + void retrieveError(Exception e, String message); + } + +} diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java new file mode 100644 index 0000000000..32993500fe --- /dev/null +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -0,0 +1,97 @@ +package io.highfidelity.hifiinterface.view; + +import android.content.Context; +import android.net.Uri; +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.squareup.picasso.Picasso; + +import java.util.ArrayList; +import java.util.List; + +import io.highfidelity.hifiinterface.R; +import io.highfidelity.hifiinterface.provider.EndpointUsersProvider; +import io.highfidelity.hifiinterface.provider.UsersProvider; + +/** + * Created by cduarte on 6/13/18. + */ + +public class UserListAdapter extends RecyclerView.Adapter { + + private UsersProvider mProvider; + private LayoutInflater mInflater; + private Context mContext; + private List mUsers = new ArrayList<>(); + + public UserListAdapter(Context c, String accessToken) { + mContext = c; + mInflater = LayoutInflater.from(mContext); + mProvider = new EndpointUsersProvider(accessToken); + loadUsers(); + } + + private void loadUsers() { + mProvider.retrieve(new UsersProvider.UsersCallback() { + @Override + public void retrieveOk(List users) { + mUsers = new ArrayList<>(users); + notifyDataSetChanged(); + } + + @Override + public void retrieveError(Exception e, String message) { + Log.e("[USERS]", message, e); + } + }); + } + + @Override + public UserListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = mInflater.inflate(R.layout.user_item, parent, false); + return new UserListAdapter.ViewHolder(view); + } + + @Override + public void onBindViewHolder(UserListAdapter.ViewHolder holder, int position) { + User aUser = mUsers.get(position); + holder.mUsername.setText(aUser.name); + holder.mOnline.setText(aUser.online?"ONLINE":"OFFLINE"); + Uri uri = Uri.parse(aUser.imageUrl); + Picasso.get().load(uri).into(holder.mImage); + } + + @Override + public int getItemCount() { + return mUsers.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + + TextView mUsername; + TextView mOnline; + ImageView mImage; + + public ViewHolder(View itemView) { + super(itemView); + mUsername = itemView.findViewById(R.id.userName); + mOnline = itemView.findViewById(R.id.userOnline); + mImage = itemView.findViewById(R.id.userImage); + } + } + + public static class User { + public String name; + public String imageUrl; + public String connection; + public boolean online; + + public User() {} + } +} diff --git a/android/app/src/main/res/layout/fragment_friends.xml b/android/app/src/main/res/layout/fragment_friends.xml index 347d7ffe24..8129f5d53c 100644 --- a/android/app/src/main/res/layout/fragment_friends.xml +++ b/android/app/src/main/res/layout/fragment_friends.xml @@ -6,4 +6,13 @@ android:layout_height="match_parent" android:background="@color/backgroundLight"> + + diff --git a/android/app/src/main/res/layout/user_item.xml b/android/app/src/main/res/layout/user_item.xml new file mode 100644 index 0000000000..043c9161de --- /dev/null +++ b/android/app/src/main/res/layout/user_item.xml @@ -0,0 +1,26 @@ + + + + + + + + + \ No newline at end of file From 61d1bf7bf7e7ae2e203604f1dd2e94f12efd478e Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Thu, 14 Jun 2018 21:06:40 -0300 Subject: [PATCH 003/332] Android - Show names of screens when going back in the Main screen (Home-Login-Friends) --- .../io/highfidelity/hifiinterface/MainActivity.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java index 8bb84168a5..d1ac6d5ec8 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java @@ -126,7 +126,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On private void loadHomeFragment() { Fragment fragment = HomeFragment.newInstance(); - loadFragment(fragment, getString(R.string.home), false); + loadFragment(fragment, getString(R.string.home), true); } private void loadLoginFragment() { @@ -152,7 +152,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On FragmentTransaction ft = fragmentManager.beginTransaction(); ft.replace(R.id.content_frame, fragment); if (addToBackStack) { - ft.addToBackStack(null); + ft.addToBackStack(title); } ft.commit(); setTitle(title); @@ -298,8 +298,12 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On @Override public void onBackPressed() { int index = getFragmentManager().getBackStackEntryCount() - 1; - if (index > -1) { + if (index > 0) { super.onBackPressed(); + index--; + if (index > -1) { + setTitle(getFragmentManager().getBackStackEntryAt(index).getName()); + } if (backToScene) { backToScene = false; goToLastLocation(); From 7954865141c39bd7cdcfbe7381d99d08c3bdab3f Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Thu, 5 Jul 2018 14:34:37 -0700 Subject: [PATCH 004/332] trying to fix dependency shutdown --- interface/src/AboutUtil.cpp | 4 +- interface/src/Application.cpp | 248 +++++++++--------- interface/src/Menu.cpp | 12 +- interface/src/avatar/MyAvatar.cpp | 4 +- interface/src/commerce/QmlCommerce.cpp | 3 +- interface/src/scripting/Audio.cpp | 9 +- interface/src/scripting/AudioDevices.cpp | 18 +- interface/src/ui/LoginDialog.cpp | 4 +- interface/src/ui/Stats.cpp | 2 +- interface/src/ui/TestingDialog.cpp | 3 +- libraries/audio-client/src/AudioClient.cpp | 21 +- libraries/audio-client/src/AudioClient.h | 1 - libraries/audio-client/src/AudioIOStats.cpp | 2 - libraries/script-engine/src/ScriptEngines.cpp | 3 +- libraries/shared/src/DependencyManager.h | 8 +- libraries/ui/src/ui/OffscreenQmlSurface.cpp | 3 +- 16 files changed, 157 insertions(+), 188 deletions(-) diff --git a/interface/src/AboutUtil.cpp b/interface/src/AboutUtil.cpp index 634e52b481..56cabce03d 100644 --- a/interface/src/AboutUtil.cpp +++ b/interface/src/AboutUtil.cpp @@ -45,9 +45,7 @@ QString AboutUtil::getQtVersion() const { } void AboutUtil::openUrl(const QString& url) const { - - auto tabletScriptingInterface = DependencyManager::get(); - auto tablet = tabletScriptingInterface->getTablet("com.highfidelity.interface.tablet.system"); + auto tablet = DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system"); auto hmd = DependencyManager::get(); auto offscreenUi = DependencyManager::get(); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 4b530dc1d0..bc881e592b 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1138,33 +1138,34 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo domainCheckInTimer->deleteLater(); }); + { + auto audioIO = DependencyManager::get().data(); + audioIO->setPositionGetter([] { + auto avatarManager = DependencyManager::get(); + auto myAvatar = avatarManager ? avatarManager->getMyAvatar() : nullptr; - auto audioIO = DependencyManager::get(); - audioIO->setPositionGetter([]{ - auto avatarManager = DependencyManager::get(); - auto myAvatar = avatarManager ? avatarManager->getMyAvatar() : nullptr; + return myAvatar ? myAvatar->getPositionForAudio() : Vectors::ZERO; + }); + audioIO->setOrientationGetter([] { + auto avatarManager = DependencyManager::get(); + auto myAvatar = avatarManager ? avatarManager->getMyAvatar() : nullptr; - return myAvatar ? myAvatar->getPositionForAudio() : Vectors::ZERO; - }); - audioIO->setOrientationGetter([]{ - auto avatarManager = DependencyManager::get(); - auto myAvatar = avatarManager ? avatarManager->getMyAvatar() : nullptr; + return myAvatar ? myAvatar->getOrientationForAudio() : Quaternions::IDENTITY; + }); - return myAvatar ? myAvatar->getOrientationForAudio() : Quaternions::IDENTITY; - }); + recording::Frame::registerFrameHandler(AudioConstants::getAudioFrameName(), [=](recording::Frame::ConstPointer frame) { + audioIO->handleRecordedAudioInput(frame->data); + }); - recording::Frame::registerFrameHandler(AudioConstants::getAudioFrameName(), [=](recording::Frame::ConstPointer frame) { - audioIO->handleRecordedAudioInput(frame->data); - }); - - connect(audioIO.data(), &AudioClient::inputReceived, [](const QByteArray& audio){ - static auto recorder = DependencyManager::get(); - if (recorder->isRecording()) { - static const recording::FrameType AUDIO_FRAME_TYPE = recording::Frame::registerFrameType(AudioConstants::getAudioFrameName()); - recorder->recordFrame(AUDIO_FRAME_TYPE, audio); - } - }); - audioIO->startThread(); + connect(audioIO, &AudioClient::inputReceived, [](const QByteArray& audio) { + static auto recorder = DependencyManager::get(); + if (recorder->isRecording()) { + static const recording::FrameType AUDIO_FRAME_TYPE = recording::Frame::registerFrameType(AudioConstants::getAudioFrameName()); + recorder->recordFrame(AUDIO_FRAME_TYPE, audio); + } + }); + audioIO->startThread(); + } // Make sure we don't time out during slow operations at startup updateHeartbeat(); @@ -1263,27 +1264,29 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // Inititalize sample before registering _sampleSound = DependencyManager::get()->getSound(PathUtils::resourcesUrl("sounds/sample.wav")); - auto scriptEngines = DependencyManager::get().data(); - scriptEngines->registerScriptInitializer([this](ScriptEnginePointer engine){ - registerScriptEngineWithApplicationServices(engine); - }); + { + auto scriptEngines = DependencyManager::get().data(); + scriptEngines->registerScriptInitializer([this](ScriptEnginePointer engine) { + registerScriptEngineWithApplicationServices(engine); + }); - connect(scriptEngines, &ScriptEngines::scriptCountChanged, scriptEngines, [this] { - auto scriptEngines = DependencyManager::get(); - if (scriptEngines->getRunningScripts().isEmpty()) { - getMyAvatar()->clearScriptableSettings(); - } - }, Qt::QueuedConnection); + connect(scriptEngines, &ScriptEngines::scriptCountChanged, this, [this] { + auto scriptEngines = DependencyManager::get(); + if (scriptEngines->getRunningScripts().isEmpty()) { + getMyAvatar()->clearScriptableSettings(); + } + }, Qt::QueuedConnection); - connect(scriptEngines, &ScriptEngines::scriptsReloading, scriptEngines, [this] { - getEntities()->reloadEntityScripts(); - loadAvatarScripts(getMyAvatar()->getScriptUrls()); - }, Qt::QueuedConnection); + connect(scriptEngines, &ScriptEngines::scriptsReloading, this, [this] { + getEntities()->reloadEntityScripts(); + loadAvatarScripts(getMyAvatar()->getScriptUrls()); + }, Qt::QueuedConnection); - connect(scriptEngines, &ScriptEngines::scriptLoadError, - scriptEngines, [](const QString& filename, const QString& error){ - OffscreenUi::asyncWarning(nullptr, "Error Loading Script", filename + " failed to load."); - }, Qt::QueuedConnection); + connect(scriptEngines, &ScriptEngines::scriptLoadError, + this, [](const QString& filename, const QString& error) { + OffscreenUi::asyncWarning(nullptr, "Error Loading Script", filename + " failed to load."); + }, Qt::QueuedConnection); + } #ifdef _WIN32 WSADATA WsaData; @@ -1353,10 +1356,11 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // so we defer the setup of the `scripting::Audio` class until this point { auto audioScriptingInterface = DependencyManager::set(); - connect(audioIO.data(), &AudioClient::mutedByMixer, audioScriptingInterface.data(), &AudioScriptingInterface::mutedByMixer); - connect(audioIO.data(), &AudioClient::receivedFirstPacket, audioScriptingInterface.data(), &AudioScriptingInterface::receivedFirstPacket); - connect(audioIO.data(), &AudioClient::disconnected, audioScriptingInterface.data(), &AudioScriptingInterface::disconnected); - connect(audioIO.data(), &AudioClient::muteEnvironmentRequested, [](glm::vec3 position, float radius) { + auto audioIO = DependencyManager::get().data(); + connect(audioIO, &AudioClient::mutedByMixer, audioScriptingInterface.data(), &AudioScriptingInterface::mutedByMixer); + connect(audioIO, &AudioClient::receivedFirstPacket, audioScriptingInterface.data(), &AudioScriptingInterface::receivedFirstPacket); + connect(audioIO, &AudioClient::disconnected, audioScriptingInterface.data(), &AudioScriptingInterface::disconnected); + connect(audioIO, &AudioClient::muteEnvironmentRequested, [](glm::vec3 position, float radius) { auto audioClient = DependencyManager::get(); auto audioScriptingInterface = DependencyManager::get(); auto myAvatarPosition = DependencyManager::get()->getMyAvatar()->getWorldPosition(); @@ -1688,23 +1692,26 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo userInputMapper->registerDevice(_touchscreenVirtualPadDevice->getInputDevice()); } - // this will force the model the look at the correct directory (weird order of operations issue) - scriptEngines->reloadLocalFiles(); + { + auto scriptEngines = DependencyManager::get().data(); + // this will force the model the look at the correct directory (weird order of operations issue) + scriptEngines->reloadLocalFiles(); - // do this as late as possible so that all required subsystems are initialized - // If we've overridden the default scripts location, just load default scripts - // otherwise, load 'em all + // do this as late as possible so that all required subsystems are initialized + // If we've overridden the default scripts location, just load default scripts + // otherwise, load 'em all - // we just want to see if --scripts was set, we've already parsed it and done - // the change in PathUtils. Rather than pass that in the constructor, lets just - // look (this could be debated) - QString scriptsSwitch = QString("--").append(SCRIPTS_SWITCH); - QDir defaultScriptsLocation(getCmdOption(argc, constArgv, scriptsSwitch.toStdString().c_str())); - if (!defaultScriptsLocation.exists()) { - scriptEngines->loadDefaultScripts(); - scriptEngines->defaultScriptsLocationOverridden(true); - } else { - scriptEngines->loadScripts(); + // we just want to see if --scripts was set, we've already parsed it and done + // the change in PathUtils. Rather than pass that in the constructor, lets just + // look (this could be debated) + QString scriptsSwitch = QString("--").append(SCRIPTS_SWITCH); + QDir defaultScriptsLocation(getCmdOption(argc, constArgv, scriptsSwitch.toStdString().c_str())); + if (!defaultScriptsLocation.exists()) { + scriptEngines->loadDefaultScripts(); + scriptEngines->defaultScriptsLocationOverridden(true); + } else { + scriptEngines->loadScripts(); + } } // Make sure we don't time out during slow operations at startup @@ -1754,13 +1761,16 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo cameraMenuChanged(); } - // set the local loopback interface for local sounds - AudioInjector::setLocalAudioInterface(audioIO.data()); - auto audioScriptingInterface = DependencyManager::get(); - audioScriptingInterface->setLocalAudioInterface(audioIO.data()); - connect(audioIO.data(), &AudioClient::noiseGateOpened, audioScriptingInterface.data(), &AudioScriptingInterface::noiseGateOpened); - connect(audioIO.data(), &AudioClient::noiseGateClosed, audioScriptingInterface.data(), &AudioScriptingInterface::noiseGateClosed); - connect(audioIO.data(), &AudioClient::inputReceived, audioScriptingInterface.data(), &AudioScriptingInterface::inputReceived); + { + auto audioIO = DependencyManager::get().data(); + // set the local loopback interface for local sounds + AudioInjector::setLocalAudioInterface(audioIO); + auto audioScriptingInterface = DependencyManager::get(); + audioScriptingInterface->setLocalAudioInterface(audioIO); + connect(audioIO, &AudioClient::noiseGateOpened, audioScriptingInterface.data(), &AudioScriptingInterface::noiseGateOpened); + connect(audioIO, &AudioClient::noiseGateClosed, audioScriptingInterface.data(), &AudioScriptingInterface::noiseGateClosed); + connect(audioIO, &AudioClient::inputReceived, audioScriptingInterface.data(), &AudioScriptingInterface::inputReceived); + } this->installEventFilter(this); @@ -2174,11 +2184,10 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo QVariant testProperty = property(hifi::properties::TEST); qDebug() << testProperty; if (testProperty.isValid()) { - auto scriptEngines = DependencyManager::get(); const auto testScript = property(hifi::properties::TEST).toUrl(); // Set last parameter to exit interface when the test script finishes, if so requested - scriptEngines->loadScript(testScript, false, false, false, false, quitWhenFinished); + DependencyManager::get()->loadScript(testScript, false, false, false, false, quitWhenFinished); // This is done so we don't get a "connection time-out" message when we haven't passed in a URL. if (arguments().contains("--url")) { @@ -2456,6 +2465,15 @@ void Application::cleanupBeforeQuit() { // Clear any queued processing (I/O, FBX/OBJ/Texture parsing) QThreadPool::globalInstance()->clear(); + // These classes hold ScriptEnginePointers, so they must be destroyed before ScriptEngines + { + DependencyManager::destroy(); + DependencyManager::destroy(); + EntityTreePointer tree = getEntities()->getTree(); + tree->setSimulation(nullptr); + DependencyManager::destroy(); + } + DependencyManager::get()->shutdownScripting(); // stop all currently running global scripts DependencyManager::destroy(); @@ -2493,6 +2511,8 @@ void Application::cleanupBeforeQuit() { DependencyManager::destroy(); #endif + DependencyManager::destroy(); // Must be destroyed before TabletScriptingInterface + // stop QML DependencyManager::destroy(); DependencyManager::destroy(); @@ -2504,10 +2524,6 @@ void Application::cleanupBeforeQuit() { _snapshotSoundInjector->stop(); } - // FIXME: something else is holding a reference to AudioClient, - // so it must be explicitly synchronously stopped here - DependencyManager::get()->cleanupBeforeQuit(); - // destroy Audio so it and its threads have a chance to go down safely // this must happen after QML, as there are unexplained audio crashes originating in qtwebengine DependencyManager::destroy(); @@ -2547,9 +2563,6 @@ Application::~Application() { _entityClipboard->eraseAllOctreeElements(); _entityClipboard.reset(); - EntityTreePointer tree = getEntities()->getTree(); - tree->setSimulation(nullptr); - _octreeProcessor.terminate(); _entityEditSender.terminate(); @@ -3239,8 +3252,7 @@ void Application::showHelp() { QUrlQuery queryString; queryString.addQueryItem("handControllerName", handControllerName); queryString.addQueryItem("defaultTab", defaultTab); - auto tabletScriptingInterface = DependencyManager::get(); - TabletProxy* tablet = dynamic_cast(tabletScriptingInterface->getTablet(SYSTEM_TABLET)); + TabletProxy* tablet = dynamic_cast(DependencyManager::get()->getTablet(SYSTEM_TABLET)); tablet->gotoWebScreen(PathUtils::resourcesUrl() + INFO_HELP_PATH + "?" + queryString.toString()); DependencyManager::get()->openTablet(); //InfoView::show(INFO_HELP_PATH, false, queryString.toString()); @@ -3545,6 +3557,10 @@ static void dumpEventQueue(QThread* thread) { bool Application::event(QEvent* event) { + if (_aboutToQuit) { + return false; + } + if (!Menu::getInstance()) { return false; } @@ -3937,10 +3953,6 @@ void Application::maybeToggleMenuVisible(QMouseEvent* event) const { void Application::mouseMoveEvent(QMouseEvent* event) { PROFILE_RANGE(app_input_mouse, __FUNCTION__); - if (_aboutToQuit) { - return; - } - maybeToggleMenuVisible(event); auto& compositor = getApplicationCompositor(); @@ -4005,11 +4017,9 @@ void Application::mousePressEvent(QMouseEvent* event) { event->screenPos(), event->button(), event->buttons(), event->modifiers()); - if (!_aboutToQuit) { - getOverlays().mousePressEvent(&mappedEvent); - if (!_controllerScriptingInterface->areEntityClicksCaptured()) { - getEntities()->mousePressEvent(&mappedEvent); - } + getOverlays().mousePressEvent(&mappedEvent); + if (!_controllerScriptingInterface->areEntityClicksCaptured()) { + getEntities()->mousePressEvent(&mappedEvent); } _controllerScriptingInterface->emitMousePressEvent(&mappedEvent); // send events to any registered scripts @@ -4035,14 +4045,11 @@ void Application::mouseDoublePressEvent(QMouseEvent* event) { event->screenPos(), event->button(), event->buttons(), event->modifiers()); - if (!_aboutToQuit) { - getOverlays().mouseDoublePressEvent(&mappedEvent); - if (!_controllerScriptingInterface->areEntityClicksCaptured()) { - getEntities()->mouseDoublePressEvent(&mappedEvent); - } + getOverlays().mouseDoublePressEvent(&mappedEvent); + if (!_controllerScriptingInterface->areEntityClicksCaptured()) { + getEntities()->mouseDoublePressEvent(&mappedEvent); } - // if one of our scripts have asked to capture this event, then stop processing it if (_controllerScriptingInterface->isMouseCaptured()) { return; @@ -4061,10 +4068,8 @@ void Application::mouseReleaseEvent(QMouseEvent* event) { event->screenPos(), event->button(), event->buttons(), event->modifiers()); - if (!_aboutToQuit) { - getOverlays().mouseReleaseEvent(&mappedEvent); - getEntities()->mouseReleaseEvent(&mappedEvent); - } + getOverlays().mouseReleaseEvent(&mappedEvent); + getEntities()->mouseReleaseEvent(&mappedEvent); _controllerScriptingInterface->emitMouseReleaseEvent(&mappedEvent); // send events to any registered scripts @@ -4215,7 +4220,6 @@ bool Application::shouldPaint() const { return false; } - auto displayPlugin = getActiveDisplayPlugin(); #ifdef DEBUG_PAINT_DELAY @@ -5439,6 +5443,10 @@ static bool domainLoadingInProgress = false; void Application::update(float deltaTime) { PROFILE_RANGE_EX(app, __FUNCTION__, 0xffff0000, (uint64_t)_renderFrameCount + 1); + if (_aboutToQuit) { + return; + } + if (!_physicsEnabled) { if (!domainLoadingInProgress) { PROFILE_ASYNC_BEGIN(app, "Scene Loading", ""); @@ -5705,15 +5713,13 @@ void Application::update(float deltaTime) { _entitySimulation->handleDeactivatedMotionStates(deactivations); }); - if (!_aboutToQuit) { - // handleCollisionEvents() AFTER handleChangedMotionStates() - { - PROFILE_RANGE(simulation_physics, "CollisionEvents"); - avatarManager->handleCollisionEvents(collisionEvents); - // Collision events (and their scripts) must not be handled when we're locked, above. (That would risk - // deadlock.) - _entitySimulation->handleCollisionEvents(collisionEvents); - } + // handleCollisionEvents() AFTER handleChangedMotionStates() + { + PROFILE_RANGE(simulation_physics, "CollisionEvents"); + avatarManager->handleCollisionEvents(collisionEvents); + // Collision events (and their scripts) must not be handled when we're locked, above. (That would risk + // deadlock.) + _entitySimulation->handleCollisionEvents(collisionEvents); } { @@ -5731,11 +5737,9 @@ void Application::update(float deltaTime) { } auto t4 = std::chrono::high_resolution_clock::now(); - if (!_aboutToQuit) { - // NOTE: the getEntities()->update() call below will wait for lock - // and will provide non-physical entity motion - getEntities()->update(true); // update the models... - } + // NOTE: the getEntities()->update() call below will wait for lock + // and will provide non-physical entity motion + getEntities()->update(true); // update the models... auto t5 = std::chrono::high_resolution_clock::now(); @@ -6639,16 +6643,12 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEnginePointe DependencyManager::get()->registerMetaTypes(scriptEngine.data()); // connect this script engines printedMessage signal to the global ScriptEngines these various messages - connect(scriptEngine.data(), &ScriptEngine::printedMessage, - DependencyManager::get().data(), &ScriptEngines::onPrintedMessage); - connect(scriptEngine.data(), &ScriptEngine::errorMessage, - DependencyManager::get().data(), &ScriptEngines::onErrorMessage); - connect(scriptEngine.data(), &ScriptEngine::warningMessage, - DependencyManager::get().data(), &ScriptEngines::onWarningMessage); - connect(scriptEngine.data(), &ScriptEngine::infoMessage, - DependencyManager::get().data(), &ScriptEngines::onInfoMessage); - connect(scriptEngine.data(), &ScriptEngine::clearDebugWindow, - DependencyManager::get().data(), &ScriptEngines::onClearDebugWindow); + auto scriptEngines = DependencyManager::get().data(); + connect(scriptEngine.data(), &ScriptEngine::printedMessage, scriptEngines, &ScriptEngines::onPrintedMessage); + connect(scriptEngine.data(), &ScriptEngine::errorMessage, scriptEngines, &ScriptEngines::onErrorMessage); + connect(scriptEngine.data(), &ScriptEngine::warningMessage, scriptEngines, &ScriptEngines::onWarningMessage); + connect(scriptEngine.data(), &ScriptEngine::infoMessage, scriptEngines, &ScriptEngines::onInfoMessage); + connect(scriptEngine.data(), &ScriptEngine::clearDebugWindow, scriptEngines, &ScriptEngines::onClearDebugWindow); } @@ -6956,10 +6956,9 @@ void Application::showDialog(const QUrl& widgetUrl, const QUrl& tabletUrl, const } void Application::showScriptLogs() { - auto scriptEngines = DependencyManager::get(); QUrl defaultScriptsLoc = PathUtils::defaultScriptsLocation(); defaultScriptsLoc.setPath(defaultScriptsLoc.path() + "developer/debugging/debugWindow.js"); - scriptEngines->loadScript(defaultScriptsLoc.toString()); + DependencyManager::get()->loadScript(defaultScriptsLoc.toString()); } void Application::showAssetServerWidget(QString filePath) { @@ -7523,7 +7522,6 @@ void Application::openUrl(const QUrl& url) const { } void Application::loadDialog() { - auto scriptEngines = DependencyManager::get(); ModalDialogListener* dlg = OffscreenUi::getOpenFileNameAsync(_glWidget, tr("Open Script"), getPreviousScriptLocation(), tr("JavaScript Files (*.js)")); diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 646067169f..ecc402bff9 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -692,10 +692,9 @@ Menu::Menu() { action = addActionToQMenuAndActionHash(audioDebugMenu, "Stats..."); connect(action, &QAction::triggered, [] { - auto scriptEngines = DependencyManager::get(); QUrl defaultScriptsLoc = PathUtils::defaultScriptsLocation(); defaultScriptsLoc.setPath(defaultScriptsLoc.path() + "developer/utilities/audio/stats.js"); - scriptEngines->loadScript(defaultScriptsLoc.toString()); + DependencyManager::get()->loadScript(defaultScriptsLoc.toString()); }); action = addActionToQMenuAndActionHash(audioDebugMenu, "Buffers..."); @@ -704,16 +703,14 @@ Menu::Menu() { QString("hifi/tablet/TabletAudioBuffers.qml"), "AudioBuffersDialog"); }); - auto audioIO = DependencyManager::get(); addActionToQMenuAndActionHash(audioDebugMenu, MenuOption::MuteEnvironment, 0, - audioIO.data(), SLOT(sendMuteEnvironmentPacket())); + DependencyManager::get().data(), SLOT(sendMuteEnvironmentPacket())); action = addActionToQMenuAndActionHash(audioDebugMenu, MenuOption::AudioScope); connect(action, &QAction::triggered, [] { - auto scriptEngines = DependencyManager::get(); QUrl defaultScriptsLoc = PathUtils::defaultScriptsLocation(); defaultScriptsLoc.setPath(defaultScriptsLoc.path() + "developer/utilities/audio/audioScope.js"); - scriptEngines->loadScript(defaultScriptsLoc.toString()); + DependencyManager::get()->loadScript(defaultScriptsLoc.toString()); }); // Developer > Physics >>> @@ -793,10 +790,9 @@ Menu::Menu() { // Developer > API Debugger action = addActionToQMenuAndActionHash(developerMenu, "API Debugger"); connect(action, &QAction::triggered, [] { - auto scriptEngines = DependencyManager::get(); QUrl defaultScriptsLoc = PathUtils::defaultScriptsLocation(); defaultScriptsLoc.setPath(defaultScriptsLoc.path() + "developer/utilities/tools/currentAPI.js"); - scriptEngines->loadScript(defaultScriptsLoc.toString()); + DependencyManager::get()->loadScript(defaultScriptsLoc.toString()); }); // Developer > Log... diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index b08496c2b8..382a210fa0 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -460,14 +460,14 @@ void MyAvatar::update(float deltaTime) { // Get audio loudness data from audio input device // Also get the AudioClient so we can update the avatar bounding box data // on the AudioClient side. - auto audio = DependencyManager::get(); + auto audio = DependencyManager::get().data(); setAudioLoudness(audio->getLastInputLoudness()); setAudioAverageLoudness(audio->getAudioAverageInputLoudness()); glm::vec3 halfBoundingBoxDimensions(_characterController.getCapsuleRadius(), _characterController.getCapsuleHalfHeight(), _characterController.getCapsuleRadius()); // This might not be right! Isn't the capsule local offset in avatar space? -HRS 5/26/17 halfBoundingBoxDimensions += _characterController.getCapsuleLocalOffset(); - QMetaObject::invokeMethod(audio.data(), "setAvatarBoundingBoxParameters", + QMetaObject::invokeMethod(audio, "setAvatarBoundingBoxParameters", Q_ARG(glm::vec3, (getWorldPosition() - halfBoundingBoxDimensions)), Q_ARG(glm::vec3, (halfBoundingBoxDimensions*2.0f))); diff --git a/interface/src/commerce/QmlCommerce.cpp b/interface/src/commerce/QmlCommerce.cpp index b960c0b703..09059b32b2 100644 --- a/interface/src/commerce/QmlCommerce.cpp +++ b/interface/src/commerce/QmlCommerce.cpp @@ -338,8 +338,7 @@ bool QmlCommerce::openApp(const QString& itemHref) { QJsonObject appFileJsonObject = appFileJsonDocument.object(); QString homeUrl = appFileJsonObject["homeURL"].toString(); - auto tabletScriptingInterface = DependencyManager::get(); - auto tablet = dynamic_cast(tabletScriptingInterface->getTablet("com.highfidelity.interface.tablet.system")); + auto tablet = dynamic_cast(DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system")); if (homeUrl.contains(".qml", Qt::CaseInsensitive)) { tablet->loadQMLSource(homeUrl); } else if (homeUrl.contains(".html", Qt::CaseInsensitive)) { diff --git a/interface/src/scripting/Audio.cpp b/interface/src/scripting/Audio.cpp index b27cc344c3..eb4b5948d9 100644 --- a/interface/src/scripting/Audio.cpp +++ b/interface/src/scripting/Audio.cpp @@ -59,23 +59,20 @@ Audio::Audio() : _devices(_contextIsHMD) { } bool Audio::startRecording(const QString& filepath) { - auto client = DependencyManager::get().data(); return resultWithWriteLock([&] { - return client->startRecording(filepath); + return DependencyManager::get()->startRecording(filepath); }); } bool Audio::getRecording() { - auto client = DependencyManager::get().data(); return resultWithReadLock([&] { - return client->getRecording(); + return DependencyManager::get()->getRecording(); }); } void Audio::stopRecording() { - auto client = DependencyManager::get().data(); withWriteLock([&] { - client->stopRecording(); + DependencyManager::get()->stopRecording(); }); } diff --git a/interface/src/scripting/AudioDevices.cpp b/interface/src/scripting/AudioDevices.cpp index f08a0bf382..ce82786c8d 100644 --- a/interface/src/scripting/AudioDevices.cpp +++ b/interface/src/scripting/AudioDevices.cpp @@ -360,11 +360,11 @@ void AudioInputDeviceList::onPeakValueListChanged(const QList& peakValueL } AudioDevices::AudioDevices(bool& contextIsHMD) : _contextIsHMD(contextIsHMD) { - auto client = DependencyManager::get(); + auto client = DependencyManager::get().data(); - connect(client.data(), &AudioClient::deviceChanged, this, &AudioDevices::onDeviceChanged, Qt::QueuedConnection); - connect(client.data(), &AudioClient::devicesChanged, this, &AudioDevices::onDevicesChanged, Qt::QueuedConnection); - connect(client.data(), &AudioClient::peakValueListChanged, &_inputs, &AudioInputDeviceList::onPeakValueListChanged, Qt::QueuedConnection); + connect(client, &AudioClient::deviceChanged, this, &AudioDevices::onDeviceChanged, Qt::QueuedConnection); + connect(client, &AudioClient::devicesChanged, this, &AudioDevices::onDevicesChanged, Qt::QueuedConnection); + connect(client, &AudioClient::peakValueListChanged, &_inputs, &AudioInputDeviceList::onPeakValueListChanged, Qt::QueuedConnection); _inputs.onDeviceChanged(client->getActiveAudioDevice(QAudio::AudioInput), contextIsHMD); _outputs.onDeviceChanged(client->getActiveAudioDevice(QAudio::AudioOutput), contextIsHMD); @@ -446,7 +446,7 @@ void AudioDevices::onDevicesChanged(QAudio::Mode mode, const QList(); + auto client = DependencyManager::get().data(); _inputs._hmdSavedDeviceName = getTargetDevice(true, QAudio::AudioInput); _inputs._desktopSavedDeviceName = getTargetDevice(false, QAudio::AudioInput); @@ -494,9 +494,9 @@ void AudioDevices::onDevicesChanged(QAudio::Mode mode, const QList(); + auto client = DependencyManager::get().data(); _requestedInputDevice = device; - QMetaObject::invokeMethod(client.data(), "switchAudioDevice", + QMetaObject::invokeMethod(client, "switchAudioDevice", Q_ARG(QAudio::Mode, QAudio::AudioInput), Q_ARG(const QAudioDeviceInfo&, device)); } else { @@ -511,9 +511,9 @@ void AudioDevices::chooseInputDevice(const QAudioDeviceInfo& device, bool isHMD) void AudioDevices::chooseOutputDevice(const QAudioDeviceInfo& device, bool isHMD) { //check if current context equals device to change if (_contextIsHMD == isHMD) { - auto client = DependencyManager::get(); + auto client = DependencyManager::get().data(); _requestedOutputDevice = device; - QMetaObject::invokeMethod(client.data(), "switchAudioDevice", + QMetaObject::invokeMethod(client, "switchAudioDevice", Q_ARG(QAudio::Mode, QAudio::AudioOutput), Q_ARG(const QAudioDeviceInfo&, device)); } else { diff --git a/interface/src/ui/LoginDialog.cpp b/interface/src/ui/LoginDialog.cpp index 4d8592a9d3..b3912289ac 100644 --- a/interface/src/ui/LoginDialog.cpp +++ b/interface/src/ui/LoginDialog.cpp @@ -162,9 +162,7 @@ void LoginDialog::createAccountFromStream(QString username) { } void LoginDialog::openUrl(const QString& url) const { - - auto tabletScriptingInterface = DependencyManager::get(); - auto tablet = dynamic_cast(tabletScriptingInterface->getTablet("com.highfidelity.interface.tablet.system")); + auto tablet = dynamic_cast(DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system")); auto hmd = DependencyManager::get(); auto offscreenUi = DependencyManager::get(); diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index c7ee868855..6675ab9c39 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -211,7 +211,7 @@ void Stats::updateStats(bool force) { STAT_UPDATE_FLOAT(myAvatarSendRate, avatarManager->getMyAvatarSendRate(), 0.1f); SharedNodePointer audioMixerNode = nodeList->soloNodeOfType(NodeType::AudioMixer); - auto audioClient = DependencyManager::get(); + auto audioClient = DependencyManager::get().data(); if (audioMixerNode || force) { STAT_UPDATE(audioMixerKbps, (int)roundf( bandwidthRecorder->getAverageInputKilobitsPerSecond(NodeType::AudioMixer) + diff --git a/interface/src/ui/TestingDialog.cpp b/interface/src/ui/TestingDialog.cpp index 6143f20ee6..5f0b20ca7e 100644 --- a/interface/src/ui/TestingDialog.cpp +++ b/interface/src/ui/TestingDialog.cpp @@ -23,8 +23,7 @@ TestingDialog::TestingDialog(QWidget* parent) : _console->setFixedHeight(TESTING_CONSOLE_HEIGHT); - auto _engines = DependencyManager::get(); - _engine = _engines->loadScript(qApp->applicationDirPath() + testRunnerRelativePath); + _engine = DependencyManager::get()->loadScript(qApp->applicationDirPath() + testRunnerRelativePath); _console->setScriptEngine(_engine); connect(_engine.data(), &ScriptEngine::finished, this, &TestingDialog::onTestingFinished); } diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index a6f0416a30..2d1f24cfd7 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -269,31 +269,14 @@ AudioClient::~AudioClient() { } void AudioClient::customDeleter() { - deleteLater(); -} - -void AudioClient::cleanupBeforeQuit() { - // FIXME: this should be put in customDeleter, but there is still a reference to this when it is called, - // so this must be explicitly, synchronously stopped - static ConditionalGuard guard; - if (QThread::currentThread() != thread()) { - // This will likely be called from the main thread, but we don't want to do blocking queued calls - // from the main thread, so we use a normal auto-connection invoke, and then use a conditional to wait - // for completion - // The effect is the same, yes, but we actually want to avoid the use of Qt::BlockingQueuedConnection - // in the code - QMetaObject::invokeMethod(this, "cleanupBeforeQuit"); - guard.wait(); - return; - } - #if defined(Q_OS_ANDROID) _shouldRestartInputSetup = false; #endif stop(); _checkDevicesTimer->stop(); _checkPeakValuesTimer->stop(); - guard.trigger(); + + deleteLater(); } void AudioClient::handleMismatchAudioFormat(SharedNodePointer node, const QString& currentCodec, const QString& recievedCodec) { diff --git a/libraries/audio-client/src/AudioClient.h b/libraries/audio-client/src/AudioClient.h index 9ee7bcfeba..8599c990a3 100644 --- a/libraries/audio-client/src/AudioClient.h +++ b/libraries/audio-client/src/AudioClient.h @@ -171,7 +171,6 @@ public: public slots: void start(); void stop(); - void cleanupBeforeQuit(); void handleAudioEnvironmentDataPacket(QSharedPointer message); void handleAudioDataPacket(QSharedPointer message); diff --git a/libraries/audio-client/src/AudioIOStats.cpp b/libraries/audio-client/src/AudioIOStats.cpp index 1717ad1f9c..1e45622fdc 100644 --- a/libraries/audio-client/src/AudioIOStats.cpp +++ b/libraries/audio-client/src/AudioIOStats.cpp @@ -95,8 +95,6 @@ void AudioIOStats::processStreamStatsPacket(QSharedPointer mess } void AudioIOStats::publish() { - auto audioIO = DependencyManager::get(); - // call _receivedAudioStream's per-second callback _receivedAudioStream->perSecondCallbackForUpdatingStats(); diff --git a/libraries/script-engine/src/ScriptEngines.cpp b/libraries/script-engine/src/ScriptEngines.cpp index d385dcca84..b2815ff2b4 100644 --- a/libraries/script-engine/src/ScriptEngines.cpp +++ b/libraries/script-engine/src/ScriptEngines.cpp @@ -492,8 +492,7 @@ ScriptEnginePointer ScriptEngines::loadScript(const QUrl& scriptFilename, bool i return scriptEngine; } - scriptEngine = ScriptEnginePointer(new ScriptEngine(_context, NO_SCRIPT, "about:" + scriptFilename.fileName())); - addScriptEngine(scriptEngine); + scriptEngine = scriptEngineFactory(_context, NO_SCRIPT, "about:" + scriptFilename.fileName()); scriptEngine->setUserLoaded(isUserLoaded); scriptEngine->setQuitWhenFinished(quitWhenFinished); diff --git a/libraries/shared/src/DependencyManager.h b/libraries/shared/src/DependencyManager.h index e6fc7ce96b..8490526533 100644 --- a/libraries/shared/src/DependencyManager.h +++ b/libraries/shared/src/DependencyManager.h @@ -139,7 +139,13 @@ QSharedPointer DependencyManager::set(Args&&... args) { template void DependencyManager::destroy() { static size_t hashCode = manager().getHashCode(); - manager().safeGet(hashCode).clear(); + QSharedPointer& shared = manager().safeGet(hashCode); + QWeakPointer weak = shared; + shared.clear(); + // Check that the dependency was actually destroyed. If it wasn't, it was improperly captured somewhere + if (weak.lock()) { + qWarning() << "DependencyManager::destroy(): Dependency was not properly destroyed!"; + } } template diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index 48e778c063..dfb825411d 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -331,8 +331,7 @@ void OffscreenQmlSurface::onRootCreated() { getSurfaceContext()->setContextProperty("offscreenWindow", QVariant::fromValue(getWindow())); // Connect with the audio client and listen for audio device changes - auto audioIO = DependencyManager::get(); - connect(audioIO.data(), &AudioClient::deviceChanged, this, [&](QAudio::Mode mode, const QAudioDeviceInfo& device) { + connect(DependencyManager::get().data(), &AudioClient::deviceChanged, this, [&](QAudio::Mode mode, const QAudioDeviceInfo& device) { if (mode == QAudio::Mode::AudioOutput) { QMetaObject::invokeMethod(this, "changeAudioOutputDevice", Qt::QueuedConnection, Q_ARG(QString, device.deviceName())); } From 795423beea4b9631ff3734eee9db12671af2754b Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Sat, 7 Jul 2018 17:21:46 -0700 Subject: [PATCH 005/332] WIP. --- tools/auto-tester/CMakeLists.txt | 4 +- tools/auto-tester/src/Test.cpp | 21 +++++ tools/auto-tester/src/Test.h | 3 +- tools/auto-tester/src/TestSuiteCreator.cpp | 105 +++++++++++++++++++++ tools/auto-tester/src/TestSuiteCreator.h | 26 +++++ tools/auto-tester/src/ui/AutoTester.cpp | 4 + tools/auto-tester/src/ui/AutoTester.h | 2 +- tools/auto-tester/src/ui/AutoTester.ui | 27 ++++-- 8 files changed, 181 insertions(+), 11 deletions(-) create mode 100644 tools/auto-tester/src/TestSuiteCreator.cpp create mode 100644 tools/auto-tester/src/TestSuiteCreator.h diff --git a/tools/auto-tester/CMakeLists.txt b/tools/auto-tester/CMakeLists.txt index a2589bb760..1546a35f4c 100644 --- a/tools/auto-tester/CMakeLists.txt +++ b/tools/auto-tester/CMakeLists.txt @@ -5,7 +5,7 @@ project(${TARGET_NAME}) SET (CMAKE_AUTOUIC ON) SET (CMAKE_AUTOMOC ON) -setup_hifi_project (Core Widgets Network) +setup_hifi_project (Core Widgets Network Xml) link_hifi_libraries () # FIX: Qt was built with -reduce-relocations @@ -18,7 +18,7 @@ include_directories (${CMAKE_CURRENT_SOURCE_DIR}) include_directories (${Qt5Core_INCLUDE_DIRS}) include_directories (${Qt5Widgets_INCLUDE_DIRS}) -set (QT_LIBRARIES Qt5::Core Qt5::Widgets) +set (QT_LIBRARIES Qt5::Core Qt5::Widgets QT::Gui Qt5::Xml) if (WIN32) # Do not show Console diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 4f02544c12..8255d845f6 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -18,6 +18,7 @@ #include #include +#include "TestSuiteCreator.h" #include "ui/AutoTester.h" extern AutoTester* autoTester; @@ -821,6 +822,26 @@ void Test::createTestsOutline() { QMessageBox::information(0, "Success", "Test outline file " + testsOutlineFilename + " has been created"); } +void Test::createTestRailTestSuite() { + QString previousSelection = testDirectory; + QString parent = previousSelection.left(previousSelection.lastIndexOf('/')); + if (!parent.isNull() && parent.right(1) != "/") { + parent += "/"; + } + + testDirectory = + QFileDialog::getExistingDirectory(nullptr, "Please select the tests root folder", parent, QFileDialog::ShowDirsOnly); + + // If user cancelled then restore previous selection and return + if (testDirectory == "") { + testDirectory = previousSelection; + return; + } + + TestSuiteCreator testSuiteCreator; + testSuiteCreator.createTestSuite(testDirectory); +} + QStringList Test::createListOfAll_imagesInDirectory(const QString& imageFormat, const QString& pathToImageDirectory) { imageDirectory = QDir(pathToImageDirectory); QStringList nameFilters; diff --git a/tools/auto-tester/src/Test.h b/tools/auto-tester/src/Test.h index 5c6d3e5686..47786664fd 100644 --- a/tools/auto-tester/src/Test.h +++ b/tools/auto-tester/src/Test.h @@ -50,6 +50,7 @@ public: void createMDFile(const QString& topLevelDirectory); void createTestsOutline(); + void createTestRailTestSuite(); bool compareImageLists(bool isInteractiveMode, QProgressBar* progressBar); @@ -64,7 +65,7 @@ public: bool createTestResultsFolderPath(const QString& directory); void zipAndDeleteTestResultsFolder(); - bool isAValidDirectory(const QString& pathname); + static bool isAValidDirectory(const QString& pathname); QString extractPathFromTestsDown(const QString& fullPath); QString getExpectedImageDestinationDirectory(const QString& filename); QString getExpectedImagePartialSourceDirectory(const QString& filename); diff --git a/tools/auto-tester/src/TestSuiteCreator.cpp b/tools/auto-tester/src/TestSuiteCreator.cpp new file mode 100644 index 0000000000..0e3d9d52bd --- /dev/null +++ b/tools/auto-tester/src/TestSuiteCreator.cpp @@ -0,0 +1,105 @@ +// +// TestSuiteCreator.cpp +// +// Created by Nissim Hadar on 6 Jul 2018. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "TestSuiteCreator.h" +#include "Test.h" + +#include +#include +#include +#include + +void TestSuiteCreator::createTestSuite(const QString& testDirectory) { + QDomProcessingInstruction instruction = document.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); + document.appendChild(instruction); + + // root element + QDomElement root = document.createElement("suite"); + document.appendChild(root); + + // id (empty seems to be OK) + QDomElement idElement = document.createElement("id"); + root.appendChild(idElement); + + // name - our tests are in "Rendering" + QDomElement nameElement = document.createElement("name"); + QDomText nameElementText = document.createTextNode("Rendering"); + nameElement.appendChild(nameElementText); + root.appendChild(nameElement); + + // We create a single section, within sections + QDomElement topLevelSections = document.createElement("sections"); + + QDomElement topLevelSection = document.createElement("section"); + + QDomElement suiteName = document.createElement("name"); + QDomText suiteNameElementElementText = document.createTextNode("Test Suite - " + QDateTime::currentDateTime().toString()); + suiteName.appendChild(suiteNameElementElementText); + topLevelSection.appendChild(suiteName); + + QDomElement secondLevelSections = document.createElement("sections"); + QDomElement tests = processDirectory(testDirectory, secondLevelSections); + topLevelSection.appendChild(tests); + + + topLevelSection.appendChild(secondLevelSections); + topLevelSections.appendChild(topLevelSection); + + root.appendChild(topLevelSections); + + // Write to file + const QString testRailsFilename{ "D:/t/TestRailSuite.xml" }; + QFile file(testRailsFilename); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Could not create XML file"); + exit(-1); + } + + QTextStream stream(&file); + stream << document.toString(); + + file.close(); + + QMessageBox::information(0, "Success", "TestRail XML file has been created"); +} + +QDomElement TestSuiteCreator::processDirectory(const QString& directory, const QDomElement& element) { + QDomElement result = element; + + // Loop over all entries in directory + QDirIterator it(directory.toStdString().c_str()); + while (it.hasNext()) { + QString directory = it.next(); + + // Only process directories + QDir dir; + if (Test::isAValidDirectory(directory)) { + // Ignore the utils directory + if (directory.right(5) == "utils") { + continue; + } + + // Create a section and process it + // The directory name appears after the last slash (we are assured there is at least 1). + QString directoryName = directory.right(directory.length() - directory.lastIndexOf("/") - 1); + + QDomElement sectionElement = document.createElement("section"); + + QDomElement sectionElementName = document.createElement("name"); + QDomText sectionElementNameText = document.createTextNode(directoryName); + sectionElementName.appendChild(sectionElementNameText); + sectionElement.appendChild(sectionElementName); + + result.appendChild(sectionElement); + } + } + + return result; +} \ No newline at end of file diff --git a/tools/auto-tester/src/TestSuiteCreator.h b/tools/auto-tester/src/TestSuiteCreator.h new file mode 100644 index 0000000000..3ecf046497 --- /dev/null +++ b/tools/auto-tester/src/TestSuiteCreator.h @@ -0,0 +1,26 @@ +// +// TestSuiteCreator.h +// +// Created by Nissim Hadar on 6 Jul 2018. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_test_suite_creator_h +#define hifi_test_suite_creator_h + +#include +#include +#include + +class TestSuiteCreator { +public: + void createTestSuite(const QString& testDirectory); + QDomElement processDirectory(const QString& directory, const QDomElement& element); +private: + QDomDocument document; +}; + +#endif // hifi_test_suite_creator_h \ No newline at end of file diff --git a/tools/auto-tester/src/ui/AutoTester.cpp b/tools/auto-tester/src/ui/AutoTester.cpp index 079fa63a9d..76ae6c5385 100644 --- a/tools/auto-tester/src/ui/AutoTester.cpp +++ b/tools/auto-tester/src/ui/AutoTester.cpp @@ -68,6 +68,10 @@ void AutoTester::on_createTestsOutlineButton_clicked() { test->createTestsOutline(); } +void AutoTester::on_createTestRailTestSuiteButton_clicked() { + test->createTestRailTestSuite(); +} + // To toggle between show and hide // if (uState & ABS_AUTOHIDE) on_showTaskbarButton_clicked(); // else on_hideTaskbarButton_clicked(); diff --git a/tools/auto-tester/src/ui/AutoTester.h b/tools/auto-tester/src/ui/AutoTester.h index d47c4929c4..76b4741d9a 100644 --- a/tools/auto-tester/src/ui/AutoTester.h +++ b/tools/auto-tester/src/ui/AutoTester.h @@ -45,7 +45,7 @@ private slots: void on_createMDFileButton_clicked(); void on_createAllMDFilesButton_clicked(); void on_createTestsOutlineButton_clicked(); - + void on_createTestRailTestSuiteButton_clicked(); void on_hideTaskbarButton_clicked(); void on_showTaskbarButton_clicked(); diff --git a/tools/auto-tester/src/ui/AutoTester.ui b/tools/auto-tester/src/ui/AutoTester.ui index e12fc70e3f..ddc095ba23 100644 --- a/tools/auto-tester/src/ui/AutoTester.ui +++ b/tools/auto-tester/src/ui/AutoTester.ui @@ -7,7 +7,7 @@ 0 0 612 - 537 + 553 @@ -18,7 +18,7 @@ 380 - 430 + 450 101 40 @@ -44,7 +44,7 @@ 430 - 270 + 320 101 40 @@ -57,7 +57,7 @@ 330 - 110 + 170 220 40 @@ -70,7 +70,7 @@ 320 - 280 + 330 131 20 @@ -86,7 +86,7 @@ 320 - 330 + 380 255 23 @@ -99,7 +99,7 @@ 330 - 170 + 230 220 40 @@ -229,6 +229,19 @@ + + + + 330 + 90 + 220 + 40 + + + + Create TestRail Test Suite + + From 95a2d586c6e654667fe9c4cfdd1bb6c6d43efd8b Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Sat, 7 Jul 2018 21:05:22 -0700 Subject: [PATCH 006/332] WIP. --- tools/auto-tester/src/TestSuiteCreator.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tools/auto-tester/src/TestSuiteCreator.cpp b/tools/auto-tester/src/TestSuiteCreator.cpp index 0e3d9d52bd..d1dc0ce281 100644 --- a/tools/auto-tester/src/TestSuiteCreator.cpp +++ b/tools/auto-tester/src/TestSuiteCreator.cpp @@ -25,8 +25,7 @@ void TestSuiteCreator::createTestSuite(const QString& testDirectory) { document.appendChild(root); // id (empty seems to be OK) - QDomElement idElement = document.createElement("id"); - root.appendChild(idElement); + root.appendChild(document.createElement("id")); // name - our tests are in "Rendering" QDomElement nameElement = document.createElement("name"); @@ -45,9 +44,7 @@ void TestSuiteCreator::createTestSuite(const QString& testDirectory) { topLevelSection.appendChild(suiteName); QDomElement secondLevelSections = document.createElement("sections"); - QDomElement tests = processDirectory(testDirectory, secondLevelSections); - topLevelSection.appendChild(tests); - + topLevelSection.appendChild(processDirectory(testDirectory, secondLevelSections)); topLevelSection.appendChild(secondLevelSections); topLevelSections.appendChild(topLevelSection); @@ -79,7 +76,6 @@ QDomElement TestSuiteCreator::processDirectory(const QString& directory, const Q QString directory = it.next(); // Only process directories - QDir dir; if (Test::isAValidDirectory(directory)) { // Ignore the utils directory if (directory.right(5) == "utils") { @@ -97,6 +93,9 @@ QDomElement TestSuiteCreator::processDirectory(const QString& directory, const Q sectionElementName.appendChild(sectionElementNameText); sectionElement.appendChild(sectionElementName); + QDomElement testsElement = document.createElement("sections"); + sectionElement.appendChild(processDirectory(directory, testsElement)); + result.appendChild(sectionElement); } } From a6dbeb3db7151ed43cec3ae4304ac90309a9b9c7 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Mon, 9 Jul 2018 12:06:20 -0700 Subject: [PATCH 007/332] WIP. --- tools/auto-tester/src/TestSuiteCreator.cpp | 155 +++++++++++++++++---- tools/auto-tester/src/TestSuiteCreator.h | 2 + 2 files changed, 129 insertions(+), 28 deletions(-) diff --git a/tools/auto-tester/src/TestSuiteCreator.cpp b/tools/auto-tester/src/TestSuiteCreator.cpp index d1dc0ce281..7abe214d1c 100644 --- a/tools/auto-tester/src/TestSuiteCreator.cpp +++ b/tools/auto-tester/src/TestSuiteCreator.cpp @@ -20,36 +20,21 @@ void TestSuiteCreator::createTestSuite(const QString& testDirectory) { QDomProcessingInstruction instruction = document.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); document.appendChild(instruction); - // root element - QDomElement root = document.createElement("suite"); + // We create a single section, within sections + QDomElement root = document.createElement("sections"); document.appendChild(root); - // id (empty seems to be OK) - root.appendChild(document.createElement("id")); - - // name - our tests are in "Rendering" - QDomElement nameElement = document.createElement("name"); - QDomText nameElementText = document.createTextNode("Rendering"); - nameElement.appendChild(nameElementText); - root.appendChild(nameElement); - - // We create a single section, within sections - QDomElement topLevelSections = document.createElement("sections"); - QDomElement topLevelSection = document.createElement("section"); QDomElement suiteName = document.createElement("name"); - QDomText suiteNameElementElementText = document.createTextNode("Test Suite - " + QDateTime::currentDateTime().toString()); - suiteName.appendChild(suiteNameElementElementText); + suiteName.appendChild(document.createTextNode("Test Suite - " + QDateTime::currentDateTime().toString())); topLevelSection.appendChild(suiteName); QDomElement secondLevelSections = document.createElement("sections"); topLevelSection.appendChild(processDirectory(testDirectory, secondLevelSections)); topLevelSection.appendChild(secondLevelSections); - topLevelSections.appendChild(topLevelSection); - - root.appendChild(topLevelSections); + root.appendChild(topLevelSection); // Write to file const QString testRailsFilename{ "D:/t/TestRailSuite.xml" }; @@ -73,32 +58,146 @@ QDomElement TestSuiteCreator::processDirectory(const QString& directory, const Q // Loop over all entries in directory QDirIterator it(directory.toStdString().c_str()); while (it.hasNext()) { - QString directory = it.next(); + QString nextDirectory = it.next(); + + // The object name appears after the last slash (we are assured there is at least 1). + QString objectName = nextDirectory.right(nextDirectory.length() - nextDirectory.lastIndexOf("/") - 1); // Only process directories - if (Test::isAValidDirectory(directory)) { - // Ignore the utils directory - if (directory.right(5) == "utils") { + if (Test::isAValidDirectory(nextDirectory)) { + // Ignore the utils and preformance directories + if (nextDirectory.right(QString("utils").length()) == "utils" || nextDirectory.right(QString("performance").length()) == "performance") { continue; } // Create a section and process it - // The directory name appears after the last slash (we are assured there is at least 1). - QString directoryName = directory.right(directory.length() - directory.lastIndexOf("/") - 1); QDomElement sectionElement = document.createElement("section"); QDomElement sectionElementName = document.createElement("name"); - QDomText sectionElementNameText = document.createTextNode(directoryName); - sectionElementName.appendChild(sectionElementNameText); + sectionElementName.appendChild(document.createTextNode(objectName)); sectionElement.appendChild(sectionElementName); QDomElement testsElement = document.createElement("sections"); - sectionElement.appendChild(processDirectory(directory, testsElement)); + sectionElement.appendChild(processDirectory(nextDirectory, testsElement)); result.appendChild(sectionElement); + } else { + if (objectName == "test.js") { + QDomElement sectionElement = document.createElement("section"); + QDomElement sectionElementName = document.createElement("name"); + sectionElementName.appendChild(document.createTextNode("all")); + sectionElement.appendChild(sectionElementName); + sectionElement.appendChild(processTest(nextDirectory, objectName, document.createElement("cases"))); + result.appendChild(sectionElement); + } } } + return result; +} + +QDomElement TestSuiteCreator::processTest(const QString& fullDirectory, const QString& test, const QDomElement& element) { + QDomElement result = element; + + QDomElement caseElement = document.createElement("case"); + + caseElement.appendChild(document.createElement("id")); + + // The name of the test is derived from the full path. + // The first term is the first word after "tests" + // The last word is the penultimate word + QStringList words = fullDirectory.split('/'); + int i = 0; + while (words[i] != "tests") { + ++i; + if (i >= words.length() - 1) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Folder \"tests\" not found in " + fullDirectory); + exit(-1); + } + } + + ++i; + QString title{ words[i] }; + for (++i; i < words.length() - 1; ++i) { + title += " / " + words[i]; + } + + QDomElement titleElement = document.createElement("title"); + titleElement.appendChild(document.createTextNode(title)); + caseElement.appendChild(titleElement); + + QDomElement templateElement = document.createElement("template"); + templateElement.appendChild(document.createTextNode("Test Case (Steps)")); + caseElement.appendChild(templateElement); + + QDomElement typeElement = document.createElement("type"); + typeElement.appendChild(document.createTextNode("3 - Regression")); + caseElement.appendChild(typeElement); + + QDomElement priorityElement = document.createElement("priority"); + priorityElement.appendChild(document.createTextNode("Medium")); + caseElement.appendChild(priorityElement); + + QDomElement estimateElementName = document.createElement("estimate"); + estimateElementName.appendChild(document.createTextNode("60")); + caseElement.appendChild(estimateElementName); + + caseElement.appendChild(document.createElement("references")); + + QDomElement customElement = document.createElement("custom"); + + QDomElement tester_countElement = document.createElement("tester_count"); + tester_countElement.appendChild(document.createTextNode("1")); + customElement.appendChild(tester_countElement); + + QDomElement domain_bot_loadElement = document.createElement("domain_bot_load"); + domain_bot_loadElement.appendChild(document.createElement("id")); + QDomElement domain_bot_loadElementValue = document.createElement("value"); + domain_bot_loadElementValue.appendChild(document.createTextNode(" With Bots (hifiqa-rc-bots / hifi-qa-stable-bots / hifiqa-master-bots)")); + domain_bot_loadElement.appendChild(domain_bot_loadElementValue); + customElement.appendChild(domain_bot_loadElement); + + QDomElement automation_typeElement = document.createElement("automation_type"); + automation_typeElement.appendChild(document.createElement("id")); + QDomElement automation_typeElementValue = document.createElement("value"); + automation_typeElementValue.appendChild(document.createTextNode("None")); + automation_typeElement.appendChild(automation_typeElementValue); + customElement.appendChild(automation_typeElement); + + QDomElement added_to_releaseElement = document.createElement("added_to_release"); + QDomElement added_to_releaseElementId = document.createElement("id"); + added_to_releaseElement.appendChild(document.createElement("id")); + QDomElement added_to_releaseElementValue = document.createElement("value"); + added_to_releaseElementValue.appendChild(document.createTextNode("RC68")); + added_to_releaseElement.appendChild(added_to_releaseElementValue); + customElement.appendChild(added_to_releaseElement); + + QDomElement precondsElement = document.createElement("preconds"); + precondsElement.appendChild(document.createTextNode("Tester is in an empty region of a domain in which they have edit rights\n\n*Note: Press 'n' to advance test script")); + customElement.appendChild(precondsElement); + + QDomElement steps_seperatedElement = document.createElement("steps_separated"); + QDomElement stepElement = document.createElement("step"); + QDomElement stepIndexElement = document.createElement("index"); + stepIndexElement.appendChild(document.createTextNode("1")); + stepElement.appendChild(stepIndexElement); + QDomElement stepContentElement = document.createElement("content"); + stepContentElement.appendChild(document.createTextNode("Execute instructions in [THIS TEST](https://github.com/highfidelity/hifi_tests/blob/RC70/tests/content/entity/light/point/create/test.md)")); + stepElement.appendChild(stepContentElement); + QDomElement stepExpectedElement = document.createElement("expected"); + stepExpectedElement.appendChild(document.createTextNode("Refer to the expected result in the linked description.")); + stepElement.appendChild(stepExpectedElement); + steps_seperatedElement.appendChild(stepElement); + customElement.appendChild(steps_seperatedElement); + + QDomElement notesElement = document.createElement("notes"); + notesElement.appendChild(document.createTextNode("https://github.com/highfidelity/hifi_tests/blob/RC70/tests/content/entity/light/point/create/test.md")); + customElement.appendChild(notesElement); + + caseElement.appendChild(customElement); + + result.appendChild(caseElement); + return result; } \ No newline at end of file diff --git a/tools/auto-tester/src/TestSuiteCreator.h b/tools/auto-tester/src/TestSuiteCreator.h index 3ecf046497..c7175dea89 100644 --- a/tools/auto-tester/src/TestSuiteCreator.h +++ b/tools/auto-tester/src/TestSuiteCreator.h @@ -19,6 +19,8 @@ class TestSuiteCreator { public: void createTestSuite(const QString& testDirectory); QDomElement processDirectory(const QString& directory, const QDomElement& element); + QDomElement processTest(const QString& fullDirectory, const QString& test, const QDomElement& element); + private: QDomDocument document; }; From 112ba27f2d4ff7f11f09aa1f1b567b5e680e8422 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Mon, 9 Jul 2018 14:00:08 -0700 Subject: [PATCH 008/332] Added user and branch - not tested yet! --- tools/auto-tester/src/Test.cpp | 2 +- tools/auto-tester/src/TestSuiteCreator.cpp | 32 +++++++++++----------- tools/auto-tester/src/TestSuiteCreator.h | 7 +++-- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 8255d845f6..11e1696bb1 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -839,7 +839,7 @@ void Test::createTestRailTestSuite() { } TestSuiteCreator testSuiteCreator; - testSuiteCreator.createTestSuite(testDirectory); + testSuiteCreator.createTestSuite(testDirectory, autoTester->getSelectedUser(), autoTester->getSelectedBranch()); } QStringList Test::createListOfAll_imagesInDirectory(const QString& imageFormat, const QString& pathToImageDirectory) { diff --git a/tools/auto-tester/src/TestSuiteCreator.cpp b/tools/auto-tester/src/TestSuiteCreator.cpp index 7abe214d1c..0d11a84291 100644 --- a/tools/auto-tester/src/TestSuiteCreator.cpp +++ b/tools/auto-tester/src/TestSuiteCreator.cpp @@ -16,7 +16,7 @@ #include #include -void TestSuiteCreator::createTestSuite(const QString& testDirectory) { +void TestSuiteCreator::createTestSuite(const QString& testDirectory, const QString& user, const QString& branch) { QDomProcessingInstruction instruction = document.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); document.appendChild(instruction); @@ -31,7 +31,7 @@ void TestSuiteCreator::createTestSuite(const QString& testDirectory) { topLevelSection.appendChild(suiteName); QDomElement secondLevelSections = document.createElement("sections"); - topLevelSection.appendChild(processDirectory(testDirectory, secondLevelSections)); + topLevelSection.appendChild(processDirectory(testDirectory, user, branch, secondLevelSections)); topLevelSection.appendChild(secondLevelSections); root.appendChild(topLevelSection); @@ -52,7 +52,7 @@ void TestSuiteCreator::createTestSuite(const QString& testDirectory) { QMessageBox::information(0, "Success", "TestRail XML file has been created"); } -QDomElement TestSuiteCreator::processDirectory(const QString& directory, const QDomElement& element) { +QDomElement TestSuiteCreator::processDirectory(const QString& directory, const QString& user, const QString& branch, const QDomElement& element) { QDomElement result = element; // Loop over all entries in directory @@ -79,25 +79,23 @@ QDomElement TestSuiteCreator::processDirectory(const QString& directory, const Q sectionElement.appendChild(sectionElementName); QDomElement testsElement = document.createElement("sections"); - sectionElement.appendChild(processDirectory(nextDirectory, testsElement)); + sectionElement.appendChild(processDirectory(nextDirectory, user, branch, testsElement)); result.appendChild(sectionElement); - } else { - if (objectName == "test.js") { - QDomElement sectionElement = document.createElement("section"); - QDomElement sectionElementName = document.createElement("name"); - sectionElementName.appendChild(document.createTextNode("all")); - sectionElement.appendChild(sectionElementName); - sectionElement.appendChild(processTest(nextDirectory, objectName, document.createElement("cases"))); - result.appendChild(sectionElement); - } + } else if (objectName == "test.js" || objectName == "testStory.js") { + QDomElement sectionElement = document.createElement("section"); + QDomElement sectionElementName = document.createElement("name"); + sectionElementName.appendChild(document.createTextNode("all")); + sectionElement.appendChild(sectionElementName); + sectionElement.appendChild(processTest(nextDirectory, objectName, user, branch, document.createElement("cases"))); + result.appendChild(sectionElement); } } return result; } -QDomElement TestSuiteCreator::processTest(const QString& fullDirectory, const QString& test, const QDomElement& element) { +QDomElement TestSuiteCreator::processTest(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element) { QDomElement result = element; QDomElement caseElement = document.createElement("case"); @@ -177,13 +175,15 @@ QDomElement TestSuiteCreator::processTest(const QString& fullDirectory, const QS precondsElement.appendChild(document.createTextNode("Tester is in an empty region of a domain in which they have edit rights\n\n*Note: Press 'n' to advance test script")); customElement.appendChild(precondsElement); + QString testMDName = QString("https://github.com/") + user + "/hifi_tests/blob/" + branch + "/tests/content/entity/light/point/create/test.md"; + QDomElement steps_seperatedElement = document.createElement("steps_separated"); QDomElement stepElement = document.createElement("step"); QDomElement stepIndexElement = document.createElement("index"); stepIndexElement.appendChild(document.createTextNode("1")); stepElement.appendChild(stepIndexElement); QDomElement stepContentElement = document.createElement("content"); - stepContentElement.appendChild(document.createTextNode("Execute instructions in [THIS TEST](https://github.com/highfidelity/hifi_tests/blob/RC70/tests/content/entity/light/point/create/test.md)")); + stepContentElement.appendChild(document.createTextNode(QString("Execute instructions in [THIS TEST](") + testMDName + ")")); stepElement.appendChild(stepContentElement); QDomElement stepExpectedElement = document.createElement("expected"); stepExpectedElement.appendChild(document.createTextNode("Refer to the expected result in the linked description.")); @@ -192,7 +192,7 @@ QDomElement TestSuiteCreator::processTest(const QString& fullDirectory, const QS customElement.appendChild(steps_seperatedElement); QDomElement notesElement = document.createElement("notes"); - notesElement.appendChild(document.createTextNode("https://github.com/highfidelity/hifi_tests/blob/RC70/tests/content/entity/light/point/create/test.md")); + notesElement.appendChild(document.createTextNode(testMDName)); customElement.appendChild(notesElement); caseElement.appendChild(customElement); diff --git a/tools/auto-tester/src/TestSuiteCreator.h b/tools/auto-tester/src/TestSuiteCreator.h index c7175dea89..a6ffa762e9 100644 --- a/tools/auto-tester/src/TestSuiteCreator.h +++ b/tools/auto-tester/src/TestSuiteCreator.h @@ -17,9 +17,10 @@ class TestSuiteCreator { public: - void createTestSuite(const QString& testDirectory); - QDomElement processDirectory(const QString& directory, const QDomElement& element); - QDomElement processTest(const QString& fullDirectory, const QString& test, const QDomElement& element); + void createTestSuite(const QString& testDirectory, const QString& user, const QString& branch); + + QDomElement processDirectory(const QString& directory, const QString& user, const QString& branch, const QDomElement& element); + QDomElement processTest(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element); private: QDomDocument document; From f69f0cbd808d0d20f2ea700f8ac8763a47782908 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Mon, 9 Jul 2018 19:59:59 -0700 Subject: [PATCH 009/332] Seems to create a valid test suite. --- tools/auto-tester/src/TestSuiteCreator.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/auto-tester/src/TestSuiteCreator.cpp b/tools/auto-tester/src/TestSuiteCreator.cpp index 0d11a84291..98aa4391a1 100644 --- a/tools/auto-tester/src/TestSuiteCreator.cpp +++ b/tools/auto-tester/src/TestSuiteCreator.cpp @@ -167,7 +167,7 @@ QDomElement TestSuiteCreator::processTest(const QString& fullDirectory, const QS QDomElement added_to_releaseElementId = document.createElement("id"); added_to_releaseElement.appendChild(document.createElement("id")); QDomElement added_to_releaseElementValue = document.createElement("value"); - added_to_releaseElementValue.appendChild(document.createTextNode("RC68")); + added_to_releaseElementValue.appendChild(document.createTextNode(branch)); added_to_releaseElement.appendChild(added_to_releaseElementValue); customElement.appendChild(added_to_releaseElement); From d2699e8e5b7cf9d2ef25650266f0c6ca46a05f0e Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Thu, 5 Jul 2018 15:44:05 -0700 Subject: [PATCH 010/332] some more attempted cleanup --- interface/src/Application.cpp | 2 ++ interface/src/ui/JSConsole.cpp | 2 +- libraries/script-engine/src/ScriptEngines.cpp | 6 +++--- libraries/shared/src/DependencyManager.h | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index bc881e592b..bbfcee53b9 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2474,6 +2474,8 @@ void Application::cleanupBeforeQuit() { DependencyManager::destroy(); } + // FIXME: Something is still holding on to the ScriptEnginePointers contained in ScriptEngines, and they hold backpointers to ScriptEngines, + // so this doesn't shut down properly DependencyManager::get()->shutdownScripting(); // stop all currently running global scripts DependencyManager::destroy(); diff --git a/interface/src/ui/JSConsole.cpp b/interface/src/ui/JSConsole.cpp index 1ca1ac2842..ed4ee97780 100644 --- a/interface/src/ui/JSConsole.cpp +++ b/interface/src/ui/JSConsole.cpp @@ -312,7 +312,7 @@ JSConsole::~JSConsole() { delete _ui; } -void JSConsole::setScriptEngine(const ScriptEnginePointer& scriptEngine) { +void JSConsole::setScriptEngine(const ScriptEnginePointer& scriptEngine) { if (_scriptEngine == scriptEngine && scriptEngine != nullptr) { return; } diff --git a/libraries/script-engine/src/ScriptEngines.cpp b/libraries/script-engine/src/ScriptEngines.cpp index b2815ff2b4..6393ff33ea 100644 --- a/libraries/script-engine/src/ScriptEngines.cpp +++ b/libraries/script-engine/src/ScriptEngines.cpp @@ -133,7 +133,7 @@ QUrl expandScriptUrl(const QUrl& rawScriptURL) { QObject* scriptsModel(); bool NativeScriptInitializers::registerNativeScriptInitializer(NativeScriptInitializer initializer) { - return registerScriptInitializer([=](ScriptEnginePointer engine) { + return registerScriptInitializer([initializer](ScriptEnginePointer engine) { initializer(qobject_cast(engine.data())); }); } @@ -563,10 +563,10 @@ int ScriptEngines::runScriptInitializers(ScriptEnginePointer scriptEngine) { void ScriptEngines::launchScriptEngine(ScriptEnginePointer scriptEngine) { connect(scriptEngine.data(), &ScriptEngine::finished, this, &ScriptEngines::onScriptFinished, Qt::DirectConnection); - connect(scriptEngine.data(), &ScriptEngine::loadScript, [&](const QString& scriptName, bool userLoaded) { + connect(scriptEngine.data(), &ScriptEngine::loadScript, [this](const QString& scriptName, bool userLoaded) { loadScript(scriptName, userLoaded); }); - connect(scriptEngine.data(), &ScriptEngine::reloadScript, [&](const QString& scriptName, bool userLoaded) { + connect(scriptEngine.data(), &ScriptEngine::reloadScript, [this](const QString& scriptName, bool userLoaded) { loadScript(scriptName, userLoaded, false, false, true); }); diff --git a/libraries/shared/src/DependencyManager.h b/libraries/shared/src/DependencyManager.h index 8490526533..da877f7b3b 100644 --- a/libraries/shared/src/DependencyManager.h +++ b/libraries/shared/src/DependencyManager.h @@ -144,7 +144,7 @@ void DependencyManager::destroy() { shared.clear(); // Check that the dependency was actually destroyed. If it wasn't, it was improperly captured somewhere if (weak.lock()) { - qWarning() << "DependencyManager::destroy(): Dependency was not properly destroyed!"; + qWarning() << "DependencyManager::destroy():" << typeid(T).name() << "was not properly destroyed!"; } } From cb0f9639ba6e9251173c42e7183c7c7fe5860828 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Wed, 11 Jul 2018 09:08:43 -0700 Subject: [PATCH 011/332] Added IDs where needed. --- tools/auto-tester/src/TestSuiteCreator.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tools/auto-tester/src/TestSuiteCreator.cpp b/tools/auto-tester/src/TestSuiteCreator.cpp index 98aa4391a1..627012deec 100644 --- a/tools/auto-tester/src/TestSuiteCreator.cpp +++ b/tools/auto-tester/src/TestSuiteCreator.cpp @@ -150,14 +150,18 @@ QDomElement TestSuiteCreator::processTest(const QString& fullDirectory, const QS customElement.appendChild(tester_countElement); QDomElement domain_bot_loadElement = document.createElement("domain_bot_load"); - domain_bot_loadElement.appendChild(document.createElement("id")); + QDomElement domain_bot_loadElementId = document.createElement("id"); + domain_bot_loadElementId.appendChild(document.createTextNode("1")); + domain_bot_loadElement.appendChild(domain_bot_loadElementId); QDomElement domain_bot_loadElementValue = document.createElement("value"); - domain_bot_loadElementValue.appendChild(document.createTextNode(" With Bots (hifiqa-rc-bots / hifi-qa-stable-bots / hifiqa-master-bots)")); + domain_bot_loadElementValue.appendChild(document.createTextNode(" Without Bots (hifiqa-rc / hifi-qa-stable / hifiqa-master)")); domain_bot_loadElement.appendChild(domain_bot_loadElementValue); customElement.appendChild(domain_bot_loadElement); QDomElement automation_typeElement = document.createElement("automation_type"); - automation_typeElement.appendChild(document.createElement("id")); + QDomElement automation_typeElementId = document.createElement("id"); + automation_typeElementId.appendChild(document.createTextNode("0")); + automation_typeElement.appendChild(automation_typeElementId); QDomElement automation_typeElementValue = document.createElement("value"); automation_typeElementValue.appendChild(document.createTextNode("None")); automation_typeElement.appendChild(automation_typeElementValue); @@ -165,7 +169,8 @@ QDomElement TestSuiteCreator::processTest(const QString& fullDirectory, const QS QDomElement added_to_releaseElement = document.createElement("added_to_release"); QDomElement added_to_releaseElementId = document.createElement("id"); - added_to_releaseElement.appendChild(document.createElement("id")); + added_to_releaseElementId.appendChild(document.createTextNode("4")); + added_to_releaseElement.appendChild(added_to_releaseElementId); QDomElement added_to_releaseElementValue = document.createElement("value"); added_to_releaseElementValue.appendChild(document.createTextNode(branch)); added_to_releaseElement.appendChild(added_to_releaseElementValue); From 806228299e20838bca9ffab77abd303c6f025921 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 15 Jul 2018 10:31:48 +1200 Subject: [PATCH 012/332] Stub out Audio JSDoc --- interface/src/scripting/Audio.h | 54 ++++++++++------- libraries/audio/src/AudioEffectOptions.cpp | 43 +++++++------- libraries/audio/src/AudioEffectOptions.h | 47 ++++++++------- libraries/audio/src/AudioInjectorOptions.cpp | 12 ++++ libraries/audio/src/Sound.h | 8 ++- .../src/AudioScriptingInterface.h | 45 +++++++------- .../script-engine/src/ScriptAudioInjector.h | 58 +++++++++++++++++++ 7 files changed, 182 insertions(+), 85 deletions(-) diff --git a/interface/src/scripting/Audio.h b/interface/src/scripting/Audio.h index 8d16b06995..f7dd252c54 100644 --- a/interface/src/scripting/Audio.h +++ b/interface/src/scripting/Audio.h @@ -26,7 +26,7 @@ class Audio : public AudioScriptingInterface, protected ReadWriteLockable { SINGLETON_DEPENDENCY /**jsdoc - * The Audio API features tools to help control audio contexts and settings. + * The Audio API ... TODO * * @namespace Audio * @@ -35,12 +35,13 @@ class Audio : public AudioScriptingInterface, protected ReadWriteLockable { * @hifi-server-entity * @hifi-assignment-client * - * @property {boolean} muted - * @property {boolean} noiseReduction - * @property {number} inputVolume - * @property {number} inputLevel Read-only. - * @property {string} context Read-only. - * @property {} devices Read-only. + * @property {boolean} muted - true if TODO, otherwise false. + * @property {boolean} noiseReduction - true if TODO, otherwise false. + * @property {number} inputVolume - TODO + * @property {number} inputLevel - TODO Read-only. + * @property {string} context - TODO Read-only. + * @property {object} devices Read-only. Deprecated: This property is deprecated and will be + * removed. */ Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) @@ -69,87 +70,100 @@ public: /**jsdoc * @function Audio.setInputDevice - * @param {} device + * @param {object} device * @param {boolean} isHMD + * @deprecated This function is deprecated and will be removed. */ Q_INVOKABLE void setInputDevice(const QAudioDeviceInfo& device, bool isHMD); /**jsdoc * @function Audio.setOutputDevice - * @param {} device + * @param {object} device * @param {boolean} isHMD + * @deprecated This function is deprecated and will be removed. */ Q_INVOKABLE void setOutputDevice(const QAudioDeviceInfo& device, bool isHMD); /**jsdoc + * TODO * @function Audio.setReverb - * @param {boolean} enable + * @param {boolean} enable - TODO */ Q_INVOKABLE void setReverb(bool enable); /**jsdoc + * TODO * @function Audio.setReverbOptions - * @param {AudioEffectOptions} options + * @param {AudioEffectOptions} options - TODO */ Q_INVOKABLE void setReverbOptions(const AudioEffectOptions* options); /**jsdoc + * TODO * @function Audio.startRecording - * @param {string} filename - * @returns {boolean} + * @param {string} filename - TODO + * @returns {boolean} true if TODO, otherwise false. */ Q_INVOKABLE bool startRecording(const QString& filename); /**jsdoc + * TODO * @function Audio.stopRecording */ Q_INVOKABLE void stopRecording(); /**jsdoc + * TODO * @function Audio.getRecording - * @returns {boolean} + * @returns {boolean} true if TODO, otherwise false. */ Q_INVOKABLE bool getRecording(); signals: /**jsdoc + * Triggered when ... TODO * @function Audio.nop * @returns {Signal} */ void nop(); /**jsdoc + * Triggered when ... TODO * @function Audio.mutedChanged - * @param {boolean} isMuted + * @param {boolean} isMuted - TODO * @returns {Signal} */ void mutedChanged(bool isMuted); /**jsdoc + * Triggered when ... TODO * @function Audio.noiseReductionChanged - * @param {boolean} isEnabled + * @param {boolean} isEnabled - TODO * @returns {Signal} */ void noiseReductionChanged(bool isEnabled); /**jsdoc + * Triggered when ... TODO * @function Audio.inputVolumeChanged - * @param {number} volume + * @param {number} volume - TODO * @returns {Signal} */ void inputVolumeChanged(float volume); /**jsdoc + * Triggered when ... TODO * @function Audio.inputLevelChanged - * @param {number} level + * @param {number} level - TODO * @returns {Signal} */ void inputLevelChanged(float level); /**jsdoc + * Triggered when ... TODO * @function Audio.contextChanged - * @param {string} context + * @param {string} context - TODO * @returns {Signal} */ void contextChanged(const QString& context); @@ -158,7 +172,7 @@ public slots: /**jsdoc * @function Audio.onContextChanged - * @returns {Signal} + * @deprecated This function is deprecated and will be removed. */ void onContextChanged(); diff --git a/libraries/audio/src/AudioEffectOptions.cpp b/libraries/audio/src/AudioEffectOptions.cpp index edb0ff52ae..3ed1296b63 100644 --- a/libraries/audio/src/AudioEffectOptions.cpp +++ b/libraries/audio/src/AudioEffectOptions.cpp @@ -59,28 +59,29 @@ static void setOption(QScriptValue arguments, const QString name, float defaultV } /**jsdoc + * TODO * @typedef {object} AudioEffectOptions.ReverbOptions - * @property {number} bandwidth - * @property {number} preDelay - * @property {number} lateDelay - * @property {number} reverbTime - * @property {number} earlyDiffusion - * @property {number} lateDiffusion - * @property {number} roomSize - * @property {number} density - * @property {number} bassMult - * @property {number} bassFreq - * @property {number} highGain - * @property {number} highFreq - * @property {number} modRate - * @property {number} modDepth - * @property {number} earlyGain - * @property {number} lateGain - * @property {number} earlyMixLeft - * @property {number} earlyMixRight - * @property {number} lateMixLeft - * @property {number} lateMixRight - * @property {number} wetDryMix + * @property {number} bandwidth - TODO + * @property {number} preDelay - TODO + * @property {number} lateDelay - TODO + * @property {number} reverbTime - TODO + * @property {number} earlyDiffusion - TODO + * @property {number} lateDiffusion - TODO + * @property {number} roomSize - TODO + * @property {number} density - TODO + * @property {number} bassMult - TODO + * @property {number} bassFreq - TODO + * @property {number} highGain - TODO + * @property {number} highFreq - TODO + * @property {number} modRate - TODO + * @property {number} modDepth - TODO + * @property {number} earlyGain - TODO + * @property {number} lateGain - TODO + * @property {number} earlyMixLeft - TODO + * @property {number} earlyMixRight - TODO + * @property {number} lateMixLeft - TODO + * @property {number} lateMixRight - TODO + * @property {number} wetDryMix - TODO */ AudioEffectOptions::AudioEffectOptions(QScriptValue arguments) { setOption(arguments, BANDWIDTH_HANDLE, BANDWIDTH_DEFAULT, _bandwidth); diff --git a/libraries/audio/src/AudioEffectOptions.h b/libraries/audio/src/AudioEffectOptions.h index 1afd4e21be..0e2e017d49 100644 --- a/libraries/audio/src/AudioEffectOptions.h +++ b/libraries/audio/src/AudioEffectOptions.h @@ -16,35 +16,38 @@ #include /**jsdoc + * TODO + * Used in the {@link Audio} API. + * * @class AudioEffectOptions - * @param {AudioEffectOptions.ReverbOptions} [reverbOptions=null] + * @param {AudioEffectOptions.ReverbOptions} [reverbOptions=null] - TODO * * @hifi-interface * @hifi-client-entity * @hifi-server-entity * @hifi-assignment-client * - * @property {number} bandwidth=10000 - * @property {number} preDelay=20 - * @property {number} lateDelay=0 - * @property {number} reverbTime=2 - * @property {number} earlyDiffusion=100 - * @property {number} lateDiffusion=100 - * @property {number} roomSize=50 - * @property {number} density=100 - * @property {number} bassMult=1.5 - * @property {number} bassFreq=250 - * @property {number} highGain=-6 - * @property {number} highFreq=3000 - * @property {number} modRate=2.3 - * @property {number} modDepth=50 - * @property {number} earlyGain=0 - * @property {number} lateGain=0 - * @property {number} earlyMixLeft=20 - * @property {number} earlyMixRight=20 - * @property {number} lateMixLeft=90 - * @property {number} lateMixRight=90 - * @property {number} wetDryMix=50 + * @property {number} bandwidth=10000 - TODO + * @property {number} preDelay=20 - TODO + * @property {number} lateDelay=0 - TODO + * @property {number} reverbTime=2 - TODO + * @property {number} earlyDiffusion=100 - TODO + * @property {number} lateDiffusion=100 - TODO + * @property {number} roomSize=50 - TODO + * @property {number} density=100 - TODO + * @property {number} bassMult=1.5 - TODO + * @property {number} bassFreq=250 - TODO + * @property {number} highGain=-6 - TODO + * @property {number} highFreq=3000 - TODO + * @property {number} modRate=2.3 - TODO + * @property {number} modDepth=50 - TODO + * @property {number} earlyGain=0 - TODO + * @property {number} lateGain=0 - TODO + * @property {number} earlyMixLeft=20 - TODO + * @property {number} earlyMixRight=20 - TODO + * @property {number} lateMixLeft=90 - TODO + * @property {number} lateMixRight=90 - TODO + * @property {number} wetDryMix=50 - TODO */ class AudioEffectOptions : public QObject { diff --git a/libraries/audio/src/AudioInjectorOptions.cpp b/libraries/audio/src/AudioInjectorOptions.cpp index 2f82cae137..8691432bcd 100644 --- a/libraries/audio/src/AudioInjectorOptions.cpp +++ b/libraries/audio/src/AudioInjectorOptions.cpp @@ -45,6 +45,18 @@ QScriptValue injectorOptionsToScriptValue(QScriptEngine* engine, const AudioInje return obj; } +/**jsdoc + * TODO + * @typedef {object} AudioInjector.AudioInjectorOptions + * @property {Vec3} position=Vec3.ZERO - TODO + * @property {Quat} orientation=Quat.IDENTITY - TODO + * @property {number} volume=1 - TODO + * @property {boolean} loop=false - true if TODO, otherwise false. + * @property {boolean} ignorePenumbra=false - true if TODO, otherwise false. + * @property {boolean} localOnly=false - true if TODO, otherwise false. + * @property {number} secondOffset=0 - TODO + * @property {number} pitch=1 - TODO + */ void injectorOptionsFromScriptValue(const QScriptValue& object, AudioInjectorOptions& injectorOptions) { if (!object.isObject()) { qWarning() << "Audio injector options is not an object."; diff --git a/libraries/audio/src/Sound.h b/libraries/audio/src/Sound.h index 061c4a2417..0edcb59cca 100644 --- a/libraries/audio/src/Sound.h +++ b/libraries/audio/src/Sound.h @@ -79,6 +79,9 @@ private: typedef QSharedPointer SharedSoundPointer; /**jsdoc + * TODO + * Created by {@link SoundCache.getSound}. + * * @class SoundObject * * @hifi-interface @@ -86,8 +89,8 @@ typedef QSharedPointer SharedSoundPointer; * @hifi-server-entity * @hifi-assignment-client * - * @property {boolean} downloaded - * @property {number} duration + * @property {boolean} downloaded - true if TODO, otherwise false. + * @property {number} duration - TODO */ class SoundScriptingInterface : public QObject { Q_OBJECT @@ -103,6 +106,7 @@ public: float getDuration() { return _sound->getDuration(); } /**jsdoc + * Triggered when TODO * @function SoundObject.ready * @returns {Signal} */ diff --git a/libraries/script-engine/src/AudioScriptingInterface.h b/libraries/script-engine/src/AudioScriptingInterface.h index 20ca977da1..6b87b0ee67 100644 --- a/libraries/script-engine/src/AudioScriptingInterface.h +++ b/libraries/script-engine/src/AudioScriptingInterface.h @@ -35,91 +35,96 @@ protected: // these methods are protected to stop C++ callers from calling, but invokable from script /**jsdoc + * TODO * @function Audio.playSound - * @param {} sound - * @param {} [injectorOptions=null] - * @returns {object} + * @param {SoundObject} sound - TODO + * @param {AudioInjector.AudioInjectorOptions} [injectorOptions={}] - TODO + * @returns {AudioInjector} TODO */ Q_INVOKABLE ScriptAudioInjector* playSound(SharedSoundPointer sound, const AudioInjectorOptions& injectorOptions = AudioInjectorOptions()); /**jsdoc + * TODO * @function Audio.playSystemSound - * @param {} sound - * @param {} position - * @returns {object} + * @param {SoundObject} sound - TODO + * @param {Vec3} position - TODO + * @returns {AudioInjector} TODO */ // FIXME: there is no way to play a positionless sound Q_INVOKABLE ScriptAudioInjector* playSystemSound(SharedSoundPointer sound, const QVector3D& position); /**jsdoc + * TODO * @function Audio.setStereoInput - * @param {boolean} stereo + * @param {boolean} stereo - TODO */ Q_INVOKABLE void setStereoInput(bool stereo); /**jsdoc + * TODO * @function Audio.isStereoInput - * @returns {boolean} + * @returns {boolean} true if TODO, otherwise false. */ Q_INVOKABLE bool isStereoInput(); signals: /**jsdoc - * The client has been muted by the mixer. + * Triggered when the client is muted by the mixer. * @function Audio.mutedByMixer * @returns {Signal} */ void mutedByMixer(); /**jsdoc - * The entire environment has been muted by the mixer. + * Triggered when the entire environment is muted by the mixer. TODO: What is the "whole environment"? * @function Audio.environmentMuted * @returns {Signal} */ void environmentMuted(); /**jsdoc - * The client has received its first packet from the audio mixer. + * Triggered when the client receives its first packet from the audio mixer. * @function Audio.receivedFirstPacket * @returns {Signal} */ void receivedFirstPacket(); /**jsdoc - * The client has been disconnected from the audio mixer. + * Triggered when the client is disconnected from the audio mixer. * @function Audio.disconnected * @returns {Signal} */ void disconnected(); /**jsdoc - * The noise gate has opened. + * Triggered when the noise gate is opened. TODO: Description of noise gate. * @function Audio.noiseGateOpened * @returns {Signal} */ void noiseGateOpened(); /**jsdoc - * The noise gate has closed. + * Triggered when the noise gate is closed. TODO: Description of noise gate. * @function Audio.noiseGateClosed * @returns {Signal} */ void noiseGateClosed(); /**jsdoc - * A frame of mic input audio has been received and processed. + * Triggered when a frame of microphone audio input is processed. * @function Audio.inputReceived - * @param {} inputSamples + * @param {Int16Array} inputSamples - TODO * @returns {Signal} */ void inputReceived(const QByteArray& inputSamples); /**jsdoc - * @function Audio.isStereoInputChanged - * @param {boolean} isStereo - * @returns {Signal} - */ + * TODO + * @function Audio.isStereoInputChanged + * @param {boolean} isStereo - TODO + * @returns {Signal} + */ void isStereoInputChanged(bool isStereo); private: diff --git a/libraries/script-engine/src/ScriptAudioInjector.h b/libraries/script-engine/src/ScriptAudioInjector.h index 4c2871dd34..5d66461160 100644 --- a/libraries/script-engine/src/ScriptAudioInjector.h +++ b/libraries/script-engine/src/ScriptAudioInjector.h @@ -16,6 +16,21 @@ #include +/**jsdoc + * TODO + * Used in the {@link Audio} API. + * + * @class AudioInjector + * + * @hifi-interface + * @hifi-client-entity + * @hifi-server-entity + * @hifi-assignment-client + * + * @property {boolean} playing - true if TODO, otherwise false. Read-only. + * @property {number} loudness - TODO Read-only. + * @property {AudioInjector.AudioInjectorOptions} options - TODO + */ class ScriptAudioInjector : public QObject { Q_OBJECT @@ -26,19 +41,62 @@ public: ScriptAudioInjector(const AudioInjectorPointer& injector); ~ScriptAudioInjector(); public slots: + + /**jsdoc + * TODO + * @function AudioInjector.restart + */ void restart() { _injector->restart(); } + + /**jsdoc + * TODO + * @function AudioInjector.stop + */ void stop() { _injector->stop(); } + /**jsdoc + * TODO + * @function AudioInjector.getOptions + * @returns {AudioInjector.AudioInjectorOptions} TODO + */ const AudioInjectorOptions& getOptions() const { return _injector->getOptions(); } + + /**jsdoc + * TODO + * @function AudioInjector.setOptions + * @param {AudioInjector.AudioInjectorOptions} options - TODO + */ void setOptions(const AudioInjectorOptions& options) { _injector->setOptions(options); } + /**jsdoc + * TODO + * @function AudioInjector.getLoudness + * @returns {number} TODO + */ float getLoudness() const { return _injector->getLoudness(); } + + /**jsdoc + * TODO + * @function AudioInjector.isPlaying + * @returns {boolean} true if TODO, otherwise false. + */ bool isPlaying() const { return _injector->isPlaying(); } signals: + + /**jsdoc + * Triggered when TODO + * @function AudioInjector.finished + * @returns {Signal} + */ void finished(); protected slots: + + /**jsdoc + * TODO + * @function AudioInjector.stopInjectorImmediately + */ void stopInjectorImmediately(); private: AudioInjectorPointer _injector; From 98a8d3361bde86aaf83d9291357a060405e74a79 Mon Sep 17 00:00:00 2001 From: David Back Date: Mon, 16 Jul 2018 18:21:58 -0700 Subject: [PATCH 013/332] stop findGroupParent at cloneable --- libraries/entities/src/EntityItemProperties.cpp | 1 + .../controllers/controllerModules/highlightNearbyEntities.js | 2 +- .../controllers/controllerModules/nearParentGrabEntity.js | 3 ++- scripts/system/libraries/controllerDispatcherUtils.js | 5 ++++- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index efd2376677..650e391378 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -3676,6 +3676,7 @@ bool EntityItemProperties::verifyStaticCertificateProperties() { void EntityItemProperties::convertToCloneProperties(const EntityItemID& entityIDToClone) { setName(getName() + "-clone-" + entityIDToClone.toString()); setLocked(false); + setParentID(QUuid()); setLifetime(getCloneLifetime()); setDynamic(getCloneDynamic()); setClientOnly(getCloneAvatarEntity()); diff --git a/scripts/system/controllers/controllerModules/highlightNearbyEntities.js b/scripts/system/controllers/controllerModules/highlightNearbyEntities.js index bc09ebee7a..2fecf2947e 100644 --- a/scripts/system/controllers/controllerModules/highlightNearbyEntities.js +++ b/scripts/system/controllers/controllerModules/highlightNearbyEntities.js @@ -47,7 +47,7 @@ var canGrabEntity = false; if (dispatcherUtils.entityIsGrabbable(props) || entityIsCloneable(props)) { // if we've attempted to grab a child, roll up to the root of the tree - var groupRootProps = dispatcherUtils.findGroupParent(controllerData, props); + var groupRootProps = dispatcherUtils.findGroupParent(controllerData, props, false); canGrabEntity = true; if (!dispatcherUtils.entityIsGrabbable(groupRootProps)) { canGrabEntity = false; diff --git a/scripts/system/controllers/controllerModules/nearParentGrabEntity.js b/scripts/system/controllers/controllerModules/nearParentGrabEntity.js index 00d7ad0491..3152f74e79 100644 --- a/scripts/system/controllers/controllerModules/nearParentGrabEntity.js +++ b/scripts/system/controllers/controllerModules/nearParentGrabEntity.js @@ -254,7 +254,8 @@ Script.include("/~/system/libraries/cloneEntityUtils.js"); this.hapticTargetID = props.id; } // if we've attempted to grab a child, roll up to the root of the tree - var groupRootProps = findGroupParent(controllerData, props); + var stopAtCloneable = true; + var groupRootProps = findGroupParent(controllerData, props, stopAtCloneable); if (entityIsGrabbable(groupRootProps)) { return groupRootProps; } diff --git a/scripts/system/libraries/controllerDispatcherUtils.js b/scripts/system/libraries/controllerDispatcherUtils.js index 5dfb0d5b69..87176501b2 100644 --- a/scripts/system/libraries/controllerDispatcherUtils.js +++ b/scripts/system/libraries/controllerDispatcherUtils.js @@ -355,10 +355,13 @@ ensureDynamic = function (entityID) { } }; -findGroupParent = function (controllerData, targetProps) { +findGroupParent = function (controllerData, targetProps, stopAtCloneable) { while (targetProps.parentID && targetProps.parentID !== Uuid.NULL && Entities.getNestableType(targetProps.parentID) == "entity") { + if (stopAtCloneable && entityIsCloneable(targetProps)) { + break; + } var parentProps = Entities.getEntityProperties(targetProps.parentID, DISPATCHER_PROPERTIES); if (!parentProps) { break; From 396382afd7bc1930825ffcb50fb814b927f51330 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 19 Jul 2018 09:31:48 +1200 Subject: [PATCH 014/332] Fill in Audio API JSDoc --- interface/src/scripting/Audio.h | 115 +++++++++++++----- libraries/audio/src/AudioEffectOptions.cpp | 44 +++---- libraries/audio/src/AudioEffectOptions.h | 49 ++++---- libraries/audio/src/AudioInjectorOptions.cpp | 23 ++-- libraries/audio/src/Sound.h | 16 ++- libraries/audio/src/SoundCache.h | 3 +- .../src/AudioScriptingInterface.h | 65 +++++++--- .../script-engine/src/ScriptAudioInjector.h | 76 +++++++++--- 8 files changed, 263 insertions(+), 128 deletions(-) diff --git a/interface/src/scripting/Audio.h b/interface/src/scripting/Audio.h index f7dd252c54..4b8eb6aabc 100644 --- a/interface/src/scripting/Audio.h +++ b/interface/src/scripting/Audio.h @@ -26,7 +26,7 @@ class Audio : public AudioScriptingInterface, protected ReadWriteLockable { SINGLETON_DEPENDENCY /**jsdoc - * The Audio API ... TODO + * The Audio API provides facilities to interact with audio inputs and outputs and to play sounds. * * @namespace Audio * @@ -35,15 +35,23 @@ class Audio : public AudioScriptingInterface, protected ReadWriteLockable { * @hifi-server-entity * @hifi-assignment-client * - * @property {boolean} muted - true if TODO, otherwise false. - * @property {boolean} noiseReduction - true if TODO, otherwise false. - * @property {number} inputVolume - TODO - * @property {number} inputLevel - TODO Read-only. - * @property {string} context - TODO Read-only. - * @property {object} devices Read-only. Deprecated: This property is deprecated and will be + * @property {boolean} muted - true if the audio input is muted, otherwise false. + * @property {boolean} noiseReduction - true if noise reduction is enabled, otherwise false. When + * enabled, the input audio signal is blocked (fully attenuated) when it falls below an adaptive threshold set just + * above the noise floor. + * @property {number} inputLevel - The loudness of the audio input, range 0.0 (no sound) – + * 1.0 (the onset of clipping). Read-only. + * @property {number} inputVolume - Adjusts the volume of the input audio; range 0.01.0. + * If set to a value, the resulting value depends on the input device: for example, the volume can't be changed on some + * devices, and others might only support values of 0.0 and 1.0. + * @property {boolean} isStereoInput - true if the input audio is being used in stereo, otherwise + * false. Some devices do not support stereo, in which case the value is always false. + * @property {string} context - The current context of the audio: either "Desktop" or "HMD". + * Read-only. + * @property {object} devices Read-only. Deprecated: This property is deprecated and will be * removed. */ - + Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) Q_PROPERTY(bool noiseReduction READ noiseReductionEnabled WRITE enableNoiseReduction NOTIFY noiseReductionChanged) Q_PROPERTY(float inputVolume READ getInputVolume WRITE setInputVolume NOTIFY inputVolumeChanged) @@ -85,85 +93,132 @@ public: Q_INVOKABLE void setOutputDevice(const QAudioDeviceInfo& device, bool isHMD); /**jsdoc - * TODO + * Enable or disable reverberation. Reverberation is done by the client, on the post-mix audio. The reverberation options + * come from either the domain's audio zone if used — configured on the server — or as scripted by + * {@link Audio.setReverbOptions|setReverbOptions}. * @function Audio.setReverb - * @param {boolean} enable - TODO - */ + * @param {boolean} enable - true to enable reverberation, false to disable. + * @example Enable reverberation for a short while. + * var sound = SoundCache.getSound(Script.resourcesPath() + "sounds/sample.wav"); + * var injector; + * var injectorOptions = { + * position: MyAvatar.position + * }; + * + * Script.setTimeout(function () { + * print("Reverb OFF"); + * Audio.setReverb(false); + * injector = Audio.playSound(sound, injectorOptions); + * }, 1000); + * + * Script.setTimeout(function () { + * var reverbOptions = new AudioEffectOptions(); + * reverbOptions.roomSize = 100; + * Audio.setReverbOptions(reverbOptions); + * print("Reverb ON"); + * Audio.setReverb(true); + * }, 4000); + * + * Script.setTimeout(function () { + * print("Reverb OFF"); + * Audio.setReverb(false); + * }, 8000); */ Q_INVOKABLE void setReverb(bool enable); /**jsdoc - * TODO + * Configure reverberation options. Use {@link Audio.setReverb|setReverb} to enable or disable reverberation. * @function Audio.setReverbOptions - * @param {AudioEffectOptions} options - TODO + * @param {AudioEffectOptions} options - The reverberation options. */ Q_INVOKABLE void setReverbOptions(const AudioEffectOptions* options); /**jsdoc - * TODO + * Starts making an audio recording of the audio being played in-world (i.e., not local-only audio) to a file in WAV format. * @function Audio.startRecording - * @param {string} filename - TODO - * @returns {boolean} true if TODO, otherwise false. + * @param {string} filename - The path and name of the file to make the recording in. Should have a .wav + * extension. The file is overwritten if it already exists. + * @returns {boolean} true if the specified file could be opened and audio recording has started, otherwise + * false. + * @example Make a 10 second audio recording. + * var filename = File.getTempDir() + "/audio.wav"; + * if (Audio.startRecording(filename)) { + * Script.setTimeout(function () { + * Audio.stopRecording(); + * print("Audio recording made in: " + filename); + * }, 10000); + * + * } else { + * print("Could not make an audio recording in: " + filename); + * } */ Q_INVOKABLE bool startRecording(const QString& filename); /**jsdoc - * TODO + * Finish making an audio recording started with {@link Audio.startRecording|startRecording}. * @function Audio.stopRecording */ Q_INVOKABLE void stopRecording(); /**jsdoc - * TODO + * Check whether an audio recording is currently being made. * @function Audio.getRecording - * @returns {boolean} true if TODO, otherwise false. + * @returns {boolean} true if an audio recording is currently being made, otherwise false. */ Q_INVOKABLE bool getRecording(); signals: /**jsdoc - * Triggered when ... TODO * @function Audio.nop * @returns {Signal} + * @deprecated This signal is deprecated and will be removed. */ void nop(); /**jsdoc - * Triggered when ... TODO + * Triggered when the audio input is muted or unmuted. * @function Audio.mutedChanged - * @param {boolean} isMuted - TODO + * @param {boolean} isMuted - true if the audio input is muted, otherwise false. * @returns {Signal} + * @example Report when audio input is muted or unmuted + * Audio.mutedChanged.connect(function (isMuted) { + * print("Audio muted: " + isMuted); + * }); */ void mutedChanged(bool isMuted); /**jsdoc - * Triggered when ... TODO + * Triggered when the audio input noise reduction is enabled or disabled. * @function Audio.noiseReductionChanged - * @param {boolean} isEnabled - TODO + * @param {boolean} isEnabled - true if audio input noise reduction is enabled, otherwise false. * @returns {Signal} */ void noiseReductionChanged(bool isEnabled); /**jsdoc - * Triggered when ... TODO + * Triggered when the input audio volume changes. * @function Audio.inputVolumeChanged - * @param {number} volume - TODO + * @param {number} volume - The requested volume to be applied to the audio input, range 0.0 – + * 1.0. The resulting value of Audio.inputVolume depends on the capabilities of the device: + * for example, the volume can't be changed on some devices, and others might only support values of 0.0 + * and 1.0. * @returns {Signal} */ void inputVolumeChanged(float volume); /**jsdoc - * Triggered when ... TODO + * Triggered when the input audio level changes. * @function Audio.inputLevelChanged - * @param {number} level - TODO + * @param {number} level - The loudness of the input audio, range 0.0 (no sound) – 1.0 (the + * onset of clipping). * @returns {Signal} */ void inputLevelChanged(float level); /**jsdoc - * Triggered when ... TODO + * Triggered when the current context of the audio changes. * @function Audio.contextChanged - * @param {string} context - TODO + * @param {string} context - The current context of the audio: either "Desktop" or "HMD". * @returns {Signal} */ void contextChanged(const QString& context); diff --git a/libraries/audio/src/AudioEffectOptions.cpp b/libraries/audio/src/AudioEffectOptions.cpp index 3ed1296b63..873ce7df87 100644 --- a/libraries/audio/src/AudioEffectOptions.cpp +++ b/libraries/audio/src/AudioEffectOptions.cpp @@ -59,29 +59,29 @@ static void setOption(QScriptValue arguments, const QString name, float defaultV } /**jsdoc - * TODO + * Reverberation options that can be used to initialize an {@link AudioEffectOptions} object when created. * @typedef {object} AudioEffectOptions.ReverbOptions - * @property {number} bandwidth - TODO - * @property {number} preDelay - TODO - * @property {number} lateDelay - TODO - * @property {number} reverbTime - TODO - * @property {number} earlyDiffusion - TODO - * @property {number} lateDiffusion - TODO - * @property {number} roomSize - TODO - * @property {number} density - TODO - * @property {number} bassMult - TODO - * @property {number} bassFreq - TODO - * @property {number} highGain - TODO - * @property {number} highFreq - TODO - * @property {number} modRate - TODO - * @property {number} modDepth - TODO - * @property {number} earlyGain - TODO - * @property {number} lateGain - TODO - * @property {number} earlyMixLeft - TODO - * @property {number} earlyMixRight - TODO - * @property {number} lateMixLeft - TODO - * @property {number} lateMixRight - TODO - * @property {number} wetDryMix - TODO + * @property {number} bandwidth=10000 - The corner frequency (Hz) of the low-pass filter at reverb input. + * @property {number} preDelay=20 - The delay (milliseconds) between dry signal and the onset of early reflections. + * @property {number} lateDelay=0 - The delay (milliseconds) between early reflections and the onset of reverb tail. + * @property {number} reverbTime=2 - The time (seconds) for the reverb tail to decay by 60dB, also known as RT60. + * @property {number} earlyDiffusion=100 - Adjusts the buildup of echo density in the early reflections, normally 100%. + * @property {number} lateDiffusion=100 - Adjusts the buildup of echo density in the reverb tail, normally 100%. + * @property {number} roomSize=50 - The apparent room size, from small (0%) to large (100%). + * @property {number} density=100 - Adjusts the echo density in the reverb tail, normally 100%. + * @property {number} bassMult=1.5 - Adjusts the bass-frequency reverb time, as multiple of reverbTime. + * @property {number} bassFreq=250 - The crossover frequency (Hz) for the onset of bassMult. + * @property {number} highGain=-6 - Reduces the high-frequency reverb time, as attenuation (dB). + * @property {number} highFreq=3000 - The crossover frequency (Hz) for the onset of highGain. + * @property {number} modRate=2.3 - The rate of modulation (Hz) of the LFO-modulated delay lines. + * @property {number} modDepth=50 - The depth of modulation (percent) of the LFO-modulated delay lines. + * @property {number} earlyGain=0 - Adjusts the relative level (dB) of the early reflections. + * @property {number} lateGain=0 - Adjusts the relative level (dB) of the reverb tail. + * @property {number} earlyMixLeft=20 - The apparent distance of the source (percent) in the early reflections. + * @property {number} earlyMixRight=20 - The apparent distance of the source (percent) in the early reflections. + * @property {number} lateMixLeft=90 - The apparent distance of the source (percent) in the reverb tail. + * @property {number} lateMixRight=90 - The apparent distance of the source (percent) in the reverb tail. + * @property {number} wetDryMix=50 - Adjusts the wet/dry ratio, from completely dry (0%) to completely wet (100%). */ AudioEffectOptions::AudioEffectOptions(QScriptValue arguments) { setOption(arguments, BANDWIDTH_HANDLE, BANDWIDTH_DEFAULT, _bandwidth); diff --git a/libraries/audio/src/AudioEffectOptions.h b/libraries/audio/src/AudioEffectOptions.h index 0e2e017d49..4bc7957142 100644 --- a/libraries/audio/src/AudioEffectOptions.h +++ b/libraries/audio/src/AudioEffectOptions.h @@ -16,38 +16,39 @@ #include /**jsdoc - * TODO - * Used in the {@link Audio} API. + * Audio effect options used by the {@link Audio} API. + * + *

Create using new AudioEffectOptions(reverbOptions).

* * @class AudioEffectOptions - * @param {AudioEffectOptions.ReverbOptions} [reverbOptions=null] - TODO + * @param {AudioEffectOptions.ReverbOptions} [reverbOptions=null] - Reverberation options. * * @hifi-interface * @hifi-client-entity * @hifi-server-entity * @hifi-assignment-client * - * @property {number} bandwidth=10000 - TODO - * @property {number} preDelay=20 - TODO - * @property {number} lateDelay=0 - TODO - * @property {number} reverbTime=2 - TODO - * @property {number} earlyDiffusion=100 - TODO - * @property {number} lateDiffusion=100 - TODO - * @property {number} roomSize=50 - TODO - * @property {number} density=100 - TODO - * @property {number} bassMult=1.5 - TODO - * @property {number} bassFreq=250 - TODO - * @property {number} highGain=-6 - TODO - * @property {number} highFreq=3000 - TODO - * @property {number} modRate=2.3 - TODO - * @property {number} modDepth=50 - TODO - * @property {number} earlyGain=0 - TODO - * @property {number} lateGain=0 - TODO - * @property {number} earlyMixLeft=20 - TODO - * @property {number} earlyMixRight=20 - TODO - * @property {number} lateMixLeft=90 - TODO - * @property {number} lateMixRight=90 - TODO - * @property {number} wetDryMix=50 - TODO + * @property {number} bandwidth=10000 - The corner frequency (Hz) of the low-pass filter at reverb input. + * @property {number} preDelay=20 - The delay (milliseconds) between dry signal and the onset of early reflections. + * @property {number} lateDelay=0 - The delay (milliseconds) between early reflections and the onset of reverb tail. + * @property {number} reverbTime=2 - The time (seconds) for the reverb tail to decay by 60dB, also known as RT60. + * @property {number} earlyDiffusion=100 - Adjusts the buildup of echo density in the early reflections, normally 100%. + * @property {number} lateDiffusion=100 - Adjusts the buildup of echo density in the reverb tail, normally 100%. + * @property {number} roomSize=50 - The apparent room size, from small (0%) to large (100%). + * @property {number} density=100 - Adjusts the echo density in the reverb tail, normally 100%. + * @property {number} bassMult=1.5 - Adjusts the bass-frequency reverb time, as multiple of reverbTime. + * @property {number} bassFreq=250 - The crossover frequency (Hz) for the onset of bassMult. + * @property {number} highGain=-6 - Reduces the high-frequency reverb time, as attenuation (dB). + * @property {number} highFreq=3000 - The crossover frequency (Hz) for the onset of highGain. + * @property {number} modRate=2.3 - The rate of modulation (Hz) of the LFO-modulated delay lines. + * @property {number} modDepth=50 - The depth of modulation (percent) of the LFO-modulated delay lines. + * @property {number} earlyGain=0 - Adjusts the relative level (dB) of the early reflections. + * @property {number} lateGain=0 - Adjusts the relative level (dB) of the reverb tail. + * @property {number} earlyMixLeft=20 - The apparent distance of the source (percent) in the early reflections. + * @property {number} earlyMixRight=20 - The apparent distance of the source (percent) in the early reflections. + * @property {number} lateMixLeft=90 - The apparent distance of the source (percent) in the reverb tail. + * @property {number} lateMixRight=90 - The apparent distance of the source (percent) in the reverb tail. + * @property {number} wetDryMix=50 - Adjusts the wet/dry ratio, from completely dry (0%) to completely wet (100%). */ class AudioEffectOptions : public QObject { diff --git a/libraries/audio/src/AudioInjectorOptions.cpp b/libraries/audio/src/AudioInjectorOptions.cpp index 8691432bcd..0f4ab7ff42 100644 --- a/libraries/audio/src/AudioInjectorOptions.cpp +++ b/libraries/audio/src/AudioInjectorOptions.cpp @@ -46,16 +46,21 @@ QScriptValue injectorOptionsToScriptValue(QScriptEngine* engine, const AudioInje } /**jsdoc - * TODO + * Configures how an audio injector plays its audio. * @typedef {object} AudioInjector.AudioInjectorOptions - * @property {Vec3} position=Vec3.ZERO - TODO - * @property {Quat} orientation=Quat.IDENTITY - TODO - * @property {number} volume=1 - TODO - * @property {boolean} loop=false - true if TODO, otherwise false. - * @property {boolean} ignorePenumbra=false - true if TODO, otherwise false. - * @property {boolean} localOnly=false - true if TODO, otherwise false. - * @property {number} secondOffset=0 - TODO - * @property {number} pitch=1 - TODO + * @property {Vec3} position=Vec3.ZERO - The position in the domain to play the sound. + * @property {Quat} orientation=Quat.IDENTITY - The orientation in the domain to play the sound in. + * @property {number} volume=1.0 - Playback volume, between 0.0 and 1.0. + * @property {number} pitch=1.0 - Alter the pitch of the sound, within +/- 2 octaves. The value is the relative sample rate to + * resample the sound at, range 0.062516.0. A value of 0.0625 lowers the + * pitch by 2 octaves; 1.0 is no change in pitch; 16.0 raises the pitch by 2 octaves. + * @property {boolean} loop=false - If true, the sound is played repeatedly until playback is stopped. + * @property {number} secondOffset=0 - Starts playback from a specified time (seconds) within the sound file, ≥ + * 0. + * @property {boolean} localOnly=false - IF true, the sound is played back locally on the client rather than to + * others via the audio mixer. + * @property {boolean} ignorePenumbra=false - Deprecated: This property is deprecated and will be + * removed. */ void injectorOptionsFromScriptValue(const QScriptValue& object, AudioInjectorOptions& injectorOptions) { if (!object.isObject()) { diff --git a/libraries/audio/src/Sound.h b/libraries/audio/src/Sound.h index 0edcb59cca..348600e4ae 100644 --- a/libraries/audio/src/Sound.h +++ b/libraries/audio/src/Sound.h @@ -79,8 +79,13 @@ private: typedef QSharedPointer SharedSoundPointer; /**jsdoc - * TODO - * Created by {@link SoundCache.getSound}. + * An audio resource, created by {@link SoundCache.getSound}, to be played back using {@link Audio.playSound}. + *

Supported formats:

+ *
    + *
  • WAV: 16-bit uncompressed WAV at any sample rate, with 1 (mono), 2(stereo), or 4 (ambisonic) channels.
  • + *
  • MP3: Mono or stereo, at any sample rate.
  • + *
  • RAW: 48khz 16-bit mono or stereo. Filename must include ".stereo" to be interpreted as stereo.
  • + *
* * @class SoundObject * @@ -89,8 +94,9 @@ typedef QSharedPointer SharedSoundPointer; * @hifi-server-entity * @hifi-assignment-client * - * @property {boolean} downloaded - true if TODO, otherwise false. - * @property {number} duration - TODO + * @property {boolean} downloaded - true if the sound has been downloaded and is ready to be played, otherwise + * false. + * @property {number} duration - The duration of the sound, in seconds. */ class SoundScriptingInterface : public QObject { Q_OBJECT @@ -106,7 +112,7 @@ public: float getDuration() { return _sound->getDuration(); } /**jsdoc - * Triggered when TODO + * Triggered when the sound has been downloaded and is ready to be played. * @function SoundObject.ready * @returns {Signal} */ diff --git a/libraries/audio/src/SoundCache.h b/libraries/audio/src/SoundCache.h index 4352b1d459..ecb4451153 100644 --- a/libraries/audio/src/SoundCache.h +++ b/libraries/audio/src/SoundCache.h @@ -78,8 +78,9 @@ public: /**jsdoc + * Loads the content of an audio file into an object, ready for playback by {@link Audio.playSound}. * @function SoundCache.getSound - * @param {string} url + * @param {string} url - The URL of the audio file to load. See {@link SoundObject} for supported formats. * @returns {SoundObject} */ Q_INVOKABLE SharedSoundPointer getSound(const QUrl& url); diff --git a/libraries/script-engine/src/AudioScriptingInterface.h b/libraries/script-engine/src/AudioScriptingInterface.h index 6b87b0ee67..72b9541763 100644 --- a/libraries/script-engine/src/AudioScriptingInterface.h +++ b/libraries/script-engine/src/AudioScriptingInterface.h @@ -23,6 +23,7 @@ class AudioScriptingInterface : public QObject, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY + // JSDoc for property is in Audio.h. Q_PROPERTY(bool isStereoInput READ isStereoInput WRITE setStereoInput NOTIFY isStereoInputChanged) public: @@ -35,49 +36,69 @@ protected: // these methods are protected to stop C++ callers from calling, but invokable from script /**jsdoc - * TODO + * Starts playing — "injecting" — the content of an audio file. The sound is played globally (sent to the audio + * mixer) so that everyone hears it, unless the injectorOptions has localOnly set to + * true in which case only the client hears the sound played. No sound is played if sent to the audio mixer + * but the client is not connected to an audio mixer. The {@link AudioInjector} object returned by the function can be used + * to control the playback and get information about its current state. * @function Audio.playSound - * @param {SoundObject} sound - TODO - * @param {AudioInjector.AudioInjectorOptions} [injectorOptions={}] - TODO - * @returns {AudioInjector} TODO + * @param {SoundObject} sound - The content of an audio file, loaded using {@link SoundCache.getSound}. See + * {@link SoundObject} for supported formats. + * @param {AudioInjector.AudioInjectorOptions} [injectorOptions={}] - Audio injector configuration. + * @returns {AudioInjector} The audio injector that plays the audio file. + * @example Play a sound. + * var sound = SoundCache.getSound(Script.resourcesPath() + "sounds/sample.wav"); + * var injector; + * var injectorOptions = { + * position: MyAvatar.position + * }; + * + * Script.setTimeout(function () { // Give the sound time to load. + * injector = Audio.playSound(sound, injectorOptions); + * }, 1000); */ Q_INVOKABLE ScriptAudioInjector* playSound(SharedSoundPointer sound, const AudioInjectorOptions& injectorOptions = AudioInjectorOptions()); /**jsdoc - * TODO + * Start playing the content of an audio file, locally (isn't sent to the audio mixer). This is the same as calling + * {@link Audio.playSound} with {@link AudioInjector.AudioInjectorOptions} localOnly set true and + * the specified position. * @function Audio.playSystemSound - * @param {SoundObject} sound - TODO - * @param {Vec3} position - TODO - * @returns {AudioInjector} TODO + * @param {SoundObject} sound - The content of an audio file, loaded using {@link SoundCache.getSound}. See + * {@link SoundObject} for supported formats. + * @param {Vec3} position - The position in the domain to play the sound. + * @returns {AudioInjector} The audio injector that plays the audio file. */ // FIXME: there is no way to play a positionless sound Q_INVOKABLE ScriptAudioInjector* playSystemSound(SharedSoundPointer sound, const QVector3D& position); /**jsdoc - * TODO + * Set whether or not the audio input should be used in stereo. If the audio input does not support stereo then setting a + * value of true has no effect. * @function Audio.setStereoInput - * @param {boolean} stereo - TODO + * @param {boolean} stereo - true if the audio input should be used in stereo, otherwise false. */ Q_INVOKABLE void setStereoInput(bool stereo); /**jsdoc - * TODO + * Get whether or not the audio input is used in stereo. * @function Audio.isStereoInput - * @returns {boolean} true if TODO, otherwise false. + * @returns {boolean} true if the audio input is used in stereo, otherwise false. */ Q_INVOKABLE bool isStereoInput(); signals: /**jsdoc - * Triggered when the client is muted by the mixer. + * Triggered when the client is muted by the mixer because their loudness value for the noise background has reached the + * threshold set for the domain in the server settings. * @function Audio.mutedByMixer * @returns {Signal} */ void mutedByMixer(); /**jsdoc - * Triggered when the entire environment is muted by the mixer. TODO: What is the "whole environment"? + * Triggered when everyone is muted by the mixer. * @function Audio.environmentMuted * @returns {Signal} */ @@ -98,31 +119,35 @@ signals: void disconnected(); /**jsdoc - * Triggered when the noise gate is opened. TODO: Description of noise gate. + * Triggered when the noise gate is opened: the input audio signal is no longer blocked (fully attenuated) because it has + * risen above an adaptive threshold set just above the noise floor. Only occurs if Audio.noiseReduction is + * true. * @function Audio.noiseGateOpened * @returns {Signal} */ void noiseGateOpened(); /**jsdoc - * Triggered when the noise gate is closed. TODO: Description of noise gate. + * Triggered when the noise gate is closed: the input audio signal is blocked (fully attenuated) because it has fallen + * below an adaptive threshold set just above the noise floor. Only occurs if Audio.noiseReduction is + * true. * @function Audio.noiseGateClosed * @returns {Signal} */ void noiseGateClosed(); /**jsdoc - * Triggered when a frame of microphone audio input is processed. + * Triggered when a frame of audio input is processed. * @function Audio.inputReceived - * @param {Int16Array} inputSamples - TODO + * @param {Int16Array} inputSamples - The audio input processed. * @returns {Signal} */ void inputReceived(const QByteArray& inputSamples); /**jsdoc - * TODO + * Triggered when the input audio use changes between mono and stereo. * @function Audio.isStereoInputChanged - * @param {boolean} isStereo - TODO + * @param {boolean} isStereo - true if the input audio is stereo, otherwise false. * @returns {Signal} */ void isStereoInputChanged(bool isStereo); diff --git a/libraries/script-engine/src/ScriptAudioInjector.h b/libraries/script-engine/src/ScriptAudioInjector.h index 5d66461160..2c88d618e1 100644 --- a/libraries/script-engine/src/ScriptAudioInjector.h +++ b/libraries/script-engine/src/ScriptAudioInjector.h @@ -17,8 +17,7 @@ #include /**jsdoc - * TODO - * Used in the {@link Audio} API. + * Plays — "injects" — the content of an audio file. Used in the {@link Audio} API. * * @class AudioInjector * @@ -27,9 +26,11 @@ * @hifi-server-entity * @hifi-assignment-client * - * @property {boolean} playing - true if TODO, otherwise false. Read-only. - * @property {number} loudness - TODO Read-only. - * @property {AudioInjector.AudioInjectorOptions} options - TODO + * @property {boolean} playing - true if the audio is currently playing, otherwise false. + * Read-only. + * @property {number} loudness - The loudness in the last frame of audio, range 0.01.0. + * Read-only. + * @property {AudioInjector.AudioInjectorOptions} options - Configures how the injector plays the audio. */ class ScriptAudioInjector : public QObject { Q_OBJECT @@ -43,58 +44,99 @@ public: public slots: /**jsdoc - * TODO + * Stop current playback, if any, and start playing from the beginning. * @function AudioInjector.restart */ void restart() { _injector->restart(); } /**jsdoc - * TODO + * Stop audio playback. * @function AudioInjector.stop + * @example Stop playing a sound before it finishes. + * var sound = SoundCache.getSound(Script.resourcesPath() + "sounds/sample.wav"); + * var injector; + * var injectorOptions = { + * position: MyAvatar.position + * }; + * + * Script.setTimeout(function () { // Give the sound time to load. + * injector = Audio.playSound(sound, injectorOptions); + * }, 1000); + * + * Script.setTimeout(function () { + * injector.stop(); + * }, 2000); */ void stop() { _injector->stop(); } /**jsdoc - * TODO + * Get the current configuration of the audio injector. * @function AudioInjector.getOptions - * @returns {AudioInjector.AudioInjectorOptions} TODO + * @returns {AudioInjector.AudioInjectorOptions} Configuration of how the injector plays the audio. */ const AudioInjectorOptions& getOptions() const { return _injector->getOptions(); } /**jsdoc - * TODO + * Configure how the injector plays the audio. * @function AudioInjector.setOptions - * @param {AudioInjector.AudioInjectorOptions} options - TODO + * @param {AudioInjector.AudioInjectorOptions} options - Configuration of how the injector plays the audio. */ void setOptions(const AudioInjectorOptions& options) { _injector->setOptions(options); } /**jsdoc - * TODO + * Get the loudness of the most recent frame of audio played. * @function AudioInjector.getLoudness - * @returns {number} TODO + * @returns {number} The loudness of the most recent frame of audio played, range 0.01.0. */ float getLoudness() const { return _injector->getLoudness(); } /**jsdoc - * TODO + * Get whether or not the audio is currently playing. * @function AudioInjector.isPlaying - * @returns {boolean} true if TODO, otherwise false. + * @returns {boolean} true if the audio is currently playing, otherwise false. + * @example See if a sound is playing. + * var sound = SoundCache.getSound(Script.resourcesPath() + "sounds/sample.wav"); + * var injector; + * var injectorOptions = { + * position: MyAvatar.position + * }; + * + * Script.setTimeout(function () { // Give the sound time to load. + * injector = Audio.playSound(sound, injectorOptions); + * }, 1000); + * + * Script.setTimeout(function () { + * print("Sound is playing: " + injector.isPlaying()); + * }, 2000); */ bool isPlaying() const { return _injector->isPlaying(); } signals: /**jsdoc - * Triggered when TODO + * Triggered when the audio has finished playing. * @function AudioInjector.finished * @returns {Signal} + * @example Report when a sound has finished playing. + * var sound = SoundCache.getSound(Script.resourcesPath() + "sounds/sample.wav"); + * var injector; + * var injectorOptions = { + * position: MyAvatar.position + * }; + * + * Script.setTimeout(function () { // Give the sound time to load. + * injector = Audio.playSound(sound, injectorOptions); + * injector.finished.connect(function () { + * print("Finished playing sound"); + * }); + * }, 1000); */ void finished(); protected slots: /**jsdoc - * TODO + * Stop audio playback. (Synonym of {@link AudioInjector.stop|stop}.) * @function AudioInjector.stopInjectorImmediately */ void stopInjectorImmediately(); From 3002abeddc5500692279e17b66d7a90a82712451 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Wed, 18 Jul 2018 18:22:36 -0700 Subject: [PATCH 015/332] Add DS option to turn off packet authentication --- domain-server/resources/describe-settings.json | 8 ++++++++ domain-server/src/DomainServer.cpp | 6 +++++- libraries/networking/src/LimitedNodeList.cpp | 7 ++++--- libraries/networking/src/LimitedNodeList.h | 3 +++ libraries/networking/src/NodeList.cpp | 4 ++++ 5 files changed, 24 insertions(+), 4 deletions(-) diff --git a/domain-server/resources/describe-settings.json b/domain-server/resources/describe-settings.json index 83dd633d22..4e68d29e85 100644 --- a/domain-server/resources/describe-settings.json +++ b/domain-server/resources/describe-settings.json @@ -46,6 +46,14 @@ "default": "40102", "type": "int", "advanced": true + }, + { + "name": "enable_authentication", + "label": "Enable Authentication", + "help": "Enable secure checksums on communication that uses the High Fidelity protocol. Increases security with possibly a small performance penalty.", + "default": true, + "type": "checkbox", + "advanced": true } ] }, diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index eccd1c1e20..5324bb407d 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -630,6 +630,7 @@ bool DomainServer::isPacketVerified(const udt::Packet& packet) { void DomainServer::setupNodeListAndAssignments() { const QString CUSTOM_LOCAL_PORT_OPTION = "metaverse.local_port"; + static const QString ENABLE_PACKET_AUTHENTICATION = "metaverse.enable_authentication"; QVariant localPortValue = _settingsManager.valueOrDefaultValueForKeyPath(CUSTOM_LOCAL_PORT_OPTION); int domainServerPort = localPortValue.toInt(); @@ -696,6 +697,9 @@ void DomainServer::setupNodeListAndAssignments() { } } + bool isAuthEnabled = _settingsManager.valueOrDefaultValueForKeyPath(ENABLE_PACKET_AUTHENTICATION).toBool(); + nodeList->setAuthenticatePackets(isAuthEnabled); + connect(nodeList.data(), &LimitedNodeList::nodeAdded, this, &DomainServer::nodeAdded); connect(nodeList.data(), &LimitedNodeList::nodeKilled, this, &DomainServer::nodeKilled); @@ -1133,7 +1137,7 @@ void DomainServer::sendDomainListToNode(const SharedNodePointer& node, const Hif extendedHeaderStream << node->getUUID(); extendedHeaderStream << node->getLocalID(); extendedHeaderStream << node->getPermissions(); - + extendedHeaderStream << limitedNodeList->getAuthenticatePackets(); auto domainListPackets = NLPacketList::create(PacketType::DomainList, extendedHeader); // always send the node their own UUID back diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp index 502874fbfb..b6b2369703 100644 --- a/libraries/networking/src/LimitedNodeList.cpp +++ b/libraries/networking/src/LimitedNodeList.cpp @@ -328,9 +328,10 @@ bool LimitedNodeList::packetSourceAndHashMatchAndTrackBandwidth(const udt::Packe if (sourceNode) { bool verifiedPacket = !PacketTypeEnum::getNonVerifiedPackets().contains(headerType); - bool ignoreVerification = isDomainServer() && PacketTypeEnum::getDomainIgnoredVerificationPackets().contains(headerType); + bool verificationEnabled = !(isDomainServer() && PacketTypeEnum::getDomainIgnoredVerificationPackets().contains(headerType)) + && _useAuthentication; - if (verifiedPacket && !ignoreVerification) { + if (verifiedPacket && verificationEnabled) { QByteArray packetHeaderHash = NLPacket::verificationHashInHeader(packet); QByteArray expectedHash; @@ -383,7 +384,7 @@ void LimitedNodeList::fillPacketHeader(const NLPacket& packet, HMACAuth* hmacAut packet.writeSourceID(getSessionLocalID()); } - if (hmacAuth + if (_useAuthentication && hmacAuth && !PacketTypeEnum::getNonSourcedPackets().contains(packet.getType()) && !PacketTypeEnum::getNonVerifiedPackets().contains(packet.getType())) { packet.writeVerificationHash(*hmacAuth); diff --git a/libraries/networking/src/LimitedNodeList.h b/libraries/networking/src/LimitedNodeList.h index 05374bbfbb..cffc49521a 100644 --- a/libraries/networking/src/LimitedNodeList.h +++ b/libraries/networking/src/LimitedNodeList.h @@ -307,6 +307,8 @@ public: bool isPacketVerifiedWithSource(const udt::Packet& packet, Node* sourceNode = nullptr); bool isPacketVerified(const udt::Packet& packet) { return isPacketVerifiedWithSource(packet); } + void setAuthenticatePackets(bool useAuthentication) { _useAuthentication = useAuthentication; } + bool getAuthenticatePackets() const { return _useAuthentication; } static void makeSTUNRequestPacket(char* stunRequestPacket); @@ -394,6 +396,7 @@ protected: HifiSockAddr _publicSockAddr; HifiSockAddr _stunSockAddr { STUN_SERVER_HOSTNAME, STUN_SERVER_PORT }; bool _hasTCPCheckedLocalSocket { false }; + bool _useAuthentication { true }; PacketReceiver* _packetReceiver; diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 2ce734dd26..dd351ef940 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -665,6 +665,10 @@ void NodeList::processDomainServerList(QSharedPointer message) NodePermissions newPermissions; packetStream >> newPermissions; setPermissions(newPermissions); + // Is packet authentication enabled? + bool isAuthenticated; + packetStream >> isAuthenticated; + setAuthenticatePackets(isAuthenticated); // pull each node in the packet while (packetStream.device()->pos() < message->getSize()) { From 5d13f6c030676dac17911679b37c1fe4c19b23ef Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Thu, 19 Jul 2018 09:55:28 -0700 Subject: [PATCH 016/332] Bump DomainListVersion for new protocol --- libraries/networking/src/udt/PacketHeaders.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index 6e1aca83e5..3c47cdcf09 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -313,7 +313,8 @@ enum class DomainListVersion : PacketVersion { PrePermissionsGrid = 18, PermissionsGrid, GetUsernameFromUUIDSupport, - GetMachineFingerprintFromUUIDSupport + GetMachineFingerprintFromUUIDSupport, + AuthenticationOptional }; enum class AudioVersion : PacketVersion { From d147d17b707f53c32c5b8b784dbf2ee49ebb0868 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Thu, 19 Jul 2018 10:04:29 -0700 Subject: [PATCH 017/332] Update PacketType version for domain list --- libraries/networking/src/udt/PacketHeaders.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/networking/src/udt/PacketHeaders.cpp b/libraries/networking/src/udt/PacketHeaders.cpp index 13ffcb5120..3536ab832c 100644 --- a/libraries/networking/src/udt/PacketHeaders.cpp +++ b/libraries/networking/src/udt/PacketHeaders.cpp @@ -27,7 +27,7 @@ PacketVersion versionForPacketType(PacketType packetType) { case PacketType::StunResponse: return 17; case PacketType::DomainList: - return static_cast(DomainListVersion::GetMachineFingerprintFromUUIDSupport); + return static_cast(DomainListVersion::AuthenticationOptional); case PacketType::EntityAdd: case PacketType::EntityClone: case PacketType::EntityEdit: From f33ee55f9eea0b0df5a067f5c5b46d4c734665be Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 12 Jul 2018 10:59:09 -0700 Subject: [PATCH 018/332] Create CollisionPick API --- interface/src/Application.cpp | 4 +- interface/src/raypick/CollisionPick.cpp | 301 ++++++++++++++++++ interface/src/raypick/CollisionPick.h | 238 ++++++++++++++ .../src/raypick/PickScriptingInterface.cpp | 26 ++ .../src/raypick/PickScriptingInterface.h | 10 + libraries/physics/src/PhysicsEngine.h | 2 + libraries/pointers/src/Pick.h | 1 + libraries/pointers/src/PickManager.cpp | 1 + libraries/pointers/src/PickManager.h | 3 +- libraries/shared/src/RegisteredMetaTypes.h | 94 ++++++ libraries/shared/src/ShapeInfo.cpp | 11 + libraries/shared/src/ShapeInfo.h | 1 + 12 files changed, 690 insertions(+), 2 deletions(-) create mode 100644 interface/src/raypick/CollisionPick.cpp create mode 100644 interface/src/raypick/CollisionPick.h diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 7e683c7cc8..ad61e6a4a1 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -6654,7 +6654,9 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEnginePointe registerInteractiveWindowMetaType(scriptEngine.data()); - DependencyManager::get()->registerMetaTypes(scriptEngine.data()); + auto pickScriptingInterface = DependencyManager::get(); + pickScriptingInterface->registerMetaTypes(scriptEngine.data()); + pickScriptingInterface->setCollisionWorld(_physicsEngine->getDynamicsWorld()); // connect this script engines printedMessage signal to the global ScriptEngines these various messages connect(scriptEngine.data(), &ScriptEngine::printedMessage, diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp new file mode 100644 index 0000000000..7ed146300d --- /dev/null +++ b/interface/src/raypick/CollisionPick.cpp @@ -0,0 +1,301 @@ +// +// Created by Sabrina Shanman 7/16/2018 +// Copyright 2018 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "CollisionPick.h" + +#include + +#include + +#include "ScriptEngineLogging.h" +#include "model-networking/ModelCache.h" + +bool CollisionPick::isShapeInfoReady(CollisionRegion& pick) { + if (pick.shouldComputeShapeInfo()) { + if (!_cachedResource || _cachedResource->getURL() != pick.modelURL) { + _cachedResource = DependencyManager::get()->getCollisionGeometryResource(pick.modelURL); + } + + if (_cachedResource->isLoaded()) { + computeShapeInfo(pick, pick.shapeInfo, _cachedResource); + } + + return false; + } + + return true; +} + +void CollisionPick::computeShapeInfo(CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource) { + // This code was copied and modified from RenderableModelEntityItem::computeShapeInfo + // TODO: Move to some shared code area (in entities-renderer? model-networking?) + // after we verify this is working and do a diff comparison with RenderableModelEntityItem::computeShapeInfo + // to consolidate the code. + // We may also want to make computeShapeInfo always abstract away from the gpu model mesh, like it does here. + const uint32_t TRIANGLE_STRIDE = 3; + const uint32_t QUAD_STRIDE = 4; + + ShapeType type = shapeInfo.getType(); + glm::vec3 dimensions = pick.transform.getScale(); + if (type == SHAPE_TYPE_COMPOUND) { + // should never fall in here when collision model not fully loaded + // TODO: assert that all geometries exist and are loaded + //assert(_model && _model->isLoaded() && _compoundShapeResource && _compoundShapeResource->isLoaded()); + const FBXGeometry& collisionGeometry = resource->getFBXGeometry(); + + ShapeInfo::PointCollection& pointCollection = shapeInfo.getPointCollection(); + pointCollection.clear(); + uint32_t i = 0; + + // the way OBJ files get read, each section under a "g" line is its own meshPart. We only expect + // to find one actual "mesh" (with one or more meshParts in it), but we loop over the meshes, just in case. + foreach (const FBXMesh& mesh, collisionGeometry.meshes) { + // each meshPart is a convex hull + foreach (const FBXMeshPart &meshPart, mesh.parts) { + pointCollection.push_back(QVector()); + ShapeInfo::PointList& pointsInPart = pointCollection[i]; + + // run through all the triangles and (uniquely) add each point to the hull + uint32_t numIndices = (uint32_t)meshPart.triangleIndices.size(); + // TODO: assert rather than workaround after we start sanitizing FBXMesh higher up + //assert(numIndices % TRIANGLE_STRIDE == 0); + numIndices -= numIndices % TRIANGLE_STRIDE; // WORKAROUND lack of sanity checking in FBXReader + + for (uint32_t j = 0; j < numIndices; j += TRIANGLE_STRIDE) { + glm::vec3 p0 = mesh.vertices[meshPart.triangleIndices[j]]; + glm::vec3 p1 = mesh.vertices[meshPart.triangleIndices[j + 1]]; + glm::vec3 p2 = mesh.vertices[meshPart.triangleIndices[j + 2]]; + if (!pointsInPart.contains(p0)) { + pointsInPart << p0; + } + if (!pointsInPart.contains(p1)) { + pointsInPart << p1; + } + if (!pointsInPart.contains(p2)) { + pointsInPart << p2; + } + } + + // run through all the quads and (uniquely) add each point to the hull + numIndices = (uint32_t)meshPart.quadIndices.size(); + // TODO: assert rather than workaround after we start sanitizing FBXMesh higher up + //assert(numIndices % QUAD_STRIDE == 0); + numIndices -= numIndices % QUAD_STRIDE; // WORKAROUND lack of sanity checking in FBXReader + + for (uint32_t j = 0; j < numIndices; j += QUAD_STRIDE) { + glm::vec3 p0 = mesh.vertices[meshPart.quadIndices[j]]; + glm::vec3 p1 = mesh.vertices[meshPart.quadIndices[j + 1]]; + glm::vec3 p2 = mesh.vertices[meshPart.quadIndices[j + 2]]; + glm::vec3 p3 = mesh.vertices[meshPart.quadIndices[j + 3]]; + if (!pointsInPart.contains(p0)) { + pointsInPart << p0; + } + if (!pointsInPart.contains(p1)) { + pointsInPart << p1; + } + if (!pointsInPart.contains(p2)) { + pointsInPart << p2; + } + if (!pointsInPart.contains(p3)) { + pointsInPart << p3; + } + } + + if (pointsInPart.size() == 0) { + qCDebug(scriptengine) << "Warning -- meshPart has no faces"; + pointCollection.pop_back(); + continue; + } + ++i; + } + } + + // We expect that the collision model will have the same units and will be displaced + // from its origin in the same way the visual model is. The visual model has + // been centered and probably scaled. We take the scaling and offset which were applied + // to the visual model and apply them to the collision model (without regard for the + // collision model's extents). + + glm::vec3 scaleToFit = dimensions / resource->getFBXGeometry().getUnscaledMeshExtents().size(); + // multiply each point by scale + for (int32_t i = 0; i < pointCollection.size(); i++) { + for (int32_t j = 0; j < pointCollection[i].size(); j++) { + // back compensate for registration so we can apply that offset to the shapeInfo later + pointCollection[i][j] = scaleToFit * pointCollection[i][j]; + } + } + shapeInfo.setParams(type, dimensions, resource->getURL().toString()); + } else if (type >= SHAPE_TYPE_SIMPLE_HULL && type <= SHAPE_TYPE_STATIC_MESH) { + const FBXGeometry& fbxGeometry = resource->getFBXGeometry(); + int numFbxMeshes = fbxGeometry.meshes.size(); + int totalNumVertices = 0; + glm::mat4 invRegistrationOffset = glm::translate(dimensions * (-ENTITY_ITEM_DEFAULT_REGISTRATION_POINT)); + for (int i = 0; i < numFbxMeshes; i++) { + const FBXMesh& mesh = fbxGeometry.meshes.at(i); + totalNumVertices += mesh.vertices.size(); + } + const int32_t MAX_VERTICES_PER_STATIC_MESH = 1e6; + if (totalNumVertices > MAX_VERTICES_PER_STATIC_MESH) { + qWarning() << "model" << resource->getURL() << "has too many vertices" << totalNumVertices << "and will collide as a box."; + shapeInfo.setParams(SHAPE_TYPE_BOX, 0.5f * dimensions); + return; + } + + auto& meshes = resource->getFBXGeometry().meshes; + int32_t numMeshes = (int32_t)(meshes.size()); + + const int MAX_ALLOWED_MESH_COUNT = 1000; + if (numMeshes > MAX_ALLOWED_MESH_COUNT) { + // too many will cause the deadlock timer to throw... + shapeInfo.setParams(SHAPE_TYPE_BOX, 0.5f * dimensions); + return; + } + + ShapeInfo::PointCollection& pointCollection = shapeInfo.getPointCollection(); + pointCollection.clear(); + if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { + pointCollection.resize(numMeshes); + } else { + pointCollection.resize(1); + } + + ShapeInfo::TriangleIndices& triangleIndices = shapeInfo.getTriangleIndices(); + triangleIndices.clear(); + + Extents extents; + int32_t meshCount = 0; + int32_t pointListIndex = 0; + for (auto& mesh : meshes) { + if (!mesh.vertices.size()) { + continue; + } + QVector vertices = mesh.vertices; + + ShapeInfo::PointList& points = pointCollection[pointListIndex]; + + // reserve room + int32_t sizeToReserve = (int32_t)(vertices.count()); + if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { + // a list of points for each mesh + pointListIndex++; + } else { + // only one list of points + sizeToReserve += (int32_t)points.size(); + } + points.reserve(sizeToReserve); + + // copy points + uint32_t meshIndexOffset = (uint32_t)points.size(); + const glm::vec3* vertexItr = vertices.cbegin(); + while (vertexItr != vertices.cend()) { + glm::vec3 point = *vertexItr; + points.push_back(point); + extents.addPoint(point); + ++vertexItr; + } + + if (type == SHAPE_TYPE_STATIC_MESH) { + // copy into triangleIndices + size_t triangleIndicesCount = 0; + for (const FBXMeshPart& meshPart : mesh.parts) { + triangleIndicesCount += meshPart.triangleIndices.count(); + } + triangleIndices.reserve(triangleIndicesCount); + + for (const FBXMeshPart& meshPart : mesh.parts) { + const int* indexItr = meshPart.triangleIndices.cbegin(); + while (indexItr != meshPart.triangleIndices.cend()) { + triangleIndices.push_back(*indexItr); + ++indexItr; + } + } + } else if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { + // for each mesh copy unique part indices, separated by special bogus (flag) index values + for (const FBXMeshPart& meshPart : mesh.parts) { + // collect unique list of indices for this part + std::set uniqueIndices; + auto numIndices = meshPart.triangleIndices.count(); + // TODO: assert rather than workaround after we start sanitizing FBXMesh higher up + //assert(numIndices% TRIANGLE_STRIDE == 0); + numIndices -= numIndices % TRIANGLE_STRIDE; // WORKAROUND lack of sanity checking in FBXReader + + auto indexItr = meshPart.triangleIndices.cbegin(); + while (indexItr != meshPart.triangleIndices.cend()) { + uniqueIndices.insert(*indexItr); + ++indexItr; + } + + // store uniqueIndices in triangleIndices + triangleIndices.reserve(triangleIndices.size() + (int32_t)uniqueIndices.size()); + for (auto index : uniqueIndices) { + triangleIndices.push_back(index); + } + // flag end of part + triangleIndices.push_back(END_OF_MESH_PART); + } + // flag end of mesh + triangleIndices.push_back(END_OF_MESH); + } + ++meshCount; + } + + // scale and shift + glm::vec3 extentsSize = extents.size(); + glm::vec3 scaleToFit = dimensions / extentsSize; + for (int32_t i = 0; i < 3; ++i) { + if (extentsSize[i] < 1.0e-6f) { + scaleToFit[i] = 1.0f; + } + } + for (auto points : pointCollection) { + for (int32_t i = 0; i < points.size(); ++i) { + points[i] = (points[i] * scaleToFit); + } + } + + shapeInfo.setParams(type, 0.5f * dimensions, resource->getURL().toString()); + } +} + +CollisionRegion CollisionPick::getMathematicalPick() const { + return _mathPick; +} + +PickResultPointer CollisionPick::getEntityIntersection(const CollisionRegion& pick) { + if (!isShapeInfoReady(*const_cast(&pick))) { + // Cannot compute result + return std::make_shared(); + } + + auto entityCollisionCallback = AllObjectMotionStatesCallback(pick.shapeInfo, pick.transform); + btCollisionWorld* collisionWorld = const_cast(_collisionWorld); + collisionWorld->contactTest(&entityCollisionCallback.collisionObject, entityCollisionCallback); + + return std::make_shared(pick, entityCollisionCallback.intersectingObjects, std::vector()); +} + +PickResultPointer CollisionPick::getOverlayIntersection(const CollisionRegion& pick) { + return getDefaultResult(QVariantMap()); +} + +PickResultPointer CollisionPick::getAvatarIntersection(const CollisionRegion& pick) { + if (!isShapeInfoReady(*const_cast(&pick))) { + // Cannot compute result + return std::make_shared(); + } + + auto avatarCollisionCallback = AllObjectMotionStatesCallback(pick.shapeInfo, pick.transform); + btCollisionWorld* collisionWorld = const_cast(_collisionWorld); + collisionWorld->contactTest(&avatarCollisionCallback.collisionObject, avatarCollisionCallback); + + return std::make_shared(pick, std::vector(), avatarCollisionCallback.intersectingObjects); +} + +PickResultPointer CollisionPick::getHUDIntersection(const CollisionRegion& pick) { + return getDefaultResult(QVariantMap()); +} \ No newline at end of file diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h new file mode 100644 index 0000000000..5cd8d4ccd6 --- /dev/null +++ b/interface/src/raypick/CollisionPick.h @@ -0,0 +1,238 @@ +// +// Created by Sabrina Shanman 7/11/2018 +// Copyright 2018 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#ifndef hifi_CollisionPick_h +#define hifi_CollisionPick_h + +#include + +#include +#include +#include +#include +#include + +class CollisionPickResult : public PickResult { +public: + struct EntityIntersection { + EntityIntersection() { } + + EntityIntersection(const EntityIntersection& entityIntersection) : + id(entityIntersection.id), + pickCollisionPoint(entityIntersection.pickCollisionPoint), + entityCollisionPoint(entityIntersection.entityCollisionPoint) { + } + + EntityIntersection(QUuid id, glm::vec3 pickCollisionPoint, glm::vec3 entityCollisionPoint) : + id(id), + pickCollisionPoint(pickCollisionPoint), + entityCollisionPoint(entityCollisionPoint) { + } + + QVariantMap toVariantMap() { + QVariantMap variantMap; + variantMap["objectID"] = id; + variantMap["pickCollisionPoint"] = vec3toVariant(pickCollisionPoint); + variantMap["entityCollisionPoint"] = vec3toVariant(entityCollisionPoint); + return variantMap; + } + + QUuid id; + glm::vec3 pickCollisionPoint; + glm::vec3 entityCollisionPoint; + }; + + CollisionPickResult() {} + CollisionPickResult(const QVariantMap& pickVariant) : PickResult(pickVariant) {} + + CollisionPickResult(const CollisionRegion& searchRegion, const std::vector& intersectingEntities, const std::vector& intersectingAvatars) : + PickResult(searchRegion.toVariantMap()), + intersects(intersectingEntities.size() || intersectingAvatars.size()), + intersectingEntities(intersectingEntities), + intersectingAvatars(intersectingAvatars) { + } + + CollisionPickResult(const CollisionPickResult& collisionPickResult) : PickResult(collisionPickResult.pickVariant) { + intersectingAvatars = collisionPickResult.intersectingAvatars; + intersectingEntities = collisionPickResult.intersectingEntities; + intersects = intersectingAvatars.size() || intersectingEntities.size(); + } + + bool intersects { false }; + std::vector intersectingEntities; + std::vector intersectingAvatars; + + virtual QVariantMap toVariantMap() const override { + QVariantMap variantMap; + + variantMap["intersects"] = intersects; + + QVariantList qIntersectingEntities; + for (auto intersectingEntity : intersectingEntities) { + qIntersectingEntities.append(intersectingEntity.toVariantMap()); + } + variantMap["intersectingEntities"] = qIntersectingEntities; + + QVariantList qIntersectingAvatars; + for (auto intersectingAvatar : intersectingAvatars) { + qIntersectingAvatars.append(intersectingAvatar.toVariantMap()); + } + variantMap["intersectingAvatars"] = qIntersectingAvatars; + + variantMap["collisionRegion"] = pickVariant; + + return variantMap; + } + + bool doesIntersect() const override { return intersects; } + bool checkOrFilterAgainstMaxDistance(float maxDistance) override { return true; } + + PickResultPointer compareAndProcessNewResult(const PickResultPointer& newRes) override { + const std::shared_ptr newCollisionResult = std::static_pointer_cast(*const_cast(&newRes)); + // Have to reference the raw pointer to work around strange type conversion errors + CollisionPickResult* newCollisionResultRaw = const_cast(newCollisionResult.get()); + + for (EntityIntersection& intersectingEntity : newCollisionResultRaw->intersectingEntities) { + intersectingEntities.push_back(intersectingEntity); + } + for (EntityIntersection& intersectingAvatar : newCollisionResultRaw->intersectingAvatars) { + intersectingAvatars.push_back(intersectingAvatar); + } + + return std::make_shared(*this); + } +}; + +class CollisionPick : public Pick { +public: + CollisionPick(const PickFilter& filter, float maxDistance, bool enabled, CollisionRegion collisionRegion, const btCollisionWorld* collisionWorld) : + Pick(filter, maxDistance, enabled), + _mathPick(collisionRegion), + _collisionWorld(collisionWorld) { + } + + CollisionRegion getMathematicalPick() const override; + PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const { return std::make_shared(pickVariant); } + PickResultPointer getEntityIntersection(const CollisionRegion& pick) override; + PickResultPointer getOverlayIntersection(const CollisionRegion& pick) override; + PickResultPointer getAvatarIntersection(const CollisionRegion& pick) override; + PickResultPointer getHUDIntersection(const CollisionRegion& pick) override; + +protected: + // Returns true if pick.shapeInfo is valid. Otherwise, attempts to get the shapeInfo ready for use. + bool isShapeInfoReady(CollisionRegion& pick); + void computeShapeInfo(CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource); + + CollisionRegion _mathPick; + const btCollisionWorld* _collisionWorld; + QSharedPointer _cachedResource; +}; + +// Callback for checking the motion states of all colliding rigid bodies for candidacy to be added to a list +struct RigidBodyFilterResultCallback : public btCollisionWorld::ContactResultCallback { + RigidBodyFilterResultCallback(const ShapeInfo& shapeInfo, const Transform& transform) : + btCollisionWorld::ContactResultCallback(), collisionObject() { + const btCollisionShape* collisionShape = ObjectMotionState::getShapeManager()->getShape(shapeInfo); + + collisionObject.setCollisionShape(const_cast(collisionShape)); + + btTransform bulletTransform; + bulletTransform.setOrigin(glmToBullet(transform.getTranslation())); + bulletTransform.setRotation(glmToBullet(transform.getRotation())); + + collisionObject.setWorldTransform(bulletTransform); + } + + ~RigidBodyFilterResultCallback() { + ObjectMotionState::getShapeManager()->releaseShape(collisionObject.getCollisionShape()); + } + + RigidBodyFilterResultCallback(btCollisionObject& testCollisionObject) : + btCollisionWorld::ContactResultCallback(), collisionObject(testCollisionObject) { + } + + btCollisionObject collisionObject; + + // Check candidacy for adding to a list + virtual void checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) = 0; + + btScalar addSingleResult(btManifoldPoint& cp, const btCollisionObjectWrapper* colObj0, int partId0, int index0, const btCollisionObjectWrapper* colObj1, int partId1, int index1) override { + const btCollisionObject* otherBody; + btVector3 point; + btVector3 otherPoint; + if (colObj0->m_collisionObject == &collisionObject) { + otherBody = colObj1->m_collisionObject; + point = cp.m_localPointA; + otherPoint = cp.m_localPointB; + } + else { + otherBody = colObj0->m_collisionObject; + point = cp.m_localPointB; + otherPoint = cp.m_localPointA; + } + const btRigidBody* collisionCandidate = dynamic_cast(otherBody); + if (!collisionCandidate) { + return 0; + } + const btMotionState* motionStateCandidate = collisionCandidate->getMotionState(); + + checkOrAddCollidingState(motionStateCandidate, point, otherPoint); + + return 0; + } +}; + +// Callback for getting colliding avatars in the world. +struct AllAvatarsCallback : public RigidBodyFilterResultCallback { + std::vector intersectingAvatars; + + void checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) override { + const AvatarMotionState* avatarCandidate = dynamic_cast(otherMotionState); + if (!avatarCandidate) { + return; + } + + // This is the correct object type. Add it to the list. + intersectingAvatars.emplace_back(avatarCandidate->getObjectID(), bulletToGLM(point), bulletToGLM(otherPoint)); + } +}; + +// Callback for getting colliding entities in the world. +struct AllEntitiesCallback : public RigidBodyFilterResultCallback { + std::vector intersectingEntities; + + void checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) override { + const EntityMotionState* entityCandidate = dynamic_cast(otherMotionState); + if (!entityCandidate) { + return; + } + + // This is the correct object type. Add it to the list. + intersectingEntities.emplace_back(entityCandidate->getObjectID(), bulletToGLM(point), bulletToGLM(otherPoint)); + } +}; + +// TODO: Test if this works. Revert to above code if it doesn't +// Callback for getting colliding ObjectMotionStates in the world, or optionally a more specific type. +template +struct AllObjectMotionStatesCallback : public RigidBodyFilterResultCallback { + AllObjectMotionStatesCallback(const ShapeInfo& shapeInfo, const Transform& transform) : RigidBodyFilterResultCallback(shapeInfo, transform) { } + + std::vector intersectingObjects; + + void checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) override { + const T* candidate = dynamic_cast(otherMotionState); + if (!candidate) { + return; + } + + // This is the correct object type. Add it to the list. + intersectingObjects.emplace_back(candidate->getObjectID(), bulletToGLM(point), bulletToGLM(otherPoint)); + } +}; + +#endif // hifi_CollisionPick_h \ No newline at end of file diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index 74459ca624..526d099cb4 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -17,6 +17,7 @@ #include "JointRayPick.h" #include "MouseRayPick.h" #include "StylusPick.h" +#include "CollisionPick.h" #include @@ -26,6 +27,8 @@ unsigned int PickScriptingInterface::createPick(const PickQuery::PickType type, return createRayPick(properties); case PickQuery::PickType::Stylus: return createStylusPick(properties); + case PickQuery::PickType::Collision: + return createCollisionPick(properties); default: return PickManager::INVALID_PICK_ID; } @@ -134,6 +137,29 @@ unsigned int PickScriptingInterface::createStylusPick(const QVariant& properties return DependencyManager::get()->addPick(PickQuery::Stylus, std::make_shared(side, filter, maxDistance, enabled)); } +unsigned int PickScriptingInterface::createCollisionPick(const QVariant& properties) { + QVariantMap propMap = properties.toMap(); + + bool enabled = false; + if (propMap["enabled"].isValid()) { + enabled = propMap["enabled"].toBool(); + } + + PickFilter filter = PickFilter(); + if (propMap["filter"].isValid()) { + filter = PickFilter(propMap["filter"].toUInt()); + } + + float maxDistance = 0.0f; + if (propMap["maxDistance"].isValid()) { + maxDistance = propMap["maxDistance"].toFloat(); + } + + CollisionRegion collisionRegion(propMap); + + return DependencyManager::get()->addPick(PickQuery::Collision, std::make_shared(filter, maxDistance, enabled, collisionRegion, _collisionWorld)); +} + void PickScriptingInterface::enablePick(unsigned int uid) { DependencyManager::get()->enablePick(uid); } diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 0ee091716d..48bc6e598e 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -9,6 +9,7 @@ #define hifi_PickScriptingInterface_h #include +#include #include #include @@ -62,6 +63,7 @@ class PickScriptingInterface : public QObject, public Dependency { public: unsigned int createRayPick(const QVariant& properties); unsigned int createStylusPick(const QVariant& properties); + unsigned int createCollisionPick(const QVariant& properties); void registerMetaTypes(QScriptEngine* engine); @@ -273,6 +275,14 @@ public slots: * @returns {number} */ static constexpr unsigned int INTERSECTED_HUD() { return IntersectionType::HUD; } + + // Set to allow CollisionPicks to have access to the physics engine + void setCollisionWorld(const btCollisionWorld* collisionWorld) { + _collisionWorld = collisionWorld; + } + +protected: + const btCollisionWorld* _collisionWorld; }; #endif // hifi_PickScriptingInterface_h diff --git a/libraries/physics/src/PhysicsEngine.h b/libraries/physics/src/PhysicsEngine.h index 2ac195956a..6a491c3791 100644 --- a/libraries/physics/src/PhysicsEngine.h +++ b/libraries/physics/src/PhysicsEngine.h @@ -73,6 +73,8 @@ public: const VectorOfMotionStates& getChangedMotionStates(); const VectorOfMotionStates& getDeactivatedMotionStates() const { return _dynamicsWorld->getDeactivatedMotionStates(); } + const ThreadSafeDynamicsWorld* getDynamicsWorld() { return _dynamicsWorld; } + /// \return reference to list of Collision events. The list is only valid until beginning of next simulation loop. const CollisionEvents& getCollisionEvents(); diff --git a/libraries/pointers/src/Pick.h b/libraries/pointers/src/Pick.h index 53606b154f..db9302a979 100644 --- a/libraries/pointers/src/Pick.h +++ b/libraries/pointers/src/Pick.h @@ -161,6 +161,7 @@ public: enum PickType { Ray = 0, Stylus, + Collision, NUM_PICK_TYPES }; diff --git a/libraries/pointers/src/PickManager.cpp b/libraries/pointers/src/PickManager.cpp index ba8fa814f0..b1698a7d1c 100644 --- a/libraries/pointers/src/PickManager.cpp +++ b/libraries/pointers/src/PickManager.cpp @@ -100,6 +100,7 @@ void PickManager::update() { // and the rayPicks updae will ALWAYS update at least one ray even when there is no budget _stylusPickCacheOptimizer.update(cachedPicks[PickQuery::Stylus], _nextPickToUpdate[PickQuery::Stylus], expiry, false); _rayPickCacheOptimizer.update(cachedPicks[PickQuery::Ray], _nextPickToUpdate[PickQuery::Ray], expiry, shouldPickHUD); + _collisionPickCacheOptimizer.update(cachedPicks[PickQuery::Collision], _nextPickToUpdate[PickQuery::Collision], expiry, false); } bool PickManager::isLeftHand(unsigned int uid) { diff --git a/libraries/pointers/src/PickManager.h b/libraries/pointers/src/PickManager.h index 3b466be2bc..f6871ee9cd 100644 --- a/libraries/pointers/src/PickManager.h +++ b/libraries/pointers/src/PickManager.h @@ -59,12 +59,13 @@ protected: std::shared_ptr findPick(unsigned int uid) const; std::unordered_map>> _picks; - unsigned int _nextPickToUpdate[PickQuery::NUM_PICK_TYPES] { 0, 0 }; + unsigned int _nextPickToUpdate[PickQuery::NUM_PICK_TYPES] { 0, 0, 0 }; std::unordered_map _typeMap; unsigned int _nextPickID { INVALID_PICK_ID + 1 }; PickCacheOptimizer _rayPickCacheOptimizer; PickCacheOptimizer _stylusPickCacheOptimizer; + PickCacheOptimizer _collisionPickCacheOptimizer; static const unsigned int DEFAULT_PER_FRAME_TIME_BUDGET = 2 * USECS_PER_MSEC; unsigned int _perFrameTimeBudget { DEFAULT_PER_FRAME_TIME_BUDGET }; diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index 467d6374a5..d20a993117 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -20,8 +20,10 @@ #include #include "AACube.h" +#include "ShapeInfo.h" #include "SharedUtil.h" #include "shared/Bilateral.h" +#include "Transform.h" class QColor; class QUrl; @@ -219,6 +221,80 @@ public: } }; +class CollisionRegion : public MathPick { +public: + CollisionRegion() { } + CollisionRegion(const QVariantMap& pickVariant) { + if (pickVariant["shape"].isValid()) { + auto shape = pickVariant["shape"].toMap(); + if (!shape.empty()) { + ShapeType shapeType = SHAPE_TYPE_NONE; + if (shape["shapeType"].isValid()) { + shapeType = ShapeInfo::getShapeTypeForName(shape["shapeType"].toString()); + } + if (shapeType >= SHAPE_TYPE_COMPOUND && shapeType <= SHAPE_TYPE_STATIC_MESH && shape["modelURL"].isValid()) { + QString newURL = shape["modelURL"].toString(); + modelURL.setUrl(newURL); + } + else { + modelURL.setUrl(""); + } + + if (shape["dimensions"].isValid()) { + transform.setScale(vec3FromVariant(shape["dimensions"])); + } + } + } + + if (pickVariant["position"].isValid()) { + transform.setTranslation(vec3FromVariant(pickVariant["position"])); + } + if (pickVariant["orientation"].isValid()) { + transform.setRotation(quatFromVariant(pickVariant["orientation"])); + } + } + + QVariantMap toVariantMap() const override { + QVariantMap collisionRegion; + + QVariantMap shape; + shape["shapeType"] = ShapeInfo::getNameForShapeType(shapeInfo.getType()); + shape["modelURL"] = modelURL.toString(); + shape["dimensions"] = vec3toVariant(shapeInfo.getHalfExtents()); + + collisionRegion["shape"] = shape; + + collisionRegion["position"] = vec3toVariant(transform.getTranslation()); + collisionRegion["orientation"] = quatToVariant(transform.getRotation()); + + return collisionRegion; + } + + operator bool() const override { + return !(glm::any(glm::isnan(transform.getTranslation())) || + glm::any(glm::isnan(transform.getRotation())) || + shapeInfo.getType() == SHAPE_TYPE_NONE); + } + + bool shouldComputeShapeInfo() const { + if (!(shapeInfo.getType() == SHAPE_TYPE_HULL || + (shapeInfo.getType() >= SHAPE_TYPE_COMPOUND && + shapeInfo.getType() <= SHAPE_TYPE_STATIC_MESH) + )) { + return false; + } + + return !shapeInfo.getPointCollection().size(); + } + + // We can't load the model here because it would create a circular dependency, so we delegate that responsibility to the owning CollisionPick + QUrl modelURL; + + // We can't compute the shapeInfo here without loading the model first, so we delegate that responsibility to the owning CollisionPick + ShapeInfo shapeInfo; + Transform transform; +}; + namespace std { inline void hash_combine(std::size_t& seed) { } @@ -255,6 +331,15 @@ namespace std { } }; + template <> + struct hash { + size_t operator()(const Transform& a) const { + size_t result = 0; + hash_combine(result, a.getTranslation(), a.getRotation(), a.getScale()); + return result; + } + }; + template <> struct hash { size_t operator()(const PickRay& a) const { @@ -273,6 +358,15 @@ namespace std { } }; + template <> + struct hash { + size_t operator()(const CollisionRegion& a) const { + size_t result = 0; + hash_combine(result, a.transform, (int)a.shapeInfo.getType(), qHash(a.modelURL)); + return result; + } + }; + template <> struct hash { size_t operator()(const QString& a) const { diff --git a/libraries/shared/src/ShapeInfo.cpp b/libraries/shared/src/ShapeInfo.cpp index 968292da87..b0caf2d62d 100644 --- a/libraries/shared/src/ShapeInfo.cpp +++ b/libraries/shared/src/ShapeInfo.cpp @@ -74,6 +74,17 @@ QString ShapeInfo::getNameForShapeType(ShapeType type) { return shapeTypeNames[(int)type]; } +ShapeType ShapeInfo::getShapeTypeForName(QString string) { + for (int i = 0; i < SHAPETYPE_NAME_COUNT; i++) { + auto name = shapeTypeNames[i]; + if (name == string) { + return (ShapeType)i; + } + } + + return (ShapeType)0; +} + void ShapeInfo::clear() { _url.clear(); _pointCollection.clear(); diff --git a/libraries/shared/src/ShapeInfo.h b/libraries/shared/src/ShapeInfo.h index 069241e29d..5020e492cf 100644 --- a/libraries/shared/src/ShapeInfo.h +++ b/libraries/shared/src/ShapeInfo.h @@ -59,6 +59,7 @@ public: using TriangleIndices = QVector; static QString getNameForShapeType(ShapeType type); + static ShapeType getShapeTypeForName(QString string); void clear(); From 6db108e78ede123b1d19ede48ec3a7e4def27334 Mon Sep 17 00:00:00 2001 From: amantley Date: Thu, 19 Jul 2018 15:27:57 -0700 Subject: [PATCH 019/332] added a third reference speed to the lateral speeds in rig.cpp --- libraries/animation/src/Rig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 549989778e..f0f10ea5fa 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -639,7 +639,7 @@ bool Rig::getRelativeDefaultJointTranslation(int index, glm::vec3& translationOu // animation reference speeds. static const std::vector FORWARD_SPEEDS = { 0.4f, 1.4f, 4.5f }; // m/s static const std::vector BACKWARD_SPEEDS = { 0.6f, 1.45f }; // m/s -static const std::vector LATERAL_SPEEDS = { 0.2f, 0.65f }; // m/s +static const std::vector LATERAL_SPEEDS = { 0.2f, 0.65f, 2.6f }; // m/s void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPosition, const glm::vec3& worldVelocity, const glm::quat& worldRotation, CharacterControllerState ccState) { From 65160e4513f9768ec0daa6ad8f172f9788177f91 Mon Sep 17 00:00:00 2001 From: amantley Date: Fri, 20 Jul 2018 14:07:24 -0700 Subject: [PATCH 020/332] changed the middle reference speed for forward movement so that run doesn't get blended into walk --- libraries/animation/src/Rig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index f0f10ea5fa..091acd5820 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -637,7 +637,7 @@ bool Rig::getRelativeDefaultJointTranslation(int index, glm::vec3& translationOu } // animation reference speeds. -static const std::vector FORWARD_SPEEDS = { 0.4f, 1.4f, 4.5f }; // m/s +static const std::vector FORWARD_SPEEDS = { 0.4f, 2.8f, 4.5f }; // m/s static const std::vector BACKWARD_SPEEDS = { 0.6f, 1.45f }; // m/s static const std::vector LATERAL_SPEEDS = { 0.2f, 0.65f, 2.6f }; // m/s From 962f3c6c533299a69b0ea2c79b019db3834ed5bd Mon Sep 17 00:00:00 2001 From: amantley Date: Fri, 20 Jul 2018 14:16:20 -0700 Subject: [PATCH 021/332] added a placeholder for the animation stack stats that will be added --- interface/resources/qml/Stats.qml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/interface/resources/qml/Stats.qml b/interface/resources/qml/Stats.qml index bff13cea54..d8e8df541b 100644 --- a/interface/resources/qml/Stats.qml +++ b/interface/resources/qml/Stats.qml @@ -167,6 +167,10 @@ Item { text: "Position: " + root.position.x.toFixed(1) + ", " + root.position.y.toFixed(1) + ", " + root.position.z.toFixed(1) } + StatText { + text: "Animation Stack: " + root.position.x.toFixed(1) + ", " + + root.position.y.toFixed(1) + ", " + root.position.z.toFixed(1) + } StatText { text: "Speed: " + root.speed.toFixed(1) } From 0bfe2671ddd1f9853aea3495c404fcece4c790bb Mon Sep 17 00:00:00 2001 From: Clement Date: Mon, 16 Jul 2018 16:13:11 -0700 Subject: [PATCH 022/332] Cleanup udt dead code --- assignment-client/src/assets/AssetServer.cpp | 12 +- .../networking/src/udt/CongestionControl.cpp | 188 --------- .../networking/src/udt/CongestionControl.h | 47 +-- libraries/networking/src/udt/Connection.cpp | 398 +----------------- libraries/networking/src/udt/Connection.h | 34 +- .../networking/src/udt/ConnectionStats.cpp | 13 - .../networking/src/udt/ConnectionStats.h | 9 - .../networking/src/udt/PacketTimeWindow.cpp | 28 +- .../networking/src/udt/PacketTimeWindow.h | 9 +- libraries/networking/src/udt/SendQueue.cpp | 75 +--- libraries/networking/src/udt/SendQueue.h | 8 - libraries/networking/src/udt/TCPVegasCC.cpp | 2 - libraries/networking/src/udt/TCPVegasCC.h | 6 - tools/udt-test/src/UDTTest.cpp | 15 +- 14 files changed, 34 insertions(+), 810 deletions(-) diff --git a/assignment-client/src/assets/AssetServer.cpp b/assignment-client/src/assets/AssetServer.cpp index e79473783a..41aeaba468 100644 --- a/assignment-client/src/assets/AssetServer.cpp +++ b/assignment-client/src/assets/AssetServer.cpp @@ -945,22 +945,14 @@ void AssetServer::sendStatsPacket() { upstreamStats["2. Sent Packets"] = stat.second.sentPackets; upstreamStats["3. Recvd ACK"] = events[Events::ReceivedACK]; upstreamStats["4. Procd ACK"] = events[Events::ProcessedACK]; - upstreamStats["5. Recvd LACK"] = events[Events::ReceivedLightACK]; - upstreamStats["6. Recvd NAK"] = events[Events::ReceivedNAK]; - upstreamStats["7. Recvd TNAK"] = events[Events::ReceivedTimeoutNAK]; - upstreamStats["8. Sent ACK2"] = events[Events::SentACK2]; - upstreamStats["9. Retransmitted"] = events[Events::Retransmission]; + upstreamStats["5. Retransmitted"] = events[Events::Retransmission]; nodeStats["Upstream Stats"] = upstreamStats; QJsonObject downstreamStats; downstreamStats["1. Recvd (P/s)"] = stat.second.receiveRate; downstreamStats["2. Recvd Packets"] = stat.second.receivedPackets; downstreamStats["3. Sent ACK"] = events[Events::SentACK]; - downstreamStats["4. Sent LACK"] = events[Events::SentLightACK]; - downstreamStats["5. Sent NAK"] = events[Events::SentNAK]; - downstreamStats["6. Sent TNAK"] = events[Events::SentTimeoutNAK]; - downstreamStats["7. Recvd ACK2"] = events[Events::ReceivedACK2]; - downstreamStats["8. Duplicates"] = events[Events::Duplicate]; + downstreamStats["4. Duplicates"] = events[Events::Duplicate]; nodeStats["Downstream Stats"] = downstreamStats; QString uuid; diff --git a/libraries/networking/src/udt/CongestionControl.cpp b/libraries/networking/src/udt/CongestionControl.cpp index 7ade4f004f..c0ad89e804 100644 --- a/libraries/networking/src/udt/CongestionControl.cpp +++ b/libraries/networking/src/udt/CongestionControl.cpp @@ -39,191 +39,3 @@ void CongestionControl::setPacketSendPeriod(double newSendPeriod) { _packetSendPeriod = newSendPeriod; } } - -DefaultCC::DefaultCC() : - _lastDecreaseMaxSeq(SequenceNumber {SequenceNumber::MAX }) -{ - _mss = udt::MAX_PACKET_SIZE_WITH_UDP_HEADER; - - _congestionWindowSize = 16; - setPacketSendPeriod(1.0); -} - -bool DefaultCC::onACK(SequenceNumber ackNum, p_high_resolution_clock::time_point receiveTime) { - double increase = 0; - - // Note from UDT original code: - // The minimum increase parameter is increased from "1.0 / _mss" to 0.01 - // because the original was too small and caused sending rate to stay at low level - // for long time. - const double minimumIncrease = 0.01; - - // we will only adjust once per sync interval so check that it has been at least that long now - auto now = p_high_resolution_clock::now(); - if (duration_cast(now - _lastRCTime).count() < synInterval()) { - return false; - } - - // our last rate increase time is now - _lastRCTime = now; - - if (_slowStart) { - // we are in slow start phase - increase the congestion window size by the number of packets just ACKed - _congestionWindowSize += seqlen(_lastACK, ackNum); - - // update the last ACK - _lastACK = ackNum; - - // check if we can get out of slow start (is our new congestion window size bigger than the max) - if (_congestionWindowSize > _maxCongestionWindowSize) { - _slowStart = false; - - if (_receiveRate > 0) { - // if we have a valid receive rate we set the send period to whatever the receive rate dictates - setPacketSendPeriod(USECS_PER_SECOND / _receiveRate); - } else { - // no valid receive rate, packet send period is dictated by estimated RTT and current congestion window size - setPacketSendPeriod((_rtt + synInterval()) / _congestionWindowSize); - } - } - } else { - // not in slow start - window size should be arrival rate * (RTT + SYN) + 16 - _congestionWindowSize = _receiveRate / USECS_PER_SECOND * (_rtt + synInterval()) + 16; - } - - // during slow start we perform no rate increases - if (_slowStart) { - return false; - } - - // if loss has happened since the last rate increase we do not perform another increase - if (_loss) { - _loss = false; - return false; - } - - double capacitySpeedDelta = (_bandwidth - USECS_PER_SECOND / _packetSendPeriod); - - // UDT uses what they call DAIMD - additive increase multiplicative decrease with decreasing increases - // This factor is a protocol parameter that is part of the DAIMD algorithim - static const int AIMD_DECREASING_INCREASE_FACTOR = 9; - - if ((_packetSendPeriod > _lastDecreasePeriod) && ((_bandwidth / AIMD_DECREASING_INCREASE_FACTOR) < capacitySpeedDelta)) { - capacitySpeedDelta = _bandwidth / AIMD_DECREASING_INCREASE_FACTOR; - } - - if (capacitySpeedDelta <= 0) { - increase = minimumIncrease; - } else { - // use UDTs DAIMD algorithm to figure out what the send period increase factor should be - - // inc = max(10 ^ ceil(log10(B * MSS * 8 ) * Beta / MSS, minimumIncrease) - // B = estimated link capacity - // Beta = 1.5 * 10^(-6) - - static const double BETA = 0.0000015; - static const double BITS_PER_BYTE = 8.0; - - increase = pow(10.0, ceil(log10(capacitySpeedDelta * _mss * BITS_PER_BYTE))) * BETA / _mss; - - if (increase < minimumIncrease) { - increase = minimumIncrease; - } - } - - setPacketSendPeriod((_packetSendPeriod * synInterval()) / (_packetSendPeriod * increase + synInterval())); - - return false; -} - -void DefaultCC::onLoss(SequenceNumber rangeStart, SequenceNumber rangeEnd) { - // stop the slow start if we haven't yet - if (_slowStart) { - stopSlowStart(); - - // if the change to send rate was driven by a known receive rate, then we don't continue with the decrease - if (_receiveRate > 0) { - return; - } - } - - _loss = true; - ++_nakCount; - - static const double INTER_PACKET_ARRIVAL_INCREASE = 1.125; - static const int MAX_DECREASES_PER_CONGESTION_EPOCH = 5; - - // check if this NAK starts a new congestion period - this will be the case if the - // NAK received occured for a packet sent after the last decrease - if (rangeStart > _lastDecreaseMaxSeq) { - _delayedDecrease = (rangeStart == rangeEnd); - - _lastDecreasePeriod = _packetSendPeriod; - - if (!_delayedDecrease) { - setPacketSendPeriod(ceil(_packetSendPeriod * INTER_PACKET_ARRIVAL_INCREASE)); - } else { - _loss = false; - } - - // use EWMA to update the average number of NAKs per congestion - static const double NAK_EWMA_ALPHA = 0.125; - _avgNAKNum = (int)ceil(_avgNAKNum * (1 - NAK_EWMA_ALPHA) + _nakCount * NAK_EWMA_ALPHA); - - // update the count of NAKs and count of decreases in this interval - _nakCount = 1; - _decreaseCount = 1; - - _lastDecreaseMaxSeq = _sendCurrSeqNum; - - if (_avgNAKNum < 1) { - _randomDecreaseThreshold = 1; - } else { - // avoid synchronous rate decrease across connections using randomization - std::random_device rd; - std::mt19937 generator(rd()); - std::uniform_int_distribution<> distribution(1, std::max(1, _avgNAKNum)); - - _randomDecreaseThreshold = distribution(generator); - } - } else if (_delayedDecrease && _nakCount == 2) { - setPacketSendPeriod(ceil(_packetSendPeriod * INTER_PACKET_ARRIVAL_INCREASE)); - } else if ((_decreaseCount++ < MAX_DECREASES_PER_CONGESTION_EPOCH) && ((_nakCount % _randomDecreaseThreshold) == 0)) { - // there have been fewer than MAX_DECREASES_PER_CONGESTION_EPOCH AND this NAK matches the random count at which we - // decided we would decrease the packet send period - - setPacketSendPeriod(ceil(_packetSendPeriod * INTER_PACKET_ARRIVAL_INCREASE)); - _lastDecreaseMaxSeq = _sendCurrSeqNum; - } -} - -void DefaultCC::onTimeout() { - if (_slowStart) { - stopSlowStart(); - } else { - // UDT used to do the following on timeout if not in slow start - we should check if it could be helpful - _lastDecreasePeriod = _packetSendPeriod; - _packetSendPeriod = ceil(_packetSendPeriod * 2); - - // this seems odd - the last ack they were setting _lastDecreaseMaxSeq to only applies to slow start - _lastDecreaseMaxSeq = _lastACK; - } -} - -void DefaultCC::stopSlowStart() { - _slowStart = false; - - if (_receiveRate > 0) { - // Set the sending rate to the receiving rate. - setPacketSendPeriod(USECS_PER_SECOND / _receiveRate); - } else { - // If no receiving rate is observed, we have to compute the sending - // rate according to the current window size, and decrease it - // using the method below. - setPacketSendPeriod(double(_congestionWindowSize) / (_rtt + synInterval())); - } -} - -void DefaultCC::setInitialSendSequenceNumber(udt::SequenceNumber seqNum) { - _lastACK = _lastDecreaseMaxSeq = seqNum - 1; -} diff --git a/libraries/networking/src/udt/CongestionControl.h b/libraries/networking/src/udt/CongestionControl.h index e6a462651e..6998f4fe65 100644 --- a/libraries/networking/src/udt/CongestionControl.h +++ b/libraries/networking/src/udt/CongestionControl.h @@ -44,21 +44,12 @@ public: // return value specifies if connection should perform a fast re-transmit of ACK + 1 (used in TCP style congestion control) virtual bool onACK(SequenceNumber ackNum, p_high_resolution_clock::time_point receiveTime) { return false; } - virtual void onLoss(SequenceNumber rangeStart, SequenceNumber rangeEnd) {} virtual void onTimeout() {} - virtual bool shouldNAK() { return true; } - virtual bool shouldACK2() { return true; } - virtual bool shouldProbe() { return true; } - virtual void onPacketSent(int wireSize, SequenceNumber seqNum, p_high_resolution_clock::time_point timePoint) {} protected: - void setAckInterval(int ackInterval) { _ackInterval = ackInterval; } - void setRTO(int rto) { _userDefinedRTO = true; _rto = rto; } - void setMSS(int mss) { _mss = mss; } void setMaxCongestionWindowSize(int window) { _maxCongestionWindowSize = window; } - void setBandwidth(int bandwidth) { _bandwidth = bandwidth; } virtual void setInitialSendSequenceNumber(SequenceNumber seqNum) = 0; void setSendCurrentSequenceNumber(SequenceNumber seqNum) { _sendCurrSeqNum = seqNum; } void setReceiveRate(int rate) { _receiveRate = rate; } @@ -67,8 +58,7 @@ protected: double _packetSendPeriod { 1.0 }; // Packet sending period, in microseconds int _congestionWindowSize { 16 }; // Congestion window size, in packets - - int _bandwidth { 0 }; // estimated bandwidth, packets per second + std::atomic _maxBandwidth { -1 }; // Maximum desired bandwidth, bits per second int _maxCongestionWindowSize { 0 }; // maximum cwnd size, in packets @@ -81,13 +71,7 @@ private: CongestionControl(const CongestionControl& other) = delete; CongestionControl& operator=(const CongestionControl& other) = delete; - int _ackInterval { 0 }; // How many packets to send one ACK, in packets - int _lightACKInterval { 64 }; // How many packets to send one light ACK, in packets - int _synInterval { DEFAULT_SYN_INTERVAL }; - - bool _userDefinedRTO { false }; // if the RTO value is defined by users - int _rto { -1 }; // RTO value, microseconds }; @@ -105,35 +89,6 @@ public: virtual ~CongestionControlFactory() {} virtual std::unique_ptr create() override { return std::unique_ptr(new T()); } }; - -class DefaultCC: public CongestionControl { -public: - DefaultCC(); - -public: - virtual bool onACK(SequenceNumber ackNum, p_high_resolution_clock::time_point receiveTime) override; - virtual void onLoss(SequenceNumber rangeStart, SequenceNumber rangeEnd) override; - virtual void onTimeout() override; - -protected: - virtual void setInitialSendSequenceNumber(SequenceNumber seqNum) override; - -private: - void stopSlowStart(); // stops the slow start on loss or timeout - - p_high_resolution_clock::time_point _lastRCTime = p_high_resolution_clock::now(); // last rate increase time - - bool _slowStart { true }; // if in slow start phase - SequenceNumber _lastACK; // last ACKed sequence number from previous - bool _loss { false }; // if loss happened since last rate increase - SequenceNumber _lastDecreaseMaxSeq; // max pkt seq num sent out when last decrease happened - double _lastDecreasePeriod { 1 }; // value of _packetSendPeriod when last decrease happened - int _nakCount { 0 }; // number of NAKs in congestion epoch - int _randomDecreaseThreshold { 1 }; // random threshold on decrease by number of loss events - int _avgNAKNum { 0 }; // average number of NAKs per congestion - int _decreaseCount { 0 }; // number of decreases in a congestion epoch - bool _delayedDecrease { false }; -}; } diff --git a/libraries/networking/src/udt/Connection.cpp b/libraries/networking/src/udt/Connection.cpp index 0bc86a28ad..b317e87e87 100644 --- a/libraries/networking/src/udt/Connection.cpp +++ b/libraries/networking/src/udt/Connection.cpp @@ -50,17 +50,11 @@ Connection::Connection(Socket* parentSocket, HifiSockAddr destination, std::uniq _congestionControl->setMaxCongestionWindowSize(_flowWindowSize); // Setup packets - static const int ACK_PACKET_PAYLOAD_BYTES = sizeof(_lastSentACK) + sizeof(_currentACKSubSequenceNumber) + static const int ACK_PACKET_PAYLOAD_BYTES = sizeof(_lastSentACK) + sizeof(_rtt) + sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t); - static const int LIGHT_ACK_PACKET_PAYLOAD_BYTES = sizeof(SequenceNumber); - static const int ACK2_PAYLOAD_BYTES = sizeof(SequenceNumber); - static const int NAK_PACKET_PAYLOAD_BYTES = 2 * sizeof(SequenceNumber); static const int HANDSHAKE_ACK_PAYLOAD_BYTES = sizeof(SequenceNumber); _ackPacket = ControlPacket::create(ControlPacket::ACK, ACK_PACKET_PAYLOAD_BYTES); - _lightACKPacket = ControlPacket::create(ControlPacket::LightACK, LIGHT_ACK_PACKET_PAYLOAD_BYTES); - _ack2Packet = ControlPacket::create(ControlPacket::ACK2, ACK2_PAYLOAD_BYTES); - _lossReport = ControlPacket::create(ControlPacket::NAK, NAK_PACKET_PAYLOAD_BYTES); _handshakeACK = ControlPacket::create(ControlPacket::HandshakeACK, HANDSHAKE_ACK_PAYLOAD_BYTES); @@ -135,7 +129,6 @@ SendQueue& Connection::getSendQueue() { QObject::connect(_sendQueue.get(), &SendQueue::packetRetransmitted, this, &Connection::recordRetransmission); QObject::connect(_sendQueue.get(), &SendQueue::queueInactive, this, &Connection::queueInactive); QObject::connect(_sendQueue.get(), &SendQueue::timeout, this, &Connection::queueTimeout); - QObject::connect(_sendQueue.get(), &SendQueue::shortCircuitLoss, this, &Connection::queueShortCircuitLoss); // set defaults on the send queue from our congestion control object and estimatedTimeout() @@ -143,7 +136,6 @@ SendQueue& Connection::getSendQueue() { _sendQueue->setSyncInterval(_synInterval); _sendQueue->setEstimatedTimeout(estimatedTimeout()); _sendQueue->setFlowWindowSize(std::min(_flowWindowSize, (int) _congestionControl->_congestionWindowSize)); - _sendQueue->setProbePacketEnabled(_congestionControl->shouldProbe()); // give the randomized sequence number to the congestion control object _congestionControl->setInitialSendSequenceNumber(_sendQueue->getCurrentSequenceNumber()); @@ -167,12 +159,6 @@ void Connection::queueTimeout() { }); } -void Connection::queueShortCircuitLoss(quint32 sequenceNumber) { - updateCongestionControlAndSendQueue([this, sequenceNumber] { - _congestionControl->onLoss(SequenceNumber { sequenceNumber }, SequenceNumber { sequenceNumber }); - }); -} - void Connection::sendReliablePacket(std::unique_ptr packet) { Q_ASSERT_X(packet->isReliable(), "Connection::send", "Trying to send an unreliable packet reliably."); getSendQueue().queuePacket(std::move(packet)); @@ -229,26 +215,6 @@ void Connection::sync() { // the receive side of this connection is expired _isReceivingData = false; } - - // reset the number of light ACKs or non SYN ACKs during this sync interval - _lightACKsDuringSYN = 1; - _acksDuringSYN = 1; - - if (_congestionControl->_ackInterval > 1) { - // we send out a periodic ACK every rate control interval - sendACK(); - } - - if (_congestionControl->shouldNAK() && _lossList.getLength() > 0) { - // check if we need to re-transmit a loss list - // we do this if it has been longer than the current nakInterval since we last sent - auto now = p_high_resolution_clock::now(); - - if (duration_cast(now - _lastNAKTime).count() >= _nakInterval) { - // Send a timeout NAK packet - sendTimeoutNAK(); - } - } } } @@ -267,28 +233,10 @@ void Connection::recordRetransmission(int wireSize, SequenceNumber seqNum, p_hig void Connection::sendACK(bool wasCausedBySyncTimeout) { static p_high_resolution_clock::time_point lastACKSendTime; - auto currentTime = p_high_resolution_clock::now(); SequenceNumber nextACKNumber = nextACK(); Q_ASSERT_X(nextACKNumber >= _lastSentACK, "Connection::sendACK", "Sending lower ACK, something is wrong"); - // if our congestion control doesn't want to send an ACK for every packet received - // check if we already sent this ACK - if (_congestionControl->_ackInterval > 1 && nextACKNumber == _lastSentACK) { - - // if we use ACK2s, check if the receiving side already confirmed receipt of this ACK - if (_congestionControl->shouldACK2() && nextACKNumber < _lastReceivedAcknowledgedACK) { - // we already got an ACK2 for this ACK we would be sending, don't bother - return; - } - - // We will re-send if it has been more than the estimated timeout since the last ACK - microseconds sinceLastACK = duration_cast(currentTime - lastACKSendTime); - - if (sinceLastACK.count() < estimatedTimeout()) { - return; - } - } // we have received new packets since the last sent ACK // or our congestion control dictates that we always send ACKs @@ -296,10 +244,7 @@ void Connection::sendACK(bool wasCausedBySyncTimeout) { _lastSentACK = nextACKNumber; _ackPacket->reset(); // We need to reset it every time. - - // pack in the ACK sub-sequence number - _ackPacket->writePrimitive(++_currentACKSubSequenceNumber); - + // pack in the ACK number _ackPacket->writePrimitive(nextACKNumber); @@ -311,17 +256,14 @@ void Connection::sendACK(bool wasCausedBySyncTimeout) { _ackPacket->writePrimitive((int32_t) udt::MAX_PACKETS_IN_FLIGHT); if (wasCausedBySyncTimeout) { - // grab the up to date packet receive speed and estimated bandwidth + // grab the up to date packet receive speed int32_t packetReceiveSpeed = _receiveWindow.getPacketReceiveSpeed(); - int32_t estimatedBandwidth = _receiveWindow.getEstimatedBandwidth(); // update those values in our connection stats _stats.recordReceiveRate(packetReceiveSpeed); - _stats.recordEstimatedBandwidth(estimatedBandwidth); - // pack in the receive speed and estimatedBandwidth + // pack in the receive speed _ackPacket->writePrimitive(packetReceiveSpeed); - _ackPacket->writePrimitive(estimatedBandwidth); } // record this as the last ACK send time @@ -330,94 +272,9 @@ void Connection::sendACK(bool wasCausedBySyncTimeout) { // have the socket send off our packet _parentSocket->writeBasePacket(*_ackPacket, _destination); - Q_ASSERT_X(_sentACKs.empty() || _sentACKs.back().first + 1 == _currentACKSubSequenceNumber, - "Connection::sendACK", "Adding an invalid ACK to _sentACKs"); - - // write this ACK to the map of sent ACKs - _sentACKs.push_back({ _currentACKSubSequenceNumber, { nextACKNumber, p_high_resolution_clock::now() }}); - - // reset the number of data packets received since last ACK - _packetsSinceACK = 0; - _stats.record(ConnectionStats::Stats::SentACK); } -void Connection::sendLightACK() { - SequenceNumber nextACKNumber = nextACK(); - - if (nextACKNumber == _lastReceivedAcknowledgedACK) { - // we already got an ACK2 for this ACK we would be sending, don't bother - return; - } - - // reset the lightACKPacket before we go to write the ACK to it - _lightACKPacket->reset(); - - // pack in the ACK - _lightACKPacket->writePrimitive(nextACKNumber); - - // have the socket send off our packet immediately - _parentSocket->writeBasePacket(*_lightACKPacket, _destination); - - _stats.record(ConnectionStats::Stats::SentLightACK); -} - -void Connection::sendACK2(SequenceNumber currentACKSubSequenceNumber) { - // reset the ACK2 Packet before writing the sub-sequence number to it - _ack2Packet->reset(); - - // write the sub sequence number for this ACK2 - _ack2Packet->writePrimitive(currentACKSubSequenceNumber); - - // send the ACK2 packet - _parentSocket->writeBasePacket(*_ack2Packet, _destination); - - // update the last sent ACK2 and the last ACK2 send time - _lastSentACK2 = currentACKSubSequenceNumber; - - _stats.record(ConnectionStats::Stats::SentACK2); -} - -void Connection::sendNAK(SequenceNumber sequenceNumberRecieved) { - _lossReport->reset(); // We need to reset it every time. - - // pack in the loss report - _lossReport->writePrimitive(_lastReceivedSequenceNumber + 1); - if (_lastReceivedSequenceNumber + 1 != sequenceNumberRecieved - 1) { - _lossReport->writePrimitive(sequenceNumberRecieved - 1); - } - - // have the parent socket send off our packet immediately - _parentSocket->writeBasePacket(*_lossReport, _destination); - - // record our last NAK time - _lastNAKTime = p_high_resolution_clock::now(); - - _stats.record(ConnectionStats::Stats::SentNAK); -} - -void Connection::sendTimeoutNAK() { - if (_lossList.getLength() > 0) { - - int timeoutPayloadSize = std::min((int) (_lossList.getLength() * 2 * sizeof(SequenceNumber)), - ControlPacket::maxPayloadSize()); - - // construct a NAK packet that will hold all of the lost sequence numbers - auto lossListPacket = ControlPacket::create(ControlPacket::TimeoutNAK, timeoutPayloadSize); - - // Pack in the lost sequence numbers - _lossList.write(*lossListPacket, timeoutPayloadSize / (2 * sizeof(SequenceNumber))); - - // have our parent socket send off this control packet - _parentSocket->writeBasePacket(*lossListPacket, _destination); - - // record this as the last NAK time - _lastNAKTime = p_high_resolution_clock::now(); - - _stats.record(ConnectionStats::Stats::SentTimeoutNAK); - } -} - SequenceNumber Connection::nextACK() const { if (_lossList.getLength() > 0) { return _lossList.getFirstSequenceNumber() - 1; @@ -452,21 +309,6 @@ bool Connection::processReceivedSequenceNumber(SequenceNumber sequenceNumber, in // mark our last receive time as now (to push the potential expiry farther) _lastReceiveTime = p_high_resolution_clock::now(); - if (_congestionControl->shouldProbe()) { - // check if this is a packet pair we should estimate bandwidth from, or just a regular packet - if (((uint32_t) sequenceNumber & 0xF) == 0) { - _receiveWindow.onProbePair1Arrival(); - } else if (((uint32_t) sequenceNumber & 0xF) == 1) { - // only use this packet for bandwidth estimation if we didn't just receive a control packet in its place - if (!_receivedControlProbeTail) { - _receiveWindow.onProbePair2Arrival(); - } else { - // reset our control probe tail marker so the next probe that comes with data can be used - _receivedControlProbeTail = false; - } - } - } - _receiveWindow.onPacketArrival(); // If this is not the next sequence number, report loss @@ -476,24 +318,6 @@ bool Connection::processReceivedSequenceNumber(SequenceNumber sequenceNumber, in } else { _lossList.append(_lastReceivedSequenceNumber + 1, sequenceNumber - 1); } - - if (_congestionControl->shouldNAK()) { - // Send a NAK packet - sendNAK(sequenceNumber); - - // figure out when we should send the next loss report, if we haven't heard anything back - _nakInterval = estimatedTimeout(); - - int receivedPacketsPerSecond = _receiveWindow.getPacketReceiveSpeed(); - if (receivedPacketsPerSecond > 0) { - // the NAK interval is at least the _minNAKInterval - // but might be the time required for all lost packets to be retransmitted - _nakInterval += (int) (_lossList.getLength() * (USECS_PER_SECOND / receivedPacketsPerSecond)); - } - - // the NAK interval is at least the _minNAKInterval but might be the value calculated above, if that is larger - _nakInterval = std::max(_nakInterval, _minNAKInterval); - } } bool wasDuplicate = false; @@ -505,22 +329,9 @@ bool Connection::processReceivedSequenceNumber(SequenceNumber sequenceNumber, in // Otherwise, it could be a resend, try and remove it from the loss list wasDuplicate = !_lossList.remove(sequenceNumber); } - - // increment the counters for data packets received - ++_packetsSinceACK; - - // check if we need to send an ACK, according to CC params - if (_congestionControl->_ackInterval == 1) { - // using a congestion control that ACKs every packet (like TCP Vegas) - sendACK(true); - } else if (_congestionControl->_ackInterval > 0 && _packetsSinceACK >= _congestionControl->_ackInterval * _acksDuringSYN) { - _acksDuringSYN++; - sendACK(false); - } else if (_congestionControl->_lightACKInterval > 0 - && _packetsSinceACK >= _congestionControl->_lightACKInterval * _lightACKsDuringSYN) { - sendLightACK(); - ++_lightACKsDuringSYN; - } + + // using a congestion control that ACKs every packet (like TCP Vegas) + sendACK(true); if (wasDuplicate) { _stats.record(ConnectionStats::Stats::Duplicate); @@ -544,37 +355,12 @@ void Connection::processControl(ControlPacketPointer controlPacket) { processACK(move(controlPacket)); } break; - case ControlPacket::LightACK: - if (_hasReceivedHandshakeACK) { - processLightACK(move(controlPacket)); - } - break; - case ControlPacket::ACK2: - if (_hasReceivedHandshake) { - processACK2(move(controlPacket)); - } - break; - case ControlPacket::NAK: - if (_hasReceivedHandshakeACK) { - processNAK(move(controlPacket)); - } - break; - case ControlPacket::TimeoutNAK: - if (_hasReceivedHandshakeACK) { - processTimeoutNAK(move(controlPacket)); - } - break; case ControlPacket::Handshake: processHandshake(move(controlPacket)); break; case ControlPacket::HandshakeACK: processHandshakeACK(move(controlPacket)); break; - case ControlPacket::ProbeTail: - if (_isReceivingData) { - processProbeTail(move(controlPacket)); - } - break; case ControlPacket::HandshakeRequest: if (_hasReceivedHandshakeACK) { // We're already in a state where we've received a handshake ack, so we are likely in a state @@ -587,31 +373,16 @@ void Connection::processControl(ControlPacketPointer controlPacket) { stopSendQueue(); } break; + case ControlPacket::LightACK: + case ControlPacket::ACK2: + case ControlPacket::NAK: + case ControlPacket::TimeoutNAK: + case ControlPacket::ProbeTail: + break; } } void Connection::processACK(ControlPacketPointer controlPacket) { - // read the ACK sub-sequence number - SequenceNumber currentACKSubSequenceNumber; - controlPacket->readPrimitive(¤tACKSubSequenceNumber); - - // Check if we need send an ACK2 for this ACK - // This will be the case if it has been longer than the sync interval OR - // it looks like they haven't received our ACK2 for this ACK - auto currentTime = p_high_resolution_clock::now(); - static p_high_resolution_clock::time_point lastACK2SendTime = - p_high_resolution_clock::now() - std::chrono::microseconds(_synInterval); - - microseconds sinceLastACK2 = duration_cast(currentTime - lastACK2SendTime); - - if (_congestionControl->shouldACK2() - && (sinceLastACK2.count() >= _synInterval || currentACKSubSequenceNumber == _lastSentACK2)) { - // Send ACK2 packet - sendACK2(currentACKSubSequenceNumber); - - lastACK2SendTime = p_high_resolution_clock::now(); - } - // read the ACKed sequence number SequenceNumber ack; controlPacket->readPrimitive(&ack); @@ -661,27 +432,23 @@ void Connection::processACK(ControlPacketPointer controlPacket) { _congestionControl->setRTT(_rtt); if (controlPacket->bytesLeftToRead() > 0) { - int32_t receiveRate, bandwidth; + int32_t receiveRate; - Q_ASSERT_X(controlPacket->bytesLeftToRead() == sizeof(receiveRate) + sizeof(bandwidth), + Q_ASSERT_X(controlPacket->bytesLeftToRead() == sizeof(receiveRate), "Connection::processACK", "sync interval ACK packet does not contain expected data"); controlPacket->readPrimitive(&receiveRate); - controlPacket->readPrimitive(&bandwidth); - // set the delivery rate and bandwidth for congestion control + // set the delivery rate for congestion control // these are calculated using an EWMA static const int EMWA_ALPHA_NUMERATOR = 8; // record these samples in connection stats _stats.recordSendRate(receiveRate); - _stats.recordEstimatedBandwidth(bandwidth); _deliveryRate = (_deliveryRate * (EMWA_ALPHA_NUMERATOR - 1) + receiveRate) / EMWA_ALPHA_NUMERATOR; - _bandwidth = (_bandwidth * (EMWA_ALPHA_NUMERATOR - 1) + bandwidth) / EMWA_ALPHA_NUMERATOR; _congestionControl->setReceiveRate(_deliveryRate); - _congestionControl->setBandwidth(_bandwidth); } // give this ACK to the congestion control and update the send queue parameters @@ -695,92 +462,6 @@ void Connection::processACK(ControlPacketPointer controlPacket) { _stats.record(ConnectionStats::Stats::ProcessedACK); } -void Connection::processLightACK(ControlPacketPointer controlPacket) { - // read the ACKed sequence number - SequenceNumber ack; - controlPacket->readPrimitive(&ack); - - // must be larger than the last received ACK to be processed - if (ack > _lastReceivedACK) { - // NOTE: the following makes sense in UDT where there is a dynamic receive buffer. - // Since we have a receive buffer that is always of a default size, we don't use this light ACK to - // drop the flow window size. - - // decrease the flow window size by the offset between the last received ACK and this ACK - // _flowWindowSize -= seqoff(_lastReceivedACK, ack); - - // update the last received ACK to the this one - _lastReceivedACK = ack; - - // send light ACK to the send queue - getSendQueue().ack(ack); - } - - _stats.record(ConnectionStats::Stats::ReceivedLightACK); -} - -void Connection::processACK2(ControlPacketPointer controlPacket) { - // pull the sub sequence number from the packet - SequenceNumber subSequenceNumber; - controlPacket->readPrimitive(&subSequenceNumber); - - // check if we had that subsequence number in our map - auto it = std::find_if_not(_sentACKs.begin(), _sentACKs.end(), [&subSequenceNumber](const ACKListPair& pair){ - return pair.first < subSequenceNumber; - }); - - if (it != _sentACKs.end()) { - if (it->first == subSequenceNumber){ - // update the RTT using the ACK window - - // calculate the RTT (time now - time ACK sent) - auto now = p_high_resolution_clock::now(); - int rtt = duration_cast(now - it->second.second).count(); - - updateRTT(rtt); - // write this RTT to stats - _stats.recordRTT(rtt); - - // set the RTT for congestion control - _congestionControl->setRTT(_rtt); - - // update the last ACKed ACK - if (it->second.first > _lastReceivedAcknowledgedACK) { - _lastReceivedAcknowledgedACK = it->second.first; - } - } else if (it->first < subSequenceNumber) { - Q_UNREACHABLE(); - } - } - - // erase this sub-sequence number and anything below it now that we've gotten our timing information - _sentACKs.erase(_sentACKs.begin(), it); - - _stats.record(ConnectionStats::Stats::ReceivedACK2); -} - -void Connection::processNAK(ControlPacketPointer controlPacket) { - // read the loss report - SequenceNumber start, end; - controlPacket->readPrimitive(&start); - - end = start; - - if (controlPacket->bytesLeftToRead() >= (qint64)sizeof(SequenceNumber)) { - controlPacket->readPrimitive(&end); - } - - // send that off to the send queue so it knows there was loss - getSendQueue().nak(start, end); - - // give the loss to the congestion control object and update the send queue parameters - updateCongestionControlAndSendQueue([this, start, end] { - _congestionControl->onLoss(start, end); - }); - - _stats.record(ConnectionStats::Stats::ReceivedNAK); -} - void Connection::processHandshake(ControlPacketPointer controlPacket) { SequenceNumber initialSequenceNumber; controlPacket->readPrimitive(&initialSequenceNumber); @@ -829,68 +510,27 @@ void Connection::processHandshakeACK(ControlPacketPointer controlPacket) { } } -void Connection::processTimeoutNAK(ControlPacketPointer controlPacket) { - // Override SendQueue's LossList with the timeout NAK list - getSendQueue().overrideNAKListFromPacket(*controlPacket); - - // we don't tell the congestion control object there was loss here - this matches UDTs implementation - // a possible improvement would be to tell it which new loss this timeout packet told us about - - _stats.record(ConnectionStats::Stats::ReceivedTimeoutNAK); -} - -void Connection::processProbeTail(ControlPacketPointer controlPacket) { - if (((uint32_t) _lastReceivedSequenceNumber & 0xF) == 0) { - // this is the second packet in a probe set so we can estimate bandwidth - // the sender sent this to us in lieu of sending new data (because they didn't have any) - -#ifdef UDT_CONNECTION_DEBUG - qCDebug(networking) << "Processing second packet of probe from control packet instead of data packet"; -#endif - - _receiveWindow.onProbePair2Arrival(); - - // mark that we processed a control packet for the second in the pair and we should not mark - // the next data packet received - _receivedControlProbeTail = true; - } -} - void Connection::resetReceiveState() { // reset all SequenceNumber member variables back to default SequenceNumber defaultSequenceNumber; _lastReceivedSequenceNumber = defaultSequenceNumber; - - _lastReceivedAcknowledgedACK = defaultSequenceNumber; - _currentACKSubSequenceNumber = defaultSequenceNumber; - + _lastSentACK = defaultSequenceNumber; - // clear the sent ACKs - _sentACKs.clear(); - - // clear the loss list and _lastNAKTime + // clear the loss list _lossList.clear(); - _lastNAKTime = p_high_resolution_clock::now(); - - // the _nakInterval need not be reset, that will happen on loss // clear sync variables _isReceivingData = false; _connectionStart = p_high_resolution_clock::now(); - _acksDuringSYN = 1; - _lightACKsDuringSYN = 1; - _packetsSinceACK = 0; - // reset RTT to initial value resetRTT(); // clear the intervals in the receive window _receiveWindow.reset(); - _receivedControlProbeTail = false; // clear any pending received messages for (auto& pendingMessage : _pendingReceivedMessages) { @@ -920,7 +560,7 @@ void Connection::updateRTT(int rtt) { } int Connection::estimatedTimeout() const { - return _congestionControl->_userDefinedRTO ? _congestionControl->_rto : _rtt + _rttVariance * 4; + return _rtt + _rttVariance * 4; } void Connection::updateCongestionControlAndSendQueue(std::function congestionCallback) { diff --git a/libraries/networking/src/udt/Connection.h b/libraries/networking/src/udt/Connection.h index 0017eb204a..ebe58e32e2 100644 --- a/libraries/networking/src/udt/Connection.h +++ b/libraries/networking/src/udt/Connection.h @@ -51,9 +51,6 @@ private: class Connection : public QObject { Q_OBJECT public: - using SequenceNumberTimePair = std::pair; - using ACKListPair = std::pair; - using SentACKList = std::list; using ControlPacketPointer = std::unique_ptr; Connection(Socket* parentSocket, HifiSockAddr destination, std::unique_ptr congestionControl); @@ -87,23 +84,13 @@ private slots: void recordRetransmission(int wireSize, SequenceNumber sequenceNumber, p_high_resolution_clock::time_point timePoint); void queueInactive(); void queueTimeout(); - void queueShortCircuitLoss(quint32 sequenceNumber); private: void sendACK(bool wasCausedBySyncTimeout = true); - void sendLightACK(); - void sendACK2(SequenceNumber currentACKSubSequenceNumber); - void sendNAK(SequenceNumber sequenceNumberRecieved); - void sendTimeoutNAK(); void processACK(ControlPacketPointer controlPacket); - void processLightACK(ControlPacketPointer controlPacket); - void processACK2(ControlPacketPointer controlPacket); - void processNAK(ControlPacketPointer controlPacket); - void processTimeoutNAK(ControlPacketPointer controlPacket); void processHandshake(ControlPacketPointer controlPacket); void processHandshakeACK(ControlPacketPointer controlPacket); - void processProbeTail(ControlPacketPointer controlPacket); void resetReceiveState(); void resetRTT(); @@ -120,10 +107,6 @@ private: int _synInterval; // Periodical Rate Control Interval, in microseconds - int _nakInterval { -1 }; // NAK timeout interval, in microseconds, set on loss - int _minNAKInterval { 100000 }; // NAK timeout interval lower bound, default of 100ms - p_high_resolution_clock::time_point _lastNAKTime = p_high_resolution_clock::now(); - bool _hasReceivedHandshake { false }; // flag for receipt of handshake from server bool _hasReceivedHandshakeACK { false }; // flag for receipt of handshake ACK from client bool _didRequestHandshake { false }; // flag for request of handshake from server @@ -141,43 +124,28 @@ private: LossList _lossList; // List of all missing packets SequenceNumber _lastReceivedSequenceNumber; // The largest sequence number received from the peer SequenceNumber _lastReceivedACK; // The last ACK received - SequenceNumber _lastReceivedAcknowledgedACK; // The last sent ACK that has been acknowledged via an ACK2 from the peer - SequenceNumber _currentACKSubSequenceNumber; // The current ACK sub-sequence number (used for Acknowledgment of ACKs) SequenceNumber _lastSentACK; // The last sent ACK - SequenceNumber _lastSentACK2; // The last sent ACK sub-sequence number in an ACK2 - - int _acksDuringSYN { 1 }; // The number of non-SYN ACKs sent during SYN - int _lightACKsDuringSYN { 1 }; // The number of lite ACKs sent during SYN interval int32_t _rtt; // RTT, in microseconds int32_t _rttVariance; // RTT variance int _flowWindowSize { udt::MAX_PACKETS_IN_FLIGHT }; // Flow control window size - int _bandwidth { 1 }; // Exponential moving average for estimated bandwidth, in packets per second int _deliveryRate { 16 }; // Exponential moving average for receiver's receive rate, in packets per second - SentACKList _sentACKs; // Map of ACK sub-sequence numbers to ACKed sequence number and sent time - Socket* _parentSocket { nullptr }; HifiSockAddr _destination; - PacketTimeWindow _receiveWindow { 16, 64 }; // Window of interval between packets (16) and probes (64) for timing - bool _receivedControlProbeTail { false }; // Marker for receipt of control packet probe tail (in lieu of probe with data) + PacketTimeWindow _receiveWindow { 16 }; // Window of interval between packets (16) std::unique_ptr _congestionControl; std::unique_ptr _sendQueue; std::map _pendingReceivedMessages; - - int _packetsSinceACK { 0 }; // The number of packets that have been received during the current ACK interval // Re-used control packets ControlPacketPointer _ackPacket; - ControlPacketPointer _lightACKPacket; - ControlPacketPointer _ack2Packet; - ControlPacketPointer _lossReport; ControlPacketPointer _handshakeACK; ConnectionStats _stats; diff --git a/libraries/networking/src/udt/ConnectionStats.cpp b/libraries/networking/src/udt/ConnectionStats.cpp index 986da062f2..e30c588dba 100644 --- a/libraries/networking/src/udt/ConnectionStats.cpp +++ b/libraries/networking/src/udt/ConnectionStats.cpp @@ -95,11 +95,6 @@ void ConnectionStats::recordReceiveRate(int sample) { _total.receiveRate = (int)((_total.receiveRate * EWMA_PREVIOUS_SAMPLES_WEIGHT) + (sample * EWMA_CURRENT_SAMPLE_WEIGHT)); } -void ConnectionStats::recordEstimatedBandwidth(int sample) { - _currentSample.estimatedBandwith = sample; - _total.estimatedBandwith = (int)((_total.estimatedBandwith * EWMA_PREVIOUS_SAMPLES_WEIGHT) + (sample * EWMA_CURRENT_SAMPLE_WEIGHT)); -} - void ConnectionStats::recordRTT(int sample) { _currentSample.rtt = sample; _total.rtt = (int)((_total.rtt * EWMA_PREVIOUS_SAMPLES_WEIGHT) + (sample * EWMA_CURRENT_SAMPLE_WEIGHT)); @@ -122,14 +117,6 @@ QDebug& operator<<(QDebug&& debug, const udt::ConnectionStats::Stats& stats) { HIFI_LOG_EVENT(SentACK) HIFI_LOG_EVENT(ReceivedACK) HIFI_LOG_EVENT(ProcessedACK) - HIFI_LOG_EVENT(SentLightACK) - HIFI_LOG_EVENT(ReceivedLightACK) - HIFI_LOG_EVENT(SentACK2) - HIFI_LOG_EVENT(ReceivedACK2) - HIFI_LOG_EVENT(SentNAK) - HIFI_LOG_EVENT(ReceivedNAK) - HIFI_LOG_EVENT(SentTimeoutNAK) - HIFI_LOG_EVENT(ReceivedTimeoutNAK) HIFI_LOG_EVENT(Retransmission) HIFI_LOG_EVENT(Duplicate) ; diff --git a/libraries/networking/src/udt/ConnectionStats.h b/libraries/networking/src/udt/ConnectionStats.h index 7ec7b163ee..0fdd1636b3 100644 --- a/libraries/networking/src/udt/ConnectionStats.h +++ b/libraries/networking/src/udt/ConnectionStats.h @@ -24,14 +24,6 @@ public: SentACK, ReceivedACK, ProcessedACK, - SentLightACK, - ReceivedLightACK, - SentACK2, - ReceivedACK2, - SentNAK, - ReceivedNAK, - SentTimeoutNAK, - ReceivedTimeoutNAK, Retransmission, Duplicate, @@ -89,7 +81,6 @@ public: void recordSendRate(int sample); void recordReceiveRate(int sample); - void recordEstimatedBandwidth(int sample); void recordRTT(int sample); void recordCongestionWindowSize(int sample); void recordPacketSendPeriod(int sample); diff --git a/libraries/networking/src/udt/PacketTimeWindow.cpp b/libraries/networking/src/udt/PacketTimeWindow.cpp index 0c95d21bc6..c95045c48f 100644 --- a/libraries/networking/src/udt/PacketTimeWindow.cpp +++ b/libraries/networking/src/udt/PacketTimeWindow.cpp @@ -20,20 +20,16 @@ using namespace udt; using namespace std::chrono; static const int DEFAULT_PACKET_INTERVAL_MICROSECONDS = 1000000; // 1s -static const int DEFAULT_PROBE_INTERVAL_MICROSECONDS = 1000; // 1ms -PacketTimeWindow::PacketTimeWindow(int numPacketIntervals, int numProbeIntervals) : +PacketTimeWindow::PacketTimeWindow(int numPacketIntervals) : _numPacketIntervals(numPacketIntervals), - _numProbeIntervals(numProbeIntervals), - _packetIntervals(_numPacketIntervals, DEFAULT_PACKET_INTERVAL_MICROSECONDS), - _probeIntervals(_numProbeIntervals, DEFAULT_PROBE_INTERVAL_MICROSECONDS) + _packetIntervals(_numPacketIntervals, DEFAULT_PACKET_INTERVAL_MICROSECONDS) { } void PacketTimeWindow::reset() { _packetIntervals.assign(_numPacketIntervals, DEFAULT_PACKET_INTERVAL_MICROSECONDS); - _probeIntervals.assign(_numProbeIntervals, DEFAULT_PROBE_INTERVAL_MICROSECONDS); } template @@ -87,11 +83,6 @@ int32_t PacketTimeWindow::getPacketReceiveSpeed() const { return meanOfMedianFilteredValues(_packetIntervals, _numPacketIntervals, _numPacketIntervals / 2); } -int32_t PacketTimeWindow::getEstimatedBandwidth() const { - // return mean value of median filtered values (per second) - return meanOfMedianFilteredValues(_probeIntervals, _numProbeIntervals); -} - void PacketTimeWindow::onPacketArrival() { // take the current time @@ -108,18 +99,3 @@ void PacketTimeWindow::onPacketArrival() { // remember this as the last packet arrival time _lastPacketTime = now; } - -void PacketTimeWindow::onProbePair1Arrival() { - // take the current time as the first probe time - _firstProbeTime = p_high_resolution_clock::now(); -} - -void PacketTimeWindow::onProbePair2Arrival() { - // store the interval between the two probes - auto now = p_high_resolution_clock::now(); - - _probeIntervals[_currentProbeInterval++] = duration_cast(now - _firstProbeTime).count(); - - // reset the currentProbeInterval index when it wraps - _currentProbeInterval %= _numProbeIntervals; -} diff --git a/libraries/networking/src/udt/PacketTimeWindow.h b/libraries/networking/src/udt/PacketTimeWindow.h index 6f7ed9f70f..359097ac8c 100644 --- a/libraries/networking/src/udt/PacketTimeWindow.h +++ b/libraries/networking/src/udt/PacketTimeWindow.h @@ -22,28 +22,21 @@ namespace udt { class PacketTimeWindow { public: - PacketTimeWindow(int numPacketIntervals = 16, int numProbeIntervals = 16); + PacketTimeWindow(int numPacketIntervals = 16); void onPacketArrival(); - void onProbePair1Arrival(); - void onProbePair2Arrival(); int32_t getPacketReceiveSpeed() const; - int32_t getEstimatedBandwidth() const; void reset(); private: int _numPacketIntervals { 0 }; // the number of packet intervals to store - int _numProbeIntervals { 0 }; // the number of probe intervals to store int _currentPacketInterval { 0 }; // index for the current packet interval - int _currentProbeInterval { 0 }; // index for the current probe interval std::vector _packetIntervals; // vector of microsecond intervals between packet arrivals - std::vector _probeIntervals; // vector of microsecond intervals between probe pair arrivals p_high_resolution_clock::time_point _lastPacketTime = p_high_resolution_clock::now(); // the time_point when last packet arrived - p_high_resolution_clock::time_point _firstProbeTime = p_high_resolution_clock::now(); // the time_point when first probe in pair arrived }; } diff --git a/libraries/networking/src/udt/SendQueue.cpp b/libraries/networking/src/udt/SendQueue.cpp index 0df54d539d..b1dfb9a8cf 100644 --- a/libraries/networking/src/udt/SendQueue.cpp +++ b/libraries/networking/src/udt/SendQueue.cpp @@ -164,16 +164,6 @@ void SendQueue::ack(SequenceNumber ack) { _emptyCondition.notify_one(); } -void SendQueue::nak(SequenceNumber start, SequenceNumber end) { - { - std::lock_guard nakLocker(_naksLock); - _naks.insert(start, end); - } - - // call notify_one on the condition_variable_any in case the send thread is sleeping waiting for losses to re-send - _emptyCondition.notify_one(); -} - void SendQueue::fastRetransmit(udt::SequenceNumber ack) { { std::lock_guard nakLocker(_naksLock); @@ -184,28 +174,6 @@ void SendQueue::fastRetransmit(udt::SequenceNumber ack) { _emptyCondition.notify_one(); } -void SendQueue::overrideNAKListFromPacket(ControlPacket& packet) { - { - std::lock_guard nakLocker(_naksLock); - _naks.clear(); - - SequenceNumber first, second; - while (packet.bytesLeftToRead() >= (qint64)(2 * sizeof(SequenceNumber))) { - packet.readPrimitive(&first); - packet.readPrimitive(&second); - - if (first == second) { - _naks.append(first); - } else { - _naks.append(first, second); - } - } - } - - // call notify_one on the condition_variable_any in case the send thread is sleeping waiting for losses to re-send - _emptyCondition.notify_one(); -} - void SendQueue::sendHandshake() { std::unique_lock handshakeLock { _handshakeMutex }; if (!_hasReceivedHandshakeACK) { @@ -268,8 +236,6 @@ bool SendQueue::sendNewPacketAndAddToSentList(std::unique_ptr newPacket, _naks.append(sequenceNumber); } - emit shortCircuitLoss(quint32(sequenceNumber)); - return false; } else { return true; @@ -385,10 +351,6 @@ void SendQueue::run() { } } -void SendQueue::setProbePacketEnabled(bool enabled) { - _shouldSendProbes = enabled; -} - int SendQueue::maybeSendNewPacket() { if (!isFlowWindowFull()) { // we didn't re-send a packet, so time to send a new one @@ -397,40 +359,15 @@ int SendQueue::maybeSendNewPacket() { SequenceNumber nextNumber = getNextSequenceNumber(); // grab the first packet we will send - std::unique_ptr firstPacket = _packets.takePacket(); - Q_ASSERT(firstPacket); + std::unique_ptr packet = _packets.takePacket(); + Q_ASSERT(packet); - // attempt to send the first packet - if (sendNewPacketAndAddToSentList(move(firstPacket), nextNumber)) { - std::unique_ptr secondPacket; - bool shouldSendPairTail = false; + // attempt to send the packet + sendNewPacketAndAddToSentList(move(packet), nextNumber); - if (_shouldSendProbes && ((uint32_t) nextNumber & 0xF) == 0) { - // the first packet is the first in a probe pair - every 16 (rightmost 16 bits = 0) packets - // pull off a second packet if we can before we unlock - shouldSendPairTail = true; - - secondPacket = _packets.takePacket(); - } - - // do we have a second in a pair to send as well? - if (secondPacket) { - sendNewPacketAndAddToSentList(move(secondPacket), getNextSequenceNumber()); - } else if (shouldSendPairTail) { - // we didn't get a second packet to send in the probe pair - // send a control packet of type ProbePairTail so the receiver can still do - // proper bandwidth estimation - static auto pairTailPacket = ControlPacket::create(ControlPacket::ProbeTail); - _socket->writeBasePacket(*pairTailPacket, _destination); - } - - // return the number of attempted packet sends - return shouldSendPairTail ? 2 : 1; - } else { - // we attempted to send a single packet, return 1 - return 1; - } + // we attempted to send a packet, return 1 + return 1; } } diff --git a/libraries/networking/src/udt/SendQueue.h b/libraries/networking/src/udt/SendQueue.h index a11aacdb91..65b1b89c7e 100644 --- a/libraries/networking/src/udt/SendQueue.h +++ b/libraries/networking/src/udt/SendQueue.h @@ -69,16 +69,12 @@ public: void setEstimatedTimeout(int estimatedTimeout) { _estimatedTimeout = estimatedTimeout; } void setSyncInterval(int syncInterval) { _syncInterval = syncInterval; } - - void setProbePacketEnabled(bool enabled); public slots: void stop(); void ack(SequenceNumber ack); - void nak(SequenceNumber start, SequenceNumber end); void fastRetransmit(SequenceNumber ack); - void overrideNAKListFromPacket(ControlPacket& packet); void handshakeACK(); signals: @@ -87,7 +83,6 @@ signals: void queueInactive(); - void shortCircuitLoss(quint32 sequenceNumber); void timeout(); private slots: @@ -145,9 +140,6 @@ private: std::condition_variable _handshakeACKCondition; std::condition_variable_any _emptyCondition; - - - std::atomic _shouldSendProbes { true }; }; } diff --git a/libraries/networking/src/udt/TCPVegasCC.cpp b/libraries/networking/src/udt/TCPVegasCC.cpp index 5738ea8421..e39e474f39 100644 --- a/libraries/networking/src/udt/TCPVegasCC.cpp +++ b/libraries/networking/src/udt/TCPVegasCC.cpp @@ -21,8 +21,6 @@ TCPVegasCC::TCPVegasCC() { _packetSendPeriod = 0.0; _congestionWindowSize = 2; - setAckInterval(1); // TCP sends an ACK for every packet received - // set our minimum RTT variables to the maximum possible value // we can't do this as a member initializer until our VS has support for constexpr _currentMinRTT = std::numeric_limits::max(); diff --git a/libraries/networking/src/udt/TCPVegasCC.h b/libraries/networking/src/udt/TCPVegasCC.h index 862ea36d8f..38b70ea325 100644 --- a/libraries/networking/src/udt/TCPVegasCC.h +++ b/libraries/networking/src/udt/TCPVegasCC.h @@ -27,13 +27,8 @@ public: TCPVegasCC(); virtual bool onACK(SequenceNumber ackNum, p_high_resolution_clock::time_point receiveTime) override; - virtual void onLoss(SequenceNumber rangeStart, SequenceNumber rangeEnd) override {}; virtual void onTimeout() override {}; - virtual bool shouldNAK() override { return false; } - virtual bool shouldACK2() override { return false; } - virtual bool shouldProbe() override { return false; } - virtual void onPacketSent(int wireSize, SequenceNumber seqNum, p_high_resolution_clock::time_point timePoint) override; protected: @@ -65,7 +60,6 @@ private: int _duplicateACKCount { 0 }; // Counter for duplicate ACKs received int _slowStartOddAdjust { 0 }; // Marker for every window adjustment every other RTT in slow-start - }; } diff --git a/tools/udt-test/src/UDTTest.cpp b/tools/udt-test/src/UDTTest.cpp index ce89f04ce5..b6efe4b42e 100644 --- a/tools/udt-test/src/UDTTest.cpp +++ b/tools/udt-test/src/UDTTest.cpp @@ -58,14 +58,12 @@ const QCommandLineOption STATS_INTERVAL { const QStringList CLIENT_STATS_TABLE_HEADERS { "Send (Mb/s)", "Est. Max (Mb/s)", "RTT (ms)", "CW (P)", "Period (us)", - "Recv ACK", "Procd ACK", "Recv LACK", "Recv NAK", "Recv TNAK", - "Sent ACK2", "Sent Packets", "Re-sent Packets" + "Recv ACK", "Procd ACK", "Sent Packets", "Re-sent Packets" }; const QStringList SERVER_STATS_TABLE_HEADERS { " Mb/s ", "Recv Mb/s", "Est. Max (Mb/s)", "RTT (ms)", "CW (P)", - "Sent ACK", "Sent LACK", "Sent NAK", "Sent TNAK", - "Recv ACK2", "Duplicates (P)" + "Sent ACK", "Duplicates (P)" }; UDTTest::UDTTest(int& argc, char** argv) : @@ -387,11 +385,6 @@ void UDTTest::sampleStats() { QString::number(stats.packetSendPeriod).rightJustified(CLIENT_STATS_TABLE_HEADERS[++headerIndex].size()), QString::number(stats.events[udt::ConnectionStats::Stats::ReceivedACK]).rightJustified(CLIENT_STATS_TABLE_HEADERS[++headerIndex].size()), QString::number(stats.events[udt::ConnectionStats::Stats::ProcessedACK]).rightJustified(CLIENT_STATS_TABLE_HEADERS[++headerIndex].size()), - QString::number(stats.events[udt::ConnectionStats::Stats::ReceivedLightACK]).rightJustified(CLIENT_STATS_TABLE_HEADERS[++headerIndex].size()), - QString::number(stats.events[udt::ConnectionStats::Stats::ReceivedNAK]).rightJustified(CLIENT_STATS_TABLE_HEADERS[++headerIndex].size()), - QString::number(stats.events[udt::ConnectionStats::Stats::ReceivedTimeoutNAK]).rightJustified(CLIENT_STATS_TABLE_HEADERS[++headerIndex].size()), - QString::number(stats.events[udt::ConnectionStats::Stats::SentACK2]).rightJustified(CLIENT_STATS_TABLE_HEADERS[++headerIndex].size()), - QString::number(stats.sentPackets).rightJustified(CLIENT_STATS_TABLE_HEADERS[++headerIndex].size()), QString::number(stats.events[udt::ConnectionStats::Stats::Retransmission]).rightJustified(CLIENT_STATS_TABLE_HEADERS[++headerIndex].size()) }; @@ -420,10 +413,6 @@ void UDTTest::sampleStats() { QString::number(stats.rtt / USECS_PER_MSEC, 'f', 2).rightJustified(SERVER_STATS_TABLE_HEADERS[++headerIndex].size()), QString::number(stats.congestionWindowSize).rightJustified(SERVER_STATS_TABLE_HEADERS[++headerIndex].size()), QString::number(stats.events[udt::ConnectionStats::Stats::SentACK]).rightJustified(SERVER_STATS_TABLE_HEADERS[++headerIndex].size()), - QString::number(stats.events[udt::ConnectionStats::Stats::SentLightACK]).rightJustified(SERVER_STATS_TABLE_HEADERS[++headerIndex].size()), - QString::number(stats.events[udt::ConnectionStats::Stats::SentNAK]).rightJustified(SERVER_STATS_TABLE_HEADERS[++headerIndex].size()), - QString::number(stats.events[udt::ConnectionStats::Stats::SentTimeoutNAK]).rightJustified(SERVER_STATS_TABLE_HEADERS[++headerIndex].size()), - QString::number(stats.events[udt::ConnectionStats::Stats::ReceivedACK2]).rightJustified(SERVER_STATS_TABLE_HEADERS[++headerIndex].size()), QString::number(stats.events[udt::ConnectionStats::Stats::Duplicate]).rightJustified(SERVER_STATS_TABLE_HEADERS[++headerIndex].size()) }; From 9a1c4afbd85b9ee5a62352c9a7445983f96afb0c Mon Sep 17 00:00:00 2001 From: Clement Date: Tue, 17 Jul 2018 14:01:14 -0700 Subject: [PATCH 023/332] More cleanup --- .../networking/src/udt/CongestionControl.h | 20 +-- libraries/networking/src/udt/Connection.cpp | 159 ++---------------- libraries/networking/src/udt/Connection.h | 21 +-- .../networking/src/udt/PacketHeaders.cpp | 2 +- .../networking/src/udt/PacketTimeWindow.cpp | 101 ----------- .../networking/src/udt/PacketTimeWindow.h | 44 ----- libraries/networking/src/udt/Socket.cpp | 47 ------ libraries/networking/src/udt/Socket.h | 4 - libraries/networking/src/udt/TCPVegasCC.cpp | 8 +- libraries/networking/src/udt/TCPVegasCC.h | 2 + 10 files changed, 25 insertions(+), 383 deletions(-) delete mode 100644 libraries/networking/src/udt/PacketTimeWindow.cpp delete mode 100644 libraries/networking/src/udt/PacketTimeWindow.h diff --git a/libraries/networking/src/udt/CongestionControl.h b/libraries/networking/src/udt/CongestionControl.h index 6998f4fe65..7093e8bd96 100644 --- a/libraries/networking/src/udt/CongestionControl.h +++ b/libraries/networking/src/udt/CongestionControl.h @@ -32,11 +32,9 @@ class CongestionControl { friend class Connection; public: - CongestionControl() {}; - CongestionControl(int synInterval) : _synInterval(synInterval) {} - virtual ~CongestionControl() {} - - int synInterval() const { return _synInterval; } + CongestionControl() = default; + virtual ~CongestionControl() = default; + void setMaxBandwidth(int maxBandwidth); virtual void init() {} @@ -47,31 +45,25 @@ public: virtual void onTimeout() {} virtual void onPacketSent(int wireSize, SequenceNumber seqNum, p_high_resolution_clock::time_point timePoint) {} + + virtual int estimatedTimeout() const = 0; protected: void setMSS(int mss) { _mss = mss; } - void setMaxCongestionWindowSize(int window) { _maxCongestionWindowSize = window; } virtual void setInitialSendSequenceNumber(SequenceNumber seqNum) = 0; void setSendCurrentSequenceNumber(SequenceNumber seqNum) { _sendCurrSeqNum = seqNum; } - void setReceiveRate(int rate) { _receiveRate = rate; } - void setRTT(int rtt) { _rtt = rtt; } void setPacketSendPeriod(double newSendPeriod); // call this internally to ensure send period doesn't go past max bandwidth double _packetSendPeriod { 1.0 }; // Packet sending period, in microseconds int _congestionWindowSize { 16 }; // Congestion window size, in packets std::atomic _maxBandwidth { -1 }; // Maximum desired bandwidth, bits per second - int _maxCongestionWindowSize { 0 }; // maximum cwnd size, in packets int _mss { 0 }; // Maximum Packet Size, including all packet headers SequenceNumber _sendCurrSeqNum; // current maximum seq num sent out - int _receiveRate { 0 }; // packet arrive rate at receiver side, packets per second - int _rtt { 0 }; // current estimated RTT, microsecond private: CongestionControl(const CongestionControl& other) = delete; CongestionControl& operator=(const CongestionControl& other) = delete; - - int _synInterval { DEFAULT_SYN_INTERVAL }; }; @@ -79,8 +71,6 @@ class CongestionControlVirtualFactory { public: virtual ~CongestionControlVirtualFactory() {} - static int synInterval() { return DEFAULT_SYN_INTERVAL; } - virtual std::unique_ptr create() = 0; }; diff --git a/libraries/networking/src/udt/Connection.cpp b/libraries/networking/src/udt/Connection.cpp index b317e87e87..8677e7f2f5 100644 --- a/libraries/networking/src/udt/Connection.cpp +++ b/libraries/networking/src/udt/Connection.cpp @@ -39,19 +39,9 @@ Connection::Connection(Socket* parentSocket, HifiSockAddr destination, std::uniq Q_ASSERT_X(_congestionControl, "Connection::Connection", "Must be called with a valid CongestionControl object"); _congestionControl->init(); - - // setup default SYN, RTT and RTT Variance based on the SYN interval in CongestionControl object - _synInterval = _congestionControl->synInterval(); - - resetRTT(); - - // set the initial RTT and flow window size on congestion control object - _congestionControl->setRTT(_rtt); - _congestionControl->setMaxCongestionWindowSize(_flowWindowSize); // Setup packets - static const int ACK_PACKET_PAYLOAD_BYTES = sizeof(_lastSentACK) - + sizeof(_rtt) + sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t); + static const int ACK_PACKET_PAYLOAD_BYTES = sizeof(SequenceNumber); static const int HANDSHAKE_ACK_PAYLOAD_BYTES = sizeof(SequenceNumber); _ackPacket = ControlPacket::create(ControlPacket::ACK, ACK_PACKET_PAYLOAD_BYTES); @@ -95,11 +85,6 @@ void Connection::stopSendQueue() { } } -void Connection::resetRTT() { - _rtt = _synInterval * 10; - _rttVariance = _rtt / 2; -} - void Connection::setMaxBandwidth(int maxBandwidth) { _congestionControl->setMaxBandwidth(maxBandwidth); } @@ -133,9 +118,8 @@ SendQueue& Connection::getSendQueue() { // set defaults on the send queue from our congestion control object and estimatedTimeout() _sendQueue->setPacketSendPeriod(_congestionControl->_packetSendPeriod); - _sendQueue->setSyncInterval(_synInterval); - _sendQueue->setEstimatedTimeout(estimatedTimeout()); - _sendQueue->setFlowWindowSize(std::min(_flowWindowSize, (int) _congestionControl->_congestionWindowSize)); + _sendQueue->setEstimatedTimeout(_congestionControl->estimatedTimeout()); + _sendQueue->setFlowWindowSize(_congestionControl->_congestionWindowSize); // give the randomized sequence number to the congestion control object _congestionControl->setInitialSendSequenceNumber(_sendQueue->getCurrentSequenceNumber()); @@ -199,23 +183,6 @@ void Connection::queueReceivedMessagePacket(std::unique_ptr packet) { } void Connection::sync() { - if (_isReceivingData) { - - // check if we should expire the receive portion of this connection - // this occurs if it has been 16 timeouts since the last data received and at least 5 seconds - static const int NUM_TIMEOUTS_BEFORE_EXPIRY = 16; - static const int MIN_SECONDS_BEFORE_EXPIRY = 5; - - auto now = p_high_resolution_clock::now(); - - auto sincePacketReceive = now - _lastReceiveTime; - - if (duration_cast(sincePacketReceive).count() >= NUM_TIMEOUTS_BEFORE_EXPIRY * estimatedTimeout() - && duration_cast(sincePacketReceive).count() >= MIN_SECONDS_BEFORE_EXPIRY ) { - // the receive side of this connection is expired - _isReceivingData = false; - } - } } void Connection::recordSentPackets(int wireSize, int payloadSize, @@ -231,44 +198,17 @@ void Connection::recordRetransmission(int wireSize, SequenceNumber seqNum, p_hig _congestionControl->onPacketSent(wireSize, seqNum, timePoint); } -void Connection::sendACK(bool wasCausedBySyncTimeout) { - static p_high_resolution_clock::time_point lastACKSendTime; - +void Connection::sendACK() { SequenceNumber nextACKNumber = nextACK(); - Q_ASSERT_X(nextACKNumber >= _lastSentACK, "Connection::sendACK", "Sending lower ACK, something is wrong"); // we have received new packets since the last sent ACK // or our congestion control dictates that we always send ACKs - - // update the last sent ACK - _lastSentACK = nextACKNumber; _ackPacket->reset(); // We need to reset it every time. // pack in the ACK number _ackPacket->writePrimitive(nextACKNumber); - - // pack in the RTT and variance - _ackPacket->writePrimitive(_rtt); - - // pack the available buffer size, in packets - // in our implementation we have no hard limit on receive buffer size, send the default value - _ackPacket->writePrimitive((int32_t) udt::MAX_PACKETS_IN_FLIGHT); - if (wasCausedBySyncTimeout) { - // grab the up to date packet receive speed - int32_t packetReceiveSpeed = _receiveWindow.getPacketReceiveSpeed(); - - // update those values in our connection stats - _stats.recordReceiveRate(packetReceiveSpeed); - - // pack in the receive speed - _ackPacket->writePrimitive(packetReceiveSpeed); - } - - // record this as the last ACK send time - lastACKSendTime = p_high_resolution_clock::now(); - // have the socket send off our packet _parentSocket->writeBasePacket(*_ackPacket, _destination); @@ -304,12 +244,8 @@ bool Connection::processReceivedSequenceNumber(SequenceNumber sequenceNumber, in return false; } - _isReceivingData = true; - // mark our last receive time as now (to push the potential expiry farther) _lastReceiveTime = p_high_resolution_clock::now(); - - _receiveWindow.onPacketArrival(); // If this is not the next sequence number, report loss if (sequenceNumber > _lastReceivedSequenceNumber + 1) { @@ -331,7 +267,7 @@ bool Connection::processReceivedSequenceNumber(SequenceNumber sequenceNumber, in } // using a congestion control that ACKs every packet (like TCP Vegas) - sendACK(true); + sendACK(); if (wasDuplicate) { _stats.record(ConnectionStats::Stats::Duplicate); @@ -397,22 +333,9 @@ void Connection::processACK(ControlPacketPointer controlPacket) { return; } - // read the RTT - int32_t rtt; - controlPacket->readPrimitive(&rtt); - - if (ack < _lastReceivedACK) { + if (ack <= _lastReceivedACK) { // this is an out of order ACK, bail - return; - } - - // this is a valid ACKed sequence number - update the flow window size and the last received ACK - int32_t packedFlowWindow; - controlPacket->readPrimitive(&packedFlowWindow); - - _flowWindowSize = packedFlowWindow; - - if (ack == _lastReceivedACK) { + // or // processing an already received ACK, bail return; } @@ -421,35 +344,7 @@ void Connection::processACK(ControlPacketPointer controlPacket) { // ACK the send queue so it knows what was received getSendQueue().ack(ack); - - // update the RTT - updateRTT(rtt); - - // write this RTT to stats - _stats.recordRTT(rtt); - - // set the RTT for congestion control - _congestionControl->setRTT(_rtt); - - if (controlPacket->bytesLeftToRead() > 0) { - int32_t receiveRate; - - Q_ASSERT_X(controlPacket->bytesLeftToRead() == sizeof(receiveRate), - "Connection::processACK", "sync interval ACK packet does not contain expected data"); - - controlPacket->readPrimitive(&receiveRate); - - // set the delivery rate for congestion control - // these are calculated using an EWMA - static const int EMWA_ALPHA_NUMERATOR = 8; - - // record these samples in connection stats - _stats.recordSendRate(receiveRate); - - _deliveryRate = (_deliveryRate * (EMWA_ALPHA_NUMERATOR - 1) + receiveRate) / EMWA_ALPHA_NUMERATOR; - - _congestionControl->setReceiveRate(_deliveryRate); - } + // give this ACK to the congestion control and update the send queue parameters updateCongestionControlAndSendQueue([this, ack, &controlPacket] { @@ -478,7 +373,6 @@ void Connection::processHandshake(ControlPacketPointer controlPacket) { resetReceiveState(); _initialReceiveSequenceNumber = initialSequenceNumber; _lastReceivedSequenceNumber = initialSequenceNumber - 1; - _lastSentACK = initialSequenceNumber - 1; } _handshakeACK->reset(); @@ -516,22 +410,13 @@ void Connection::resetReceiveState() { SequenceNumber defaultSequenceNumber; _lastReceivedSequenceNumber = defaultSequenceNumber; - - _lastSentACK = defaultSequenceNumber; // clear the loss list _lossList.clear(); // clear sync variables - _isReceivingData = false; _connectionStart = p_high_resolution_clock::now(); - // reset RTT to initial value - resetRTT(); - - // clear the intervals in the receive window - _receiveWindow.reset(); - // clear any pending received messages for (auto& pendingMessage : _pendingReceivedMessages) { _parentSocket->messageFailed(this, pendingMessage.first); @@ -539,30 +424,6 @@ void Connection::resetReceiveState() { _pendingReceivedMessages.clear(); } -void Connection::updateRTT(int rtt) { - // This updates the RTT using exponential weighted moving average - // This is the Jacobson's forumla for RTT estimation - // http://www.mathcs.emory.edu/~cheung/Courses/455/Syllabus/7-transport/Jacobson-88.pdf - - // Estimated RTT = (1 - x)(estimatedRTT) + (x)(sampleRTT) - // (where x = 0.125 via Jacobson) - - // Deviation = (1 - x)(deviation) + x |sampleRTT - estimatedRTT| - // (where x = 0.25 via Jacobson) - - static const int RTT_ESTIMATION_ALPHA_NUMERATOR = 8; - static const int RTT_ESTIMATION_VARIANCE_ALPHA_NUMERATOR = 4; - - _rtt = (_rtt * (RTT_ESTIMATION_ALPHA_NUMERATOR - 1) + rtt) / RTT_ESTIMATION_ALPHA_NUMERATOR; - - _rttVariance = (_rttVariance * (RTT_ESTIMATION_VARIANCE_ALPHA_NUMERATOR - 1) - + abs(rtt - _rtt)) / RTT_ESTIMATION_VARIANCE_ALPHA_NUMERATOR; -} - -int Connection::estimatedTimeout() const { - return _rtt + _rttVariance * 4; -} - void Connection::updateCongestionControlAndSendQueue(std::function congestionCallback) { // update the last sent sequence number in congestion control _congestionControl->setSendCurrentSequenceNumber(getSendQueue().getCurrentSequenceNumber()); @@ -574,8 +435,8 @@ void Connection::updateCongestionControlAndSendQueue(std::function cong // now that we've updated the congestion control, update the packet send period and flow window size sendQueue.setPacketSendPeriod(_congestionControl->_packetSendPeriod); - sendQueue.setEstimatedTimeout(estimatedTimeout()); - sendQueue.setFlowWindowSize(std::min(_flowWindowSize, (int) _congestionControl->_congestionWindowSize)); + sendQueue.setEstimatedTimeout(_congestionControl->estimatedTimeout()); + sendQueue.setFlowWindowSize(_congestionControl->_congestionWindowSize); // record connection stats _stats.recordPacketSendPeriod(_congestionControl->_packetSendPeriod); diff --git a/libraries/networking/src/udt/Connection.h b/libraries/networking/src/udt/Connection.h index ebe58e32e2..17e8a9b1f9 100644 --- a/libraries/networking/src/udt/Connection.h +++ b/libraries/networking/src/udt/Connection.h @@ -22,7 +22,6 @@ #include "ConnectionStats.h" #include "Constants.h" #include "LossList.h" -#include "PacketTimeWindow.h" #include "SendQueue.h" #include "../HifiSockAddr.h" @@ -86,35 +85,27 @@ private slots: void queueTimeout(); private: - void sendACK(bool wasCausedBySyncTimeout = true); + void sendACK(); void processACK(ControlPacketPointer controlPacket); void processHandshake(ControlPacketPointer controlPacket); void processHandshakeACK(ControlPacketPointer controlPacket); void resetReceiveState(); - void resetRTT(); SendQueue& getSendQueue(); SequenceNumber nextACK() const; - void updateRTT(int rtt); - - int estimatedTimeout() const; void updateCongestionControlAndSendQueue(std::function congestionCallback); void stopSendQueue(); - int _synInterval; // Periodical Rate Control Interval, in microseconds - bool _hasReceivedHandshake { false }; // flag for receipt of handshake from server bool _hasReceivedHandshakeACK { false }; // flag for receipt of handshake ACK from client bool _didRequestHandshake { false }; // flag for request of handshake from server p_high_resolution_clock::time_point _connectionStart = p_high_resolution_clock::now(); // holds the time_point for creation of this connection p_high_resolution_clock::time_point _lastReceiveTime; // holds the last time we received anything from sender - - bool _isReceivingData { false }; // flag used for expiry of receipt portion of connection SequenceNumber _initialSequenceNumber; // Randomized on Connection creation, identifies connection during re-connect requests SequenceNumber _initialReceiveSequenceNumber; // Randomized by peer Connection on creation, identifies connection during re-connect requests @@ -125,18 +116,8 @@ private: SequenceNumber _lastReceivedSequenceNumber; // The largest sequence number received from the peer SequenceNumber _lastReceivedACK; // The last ACK received - SequenceNumber _lastSentACK; // The last sent ACK - - int32_t _rtt; // RTT, in microseconds - int32_t _rttVariance; // RTT variance - int _flowWindowSize { udt::MAX_PACKETS_IN_FLIGHT }; // Flow control window size - - int _deliveryRate { 16 }; // Exponential moving average for receiver's receive rate, in packets per second - Socket* _parentSocket { nullptr }; HifiSockAddr _destination; - - PacketTimeWindow _receiveWindow { 16 }; // Window of interval between packets (16) std::unique_ptr _congestionControl; diff --git a/libraries/networking/src/udt/PacketHeaders.cpp b/libraries/networking/src/udt/PacketHeaders.cpp index 13ffcb5120..bb9666ee37 100644 --- a/libraries/networking/src/udt/PacketHeaders.cpp +++ b/libraries/networking/src/udt/PacketHeaders.cpp @@ -95,7 +95,7 @@ PacketVersion versionForPacketType(PacketType packetType) { case PacketType::AvatarIdentityRequest: return 22; default: - return 21; + return 22; } } diff --git a/libraries/networking/src/udt/PacketTimeWindow.cpp b/libraries/networking/src/udt/PacketTimeWindow.cpp deleted file mode 100644 index c95045c48f..0000000000 --- a/libraries/networking/src/udt/PacketTimeWindow.cpp +++ /dev/null @@ -1,101 +0,0 @@ -// -// PacketTimeWindow.cpp -// libraries/networking/src/udt -// -// Created by Stephen Birarda on 2015-07-28. -// Copyright 2015 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#include "PacketTimeWindow.h" - -#include -#include - -#include - -using namespace udt; -using namespace std::chrono; - -static const int DEFAULT_PACKET_INTERVAL_MICROSECONDS = 1000000; // 1s - -PacketTimeWindow::PacketTimeWindow(int numPacketIntervals) : - _numPacketIntervals(numPacketIntervals), - _packetIntervals(_numPacketIntervals, DEFAULT_PACKET_INTERVAL_MICROSECONDS) -{ - -} - -void PacketTimeWindow::reset() { - _packetIntervals.assign(_numPacketIntervals, DEFAULT_PACKET_INTERVAL_MICROSECONDS); -} - -template -int median(Iterator begin, Iterator end) { - // use std::nth_element to grab the middle - for an even number of elements this is the upper middle - Iterator middle = begin + (end - begin) / 2; - std::nth_element(begin, middle, end); - - if ((end - begin) % 2 != 0) { - // odd number of elements, just return the middle - return *middle; - } else { - // even number of elements, return the mean of the upper middle and the lower middle - Iterator lowerMiddle = std::max_element(begin, middle); - return (*middle + *lowerMiddle) / 2; - } -} - -int32_t meanOfMedianFilteredValues(std::vector intervals, int numValues, int valuesRequired = 0) { - // grab the median value of the intervals vector - int intervalsMedian = median(intervals.begin(), intervals.end()); - - // figure out our bounds for median filtering - static const int MEDIAN_FILTERING_BOUND_MULTIPLIER = 8; - int upperBound = intervalsMedian * MEDIAN_FILTERING_BOUND_MULTIPLIER; - int lowerBound = intervalsMedian / MEDIAN_FILTERING_BOUND_MULTIPLIER; - - int sum = 0; - int count = 0; - - // sum the values that are inside the median filtered bounds - for (auto& interval : intervals) { - if ((interval < upperBound) && (interval > lowerBound)) { - ++count; - sum += interval; - } - } - - // make sure we hit our threshold of values required - if (count >= valuesRequired) { - // return the frequency (per second) for the mean interval - static const double USECS_PER_SEC = 1000000.0; - return (int32_t) ceil(USECS_PER_SEC / (((double) sum) / ((double) count))); - } else { - return 0; - } -} - -int32_t PacketTimeWindow::getPacketReceiveSpeed() const { - // return the mean value of median filtered values (per second) - or zero if there are too few filtered values - return meanOfMedianFilteredValues(_packetIntervals, _numPacketIntervals, _numPacketIntervals / 2); -} - -void PacketTimeWindow::onPacketArrival() { - - // take the current time - auto now = p_high_resolution_clock::now(); - - if (_packetIntervals.size() > 0) { - // record the interval between this packet and the last one - _packetIntervals[_currentPacketInterval++] = duration_cast(now - _lastPacketTime).count(); - - // reset the currentPacketInterval index when it wraps - _currentPacketInterval %= _numPacketIntervals; - } - - // remember this as the last packet arrival time - _lastPacketTime = now; -} diff --git a/libraries/networking/src/udt/PacketTimeWindow.h b/libraries/networking/src/udt/PacketTimeWindow.h deleted file mode 100644 index 359097ac8c..0000000000 --- a/libraries/networking/src/udt/PacketTimeWindow.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// PacketTimeWindow.h -// libraries/networking/src/udt -// -// Created by Stephen Birarda on 2015-07-28. -// Copyright 2015 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#pragma once - -#ifndef hifi_PacketTimeWindow_h -#define hifi_PacketTimeWindow_h - -#include - -#include - -namespace udt { - -class PacketTimeWindow { -public: - PacketTimeWindow(int numPacketIntervals = 16); - - void onPacketArrival(); - - int32_t getPacketReceiveSpeed() const; - - void reset(); -private: - int _numPacketIntervals { 0 }; // the number of packet intervals to store - - int _currentPacketInterval { 0 }; // index for the current packet interval - - std::vector _packetIntervals; // vector of microsecond intervals between packet arrivals - - p_high_resolution_clock::time_point _lastPacketTime = p_high_resolution_clock::now(); // the time_point when last packet arrived -}; - -} - -#endif // hifi_PacketTimeWindow_h diff --git a/libraries/networking/src/udt/Socket.cpp b/libraries/networking/src/udt/Socket.cpp index 4d4303698b..1ea5079bc5 100644 --- a/libraries/networking/src/udt/Socket.cpp +++ b/libraries/networking/src/udt/Socket.cpp @@ -33,18 +33,11 @@ using namespace udt; Socket::Socket(QObject* parent, bool shouldChangeSocketOptions) : QObject(parent), - _synTimer(new QTimer(this)), _readyReadBackupTimer(new QTimer(this)), _shouldChangeSocketOptions(shouldChangeSocketOptions) { connect(&_udpSocket, &QUdpSocket::readyRead, this, &Socket::readPendingDatagrams); - // make sure our synchronization method is called every SYN interval - connect(_synTimer, &QTimer::timeout, this, &Socket::rateControlSync); - - // start our timer for the synchronization time interval - _synTimer->start(_synInterval); - // make sure we hear about errors and state changes from the underlying socket connect(&_udpSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(handleSocketError(QAbstractSocket::SocketError))); @@ -427,49 +420,9 @@ void Socket::connectToSendSignal(const HifiSockAddr& destinationAddr, QObject* r } } -void Socket::rateControlSync() { - - // enumerate our list of connections and ask each of them to send off periodic ACK packet for rate control - - // the way we do this is a little funny looking - we need to avoid the case where we call sync and - // (because of our Qt direct connection to the Connection's signal that it has been deactivated) - // an iterator on _connectionsHash would be invalidated by our own call to cleanupConnection - - // collect the sockets for all connections in a vector - - std::vector sockAddrVector; - sockAddrVector.reserve(_connectionsHash.size()); - - for (auto& connection : _connectionsHash) { - sockAddrVector.emplace_back(connection.first); - } - - // enumerate that vector of HifiSockAddr objects - for (auto& sockAddr : sockAddrVector) { - // pull out the respective connection via a quick find on the unordered_map - auto it = _connectionsHash.find(sockAddr); - - if (it != _connectionsHash.end()) { - // if the connection is erased while calling sync since we are re-using the iterator that was invalidated - // we're good to go - auto& connection = _connectionsHash[sockAddr]; - connection->sync(); - } - } - - if (_synTimer->interval() != _synInterval) { - // if the _synTimer interval doesn't match the current _synInterval (changes when the CC factory is changed) - // then restart it now with the right interval - _synTimer->start(_synInterval); - } -} - void Socket::setCongestionControlFactory(std::unique_ptr ccFactory) { // swap the current unique_ptr for the new factory _ccFactory.swap(ccFactory); - - // update the _synInterval to the value from the factory - _synInterval = _ccFactory->synInterval(); } diff --git a/libraries/networking/src/udt/Socket.h b/libraries/networking/src/udt/Socket.h index 1919e00b41..1f28592c83 100644 --- a/libraries/networking/src/udt/Socket.h +++ b/libraries/networking/src/udt/Socket.h @@ -102,7 +102,6 @@ public slots: private slots: void readPendingDatagrams(); void checkForReadyReadBackup(); - void rateControlSync(); void handleSocketError(QAbstractSocket::SocketError socketError); void handleStateChanged(QAbstractSocket::SocketState socketState); @@ -133,9 +132,6 @@ private: std::unordered_map _unfilteredHandlers; std::unordered_map _unreliableSequenceNumbers; std::unordered_map> _connectionsHash; - - int _synInterval { 10 }; // 10ms - QTimer* _synTimer { nullptr }; QTimer* _readyReadBackupTimer { nullptr }; diff --git a/libraries/networking/src/udt/TCPVegasCC.cpp b/libraries/networking/src/udt/TCPVegasCC.cpp index e39e474f39..4842e5a204 100644 --- a/libraries/networking/src/udt/TCPVegasCC.cpp +++ b/libraries/networking/src/udt/TCPVegasCC.cpp @@ -101,12 +101,11 @@ bool TCPVegasCC::onACK(SequenceNumber ack, p_high_resolution_clock::time_point r auto it = _sentPacketTimes.find(ack + 1); if (it != _sentPacketTimes.end()) { - auto estimatedTimeout = _ewmaRTT + _rttVariance * 4; auto now = p_high_resolution_clock::now(); auto sinceSend = duration_cast(now - it->second).count(); - if (sinceSend >= estimatedTimeout) { + if (sinceSend >= estimatedTimeout()) { // break out of slow start, we've decided this is loss _slowStart = false; @@ -213,6 +212,11 @@ void TCPVegasCC::performCongestionAvoidance(udt::SequenceNumber ack) { _numACKs = 0; } + +int TCPVegasCC::estimatedTimeout() const { + return _ewmaRTT == -1 ? DEFAULT_SYN_INTERVAL : _ewmaRTT + _rttVariance * 4; +} + bool TCPVegasCC::isCongestionWindowLimited() { if (_slowStart) { return true; diff --git a/libraries/networking/src/udt/TCPVegasCC.h b/libraries/networking/src/udt/TCPVegasCC.h index 38b70ea325..bb14728d4b 100644 --- a/libraries/networking/src/udt/TCPVegasCC.h +++ b/libraries/networking/src/udt/TCPVegasCC.h @@ -30,6 +30,8 @@ public: virtual void onTimeout() override {}; virtual void onPacketSent(int wireSize, SequenceNumber seqNum, p_high_resolution_clock::time_point timePoint) override; + + virtual int estimatedTimeout() const override; protected: virtual void performCongestionAvoidance(SequenceNumber ack); From ae67064463d90fb9bd056bbe3da55941810897bf Mon Sep 17 00:00:00 2001 From: Clement Date: Tue, 17 Jul 2018 16:01:38 -0700 Subject: [PATCH 024/332] Fix UDTTest --- tools/udt-test/src/UDTTest.cpp | 1 + tools/udt-test/src/main.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/udt-test/src/UDTTest.cpp b/tools/udt-test/src/UDTTest.cpp index b6efe4b42e..46e7ed0be0 100644 --- a/tools/udt-test/src/UDTTest.cpp +++ b/tools/udt-test/src/UDTTest.cpp @@ -385,6 +385,7 @@ void UDTTest::sampleStats() { QString::number(stats.packetSendPeriod).rightJustified(CLIENT_STATS_TABLE_HEADERS[++headerIndex].size()), QString::number(stats.events[udt::ConnectionStats::Stats::ReceivedACK]).rightJustified(CLIENT_STATS_TABLE_HEADERS[++headerIndex].size()), QString::number(stats.events[udt::ConnectionStats::Stats::ProcessedACK]).rightJustified(CLIENT_STATS_TABLE_HEADERS[++headerIndex].size()), + QString::number(stats.sentPackets).rightJustified(CLIENT_STATS_TABLE_HEADERS[++headerIndex].size()), QString::number(stats.events[udt::ConnectionStats::Stats::Retransmission]).rightJustified(CLIENT_STATS_TABLE_HEADERS[++headerIndex].size()) }; diff --git a/tools/udt-test/src/main.cpp b/tools/udt-test/src/main.cpp index d88218c0d0..13953c91cc 100644 --- a/tools/udt-test/src/main.cpp +++ b/tools/udt-test/src/main.cpp @@ -15,7 +15,7 @@ #include "UDTTest.h" int main(int argc, char* argv[]) { - setupHifiApplication("UDT Test); + setupHifiApplication("UDT Test"); UDTTest app(argc, argv); return app.exec(); From 87daa55f0bf9a04e3975846161c89c21a0ee961c Mon Sep 17 00:00:00 2001 From: Clement Date: Fri, 20 Jul 2018 18:11:52 -0700 Subject: [PATCH 025/332] Remove deprecated control packet types --- libraries/networking/src/udt/Connection.cpp | 6 ------ libraries/networking/src/udt/ControlPacket.h | 5 ----- 2 files changed, 11 deletions(-) diff --git a/libraries/networking/src/udt/Connection.cpp b/libraries/networking/src/udt/Connection.cpp index 8677e7f2f5..24e294881a 100644 --- a/libraries/networking/src/udt/Connection.cpp +++ b/libraries/networking/src/udt/Connection.cpp @@ -309,12 +309,6 @@ void Connection::processControl(ControlPacketPointer controlPacket) { stopSendQueue(); } break; - case ControlPacket::LightACK: - case ControlPacket::ACK2: - case ControlPacket::NAK: - case ControlPacket::TimeoutNAK: - case ControlPacket::ProbeTail: - break; } } diff --git a/libraries/networking/src/udt/ControlPacket.h b/libraries/networking/src/udt/ControlPacket.h index 3c770de9bb..46b9cdbd40 100644 --- a/libraries/networking/src/udt/ControlPacket.h +++ b/libraries/networking/src/udt/ControlPacket.h @@ -28,13 +28,8 @@ public: enum Type : uint16_t { ACK, - ACK2, - LightACK, - NAK, - TimeoutNAK, Handshake, HandshakeACK, - ProbeTail, HandshakeRequest }; From db2297dbcecb5273c232329f35205cb343d30028 Mon Sep 17 00:00:00 2001 From: Clement Date: Fri, 20 Jul 2018 18:29:48 -0700 Subject: [PATCH 026/332] Update Wireshark dissector --- tools/dissectors/1-hfudt.lua | 56 +++++------------------------------- 1 file changed, 7 insertions(+), 49 deletions(-) diff --git a/tools/dissectors/1-hfudt.lua b/tools/dissectors/1-hfudt.lua index 137bee659b..e473181dfe 100644 --- a/tools/dissectors/1-hfudt.lua +++ b/tools/dissectors/1-hfudt.lua @@ -26,9 +26,6 @@ local f_hmac_hash = ProtoField.bytes("hfudt.hmac_hash", "HMAC Hash") local f_control_type = ProtoField.uint16("hfudt.control_type", "Control Type", base.DEC) local f_control_type_text = ProtoField.string("hfudt.control_type_text", "Control Type Text", base.ASCII) local f_ack_sequence_number = ProtoField.uint32("hfudt.ack_sequence_number", "ACKed Sequence Number", base.DEC) -local f_control_sub_sequence = ProtoField.uint32("hfudt.control_sub_sequence", "Control Sub-Sequence Number", base.DEC) -local f_nak_sequence_number = ProtoField.uint32("hfudt.nak_sequence_number", "NAKed Sequence Number", base.DEC) -local f_nak_range_end = ProtoField.uint32("hfudt.nak_range_end", "NAK Range End", base.DEC) local SEQUENCE_NUMBER_MASK = 0x07FFFFFF @@ -37,19 +34,13 @@ p_hfudt.fields = { f_control_bit, f_reliable_bit, f_message_bit, f_sequence_number, f_type, f_type_text, f_version, f_sender_id, f_hmac_hash, f_message_position, f_message_number, f_message_part_number, f_obfuscation_level, - f_control_type, f_control_type_text, f_control_sub_sequence, f_ack_sequence_number, f_nak_sequence_number, f_nak_range_end, - f_data + f_control_type, f_control_type_text, f_ack_sequence_number, f_data } local control_types = { [0] = { "ACK", "Acknowledgement" }, - [1] = { "ACK2", "Acknowledgement of acknowledgement" }, - [2] = { "LightACK", "Light Acknowledgement" }, - [3] = { "NAK", "Loss report (NAK)" }, - [4] = { "TimeoutNAK", "Loss report re-transmission (TimeoutNAK)" }, [5] = { "Handshake", "Handshake" }, [6] = { "HandshakeACK", "Acknowledgement of Handshake" }, - [7] = { "ProbeTail", "Probe tail" }, [8] = { "HandshakeRequest", "Request a Handshake" } } @@ -160,51 +151,18 @@ function p_hfudt.dissector(buf, pinfo, tree) subtree:add(f_control_type_text, control_types[shifted_type][1]) end - if shifted_type == 0 or shifted_type == 1 then + if shifted_type == 0 then + local data_index = 4 - -- this has a sub-sequence number - local second_word = buf(4, 4):le_uint() - subtree:add(f_control_sub_sequence, bit32.band(second_word, SEQUENCE_NUMBER_MASK)) - - local data_index = 8 - - if shifted_type == 0 then - -- if this is an ACK let's read out the sequence number - local sequence_number = buf(8, 4):le_uint() - subtree:add(f_ack_sequence_number, bit32.band(sequence_number, SEQUENCE_NUMBER_MASK)) - - data_index = data_index + 4 - end + -- This is an ACK let's read out the sequence number + local sequence_number = buf(data_index, 4):le_uint() + subtree:add(f_ack_sequence_number, bit32.band(sequence_number, SEQUENCE_NUMBER_MASK)) + data_index = data_index + 4 data_length = buf:len() - data_index -- set the data from whatever is left in the packet subtree:add(f_data, buf(data_index, data_length)) - - elseif shifted_type == 2 then - -- this is a Light ACK let's read out the sequence number - local sequence_number = buf(4, 4):le_uint() - subtree:add(f_ack_sequence_number, bit32.band(sequence_number, SEQUENCE_NUMBER_MASK)) - - data_length = buf:len() - 4 - - -- set the data from whatever is left in the packet - subtree:add(f_data, buf(4, data_length)) - elseif shifted_type == 3 or shifted_type == 4 then - if buf:len() <= 12 then - -- this is a NAK pull the sequence number or range - local sequence_number = buf(4, 4):le_uint() - subtree:add(f_nak_sequence_number, bit32.band(sequence_number, SEQUENCE_NUMBER_MASK)) - - data_length = buf:len() - 4 - - if buf:len() > 8 then - local range_end = buf(8, 4):le_uint() - subtree:add(f_nak_range_end, bit32.band(range_end, SEQUENCE_NUMBER_MASK)) - - data_length = data_length - 4 - end - end else data_length = buf:len() - 4 From 7f743de1504dc07f3609a692915889acd75bb758 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 23 Jul 2018 12:59:23 -0700 Subject: [PATCH 027/332] Fix CollisionRegion serialization/deserialization issues and CollisionPick implicit cast warning --- interface/src/raypick/CollisionPick.cpp | 2 +- interface/src/raypick/CollisionPick.h | 2 ++ libraries/shared/src/RegisteredMetaTypes.h | 4 +++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index 7ed146300d..d9aa25228e 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -205,7 +205,7 @@ void CollisionPick::computeShapeInfo(CollisionRegion& pick, ShapeInfo& shapeInfo for (const FBXMeshPart& meshPart : mesh.parts) { triangleIndicesCount += meshPart.triangleIndices.count(); } - triangleIndices.reserve(triangleIndicesCount); + triangleIndices.reserve((int)triangleIndicesCount); for (const FBXMeshPart& meshPart : mesh.parts) { const int* indexItr = meshPart.triangleIndices.cbegin(); diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index 5cd8d4ccd6..06c8bd66e0 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -103,6 +103,8 @@ public: intersectingAvatars.push_back(intersectingAvatar); } + intersects = intersectingEntities.size() || intersectingAvatars.size(); + return std::make_shared(*this); } }; diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index d20a993117..efafd35a06 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -243,6 +243,8 @@ public: if (shape["dimensions"].isValid()) { transform.setScale(vec3FromVariant(shape["dimensions"])); } + + shapeInfo.setParams(shapeType, transform.getScale() / 2.0f, modelURL.toString()); } } @@ -260,7 +262,7 @@ public: QVariantMap shape; shape["shapeType"] = ShapeInfo::getNameForShapeType(shapeInfo.getType()); shape["modelURL"] = modelURL.toString(); - shape["dimensions"] = vec3toVariant(shapeInfo.getHalfExtents()); + shape["dimensions"] = vec3toVariant(transform.getScale()); collisionRegion["shape"] = shape; From ca30bb59afe44466df39b87658663056aea2b929 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 23 Jul 2018 13:25:09 -0700 Subject: [PATCH 028/332] Remove unused Bullet callbacks for collision picking --- interface/src/raypick/CollisionPick.h | 31 --------------------------- 1 file changed, 31 deletions(-) diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index 06c8bd66e0..ce596617da 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -188,37 +188,6 @@ struct RigidBodyFilterResultCallback : public btCollisionWorld::ContactResultCal } }; -// Callback for getting colliding avatars in the world. -struct AllAvatarsCallback : public RigidBodyFilterResultCallback { - std::vector intersectingAvatars; - - void checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) override { - const AvatarMotionState* avatarCandidate = dynamic_cast(otherMotionState); - if (!avatarCandidate) { - return; - } - - // This is the correct object type. Add it to the list. - intersectingAvatars.emplace_back(avatarCandidate->getObjectID(), bulletToGLM(point), bulletToGLM(otherPoint)); - } -}; - -// Callback for getting colliding entities in the world. -struct AllEntitiesCallback : public RigidBodyFilterResultCallback { - std::vector intersectingEntities; - - void checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) override { - const EntityMotionState* entityCandidate = dynamic_cast(otherMotionState); - if (!entityCandidate) { - return; - } - - // This is the correct object type. Add it to the list. - intersectingEntities.emplace_back(entityCandidate->getObjectID(), bulletToGLM(point), bulletToGLM(otherPoint)); - } -}; - -// TODO: Test if this works. Revert to above code if it doesn't // Callback for getting colliding ObjectMotionStates in the world, or optionally a more specific type. template struct AllObjectMotionStatesCallback : public RigidBodyFilterResultCallback { From 66f355e5ba6d5dc143f3caef2e82d9603c50b4d2 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 23 Jul 2018 13:33:16 -0700 Subject: [PATCH 029/332] Move bullet callbacks for collision picks to source file --- interface/src/raypick/CollisionPick.cpp | 56 +++++++++++++++++++++++++ interface/src/raypick/CollisionPick.h | 52 ++--------------------- 2 files changed, 60 insertions(+), 48 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index d9aa25228e..c16a00ad54 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -298,4 +298,60 @@ PickResultPointer CollisionPick::getAvatarIntersection(const CollisionRegion& pi PickResultPointer CollisionPick::getHUDIntersection(const CollisionRegion& pick) { return getDefaultResult(QVariantMap()); +} + +template +RigidBodyFilterResultCallback::RigidBodyFilterResultCallback(const ShapeInfo& shapeInfo, const Transform& transform) : + btCollisionWorld::ContactResultCallback(), collisionObject() { + const btCollisionShape* collisionShape = ObjectMotionState::getShapeManager()->getShape(shapeInfo); + + collisionObject.setCollisionShape(const_cast(collisionShape)); + + btTransform bulletTransform; + bulletTransform.setOrigin(glmToBullet(transform.getTranslation())); + bulletTransform.setRotation(glmToBullet(transform.getRotation())); + + collisionObject.setWorldTransform(bulletTransform); +} + +template +RigidBodyFilterResultCallback::~RigidBodyFilterResultCallback() { + ObjectMotionState::getShapeManager()->releaseShape(collisionObject.getCollisionShape()); +} + +template +btScalar RigidBodyFilterResultCallback::addSingleResult(btManifoldPoint& cp, const btCollisionObjectWrapper* colObj0, int partId0, int index0, const btCollisionObjectWrapper* colObj1, int partId1, int index1) { + const btCollisionObject* otherBody; + btVector3 point; + btVector3 otherPoint; + if (colObj0->m_collisionObject == &collisionObject) { + otherBody = colObj1->m_collisionObject; + point = cp.m_localPointA; + otherPoint = cp.m_localPointB; + } + else { + otherBody = colObj0->m_collisionObject; + point = cp.m_localPointB; + otherPoint = cp.m_localPointA; + } + const btRigidBody* collisionCandidate = dynamic_cast(otherBody); + if (!collisionCandidate) { + return 0; + } + const btMotionState* motionStateCandidate = collisionCandidate->getMotionState(); + + checkOrAddCollidingState(motionStateCandidate, point, otherPoint); + + return 0; +} + +template +void AllObjectMotionStatesCallback::checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) { + const T* candidate = dynamic_cast(otherMotionState); + if (!candidate) { + return; + } + + // This is the correct object type. Add it to the list. + intersectingObjects.emplace_back(candidate->getObjectID(), bulletToGLM(point), bulletToGLM(otherPoint)); } \ No newline at end of file diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index ce596617da..3208efd5ec 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -136,22 +136,9 @@ protected: // Callback for checking the motion states of all colliding rigid bodies for candidacy to be added to a list struct RigidBodyFilterResultCallback : public btCollisionWorld::ContactResultCallback { - RigidBodyFilterResultCallback(const ShapeInfo& shapeInfo, const Transform& transform) : - btCollisionWorld::ContactResultCallback(), collisionObject() { - const btCollisionShape* collisionShape = ObjectMotionState::getShapeManager()->getShape(shapeInfo); + RigidBodyFilterResultCallback(const ShapeInfo& shapeInfo, const Transform& transform); - collisionObject.setCollisionShape(const_cast(collisionShape)); - - btTransform bulletTransform; - bulletTransform.setOrigin(glmToBullet(transform.getTranslation())); - bulletTransform.setRotation(glmToBullet(transform.getRotation())); - - collisionObject.setWorldTransform(bulletTransform); - } - - ~RigidBodyFilterResultCallback() { - ObjectMotionState::getShapeManager()->releaseShape(collisionObject.getCollisionShape()); - } + ~RigidBodyFilterResultCallback(); RigidBodyFilterResultCallback(btCollisionObject& testCollisionObject) : btCollisionWorld::ContactResultCallback(), collisionObject(testCollisionObject) { @@ -162,30 +149,7 @@ struct RigidBodyFilterResultCallback : public btCollisionWorld::ContactResultCal // Check candidacy for adding to a list virtual void checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) = 0; - btScalar addSingleResult(btManifoldPoint& cp, const btCollisionObjectWrapper* colObj0, int partId0, int index0, const btCollisionObjectWrapper* colObj1, int partId1, int index1) override { - const btCollisionObject* otherBody; - btVector3 point; - btVector3 otherPoint; - if (colObj0->m_collisionObject == &collisionObject) { - otherBody = colObj1->m_collisionObject; - point = cp.m_localPointA; - otherPoint = cp.m_localPointB; - } - else { - otherBody = colObj0->m_collisionObject; - point = cp.m_localPointB; - otherPoint = cp.m_localPointA; - } - const btRigidBody* collisionCandidate = dynamic_cast(otherBody); - if (!collisionCandidate) { - return 0; - } - const btMotionState* motionStateCandidate = collisionCandidate->getMotionState(); - - checkOrAddCollidingState(motionStateCandidate, point, otherPoint); - - return 0; - } + btScalar addSingleResult(btManifoldPoint& cp, const btCollisionObjectWrapper* colObj0, int partId0, int index0, const btCollisionObjectWrapper* colObj1, int partId1, int index1) override; }; // Callback for getting colliding ObjectMotionStates in the world, or optionally a more specific type. @@ -195,15 +159,7 @@ struct AllObjectMotionStatesCallback : public RigidBodyFilterResultCallback { std::vector intersectingObjects; - void checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) override { - const T* candidate = dynamic_cast(otherMotionState); - if (!candidate) { - return; - } - - // This is the correct object type. Add it to the list. - intersectingObjects.emplace_back(candidate->getObjectID(), bulletToGLM(point), bulletToGLM(otherPoint)); - } + void checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) override; }; #endif // hifi_CollisionPick_h \ No newline at end of file From a3560d1a1bd2a77897f6bdc178b098cfc5d68a6e Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 23 Jul 2018 13:47:02 -0700 Subject: [PATCH 030/332] Remove wrong template from RigidBodyResultCallback function definitions --- interface/src/raypick/CollisionPick.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index c16a00ad54..40d089bfd4 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -300,7 +300,6 @@ PickResultPointer CollisionPick::getHUDIntersection(const CollisionRegion& pick) return getDefaultResult(QVariantMap()); } -template RigidBodyFilterResultCallback::RigidBodyFilterResultCallback(const ShapeInfo& shapeInfo, const Transform& transform) : btCollisionWorld::ContactResultCallback(), collisionObject() { const btCollisionShape* collisionShape = ObjectMotionState::getShapeManager()->getShape(shapeInfo); @@ -314,12 +313,10 @@ RigidBodyFilterResultCallback::RigidBodyFilterResultCallback(const ShapeInfo& sh collisionObject.setWorldTransform(bulletTransform); } -template RigidBodyFilterResultCallback::~RigidBodyFilterResultCallback() { ObjectMotionState::getShapeManager()->releaseShape(collisionObject.getCollisionShape()); } -template btScalar RigidBodyFilterResultCallback::addSingleResult(btManifoldPoint& cp, const btCollisionObjectWrapper* colObj0, int partId0, int index0, const btCollisionObjectWrapper* colObj1, int partId1, int index1) { const btCollisionObject* otherBody; btVector3 point; From aa92865b21d62f6dd79a3f00607558c6cab964c1 Mon Sep 17 00:00:00 2001 From: amantley Date: Mon, 23 Jul 2018 17:45:24 -0700 Subject: [PATCH 031/332] added the code to display the alphas for the motion blends --- .../resources/avatar/avatar-animation1.json | 1228 +++++++++++++++++ interface/resources/avatar/new-animation.json | 1228 +++++++++++++++++ interface/resources/qml/Stats.qml | 7 +- interface/src/ui/Stats.cpp | 8 + interface/src/ui/Stats.h | 18 + libraries/animation/src/AnimNodeLoader.cpp | 1 + libraries/animation/src/Rig.cpp | 3 + libraries/animation/src/Rig.h | 7 + scripts/developer/cameraControls.js | 284 ++++ 9 files changed, 2780 insertions(+), 4 deletions(-) create mode 100644 interface/resources/avatar/avatar-animation1.json create mode 100644 interface/resources/avatar/new-animation.json create mode 100644 scripts/developer/cameraControls.js diff --git a/interface/resources/avatar/avatar-animation1.json b/interface/resources/avatar/avatar-animation1.json new file mode 100644 index 0000000000..44d294f767 --- /dev/null +++ b/interface/resources/avatar/avatar-animation1.json @@ -0,0 +1,1228 @@ +{ + "version": "1.0", + "root": { + "id": "userAnimStateMachine", + "type": "stateMachine", + "data": { + "currentState": "userAnimNone", + "states": [ + { + "id": "userAnimNone", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "userAnimA", "state": "userAnimA" }, + { "var": "userAnimB", "state": "userAnimB" } + ] + }, + { + "id": "userAnimA", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "userAnimNone", "state": "userAnimNone" }, + { "var": "userAnimB", "state": "userAnimB" } + ] + }, + { + "id": "userAnimB", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "userAnimNone", "state": "userAnimNone" }, + { "var": "userAnimA", "state": "userAnimA" } + ] + } + ] + }, + "children": [ + { + "id": "userAnimNone", + "type": "overlay", + "data": { + "alpha": 1.0, + "alphaVar": "ikOverlayAlpha", + "boneSet": "fullBody" + }, + "children": [ + { + "id": "ik", + "type": "inverseKinematics", + "data": { + "solutionSource": "relaxToUnderPoses", + "solutionSourceVar": "solutionSource", + "targets": [ + { + "jointName": "Hips", + "positionVar": "hipsPosition", + "rotationVar": "hipsRotation", + "typeVar": "hipsType", + "weightVar": "hipsWeight", + "weight": 1.0, + "flexCoefficients": [1] + }, + { + "jointName": "RightHand", + "positionVar": "rightHandPosition", + "rotationVar": "rightHandRotation", + "typeVar": "rightHandType", + "weightVar": "rightHandWeight", + "weight": 1.0, + "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], + "poleVectorEnabledVar": "rightHandPoleVectorEnabled", + "poleReferenceVectorVar": "rightHandPoleReferenceVector", + "poleVectorVar": "rightHandPoleVector" + }, + { + "jointName": "LeftHand", + "positionVar": "leftHandPosition", + "rotationVar": "leftHandRotation", + "typeVar": "leftHandType", + "weightVar": "leftHandWeight", + "weight": 1.0, + "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], + "poleVectorEnabledVar": "leftHandPoleVectorEnabled", + "poleReferenceVectorVar": "leftHandPoleReferenceVector", + "poleVectorVar": "leftHandPoleVector" + }, + { + "jointName": "RightFoot", + "positionVar": "rightFootPosition", + "rotationVar": "rightFootRotation", + "typeVar": "rightFootType", + "weightVar": "rightFootWeight", + "weight": 1.0, + "flexCoefficients": [1, 0.45, 0.45], + "poleVectorEnabledVar": "rightFootPoleVectorEnabled", + "poleReferenceVectorVar": "rightFootPoleReferenceVector", + "poleVectorVar": "rightFootPoleVector" + }, + { + "jointName": "LeftFoot", + "positionVar": "leftFootPosition", + "rotationVar": "leftFootRotation", + "typeVar": "leftFootType", + "weightVar": "leftFootWeight", + "weight": 1.0, + "flexCoefficients": [1, 0.45, 0.45], + "poleVectorEnabledVar": "leftFootPoleVectorEnabled", + "poleReferenceVectorVar": "leftFootPoleReferenceVector", + "poleVectorVar": "leftFootPoleVector" + }, + { + "jointName": "Spine2", + "positionVar": "spine2Position", + "rotationVar": "spine2Rotation", + "typeVar": "spine2Type", + "weightVar": "spine2Weight", + "weight": 2.0, + "flexCoefficients": [1.0, 0.5, 0.25] + }, + { + "jointName": "Head", + "positionVar": "headPosition", + "rotationVar": "headRotation", + "typeVar": "headType", + "weightVar": "headWeight", + "weight": 4.0, + "flexCoefficients": [1, 0.5, 0.25, 0.2, 0.1] + } + ] + }, + "children": [] + }, + { + "id": "defaultPoseOverlay", + "type": "overlay", + "data": { + "alpha": 0.0, + "alphaVar": "defaultPoseOverlayAlpha", + "boneSet": "fullBody", + "boneSetVar": "defaultPoseOverlayBoneSet" + }, + "children": [ + { + "id": "defaultPose", + "type": "defaultPose", + "data": { + }, + "children": [] + }, + { + "id": "rightHandOverlay", + "type": "overlay", + "data": { + "alpha": 0.0, + "boneSet": "rightHand", + "alphaVar": "rightHandOverlayAlpha" + }, + "children": [ + { + "id": "rightHandStateMachine", + "type": "stateMachine", + "data": { + "currentState": "rightHandGrasp", + "states": [ + { + "id": "rightHandGrasp", + "interpTarget": 3, + "interpDuration": 3, + "transitions": [ + { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, + { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, + { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } + ] + }, + { + "id": "rightIndexPoint", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, + { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, + { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } + ] + }, + { + "id": "rightThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, + { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, + { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } + ] + }, + { + "id": "rightIndexPointAndThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, + { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, + { "var": "isRightThumbRaise", "state": "rightThumbRaise" } + ] + } + ] + }, + "children": [ + { + "id": "rightHandGrasp", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightHandGraspOpen", + "type": "clip", + "data": { + "url": "animations/hydra_pose_open_right.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightHandGraspClosed", + "type": "clip", + "data": { + "url": "animations/hydra_pose_closed_right.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "rightIndexPoint", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightIndexPointOpen", + "type": "clip", + "data": { + "url": "animations/touch_point_open_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightIndexPointClosed", + "type": "clip", + "data": { + "url": "animations/touch_point_closed_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "rightThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightThumbRaiseOpen", + "type": "clip", + "data": { + "url": "animations/touch_thumb_open_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightThumbRaiseClosed", + "type": "clip", + "data": { + "url": "animations/touch_thumb_closed_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "rightIndexPointAndThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightIndexPointAndThumbRaiseOpen", + "type": "clip", + "data": { + "url": "animations/touch_thumb_point_open_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightIndexPointAndThumbRaiseClosed", + "type": "clip", + "data": { + "url": "animations/touch_thumb_point_closed_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + } + ] + }, + { + "id": "leftHandOverlay", + "type": "overlay", + "data": { + "alpha": 0.0, + "boneSet": "leftHand", + "alphaVar": "leftHandOverlayAlpha" + }, + "children": [ + { + "id": "leftHandStateMachine", + "type": "stateMachine", + "data": { + "currentState": "leftHandGrasp", + "states": [ + { + "id": "leftHandGrasp", + "interpTarget": 3, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, + { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, + { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } + ] + }, + { + "id": "leftIndexPoint", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, + { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, + { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } + ] + }, + { + "id": "leftThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, + { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, + { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } + ] + }, + { + "id": "leftIndexPointAndThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, + { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, + { "var": "isLeftThumbRaise", "state": "leftThumbRaise" } + ] + } + ] + }, + "children": [ + { + "id": "leftHandGrasp", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftHandGraspOpen", + "type": "clip", + "data": { + "url": "animations/hydra_pose_open_left.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftHandGraspClosed", + "type": "clip", + "data": { + "url": "animations/hydra_pose_closed_left.fbx", + "startFrame": 10.0, + "endFrame": 10.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "leftIndexPoint", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftIndexPointOpen", + "type": "clip", + "data": { + "url": "animations/touch_point_open_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftIndexPointClosed", + "type": "clip", + "data": { + "url": "animations/touch_point_closed_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "leftThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftThumbRaiseOpen", + "type": "clip", + "data": { + "url": "animations/touch_thumb_open_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftThumbRaiseClosed", + "type": "clip", + "data": { + "url": "animations/touch_thumb_closed_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "leftIndexPointAndThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftIndexPointAndThumbRaiseOpen", + "type": "clip", + "data": { + "url": "animations/touch_thumb_point_open_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftIndexPointAndThumbRaiseClosed", + "type": "clip", + "data": { + "url": "animations/touch_thumb_point_closed_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + } + ] + }, + { + "id": "mainStateMachine", + "type": "stateMachine", + "data": { + "currentState": "idle", + "states": [ + { + "id": "idle", + "interpTarget": 10, + "interpDuration": 10, + "transitions": [ + { "var": "isMovingForward", "state": "idleToWalkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "idleToWalkFwd", + "interpTarget": 10, + "interpDuration": 3, + "transitions": [ + { "var": "idleToWalkFwdOnDone", "state": "walkFwd" }, + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "walkFwd", + "interpTarget": 16, + "interpDuration": 6, + "transitions": [ + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "walkBwd", + "interpTarget": 8, + "interpDuration": 2, + "transitions": [ + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "strafeRight", + "interpTarget": 20, + "interpDuration": 1, + "transitions": [ + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "strafeLeft", + "interpTarget": 20, + "interpDuration": 1, + "transitions": [ + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "turnRight", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "isNotTurning", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "turnLeft", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "isNotTurning", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "fly", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "isNotFlying", "state": "idle" } + ] + }, + { + "id": "takeoffStand", + "interpTarget": 0, + "interpDuration": 6, + "transitions": [ + { "var": "isNotTakeoff", "state": "inAirStand" } + ] + }, + { + "id": "takeoffRun", + "interpTarget": 0, + "interpDuration": 6, + "transitions": [ + { "var": "isNotTakeoff", "state": "inAirRun" } + ] + }, + { + "id": "inAirStand", + "interpTarget": 0, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotInAir", "state": "landStandImpact" } + ] + }, + { + "id": "inAirRun", + "interpTarget": 0, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotInAir", "state": "landRun" } + ] + }, + { + "id": "landStandImpact", + "interpTarget": 6, + "interpDuration": 4, + "transitions": [ + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "landStandImpactOnDone", "state": "landStand" } + ] + }, + { + "id": "landStand", + "interpTarget": 0, + "interpDuration": 1, + "transitions": [ + { "var": "isMovingForward", "state": "idleToWalkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" }, + { "var": "landStandOnDone", "state": "idle" } + ] + }, + { + "id": "landRun", + "interpTarget": 1, + "interpDuration": 7, + "transitions": [ + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "landRunOnDone", "state": "walkFwd" } + ] + } + ] + }, + "children": [ + { + "id": "idle", + "type": "stateMachine", + "data": { + "currentState": "idleStand", + "states": [ + { + "id": "idleStand", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "isTalking", "state": "idleTalk" } + ] + }, + { + "id": "idleTalk", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "notIsTalking", "state": "idleStand" } + ] + } + ] + }, + "children": [ + { + "id": "idleStand", + "type": "clip", + "data": { + "url": "animations/idle.fbx", + "startFrame": 0.0, + "endFrame": 300.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "idleTalk", + "type": "clip", + "data": { + "url": "animations/talk.fbx", + "startFrame": 0.0, + "endFrame": 800.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "walkFwd", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0.5, 1.4, 4.5], + "alphaVar": "moveForwardAlpha", + "desiredSpeedVar": "moveForwardSpeed" + }, + "children": [ + { + "id": "walkFwdShort", + "type": "clip", + "data": { + "url": "animations/walk_short_fwd.fbx", + "startFrame": 0.0, + "endFrame": 39.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkFwdNormal", + "type": "clip", + "data": { + "url": "animations/walk_fwd.fbx", + "startFrame": 0.0, + "endFrame": 35.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkFwdRun", + "type": "clip", + "data": { + "url": "animations/run_fwd.fbx", + "startFrame": 0.0, + "endFrame": 21.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "idleToWalkFwd", + "type": "clip", + "data": { + "url": "animations/idle_to_walk.fbx", + "startFrame": 1.0, + "endFrame": 13.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "walkBwd", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0.6, 1.45], + "alphaVar": "moveBackwardAlpha", + "desiredSpeedVar": "moveBackwardSpeed" + }, + "children": [ + { + "id": "walkBwdShort", + "type": "clip", + "data": { + "url": "animations/walk_short_bwd.fbx", + "startFrame": 0.0, + "endFrame": 38.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkBwdNormal", + "type": "clip", + "data": { + "url": "animations/walk_bwd.fbx", + "startFrame": 0.0, + "endFrame": 36.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "turnLeft", + "type": "clip", + "data": { + "url": "animations/turn_left.fbx", + "startFrame": 0.0, + "endFrame": 28.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "turnRight", + "type": "clip", + "data": { + "url": "animations/turn_left.fbx", + "startFrame": 0.0, + "endFrame": 30.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "strafeLeft", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0.2, 0.65], + "alphaVar": "moveLateralAlpha", + "desiredSpeedVar": "moveLateralSpeed" + }, + "children": [ + { + "id": "strafeLeftShort", + "type": "clip", + "data": { + "url": "animations/side_step_short_left.fbx", + "startFrame": 0.0, + "endFrame": 28.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "strafeLeftNormal", + "type": "clip", + "data": { + "url": "animations/side_step_left.fbx", + "startFrame": 0.0, + "endFrame": 30.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "strafeRight", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0.2, 0.65], + "alphaVar": "moveLateralAlpha", + "desiredSpeedVar": "moveLateralSpeed" + }, + "children": [ + { + "id": "strafeRightShort", + "type": "clip", + "data": { + "url": "animations/side_step_short_right.fbx", + "startFrame": 0.0, + "endFrame": 28.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "strafeRightNormal", + "type": "clip", + "data": { + "url": "animations/side_step_right.fbx", + "startFrame": 0.0, + "endFrame": 30.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "fly", + "type": "clip", + "data": { + "url": "animations/fly.fbx", + "startFrame": 1.0, + "endFrame": 80.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "takeoffStand", + "type": "clip", + "data": { + "url": "animations/jump_standing_takeoff.fbx", + "startFrame": 17.0, + "endFrame": 25.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "takeoffRun", + "type": "clip", + "data": { + "url": "animations/jump_takeoff.fbx", + "startFrame": 1.0, + "endFrame": 2.5, + "timeScale": 0.01, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirStand", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "inAirAlpha" + }, + "children": [ + { + "id": "inAirStandPreApex", + "type": "clip", + "data": { + "url": "animations/jump_standing_apex.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 0.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirStandApex", + "type": "clip", + "data": { + "url": "animations/jump_standing_apex.fbx", + "startFrame": 1.0, + "endFrame": 1.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirStandPostApex", + "type": "clip", + "data": { + "url": "animations/jump_standing_apex.fbx", + "startFrame": 2.0, + "endFrame": 2.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + } + ] + }, + { + "id": "inAirRun", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "inAirAlpha" + }, + "children": [ + { + "id": "inAirRunPreApex", + "type": "clip", + "data": { + "url": "animations/jump_in_air.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 0.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirRunApex", + "type": "clip", + "data": { + "url": "animations/jump_in_air.fbx", + "startFrame": 6.0, + "endFrame": 6.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirRunPostApex", + "type": "clip", + "data": { + "url": "animations/jump_in_air.fbx", + "startFrame": 11.0, + "endFrame": 11.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + } + ] + }, + { + "id": "landStandImpact", + "type": "clip", + "data": { + "url": "animations/jump_standing_land.fbx", + "startFrame": 1.0, + "endFrame": 6.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "landStand", + "type": "clip", + "data": { + "url": "animations/jump_standing_land.fbx", + "startFrame": 6.0, + "endFrame": 28.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "landRun", + "type": "clip", + "data": { + "url": "animations/jump_land.fbx", + "startFrame": 1.0, + "endFrame": 6.0, + "timeScale": 0.65, + "loopFlag": false + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "id": "userAnimA", + "type": "clip", + "data": { + "url": "animations/idle.fbx", + "startFrame": 0.0, + "endFrame": 90.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "userAnimB", + "type": "clip", + "data": { + "url": "animations/idle.fbx", + "startFrame": 0.0, + "endFrame": 90.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + } +} diff --git a/interface/resources/avatar/new-animation.json b/interface/resources/avatar/new-animation.json new file mode 100644 index 0000000000..63f98193f6 --- /dev/null +++ b/interface/resources/avatar/new-animation.json @@ -0,0 +1,1228 @@ +{ + "version": "1.0", + "root": { + "id": "userAnimStateMachine", + "type": "stateMachine", + "data": { + "currentState": "userAnimNone", + "states": [ + { + "id": "userAnimNone", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "userAnimA", "state": "userAnimA" }, + { "var": "userAnimB", "state": "userAnimB" } + ] + }, + { + "id": "userAnimA", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "userAnimNone", "state": "userAnimNone" }, + { "var": "userAnimB", "state": "userAnimB" } + ] + }, + { + "id": "userAnimB", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "userAnimNone", "state": "userAnimNone" }, + { "var": "userAnimA", "state": "userAnimA" } + ] + } + ] + }, + "children": [ + { + "id": "userAnimNone", + "type": "overlay", + "data": { + "alpha": 1.0, + "alphaVar": "ikOverlayAlpha", + "boneSet": "fullBody" + }, + "children": [ + { + "id": "ik", + "type": "inverseKinematics", + "data": { + "solutionSource": "relaxToUnderPoses", + "solutionSourceVar": "solutionSource", + "targets": [ + { + "jointName": "Hips", + "positionVar": "hipsPosition", + "rotationVar": "hipsRotation", + "typeVar": "hipsType", + "weightVar": "hipsWeight", + "weight": 1.0, + "flexCoefficients": [1] + }, + { + "jointName": "RightHand", + "positionVar": "rightHandPosition", + "rotationVar": "rightHandRotation", + "typeVar": "rightHandType", + "weightVar": "rightHandWeight", + "weight": 1.0, + "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], + "poleVectorEnabledVar": "rightHandPoleVectorEnabled", + "poleReferenceVectorVar": "rightHandPoleReferenceVector", + "poleVectorVar": "rightHandPoleVector" + }, + { + "jointName": "LeftHand", + "positionVar": "leftHandPosition", + "rotationVar": "leftHandRotation", + "typeVar": "leftHandType", + "weightVar": "leftHandWeight", + "weight": 1.0, + "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], + "poleVectorEnabledVar": "leftHandPoleVectorEnabled", + "poleReferenceVectorVar": "leftHandPoleReferenceVector", + "poleVectorVar": "leftHandPoleVector" + }, + { + "jointName": "RightFoot", + "positionVar": "rightFootPosition", + "rotationVar": "rightFootRotation", + "typeVar": "rightFootType", + "weightVar": "rightFootWeight", + "weight": 1.0, + "flexCoefficients": [1, 0.45, 0.45], + "poleVectorEnabledVar": "rightFootPoleVectorEnabled", + "poleReferenceVectorVar": "rightFootPoleReferenceVector", + "poleVectorVar": "rightFootPoleVector" + }, + { + "jointName": "LeftFoot", + "positionVar": "leftFootPosition", + "rotationVar": "leftFootRotation", + "typeVar": "leftFootType", + "weightVar": "leftFootWeight", + "weight": 1.0, + "flexCoefficients": [1, 0.45, 0.45], + "poleVectorEnabledVar": "leftFootPoleVectorEnabled", + "poleReferenceVectorVar": "leftFootPoleReferenceVector", + "poleVectorVar": "leftFootPoleVector" + }, + { + "jointName": "Spine2", + "positionVar": "spine2Position", + "rotationVar": "spine2Rotation", + "typeVar": "spine2Type", + "weightVar": "spine2Weight", + "weight": 2.0, + "flexCoefficients": [1.0, 0.5, 0.25] + }, + { + "jointName": "Head", + "positionVar": "headPosition", + "rotationVar": "headRotation", + "typeVar": "headType", + "weightVar": "headWeight", + "weight": 4.0, + "flexCoefficients": [1, 0.5, 0.25, 0.2, 0.1] + } + ] + }, + "children": [] + }, + { + "id": "defaultPoseOverlay", + "type": "overlay", + "data": { + "alpha": 0.0, + "alphaVar": "defaultPoseOverlayAlpha", + "boneSet": "fullBody", + "boneSetVar": "defaultPoseOverlayBoneSet" + }, + "children": [ + { + "id": "defaultPose", + "type": "defaultPose", + "data": { + }, + "children": [] + }, + { + "id": "rightHandOverlay", + "type": "overlay", + "data": { + "alpha": 0.0, + "boneSet": "rightHand", + "alphaVar": "rightHandOverlayAlpha" + }, + "children": [ + { + "id": "rightHandStateMachine", + "type": "stateMachine", + "data": { + "currentState": "rightHandGrasp", + "states": [ + { + "id": "rightHandGrasp", + "interpTarget": 3, + "interpDuration": 3, + "transitions": [ + { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, + { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, + { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } + ] + }, + { + "id": "rightIndexPoint", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, + { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, + { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } + ] + }, + { + "id": "rightThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, + { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, + { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } + ] + }, + { + "id": "rightIndexPointAndThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, + { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, + { "var": "isRightThumbRaise", "state": "rightThumbRaise" } + ] + } + ] + }, + "children": [ + { + "id": "rightHandGrasp", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightHandGraspOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/hydra_pose_open_right.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightHandGraspClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/hydra_pose_closed_right.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "rightIndexPoint", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightIndexPointOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_point_open_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightIndexPointClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_point_closed_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "rightThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightThumbRaiseOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_open_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightThumbRaiseClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_closed_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "rightIndexPointAndThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightIndexPointAndThumbRaiseOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_point_open_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightIndexPointAndThumbRaiseClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_point_closed_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + } + ] + }, + { + "id": "leftHandOverlay", + "type": "overlay", + "data": { + "alpha": 0.0, + "boneSet": "leftHand", + "alphaVar": "leftHandOverlayAlpha" + }, + "children": [ + { + "id": "leftHandStateMachine", + "type": "stateMachine", + "data": { + "currentState": "leftHandGrasp", + "states": [ + { + "id": "leftHandGrasp", + "interpTarget": 3, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, + { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, + { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } + ] + }, + { + "id": "leftIndexPoint", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, + { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, + { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } + ] + }, + { + "id": "leftThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, + { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, + { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } + ] + }, + { + "id": "leftIndexPointAndThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, + { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, + { "var": "isLeftThumbRaise", "state": "leftThumbRaise" } + ] + } + ] + }, + "children": [ + { + "id": "leftHandGrasp", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftHandGraspOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/hydra_pose_open_left.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftHandGraspClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/hydra_pose_closed_left.fbx", + "startFrame": 10.0, + "endFrame": 10.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "leftIndexPoint", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftIndexPointOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_point_open_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftIndexPointClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_point_closed_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "leftThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftThumbRaiseOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_open_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftThumbRaiseClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_closed_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "leftIndexPointAndThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftIndexPointAndThumbRaiseOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_point_open_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftIndexPointAndThumbRaiseClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_point_closed_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + } + ] + }, + { + "id": "mainStateMachine", + "type": "stateMachine", + "data": { + "currentState": "idle", + "states": [ + { + "id": "idle", + "interpTarget": 10, + "interpDuration": 10, + "transitions": [ + { "var": "isMovingForward", "state": "idleToWalkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "idleToWalkFwd", + "interpTarget": 10, + "interpDuration": 3, + "transitions": [ + { "var": "idleToWalkFwdOnDone", "state": "walkFwd" }, + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "walkFwd", + "interpTarget": 16, + "interpDuration": 6, + "transitions": [ + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "walkBwd", + "interpTarget": 8, + "interpDuration": 2, + "transitions": [ + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "strafeRight", + "interpTarget": 20, + "interpDuration": 1, + "transitions": [ + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "strafeLeft", + "interpTarget": 20, + "interpDuration": 1, + "transitions": [ + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "turnRight", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "isNotTurning", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "turnLeft", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "isNotTurning", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "fly", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "isNotFlying", "state": "idle" } + ] + }, + { + "id": "takeoffStand", + "interpTarget": 0, + "interpDuration": 6, + "transitions": [ + { "var": "isNotTakeoff", "state": "inAirStand" } + ] + }, + { + "id": "takeoffRun", + "interpTarget": 0, + "interpDuration": 6, + "transitions": [ + { "var": "isNotTakeoff", "state": "inAirRun" } + ] + }, + { + "id": "inAirStand", + "interpTarget": 0, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotInAir", "state": "landStandImpact" } + ] + }, + { + "id": "inAirRun", + "interpTarget": 0, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotInAir", "state": "landRun" } + ] + }, + { + "id": "landStandImpact", + "interpTarget": 6, + "interpDuration": 4, + "transitions": [ + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "landStandImpactOnDone", "state": "landStand" } + ] + }, + { + "id": "landStand", + "interpTarget": 0, + "interpDuration": 1, + "transitions": [ + { "var": "isMovingForward", "state": "idleToWalkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" }, + { "var": "landStandOnDone", "state": "idle" } + ] + }, + { + "id": "landRun", + "interpTarget": 1, + "interpDuration": 7, + "transitions": [ + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "landRunOnDone", "state": "walkFwd" } + ] + } + ] + }, + "children": [ + { + "id": "idle", + "type": "stateMachine", + "data": { + "currentState": "idleStand", + "states": [ + { + "id": "idleStand", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "isTalking", "state": "idleTalk" } + ] + }, + { + "id": "idleTalk", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "notIsTalking", "state": "idleStand" } + ] + } + ] + }, + "children": [ + { + "id": "idleStand", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/idle.fbx", + "startFrame": 0.0, + "endFrame": 300.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "idleTalk", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/talk.fbx", + "startFrame": 0.0, + "endFrame": 800.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "walkFwd", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0.5, 1.4, 4.5], + "alphaVar": "moveForwardAlpha", + "desiredSpeedVar": "moveForwardSpeed" + }, + "children": [ + { + "id": "walkFwdShort", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_short_fwd.fbx", + "startFrame": 0.0, + "endFrame": 39.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkFwdNormal", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_fwd.fbx", + "startFrame": 0.0, + "endFrame": 35.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkFwdRun", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/run_fwd.fbx", + "startFrame": 0.0, + "endFrame": 21.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "idleToWalkFwd", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/idle_to_walk.fbx", + "startFrame": 1.0, + "endFrame": 13.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "walkBwd", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0.6, 1.45], + "alphaVar": "moveBackwardAlpha", + "desiredSpeedVar": "moveBackwardSpeed" + }, + "children": [ + { + "id": "walkBwdShort", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_short_bwd.fbx", + "startFrame": 0.0, + "endFrame": 38.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkBwdNormal", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_bwd.fbx", + "startFrame": 0.0, + "endFrame": 36.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "turnLeft", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/turn_left.fbx", + "startFrame": 0.0, + "endFrame": 28.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "turnRight", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/turn_left.fbx", + "startFrame": 0.0, + "endFrame": 30.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "strafeLeft", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0.2, 0.65], + "alphaVar": "moveLateralAlpha", + "desiredSpeedVar": "moveLateralSpeed" + }, + "children": [ + { + "id": "strafeLeftShort", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_short_left.fbx", + "startFrame": 0.0, + "endFrame": 28.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "strafeLeftNormal", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_left.fbx", + "startFrame": 0.0, + "endFrame": 30.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "strafeRight", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0.2, 0.65], + "alphaVar": "moveLateralAlpha", + "desiredSpeedVar": "moveLateralSpeed" + }, + "children": [ + { + "id": "strafeRightShort", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_short_right.fbx", + "startFrame": 0.0, + "endFrame": 28.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "strafeRightNormal", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_right.fbx", + "startFrame": 0.0, + "endFrame": 30.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "fly", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/fly.fbx", + "startFrame": 1.0, + "endFrame": 80.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "takeoffStand", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_takeoff.fbx", + "startFrame": 17.0, + "endFrame": 25.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "takeoffRun", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_takeoff.fbx", + "startFrame": 1.0, + "endFrame": 2.5, + "timeScale": 0.01, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirStand", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "inAirAlpha" + }, + "children": [ + { + "id": "inAirStandPreApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_apex.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 0.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirStandApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_apex.fbx", + "startFrame": 1.0, + "endFrame": 1.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirStandPostApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_apex.fbx", + "startFrame": 2.0, + "endFrame": 2.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + } + ] + }, + { + "id": "inAirRun", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "inAirAlpha" + }, + "children": [ + { + "id": "inAirRunPreApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_in_air.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 0.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirRunApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_in_air.fbx", + "startFrame": 6.0, + "endFrame": 6.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirRunPostApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_in_air.fbx", + "startFrame": 11.0, + "endFrame": 11.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + } + ] + }, + { + "id": "landStandImpact", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_land.fbx", + "startFrame": 1.0, + "endFrame": 6.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "landStand", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_land.fbx", + "startFrame": 6.0, + "endFrame": 28.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "landRun", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_land.fbx", + "startFrame": 1.0, + "endFrame": 6.0, + "timeScale": 0.65, + "loopFlag": false + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "id": "userAnimA", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/idle.fbx", + "startFrame": 0.0, + "endFrame": 90.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "userAnimB", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/idle.fbx", + "startFrame": 0.0, + "endFrame": 90.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + } +} diff --git a/interface/resources/qml/Stats.qml b/interface/resources/qml/Stats.qml index d8e8df541b..f9824b2364 100644 --- a/interface/resources/qml/Stats.qml +++ b/interface/resources/qml/Stats.qml @@ -167,16 +167,15 @@ Item { text: "Position: " + root.position.x.toFixed(1) + ", " + root.position.y.toFixed(1) + ", " + root.position.z.toFixed(1) } - StatText { - text: "Animation Stack: " + root.position.x.toFixed(1) + ", " + - root.position.y.toFixed(1) + ", " + root.position.z.toFixed(1) - } StatText { text: "Speed: " + root.speed.toFixed(1) } StatText { text: "Yaw: " + root.yaw.toFixed(1) } + StatText { + text: "Animation Name: " + root.animationName + " Weight: " + root.animationWeight.toFixed(1) + } StatText { visible: root.expanded; text: "Avatar Mixer In: " + root.avatarMixerInKbps + " kbps, " + diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index 6bb615948c..e78d63faea 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -191,6 +191,12 @@ void Stats::updateStats(bool force) { // Third column, avatar stats auto myAvatar = avatarManager->getMyAvatar(); + auto rigCopy = myAvatar->getSkeletonModel(); + auto forwardAlpha = rigCopy->getRig().getFwdAlpha(); + auto backwardAlpha = rigCopy->getRig().getBwdAlpha(); + auto lateralAlpha = rigCopy->getRig().getLateralAlpha(); + QString animName("anim number 1"); + glm::vec3 avatarPos = myAvatar->getWorldPosition(); STAT_UPDATE(position, QVector3D(avatarPos.x, avatarPos.y, avatarPos.z)); STAT_UPDATE_FLOAT(speed, glm::length(myAvatar->getWorldVelocity()), 0.01f); @@ -346,6 +352,8 @@ void Stats::updateStats(bool force) { auto config = qApp->getRenderEngine()->getConfiguration().get(); STAT_UPDATE(engineFrameTime, (float) config->getCPURunTime()); STAT_UPDATE(avatarSimulationTime, (float)avatarManager->getAvatarSimulationTime()); + STAT_UPDATE(animationWeight, (float)forwardAlpha); + STAT_UPDATE(animationName, (QString)animName); STAT_UPDATE(gpuBuffers, (int)gpu::Context::getBufferGPUCount()); diff --git a/interface/src/ui/Stats.h b/interface/src/ui/Stats.h index f4181f9788..d49090d48d 100644 --- a/interface/src/ui/Stats.h +++ b/interface/src/ui/Stats.h @@ -135,6 +135,8 @@ private: \ * @property {number} batchFrameTime - Read-only. * @property {number} engineFrameTime - Read-only. * @property {number} avatarSimulationTime - Read-only. + * @property {number} animationWeight - Read-only. + * @property {number} animationName - Read-only. * * * @property {number} x @@ -282,6 +284,8 @@ class Stats : public QQuickItem { STATS_PROPERTY(float, batchFrameTime, 0) STATS_PROPERTY(float, engineFrameTime, 0) STATS_PROPERTY(float, avatarSimulationTime, 0) + STATS_PROPERTY(float, animationWeight, 0) + STATS_PROPERTY(QString, animationName, QString()) public: static Stats* getInstance(); @@ -999,6 +1003,20 @@ signals: */ void avatarSimulationTimeChanged(); + /**jsdoc + * Triggered when the value of the animationWeight property changes. + * @function Stats.animationWeightChanged + * @returns {Signal} + */ + void animationWeightChanged(); + + /**jsdoc + * Triggered when the value of the animationName property changes. + * @function Stats.animationNameChanged + * @returns {Signal} + */ + void animationNameChanged(); + /**jsdoc * Triggered when the value of the rectifiedTextureCount property changes. * @function Stats.rectifiedTextureCountChanged diff --git a/libraries/animation/src/AnimNodeLoader.cpp b/libraries/animation/src/AnimNodeLoader.cpp index 4169ff61a7..d16afb37cd 100644 --- a/libraries/animation/src/AnimNodeLoader.cpp +++ b/libraries/animation/src/AnimNodeLoader.cpp @@ -563,6 +563,7 @@ bool processStateMachineNode(AnimNode::Pointer node, const QJsonObject& jsonObj, auto statesArray = statesValue.toArray(); for (const auto& stateValue : statesArray) { + qCDebug(animation) << " state name is " << stateValue.toString(); if (!stateValue.isObject()) { qCCritical(animation) << "AnimNodeLoader, bad state object in \"states\", id =" << nodeId << ", url =" << jsonUrl.toDisplayString(); return false; diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 091acd5820..855a2a6d70 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -672,12 +672,15 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("moveForwardSpeed", _averageForwardSpeed.getAverage()); _animVars.set("moveForwardAlpha", moveForwardAlpha); + _fwdAlpha = moveForwardAlpha; _animVars.set("moveBackwardSpeed", -_averageForwardSpeed.getAverage()); _animVars.set("moveBackwardAlpha", moveBackwardAlpha); + _bwdAlpha = moveBackwardAlpha; _animVars.set("moveLateralSpeed", fabsf(_averageLateralSpeed.getAverage())); _animVars.set("moveLateralAlpha", moveLateralAlpha); + _lateralAlpha = moveLateralAlpha; const float MOVE_ENTER_SPEED_THRESHOLD = 0.2f; // m/sec const float MOVE_EXIT_SPEED_THRESHOLD = 0.07f; // m/sec diff --git a/libraries/animation/src/Rig.h b/libraries/animation/src/Rig.h index ffa3a128b9..dc9da2ea98 100644 --- a/libraries/animation/src/Rig.h +++ b/libraries/animation/src/Rig.h @@ -218,6 +218,10 @@ public: // input assumed to be in rig space void computeHeadFromHMD(const AnimPose& hmdPose, glm::vec3& headPositionOut, glm::quat& headOrientationOut) const; + const float getFwdAlpha() const { return _fwdAlpha; } + const float getBwdAlpha() const { return _bwdAlpha; } + const float getLateralAlpha() { return _lateralAlpha; } + signals: void onLoadComplete(); @@ -292,6 +296,9 @@ protected: std::shared_ptr _animSkeleton; std::unique_ptr _animLoader; AnimVariantMap _animVars; + float _fwdAlpha { 0.0f }; + float _bwdAlpha { 0.0f }; + float _lateralAlpha { 0.0f }; enum class RigRole { Idle = 0, Turn, diff --git a/scripts/developer/cameraControls.js b/scripts/developer/cameraControls.js new file mode 100644 index 0000000000..28515c51eb --- /dev/null +++ b/scripts/developer/cameraControls.js @@ -0,0 +1,284 @@ +// JavaScript source code + +/* Vec3, MyAvatar, Camera, Quat, Mat4, Script */ + + +var controllerMappingName; +var controllerMapping; + +controllerMappingName = 'Hifi-AnimationTools-Mapping'; +controllerMapping = Controller.newMapping(controllerMappingName); + +// Camera.mode = "independent"; +Camera.orientation = Quat.lookAtSimple(Camera.position, Vec3.ZERO); +var moveUp = false; +var moveDown = false; +var moveRight = false; +var moveLeft = false; +var moveForward = false; +var moveBack = false; +var rotateRight = false; +var rotateLeft = false; +var rotateUp = false; +var rotateDown = false; +var rollLeft = false; +var rollRight = false; +var orbitLeft = false; +var orbitRight = false; +var orbitUp = false; +var orbitDown = false; + +controllerMapping.from(Controller.Hardware.Keyboard.I).to(function (value) { + if (value !== 0) { + Camera.mode = "third person"; + print("camera mode is independent"); + } +}); + + +controllerMapping.from(Controller.Hardware.Keyboard.T).to(function (value) { + if (value !== 0) { + orbitUp = true; + print("orbit the camera up"); + } else { + orbitUp = false; + } +}); + +controllerMapping.from(Controller.Hardware.Keyboard.G).to(function (value) { + if (value !== 0) { + orbitDown = true; + print("orbit the camera down"); + } else { + orbitDown = false; + } +}); + + +controllerMapping.from(Controller.Hardware.Keyboard.V).to(function (value) { + if (value !== 0) { + orbitLeft = true; + print("orbit the camera left"); + } else { + orbitLeft = false; + } +}); + +controllerMapping.from(Controller.Hardware.Keyboard.B).to(function (value) { + if (value !== 0) { + orbitRight = true; + print("orbit the camera right"); + } else { + orbitRight = false; + } +}); + +controllerMapping.from(Controller.Hardware.Keyboard.F).to(function (value) { + if (value !== 0) { + rollRight = true; + print("roll the camera right"); + } else { + rollRight = false; + } +}); + +controllerMapping.from(Controller.Hardware.Keyboard.R).to(function (value) { + if (value !== 0) { + rollLeft = true; + print("roll the camera left"); + } else { + rollLeft = false; + } +}); + +controllerMapping.from(Controller.Hardware.Keyboard.D).to(function (value) { + if (value !== 0) { + rotateRight = true; + print("rotate the camera right"); + } else { + rotateRight = false; + } +}); + +controllerMapping.from(Controller.Hardware.Keyboard.E).to(function (value) { + if (value !== 0) { + rotateLeft = true; + print("rotate the camera left"); + } else { + rotateLeft = false; + } +}); + +controllerMapping.from(Controller.Hardware.Keyboard.W).to(function (value) { + if (value !== 0) { + rotateUp = true; + print("rotate the camera up"); + } else { + rotateUp = false; + } +}); + +controllerMapping.from(Controller.Hardware.Keyboard.S).to(function (value) { + if (value !== 0) { + rotateDown = true; + print("rotate the camera down"); + } else { + rotateDown = false; + } +}); + +controllerMapping.from(Controller.Hardware.Keyboard.U).to(function (value) { + if (value !== 0) { + moveForward = true; + print("move the camera forward"); + } else { + moveForward = false; + } +}); + +controllerMapping.from(Controller.Hardware.Keyboard.J).to(function (value) { + if (value !== 0) { + moveRight = true; + print("move the camera right"); + } else { + moveRight = false; + } +}); + +controllerMapping.from(Controller.Hardware.Keyboard.H).to(function (value) { + if (value !== 0) { + moveLeft = true; + print("move the camera left"); + } else { + moveLeft = false; + } +}); + +controllerMapping.from(Controller.Hardware.Keyboard.N).to(function (value) { + if (value !== 0) { + moveBack = true; + print("move the camera back"); + } else { + moveBack = false; + } +}); + +controllerMapping.from(Controller.Hardware.Keyboard.O).to(function (value) { + if (value !== 0) { + moveUp = true; + print("move the camera up"); + } else { + moveUp = false; + } +}); + +controllerMapping.from(Controller.Hardware.Keyboard.L).to(function (value) { + if (value !== 0) { + moveDown = true; + print("move the camera down"); + } else { + moveDown = false; + } +}); + +Controller.enableMapping(controllerMappingName); +Camera.mode = "first person"; + +Script.update.connect(function (deltaTime) { + + if (Camera.mode === "third person") { + print("the camera position is now " + Camera.position.x + " " + Camera.position.y + " " + Camera.position.z); + + var METERS_PER_SECOND = 1.0; + var DEGREES_PER_SECOND = 20.0; + var metersTraveledThisFrame = deltaTime * METERS_PER_SECOND; + var degreesTraveledThisFrame = deltaTime * DEGREES_PER_SECOND; + var newPosition = { x: 0, y: 0, z: 0 }; + var newOrientation = { x: 0, y: 0, z: 0, w: 1 }; + var distanceToMyAvatar = Vec3.length(Vec3.subtract(Camera.position, MyAvatar.position)); + + if (orbitLeft) { + Camera.position = MyAvatar.position; + newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 0, y: -1, z: 0 }); + Camera.orientation = Quat.multiply(newOrientation, Camera.orientation); + newPosition = Vec3.multiply(distanceToMyAvatar, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: 0, z: 1 })); + Camera.position = Vec3.sum(Camera.position, newPosition); + } + if (orbitRight) { + Camera.position = MyAvatar.position; + newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 0, y: 1, z: 0 }); + Camera.orientation = Quat.multiply(newOrientation, Camera.orientation); + newPosition = Vec3.multiply(distanceToMyAvatar, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: 0, z: 1 })); + Camera.position = Vec3.sum(Camera.position, newPosition); + } + + if (orbitUp) { + Camera.position = MyAvatar.position; + newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: -1, y: 0, z: 0 }); + Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); + newPosition = Vec3.multiply(distanceToMyAvatar, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: 0, z: 1 })); + Camera.position = Vec3.sum(Camera.position, newPosition); + } + if (orbitDown) { + Camera.position = MyAvatar.position; + newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 1, y: 0, z: 0 }); + Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); + newPosition = Vec3.multiply(distanceToMyAvatar, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: 0, z: 1 })); + Camera.position = Vec3.sum(Camera.position, newPosition); + } + + if (rotateLeft) { + newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 0, y: 1, z: 0 }); + Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); + } + if (rotateRight) { + newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 0, y: -1, z: 0 }); + Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); + } + if (rollLeft) { + newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 0, y: 0, z: 1 }); + Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); + } + if (rollRight) { + newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 0, y: 0, z: -1 }); + Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); + } + + if (rotateUp) { + newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 1, y: 0, z: 0 }); + Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); + } + if (rotateDown) { + newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: -1, y: 0, z: 0 }); + Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); + } + if (moveForward) { + newPosition = Vec3.multiply(metersTraveledThisFrame, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: 0, z: -1 })); + Camera.position = Vec3.sum(Camera.position, newPosition); + } + if (moveBack) { + newPosition = Vec3.multiply(metersTraveledThisFrame, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: 0, z: 1 })); + Camera.position = Vec3.sum(Camera.position, newPosition); + } + if (moveLeft) { + newPosition = Vec3.multiply(metersTraveledThisFrame, Vec3.multiplyQbyV(Camera.orientation, { x: -1, y: 0, z: 0 })); + Camera.position = Vec3.sum(Camera.position, newPosition); + } + if (moveRight) { + newPosition = Vec3.multiply(metersTraveledThisFrame, Vec3.multiplyQbyV(Camera.orientation, { x: 1, y: 0, z: 0 })); + Camera.position = Vec3.sum(Camera.position, newPosition); + } + if (moveUp) { + newPosition = Vec3.multiply(metersTraveledThisFrame, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: 1, z: 0 })); + Camera.position = Vec3.sum(Camera.position, newPosition); + } + if (moveDown) { + newPosition = Vec3.multiply(metersTraveledThisFrame, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: -1, z: 0 })); + Camera.position = Vec3.sum(Camera.position, newPosition); + } + } +}); + +Script.scriptEnding.connect(function () { + Controller.disableMapping(controllerMappingName); +});// JavaScript source code From a1202d9bd533859819546d752648ef2ea05e3724 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 24 Jul 2018 09:07:18 -0700 Subject: [PATCH 032/332] Do not use dynamic cast with bullet objects, and add missing template syntax --- interface/src/raypick/CollisionPick.cpp | 10 +++++++--- interface/src/raypick/CollisionPick.h | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index 40d089bfd4..7330a64267 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -317,6 +317,10 @@ RigidBodyFilterResultCallback::~RigidBodyFilterResultCallback() { ObjectMotionState::getShapeManager()->releaseShape(collisionObject.getCollisionShape()); } +bool RigidBodyFilterResultCallback::needsCollision(btBroadphaseProxy* proxy) const { + return true; +} + btScalar RigidBodyFilterResultCallback::addSingleResult(btManifoldPoint& cp, const btCollisionObjectWrapper* colObj0, int partId0, int index0, const btCollisionObjectWrapper* colObj1, int partId1, int index1) { const btCollisionObject* otherBody; btVector3 point; @@ -331,10 +335,10 @@ btScalar RigidBodyFilterResultCallback::addSingleResult(btManifoldPoint& cp, con point = cp.m_localPointB; otherPoint = cp.m_localPointA; } - const btRigidBody* collisionCandidate = dynamic_cast(otherBody); - if (!collisionCandidate) { + if (!(otherBody->getInternalType() & btCollisionObject::CO_RIGID_BODY)) { return 0; } + const btRigidBody* collisionCandidate = static_cast(otherBody); const btMotionState* motionStateCandidate = collisionCandidate->getMotionState(); checkOrAddCollidingState(motionStateCandidate, point, otherPoint); @@ -343,7 +347,7 @@ btScalar RigidBodyFilterResultCallback::addSingleResult(btManifoldPoint& cp, con } template -void AllObjectMotionStatesCallback::checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) { +void AllObjectMotionStatesCallback::checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) { const T* candidate = dynamic_cast(otherMotionState); if (!candidate) { return; diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index 3208efd5ec..3d2bc2c4c9 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -146,6 +146,8 @@ struct RigidBodyFilterResultCallback : public btCollisionWorld::ContactResultCal btCollisionObject collisionObject; + virtual bool needsCollision(btBroadphaseProxy* proxy) const; + // Check candidacy for adding to a list virtual void checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) = 0; From 4ca98990000984d06d8e7008910937a60eabeaa1 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 24 Jul 2018 11:37:52 -0700 Subject: [PATCH 033/332] Use SHAPE_TYPE_NONE instead of (ShapeType)0 in ShapeInfo.cpp --- libraries/shared/src/ShapeInfo.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/shared/src/ShapeInfo.cpp b/libraries/shared/src/ShapeInfo.cpp index b0caf2d62d..24942c0043 100644 --- a/libraries/shared/src/ShapeInfo.cpp +++ b/libraries/shared/src/ShapeInfo.cpp @@ -68,7 +68,7 @@ const float MIN_HALF_EXTENT = 0.005f; // 0.5 cm QString ShapeInfo::getNameForShapeType(ShapeType type) { if (((int)type <= 0) || ((int)type >= (int)SHAPETYPE_NAME_COUNT)) { - type = (ShapeType)0; + type = SHAPE_TYPE_NONE; } return shapeTypeNames[(int)type]; @@ -82,7 +82,7 @@ ShapeType ShapeInfo::getShapeTypeForName(QString string) { } } - return (ShapeType)0; + return SHAPE_TYPE_NONE; } void ShapeInfo::clear() { From 5ec277e45893514d585397d7869bcb1919ab7304 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 24 Jul 2018 15:47:49 -0700 Subject: [PATCH 034/332] Move bullet references in collision pick API to PhysicsEngine --- interface/src/Application.cpp | 2 +- interface/src/raypick/CollisionPick.cpp | 73 ++-------------- interface/src/raypick/CollisionPick.h | 83 ++++--------------- .../src/raypick/PickScriptingInterface.cpp | 2 +- .../src/raypick/PickScriptingInterface.h | 8 +- libraries/physics/src/PhysicsEngine.cpp | 72 ++++++++++++++++ libraries/physics/src/PhysicsEngine.h | 23 +++++ 7 files changed, 121 insertions(+), 142 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ad61e6a4a1..bc2055bd06 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -6656,7 +6656,7 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEnginePointe auto pickScriptingInterface = DependencyManager::get(); pickScriptingInterface->registerMetaTypes(scriptEngine.data()); - pickScriptingInterface->setCollisionWorld(_physicsEngine->getDynamicsWorld()); + pickScriptingInterface->setPhysicsEngine(_physicsEngine); // connect this script engines printedMessage signal to the global ScriptEngines these various messages connect(scriptEngine.data(), &ScriptEngine::printedMessage, diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index 7330a64267..8ef2890299 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -271,12 +271,9 @@ PickResultPointer CollisionPick::getEntityIntersection(const CollisionRegion& pi // Cannot compute result return std::make_shared(); } - - auto entityCollisionCallback = AllObjectMotionStatesCallback(pick.shapeInfo, pick.transform); - btCollisionWorld* collisionWorld = const_cast(_collisionWorld); - collisionWorld->contactTest(&entityCollisionCallback.collisionObject, entityCollisionCallback); - - return std::make_shared(pick, entityCollisionCallback.intersectingObjects, std::vector()); + + const auto& intersectingEntities = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_ENTITY, pick.shapeInfo, pick.transform); + return std::make_shared(pick, intersectingEntities, std::vector()); } PickResultPointer CollisionPick::getOverlayIntersection(const CollisionRegion& pick) { @@ -289,70 +286,10 @@ PickResultPointer CollisionPick::getAvatarIntersection(const CollisionRegion& pi return std::make_shared(); } - auto avatarCollisionCallback = AllObjectMotionStatesCallback(pick.shapeInfo, pick.transform); - btCollisionWorld* collisionWorld = const_cast(_collisionWorld); - collisionWorld->contactTest(&avatarCollisionCallback.collisionObject, avatarCollisionCallback); - - return std::make_shared(pick, std::vector(), avatarCollisionCallback.intersectingObjects); + const auto& intersectingAvatars = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_AVATAR, pick.shapeInfo, pick.transform); + return std::make_shared(pick, std::vector(), intersectingAvatars); } PickResultPointer CollisionPick::getHUDIntersection(const CollisionRegion& pick) { return getDefaultResult(QVariantMap()); -} - -RigidBodyFilterResultCallback::RigidBodyFilterResultCallback(const ShapeInfo& shapeInfo, const Transform& transform) : - btCollisionWorld::ContactResultCallback(), collisionObject() { - const btCollisionShape* collisionShape = ObjectMotionState::getShapeManager()->getShape(shapeInfo); - - collisionObject.setCollisionShape(const_cast(collisionShape)); - - btTransform bulletTransform; - bulletTransform.setOrigin(glmToBullet(transform.getTranslation())); - bulletTransform.setRotation(glmToBullet(transform.getRotation())); - - collisionObject.setWorldTransform(bulletTransform); -} - -RigidBodyFilterResultCallback::~RigidBodyFilterResultCallback() { - ObjectMotionState::getShapeManager()->releaseShape(collisionObject.getCollisionShape()); -} - -bool RigidBodyFilterResultCallback::needsCollision(btBroadphaseProxy* proxy) const { - return true; -} - -btScalar RigidBodyFilterResultCallback::addSingleResult(btManifoldPoint& cp, const btCollisionObjectWrapper* colObj0, int partId0, int index0, const btCollisionObjectWrapper* colObj1, int partId1, int index1) { - const btCollisionObject* otherBody; - btVector3 point; - btVector3 otherPoint; - if (colObj0->m_collisionObject == &collisionObject) { - otherBody = colObj1->m_collisionObject; - point = cp.m_localPointA; - otherPoint = cp.m_localPointB; - } - else { - otherBody = colObj0->m_collisionObject; - point = cp.m_localPointB; - otherPoint = cp.m_localPointA; - } - if (!(otherBody->getInternalType() & btCollisionObject::CO_RIGID_BODY)) { - return 0; - } - const btRigidBody* collisionCandidate = static_cast(otherBody); - const btMotionState* motionStateCandidate = collisionCandidate->getMotionState(); - - checkOrAddCollidingState(motionStateCandidate, point, otherPoint); - - return 0; -} - -template -void AllObjectMotionStatesCallback::checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) { - const T* candidate = dynamic_cast(otherMotionState); - if (!candidate) { - return; - } - - // This is the correct object type. Add it to the list. - intersectingObjects.emplace_back(candidate->getObjectID(), bulletToGLM(point), bulletToGLM(otherPoint)); } \ No newline at end of file diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index 3d2bc2c4c9..ef1fdc7b0c 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -8,44 +8,13 @@ #ifndef hifi_CollisionPick_h #define hifi_CollisionPick_h -#include - -#include -#include -#include +#include +#include #include #include class CollisionPickResult : public PickResult { public: - struct EntityIntersection { - EntityIntersection() { } - - EntityIntersection(const EntityIntersection& entityIntersection) : - id(entityIntersection.id), - pickCollisionPoint(entityIntersection.pickCollisionPoint), - entityCollisionPoint(entityIntersection.entityCollisionPoint) { - } - - EntityIntersection(QUuid id, glm::vec3 pickCollisionPoint, glm::vec3 entityCollisionPoint) : - id(id), - pickCollisionPoint(pickCollisionPoint), - entityCollisionPoint(entityCollisionPoint) { - } - - QVariantMap toVariantMap() { - QVariantMap variantMap; - variantMap["objectID"] = id; - variantMap["pickCollisionPoint"] = vec3toVariant(pickCollisionPoint); - variantMap["entityCollisionPoint"] = vec3toVariant(entityCollisionPoint); - return variantMap; - } - - QUuid id; - glm::vec3 pickCollisionPoint; - glm::vec3 entityCollisionPoint; - }; - CollisionPickResult() {} CollisionPickResult(const QVariantMap& pickVariant) : PickResult(pickVariant) {} @@ -73,13 +42,21 @@ public: QVariantList qIntersectingEntities; for (auto intersectingEntity : intersectingEntities) { - qIntersectingEntities.append(intersectingEntity.toVariantMap()); + QVariantMap qIntersectingEntity; + qIntersectingEntity["objectID"] = intersectingEntity.id; + qIntersectingEntity["pickCollisionPoint"] = vec3toVariant(intersectingEntity.pickCollisionPoint); + qIntersectingEntity["entityCollisionPoint"] = vec3toVariant(intersectingEntity.entityCollisionPoint); + qIntersectingEntities.append(qIntersectingEntity); } variantMap["intersectingEntities"] = qIntersectingEntities; QVariantList qIntersectingAvatars; for (auto intersectingAvatar : intersectingAvatars) { - qIntersectingAvatars.append(intersectingAvatar.toVariantMap()); + QVariantMap qIntersectingAvatar; + qIntersectingAvatar["objectID"] = intersectingAvatar.id; + qIntersectingAvatar["pickCollisionPoint"] = vec3toVariant(intersectingAvatar.pickCollisionPoint); + qIntersectingAvatar["entityCollisionPoint"] = vec3toVariant(intersectingAvatar.entityCollisionPoint); + qIntersectingAvatars.append(qIntersectingAvatar); } variantMap["intersectingAvatars"] = qIntersectingAvatars; @@ -111,10 +88,10 @@ public: class CollisionPick : public Pick { public: - CollisionPick(const PickFilter& filter, float maxDistance, bool enabled, CollisionRegion collisionRegion, const btCollisionWorld* collisionWorld) : + CollisionPick(const PickFilter& filter, float maxDistance, bool enabled, CollisionRegion collisionRegion, PhysicsEnginePointer physicsEngine) : Pick(filter, maxDistance, enabled), _mathPick(collisionRegion), - _collisionWorld(collisionWorld) { + _physicsEngine(physicsEngine) { } CollisionRegion getMathematicalPick() const override; @@ -130,38 +107,8 @@ protected: void computeShapeInfo(CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource); CollisionRegion _mathPick; - const btCollisionWorld* _collisionWorld; + PhysicsEnginePointer _physicsEngine; QSharedPointer _cachedResource; }; -// Callback for checking the motion states of all colliding rigid bodies for candidacy to be added to a list -struct RigidBodyFilterResultCallback : public btCollisionWorld::ContactResultCallback { - RigidBodyFilterResultCallback(const ShapeInfo& shapeInfo, const Transform& transform); - - ~RigidBodyFilterResultCallback(); - - RigidBodyFilterResultCallback(btCollisionObject& testCollisionObject) : - btCollisionWorld::ContactResultCallback(), collisionObject(testCollisionObject) { - } - - btCollisionObject collisionObject; - - virtual bool needsCollision(btBroadphaseProxy* proxy) const; - - // Check candidacy for adding to a list - virtual void checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) = 0; - - btScalar addSingleResult(btManifoldPoint& cp, const btCollisionObjectWrapper* colObj0, int partId0, int index0, const btCollisionObjectWrapper* colObj1, int partId1, int index1) override; -}; - -// Callback for getting colliding ObjectMotionStates in the world, or optionally a more specific type. -template -struct AllObjectMotionStatesCallback : public RigidBodyFilterResultCallback { - AllObjectMotionStatesCallback(const ShapeInfo& shapeInfo, const Transform& transform) : RigidBodyFilterResultCallback(shapeInfo, transform) { } - - std::vector intersectingObjects; - - void checkOrAddCollidingState(const btMotionState* otherMotionState, btVector3& point, btVector3& otherPoint) override; -}; - #endif // hifi_CollisionPick_h \ No newline at end of file diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index 526d099cb4..3417eaf431 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -157,7 +157,7 @@ unsigned int PickScriptingInterface::createCollisionPick(const QVariant& propert CollisionRegion collisionRegion(propMap); - return DependencyManager::get()->addPick(PickQuery::Collision, std::make_shared(filter, maxDistance, enabled, collisionRegion, _collisionWorld)); + return DependencyManager::get()->addPick(PickQuery::Collision, std::make_shared(filter, maxDistance, enabled, collisionRegion, _physicsEngine)); } void PickScriptingInterface::enablePick(unsigned int uid) { diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 48bc6e598e..5eb370adf7 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -9,10 +9,10 @@ #define hifi_PickScriptingInterface_h #include -#include #include #include +#include #include /**jsdoc @@ -277,12 +277,12 @@ public slots: static constexpr unsigned int INTERSECTED_HUD() { return IntersectionType::HUD; } // Set to allow CollisionPicks to have access to the physics engine - void setCollisionWorld(const btCollisionWorld* collisionWorld) { - _collisionWorld = collisionWorld; + void setPhysicsEngine(PhysicsEnginePointer physicsEngine) { + _physicsEngine = physicsEngine; } protected: - const btCollisionWorld* _collisionWorld; + PhysicsEnginePointer _physicsEngine; }; #endif // hifi_PickScriptingInterface_h diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index 66a4edb486..e82e201bb5 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -840,3 +840,75 @@ void PhysicsEngine::setShowBulletConstraintLimits(bool value) { } } +struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { + AllContactsCallback(MotionStateType desiredObjectType, const ShapeInfo& shapeInfo, const Transform& transform) : + desiredObjectType(desiredObjectType), + btCollisionWorld::ContactResultCallback(), + collisionObject() { + const btCollisionShape* collisionShape = ObjectMotionState::getShapeManager()->getShape(shapeInfo); + + collisionObject.setCollisionShape(const_cast(collisionShape)); + + btTransform bulletTransform; + bulletTransform.setOrigin(glmToBullet(transform.getTranslation())); + bulletTransform.setRotation(glmToBullet(transform.getRotation())); + + collisionObject.setWorldTransform(bulletTransform); + } + + ~AllContactsCallback() { + ObjectMotionState::getShapeManager()->releaseShape(collisionObject.getCollisionShape()); + } + + AllContactsCallback(btCollisionObject& testCollisionObject) : + btCollisionWorld::ContactResultCallback(), collisionObject(testCollisionObject) { + } + + MotionStateType desiredObjectType; + btCollisionObject collisionObject; + std::vector intersectingObjects; + + virtual bool needsCollision(btBroadphaseProxy* proxy) const { + return true; + } + + btScalar addSingleResult(btManifoldPoint& cp, const btCollisionObjectWrapper* colObj0, int partId0, int index0, const btCollisionObjectWrapper* colObj1, int partId1, int index1) override { + const btCollisionObject* otherBody; + btVector3 point; + btVector3 otherPoint; + if (colObj0->m_collisionObject == &collisionObject) { + otherBody = colObj1->m_collisionObject; + point = cp.m_localPointA; + otherPoint = cp.m_localPointB; + } + else { + otherBody = colObj0->m_collisionObject; + point = cp.m_localPointB; + otherPoint = cp.m_localPointA; + } + + if (!(otherBody->getInternalType() & btCollisionObject::CO_RIGID_BODY)) { + return 0; + } + const btRigidBody* collisionCandidate = static_cast(otherBody); + const btMotionState* motionStateCandidate = collisionCandidate->getMotionState(); + + const ObjectMotionState* candidate = dynamic_cast(motionStateCandidate); + if (!candidate || candidate->getType() != desiredObjectType) { + return 0; + } + + // This is the correct object type. Add it to the list. + intersectingObjects.emplace_back(candidate->getObjectID(), bulletToGLM(point), bulletToGLM(otherPoint)); + + return 0; + } +}; + +std::vector PhysicsEngine::getCollidingInRegion(MotionStateType desiredObjectType, const ShapeInfo& regionShapeInfo, const Transform& regionTransform) const { + auto contactCallback = AllContactsCallback(desiredObjectType, regionShapeInfo, regionTransform); + _dynamicsWorld->contactTest(&contactCallback.collisionObject, contactCallback); + + return contactCallback.intersectingObjects; +} + diff --git a/libraries/physics/src/PhysicsEngine.h b/libraries/physics/src/PhysicsEngine.h index 6a491c3791..42005b5a5d 100644 --- a/libraries/physics/src/PhysicsEngine.h +++ b/libraries/physics/src/PhysicsEngine.h @@ -43,6 +43,26 @@ public: void* _b; // ObjectMotionState pointer }; +struct EntityIntersection { + EntityIntersection() { } + + EntityIntersection(const EntityIntersection& entityIntersection) : + id(entityIntersection.id), + pickCollisionPoint(entityIntersection.pickCollisionPoint), + entityCollisionPoint(entityIntersection.entityCollisionPoint) { + } + + EntityIntersection(QUuid id, glm::vec3 selfCollisionPoint, glm::vec3 otherCollisionPoint) : + id(id), + pickCollisionPoint(selfCollisionPoint), + entityCollisionPoint(otherCollisionPoint) { + } + + QUuid id; + glm::vec3 pickCollisionPoint; + glm::vec3 entityCollisionPoint; +}; + using ContactMap = std::map; using CollisionEvents = std::vector; @@ -105,6 +125,9 @@ public: void setShowBulletConstraints(bool value); void setShowBulletConstraintLimits(bool value); + // Function for getting colliding ObjectMotionStates in the world of specified type + std::vector getCollidingInRegion(MotionStateType desiredObjectType, const ShapeInfo& regionShapeInfo, const Transform& regionTransform) const; + private: QList removeDynamicsForBody(btRigidBody* body); void addObjectToDynamicsWorld(ObjectMotionState* motionState); From 083991dc1a4adc8bb9a805d57d7d5dc6ad12ffd0 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 24 Jul 2018 15:50:18 -0700 Subject: [PATCH 035/332] Fix CollisionPick not detecting when collision points for collision models are loaded --- interface/src/raypick/CollisionPick.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index 8ef2890299..ac3342110b 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -23,6 +23,7 @@ bool CollisionPick::isShapeInfoReady(CollisionRegion& pick) { if (_cachedResource->isLoaded()) { computeShapeInfo(pick, pick.shapeInfo, _cachedResource); + return true; } return false; From 81c8fe611445434203ce33612084ac34fa0d2e92 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Tue, 24 Jul 2018 17:06:09 -0700 Subject: [PATCH 036/332] Change 'Enable Authentication' to 'Enable Packet Verification' --- domain-server/resources/describe-settings.json | 4 ++-- domain-server/src/DomainServer.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/domain-server/resources/describe-settings.json b/domain-server/resources/describe-settings.json index 4e68d29e85..db25e247d3 100644 --- a/domain-server/resources/describe-settings.json +++ b/domain-server/resources/describe-settings.json @@ -48,8 +48,8 @@ "advanced": true }, { - "name": "enable_authentication", - "label": "Enable Authentication", + "name": "enable_packet_verification", + "label": "Enable Packet Verification", "help": "Enable secure checksums on communication that uses the High Fidelity protocol. Increases security with possibly a small performance penalty.", "default": true, "type": "checkbox", diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 5324bb407d..b381da159d 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -630,7 +630,7 @@ bool DomainServer::isPacketVerified(const udt::Packet& packet) { void DomainServer::setupNodeListAndAssignments() { const QString CUSTOM_LOCAL_PORT_OPTION = "metaverse.local_port"; - static const QString ENABLE_PACKET_AUTHENTICATION = "metaverse.enable_authentication"; + static const QString ENABLE_PACKET_AUTHENTICATION = "metaverse.enable_packet_verification"; QVariant localPortValue = _settingsManager.valueOrDefaultValueForKeyPath(CUSTOM_LOCAL_PORT_OPTION); int domainServerPort = localPortValue.toInt(); From 04dbafeedce6cc53b557286a24d7865a8777613d Mon Sep 17 00:00:00 2001 From: amantley Date: Tue, 24 Jul 2018 17:13:57 -0700 Subject: [PATCH 037/332] removed the hard coded reference speeds in Rig.cpp. we now use the characteristic speeds from the avatar-animation.json file for blending. the computation of the blend alphas takes place in AnimBlendLinearMove.cpp --- .../animation/src/AnimBlendLinearMove.cpp | 32 ++++++++++++++++++- libraries/animation/src/Rig.cpp | 23 ------------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/libraries/animation/src/AnimBlendLinearMove.cpp b/libraries/animation/src/AnimBlendLinearMove.cpp index 40fbb5a6f7..f027695160 100644 --- a/libraries/animation/src/AnimBlendLinearMove.cpp +++ b/libraries/animation/src/AnimBlendLinearMove.cpp @@ -26,13 +26,43 @@ AnimBlendLinearMove::~AnimBlendLinearMove() { } +static float calculateAlpha(const float speed, const std::vector& characteristicSpeeds) { + + assert(characteristicSpeeds.size() > 0); + // calculate alpha from linear combination of referenceSpeeds. + float alpha = 0.0f; + if (speed <= characteristicSpeeds.front()) { + alpha = 0.0f; + } else if (speed > characteristicSpeeds.back()) { + alpha = (float)(characteristicSpeeds.size() - 1); + } else { + for (size_t i = 0; i < characteristicSpeeds.size() - 1; i++) { + if (characteristicSpeeds[i] < speed && speed < characteristicSpeeds[i + 1]) { + alpha = (float)i + ((speed - characteristicSpeeds[i]) / (characteristicSpeeds[i + 1] - characteristicSpeeds[i])); + break; + } + } + } + return alpha; +} + const AnimPoseVec& AnimBlendLinearMove::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { assert(_children.size() == _characteristicSpeeds.size()); - _alpha = animVars.lookup(_alphaVar, _alpha); _desiredSpeed = animVars.lookup(_desiredSpeedVar, _desiredSpeed); + float speed = 0.0f; + if (_alphaVar.contains("Lateral")) { + speed = animVars.lookup("moveLateralSpeed", speed); + } else if (_alphaVar.contains("Backward")) { + speed = animVars.lookup("moveBackwardSpeed", speed); + } else { + //this is forward movement + speed = animVars.lookup("moveForwardSpeed", speed); + } + _alpha = calculateAlpha(speed, _characteristicSpeeds); + if (_children.size() == 0) { for (auto&& pose : _poses) { pose = AnimPose::identity; diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 855a2a6d70..2f962d791b 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -636,11 +636,6 @@ bool Rig::getRelativeDefaultJointTranslation(int index, glm::vec3& translationOu } } -// animation reference speeds. -static const std::vector FORWARD_SPEEDS = { 0.4f, 2.8f, 4.5f }; // m/s -static const std::vector BACKWARD_SPEEDS = { 0.6f, 1.45f }; // m/s -static const std::vector LATERAL_SPEEDS = { 0.2f, 0.65f, 2.6f }; // m/s - void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPosition, const glm::vec3& worldVelocity, const glm::quat& worldRotation, CharacterControllerState ccState) { glm::vec3 forward = worldRotation * IDENTITY_FORWARD; @@ -660,27 +655,9 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos // sine wave LFO var for testing. static float t = 0.0f; _animVars.set("sine", 2.0f * 0.5f * sinf(t) + 0.5f); - - float moveForwardAlpha = 0.0f; - float moveBackwardAlpha = 0.0f; - float moveLateralAlpha = 0.0f; - - // calcuate the animation alpha and timeScale values based on current speeds and animation reference speeds. - calcAnimAlpha(_averageForwardSpeed.getAverage(), FORWARD_SPEEDS, &moveForwardAlpha); - calcAnimAlpha(-_averageForwardSpeed.getAverage(), BACKWARD_SPEEDS, &moveBackwardAlpha); - calcAnimAlpha(fabsf(_averageLateralSpeed.getAverage()), LATERAL_SPEEDS, &moveLateralAlpha); - _animVars.set("moveForwardSpeed", _averageForwardSpeed.getAverage()); - _animVars.set("moveForwardAlpha", moveForwardAlpha); - _fwdAlpha = moveForwardAlpha; - _animVars.set("moveBackwardSpeed", -_averageForwardSpeed.getAverage()); - _animVars.set("moveBackwardAlpha", moveBackwardAlpha); - _bwdAlpha = moveBackwardAlpha; - _animVars.set("moveLateralSpeed", fabsf(_averageLateralSpeed.getAverage())); - _animVars.set("moveLateralAlpha", moveLateralAlpha); - _lateralAlpha = moveLateralAlpha; const float MOVE_ENTER_SPEED_THRESHOLD = 0.2f; // m/sec const float MOVE_EXIT_SPEED_THRESHOLD = 0.07f; // m/sec From b91df1b2d40cab745f8a688c707d125b904a8b59 Mon Sep 17 00:00:00 2001 From: amantley Date: Tue, 24 Jul 2018 17:25:27 -0700 Subject: [PATCH 038/332] cleaned up stray files and old hud code --- .../resources/avatar/avatar-animation1.json | 1228 ----------------- interface/resources/avatar/new-animation.json | 1228 ----------------- interface/src/ui/Stats.cpp | 6 +- libraries/animation/src/AnimNodeLoader.cpp | 2 +- scripts/developer/cameraControls.js | 284 ---- 5 files changed, 4 insertions(+), 2744 deletions(-) delete mode 100644 interface/resources/avatar/avatar-animation1.json delete mode 100644 interface/resources/avatar/new-animation.json delete mode 100644 scripts/developer/cameraControls.js diff --git a/interface/resources/avatar/avatar-animation1.json b/interface/resources/avatar/avatar-animation1.json deleted file mode 100644 index 44d294f767..0000000000 --- a/interface/resources/avatar/avatar-animation1.json +++ /dev/null @@ -1,1228 +0,0 @@ -{ - "version": "1.0", - "root": { - "id": "userAnimStateMachine", - "type": "stateMachine", - "data": { - "currentState": "userAnimNone", - "states": [ - { - "id": "userAnimNone", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "userAnimA", "state": "userAnimA" }, - { "var": "userAnimB", "state": "userAnimB" } - ] - }, - { - "id": "userAnimA", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "userAnimNone", "state": "userAnimNone" }, - { "var": "userAnimB", "state": "userAnimB" } - ] - }, - { - "id": "userAnimB", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "userAnimNone", "state": "userAnimNone" }, - { "var": "userAnimA", "state": "userAnimA" } - ] - } - ] - }, - "children": [ - { - "id": "userAnimNone", - "type": "overlay", - "data": { - "alpha": 1.0, - "alphaVar": "ikOverlayAlpha", - "boneSet": "fullBody" - }, - "children": [ - { - "id": "ik", - "type": "inverseKinematics", - "data": { - "solutionSource": "relaxToUnderPoses", - "solutionSourceVar": "solutionSource", - "targets": [ - { - "jointName": "Hips", - "positionVar": "hipsPosition", - "rotationVar": "hipsRotation", - "typeVar": "hipsType", - "weightVar": "hipsWeight", - "weight": 1.0, - "flexCoefficients": [1] - }, - { - "jointName": "RightHand", - "positionVar": "rightHandPosition", - "rotationVar": "rightHandRotation", - "typeVar": "rightHandType", - "weightVar": "rightHandWeight", - "weight": 1.0, - "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], - "poleVectorEnabledVar": "rightHandPoleVectorEnabled", - "poleReferenceVectorVar": "rightHandPoleReferenceVector", - "poleVectorVar": "rightHandPoleVector" - }, - { - "jointName": "LeftHand", - "positionVar": "leftHandPosition", - "rotationVar": "leftHandRotation", - "typeVar": "leftHandType", - "weightVar": "leftHandWeight", - "weight": 1.0, - "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], - "poleVectorEnabledVar": "leftHandPoleVectorEnabled", - "poleReferenceVectorVar": "leftHandPoleReferenceVector", - "poleVectorVar": "leftHandPoleVector" - }, - { - "jointName": "RightFoot", - "positionVar": "rightFootPosition", - "rotationVar": "rightFootRotation", - "typeVar": "rightFootType", - "weightVar": "rightFootWeight", - "weight": 1.0, - "flexCoefficients": [1, 0.45, 0.45], - "poleVectorEnabledVar": "rightFootPoleVectorEnabled", - "poleReferenceVectorVar": "rightFootPoleReferenceVector", - "poleVectorVar": "rightFootPoleVector" - }, - { - "jointName": "LeftFoot", - "positionVar": "leftFootPosition", - "rotationVar": "leftFootRotation", - "typeVar": "leftFootType", - "weightVar": "leftFootWeight", - "weight": 1.0, - "flexCoefficients": [1, 0.45, 0.45], - "poleVectorEnabledVar": "leftFootPoleVectorEnabled", - "poleReferenceVectorVar": "leftFootPoleReferenceVector", - "poleVectorVar": "leftFootPoleVector" - }, - { - "jointName": "Spine2", - "positionVar": "spine2Position", - "rotationVar": "spine2Rotation", - "typeVar": "spine2Type", - "weightVar": "spine2Weight", - "weight": 2.0, - "flexCoefficients": [1.0, 0.5, 0.25] - }, - { - "jointName": "Head", - "positionVar": "headPosition", - "rotationVar": "headRotation", - "typeVar": "headType", - "weightVar": "headWeight", - "weight": 4.0, - "flexCoefficients": [1, 0.5, 0.25, 0.2, 0.1] - } - ] - }, - "children": [] - }, - { - "id": "defaultPoseOverlay", - "type": "overlay", - "data": { - "alpha": 0.0, - "alphaVar": "defaultPoseOverlayAlpha", - "boneSet": "fullBody", - "boneSetVar": "defaultPoseOverlayBoneSet" - }, - "children": [ - { - "id": "defaultPose", - "type": "defaultPose", - "data": { - }, - "children": [] - }, - { - "id": "rightHandOverlay", - "type": "overlay", - "data": { - "alpha": 0.0, - "boneSet": "rightHand", - "alphaVar": "rightHandOverlayAlpha" - }, - "children": [ - { - "id": "rightHandStateMachine", - "type": "stateMachine", - "data": { - "currentState": "rightHandGrasp", - "states": [ - { - "id": "rightHandGrasp", - "interpTarget": 3, - "interpDuration": 3, - "transitions": [ - { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, - { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, - { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } - ] - }, - { - "id": "rightIndexPoint", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, - { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, - { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } - ] - }, - { - "id": "rightThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, - { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, - { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } - ] - }, - { - "id": "rightIndexPointAndThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, - { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, - { "var": "isRightThumbRaise", "state": "rightThumbRaise" } - ] - } - ] - }, - "children": [ - { - "id": "rightHandGrasp", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightHandGraspOpen", - "type": "clip", - "data": { - "url": "animations/hydra_pose_open_right.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightHandGraspClosed", - "type": "clip", - "data": { - "url": "animations/hydra_pose_closed_right.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightIndexPoint", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightIndexPointOpen", - "type": "clip", - "data": { - "url": "animations/touch_point_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightIndexPointClosed", - "type": "clip", - "data": { - "url": "animations/touch_point_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightThumbRaiseOpen", - "type": "clip", - "data": { - "url": "animations/touch_thumb_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightThumbRaiseClosed", - "type": "clip", - "data": { - "url": "animations/touch_thumb_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightIndexPointAndThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightIndexPointAndThumbRaiseOpen", - "type": "clip", - "data": { - "url": "animations/touch_thumb_point_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightIndexPointAndThumbRaiseClosed", - "type": "clip", - "data": { - "url": "animations/touch_thumb_point_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - } - ] - }, - { - "id": "leftHandOverlay", - "type": "overlay", - "data": { - "alpha": 0.0, - "boneSet": "leftHand", - "alphaVar": "leftHandOverlayAlpha" - }, - "children": [ - { - "id": "leftHandStateMachine", - "type": "stateMachine", - "data": { - "currentState": "leftHandGrasp", - "states": [ - { - "id": "leftHandGrasp", - "interpTarget": 3, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, - { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, - { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } - ] - }, - { - "id": "leftIndexPoint", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, - { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, - { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } - ] - }, - { - "id": "leftThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, - { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, - { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } - ] - }, - { - "id": "leftIndexPointAndThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, - { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, - { "var": "isLeftThumbRaise", "state": "leftThumbRaise" } - ] - } - ] - }, - "children": [ - { - "id": "leftHandGrasp", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftHandGraspOpen", - "type": "clip", - "data": { - "url": "animations/hydra_pose_open_left.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftHandGraspClosed", - "type": "clip", - "data": { - "url": "animations/hydra_pose_closed_left.fbx", - "startFrame": 10.0, - "endFrame": 10.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftIndexPoint", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftIndexPointOpen", - "type": "clip", - "data": { - "url": "animations/touch_point_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftIndexPointClosed", - "type": "clip", - "data": { - "url": "animations/touch_point_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftThumbRaiseOpen", - "type": "clip", - "data": { - "url": "animations/touch_thumb_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftThumbRaiseClosed", - "type": "clip", - "data": { - "url": "animations/touch_thumb_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftIndexPointAndThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftIndexPointAndThumbRaiseOpen", - "type": "clip", - "data": { - "url": "animations/touch_thumb_point_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftIndexPointAndThumbRaiseClosed", - "type": "clip", - "data": { - "url": "animations/touch_thumb_point_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - } - ] - }, - { - "id": "mainStateMachine", - "type": "stateMachine", - "data": { - "currentState": "idle", - "states": [ - { - "id": "idle", - "interpTarget": 10, - "interpDuration": 10, - "transitions": [ - { "var": "isMovingForward", "state": "idleToWalkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "idleToWalkFwd", - "interpTarget": 10, - "interpDuration": 3, - "transitions": [ - { "var": "idleToWalkFwdOnDone", "state": "walkFwd" }, - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "walkFwd", - "interpTarget": 16, - "interpDuration": 6, - "transitions": [ - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "walkBwd", - "interpTarget": 8, - "interpDuration": 2, - "transitions": [ - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "strafeRight", - "interpTarget": 20, - "interpDuration": 1, - "transitions": [ - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "strafeLeft", - "interpTarget": 20, - "interpDuration": 1, - "transitions": [ - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "turnRight", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isNotTurning", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "turnLeft", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isNotTurning", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "fly", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isNotFlying", "state": "idle" } - ] - }, - { - "id": "takeoffStand", - "interpTarget": 0, - "interpDuration": 6, - "transitions": [ - { "var": "isNotTakeoff", "state": "inAirStand" } - ] - }, - { - "id": "takeoffRun", - "interpTarget": 0, - "interpDuration": 6, - "transitions": [ - { "var": "isNotTakeoff", "state": "inAirRun" } - ] - }, - { - "id": "inAirStand", - "interpTarget": 0, - "interpDuration": 6, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isNotInAir", "state": "landStandImpact" } - ] - }, - { - "id": "inAirRun", - "interpTarget": 0, - "interpDuration": 6, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isNotInAir", "state": "landRun" } - ] - }, - { - "id": "landStandImpact", - "interpTarget": 6, - "interpDuration": 4, - "transitions": [ - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "landStandImpactOnDone", "state": "landStand" } - ] - }, - { - "id": "landStand", - "interpTarget": 0, - "interpDuration": 1, - "transitions": [ - { "var": "isMovingForward", "state": "idleToWalkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" }, - { "var": "landStandOnDone", "state": "idle" } - ] - }, - { - "id": "landRun", - "interpTarget": 1, - "interpDuration": 7, - "transitions": [ - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "landRunOnDone", "state": "walkFwd" } - ] - } - ] - }, - "children": [ - { - "id": "idle", - "type": "stateMachine", - "data": { - "currentState": "idleStand", - "states": [ - { - "id": "idleStand", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isTalking", "state": "idleTalk" } - ] - }, - { - "id": "idleTalk", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "notIsTalking", "state": "idleStand" } - ] - } - ] - }, - "children": [ - { - "id": "idleStand", - "type": "clip", - "data": { - "url": "animations/idle.fbx", - "startFrame": 0.0, - "endFrame": 300.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "idleTalk", - "type": "clip", - "data": { - "url": "animations/talk.fbx", - "startFrame": 0.0, - "endFrame": 800.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "walkFwd", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0.5, 1.4, 4.5], - "alphaVar": "moveForwardAlpha", - "desiredSpeedVar": "moveForwardSpeed" - }, - "children": [ - { - "id": "walkFwdShort", - "type": "clip", - "data": { - "url": "animations/walk_short_fwd.fbx", - "startFrame": 0.0, - "endFrame": 39.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkFwdNormal", - "type": "clip", - "data": { - "url": "animations/walk_fwd.fbx", - "startFrame": 0.0, - "endFrame": 35.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkFwdRun", - "type": "clip", - "data": { - "url": "animations/run_fwd.fbx", - "startFrame": 0.0, - "endFrame": 21.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "idleToWalkFwd", - "type": "clip", - "data": { - "url": "animations/idle_to_walk.fbx", - "startFrame": 1.0, - "endFrame": 13.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "walkBwd", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0.6, 1.45], - "alphaVar": "moveBackwardAlpha", - "desiredSpeedVar": "moveBackwardSpeed" - }, - "children": [ - { - "id": "walkBwdShort", - "type": "clip", - "data": { - "url": "animations/walk_short_bwd.fbx", - "startFrame": 0.0, - "endFrame": 38.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkBwdNormal", - "type": "clip", - "data": { - "url": "animations/walk_bwd.fbx", - "startFrame": 0.0, - "endFrame": 36.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "turnLeft", - "type": "clip", - "data": { - "url": "animations/turn_left.fbx", - "startFrame": 0.0, - "endFrame": 28.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "turnRight", - "type": "clip", - "data": { - "url": "animations/turn_left.fbx", - "startFrame": 0.0, - "endFrame": 30.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "strafeLeft", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0.2, 0.65], - "alphaVar": "moveLateralAlpha", - "desiredSpeedVar": "moveLateralSpeed" - }, - "children": [ - { - "id": "strafeLeftShort", - "type": "clip", - "data": { - "url": "animations/side_step_short_left.fbx", - "startFrame": 0.0, - "endFrame": 28.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeLeftNormal", - "type": "clip", - "data": { - "url": "animations/side_step_left.fbx", - "startFrame": 0.0, - "endFrame": 30.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "strafeRight", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0.2, 0.65], - "alphaVar": "moveLateralAlpha", - "desiredSpeedVar": "moveLateralSpeed" - }, - "children": [ - { - "id": "strafeRightShort", - "type": "clip", - "data": { - "url": "animations/side_step_short_right.fbx", - "startFrame": 0.0, - "endFrame": 28.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeRightNormal", - "type": "clip", - "data": { - "url": "animations/side_step_right.fbx", - "startFrame": 0.0, - "endFrame": 30.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "fly", - "type": "clip", - "data": { - "url": "animations/fly.fbx", - "startFrame": 1.0, - "endFrame": 80.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "takeoffStand", - "type": "clip", - "data": { - "url": "animations/jump_standing_takeoff.fbx", - "startFrame": 17.0, - "endFrame": 25.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "takeoffRun", - "type": "clip", - "data": { - "url": "animations/jump_takeoff.fbx", - "startFrame": 1.0, - "endFrame": 2.5, - "timeScale": 0.01, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStand", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "inAirAlpha" - }, - "children": [ - { - "id": "inAirStandPreApex", - "type": "clip", - "data": { - "url": "animations/jump_standing_apex.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 0.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStandApex", - "type": "clip", - "data": { - "url": "animations/jump_standing_apex.fbx", - "startFrame": 1.0, - "endFrame": 1.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStandPostApex", - "type": "clip", - "data": { - "url": "animations/jump_standing_apex.fbx", - "startFrame": 2.0, - "endFrame": 2.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - } - ] - }, - { - "id": "inAirRun", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "inAirAlpha" - }, - "children": [ - { - "id": "inAirRunPreApex", - "type": "clip", - "data": { - "url": "animations/jump_in_air.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 0.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirRunApex", - "type": "clip", - "data": { - "url": "animations/jump_in_air.fbx", - "startFrame": 6.0, - "endFrame": 6.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirRunPostApex", - "type": "clip", - "data": { - "url": "animations/jump_in_air.fbx", - "startFrame": 11.0, - "endFrame": 11.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - } - ] - }, - { - "id": "landStandImpact", - "type": "clip", - "data": { - "url": "animations/jump_standing_land.fbx", - "startFrame": 1.0, - "endFrame": 6.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "landStand", - "type": "clip", - "data": { - "url": "animations/jump_standing_land.fbx", - "startFrame": 6.0, - "endFrame": 28.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "landRun", - "type": "clip", - "data": { - "url": "animations/jump_land.fbx", - "startFrame": 1.0, - "endFrame": 6.0, - "timeScale": 0.65, - "loopFlag": false - }, - "children": [] - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "id": "userAnimA", - "type": "clip", - "data": { - "url": "animations/idle.fbx", - "startFrame": 0.0, - "endFrame": 90.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "userAnimB", - "type": "clip", - "data": { - "url": "animations/idle.fbx", - "startFrame": 0.0, - "endFrame": 90.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - } -} diff --git a/interface/resources/avatar/new-animation.json b/interface/resources/avatar/new-animation.json deleted file mode 100644 index 63f98193f6..0000000000 --- a/interface/resources/avatar/new-animation.json +++ /dev/null @@ -1,1228 +0,0 @@ -{ - "version": "1.0", - "root": { - "id": "userAnimStateMachine", - "type": "stateMachine", - "data": { - "currentState": "userAnimNone", - "states": [ - { - "id": "userAnimNone", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "userAnimA", "state": "userAnimA" }, - { "var": "userAnimB", "state": "userAnimB" } - ] - }, - { - "id": "userAnimA", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "userAnimNone", "state": "userAnimNone" }, - { "var": "userAnimB", "state": "userAnimB" } - ] - }, - { - "id": "userAnimB", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "userAnimNone", "state": "userAnimNone" }, - { "var": "userAnimA", "state": "userAnimA" } - ] - } - ] - }, - "children": [ - { - "id": "userAnimNone", - "type": "overlay", - "data": { - "alpha": 1.0, - "alphaVar": "ikOverlayAlpha", - "boneSet": "fullBody" - }, - "children": [ - { - "id": "ik", - "type": "inverseKinematics", - "data": { - "solutionSource": "relaxToUnderPoses", - "solutionSourceVar": "solutionSource", - "targets": [ - { - "jointName": "Hips", - "positionVar": "hipsPosition", - "rotationVar": "hipsRotation", - "typeVar": "hipsType", - "weightVar": "hipsWeight", - "weight": 1.0, - "flexCoefficients": [1] - }, - { - "jointName": "RightHand", - "positionVar": "rightHandPosition", - "rotationVar": "rightHandRotation", - "typeVar": "rightHandType", - "weightVar": "rightHandWeight", - "weight": 1.0, - "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], - "poleVectorEnabledVar": "rightHandPoleVectorEnabled", - "poleReferenceVectorVar": "rightHandPoleReferenceVector", - "poleVectorVar": "rightHandPoleVector" - }, - { - "jointName": "LeftHand", - "positionVar": "leftHandPosition", - "rotationVar": "leftHandRotation", - "typeVar": "leftHandType", - "weightVar": "leftHandWeight", - "weight": 1.0, - "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], - "poleVectorEnabledVar": "leftHandPoleVectorEnabled", - "poleReferenceVectorVar": "leftHandPoleReferenceVector", - "poleVectorVar": "leftHandPoleVector" - }, - { - "jointName": "RightFoot", - "positionVar": "rightFootPosition", - "rotationVar": "rightFootRotation", - "typeVar": "rightFootType", - "weightVar": "rightFootWeight", - "weight": 1.0, - "flexCoefficients": [1, 0.45, 0.45], - "poleVectorEnabledVar": "rightFootPoleVectorEnabled", - "poleReferenceVectorVar": "rightFootPoleReferenceVector", - "poleVectorVar": "rightFootPoleVector" - }, - { - "jointName": "LeftFoot", - "positionVar": "leftFootPosition", - "rotationVar": "leftFootRotation", - "typeVar": "leftFootType", - "weightVar": "leftFootWeight", - "weight": 1.0, - "flexCoefficients": [1, 0.45, 0.45], - "poleVectorEnabledVar": "leftFootPoleVectorEnabled", - "poleReferenceVectorVar": "leftFootPoleReferenceVector", - "poleVectorVar": "leftFootPoleVector" - }, - { - "jointName": "Spine2", - "positionVar": "spine2Position", - "rotationVar": "spine2Rotation", - "typeVar": "spine2Type", - "weightVar": "spine2Weight", - "weight": 2.0, - "flexCoefficients": [1.0, 0.5, 0.25] - }, - { - "jointName": "Head", - "positionVar": "headPosition", - "rotationVar": "headRotation", - "typeVar": "headType", - "weightVar": "headWeight", - "weight": 4.0, - "flexCoefficients": [1, 0.5, 0.25, 0.2, 0.1] - } - ] - }, - "children": [] - }, - { - "id": "defaultPoseOverlay", - "type": "overlay", - "data": { - "alpha": 0.0, - "alphaVar": "defaultPoseOverlayAlpha", - "boneSet": "fullBody", - "boneSetVar": "defaultPoseOverlayBoneSet" - }, - "children": [ - { - "id": "defaultPose", - "type": "defaultPose", - "data": { - }, - "children": [] - }, - { - "id": "rightHandOverlay", - "type": "overlay", - "data": { - "alpha": 0.0, - "boneSet": "rightHand", - "alphaVar": "rightHandOverlayAlpha" - }, - "children": [ - { - "id": "rightHandStateMachine", - "type": "stateMachine", - "data": { - "currentState": "rightHandGrasp", - "states": [ - { - "id": "rightHandGrasp", - "interpTarget": 3, - "interpDuration": 3, - "transitions": [ - { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, - { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, - { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } - ] - }, - { - "id": "rightIndexPoint", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, - { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, - { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } - ] - }, - { - "id": "rightThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, - { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, - { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } - ] - }, - { - "id": "rightIndexPointAndThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, - { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, - { "var": "isRightThumbRaise", "state": "rightThumbRaise" } - ] - } - ] - }, - "children": [ - { - "id": "rightHandGrasp", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightHandGraspOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_open_right.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightHandGraspClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_closed_right.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightIndexPoint", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightIndexPointOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightIndexPointClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightIndexPointAndThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightIndexPointAndThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightIndexPointAndThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - } - ] - }, - { - "id": "leftHandOverlay", - "type": "overlay", - "data": { - "alpha": 0.0, - "boneSet": "leftHand", - "alphaVar": "leftHandOverlayAlpha" - }, - "children": [ - { - "id": "leftHandStateMachine", - "type": "stateMachine", - "data": { - "currentState": "leftHandGrasp", - "states": [ - { - "id": "leftHandGrasp", - "interpTarget": 3, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, - { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, - { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } - ] - }, - { - "id": "leftIndexPoint", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, - { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, - { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } - ] - }, - { - "id": "leftThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, - { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, - { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } - ] - }, - { - "id": "leftIndexPointAndThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, - { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, - { "var": "isLeftThumbRaise", "state": "leftThumbRaise" } - ] - } - ] - }, - "children": [ - { - "id": "leftHandGrasp", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftHandGraspOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_open_left.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftHandGraspClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_closed_left.fbx", - "startFrame": 10.0, - "endFrame": 10.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftIndexPoint", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftIndexPointOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftIndexPointClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftIndexPointAndThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftIndexPointAndThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftIndexPointAndThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - } - ] - }, - { - "id": "mainStateMachine", - "type": "stateMachine", - "data": { - "currentState": "idle", - "states": [ - { - "id": "idle", - "interpTarget": 10, - "interpDuration": 10, - "transitions": [ - { "var": "isMovingForward", "state": "idleToWalkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "idleToWalkFwd", - "interpTarget": 10, - "interpDuration": 3, - "transitions": [ - { "var": "idleToWalkFwdOnDone", "state": "walkFwd" }, - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "walkFwd", - "interpTarget": 16, - "interpDuration": 6, - "transitions": [ - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "walkBwd", - "interpTarget": 8, - "interpDuration": 2, - "transitions": [ - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "strafeRight", - "interpTarget": 20, - "interpDuration": 1, - "transitions": [ - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "strafeLeft", - "interpTarget": 20, - "interpDuration": 1, - "transitions": [ - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "turnRight", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isNotTurning", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "turnLeft", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isNotTurning", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "fly", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isNotFlying", "state": "idle" } - ] - }, - { - "id": "takeoffStand", - "interpTarget": 0, - "interpDuration": 6, - "transitions": [ - { "var": "isNotTakeoff", "state": "inAirStand" } - ] - }, - { - "id": "takeoffRun", - "interpTarget": 0, - "interpDuration": 6, - "transitions": [ - { "var": "isNotTakeoff", "state": "inAirRun" } - ] - }, - { - "id": "inAirStand", - "interpTarget": 0, - "interpDuration": 6, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isNotInAir", "state": "landStandImpact" } - ] - }, - { - "id": "inAirRun", - "interpTarget": 0, - "interpDuration": 6, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isNotInAir", "state": "landRun" } - ] - }, - { - "id": "landStandImpact", - "interpTarget": 6, - "interpDuration": 4, - "transitions": [ - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "landStandImpactOnDone", "state": "landStand" } - ] - }, - { - "id": "landStand", - "interpTarget": 0, - "interpDuration": 1, - "transitions": [ - { "var": "isMovingForward", "state": "idleToWalkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" }, - { "var": "landStandOnDone", "state": "idle" } - ] - }, - { - "id": "landRun", - "interpTarget": 1, - "interpDuration": 7, - "transitions": [ - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "landRunOnDone", "state": "walkFwd" } - ] - } - ] - }, - "children": [ - { - "id": "idle", - "type": "stateMachine", - "data": { - "currentState": "idleStand", - "states": [ - { - "id": "idleStand", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isTalking", "state": "idleTalk" } - ] - }, - { - "id": "idleTalk", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "notIsTalking", "state": "idleStand" } - ] - } - ] - }, - "children": [ - { - "id": "idleStand", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/idle.fbx", - "startFrame": 0.0, - "endFrame": 300.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "idleTalk", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/talk.fbx", - "startFrame": 0.0, - "endFrame": 800.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "walkFwd", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0.5, 1.4, 4.5], - "alphaVar": "moveForwardAlpha", - "desiredSpeedVar": "moveForwardSpeed" - }, - "children": [ - { - "id": "walkFwdShort", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_short_fwd.fbx", - "startFrame": 0.0, - "endFrame": 39.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkFwdNormal", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_fwd.fbx", - "startFrame": 0.0, - "endFrame": 35.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkFwdRun", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/run_fwd.fbx", - "startFrame": 0.0, - "endFrame": 21.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "idleToWalkFwd", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/idle_to_walk.fbx", - "startFrame": 1.0, - "endFrame": 13.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "walkBwd", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0.6, 1.45], - "alphaVar": "moveBackwardAlpha", - "desiredSpeedVar": "moveBackwardSpeed" - }, - "children": [ - { - "id": "walkBwdShort", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_short_bwd.fbx", - "startFrame": 0.0, - "endFrame": 38.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkBwdNormal", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_bwd.fbx", - "startFrame": 0.0, - "endFrame": 36.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "turnLeft", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/turn_left.fbx", - "startFrame": 0.0, - "endFrame": 28.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "turnRight", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/turn_left.fbx", - "startFrame": 0.0, - "endFrame": 30.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "strafeLeft", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0.2, 0.65], - "alphaVar": "moveLateralAlpha", - "desiredSpeedVar": "moveLateralSpeed" - }, - "children": [ - { - "id": "strafeLeftShort", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_short_left.fbx", - "startFrame": 0.0, - "endFrame": 28.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeLeftNormal", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_left.fbx", - "startFrame": 0.0, - "endFrame": 30.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "strafeRight", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0.2, 0.65], - "alphaVar": "moveLateralAlpha", - "desiredSpeedVar": "moveLateralSpeed" - }, - "children": [ - { - "id": "strafeRightShort", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_short_right.fbx", - "startFrame": 0.0, - "endFrame": 28.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeRightNormal", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_right.fbx", - "startFrame": 0.0, - "endFrame": 30.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "fly", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/fly.fbx", - "startFrame": 1.0, - "endFrame": 80.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "takeoffStand", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_takeoff.fbx", - "startFrame": 17.0, - "endFrame": 25.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "takeoffRun", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_takeoff.fbx", - "startFrame": 1.0, - "endFrame": 2.5, - "timeScale": 0.01, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStand", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "inAirAlpha" - }, - "children": [ - { - "id": "inAirStandPreApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_apex.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 0.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStandApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_apex.fbx", - "startFrame": 1.0, - "endFrame": 1.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStandPostApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_apex.fbx", - "startFrame": 2.0, - "endFrame": 2.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - } - ] - }, - { - "id": "inAirRun", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "inAirAlpha" - }, - "children": [ - { - "id": "inAirRunPreApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_in_air.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 0.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirRunApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_in_air.fbx", - "startFrame": 6.0, - "endFrame": 6.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirRunPostApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_in_air.fbx", - "startFrame": 11.0, - "endFrame": 11.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - } - ] - }, - { - "id": "landStandImpact", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_land.fbx", - "startFrame": 1.0, - "endFrame": 6.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "landStand", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_land.fbx", - "startFrame": 6.0, - "endFrame": 28.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "landRun", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_land.fbx", - "startFrame": 1.0, - "endFrame": 6.0, - "timeScale": 0.65, - "loopFlag": false - }, - "children": [] - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "id": "userAnimA", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/idle.fbx", - "startFrame": 0.0, - "endFrame": 90.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "userAnimB", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/idle.fbx", - "startFrame": 0.0, - "endFrame": 90.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - } -} diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index e78d63faea..91ca5679a7 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -192,9 +192,9 @@ void Stats::updateStats(bool force) { // Third column, avatar stats auto myAvatar = avatarManager->getMyAvatar(); auto rigCopy = myAvatar->getSkeletonModel(); - auto forwardAlpha = rigCopy->getRig().getFwdAlpha(); - auto backwardAlpha = rigCopy->getRig().getBwdAlpha(); - auto lateralAlpha = rigCopy->getRig().getLateralAlpha(); + auto forwardAlpha = 0.2f;//rigCopy->getRig().getFwdAlpha(); + //auto backwardAlpha = rigCopy->getRig().getBwdAlpha(); + //auto lateralAlpha = rigCopy->getRig().getLateralAlpha(); QString animName("anim number 1"); glm::vec3 avatarPos = myAvatar->getWorldPosition(); diff --git a/libraries/animation/src/AnimNodeLoader.cpp b/libraries/animation/src/AnimNodeLoader.cpp index d16afb37cd..c39f0f57ae 100644 --- a/libraries/animation/src/AnimNodeLoader.cpp +++ b/libraries/animation/src/AnimNodeLoader.cpp @@ -563,7 +563,7 @@ bool processStateMachineNode(AnimNode::Pointer node, const QJsonObject& jsonObj, auto statesArray = statesValue.toArray(); for (const auto& stateValue : statesArray) { - qCDebug(animation) << " state name is " << stateValue.toString(); + //qCDebug(animation) << " state name is " << stateValue.toString(); if (!stateValue.isObject()) { qCCritical(animation) << "AnimNodeLoader, bad state object in \"states\", id =" << nodeId << ", url =" << jsonUrl.toDisplayString(); return false; diff --git a/scripts/developer/cameraControls.js b/scripts/developer/cameraControls.js deleted file mode 100644 index 28515c51eb..0000000000 --- a/scripts/developer/cameraControls.js +++ /dev/null @@ -1,284 +0,0 @@ -// JavaScript source code - -/* Vec3, MyAvatar, Camera, Quat, Mat4, Script */ - - -var controllerMappingName; -var controllerMapping; - -controllerMappingName = 'Hifi-AnimationTools-Mapping'; -controllerMapping = Controller.newMapping(controllerMappingName); - -// Camera.mode = "independent"; -Camera.orientation = Quat.lookAtSimple(Camera.position, Vec3.ZERO); -var moveUp = false; -var moveDown = false; -var moveRight = false; -var moveLeft = false; -var moveForward = false; -var moveBack = false; -var rotateRight = false; -var rotateLeft = false; -var rotateUp = false; -var rotateDown = false; -var rollLeft = false; -var rollRight = false; -var orbitLeft = false; -var orbitRight = false; -var orbitUp = false; -var orbitDown = false; - -controllerMapping.from(Controller.Hardware.Keyboard.I).to(function (value) { - if (value !== 0) { - Camera.mode = "third person"; - print("camera mode is independent"); - } -}); - - -controllerMapping.from(Controller.Hardware.Keyboard.T).to(function (value) { - if (value !== 0) { - orbitUp = true; - print("orbit the camera up"); - } else { - orbitUp = false; - } -}); - -controllerMapping.from(Controller.Hardware.Keyboard.G).to(function (value) { - if (value !== 0) { - orbitDown = true; - print("orbit the camera down"); - } else { - orbitDown = false; - } -}); - - -controllerMapping.from(Controller.Hardware.Keyboard.V).to(function (value) { - if (value !== 0) { - orbitLeft = true; - print("orbit the camera left"); - } else { - orbitLeft = false; - } -}); - -controllerMapping.from(Controller.Hardware.Keyboard.B).to(function (value) { - if (value !== 0) { - orbitRight = true; - print("orbit the camera right"); - } else { - orbitRight = false; - } -}); - -controllerMapping.from(Controller.Hardware.Keyboard.F).to(function (value) { - if (value !== 0) { - rollRight = true; - print("roll the camera right"); - } else { - rollRight = false; - } -}); - -controllerMapping.from(Controller.Hardware.Keyboard.R).to(function (value) { - if (value !== 0) { - rollLeft = true; - print("roll the camera left"); - } else { - rollLeft = false; - } -}); - -controllerMapping.from(Controller.Hardware.Keyboard.D).to(function (value) { - if (value !== 0) { - rotateRight = true; - print("rotate the camera right"); - } else { - rotateRight = false; - } -}); - -controllerMapping.from(Controller.Hardware.Keyboard.E).to(function (value) { - if (value !== 0) { - rotateLeft = true; - print("rotate the camera left"); - } else { - rotateLeft = false; - } -}); - -controllerMapping.from(Controller.Hardware.Keyboard.W).to(function (value) { - if (value !== 0) { - rotateUp = true; - print("rotate the camera up"); - } else { - rotateUp = false; - } -}); - -controllerMapping.from(Controller.Hardware.Keyboard.S).to(function (value) { - if (value !== 0) { - rotateDown = true; - print("rotate the camera down"); - } else { - rotateDown = false; - } -}); - -controllerMapping.from(Controller.Hardware.Keyboard.U).to(function (value) { - if (value !== 0) { - moveForward = true; - print("move the camera forward"); - } else { - moveForward = false; - } -}); - -controllerMapping.from(Controller.Hardware.Keyboard.J).to(function (value) { - if (value !== 0) { - moveRight = true; - print("move the camera right"); - } else { - moveRight = false; - } -}); - -controllerMapping.from(Controller.Hardware.Keyboard.H).to(function (value) { - if (value !== 0) { - moveLeft = true; - print("move the camera left"); - } else { - moveLeft = false; - } -}); - -controllerMapping.from(Controller.Hardware.Keyboard.N).to(function (value) { - if (value !== 0) { - moveBack = true; - print("move the camera back"); - } else { - moveBack = false; - } -}); - -controllerMapping.from(Controller.Hardware.Keyboard.O).to(function (value) { - if (value !== 0) { - moveUp = true; - print("move the camera up"); - } else { - moveUp = false; - } -}); - -controllerMapping.from(Controller.Hardware.Keyboard.L).to(function (value) { - if (value !== 0) { - moveDown = true; - print("move the camera down"); - } else { - moveDown = false; - } -}); - -Controller.enableMapping(controllerMappingName); -Camera.mode = "first person"; - -Script.update.connect(function (deltaTime) { - - if (Camera.mode === "third person") { - print("the camera position is now " + Camera.position.x + " " + Camera.position.y + " " + Camera.position.z); - - var METERS_PER_SECOND = 1.0; - var DEGREES_PER_SECOND = 20.0; - var metersTraveledThisFrame = deltaTime * METERS_PER_SECOND; - var degreesTraveledThisFrame = deltaTime * DEGREES_PER_SECOND; - var newPosition = { x: 0, y: 0, z: 0 }; - var newOrientation = { x: 0, y: 0, z: 0, w: 1 }; - var distanceToMyAvatar = Vec3.length(Vec3.subtract(Camera.position, MyAvatar.position)); - - if (orbitLeft) { - Camera.position = MyAvatar.position; - newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 0, y: -1, z: 0 }); - Camera.orientation = Quat.multiply(newOrientation, Camera.orientation); - newPosition = Vec3.multiply(distanceToMyAvatar, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: 0, z: 1 })); - Camera.position = Vec3.sum(Camera.position, newPosition); - } - if (orbitRight) { - Camera.position = MyAvatar.position; - newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 0, y: 1, z: 0 }); - Camera.orientation = Quat.multiply(newOrientation, Camera.orientation); - newPosition = Vec3.multiply(distanceToMyAvatar, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: 0, z: 1 })); - Camera.position = Vec3.sum(Camera.position, newPosition); - } - - if (orbitUp) { - Camera.position = MyAvatar.position; - newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: -1, y: 0, z: 0 }); - Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); - newPosition = Vec3.multiply(distanceToMyAvatar, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: 0, z: 1 })); - Camera.position = Vec3.sum(Camera.position, newPosition); - } - if (orbitDown) { - Camera.position = MyAvatar.position; - newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 1, y: 0, z: 0 }); - Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); - newPosition = Vec3.multiply(distanceToMyAvatar, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: 0, z: 1 })); - Camera.position = Vec3.sum(Camera.position, newPosition); - } - - if (rotateLeft) { - newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 0, y: 1, z: 0 }); - Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); - } - if (rotateRight) { - newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 0, y: -1, z: 0 }); - Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); - } - if (rollLeft) { - newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 0, y: 0, z: 1 }); - Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); - } - if (rollRight) { - newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 0, y: 0, z: -1 }); - Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); - } - - if (rotateUp) { - newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: 1, y: 0, z: 0 }); - Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); - } - if (rotateDown) { - newOrientation = Quat.angleAxis(degreesTraveledThisFrame, { x: -1, y: 0, z: 0 }); - Camera.orientation = Quat.multiply(Camera.orientation, newOrientation); - } - if (moveForward) { - newPosition = Vec3.multiply(metersTraveledThisFrame, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: 0, z: -1 })); - Camera.position = Vec3.sum(Camera.position, newPosition); - } - if (moveBack) { - newPosition = Vec3.multiply(metersTraveledThisFrame, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: 0, z: 1 })); - Camera.position = Vec3.sum(Camera.position, newPosition); - } - if (moveLeft) { - newPosition = Vec3.multiply(metersTraveledThisFrame, Vec3.multiplyQbyV(Camera.orientation, { x: -1, y: 0, z: 0 })); - Camera.position = Vec3.sum(Camera.position, newPosition); - } - if (moveRight) { - newPosition = Vec3.multiply(metersTraveledThisFrame, Vec3.multiplyQbyV(Camera.orientation, { x: 1, y: 0, z: 0 })); - Camera.position = Vec3.sum(Camera.position, newPosition); - } - if (moveUp) { - newPosition = Vec3.multiply(metersTraveledThisFrame, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: 1, z: 0 })); - Camera.position = Vec3.sum(Camera.position, newPosition); - } - if (moveDown) { - newPosition = Vec3.multiply(metersTraveledThisFrame, Vec3.multiplyQbyV(Camera.orientation, { x: 0, y: -1, z: 0 })); - Camera.position = Vec3.sum(Camera.position, newPosition); - } - } -}); - -Script.scriptEnding.connect(function () { - Controller.disableMapping(controllerMappingName); -});// JavaScript source code From 8f993e4740bf15952d464a326bfe8a83e67029f5 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 25 Jul 2018 11:31:27 -0700 Subject: [PATCH 039/332] Change meaning/naming of collision points in CollisionPick API to better match spec and be more clear --- interface/src/raypick/CollisionPick.h | 28 ++++++++++++------------- libraries/physics/src/PhysicsEngine.cpp | 19 ++++++++++------- libraries/physics/src/PhysicsEngine.h | 16 +++++++------- 3 files changed, 35 insertions(+), 28 deletions(-) diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index ef1fdc7b0c..d39e3be914 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -40,25 +40,25 @@ public: variantMap["intersects"] = intersects; - QVariantList qIntersectingEntities; + QVariantList qEntityIntersections; for (auto intersectingEntity : intersectingEntities) { - QVariantMap qIntersectingEntity; - qIntersectingEntity["objectID"] = intersectingEntity.id; - qIntersectingEntity["pickCollisionPoint"] = vec3toVariant(intersectingEntity.pickCollisionPoint); - qIntersectingEntity["entityCollisionPoint"] = vec3toVariant(intersectingEntity.entityCollisionPoint); - qIntersectingEntities.append(qIntersectingEntity); + QVariantMap qEntityIntersection; + qEntityIntersection["objectID"] = intersectingEntity.id; + qEntityIntersection["pickCollisionPoint"] = vec3toVariant(intersectingEntity.testCollisionPoint); + qEntityIntersection["entityCollisionPoint"] = vec3toVariant(intersectingEntity.foundCollisionPoint); + qEntityIntersections.append(qEntityIntersection); } - variantMap["intersectingEntities"] = qIntersectingEntities; + variantMap["entityIntersections"] = qEntityIntersections; - QVariantList qIntersectingAvatars; + QVariantList qAvatarIntersections; for (auto intersectingAvatar : intersectingAvatars) { - QVariantMap qIntersectingAvatar; - qIntersectingAvatar["objectID"] = intersectingAvatar.id; - qIntersectingAvatar["pickCollisionPoint"] = vec3toVariant(intersectingAvatar.pickCollisionPoint); - qIntersectingAvatar["entityCollisionPoint"] = vec3toVariant(intersectingAvatar.entityCollisionPoint); - qIntersectingAvatars.append(qIntersectingAvatar); + QVariantMap qAvatarIntersection; + qAvatarIntersection["objectID"] = intersectingAvatar.id; + qAvatarIntersection["pickCollisionPoint"] = vec3toVariant(intersectingAvatar.testCollisionPoint); + qAvatarIntersection["entityCollisionPoint"] = vec3toVariant(intersectingAvatar.foundCollisionPoint); + qAvatarIntersections.append(qAvatarIntersection); } - variantMap["intersectingAvatars"] = qIntersectingAvatars; + variantMap["avatarIntersections"] = qAvatarIntersections; variantMap["collisionRegion"] = pickVariant; diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index e82e201bb5..592272acd5 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -874,17 +874,17 @@ struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { btScalar addSingleResult(btManifoldPoint& cp, const btCollisionObjectWrapper* colObj0, int partId0, int index0, const btCollisionObjectWrapper* colObj1, int partId1, int index1) override { const btCollisionObject* otherBody; - btVector3 point; - btVector3 otherPoint; + btVector3 penetrationPoint; + btVector3 otherPenetrationPoint; if (colObj0->m_collisionObject == &collisionObject) { otherBody = colObj1->m_collisionObject; - point = cp.m_localPointA; - otherPoint = cp.m_localPointB; + penetrationPoint = getWorldPoint(cp.m_localPointB, colObj1->getWorldTransform()); + otherPenetrationPoint = getWorldPoint(cp.m_localPointA, colObj0->getWorldTransform()); } else { otherBody = colObj0->m_collisionObject; - point = cp.m_localPointB; - otherPoint = cp.m_localPointA; + penetrationPoint = getWorldPoint(cp.m_localPointA, colObj0->getWorldTransform()); + otherPenetrationPoint = getWorldPoint(cp.m_localPointB, colObj1->getWorldTransform()); } if (!(otherBody->getInternalType() & btCollisionObject::CO_RIGID_BODY)) { @@ -899,10 +899,15 @@ struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { } // This is the correct object type. Add it to the list. - intersectingObjects.emplace_back(candidate->getObjectID(), bulletToGLM(point), bulletToGLM(otherPoint)); + intersectingObjects.emplace_back(candidate->getObjectID(), bulletToGLM(penetrationPoint), bulletToGLM(otherPenetrationPoint)); return 0; } + +protected: + static btVector3 getWorldPoint(const btVector3& localPoint, const btTransform& transform) { + return quatRotate(transform.getRotation(), localPoint) + transform.getOrigin(); + } }; std::vector PhysicsEngine::getCollidingInRegion(MotionStateType desiredObjectType, const ShapeInfo& regionShapeInfo, const Transform& regionTransform) const { diff --git a/libraries/physics/src/PhysicsEngine.h b/libraries/physics/src/PhysicsEngine.h index 42005b5a5d..c6dfba518f 100644 --- a/libraries/physics/src/PhysicsEngine.h +++ b/libraries/physics/src/PhysicsEngine.h @@ -48,19 +48,21 @@ struct EntityIntersection { EntityIntersection(const EntityIntersection& entityIntersection) : id(entityIntersection.id), - pickCollisionPoint(entityIntersection.pickCollisionPoint), - entityCollisionPoint(entityIntersection.entityCollisionPoint) { + testCollisionPoint(entityIntersection.testCollisionPoint), + foundCollisionPoint(entityIntersection.foundCollisionPoint) { } - EntityIntersection(QUuid id, glm::vec3 selfCollisionPoint, glm::vec3 otherCollisionPoint) : + EntityIntersection(QUuid id, glm::vec3 testCollisionPoint, glm::vec3 otherCollisionPoint) : id(id), - pickCollisionPoint(selfCollisionPoint), - entityCollisionPoint(otherCollisionPoint) { + testCollisionPoint(testCollisionPoint), + foundCollisionPoint(otherCollisionPoint) { } QUuid id; - glm::vec3 pickCollisionPoint; - glm::vec3 entityCollisionPoint; + // The deepest point of an intersection within the volume of the test shape, in world space. + glm::vec3 testCollisionPoint; + // The deepest point of an intersection within the volume of the found object, in world space. + glm::vec3 foundCollisionPoint; }; using ContactMap = std::map; From 816b3a4ef6f3e64ea7675edc4df6b901b8cda34f Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Wed, 25 Jul 2018 15:49:41 -0700 Subject: [PATCH 040/332] WIP. --- tools/auto-tester/src/Test.cpp | 211 +++++++++--------- tools/auto-tester/src/Test.h | 28 +-- ...SuiteCreator.cpp => TestRailInterface.cpp} | 15 +- ...TestSuiteCreator.h => TestRailInterface.h} | 15 +- tools/auto-tester/src/ui/AutoTester.cpp | 74 +++--- tools/auto-tester/src/ui/AutoTester.h | 10 +- tools/auto-tester/src/ui/MismatchWindow.cpp | 6 +- tools/auto-tester/src/ui/MismatchWindow.h | 2 +- 8 files changed, 188 insertions(+), 173 deletions(-) rename tools/auto-tester/src/{TestSuiteCreator.cpp => TestRailInterface.cpp} (92%) rename tools/auto-tester/src/{TestSuiteCreator.h => TestRailInterface.h} (65%) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 11e1696bb1..22ec78e284 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -18,14 +18,14 @@ #include #include -#include "TestSuiteCreator.h" +#include "TestRailInterface.h" #include "ui/AutoTester.h" extern AutoTester* autoTester; #include Test::Test() { - mismatchWindow.setModal(true); + _mismatchWindow.setModal(true); if (autoTester) { autoTester->setUserText("highfidelity"); @@ -35,35 +35,35 @@ Test::Test() { bool Test::createTestResultsFolderPath(const QString& directory) { QDateTime now = QDateTime::currentDateTime(); - testResultsFolderPath = directory + "/" + TEST_RESULTS_FOLDER + "--" + now.toString(DATETIME_FORMAT); - QDir testResultsFolder(testResultsFolderPath); + _testResultsFolderPath = directory + "/" + TEST_RESULTS_FOLDER + "--" + now.toString(DATETIME_FORMAT); + QDir testResultsFolder(_testResultsFolderPath); // Create a new test results folder - return QDir().mkdir(testResultsFolderPath); + return QDir().mkdir(_testResultsFolderPath); } void Test::zipAndDeleteTestResultsFolder() { - QString zippedResultsFileName { testResultsFolderPath + ".zip" }; + QString zippedResultsFileName { _testResultsFolderPath + ".zip" }; QFileInfo fileInfo(zippedResultsFileName); if (!fileInfo.exists()) { QFile::remove(zippedResultsFileName); } - QDir testResultsFolder(testResultsFolderPath); + QDir testResultsFolder(_testResultsFolderPath); if (!testResultsFolder.isEmpty()) { - JlCompress::compressDir(testResultsFolderPath + ".zip", testResultsFolderPath); + JlCompress::compressDir(_testResultsFolderPath + ".zip", _testResultsFolderPath); } testResultsFolder.removeRecursively(); //In all cases, for the next evaluation - testResultsFolderPath = ""; - index = 1; + _testResultsFolderPath = ""; + _index = 1; } bool Test::compareImageLists(bool isInteractiveMode, QProgressBar* progressBar) { progressBar->setMinimum(0); - progressBar->setMaximum(expectedImagesFullFilenames.length() - 1); + progressBar->setMaximum(_expectedImagesFullFilenames.length() - 1); progressBar->setValue(0); progressBar->setVisible(true); @@ -71,10 +71,10 @@ bool Test::compareImageLists(bool isInteractiveMode, QProgressBar* progressBar) // Quit loop if user has aborted due to a failed test. bool success{ true }; bool keepOn{ true }; - for (int i = 0; keepOn && i < expectedImagesFullFilenames.length(); ++i) { + for (int i = 0; keepOn && i < _expectedImagesFullFilenames.length(); ++i) { // First check that images are the same size - QImage resultImage(resultImagesFullFilenames[i]); - QImage expectedImage(expectedImagesFullFilenames[i]); + QImage resultImage(_resultImagesFullFilenames[i]); + QImage expectedImage(_expectedImagesFullFilenames[i]); double similarityIndex; // in [-1.0 .. 1.0], where 1.0 means images are identical @@ -83,30 +83,30 @@ bool Test::compareImageLists(bool isInteractiveMode, QProgressBar* progressBar) QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Images are not the same size"); similarityIndex = -100.0; } else { - similarityIndex = imageComparer.compareImages(resultImage, expectedImage); + similarityIndex = _imageComparer.compareImages(resultImage, expectedImage); } if (similarityIndex < THRESHOLD) { TestFailure testFailure = TestFailure{ (float)similarityIndex, - expectedImagesFullFilenames[i].left(expectedImagesFullFilenames[i].lastIndexOf("/") + 1), // path to the test (including trailing /) - QFileInfo(expectedImagesFullFilenames[i].toStdString().c_str()).fileName(), // filename of expected image - QFileInfo(resultImagesFullFilenames[i].toStdString().c_str()).fileName() // filename of result image + _expectedImagesFullFilenames[i].left(_expectedImagesFullFilenames[i].lastIndexOf("/") + 1), // path to the test (including trailing /) + QFileInfo(_expectedImagesFullFilenames[i].toStdString().c_str()).fileName(), // filename of expected image + QFileInfo(_resultImagesFullFilenames[i].toStdString().c_str()).fileName() // filename of result image }; - mismatchWindow.setTestFailure(testFailure); + _mismatchWindow.setTestFailure(testFailure); if (!isInteractiveMode) { - appendTestResultsToFile(testResultsFolderPath, testFailure, mismatchWindow.getComparisonImage()); + appendTestResultsToFile(_testResultsFolderPath, testFailure, _mismatchWindow.getComparisonImage()); success = false; } else { - mismatchWindow.exec(); + _mismatchWindow.exec(); - switch (mismatchWindow.getUserResponse()) { + switch (_mismatchWindow.getUserResponse()) { case USER_RESPONSE_PASS: break; case USE_RESPONSE_FAIL: - appendTestResultsToFile(testResultsFolderPath, testFailure, mismatchWindow.getComparisonImage()); + appendTestResultsToFile(_testResultsFolderPath, testFailure, _mismatchWindow.getComparisonImage()); success = false; break; case USER_RESPONSE_ABORT: @@ -127,20 +127,20 @@ bool Test::compareImageLists(bool isInteractiveMode, QProgressBar* progressBar) return success; } -void Test::appendTestResultsToFile(const QString& testResultsFolderPath, TestFailure testFailure, QPixmap comparisonImage) { - if (!QDir().exists(testResultsFolderPath)) { - QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Folder " + testResultsFolderPath + " not found"); +void Test::appendTestResultsToFile(const QString& _testResultsFolderPath, TestFailure testFailure, QPixmap comparisonImage) { + if (!QDir().exists(_testResultsFolderPath)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Folder " + _testResultsFolderPath + " not found"); exit(-1); } QString err = QString::number(testFailure._error).left(6); - QString failureFolderPath { testResultsFolderPath + "/" + err + "-Failure_" + QString::number(index) + "--" + testFailure._actualImageFilename.left(testFailure._actualImageFilename.length() - 4) }; + QString failureFolderPath { _testResultsFolderPath + "/" + err + "-Failure_" + QString::number(_index) + "--" + testFailure._actualImageFilename.left(testFailure._actualImageFilename.length() - 4) }; if (!QDir().mkdir(failureFolderPath)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Failed to create folder " + failureFolderPath); exit(-1); } - ++index; + ++_index; QFile descriptionFile(failureFolderPath + "/" + TEST_RESULTS_FILENAME); if (!descriptionFile.open(QIODevice::ReadWrite)) { @@ -153,7 +153,7 @@ void Test::appendTestResultsToFile(const QString& testResultsFolderPath, TestFai stream << "Test failed in folder " << testFailure._pathname.left(testFailure._pathname.length() - 1) << endl; // remove trailing '/' stream << "Expected image was " << testFailure._expectedImageFilename << endl; stream << "Actual image was " << testFailure._actualImageFilename << endl; - stream << "Similarity index was " << testFailure._error << endl; + stream << "Similarity _index was " << testFailure._error << endl; descriptionFile.close(); @@ -181,26 +181,26 @@ void Test::appendTestResultsToFile(const QString& testResultsFolderPath, TestFai void Test::startTestsEvaluation(const QString& testFolder, const QString& branchFromCommandLine, const QString& userFromCommandLine) { if (testFolder.isNull()) { // Get list of JPEG images in folder, sorted by name - QString previousSelection = snapshotDirectory; + QString previousSelection = _snapshotDirectory; QString parent = previousSelection.left(previousSelection.lastIndexOf('/')); if (!parent.isNull() && parent.right(1) != "/") { parent += "/"; } - snapshotDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select folder containing the test images", parent, + _snapshotDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select folder containing the test images", parent, QFileDialog::ShowDirsOnly); // If user cancelled then restore previous selection and return - if (snapshotDirectory == "") { - snapshotDirectory = previousSelection; + if (_snapshotDirectory == "") { + _snapshotDirectory = previousSelection; return; } } else { - snapshotDirectory = testFolder; - exitWhenComplete = true; + _snapshotDirectory = testFolder; + _exitWhenComplete = true; } // Quit if test results folder could not be created - if (!createTestResultsFolderPath(snapshotDirectory)) { + if (!createTestResultsFolderPath(_snapshotDirectory)) { return; } @@ -208,20 +208,20 @@ void Test::startTestsEvaluation(const QString& testFolder, const QString& branch // The expected images are represented as a URL to enable download from GitHub // Images that are in the wrong format are ignored. - QStringList sortedTestResultsFilenames = createListOfAll_imagesInDirectory("png", snapshotDirectory); + QStringList sortedTestResultsFilenames = createListOfAll_imagesInDirectory("png", _snapshotDirectory); QStringList expectedImagesURLs; - resultImagesFullFilenames.clear(); - expectedImagesFilenames.clear(); - expectedImagesFullFilenames.clear(); + _resultImagesFullFilenames.clear(); + _expectedImagesFilenames.clear(); + _expectedImagesFullFilenames.clear(); QString branch = (branchFromCommandLine.isNull()) ? autoTester->getSelectedBranch() : branchFromCommandLine; QString user = (userFromCommandLine.isNull()) ? autoTester->getSelectedUser() : userFromCommandLine; foreach(QString currentFilename, sortedTestResultsFilenames) { - QString fullCurrentFilename = snapshotDirectory + "/" + currentFilename; + QString fullCurrentFilename = _snapshotDirectory + "/" + currentFilename; if (isInSnapshotFilenameFormat("png", currentFilename)) { - resultImagesFullFilenames << fullCurrentFilename; + _resultImagesFullFilenames << fullCurrentFilename; QString expectedImagePartialSourceDirectory = getExpectedImagePartialSourceDirectory(currentFilename); @@ -238,12 +238,12 @@ void Test::startTestsEvaluation(const QString& testFolder, const QString& branch // The image retrieved from GitHub needs a unique name QString expectedImageFilename = currentFilename.replace("/", "_").replace(".png", "_EI.png"); - expectedImagesFilenames << expectedImageFilename; - expectedImagesFullFilenames << snapshotDirectory + "/" + expectedImageFilename; + _expectedImagesFilenames << expectedImageFilename; + _expectedImagesFullFilenames << _snapshotDirectory + "/" + expectedImageFilename; } } - autoTester->downloadImages(expectedImagesURLs, snapshotDirectory, expectedImagesFilenames); + autoTester->downloadImages(expectedImagesURLs, _snapshotDirectory, _expectedImagesFilenames); } void Test::finishTestsEvaluation(bool isRunningFromCommandline, bool interactiveMode, QProgressBar* progressBar) { @@ -259,7 +259,7 @@ void Test::finishTestsEvaluation(bool isRunningFromCommandline, bool interactive zipAndDeleteTestResultsFolder(); - if (exitWhenComplete) { + if (_exitWhenComplete) { exit(0); } } @@ -311,46 +311,46 @@ void Test::includeTest(QTextStream& textStream, const QString& testPathname) { // This script will run all text.js scripts in every applicable sub-folder void Test::createRecursiveScript() { // Select folder to start recursing from - QString previousSelection = testDirectory; + QString previousSelection = _testDirectory; QString parent = previousSelection.left(previousSelection.lastIndexOf('/')); if (!parent.isNull() && parent.right(1) != "/") { parent += "/"; } - testDirectory = + _testDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select folder that will contain the top level test script", parent, QFileDialog::ShowDirsOnly); // If user cancelled then restore previous selection and return - if (testDirectory == "") { - testDirectory = previousSelection; + if (_testDirectory == "") { + _testDirectory = previousSelection; return; } - createRecursiveScript(testDirectory, true); + createRecursiveScript(_testDirectory, true); } // This method creates a `testRecursive.js` script in every sub-folder. void Test::createAllRecursiveScripts() { // Select folder to start recursing from - QString previousSelection = testsRootDirectory; + QString previousSelection = _testsRootDirectory; QString parent = previousSelection.left(previousSelection.lastIndexOf('/')); if (!parent.isNull() && parent.right(1) != "/") { parent += "/"; } - testsRootDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select the root folder for the recursive scripts", + _testsRootDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select the root folder for the recursive scripts", parent, QFileDialog::ShowDirsOnly); // If user cancelled then restore previous selection and return - if (testsRootDirectory == "") { - testsRootDirectory = previousSelection; + if (_testsRootDirectory == "") { + _testsRootDirectory = previousSelection; return; } - createRecursiveScript(testsRootDirectory, false); + createRecursiveScript(_testsRootDirectory, false); - QDirIterator it(testsRootDirectory.toStdString().c_str(), QDirIterator::Subdirectories); + QDirIterator it(_testsRootDirectory.toStdString().c_str(), QDirIterator::Subdirectories); while (it.hasNext()) { QString directory = it.next(); @@ -478,42 +478,42 @@ void Test::createRecursiveScript(const QString& topLevelDirectory, bool interact void Test::createTests() { // Rename files sequentially, as ExpectedResult_00000.jpeg, ExpectedResult_00001.jpg and so on // Any existing expected result images will be deleted - QString previousSelection = snapshotDirectory; + QString previousSelection = _snapshotDirectory; QString parent = previousSelection.left(previousSelection.lastIndexOf('/')); if (!parent.isNull() && parent.right(1) != "/") { parent += "/"; } - snapshotDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select folder containing the test images", parent, + _snapshotDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select folder containing the test images", parent, QFileDialog::ShowDirsOnly); // If user cancelled then restore previous selection and return - if (snapshotDirectory == "") { - snapshotDirectory = previousSelection; + if (_snapshotDirectory == "") { + _snapshotDirectory = previousSelection; return; } - previousSelection = testsRootDirectory; + previousSelection = _testsRootDirectory; parent = previousSelection.left(previousSelection.lastIndexOf('/')); if (!parent.isNull() && parent.right(1) != "/") { parent += "/"; } - testsRootDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select test root folder", parent, + _testsRootDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select test root folder", parent, QFileDialog::ShowDirsOnly); // If user cancelled then restore previous selection and return - if (testsRootDirectory == "") { - testsRootDirectory = previousSelection; + if (_testsRootDirectory == "") { + _testsRootDirectory = previousSelection; return; } - QStringList sortedImageFilenames = createListOfAll_imagesInDirectory("png", snapshotDirectory); + QStringList sortedImageFilenames = createListOfAll_imagesInDirectory("png", _snapshotDirectory); int i = 1; const int maxImages = pow(10, NUM_DIGITS); foreach (QString currentFilename, sortedImageFilenames) { - QString fullCurrentFilename = snapshotDirectory + "/" + currentFilename; + QString fullCurrentFilename = _snapshotDirectory + "/" + currentFilename; if (isInSnapshotFilenameFormat("png", currentFilename)) { if (i >= maxImages) { QMessageBox::critical(0, "Error", "More than " + QString::number(maxImages) + " images not supported"); @@ -523,17 +523,17 @@ void Test::createTests() { // Path to test is extracted from the file name // Example: // filename is tests.engine.interaction.pointer.laser.distanceScaleEnd.00000.jpg - // path is /engine/interaction/pointer/laser/distanceScaleEnd + // path is <_testDirectory>/engine/interaction/pointer/laser/distanceScaleEnd // // Note: we don't use the first part and the last 2 parts of the filename at this stage // QStringList pathParts = currentFilename.split("."); - QString fullNewFileName = testsRootDirectory; + QString fullNewFileName = _testsRootDirectory; for (int j = 1; j < pathParts.size() - 2; ++j) { fullNewFileName += "/" + pathParts[j]; } - // The image index is the penultimate component of the path parts (the last being the file extension) + // The image _index is the penultimate component of the path parts (the last being the file extension) QString newFilename = "ExpectedImage_" + pathParts[pathParts.size() - 2].rightJustified(5, '0') + ".png"; fullNewFileName += "/" + newFilename; @@ -622,51 +622,51 @@ ExtractedText Test::getTestScriptLines(QString testFileName) { // The folder selected must contain a script named "test.js", the file produced is named "test.md" void Test::createMDFile() { // Folder selection - QString previousSelection = testDirectory; + QString previousSelection = _testDirectory; QString parent = previousSelection.left(previousSelection.lastIndexOf('/')); if (!parent.isNull() && parent.right(1) != "/") { parent += "/"; } - testDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select folder containing the test", parent, + _testDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select folder containing the test", parent, QFileDialog::ShowDirsOnly); // If user cancelled then restore previous selection and return - if (testDirectory == "") { - testDirectory = previousSelection; + if (_testDirectory == "") { + _testDirectory = previousSelection; return; } - createMDFile(testDirectory); + createMDFile(_testDirectory); QMessageBox::information(0, "Success", "MD file has been created"); } void Test::createAllMDFiles() { // Select folder to start recursing from - QString previousSelection = testsRootDirectory; + QString previousSelection = _testsRootDirectory; QString parent = previousSelection.left(previousSelection.lastIndexOf('/')); if (!parent.isNull() && parent.right(1) != "/") { parent += "/"; } - testsRootDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select the root folder for the MD files", parent, + _testsRootDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select the root folder for the MD files", parent, QFileDialog::ShowDirsOnly); // If user cancelled then restore previous selection and return - if (testsRootDirectory == "") { - testsRootDirectory = previousSelection; + if (_testsRootDirectory == "") { + _testsRootDirectory = previousSelection; return; } // First test if top-level folder has a test.js file - const QString testPathname{ testsRootDirectory + "/" + TEST_FILENAME }; + const QString testPathname{ _testsRootDirectory + "/" + TEST_FILENAME }; QFileInfo fileInfo(testPathname); if (fileInfo.exists()) { - createMDFile(testsRootDirectory); + createMDFile(_testsRootDirectory); } - QDirIterator it(testsRootDirectory.toStdString().c_str(), QDirIterator::Subdirectories); + QDirIterator it(_testsRootDirectory.toStdString().c_str(), QDirIterator::Subdirectories); while (it.hasNext()) { QString directory = it.next(); @@ -686,9 +686,9 @@ void Test::createAllMDFiles() { QMessageBox::information(0, "Success", "MD files have been created"); } -void Test::createMDFile(const QString& testDirectory) { +void Test::createMDFile(const QString& _testDirectory) { // Verify folder contains test.js file - QString testFileName(testDirectory + "/" + TEST_FILENAME); + QString testFileName(_testDirectory + "/" + TEST_FILENAME); QFileInfo testFileInfo(testFileName); if (!testFileInfo.exists()) { QMessageBox::critical(0, "Error", "Could not find file: " + TEST_FILENAME); @@ -697,7 +697,7 @@ void Test::createMDFile(const QString& testDirectory) { ExtractedText testScriptLines = getTestScriptLines(testFileName); - QString mdFilename(testDirectory + "/" + "test.md"); + QString mdFilename(_testDirectory + "/" + "test.md"); QFile mdFile(mdFilename); if (!mdFile.open(QIODevice::WriteOnly)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Failed to create file " + mdFilename); @@ -711,7 +711,7 @@ void Test::createMDFile(const QString& testDirectory) { stream << "# " << testName << "\n"; // Find the relevant part of the path to the test (i.e. from "tests" down - QString partialPath = extractPathFromTestsDown(testDirectory); + QString partialPath = extractPathFromTestsDown(_testDirectory); stream << "## Run this script URL: [Manual](./test.js?raw=true) [Auto](./testAuto.js?raw=true)(from menu/Edit/Open and Run scripts from URL...)." << "\n\n"; @@ -735,23 +735,23 @@ void Test::createMDFile(const QString& testDirectory) { } void Test::createTestsOutline() { - QString previousSelection = testDirectory; + QString previousSelection = _testDirectory; QString parent = previousSelection.left(previousSelection.lastIndexOf('/')); if (!parent.isNull() && parent.right(1) != "/") { parent += "/"; } - testDirectory = + _testDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select the tests root folder", parent, QFileDialog::ShowDirsOnly); // If user cancelled then restore previous selection and return - if (testDirectory == "") { - testDirectory = previousSelection; + if (_testDirectory == "") { + _testDirectory = previousSelection; return; } const QString testsOutlineFilename { "testsOutline.md" }; - QString mdFilename(testDirectory + "/" + testsOutlineFilename); + QString mdFilename(_testDirectory + "/" + testsOutlineFilename); QFile mdFile(mdFilename); if (!mdFile.open(QIODevice::WriteOnly)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Failed to create file " + mdFilename); @@ -765,10 +765,10 @@ void Test::createTestsOutline() { stream << "Directories with an appended (*) have an automatic test\n\n"; // We need to know our current depth, as this isn't given by QDirIterator - int rootDepth { testDirectory.count('/') }; + int rootDepth { _testDirectory.count('/') }; // Each test is shown as the folder name linking to the matching GitHub URL, and the path to the associated test.md file - QDirIterator it(testDirectory.toStdString().c_str(), QDirIterator::Subdirectories); + QDirIterator it(_testDirectory.toStdString().c_str(), QDirIterator::Subdirectories); while (it.hasNext()) { QString directory = it.next(); @@ -823,31 +823,40 @@ void Test::createTestsOutline() { } void Test::createTestRailTestSuite() { - QString previousSelection = testDirectory; + QString previousSelection = _testDirectory; QString parent = previousSelection.left(previousSelection.lastIndexOf('/')); if (!parent.isNull() && parent.right(1) != "/") { parent += "/"; } - testDirectory = + _testDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select the tests root folder", parent, QFileDialog::ShowDirsOnly); // If user cancelled then restore previous selection and return - if (testDirectory == "") { - testDirectory = previousSelection; + if (_testDirectory == "") { + _testDirectory = previousSelection; return; } - TestSuiteCreator testSuiteCreator; - testSuiteCreator.createTestSuite(testDirectory, autoTester->getSelectedUser(), autoTester->getSelectedBranch()); + QString outputDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select a folder to store generated files in", + parent, QFileDialog::ShowDirsOnly); + + // If user cancelled then restore previous selection and return + if (outputDirectory == "") { + return; + } + + TestRailInterface testRailInterface; + testRailInterface.createTestSuite(_testDirectory, outputDirectory, autoTester->getSelectedUser(), + autoTester->getSelectedBranch()); } QStringList Test::createListOfAll_imagesInDirectory(const QString& imageFormat, const QString& pathToImageDirectory) { - imageDirectory = QDir(pathToImageDirectory); + _imageDirectory = QDir(pathToImageDirectory); QStringList nameFilters; nameFilters << "*." + imageFormat; - return imageDirectory.entryList(nameFilters, QDir::Files, QDir::Name); + return _imageDirectory.entryList(nameFilters, QDir::Files, QDir::Name); } // Snapshots are files in the following format: diff --git a/tools/auto-tester/src/Test.h b/tools/auto-tester/src/Test.h index 47786664fd..3648906086 100644 --- a/tools/auto-tester/src/Test.h +++ b/tools/auto-tester/src/Test.h @@ -70,6 +70,8 @@ public: QString getExpectedImageDestinationDirectory(const QString& filename); QString getExpectedImagePartialSourceDirectory(const QString& filename); + ExtractedText getTestScriptLines(QString testFileName); + private: const QString TEST_FILENAME { "test.js" }; const QString TEST_RESULTS_FOLDER { "TestResults" }; @@ -77,14 +79,14 @@ private: const double THRESHOLD{ 0.96 }; - QDir imageDirectory; + QDir _imageDirectory; - MismatchWindow mismatchWindow; + MismatchWindow _mismatchWindow; - ImageComparer imageComparer; + ImageComparer _imageComparer; - QString testResultsFolderPath; - int index { 1 }; + QString _testResultsFolderPath; + int _index { 1 }; // Expected images are in the format ExpectedImage_dddd.jpg (d == decimal digit) const int NUM_DIGITS { 5 }; @@ -94,28 +96,26 @@ private: // The first is the directory containing the test we are working with // The second is the root directory of all tests // The third contains the snapshots taken for test runs that need to be evaluated - QString testDirectory; - QString testsRootDirectory; - QString snapshotDirectory; + QString _testDirectory; + QString _testsRootDirectory; + QString _snapshotDirectory; - QStringList expectedImagesFilenames; - QStringList expectedImagesFullFilenames; - QStringList resultImagesFullFilenames; + QStringList _expectedImagesFilenames; + QStringList _expectedImagesFullFilenames; + QStringList _resultImagesFullFilenames; // Used for accessing GitHub const QString GIT_HUB_REPOSITORY{ "hifi_tests" }; const QString DATETIME_FORMAT{ "yyyy-MM-dd_hh-mm-ss" }; - ExtractedText getTestScriptLines(QString testFileName); - // NOTE: these need to match the appropriate var's in autoTester.js // var advanceKey = "n"; // var pathSeparator = "."; const QString ADVANCE_KEY{ "n" }; const QString PATH_SEPARATOR{ "." }; - bool exitWhenComplete{ false }; + bool _exitWhenComplete{ false }; }; #endif // hifi_test_h \ No newline at end of file diff --git a/tools/auto-tester/src/TestSuiteCreator.cpp b/tools/auto-tester/src/TestRailInterface.cpp similarity index 92% rename from tools/auto-tester/src/TestSuiteCreator.cpp rename to tools/auto-tester/src/TestRailInterface.cpp index 627012deec..189dc9a551 100644 --- a/tools/auto-tester/src/TestSuiteCreator.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -1,5 +1,5 @@ // -// TestSuiteCreator.cpp +// TestRailInterface.cpp // // Created by Nissim Hadar on 6 Jul 2018. // Copyright 2013 High Fidelity, Inc. @@ -8,7 +8,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#include "TestSuiteCreator.h" +#include "TestRailInterface.h" #include "Test.h" #include @@ -16,7 +16,10 @@ #include #include -void TestSuiteCreator::createTestSuite(const QString& testDirectory, const QString& user, const QString& branch) { +void TestRailInterface::createTestSuite(const QString& testDirectory, + const QString& outputDirectory, + const QString& user, + const QString& branch) { QDomProcessingInstruction instruction = document.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); document.appendChild(instruction); @@ -37,7 +40,7 @@ void TestSuiteCreator::createTestSuite(const QString& testDirectory, const QStri root.appendChild(topLevelSection); // Write to file - const QString testRailsFilename{ "D:/t/TestRailSuite.xml" }; + const QString testRailsFilename{ outputDirectory + "/TestRailSuite.xml" }; QFile file(testRailsFilename); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Could not create XML file"); @@ -52,7 +55,7 @@ void TestSuiteCreator::createTestSuite(const QString& testDirectory, const QStri QMessageBox::information(0, "Success", "TestRail XML file has been created"); } -QDomElement TestSuiteCreator::processDirectory(const QString& directory, const QString& user, const QString& branch, const QDomElement& element) { +QDomElement TestRailInterface::processDirectory(const QString& directory, const QString& user, const QString& branch, const QDomElement& element) { QDomElement result = element; // Loop over all entries in directory @@ -95,7 +98,7 @@ QDomElement TestSuiteCreator::processDirectory(const QString& directory, const Q return result; } -QDomElement TestSuiteCreator::processTest(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element) { +QDomElement TestRailInterface::processTest(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element) { QDomElement result = element; QDomElement caseElement = document.createElement("case"); diff --git a/tools/auto-tester/src/TestSuiteCreator.h b/tools/auto-tester/src/TestRailInterface.h similarity index 65% rename from tools/auto-tester/src/TestSuiteCreator.h rename to tools/auto-tester/src/TestRailInterface.h index a6ffa762e9..12e2f058c5 100644 --- a/tools/auto-tester/src/TestSuiteCreator.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -1,5 +1,5 @@ // -// TestSuiteCreator.h +// TestRailInterface.h // // Created by Nissim Hadar on 6 Jul 2018. // Copyright 2013 High Fidelity, Inc. @@ -8,16 +8,19 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#ifndef hifi_test_suite_creator_h -#define hifi_test_suite_creator_h +#ifndef hifi_test_testrail_interface_h +#define hifi_test_testrail_interface_h #include #include #include -class TestSuiteCreator { +class TestRailInterface { public: - void createTestSuite(const QString& testDirectory, const QString& user, const QString& branch); + void createTestSuite(const QString& testDirectory, + const QString& outputDirectory, + const QString& user, + const QString& branch); QDomElement processDirectory(const QString& directory, const QString& user, const QString& branch, const QDomElement& element); QDomElement processTest(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element); @@ -26,4 +29,4 @@ private: QDomDocument document; }; -#endif // hifi_test_suite_creator_h \ No newline at end of file +#endif \ No newline at end of file diff --git a/tools/auto-tester/src/ui/AutoTester.cpp b/tools/auto-tester/src/ui/AutoTester.cpp index 76ae6c5385..b4dbb5a7da 100644 --- a/tools/auto-tester/src/ui/AutoTester.cpp +++ b/tools/auto-tester/src/ui/AutoTester.cpp @@ -16,60 +16,60 @@ #endif AutoTester::AutoTester(QWidget *parent) : QMainWindow(parent) { - ui.setupUi(this); - ui.checkBoxInteractiveMode->setChecked(true); - ui.progressBar->setVisible(false); + _ui.setupUi(this); + _ui.checkBoxInteractiveMode->setChecked(true); + _ui.progressBar->setVisible(false); - signalMapper = new QSignalMapper(); + _signalMapper = new QSignalMapper(); - connect(ui.actionClose, &QAction::triggered, this, &AutoTester::on_closeButton_clicked); - connect(ui.actionAbout, &QAction::triggered, this, &AutoTester::about); + connect(_ui.actionClose, &QAction::triggered, this, &AutoTester::on_closeButton_clicked); + connect(_ui.actionAbout, &QAction::triggered, this, &AutoTester::about); #ifndef Q_OS_WIN - ui.hideTaskbarButton->setVisible(false); - ui.showTaskbarButton->setVisible(false); + _ui.hideTaskbarButton->setVisible(false); + _ui.showTaskbarButton->setVisible(false); #endif } void AutoTester::setup() { - test = new Test(); + _test = new Test(); } void AutoTester::runFromCommandLine(const QString& testFolder, const QString& branch, const QString& user) { - isRunningFromCommandline = true; - test->startTestsEvaluation(testFolder, branch, user); + _isRunningFromCommandline = true; + _test->startTestsEvaluation(testFolder, branch, user); } void AutoTester::on_evaluateTestsButton_clicked() { - test->startTestsEvaluation(); + _test->startTestsEvaluation(); } void AutoTester::on_createRecursiveScriptButton_clicked() { - test->createRecursiveScript(); + _test->createRecursiveScript(); } void AutoTester::on_createAllRecursiveScriptsButton_clicked() { - test->createAllRecursiveScripts(); + _test->createAllRecursiveScripts(); } void AutoTester::on_createTestsButton_clicked() { - test->createTests(); + _test->createTests(); } void AutoTester::on_createMDFileButton_clicked() { - test->createMDFile(); + _test->createMDFile(); } void AutoTester::on_createAllMDFilesButton_clicked() { - test->createAllMDFiles(); + _test->createAllMDFiles(); } void AutoTester::on_createTestsOutlineButton_clicked() { - test->createTestsOutline(); + _test->createTestsOutline(); } void AutoTester::on_createTestRailTestSuiteButton_clicked() { - test->createTestRailTestSuite(); + _test->createTestRailTestSuite(); } // To toggle between show and hide @@ -101,10 +101,10 @@ void AutoTester::on_closeButton_clicked() { } void AutoTester::downloadImage(const QUrl& url) { - downloaders.emplace_back(new Downloader(url, this)); - connect(downloaders[_index], SIGNAL (downloaded()), signalMapper, SLOT (map())); + _downloaders.emplace_back(new Downloader(url, this)); + connect(_downloaders[_index], SIGNAL (downloaded()), _signalMapper, SLOT (map())); - signalMapper->setMapping(downloaders[_index], _index); + _signalMapper->setMapping(_downloaders[_index], _index); ++_index; } @@ -117,39 +117,39 @@ void AutoTester::downloadImages(const QStringList& URLs, const QString& director _numberOfImagesDownloaded = 0; _index = 0; - ui.progressBar->setMinimum(0); - ui.progressBar->setMaximum(_numberOfImagesToDownload - 1); - ui.progressBar->setValue(0); - ui.progressBar->setVisible(true); + _ui.progressBar->setMinimum(0); + _ui.progressBar->setMaximum(_numberOfImagesToDownload - 1); + _ui.progressBar->setValue(0); + _ui.progressBar->setVisible(true); - downloaders.clear(); + _downloaders.clear(); for (int i = 0; i < _numberOfImagesToDownload; ++i) { QUrl imageURL(URLs[i]); downloadImage(imageURL); } - connect(signalMapper, SIGNAL (mapped(int)), this, SLOT (saveImage(int))); + connect(_signalMapper, SIGNAL (mapped(int)), this, SLOT (saveImage(int))); } void AutoTester::saveImage(int index) { try { QFile file(_directoryName + "/" + _filenames[index]); file.open(QIODevice::WriteOnly); - file.write(downloaders[index]->downloadedData()); + file.write(_downloaders[index]->downloadedData()); file.close(); } catch (...) { QMessageBox::information(0, "Test Aborted", "Failed to save image: " + _filenames[index]); - ui.progressBar->setVisible(false); + _ui.progressBar->setVisible(false); return; } ++_numberOfImagesDownloaded; if (_numberOfImagesDownloaded == _numberOfImagesToDownload) { - disconnect(signalMapper, SIGNAL (mapped(int)), this, SLOT (saveImage(int))); - test->finishTestsEvaluation(isRunningFromCommandline, ui.checkBoxInteractiveMode->isChecked(), ui.progressBar); + disconnect(_signalMapper, SIGNAL (mapped(int)), this, SLOT (saveImage(int))); + _test->finishTestsEvaluation(_isRunningFromCommandline, _ui.checkBoxInteractiveMode->isChecked(), _ui.progressBar); } else { - ui.progressBar->setValue(_numberOfImagesDownloaded); + _ui.progressBar->setValue(_numberOfImagesDownloaded); } } @@ -158,18 +158,18 @@ void AutoTester::about() { } void AutoTester::setUserText(const QString& user) { - ui.userTextEdit->setText(user); + _ui.userTextEdit->setText(user); } QString AutoTester::getSelectedUser() { - return ui.userTextEdit->toPlainText(); + return _ui.userTextEdit->toPlainText(); } void AutoTester::setBranchText(const QString& branch) { - ui.branchTextEdit->setText(branch); + _ui.branchTextEdit->setText(branch); } QString AutoTester::getSelectedBranch() { - return ui.branchTextEdit->toPlainText(); + return _ui.branchTextEdit->toPlainText(); } diff --git a/tools/auto-tester/src/ui/AutoTester.h b/tools/auto-tester/src/ui/AutoTester.h index 76b4741d9a..cb99b0a79c 100644 --- a/tools/auto-tester/src/ui/AutoTester.h +++ b/tools/auto-tester/src/ui/AutoTester.h @@ -56,23 +56,23 @@ private slots: void about(); private: - Ui::AutoTesterClass ui; - Test* test; + Ui::AutoTesterClass _ui; + Test* _test; - std::vector downloaders; + std::vector _downloaders; // local storage for parameters - folder to store downloaded files in, and a list of their names QString _directoryName; QStringList _filenames; // Used to enable passing a parameter to slots - QSignalMapper* signalMapper; + QSignalMapper* _signalMapper; int _numberOfImagesToDownload { 0 }; int _numberOfImagesDownloaded { 0 }; int _index { 0 }; - bool isRunningFromCommandline { false }; + bool _isRunningFromCommandline { false }; }; #endif // hifi_AutoTester_h \ No newline at end of file diff --git a/tools/auto-tester/src/ui/MismatchWindow.cpp b/tools/auto-tester/src/ui/MismatchWindow.cpp index d880a1abdc..79d2ce9f61 100644 --- a/tools/auto-tester/src/ui/MismatchWindow.cpp +++ b/tools/auto-tester/src/ui/MismatchWindow.cpp @@ -66,14 +66,14 @@ void MismatchWindow::setTestFailure(TestFailure testFailure) { QPixmap expectedPixmap = QPixmap(testFailure._pathname + testFailure._expectedImageFilename); QPixmap actualPixmap = QPixmap(testFailure._pathname + testFailure._actualImageFilename); - diffPixmap = computeDiffPixmap( + _diffPixmap = computeDiffPixmap( QImage(testFailure._pathname + testFailure._expectedImageFilename), QImage(testFailure._pathname + testFailure._actualImageFilename) ); expectedImage->setPixmap(expectedPixmap); resultImage->setPixmap(actualPixmap); - diffImage->setPixmap(diffPixmap); + diffImage->setPixmap(_diffPixmap); } void MismatchWindow::on_passTestButton_clicked() { @@ -92,5 +92,5 @@ void MismatchWindow::on_abortTestsButton_clicked() { } QPixmap MismatchWindow::getComparisonImage() { - return diffPixmap; + return _diffPixmap; } diff --git a/tools/auto-tester/src/ui/MismatchWindow.h b/tools/auto-tester/src/ui/MismatchWindow.h index cdbdcb4098..30fca94469 100644 --- a/tools/auto-tester/src/ui/MismatchWindow.h +++ b/tools/auto-tester/src/ui/MismatchWindow.h @@ -36,7 +36,7 @@ private slots: private: UserResponse _userResponse{ USER_RESPONSE_INVALID }; - QPixmap diffPixmap; + QPixmap _diffPixmap; }; From de6d30e160cac96be54915e30e707552fc075b6d Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 25 Jul 2018 16:49:41 -0700 Subject: [PATCH 041/332] Add JS docs for CollisionPick API --- .../src/raypick/PickScriptingInterface.cpp | 17 ++++++++++++++ .../src/raypick/PickScriptingInterface.h | 23 +++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index 3417eaf431..384a193f25 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -137,6 +137,23 @@ unsigned int PickScriptingInterface::createStylusPick(const QVariant& properties return DependencyManager::get()->addPick(PickQuery::Stylus, std::make_shared(side, filter, maxDistance, enabled)); } +/**jsdoc +* A Shape defines a physical volume. +* +* @typedef {object} Shape +* @property {ShapeType} shapeType The type of shape to use. +* @property {string} modelURL - If shapeType is one of: "compound", "simple-hull", "simple-compound", or "static-mesh", this defines the model to load to generate the collision volume. +* @property {Vec3} dimensions - The size to scale the shape to. +*/ + +/**jsdoc +* A set of properties that can be passed to {@link Picks.createPick} to create a new Collision Pick. + +* @typedef {object} Picks.CollisionPickProperties +* @property {Shape} shape - The information about the collision region's size and shape. +* @property {Vec3} position - The position of the collision region. +* @property {Quat} orientation - The orientation of the collision region. +*/ unsigned int PickScriptingInterface::createCollisionPick(const QVariant& properties) { QVariantMap propMap = properties.toMap(); diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 5eb370adf7..4c857585be 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -73,7 +73,7 @@ public: * with PickType.Ray, depending on which optional parameters you pass, you could create a Static Ray Pick, a Mouse Ray Pick, or a Joint Ray Pick. * @function Picks.createPick * @param {PickType} type A PickType that specifies the method of picking to use - * @param {Picks.RayPickProperties|Picks.StylusPickProperties} properties A PickProperties object, containing all the properties for initializing this Pick + * @param {Picks.RayPickProperties|Picks.StylusPickProperties|Picks.CollisionPickProperties} properties A PickProperties object, containing all the properties for initializing this Pick * @returns {number} The ID of the created Pick. Used for managing the Pick. 0 if invalid. */ Q_INVOKABLE unsigned int createPick(const PickQuery::PickType type, const QVariant& properties); @@ -127,11 +127,30 @@ public: * @property {StylusTip} stylusTip The StylusTip that was used. Valid even if there was no intersection. */ + /**jsdoc + * An intersection result for a Collision Pick. + * + * @typedef {object} CollisionPickResult + * @property {boolean} intersects If there was at least one valid intersection (entityIntersections.length + avatarIntersections.length > 0) + * @property {EntityItersection[]} entityIntersections The collision information of entities which intersect with the CollisionRegion. There may be multiple intersections with the same entity which represent distinct collision points. + * @property {EntityItersection[]} avatarIntersections The collision information of avatars which intersect with the CollisionRegion. There may be multiple intersections with the same entity which represent distinct collision points. + * @property {CollisionRegion} collisionRegion The CollisionRegion that was used. Valid even if there was no intersection. + */ + + /**jsdoc + * A pair of intersection points between a CollisionPick and an entity/avatar. + * + * @typedef {object} EntityIntersection + * @property {QUuid} id The ID of the object. + * @property {Vec3} pickCollisionPoint A point within the volume of the CollisionPick which corresponds to a point on the surface of the collided entity, in world space. + * @property {Vec3} entityCollisionPoint A point within the volume of the collided entity which corresponds to a point on the surface of the CollisionPick, in world space. + */ + /**jsdoc * Get the most recent pick result from this Pick. This will be updated as long as the Pick is enabled. * @function Picks.getPrevPickResult * @param {number} uid The ID of the Pick, as returned by {@link Picks.createPick}. - * @returns {RayPickResult|StylusPickResult} The most recent intersection result. This will be different for different PickTypes. + * @returns {RayPickResult|StylusPickResult|CollisionPickResult} The most recent intersection result. This will be different for different PickTypes. */ Q_INVOKABLE QVariantMap getPrevPickResult(unsigned int uid); From 6db83660b62acaf0316c57f24b60750d4ab2dc09 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Wed, 25 Jul 2018 17:07:18 -0700 Subject: [PATCH 042/332] Working on Python integration. --- tools/auto-tester/src/Test.cpp | 18 ++++++--- tools/auto-tester/src/Test.h | 13 +++++++ tools/auto-tester/src/TestRailInterface.cpp | 8 ++-- tools/auto-tester/src/TestRailInterface.h | 8 ++-- tools/auto-tester/src/ui/AutoTester.cpp | 8 ++++ tools/auto-tester/src/ui/AutoTester.h | 4 ++ tools/auto-tester/src/ui/AutoTester.ui | 41 ++++++++++++++++++--- 7 files changed, 80 insertions(+), 20 deletions(-) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 22ec78e284..c8ae75eee0 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -18,7 +18,6 @@ #include #include -#include "TestRailInterface.h" #include "ui/AutoTester.h" extern AutoTester* autoTester; @@ -839,16 +838,19 @@ void Test::createTestRailTestSuite() { } QString outputDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select a folder to store generated files in", - parent, QFileDialog::ShowDirsOnly); + parent, QFileDialog::ShowDirsOnly); - // If user cancelled then restore previous selection and return + // If user cancelled then return if (outputDirectory == "") { return; } - TestRailInterface testRailInterface; - testRailInterface.createTestSuite(_testDirectory, outputDirectory, autoTester->getSelectedUser(), - autoTester->getSelectedBranch()); + if (_testRailCreateMode == PYTHON) { + ////createTestRailPythonTestSuite(); + } else { + _testRailInterface.createTestSuiteXML(_testDirectory, outputDirectory, autoTester->getSelectedUser(), + autoTester->getSelectedBranch()); + } } QStringList Test::createListOfAll_imagesInDirectory(const QString& imageFormat, const QString& pathToImageDirectory) { @@ -919,3 +921,7 @@ QString Test::getExpectedImagePartialSourceDirectory(const QString& filename) { return result; } + +void Test::setTestRailCreateMode(TestRailCreateMode testRailCreateMode) { + _testRailCreateMode = testRailCreateMode; +} diff --git a/tools/auto-tester/src/Test.h b/tools/auto-tester/src/Test.h index 3648906086..36b4cdd897 100644 --- a/tools/auto-tester/src/Test.h +++ b/tools/auto-tester/src/Test.h @@ -18,6 +18,7 @@ #include "ImageComparer.h" #include "ui/MismatchWindow.h" +#include "TestRailInterface.h" class Step { public: @@ -33,6 +34,11 @@ public: StepList stepList; }; +enum TestRailCreateMode { + PYTHON, + XML +}; + class Test { public: Test(); @@ -50,6 +56,7 @@ public: void createMDFile(const QString& topLevelDirectory); void createTestsOutline(); + void createTestRailTestSuite(); bool compareImageLists(bool isInteractiveMode, QProgressBar* progressBar); @@ -72,6 +79,8 @@ public: ExtractedText getTestScriptLines(QString testFileName); + void setTestRailCreateMode(TestRailCreateMode testRailCreateMode); + private: const QString TEST_FILENAME { "test.js" }; const QString TEST_RESULTS_FOLDER { "TestResults" }; @@ -116,6 +125,10 @@ private: const QString PATH_SEPARATOR{ "." }; bool _exitWhenComplete{ false }; + + TestRailInterface _testRailInterface; + + TestRailCreateMode _testRailCreateMode { PYTHON }; }; #endif // hifi_test_h \ No newline at end of file diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 189dc9a551..ee1969db44 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -16,10 +16,10 @@ #include #include -void TestRailInterface::createTestSuite(const QString& testDirectory, - const QString& outputDirectory, - const QString& user, - const QString& branch) { +void TestRailInterface::createTestSuiteXML(const QString& testDirectory, + const QString& outputDirectory, + const QString& user, + const QString& branch) { QDomProcessingInstruction instruction = document.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); document.appendChild(instruction); diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 12e2f058c5..c0a61687e4 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -17,10 +17,10 @@ class TestRailInterface { public: - void createTestSuite(const QString& testDirectory, - const QString& outputDirectory, - const QString& user, - const QString& branch); + void createTestSuiteXML(const QString& testDirectory, + const QString& outputDirectory, + const QString& user, + const QString& branch); QDomElement processDirectory(const QString& directory, const QString& user, const QString& branch, const QDomElement& element); QDomElement processTest(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element); diff --git a/tools/auto-tester/src/ui/AutoTester.cpp b/tools/auto-tester/src/ui/AutoTester.cpp index b4dbb5a7da..02c3c49a53 100644 --- a/tools/auto-tester/src/ui/AutoTester.cpp +++ b/tools/auto-tester/src/ui/AutoTester.cpp @@ -100,6 +100,14 @@ void AutoTester::on_closeButton_clicked() { exit(0); } +void AutoTester::on_createPythonScriptRadioButton_clicked() { + _test->setTestRailCreateMode(PYTHON); +} + +void AutoTester::on_createXMLScriptRadioButton_clicked() { + _test->setTestRailCreateMode(XML); +} + void AutoTester::downloadImage(const QUrl& url) { _downloaders.emplace_back(new Downloader(url, this)); connect(_downloaders[_index], SIGNAL (downloaded()), _signalMapper, SLOT (map())); diff --git a/tools/auto-tester/src/ui/AutoTester.h b/tools/auto-tester/src/ui/AutoTester.h index cb99b0a79c..7f04bd1c49 100644 --- a/tools/auto-tester/src/ui/AutoTester.h +++ b/tools/auto-tester/src/ui/AutoTester.h @@ -46,9 +46,13 @@ private slots: void on_createAllMDFilesButton_clicked(); void on_createTestsOutlineButton_clicked(); void on_createTestRailTestSuiteButton_clicked(); + void on_hideTaskbarButton_clicked(); void on_showTaskbarButton_clicked(); + void on_createPythonScriptRadioButton_clicked(); + void on_createXMLScriptRadioButton_clicked(); + void on_closeButton_clicked(); void saveImage(int index); diff --git a/tools/auto-tester/src/ui/AutoTester.ui b/tools/auto-tester/src/ui/AutoTester.ui index ddc095ba23..9030016f34 100644 --- a/tools/auto-tester/src/ui/AutoTester.ui +++ b/tools/auto-tester/src/ui/AutoTester.ui @@ -6,8 +6,8 @@ 0 0 - 612 - 553 + 645 + 570
@@ -232,9 +232,9 @@ - 330 - 90 - 220 + 409 + 100 + 141 40 @@ -242,13 +242,42 @@ Create TestRail Test Suite
+ + + + 310 + 100 + 95 + 20 + + + + Python + + + true + + + + + + 310 + 120 + 95 + 20 + + + + XML + + 0 0 - 612 + 645 21 From aa57d359beba6c328e4d5cb204500481baa71fe6 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Wed, 25 Jul 2018 17:26:23 -0700 Subject: [PATCH 043/332] Adding interface to select TestRail user. --- tools/auto-tester/src/Test.cpp | 3 +- tools/auto-tester/src/TestRailInterface.cpp | 8 +- tools/auto-tester/src/TestRailInterface.h | 10 +- tools/auto-tester/src/ui/TestRailSelector.ui | 147 +++++++++++++++++++ 4 files changed, 165 insertions(+), 3 deletions(-) create mode 100644 tools/auto-tester/src/ui/TestRailSelector.ui diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index c8ae75eee0..f708137305 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -846,7 +846,8 @@ void Test::createTestRailTestSuite() { } if (_testRailCreateMode == PYTHON) { - ////createTestRailPythonTestSuite(); + _testRailInterface.createTestSuitePython(_testDirectory, outputDirectory, autoTester->getSelectedUser(), + autoTester->getSelectedBranch()); } else { _testRailInterface.createTestSuiteXML(_testDirectory, outputDirectory, autoTester->getSelectedUser(), autoTester->getSelectedBranch()); diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index ee1969db44..4c7c1a4f27 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -16,7 +16,13 @@ #include #include -void TestRailInterface::createTestSuiteXML(const QString& testDirectory, +void TestRailInterface::createTestSuitePython(const QString& testDirectory, + const QString& outputDirectory, + const QString& user, + const QString& branch) { + } + + void TestRailInterface::createTestSuiteXML(const QString& testDirectory, const QString& outputDirectory, const QString& user, const QString& branch) { diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index c0a61687e4..a8edd1f8b7 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -22,7 +22,15 @@ public: const QString& user, const QString& branch); - QDomElement processDirectory(const QString& directory, const QString& user, const QString& branch, const QDomElement& element); + void createTestSuitePython(const QString& testDirectory, + const QString& outputDirectory, + const QString& user, + const QString& branch); + + QDomElement processDirectory(const QString& directory, + const QString& user, + const QString& branch, + const QDomElement& element); QDomElement processTest(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element); private: diff --git a/tools/auto-tester/src/ui/TestRailSelector.ui b/tools/auto-tester/src/ui/TestRailSelector.ui new file mode 100644 index 0000000000..695b374a50 --- /dev/null +++ b/tools/auto-tester/src/ui/TestRailSelector.ui @@ -0,0 +1,147 @@ + + + AutoTesterClass + + + + 0 + 0 + 314 + 259 + + + + AutoTester + + + + + + 20 + 130 + 101 + 40 + + + + OK + + + + + + 20 + 65 + 81 + 16 + + + + + 10 + + + + TestRail Branch + + + + + + 20 + 25 + 81 + 16 + + + + + 10 + + + + TestRail User + + + + + + 110 + 22 + 140 + 24 + + + + + + + 110 + 60 + 140 + 24 + + + + + + + 170 + 130 + 101 + 40 + + + + Cancel + + + + + + + 0 + 0 + 314 + 21 + + + + + File + + + + + + Help + + + + + + + + + TopToolBarArea + + + false + + + + + + Close + + + + + About + + + + + + + From fee05b6b8d40b061d23c0bbe0786b8ad74aa2d08 Mon Sep 17 00:00:00 2001 From: amantley Date: Wed, 25 Jul 2018 17:46:19 -0700 Subject: [PATCH 044/332] debug of anim state machine tree traversal --- libraries/animation/src/AnimBlendLinear.cpp | 2 +- libraries/animation/src/AnimBlendLinearMove.cpp | 2 +- libraries/animation/src/AnimClip.cpp | 2 +- libraries/animation/src/AnimDefaultPose.cpp | 1 + libraries/animation/src/AnimInverseKinematics.cpp | 1 + libraries/animation/src/AnimManipulator.cpp | 1 + libraries/animation/src/AnimOverlay.cpp | 2 +- libraries/animation/src/AnimStateMachine.cpp | 2 +- 8 files changed, 8 insertions(+), 5 deletions(-) diff --git a/libraries/animation/src/AnimBlendLinear.cpp b/libraries/animation/src/AnimBlendLinear.cpp index 936126bf52..a83d0160ee 100644 --- a/libraries/animation/src/AnimBlendLinear.cpp +++ b/libraries/animation/src/AnimBlendLinear.cpp @@ -25,7 +25,7 @@ AnimBlendLinear::~AnimBlendLinear() { } const AnimPoseVec& AnimBlendLinear::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { - + qCDebug(animation) << "in blend linear ++++++++++++++++" << _alphaVar << ": " << _alpha; _alpha = animVars.lookup(_alphaVar, _alpha); if (_children.size() == 0) { diff --git a/libraries/animation/src/AnimBlendLinearMove.cpp b/libraries/animation/src/AnimBlendLinearMove.cpp index f027695160..a4d211e68a 100644 --- a/libraries/animation/src/AnimBlendLinearMove.cpp +++ b/libraries/animation/src/AnimBlendLinearMove.cpp @@ -47,7 +47,7 @@ static float calculateAlpha(const float speed, const std::vector& charact } const AnimPoseVec& AnimBlendLinearMove::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { - + qCDebug(animation) << "in blend linear move " << _alphaVar << ": " << _alpha; assert(_children.size() == _characteristicSpeeds.size()); _desiredSpeed = animVars.lookup(_desiredSpeedVar, _desiredSpeed); diff --git a/libraries/animation/src/AnimClip.cpp b/libraries/animation/src/AnimClip.cpp index 7d358e85cc..598b32c862 100644 --- a/libraries/animation/src/AnimClip.cpp +++ b/libraries/animation/src/AnimClip.cpp @@ -31,7 +31,7 @@ AnimClip::~AnimClip() { } const AnimPoseVec& AnimClip::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { - + qCDebug(animation) << "anim clip is: " << _url; // lookup parameters from animVars, using current instance variables as defaults. _startFrame = animVars.lookup(_startFrameVar, _startFrame); _endFrame = animVars.lookup(_endFrameVar, _endFrame); diff --git a/libraries/animation/src/AnimDefaultPose.cpp b/libraries/animation/src/AnimDefaultPose.cpp index 70bcbe7c21..8647c5a7ac 100644 --- a/libraries/animation/src/AnimDefaultPose.cpp +++ b/libraries/animation/src/AnimDefaultPose.cpp @@ -21,6 +21,7 @@ AnimDefaultPose::~AnimDefaultPose() { } const AnimPoseVec& AnimDefaultPose::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { + qCDebug(animation) << "in animation default pose"; if (_skeleton) { _poses = _skeleton->getRelativeDefaultPoses(); } else { diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index dc004fe60d..7bd1e3b445 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -875,6 +875,7 @@ void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, co //virtual const AnimPoseVec& AnimInverseKinematics::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimNode::Triggers& triggersOut) { + qCDebug(animation) << "in animation ik node"; // don't call this function, call overlay() instead assert(false); return _relativePoses; diff --git a/libraries/animation/src/AnimManipulator.cpp b/libraries/animation/src/AnimManipulator.cpp index 46b3cf1c28..f29d5688ee 100644 --- a/libraries/animation/src/AnimManipulator.cpp +++ b/libraries/animation/src/AnimManipulator.cpp @@ -33,6 +33,7 @@ AnimManipulator::~AnimManipulator() { } const AnimPoseVec& AnimManipulator::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { + qCDebug(animation) << "in anim manipulator node"; return overlay(animVars, context, dt, triggersOut, _skeleton->getRelativeDefaultPoses()); } diff --git a/libraries/animation/src/AnimOverlay.cpp b/libraries/animation/src/AnimOverlay.cpp index 10594af20a..b477449ff9 100644 --- a/libraries/animation/src/AnimOverlay.cpp +++ b/libraries/animation/src/AnimOverlay.cpp @@ -42,7 +42,7 @@ void AnimOverlay::buildBoneSet(BoneSet boneSet) { } const AnimPoseVec& AnimOverlay::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { - + qCDebug(animation) << "in anim overlay node" << _alphaVar << ": " << _alpha; // lookup parameters from animVars, using current instance variables as defaults. // NOTE: switching bonesets can be an expensive operation, let's try to avoid it. auto prevBoneSet = _boneSet; diff --git a/libraries/animation/src/AnimStateMachine.cpp b/libraries/animation/src/AnimStateMachine.cpp index 4e86b92c0b..c7d7471dfa 100644 --- a/libraries/animation/src/AnimStateMachine.cpp +++ b/libraries/animation/src/AnimStateMachine.cpp @@ -22,7 +22,7 @@ AnimStateMachine::~AnimStateMachine() { } const AnimPoseVec& AnimStateMachine::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { - + qCDebug(animation) << "in anim state machine " << _currentState->getID() << ": " << _alpha; QString desiredStateID = animVars.lookup(_currentStateVar, _currentState->getID()); if (_currentState->getID() != desiredStateID) { // switch states From db0969d1a718f42b6f54c03a2e9a6cc0faad9474 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Thu, 26 Jul 2018 09:16:14 -0700 Subject: [PATCH 045/332] Creates 'testrail.py' script in the output folder. --- tools/auto-tester/src/TestRailInterface.cpp | 119 +++++++++++++++++++- 1 file changed, 113 insertions(+), 6 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 4c7c1a4f27..2a8086b8c2 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -17,15 +17,122 @@ #include void TestRailInterface::createTestSuitePython(const QString& testDirectory, - const QString& outputDirectory, - const QString& user, - const QString& branch) { + const QString& outputDirectory, + const QString& user, + const QString& branch) { + + // Create the testrail.py script + // This is the file linked to from http://docs.gurock.com/testrail-api2/bindings-python + QFile file(outputDirectory + "/testrail.py"); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not create \'testrail.py\'"); + exit(-1); + } + + QTextStream stream(&file); + + stream << "#\n"; + stream << "# TestRail API binding for Python 3.x (API v2, available since \n"; + stream << "# TestRail 3.0)\n"; + stream << "#\n"; + stream << "# Learn more:\n"; + stream << "#\n"; + stream << "# http://docs.gurock.com/testrail-api2/start\n"; + stream << "# http://docs.gurock.com/testrail-api2/accessing\n"; + stream << "#\n"; + stream << "# Copyright Gurock Software GmbH. See license.md for details.\n"; + stream << "#\n"; + stream << "\n"; + stream << "import urllib.request, urllib.error\n"; + stream << "import json, base64\n"; + stream << "\n"; + stream << "class APIClient:\n"; + stream << "\tdef __init__(self, base_url):\n"; + stream << "\t\tself.user = ''\n"; + stream << "\t\tself.password = ''\n"; + stream << "\t\tif not base_url.endswith('/'):\n"; + stream << "\t\t\tbase_url += '/'\n"; + stream << "\t\tself.__url = base_url + 'index.php?/api/v2/'\n"; + stream << "\n"; + stream << "\t#\n"; + stream << "\t# Send Get\n"; + stream << "\t#\n"; + stream << "\t# Issues a GET request (read) against the API and returns the result\n"; + stream << "\t# (as Python dict).\n"; + stream << "\t#\n"; + stream << "\t# Arguments:\n"; + stream << "\t#\n"; + stream << "\t# uri The API method to call including parameters\n"; + stream << "\t# (e.g. get_case/1)\n"; + stream << "\t#\n"; + stream << "\tdef send_get(self, uri):\n"; + stream << "\t\treturn self.__send_request('GET', uri, None)\n"; + stream << "\n"; + stream << "\t#\n"; + stream << "\t# Send POST\n"; + stream << "\t#\n"; + stream << "\t# Issues a POST request (write) against the API and returns the result\n"; + stream << "\t# (as Python dict).\n"; + stream << "\t#\n"; + stream << "\t# Arguments:\n"; + stream << "\t#\n"; + stream << "\t# uri The API method to call including parameters\n"; + stream << "\t# (e.g. add_case/1)\n"; + stream << "\t# data The data to submit as part of the request (as\n"; + stream << "\t# Python dict, strings must be UTF-8 encoded)\n"; + stream << "\t#\n"; + stream << "\tdef send_post(self, uri, data):\n"; + stream << "\t\treturn self.__send_request('POST', uri, data)\n"; + stream << "\n"; + stream << "\tdef __send_request(self, method, uri, data):\n"; + stream << "\t\turl = self.__url + uri\n"; + stream << "\t\trequest = urllib.request.Request(url)\n"; + stream << "\t\tif (method == 'POST'):\n"; + stream << "\t\t\trequest.data = bytes(json.dumps(data), 'utf-8')\n"; + stream << "\t\tauth = str(\n"; + stream << "\t\t\tbase64.b64encode(\n"; + stream << "\t\t\t\tbytes('%s:%s' % (self.user, self.password), 'utf-8')\n"; + stream << "\t\t\t),\n"; + stream << "\t\t\t'ascii'\n"; + stream << "\t\t).strip()\n"; + stream << "\t\trequest.add_header('Authorization', 'Basic %s' % auth)\n"; + stream << "\t\trequest.add_header('Content-Type', 'application/json')\n"; + stream << "\n"; + stream << "\t\te = None\n"; + stream << "\t\ttry:\n"; + stream << "\t\t\tresponse = urllib.request.urlopen(request).read()\n"; + stream << "\t\texcept urllib.error.HTTPError as ex:\n"; + stream << "\t\t\tresponse = ex.read()\n"; + stream << "\t\t\te = ex\n"; + stream << "\n"; + stream << "\t\tif response:\n"; + stream << "\t\t\tresult = json.loads(response.decode())\n"; + stream << "\t\telse:\n"; + stream << "\t\t\tresult = {}\n"; + stream << "\n"; + stream << "\t\tif e != None:\n"; + stream << "\t\t\tif result and 'error' in result:\n"; + stream << "\t\t\t\terror = \'\"\' + result[\'error\'] + \'\"\'\n"; + stream << "\t\t\telse:\n"; + stream << "\t\t\t\terror = \'No additional error message received\'\n"; + stream << "\t\t\traise APIError(\'TestRail API returned HTTP %s (%s)\' % \n"; + stream << "\t\t\t\t(e.code, error))\n"; + stream << "\n"; + stream << "\t\treturn result\n"; + stream << "\n"; + stream << "class APIError(Exception):\n"; + stream << "\tpass\n"; + + file.close(); + } void TestRailInterface::createTestSuiteXML(const QString& testDirectory, - const QString& outputDirectory, - const QString& user, - const QString& branch) { + const QString& outputDirectory, + const QString& user, + const QString& branch) { + QDomProcessingInstruction instruction = document.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); document.appendChild(instruction); From 72d4e7dba204631e1b98ad9b921f70b923334379 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Thu, 26 Jul 2018 10:46:43 -0700 Subject: [PATCH 046/332] Refactoring. --- tools/auto-tester/src/TestRailInterface.cpp | 17 ++++++++++++----- tools/auto-tester/src/TestRailInterface.h | 4 ++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 2a8086b8c2..5f597734f6 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -16,11 +16,7 @@ #include #include -void TestRailInterface::createTestSuitePython(const QString& testDirectory, - const QString& outputDirectory, - const QString& user, - const QString& branch) { - +void TestRailInterface::createTestRailDotPyScript(const QString& outputDirectory) { // Create the testrail.py script // This is the file linked to from http://docs.gurock.com/testrail-api2/bindings-python QFile file(outputDirectory + "/testrail.py"); @@ -125,7 +121,18 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, stream << "\tpass\n"; file.close(); +} +void TestRailInterface::requestDataFromUser() { +} + +void TestRailInterface::createTestSuitePython(const QString& testDirectory, + const QString& outputDirectory, + const QString& user, + const QString& branch) { + + createTestRailDotPyScript(outputDirectory); + requestDataFromUser(); } void TestRailInterface::createTestSuiteXML(const QString& testDirectory, diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index a8edd1f8b7..eb562fa7c9 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -31,8 +31,12 @@ public: const QString& user, const QString& branch, const QDomElement& element); + QDomElement processTest(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element); + void createTestRailDotPyScript(const QString& outputDirectory); + void requestDataFromUser(); + private: QDomDocument document; }; From 2dca95a146b12b01b0a2d4f6652ff45360f159df Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Thu, 26 Jul 2018 14:12:44 -0700 Subject: [PATCH 047/332] Working on TestRail, adding sections --- tools/auto-tester/src/TestRailInterface.cpp | 158 +++++++++++------- tools/auto-tester/src/TestRailInterface.h | 12 +- tools/auto-tester/src/ui/TestRailSelector.ui | 147 ---------------- .../src/ui/TestRailSelectorWindow.cpp | 52 ++++++ .../src/ui/TestRailSelectorWindow.h | 38 +++++ .../src/ui/TestRailSelectorWindow.ui | 151 +++++++++++++++++ 6 files changed, 350 insertions(+), 208 deletions(-) delete mode 100644 tools/auto-tester/src/ui/TestRailSelector.ui create mode 100644 tools/auto-tester/src/ui/TestRailSelectorWindow.cpp create mode 100644 tools/auto-tester/src/ui/TestRailSelectorWindow.h create mode 100644 tools/auto-tester/src/ui/TestRailSelectorWindow.ui diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 5f597734f6..7077b02aac 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -11,11 +11,20 @@ #include "TestRailInterface.h" #include "Test.h" +#include "ui/TestRailSelectorWindow.h" + #include #include #include #include +TestRailInterface::TestRailInterface() { + _testRailSelectorWindow.setModal(true); + + _testRailSelectorWindow.setURL("https://highfidelity.testrail.net/"); + _testRailSelectorWindow.setUser("@highfidelity.io"); +} + void TestRailInterface::createTestRailDotPyScript(const QString& outputDirectory) { // Create the testrail.py script // This is the file linked to from http://docs.gurock.com/testrail-api2/bindings-python @@ -124,6 +133,34 @@ void TestRailInterface::createTestRailDotPyScript(const QString& outputDirectory } void TestRailInterface::requestDataFromUser() { + _testRailSelectorWindow.exec(); + + if (_testRailSelectorWindow.getUserCancelled()) { + return; + } + + _url = _testRailSelectorWindow.getURL(); + _user = _testRailSelectorWindow.getUser(); + _password = _testRailSelectorWindow.getPassword(); +} + +void TestRailInterface::createAddSectionsPythonScript(const QString& outputDirectory) { + QFile file(outputDirectory + "/addSections.py"); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not create \'addSections.py\'"); + exit(-1); + } + + QTextStream stream(&file); + + // Code to access TestRail + stream << "from testrail import *\n"; + stream << "client = APIClient(\'" << _url.toStdString().c_str() << "\')\n"; + stream << "client.user = \'" << _user << "\'\n"; + stream << "client.password = \'" << _password << "\'\n\n"; + + file.close(); } void TestRailInterface::createTestSuitePython(const QString& testDirectory, @@ -133,6 +170,7 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, createTestRailDotPyScript(outputDirectory); requestDataFromUser(); + createAddSectionsPythonScript(outputDirectory); } void TestRailInterface::createTestSuiteXML(const QString& testDirectory, @@ -140,20 +178,20 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, const QString& user, const QString& branch) { - QDomProcessingInstruction instruction = document.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); - document.appendChild(instruction); + QDomProcessingInstruction instruction = _document.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); + _document.appendChild(instruction); // We create a single section, within sections - QDomElement root = document.createElement("sections"); - document.appendChild(root); + QDomElement root = _document.createElement("sections"); + _document.appendChild(root); - QDomElement topLevelSection = document.createElement("section"); + QDomElement topLevelSection = _document.createElement("section"); - QDomElement suiteName = document.createElement("name"); - suiteName.appendChild(document.createTextNode("Test Suite - " + QDateTime::currentDateTime().toString())); + QDomElement suiteName = _document.createElement("name"); + suiteName.appendChild(_document.createTextNode("Test Suite - " + QDateTime::currentDateTime().toString())); topLevelSection.appendChild(suiteName); - QDomElement secondLevelSections = document.createElement("sections"); + QDomElement secondLevelSections = _document.createElement("sections"); topLevelSection.appendChild(processDirectory(testDirectory, user, branch, secondLevelSections)); topLevelSection.appendChild(secondLevelSections); @@ -168,7 +206,7 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, } QTextStream stream(&file); - stream << document.toString(); + stream << _document.toString(); file.close(); @@ -195,22 +233,22 @@ QDomElement TestRailInterface::processDirectory(const QString& directory, const // Create a section and process it - QDomElement sectionElement = document.createElement("section"); + QDomElement sectionElement = _document.createElement("section"); - QDomElement sectionElementName = document.createElement("name"); - sectionElementName.appendChild(document.createTextNode(objectName)); + QDomElement sectionElementName = _document.createElement("name"); + sectionElementName.appendChild(_document.createTextNode(objectName)); sectionElement.appendChild(sectionElementName); - QDomElement testsElement = document.createElement("sections"); + QDomElement testsElement = _document.createElement("sections"); sectionElement.appendChild(processDirectory(nextDirectory, user, branch, testsElement)); result.appendChild(sectionElement); } else if (objectName == "test.js" || objectName == "testStory.js") { - QDomElement sectionElement = document.createElement("section"); - QDomElement sectionElementName = document.createElement("name"); - sectionElementName.appendChild(document.createTextNode("all")); + QDomElement sectionElement = _document.createElement("section"); + QDomElement sectionElementName = _document.createElement("name"); + sectionElementName.appendChild(_document.createTextNode("all")); sectionElement.appendChild(sectionElementName); - sectionElement.appendChild(processTest(nextDirectory, objectName, user, branch, document.createElement("cases"))); + sectionElement.appendChild(processTest(nextDirectory, objectName, user, branch, _document.createElement("cases"))); result.appendChild(sectionElement); } } @@ -221,9 +259,9 @@ QDomElement TestRailInterface::processDirectory(const QString& directory, const QDomElement TestRailInterface::processTest(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element) { QDomElement result = element; - QDomElement caseElement = document.createElement("case"); + QDomElement caseElement = _document.createElement("case"); - caseElement.appendChild(document.createElement("id")); + caseElement.appendChild(_document.createElement("id")); // The name of the test is derived from the full path. // The first term is the first word after "tests" @@ -244,83 +282,83 @@ QDomElement TestRailInterface::processTest(const QString& fullDirectory, const Q title += " / " + words[i]; } - QDomElement titleElement = document.createElement("title"); - titleElement.appendChild(document.createTextNode(title)); + QDomElement titleElement = _document.createElement("title"); + titleElement.appendChild(_document.createTextNode(title)); caseElement.appendChild(titleElement); - QDomElement templateElement = document.createElement("template"); - templateElement.appendChild(document.createTextNode("Test Case (Steps)")); + QDomElement templateElement = _document.createElement("template"); + templateElement.appendChild(_document.createTextNode("Test Case (Steps)")); caseElement.appendChild(templateElement); - QDomElement typeElement = document.createElement("type"); - typeElement.appendChild(document.createTextNode("3 - Regression")); + QDomElement typeElement = _document.createElement("type"); + typeElement.appendChild(_document.createTextNode("3 - Regression")); caseElement.appendChild(typeElement); - QDomElement priorityElement = document.createElement("priority"); - priorityElement.appendChild(document.createTextNode("Medium")); + QDomElement priorityElement = _document.createElement("priority"); + priorityElement.appendChild(_document.createTextNode("Medium")); caseElement.appendChild(priorityElement); - QDomElement estimateElementName = document.createElement("estimate"); - estimateElementName.appendChild(document.createTextNode("60")); + QDomElement estimateElementName = _document.createElement("estimate"); + estimateElementName.appendChild(_document.createTextNode("60")); caseElement.appendChild(estimateElementName); - caseElement.appendChild(document.createElement("references")); + caseElement.appendChild(_document.createElement("references")); - QDomElement customElement = document.createElement("custom"); + QDomElement customElement = _document.createElement("custom"); - QDomElement tester_countElement = document.createElement("tester_count"); - tester_countElement.appendChild(document.createTextNode("1")); + QDomElement tester_countElement = _document.createElement("tester_count"); + tester_countElement.appendChild(_document.createTextNode("1")); customElement.appendChild(tester_countElement); - QDomElement domain_bot_loadElement = document.createElement("domain_bot_load"); - QDomElement domain_bot_loadElementId = document.createElement("id"); - domain_bot_loadElementId.appendChild(document.createTextNode("1")); + QDomElement domain_bot_loadElement = _document.createElement("domain_bot_load"); + QDomElement domain_bot_loadElementId = _document.createElement("id"); + domain_bot_loadElementId.appendChild(_document.createTextNode("1")); domain_bot_loadElement.appendChild(domain_bot_loadElementId); - QDomElement domain_bot_loadElementValue = document.createElement("value"); - domain_bot_loadElementValue.appendChild(document.createTextNode(" Without Bots (hifiqa-rc / hifi-qa-stable / hifiqa-master)")); + QDomElement domain_bot_loadElementValue = _document.createElement("value"); + domain_bot_loadElementValue.appendChild(_document.createTextNode(" Without Bots (hifiqa-rc / hifi-qa-stable / hifiqa-master)")); domain_bot_loadElement.appendChild(domain_bot_loadElementValue); customElement.appendChild(domain_bot_loadElement); - QDomElement automation_typeElement = document.createElement("automation_type"); - QDomElement automation_typeElementId = document.createElement("id"); - automation_typeElementId.appendChild(document.createTextNode("0")); + QDomElement automation_typeElement = _document.createElement("automation_type"); + QDomElement automation_typeElementId = _document.createElement("id"); + automation_typeElementId.appendChild(_document.createTextNode("0")); automation_typeElement.appendChild(automation_typeElementId); - QDomElement automation_typeElementValue = document.createElement("value"); - automation_typeElementValue.appendChild(document.createTextNode("None")); + QDomElement automation_typeElementValue = _document.createElement("value"); + automation_typeElementValue.appendChild(_document.createTextNode("None")); automation_typeElement.appendChild(automation_typeElementValue); customElement.appendChild(automation_typeElement); - QDomElement added_to_releaseElement = document.createElement("added_to_release"); - QDomElement added_to_releaseElementId = document.createElement("id"); - added_to_releaseElementId.appendChild(document.createTextNode("4")); + QDomElement added_to_releaseElement = _document.createElement("added_to_release"); + QDomElement added_to_releaseElementId = _document.createElement("id"); + added_to_releaseElementId.appendChild(_document.createTextNode("4")); added_to_releaseElement.appendChild(added_to_releaseElementId); - QDomElement added_to_releaseElementValue = document.createElement("value"); - added_to_releaseElementValue.appendChild(document.createTextNode(branch)); + QDomElement added_to_releaseElementValue = _document.createElement("value"); + added_to_releaseElementValue.appendChild(_document.createTextNode(branch)); added_to_releaseElement.appendChild(added_to_releaseElementValue); customElement.appendChild(added_to_releaseElement); - QDomElement precondsElement = document.createElement("preconds"); - precondsElement.appendChild(document.createTextNode("Tester is in an empty region of a domain in which they have edit rights\n\n*Note: Press 'n' to advance test script")); + QDomElement precondsElement = _document.createElement("preconds"); + precondsElement.appendChild(_document.createTextNode("Tester is in an empty region of a domain in which they have edit rights\n\n*Note: Press 'n' to advance test script")); customElement.appendChild(precondsElement); QString testMDName = QString("https://github.com/") + user + "/hifi_tests/blob/" + branch + "/tests/content/entity/light/point/create/test.md"; - QDomElement steps_seperatedElement = document.createElement("steps_separated"); - QDomElement stepElement = document.createElement("step"); - QDomElement stepIndexElement = document.createElement("index"); - stepIndexElement.appendChild(document.createTextNode("1")); + QDomElement steps_seperatedElement = _document.createElement("steps_separated"); + QDomElement stepElement = _document.createElement("step"); + QDomElement stepIndexElement = _document.createElement("index"); + stepIndexElement.appendChild(_document.createTextNode("1")); stepElement.appendChild(stepIndexElement); - QDomElement stepContentElement = document.createElement("content"); - stepContentElement.appendChild(document.createTextNode(QString("Execute instructions in [THIS TEST](") + testMDName + ")")); + QDomElement stepContentElement = _document.createElement("content"); + stepContentElement.appendChild(_document.createTextNode(QString("Execute instructions in [THIS TEST](") + testMDName + ")")); stepElement.appendChild(stepContentElement); - QDomElement stepExpectedElement = document.createElement("expected"); - stepExpectedElement.appendChild(document.createTextNode("Refer to the expected result in the linked description.")); + QDomElement stepExpectedElement = _document.createElement("expected"); + stepExpectedElement.appendChild(_document.createTextNode("Refer to the expected result in the linked description.")); stepElement.appendChild(stepExpectedElement); steps_seperatedElement.appendChild(stepElement); customElement.appendChild(steps_seperatedElement); - QDomElement notesElement = document.createElement("notes"); - notesElement.appendChild(document.createTextNode(testMDName)); + QDomElement notesElement = _document.createElement("notes"); + notesElement.appendChild(_document.createTextNode(testMDName)); customElement.appendChild(notesElement); caseElement.appendChild(customElement); diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index eb562fa7c9..6c98ddf430 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -11,12 +11,15 @@ #ifndef hifi_test_testrail_interface_h #define hifi_test_testrail_interface_h +#include "ui/TestRailSelectorWindow.h" #include #include #include class TestRailInterface { public: + TestRailInterface(); + void createTestSuiteXML(const QString& testDirectory, const QString& outputDirectory, const QString& user, @@ -36,9 +39,16 @@ public: void createTestRailDotPyScript(const QString& outputDirectory); void requestDataFromUser(); + void createAddSectionsPythonScript(const QString& outputDirectory); private: - QDomDocument document; + QDomDocument _document; + + TestRailSelectorWindow _testRailSelectorWindow; + + QString _url; + QString _user; + QString _password; }; #endif \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailSelector.ui b/tools/auto-tester/src/ui/TestRailSelector.ui deleted file mode 100644 index 695b374a50..0000000000 --- a/tools/auto-tester/src/ui/TestRailSelector.ui +++ /dev/null @@ -1,147 +0,0 @@ - - - AutoTesterClass - - - - 0 - 0 - 314 - 259 - - - - AutoTester - - - - - - 20 - 130 - 101 - 40 - - - - OK - - - - - - 20 - 65 - 81 - 16 - - - - - 10 - - - - TestRail Branch - - - - - - 20 - 25 - 81 - 16 - - - - - 10 - - - - TestRail User - - - - - - 110 - 22 - 140 - 24 - - - - - - - 110 - 60 - 140 - 24 - - - - - - - 170 - 130 - 101 - 40 - - - - Cancel - - - - - - - 0 - 0 - 314 - 21 - - - - - File - - - - - - Help - - - - - - - - - TopToolBarArea - - - false - - - - - - Close - - - - - About - - - - - - - diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp new file mode 100644 index 0000000000..ff3cf05ed4 --- /dev/null +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp @@ -0,0 +1,52 @@ +// +// TestRailSelectorWindow.cpp +// +// Created by Nissim Hadar on 26 Jul 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include "TestRailSelectorWindow.h" + +#include + +#include + +TestRailSelectorWindow::TestRailSelectorWindow(QWidget *parent) { + setupUi(this); +} + +void TestRailSelectorWindow::on_OKButton_clicked() { + userCancelled = false; + close(); +} + +void TestRailSelectorWindow::on_cancelButton_clicked() { + userCancelled = true; + close(); +} + +bool TestRailSelectorWindow::getUserCancelled() { + return userCancelled; +} + +void TestRailSelectorWindow::setURL(const QString& user) { + URLTextEdit->setText(user); +} + +QString TestRailSelectorWindow::getURL() { + return URLTextEdit->toPlainText(); +} + +void TestRailSelectorWindow::setUser(const QString& user) { + UserTextEdit->setText(user); +} + +QString TestRailSelectorWindow::getUser() { + return UserTextEdit->toPlainText(); +} + +QString TestRailSelectorWindow::getPassword() { + return passwordLineEdit->text(); +} \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.h b/tools/auto-tester/src/ui/TestRailSelectorWindow.h new file mode 100644 index 0000000000..587e3401b8 --- /dev/null +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.h @@ -0,0 +1,38 @@ +// +// TestRailSelectorWindow.h +// +// Created by Nissim Hadar on 26 Jul 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#ifndef hifi_TestRailSelectorWindow_h +#define hifi_TestRailSelectorWindow_h + +#include "ui_TestRailSelectorWindow.h" + +class TestRailSelectorWindow : public QDialog, public Ui::TestRailSelectorWindow { + Q_OBJECT + +public: + TestRailSelectorWindow(QWidget* parent = Q_NULLPTR); + + bool getUserCancelled(); + + void setURL(const QString& user); + QString getURL(); + + void setUser(const QString& user); + QString getUser(); + + QString getPassword(); + + bool userCancelled{ false }; + +private slots: + void on_OKButton_clicked(); + void on_cancelButton_clicked(); +}; + +#endif \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailSelectorWindow.ui new file mode 100644 index 0000000000..e05e2b6370 --- /dev/null +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.ui @@ -0,0 +1,151 @@ + + + TestRailSelectorWindow + + + + 0 + 0 + 489 + 312 + + + + MismatchWindow + + + + + 30 + 850 + 500 + 28 + + + + + 12 + + + + similarity + + + + + + 70 + 115 + 121 + 20 + + + + + 10 + + + + TestRail Password + + + + + + 70 + 25 + 121 + 20 + + + + + 10 + + + + TestRail URL + + + + + + 200 + 25 + 231 + 24 + + + + + + + 120 + 200 + 93 + 28 + + + + OK + + + + + + 280 + 200 + 93 + 28 + + + + Cancel + + + + + + 200 + 115 + 231 + 24 + + + + QLineEdit::Password + + + + + + 200 + 70 + 231 + 24 + + + + + + + 70 + 70 + 121 + 20 + + + + + 10 + + + + TestRail User + + + + + + + From 99ba550af5eb7b37e66c487df88c28242137e347 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Thu, 26 Jul 2018 15:00:02 -0700 Subject: [PATCH 048/332] WIP --- tools/auto-tester/src/TestRailInterface.cpp | 6 ++- .../src/ui/TestRailSelectorWindow.cpp | 16 ++++++-- .../src/ui/TestRailSelectorWindow.h | 3 ++ .../src/ui/TestRailSelectorWindow.ui | 37 +++++++++++++++++-- 4 files changed, 55 insertions(+), 7 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 7077b02aac..948da59947 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -160,6 +160,10 @@ void TestRailInterface::createAddSectionsPythonScript(const QString& outputDirec stream << "client.user = \'" << _user << "\'\n"; stream << "client.password = \'" << _password << "\'\n\n"; + // top-level section + stream << "data = { \'name\': \'" + << "Test Suite - " << QDateTime::currentDateTime().toString("yyyy-MM-ddTHH:mm") << "\'}\n"; + file.close(); } @@ -188,7 +192,7 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, QDomElement topLevelSection = _document.createElement("section"); QDomElement suiteName = _document.createElement("name"); - suiteName.appendChild(_document.createTextNode("Test Suite - " + QDateTime::currentDateTime().toString())); + suiteName.appendChild(_document.createTextNode("Test Suite - " + QDateTime::currentDateTime().toString("yyyy-MM-ddTHH:mm"))); topLevelSection.appendChild(suiteName); QDomElement secondLevelSections = _document.createElement("sections"); diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp index ff3cf05ed4..b7232837c8 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp @@ -15,6 +15,8 @@ TestRailSelectorWindow::TestRailSelectorWindow(QWidget *parent) { setupUi(this); + + projectLineEdit->setValidator(new QIntValidator(1, 999, this)); } void TestRailSelectorWindow::on_OKButton_clicked() { @@ -40,13 +42,21 @@ QString TestRailSelectorWindow::getURL() { } void TestRailSelectorWindow::setUser(const QString& user) { - UserTextEdit->setText(user); + userTextEdit->setText(user); } QString TestRailSelectorWindow::getUser() { - return UserTextEdit->toPlainText(); + return userTextEdit->toPlainText(); } QString TestRailSelectorWindow::getPassword() { return passwordLineEdit->text(); -} \ No newline at end of file +} + +void TestRailSelectorWindow::setProject(const int project) { + projectLineEdit->setText(QString::number(project)); +} + +int TestRailSelectorWindow::getProject() { + return projectLineEdit->getText().toInt(); +} diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.h b/tools/auto-tester/src/ui/TestRailSelectorWindow.h index 587e3401b8..821102b6bc 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.h +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.h @@ -28,6 +28,9 @@ public: QString getPassword(); + void setProject(const int project); + int getProject(); + bool userCancelled{ false }; private slots: diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailSelectorWindow.ui index e05e2b6370..dfc477deb0 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.ui +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.ui @@ -81,7 +81,7 @@ 120 - 200 + 240 93 28 @@ -94,7 +94,7 @@ 280 - 200 + 240 93 28 @@ -116,7 +116,7 @@ QLineEdit::Password - + 200 @@ -144,6 +144,37 @@ TestRail User + + + + 200 + 160 + 231 + 24 + + + + QLineEdit::Normal + + + + + + 70 + 160 + 121 + 20 + + + + + 10 + + + + TestRail Project + + From 91c04bb6391b713652ae387e7808ff3fae9a0205 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Thu, 26 Jul 2018 17:21:43 -0700 Subject: [PATCH 049/332] Working on creating sections in TestRail. --- tools/auto-tester/src/TestRailInterface.cpp | 3 +++ tools/auto-tester/src/ui/TestRailSelectorWindow.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 948da59947..d81077c0dc 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -23,6 +23,9 @@ TestRailInterface::TestRailInterface() { _testRailSelectorWindow.setURL("https://highfidelity.testrail.net/"); _testRailSelectorWindow.setUser("@highfidelity.io"); + + // 24 is the HighFidelity Interface project id in TestRail + _testRailSelectorWindow.setProject(24); } void TestRailInterface::createTestRailDotPyScript(const QString& outputDirectory) { diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp index b7232837c8..b2555ae4ad 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp @@ -58,5 +58,5 @@ void TestRailSelectorWindow::setProject(const int project) { } int TestRailSelectorWindow::getProject() { - return projectLineEdit->getText().toInt(); + return projectLineEdit->text().toInt(); } From d38f0b0fde6e2c45cb4707eb44af7cae870baded Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Fri, 27 Jul 2018 12:26:04 +0300 Subject: [PATCH 050/332] use updated 'Last Legends: Male' from Mukul --- .../avatar/bookmarks/avatarbookmarks.json | 514 ++++++++++-------- 1 file changed, 299 insertions(+), 215 deletions(-) diff --git a/interface/resources/avatar/bookmarks/avatarbookmarks.json b/interface/resources/avatar/bookmarks/avatarbookmarks.json index 2ef59d53a3..9976036f8e 100644 --- a/interface/resources/avatar/bookmarks/avatarbookmarks.json +++ b/interface/resources/avatar/bookmarks/avatarbookmarks.json @@ -380,15 +380,21 @@ { "properties": { "acceleration": { + "blue": 0, + "green": 0, + "red": 0, "x": 0, "y": 0, "z": 0 }, "actionData": "", - "age": 14.011327743530273, - "ageAsText": "0 hours 0 minutes 14 seconds", + "age": 321.8835144042969, + "ageAsText": "0 hours 5 minutes 21 seconds", "angularDamping": 0.39346998929977417, "angularVelocity": { + "blue": 0, + "green": 0, + "red": 0, "x": 0, "y": 0, "z": 0 @@ -406,24 +412,36 @@ }, "boundingBox": { "brn": { - "x": -0.20154684782028198, - "y": 0.03644842654466629, - "z": -0.2641940414905548 + "blue": -0.03950843587517738, + "green": 0.20785385370254517, + "red": -0.04381325840950012, + "x": -0.04381325840950012, + "y": 0.20785385370254517, + "z": -0.03950843587517738 }, "center": { - "x": -0.030000001192092896, - "y": 0.12999820709228516, - "z": -0.07000023126602173 + "blue": 0, + "green": 0.23000000417232513, + "red": 0, + "x": 0, + "y": 0.23000000417232513, + "z": 0 }, "dimensions": { - "x": 0.3430936932563782, - "y": 0.18709957599639893, - "z": 0.38838762044906616 + "blue": 0.07901687175035477, + "green": 0.044292300939559937, + "red": 0.08762651681900024, + "x": 0.08762651681900024, + "y": 0.044292300939559937, + "z": 0.07901687175035477 }, "tfl": { - "x": 0.1415468454360962, - "y": 0.22354799509048462, - "z": 0.12419357895851135 + "blue": 0.03950843587517738, + "green": 0.2521461546421051, + "red": 0.04381325840950012, + "x": 0.04381325840950012, + "y": 0.2521461546421051, + "z": 0.03950843587517738 } }, "canCastShadow": true, @@ -441,189 +459,14 @@ "collisionless": false, "collisionsWillMove": false, "compoundShapeURL": "", - "created": "2018-06-06T17:25:42Z", - "damping": 0.39346998929977417, - "density": 1000, - "description": "", - "dimensions": { - "x": 0.33466479182243347, - "y": 0.16981728374958038, - "z": 0.38838762044906616 - }, - "dynamic": false, - "editionNumber": 19, - "entityInstanceNumber": 0, - "friction": 0.5, - "gravity": { - "x": 0, - "y": 0, - "z": 0 - }, - "href": "", - "id": "{6b0a2b08-e8e3-4d43-95cc-dfc4f7a4b0c9}", - "ignoreForCollisions": false, - "itemArtist": "jyoum", - "itemCategories": "Wearables", - "itemDescription": "A stylish and classic piece of headwear for your avatar.", - "itemLicense": "", - "itemName": "Fedora", - "jointRotations": [ - ], - "jointRotationsSet": [ - ], - "jointTranslations": [ - ], - "jointTranslationsSet": [ - ], - "lastEdited": 1528306032827319, - "lastEditedBy": "{4c770def-4abb-40c6-91a1-88da5247b2db}", - "lifetime": -1, - "limitedRun": 4294967295, - "localPosition": { - "x": -0.030000008642673492, - "y": 0.12999820709228516, - "z": -0.07000023126602173 - }, - "localRotation": { - "w": 0.9996573328971863, - "x": 0, - "y": 0, - "z": 0.026176949962973595 - }, - "locked": false, - "marketplaceID": "11c4208d-15d7-4449-9758-a08da6dbd3dc", - "modelURL": "http://mpassets.highfidelity.com/11c4208d-15d7-4449-9758-a08da6dbd3dc-v1/Fedora.fbx", - "name": "", - "naturalDimensions": { - "x": 0.2765824794769287, - "y": 0.14034485816955566, - "z": 0.320981502532959 - }, - "naturalPosition": { - "x": 0.000143393874168396, - "y": 1.7460365295410156, - "z": 0.022502630949020386 - }, - "originalTextures": "{\n \"file5\": \"http://mpassets.highfidelity.com/11c4208d-15d7-4449-9758-a08da6dbd3dc-v1/Fedora.fbx/Texture/Fedora_Hat1_Base_Color.png\",\n \"file7\": \"http://mpassets.highfidelity.com/11c4208d-15d7-4449-9758-a08da6dbd3dc-v1/Fedora.fbx/Texture/Fedora_Hat1_Roughness.png\"\n}\n", - "owningAvatarID": "{4c770def-4abb-40c6-91a1-88da5247b2db}", - "parentID": "{4c770def-4abb-40c6-91a1-88da5247b2db}", - "parentJointIndex": 64, - "position": { - "x": -0.030000008642673492, - "y": 0.12999820709228516, - "z": -0.07000023126602173 - }, - "queryAACube": { - "scale": 1.6202316284179688, - "x": -0.5601736903190613, - "y": -10.668098449707031, - "z": -0.8933582305908203 - }, - "registrationPoint": { - "x": 0.5, - "y": 0.5, - "z": 0.5 - }, - "relayParentJoints": false, - "renderInfo": { - "drawCalls": 1, - "hasTransparent": false, - "texturesCount": 2, - "texturesSize": 327680, - "verticesCount": 719 - }, - "restitution": 0.5, - "rotation": { - "w": 0.9996573328971863, - "x": 0, - "y": 0, - "z": 0.026176949962973595 - }, - "script": "", - "scriptTimestamp": 0, - "serverScripts": "", - "shapeType": "box", - "staticCertificateVersion": 0, - "textures": "", - "type": "Model", - "userData": "{\"Attachment\":{\"action\":\"attach\",\"joint\":\"HeadTop_End\",\"attached\":false,\"options\":{\"translation\":{\"x\":0,\"y\":0,\"z\":0},\"scale\":1}},\"grabbableKey\":{\"cloneable\":false,\"grabbable\":true}}", - "velocity": { - "x": 0, - "y": 0, - "z": 0 - }, - "visible": true - } - }, - { - "properties": { - "acceleration": { - "x": 0, - "y": 0, - "z": 0 - }, - "actionData": "", - "age": 14.011027336120605, - "ageAsText": "0 hours 0 minutes 14 seconds", - "angularDamping": 0.39346998929977417, - "angularVelocity": { - "x": 0, - "y": 0, - "z": 0 - }, - "animation": { - "allowTranslation": true, - "currentFrame": 0, - "firstFrame": 0, - "fps": 30, - "hold": false, - "lastFrame": 100000, - "loop": true, - "running": false, - "url": "" - }, - "boundingBox": { - "brn": { - "x": -0.04381517320871353, - "y": 0.20789726078510284, - "z": -0.0394962802529335 - }, - "center": { - "x": -1.9073486328125e-06, - "y": 0.2300434112548828, - "z": 1.2159347534179688e-05 - }, - "dimensions": { - "x": 0.08762653172016144, - "y": 0.04429228603839874, - "z": 0.07901687920093536 - }, - "tfl": { - "x": 0.043811358511447906, - "y": 0.2521895468235016, - "z": 0.03952059894800186 - } - }, - "canCastShadow": true, - "certificateID": "", - "clientOnly": true, - "cloneAvatarEntity": false, - "cloneDynamic": false, - "cloneLifetime": 300, - "cloneLimit": 0, - "cloneOriginID": "{00000000-0000-0000-0000-000000000000}", - "cloneable": false, - "collidesWith": "", - "collisionMask": 0, - "collisionSoundURL": "", - "collisionless": false, - "collisionsWillMove": false, - "compoundShapeURL": "", - "created": "2018-06-06T17:25:42Z", + "created": "2018-07-26T23:56:46Z", "damping": 0.39346998929977417, "density": 1000, "description": "", "dimensions": { + "blue": 0.07229919731616974, + "green": 0.06644226610660553, + "red": 0.03022606298327446, "x": 0.03022606298327446, "y": 0.06644226610660553, "z": 0.07229919731616974 @@ -633,12 +476,15 @@ "entityInstanceNumber": 0, "friction": 0.5, "gravity": { + "blue": 0, + "green": 0, + "red": 0, "x": 0, "y": 0, "z": 0 }, "href": "", - "id": "{d018c6ea-b2f4-441e-85e1-d17373ae6f34}", + "id": "{03053239-bb37-4c51-a013-a1772baaeed5}", "ignoreForCollisions": false, "itemArtist": "jyoum", "itemCategories": "Wearables", @@ -653,51 +499,66 @@ ], "jointTranslationsSet": [ ], - "lastEdited": 1528306032505220, - "lastEditedBy": "{b46f9c9e-4cd3-4964-96d6-cf3954abb908}", + "lastEdited": 1532649569894305, + "lastEditedBy": "{042ac463-7879-40f0-8126-e2e56c4345ca}", "lifetime": -1, "limitedRun": 4294967295, "localPosition": { - "x": -1.9073486328125e-06, - "y": 0.2300434112548828, - "z": 1.2159347534179688e-05 + "blue": 0, + "green": 0.23000000417232513, + "red": 0, + "x": 0, + "y": 0.23000000417232513, + "z": 0 }, "localRotation": { - "w": 0.5910987257957458, - "x": -0.48726412653923035, - "y": -0.4088631868362427, - "z": 0.49599069356918335 + "w": 0.5910986065864563, + "x": -0.48726415634155273, + "y": -0.4088630974292755, + "z": 0.49599072337150574 }, "locked": false, "marketplaceID": "0685794d-fddb-4bad-a608-6d7789ceda90", "modelURL": "http://mpassets.highfidelity.com/0685794d-fddb-4bad-a608-6d7789ceda90-v1/ScifiWatch.fbx", "name": "Scifi Watch by Jimi", "naturalDimensions": { + "blue": 0.055614765733480453, + "green": 0.0511094331741333, + "red": 0.023250818252563477, "x": 0.023250818252563477, "y": 0.0511094331741333, "z": 0.055614765733480453 }, "naturalPosition": { + "blue": -0.06031447649002075, + "green": 1.4500460624694824, + "red": 0.6493338942527771, "x": 0.6493338942527771, "y": 1.4500460624694824, "z": -0.06031447649002075 }, "originalTextures": "{\n \"file4\": \"http://mpassets.highfidelity.com/0685794d-fddb-4bad-a608-6d7789ceda90-v1/ScifiWatch.fbx/ScifiWatch/texture/lambert1_Base_Color.png\",\n \"file5\": \"http://mpassets.highfidelity.com/0685794d-fddb-4bad-a608-6d7789ceda90-v1/ScifiWatch.fbx/ScifiWatch/texture/lambert1_Normal_OpenGL.png\",\n \"file6\": \"http://mpassets.highfidelity.com/0685794d-fddb-4bad-a608-6d7789ceda90-v1/ScifiWatch.fbx/ScifiWatch/texture/lambert1_Metallic.png\",\n \"file7\": \"http://mpassets.highfidelity.com/0685794d-fddb-4bad-a608-6d7789ceda90-v1/ScifiWatch.fbx/ScifiWatch/texture/lambert1_Roughness.png\",\n \"file8\": \"http://mpassets.highfidelity.com/0685794d-fddb-4bad-a608-6d7789ceda90-v1/ScifiWatch.fbx/ScifiWatch/texture/lambert1_Emissive.png\"\n}\n", - "owningAvatarID": "{4c770def-4abb-40c6-91a1-88da5247b2db}", - "parentID": "{4c770def-4abb-40c6-91a1-88da5247b2db}", + "owningAvatarID": "{042ac463-7879-40f0-8126-e2e56c4345ca}", + "parentID": "{042ac463-7879-40f0-8126-e2e56c4345ca}", "parentJointIndex": 16, "position": { - "x": -1.9073486328125e-06, - "y": 0.2300434112548828, - "z": 1.2159347534179688e-05 + "blue": 0, + "green": 0.23000000417232513, + "red": 0, + "x": 0, + "y": 0.23000000417232513, + "z": 0 }, "queryAACube": { "scale": 0.3082179129123688, - "x": -0.19203892350196838, - "y": -10.429610252380371, - "z": -0.4076632857322693 + "x": 495.7716979980469, + "y": 498.345703125, + "z": 498.52044677734375 }, "registrationPoint": { + "blue": 0.5, + "green": 0.5, + "red": 0.5, "x": 0.5, "y": 0.5, "z": 0.5 @@ -712,10 +573,10 @@ }, "restitution": 0.5, "rotation": { - "w": 0.5910987257957458, - "x": -0.48726412653923035, - "y": -0.4088631868362427, - "z": 0.49599069356918335 + "w": 0.5910986065864563, + "x": -0.48726415634155273, + "y": -0.4088630974292755, + "z": 0.49599072337150574 }, "script": "", "scriptTimestamp": 0, @@ -726,6 +587,229 @@ "type": "Model", "userData": "{\"Attachment\":{\"action\":\"attach\",\"joint\":\"[LR]ForeArm\",\"attached\":false,\"options\":{\"translation\":{\"x\":0,\"y\":0,\"z\":0},\"scale\":1}},\"grabbableKey\":{\"cloneable\":false,\"grabbable\":true}}", "velocity": { + "blue": 0, + "green": 0, + "red": 0, + "x": 0, + "y": 0, + "z": 0 + }, + "visible": true + } + }, + { + "properties": { + "acceleration": { + "blue": 0, + "green": 0, + "red": 0, + "x": 0, + "y": 0, + "z": 0 + }, + "actionData": "", + "age": 308.8044128417969, + "ageAsText": "0 hours 5 minutes 8 seconds", + "angularDamping": 0.39346998929977417, + "angularVelocity": { + "blue": 0, + "green": 0, + "red": 0, + "x": 0, + "y": 0, + "z": 0 + }, + "animation": { + "allowTranslation": true, + "currentFrame": 0, + "firstFrame": 0, + "fps": 30, + "hold": false, + "lastFrame": 100000, + "loop": true, + "running": false, + "url": "" + }, + "boundingBox": { + "brn": { + "blue": -0.2340194433927536, + "green": -0.07067721337080002, + "red": -0.17002610862255096, + "x": -0.17002610862255096, + "y": -0.07067721337080002, + "z": -0.2340194433927536 + }, + "center": { + "blue": -0.039825439453125, + "green": 0.02001953125, + "red": 0.0001678466796875, + "x": 0.0001678466796875, + "y": 0.02001953125, + "z": -0.039825439453125 + }, + "dimensions": { + "blue": 0.3883880078792572, + "green": 0.18139348924160004, + "red": 0.34038791060447693, + "x": 0.34038791060447693, + "y": 0.18139348924160004, + "z": 0.3883880078792572 + }, + "tfl": { + "blue": 0.1543685644865036, + "green": 0.11071627587080002, + "red": 0.17036180198192596, + "x": 0.17036180198192596, + "y": 0.11071627587080002, + "z": 0.1543685644865036 + } + }, + "canCastShadow": true, + "certificateID": "", + "clientOnly": true, + "cloneAvatarEntity": false, + "cloneDynamic": false, + "cloneLifetime": 300, + "cloneLimit": 0, + "cloneOriginID": "{00000000-0000-0000-0000-000000000000}", + "cloneable": false, + "collidesWith": "", + "collisionMask": 0, + "collisionSoundURL": "", + "collisionless": false, + "collisionsWillMove": false, + "compoundShapeURL": "", + "created": "2018-07-26T23:56:46Z", + "damping": 0.39346998929977417, + "density": 1000, + "description": "", + "dimensions": { + "blue": 0.38838762044906616, + "green": 0.16981728374958038, + "red": 0.33466479182243347, + "x": 0.33466479182243347, + "y": 0.16981728374958038, + "z": 0.38838762044906616 + }, + "dynamic": false, + "editionNumber": 18, + "entityInstanceNumber": 0, + "friction": 0.5, + "gravity": { + "blue": 0, + "green": 0, + "red": 0, + "x": 0, + "y": 0, + "z": 0 + }, + "href": "", + "id": "{1bf231ce-3913-4c53-be3c-b1f4094dac51}", + "ignoreForCollisions": false, + "itemArtist": "jyoum", + "itemCategories": "Wearables", + "itemDescription": "A stylish and classic piece of headwear for your avatar.", + "itemLicense": "", + "itemName": "Fedora", + "jointRotations": [ + ], + "jointRotationsSet": [ + ], + "jointTranslations": [ + ], + "jointTranslationsSet": [ + ], + "lastEdited": 1532649698129709, + "lastEditedBy": "{042ac463-7879-40f0-8126-e2e56c4345ca}", + "lifetime": -1, + "limitedRun": 4294967295, + "localPosition": { + "blue": -0.039825439453125, + "green": 0.02001953125, + "red": 0.0001678466796875, + "x": 0.0001678466796875, + "y": 0.02001953125, + "z": -0.039825439453125 + }, + "localRotation": { + "w": 0.9998477101325989, + "x": -9.898545982878204e-09, + "y": 5.670873406415922e-07, + "z": 0.017452405765652657 + }, + "locked": false, + "marketplaceID": "11c4208d-15d7-4449-9758-a08da6dbd3dc", + "modelURL": "http://mpassets.highfidelity.com/11c4208d-15d7-4449-9758-a08da6dbd3dc-v1/Fedora.fbx", + "name": "", + "naturalDimensions": { + "blue": 0.320981502532959, + "green": 0.14034485816955566, + "red": 0.2765824794769287, + "x": 0.2765824794769287, + "y": 0.14034485816955566, + "z": 0.320981502532959 + }, + "naturalPosition": { + "blue": 0.022502630949020386, + "green": 1.7460365295410156, + "red": 0.000143393874168396, + "x": 0.000143393874168396, + "y": 1.7460365295410156, + "z": 0.022502630949020386 + }, + "originalTextures": "{\n \"file5\": \"http://mpassets.highfidelity.com/11c4208d-15d7-4449-9758-a08da6dbd3dc-v1/Fedora.fbx/Texture/Fedora_Hat1_Base_Color.png\",\n \"file7\": \"http://mpassets.highfidelity.com/11c4208d-15d7-4449-9758-a08da6dbd3dc-v1/Fedora.fbx/Texture/Fedora_Hat1_Roughness.png\"\n}\n", + "owningAvatarID": "{042ac463-7879-40f0-8126-e2e56c4345ca}", + "parentID": "{042ac463-7879-40f0-8126-e2e56c4345ca}", + "parentJointIndex": 66, + "position": { + "blue": -0.039825439453125, + "green": 0.02001953125, + "red": 0.0001678466796875, + "x": 0.0001678466796875, + "y": 0.02001953125, + "z": -0.039825439453125 + }, + "queryAACube": { + "scale": 1.6202316284179688, + "x": 495.21051025390625, + "y": 498.5577697753906, + "z": 497.6370849609375 + }, + "registrationPoint": { + "blue": 0.5, + "green": 0.5, + "red": 0.5, + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "relayParentJoints": false, + "renderInfo": { + "drawCalls": 1, + "hasTransparent": false, + "texturesCount": 2, + "texturesSize": 327680, + "verticesCount": 719 + }, + "restitution": 0.5, + "rotation": { + "w": 0.9998477101325989, + "x": -9.898545982878204e-09, + "y": 5.670873406415922e-07, + "z": 0.017452405765652657 + }, + "script": "", + "scriptTimestamp": 0, + "serverScripts": "", + "shapeType": "box", + "staticCertificateVersion": 0, + "textures": "", + "type": "Model", + "userData": "{\"Attachment\":{\"action\":\"attach\",\"joint\":\"HeadTop_End\",\"attached\":false,\"options\":{\"translation\":{\"x\":0,\"y\":0,\"z\":0},\"scale\":1}},\"grabbableKey\":{\"cloneable\":false,\"grabbable\":true}}", + "velocity": { + "blue": 0, + "green": 0, + "red": 0, "x": 0, "y": 0, "z": 0 From b28ce40f09300b015f332379de45ffb9a6bf6544 Mon Sep 17 00:00:00 2001 From: amantley Date: Fri, 27 Jul 2018 08:46:40 -0700 Subject: [PATCH 051/332] adding the anim stack print out feature half way done --- interface/resources/qml/Stats.qml | 8 ++- interface/src/ui/Stats.cpp | 17 +++++-- interface/src/ui/Stats.h | 49 ++++++++++++++++--- libraries/animation/src/AnimBlendLinear.cpp | 4 +- libraries/animation/src/AnimBlendLinear.h | 4 +- .../animation/src/AnimBlendLinearMove.cpp | 5 +- libraries/animation/src/AnimBlendLinearMove.h | 4 +- libraries/animation/src/AnimClip.cpp | 2 +- libraries/animation/src/AnimClip.h | 2 +- libraries/animation/src/AnimDefaultPose.cpp | 2 +- libraries/animation/src/AnimDefaultPose.h | 2 +- .../animation/src/AnimInverseKinematics.cpp | 4 +- .../animation/src/AnimInverseKinematics.h | 4 +- libraries/animation/src/AnimManipulator.cpp | 4 +- libraries/animation/src/AnimManipulator.h | 4 +- libraries/animation/src/AnimNode.cpp | 5 ++ libraries/animation/src/AnimNode.h | 11 ++++- libraries/animation/src/AnimNodeLoader.cpp | 2 +- libraries/animation/src/AnimOverlay.cpp | 2 +- libraries/animation/src/AnimOverlay.h | 2 +- libraries/animation/src/AnimStateMachine.cpp | 12 ++++- libraries/animation/src/AnimStateMachine.h | 6 +-- libraries/animation/src/Rig.cpp | 24 +-------- libraries/animation/src/Rig.h | 3 ++ 24 files changed, 118 insertions(+), 64 deletions(-) diff --git a/interface/resources/qml/Stats.qml b/interface/resources/qml/Stats.qml index f9824b2364..b1d397553c 100644 --- a/interface/resources/qml/Stats.qml +++ b/interface/resources/qml/Stats.qml @@ -174,7 +174,13 @@ Item { text: "Yaw: " + root.yaw.toFixed(1) } StatText { - text: "Animation Name: " + root.animationName + " Weight: " + root.animationWeight.toFixed(1) + text: "Animation1 Name: " + root.animationName1 + " Weight: " + root.animationWeight1.toFixed(1) + } + StatText { + text: "Animation2 Name: " + root.animationName2 + " Weight: " + root.animationWeight2.toFixed(1) + } + StatText { + text: "Animation3 Name: " + root.animationName3 + " Weight: " + root.animationWeight3.toFixed(1) } StatText { visible: root.expanded; diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index 91ca5679a7..c344c93ed2 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -192,10 +192,14 @@ void Stats::updateStats(bool force) { // Third column, avatar stats auto myAvatar = avatarManager->getMyAvatar(); auto rigCopy = myAvatar->getSkeletonModel(); - auto forwardAlpha = 0.2f;//rigCopy->getRig().getFwdAlpha(); + auto forwardAlpha = rigCopy->getRig().getFwdAlpha(); + auto animStack = rigCopy->getRig().getAnimStack(); + for (auto animStackIterator = animStack.begin(); animStackIterator != animStack.end(); ++animStackIterator) { + //animStackIterator->first + } //auto backwardAlpha = rigCopy->getRig().getBwdAlpha(); //auto lateralAlpha = rigCopy->getRig().getLateralAlpha(); - QString animName("anim number 1"); + QString animName(rigCopy->getRig().getAnimation1Name()); glm::vec3 avatarPos = myAvatar->getWorldPosition(); STAT_UPDATE(position, QVector3D(avatarPos.x, avatarPos.y, avatarPos.z)); @@ -352,9 +356,12 @@ void Stats::updateStats(bool force) { auto config = qApp->getRenderEngine()->getConfiguration().get(); STAT_UPDATE(engineFrameTime, (float) config->getCPURunTime()); STAT_UPDATE(avatarSimulationTime, (float)avatarManager->getAvatarSimulationTime()); - STAT_UPDATE(animationWeight, (float)forwardAlpha); - STAT_UPDATE(animationName, (QString)animName); - + STAT_UPDATE(animationWeight1, (float)forwardAlpha); + STAT_UPDATE(animationName1, (QString)animName); + STAT_UPDATE(animationWeight2, (float)forwardAlpha); + STAT_UPDATE(animationName2, (QString)animName); + STAT_UPDATE(animationWeight3, (float)forwardAlpha); + STAT_UPDATE(animationName3, (QString)animName); STAT_UPDATE(gpuBuffers, (int)gpu::Context::getBufferGPUCount()); STAT_UPDATE(gpuBufferMemory, (int)BYTES_TO_MB(gpu::Context::getBufferGPUMemSize())); diff --git a/interface/src/ui/Stats.h b/interface/src/ui/Stats.h index d49090d48d..c908e325b0 100644 --- a/interface/src/ui/Stats.h +++ b/interface/src/ui/Stats.h @@ -135,8 +135,12 @@ private: \ * @property {number} batchFrameTime - Read-only. * @property {number} engineFrameTime - Read-only. * @property {number} avatarSimulationTime - Read-only. - * @property {number} animationWeight - Read-only. - * @property {number} animationName - Read-only. + * @property {number} animationWeight1 - Read-only. + * @property {number} animationName1 - Read-only. + * @property {number} animationWeight2 - Read-only. + * @property {number} animationName2 - Read-only. + * @property {number} animationWeight3 - Read-only. + * @property {number} animationName3 - Read-only. * * * @property {number} x @@ -284,8 +288,12 @@ class Stats : public QQuickItem { STATS_PROPERTY(float, batchFrameTime, 0) STATS_PROPERTY(float, engineFrameTime, 0) STATS_PROPERTY(float, avatarSimulationTime, 0) - STATS_PROPERTY(float, animationWeight, 0) - STATS_PROPERTY(QString, animationName, QString()) + STATS_PROPERTY(float, animationWeight1, 0) + STATS_PROPERTY(QString, animationName1, QString()) + STATS_PROPERTY(float, animationWeight2, 0) + STATS_PROPERTY(QString, animationName2, QString()) + STATS_PROPERTY(float, animationWeight3, 0) + STATS_PROPERTY(QString, animationName3, QString()) public: static Stats* getInstance(); @@ -1008,14 +1016,43 @@ signals: * @function Stats.animationWeightChanged * @returns {Signal} */ - void animationWeightChanged(); + void animationWeight1Changed(); /**jsdoc * Triggered when the value of the animationName property changes. * @function Stats.animationNameChanged * @returns {Signal} */ - void animationNameChanged(); + void animationName1Changed(); + + /**jsdoc + * Triggered when the value of the animationWeight property changes. + * @function Stats.animationWeightChanged + * @returns {Signal} + */ + void animationWeight2Changed(); + + /**jsdoc + * Triggered when the value of the animationName property changes. + * @function Stats.animationNameChanged + * @returns {Signal} + */ + + void animationName2Changed(); + /**jsdoc + * Triggered when the value of the animationWeight property changes. + * @function Stats.animationWeightChanged + * @returns {Signal} + */ + + void animationWeight3Changed(); + + /**jsdoc + * Triggered when the value of the animationName property changes. + * @function Stats.animationNameChanged + * @returns {Signal} + */ + void animationName3Changed(); /**jsdoc * Triggered when the value of the rectifiedTextureCount property changes. diff --git a/libraries/animation/src/AnimBlendLinear.cpp b/libraries/animation/src/AnimBlendLinear.cpp index a83d0160ee..21539aba08 100644 --- a/libraries/animation/src/AnimBlendLinear.cpp +++ b/libraries/animation/src/AnimBlendLinear.cpp @@ -24,7 +24,7 @@ AnimBlendLinear::~AnimBlendLinear() { } -const AnimPoseVec& AnimBlendLinear::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { +const AnimPoseVec& AnimBlendLinear::evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { qCDebug(animation) << "in blend linear ++++++++++++++++" << _alphaVar << ": " << _alpha; _alpha = animVars.lookup(_alphaVar, _alpha); @@ -51,7 +51,7 @@ const AnimPoseVec& AnimBlendLinear::getPosesInternal() const { return _poses; } -void AnimBlendLinear::evaluateAndBlendChildren(const AnimVariantMap& animVars, const AnimContext& context, Triggers& triggersOut, float alpha, +void AnimBlendLinear::evaluateAndBlendChildren(AnimVariantMap& animVars, const AnimContext& context, Triggers& triggersOut, float alpha, size_t prevPoseIndex, size_t nextPoseIndex, float dt) { if (prevPoseIndex == nextPoseIndex) { // this can happen if alpha is on an integer boundary diff --git a/libraries/animation/src/AnimBlendLinear.h b/libraries/animation/src/AnimBlendLinear.h index 0dae6aabdb..63c1990201 100644 --- a/libraries/animation/src/AnimBlendLinear.h +++ b/libraries/animation/src/AnimBlendLinear.h @@ -30,7 +30,7 @@ public: AnimBlendLinear(const QString& id, float alpha); virtual ~AnimBlendLinear() override; - virtual const AnimPoseVec& evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) override; + virtual const AnimPoseVec& evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) override; void setAlphaVar(const QString& alphaVar) { _alphaVar = alphaVar; } @@ -38,7 +38,7 @@ protected: // for AnimDebugDraw rendering virtual const AnimPoseVec& getPosesInternal() const override; - void evaluateAndBlendChildren(const AnimVariantMap& animVars, const AnimContext& context, Triggers& triggersOut, float alpha, + void evaluateAndBlendChildren(AnimVariantMap& animVars, const AnimContext& context, Triggers& triggersOut, float alpha, size_t prevPoseIndex, size_t nextPoseIndex, float dt); AnimPoseVec _poses; diff --git a/libraries/animation/src/AnimBlendLinearMove.cpp b/libraries/animation/src/AnimBlendLinearMove.cpp index a4d211e68a..f9ae7aad76 100644 --- a/libraries/animation/src/AnimBlendLinearMove.cpp +++ b/libraries/animation/src/AnimBlendLinearMove.cpp @@ -46,8 +46,9 @@ static float calculateAlpha(const float speed, const std::vector& charact return alpha; } -const AnimPoseVec& AnimBlendLinearMove::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { +const AnimPoseVec& AnimBlendLinearMove::evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { qCDebug(animation) << "in blend linear move " << _alphaVar << ": " << _alpha; + setMyNum(getMyNum() + 1.0f); assert(_children.size() == _characteristicSpeeds.size()); _desiredSpeed = animVars.lookup(_desiredSpeedVar, _desiredSpeed); @@ -92,7 +93,7 @@ const AnimPoseVec& AnimBlendLinearMove::getPosesInternal() const { return _poses; } -void AnimBlendLinearMove::evaluateAndBlendChildren(const AnimVariantMap& animVars, const AnimContext& context, Triggers& triggersOut, float alpha, +void AnimBlendLinearMove::evaluateAndBlendChildren(AnimVariantMap& animVars, const AnimContext& context, Triggers& triggersOut, float alpha, size_t prevPoseIndex, size_t nextPoseIndex, float prevDeltaTime, float nextDeltaTime) { if (prevPoseIndex == nextPoseIndex) { diff --git a/libraries/animation/src/AnimBlendLinearMove.h b/libraries/animation/src/AnimBlendLinearMove.h index 083858f873..7e6be638d3 100644 --- a/libraries/animation/src/AnimBlendLinearMove.h +++ b/libraries/animation/src/AnimBlendLinearMove.h @@ -39,7 +39,7 @@ public: AnimBlendLinearMove(const QString& id, float alpha, float desiredSpeed, const std::vector& characteristicSpeeds); virtual ~AnimBlendLinearMove() override; - virtual const AnimPoseVec& evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) override; + virtual const AnimPoseVec& evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) override; void setAlphaVar(const QString& alphaVar) { _alphaVar = alphaVar; } void setDesiredSpeedVar(const QString& desiredSpeedVar) { _desiredSpeedVar = desiredSpeedVar; } @@ -48,7 +48,7 @@ protected: // for AnimDebugDraw rendering virtual const AnimPoseVec& getPosesInternal() const override; - void evaluateAndBlendChildren(const AnimVariantMap& animVars, const AnimContext& context, Triggers& triggersOut, float alpha, + void evaluateAndBlendChildren(AnimVariantMap& animVars, const AnimContext& context, Triggers& triggersOut, float alpha, size_t prevPoseIndex, size_t nextPoseIndex, float prevDeltaTime, float nextDeltaTime); diff --git a/libraries/animation/src/AnimClip.cpp b/libraries/animation/src/AnimClip.cpp index 598b32c862..abed4636d9 100644 --- a/libraries/animation/src/AnimClip.cpp +++ b/libraries/animation/src/AnimClip.cpp @@ -30,7 +30,7 @@ AnimClip::~AnimClip() { } -const AnimPoseVec& AnimClip::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { +const AnimPoseVec& AnimClip::evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { qCDebug(animation) << "anim clip is: " << _url; // lookup parameters from animVars, using current instance variables as defaults. _startFrame = animVars.lookup(_startFrameVar, _startFrame); diff --git a/libraries/animation/src/AnimClip.h b/libraries/animation/src/AnimClip.h index 717972ca26..d929ad4663 100644 --- a/libraries/animation/src/AnimClip.h +++ b/libraries/animation/src/AnimClip.h @@ -28,7 +28,7 @@ public: AnimClip(const QString& id, const QString& url, float startFrame, float endFrame, float timeScale, bool loopFlag, bool mirrorFlag); virtual ~AnimClip() override; - virtual const AnimPoseVec& evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) override; + virtual const AnimPoseVec& evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) override; void setStartFrameVar(const QString& startFrameVar) { _startFrameVar = startFrameVar; } void setEndFrameVar(const QString& endFrameVar) { _endFrameVar = endFrameVar; } diff --git a/libraries/animation/src/AnimDefaultPose.cpp b/libraries/animation/src/AnimDefaultPose.cpp index 8647c5a7ac..0cedf4938d 100644 --- a/libraries/animation/src/AnimDefaultPose.cpp +++ b/libraries/animation/src/AnimDefaultPose.cpp @@ -20,7 +20,7 @@ AnimDefaultPose::~AnimDefaultPose() { } -const AnimPoseVec& AnimDefaultPose::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { +const AnimPoseVec& AnimDefaultPose::evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { qCDebug(animation) << "in animation default pose"; if (_skeleton) { _poses = _skeleton->getRelativeDefaultPoses(); diff --git a/libraries/animation/src/AnimDefaultPose.h b/libraries/animation/src/AnimDefaultPose.h index eefefac7af..e9433268d4 100644 --- a/libraries/animation/src/AnimDefaultPose.h +++ b/libraries/animation/src/AnimDefaultPose.h @@ -21,7 +21,7 @@ public: AnimDefaultPose(const QString& id); virtual ~AnimDefaultPose() override; - virtual const AnimPoseVec& evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) override; + virtual const AnimPoseVec& evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) override; protected: // for AnimDebugDraw rendering virtual const AnimPoseVec& getPosesInternal() const override; diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 7bd1e3b445..43b975b829 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -874,7 +874,7 @@ void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, co } //virtual -const AnimPoseVec& AnimInverseKinematics::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimNode::Triggers& triggersOut) { +const AnimPoseVec& AnimInverseKinematics::evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, AnimNode::Triggers& triggersOut) { qCDebug(animation) << "in animation ik node"; // don't call this function, call overlay() instead assert(false); @@ -882,7 +882,7 @@ const AnimPoseVec& AnimInverseKinematics::evaluate(const AnimVariantMap& animVar } //virtual -const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut, const AnimPoseVec& underPoses) { +const AnimPoseVec& AnimInverseKinematics::overlay(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut, const AnimPoseVec& underPoses) { #ifdef Q_OS_ANDROID // disable IK on android return underPoses; diff --git a/libraries/animation/src/AnimInverseKinematics.h b/libraries/animation/src/AnimInverseKinematics.h index ee1f9f43ad..40b1bdc1d0 100644 --- a/libraries/animation/src/AnimInverseKinematics.h +++ b/libraries/animation/src/AnimInverseKinematics.h @@ -52,8 +52,8 @@ public: const QString& typeVar, const QString& weightVar, float weight, const std::vector& flexCoefficients, const QString& poleVectorEnabledVar, const QString& poleReferenceVectorVar, const QString& poleVectorVar); - virtual const AnimPoseVec& evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimNode::Triggers& triggersOut) override; - virtual const AnimPoseVec& overlay(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut, const AnimPoseVec& underPoses) override; + virtual const AnimPoseVec& evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, AnimNode::Triggers& triggersOut) override; + virtual const AnimPoseVec& overlay(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut, const AnimPoseVec& underPoses) override; void clearIKJointLimitHistory(); diff --git a/libraries/animation/src/AnimManipulator.cpp b/libraries/animation/src/AnimManipulator.cpp index f29d5688ee..12afa7ad7d 100644 --- a/libraries/animation/src/AnimManipulator.cpp +++ b/libraries/animation/src/AnimManipulator.cpp @@ -32,12 +32,12 @@ AnimManipulator::~AnimManipulator() { } -const AnimPoseVec& AnimManipulator::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { +const AnimPoseVec& AnimManipulator::evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { qCDebug(animation) << "in anim manipulator node"; return overlay(animVars, context, dt, triggersOut, _skeleton->getRelativeDefaultPoses()); } -const AnimPoseVec& AnimManipulator::overlay(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut, const AnimPoseVec& underPoses) { +const AnimPoseVec& AnimManipulator::overlay(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut, const AnimPoseVec& underPoses) { _alpha = animVars.lookup(_alphaVar, _alpha); _poses = underPoses; diff --git a/libraries/animation/src/AnimManipulator.h b/libraries/animation/src/AnimManipulator.h index 1134f75da9..fd470de70d 100644 --- a/libraries/animation/src/AnimManipulator.h +++ b/libraries/animation/src/AnimManipulator.h @@ -22,8 +22,8 @@ public: AnimManipulator(const QString& id, float alpha); virtual ~AnimManipulator() override; - virtual const AnimPoseVec& evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) override; - virtual const AnimPoseVec& overlay(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut, const AnimPoseVec& underPoses) override; + virtual const AnimPoseVec& evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) override; + virtual const AnimPoseVec& overlay(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut, const AnimPoseVec& underPoses) override; void setAlphaVar(const QString& alphaVar) { _alphaVar = alphaVar; } diff --git a/libraries/animation/src/AnimNode.cpp b/libraries/animation/src/AnimNode.cpp index ba8e095109..63724a950e 100644 --- a/libraries/animation/src/AnimNode.cpp +++ b/libraries/animation/src/AnimNode.cpp @@ -12,6 +12,11 @@ #include +float AnimNode::_myNum = 42.0; +std::map AnimNode::_animStack = { + {"none", 0.0f} +}; + AnimNode::Pointer AnimNode::getParent() { return _parent.lock(); } diff --git a/libraries/animation/src/AnimNode.h b/libraries/animation/src/AnimNode.h index 6d9d35b19b..79b8d39392 100644 --- a/libraries/animation/src/AnimNode.h +++ b/libraries/animation/src/AnimNode.h @@ -74,13 +74,16 @@ public: AnimSkeleton::ConstPointer getSkeleton() const { return _skeleton; } - virtual const AnimPoseVec& evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) = 0; - virtual const AnimPoseVec& overlay(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut, + virtual const AnimPoseVec& evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) = 0; + virtual const AnimPoseVec& overlay(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut, const AnimPoseVec& underPoses) { return evaluate(animVars, context, dt, triggersOut); } void setCurrentFrame(float frame); + const int getMyNum() { return _myNum; } + void setMyNum(float num) { _myNum = num; } + const std::map getAnimStack() { return _animStack; } template bool traverse(F func) { @@ -120,6 +123,10 @@ protected: AnimSkeleton::ConstPointer _skeleton; std::weak_ptr _parent; + //global available to rig + static float _myNum; + static std::map _animStack; + // no copies AnimNode(const AnimNode&) = delete; AnimNode& operator=(const AnimNode&) = delete; diff --git a/libraries/animation/src/AnimNodeLoader.cpp b/libraries/animation/src/AnimNodeLoader.cpp index c39f0f57ae..e29f255ece 100644 --- a/libraries/animation/src/AnimNodeLoader.cpp +++ b/libraries/animation/src/AnimNodeLoader.cpp @@ -585,7 +585,7 @@ bool processStateMachineNode(AnimNode::Pointer node, const QJsonObject& jsonObj, return false; } - AnimStateMachine::InterpType interpTypeEnum = AnimStateMachine::InterpType::SnapshotBoth; // default value + AnimStateMachine::InterpType interpTypeEnum = AnimStateMachine::InterpType::SnapshotPrev; // default value if (!interpType.isEmpty()) { interpTypeEnum = stringToInterpType(interpType); if (interpTypeEnum == AnimStateMachine::InterpType::NumTypes) { diff --git a/libraries/animation/src/AnimOverlay.cpp b/libraries/animation/src/AnimOverlay.cpp index b477449ff9..767824a466 100644 --- a/libraries/animation/src/AnimOverlay.cpp +++ b/libraries/animation/src/AnimOverlay.cpp @@ -41,7 +41,7 @@ void AnimOverlay::buildBoneSet(BoneSet boneSet) { } } -const AnimPoseVec& AnimOverlay::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { +const AnimPoseVec& AnimOverlay::evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { qCDebug(animation) << "in anim overlay node" << _alphaVar << ": " << _alpha; // lookup parameters from animVars, using current instance variables as defaults. // NOTE: switching bonesets can be an expensive operation, let's try to avoid it. diff --git a/libraries/animation/src/AnimOverlay.h b/libraries/animation/src/AnimOverlay.h index 8b6e1529fc..c87e123209 100644 --- a/libraries/animation/src/AnimOverlay.h +++ b/libraries/animation/src/AnimOverlay.h @@ -45,7 +45,7 @@ public: AnimOverlay(const QString& id, BoneSet boneSet, float alpha); virtual ~AnimOverlay() override; - virtual const AnimPoseVec& evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) override; + virtual const AnimPoseVec& evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) override; void setBoneSetVar(const QString& boneSetVar) { _boneSetVar = boneSetVar; } void setAlphaVar(const QString& alphaVar) { _alphaVar = alphaVar; } diff --git a/libraries/animation/src/AnimStateMachine.cpp b/libraries/animation/src/AnimStateMachine.cpp index c7d7471dfa..8a84374274 100644 --- a/libraries/animation/src/AnimStateMachine.cpp +++ b/libraries/animation/src/AnimStateMachine.cpp @@ -21,14 +21,22 @@ AnimStateMachine::~AnimStateMachine() { } -const AnimPoseVec& AnimStateMachine::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { +const AnimPoseVec& AnimStateMachine::evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { qCDebug(animation) << "in anim state machine " << _currentState->getID() << ": " << _alpha; + animVars.set("Animation1", _currentState->getID()); + _animStack[_currentState->getID()] = _alpha; + //setMyNum(getMyNum() + 1.0f); + QString desiredStateID = animVars.lookup(_currentStateVar, _currentState->getID()); if (_currentState->getID() != desiredStateID) { // switch states bool foundState = false; for (auto& state : _states) { if (state->getID() == desiredStateID) { + if (_animStack.count(_currentState->getID()) > 0) { + _animStack.erase(_currentState->getID()); + } + _animStack[desiredStateID] = _alpha; switchState(animVars, context, state); foundState = true; break; @@ -92,7 +100,7 @@ void AnimStateMachine::addState(State::Pointer state) { _states.push_back(state); } -void AnimStateMachine::switchState(const AnimVariantMap& animVars, const AnimContext& context, State::Pointer desiredState) { +void AnimStateMachine::switchState(AnimVariantMap& animVars, const AnimContext& context, State::Pointer desiredState) { const float FRAMES_PER_SECOND = 30.0f; diff --git a/libraries/animation/src/AnimStateMachine.h b/libraries/animation/src/AnimStateMachine.h index 711326a9ae..f25508db9f 100644 --- a/libraries/animation/src/AnimStateMachine.h +++ b/libraries/animation/src/AnimStateMachine.h @@ -113,7 +113,7 @@ public: explicit AnimStateMachine(const QString& id); virtual ~AnimStateMachine() override; - virtual const AnimPoseVec& evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) override; + virtual const AnimPoseVec& evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) override; void setCurrentStateVar(QString& currentStateVar) { _currentStateVar = currentStateVar; } @@ -123,7 +123,7 @@ protected: void addState(State::Pointer state); - void switchState(const AnimVariantMap& animVars, const AnimContext& context, State::Pointer desiredState); + void switchState(AnimVariantMap& animVars, const AnimContext& context, State::Pointer desiredState); State::Pointer evaluateTransitions(const AnimVariantMap& animVars) const; // for AnimDebugDraw rendering @@ -133,7 +133,7 @@ protected: // interpolation state bool _duringInterp = false; - InterpType _interpType { InterpType::SnapshotBoth }; + InterpType _interpType { InterpType::SnapshotPrev }; float _alphaVel = 0.0f; float _alpha = 0.0f; AnimPoseVec _prevPoses; diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 2f962d791b..ee3e4607c1 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -575,28 +575,6 @@ bool Rig::getAbsoluteJointPoseInRigFrame(int jointIndex, AnimPose& returnPose) c } } -void Rig::calcAnimAlpha(float speed, const std::vector& referenceSpeeds, float* alphaOut) const { - - ASSERT(referenceSpeeds.size() > 0); - - // calculate alpha from linear combination of referenceSpeeds. - float alpha = 0.0f; - if (speed <= referenceSpeeds.front()) { - alpha = 0.0f; - } else if (speed > referenceSpeeds.back()) { - alpha = (float)(referenceSpeeds.size() - 1); - } else { - for (size_t i = 0; i < referenceSpeeds.size() - 1; i++) { - if (referenceSpeeds[i] < speed && speed < referenceSpeeds[i + 1]) { - alpha = (float)i + ((speed - referenceSpeeds[i]) / (referenceSpeeds[i + 1] - referenceSpeeds[i])); - break; - } - } - } - - *alphaOut = alpha; -} - void Rig::setEnableInverseKinematics(bool enable) { _enableInverseKinematics = enable; } @@ -1032,6 +1010,8 @@ void Rig::updateAnimations(float deltaTime, const glm::mat4& rootTransform, cons AnimNode::Triggers triggersOut; _internalPoseSet._relativePoses = _animNode->evaluate(_animVars, context, deltaTime, triggersOut); + _fwdAlpha = _animNode->getMyNum(); + _animationName1 = _animVars.lookup("Animation1", _animationName1); if ((int)_internalPoseSet._relativePoses.size() != _animSkeleton->getNumJoints()) { // animations haven't fully loaded yet. _internalPoseSet._relativePoses = _animSkeleton->getRelativeDefaultPoses(); diff --git a/libraries/animation/src/Rig.h b/libraries/animation/src/Rig.h index dc9da2ea98..1f3da840b5 100644 --- a/libraries/animation/src/Rig.h +++ b/libraries/animation/src/Rig.h @@ -221,6 +221,8 @@ public: const float getFwdAlpha() const { return _fwdAlpha; } const float getBwdAlpha() const { return _bwdAlpha; } const float getLateralAlpha() { return _lateralAlpha; } + const QString getAnimation1Name() { return _animationName1; } + const std::map getAnimStack() { return _animNode->getAnimStack(); } signals: void onLoadComplete(); @@ -299,6 +301,7 @@ protected: float _fwdAlpha { 0.0f }; float _bwdAlpha { 0.0f }; float _lateralAlpha { 0.0f }; + QString _animationName1 { "none" }; enum class RigRole { Idle = 0, Turn, From be79fa9e31c509b31233c85825b94724c10a7d96 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Fri, 27 Jul 2018 09:04:37 -0700 Subject: [PATCH 052/332] Added creation of a python stack class --- tools/auto-tester/src/TestRailInterface.cpp | 49 ++++++++++++++++++++- tools/auto-tester/src/TestRailInterface.h | 2 + 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index d81077c0dc..66d42e9ab7 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -28,9 +28,9 @@ TestRailInterface::TestRailInterface() { _testRailSelectorWindow.setProject(24); } +// Creates the testrail.py script +// This is the file linked to from http://docs.gurock.com/testrail-api2/bindings-python void TestRailInterface::createTestRailDotPyScript(const QString& outputDirectory) { - // Create the testrail.py script - // This is the file linked to from http://docs.gurock.com/testrail-api2/bindings-python QFile file(outputDirectory + "/testrail.py"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), @@ -135,6 +135,46 @@ void TestRailInterface::createTestRailDotPyScript(const QString& outputDirectory file.close(); } +// Creates a Stack class +void TestRailInterface::createStackDotPyScript(const QString& outputDirectory) { + QFile file(outputDirectory + "/stack.py"); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not create \'stack.py\'"); + exit(-1); + } + + QTextStream stream(&file); + + stream << "class Stack:\n"; + + stream << "\tdef __init__(self):\n"; + stream << "\t\tself.items = []\n"; + stream << "\n"; + + stream << "\tdef isEmpty(self):\n"; + stream << "\t\treturn self.items == []\n"; + stream << "\n"; + + stream << "\tdef push(self, item):\n"; + stream << "\t\tself.items.append(item)\n"; + stream << "\n"; + + stream << "\tdef pop(self):\n"; + stream << "\t\treturn self.items.pop()\n"; + stream << "\n"; + + stream << "\tdef peek(self):\n"; + stream << "\t\treturn self.items[len(self.items)-1]\n"; + stream << "\n"; + + stream << "\tdef size(self):\n"; + stream << "\t\treturn len(self.items)\n"; + stream << "\n"; + + file.close(); +} + void TestRailInterface::requestDataFromUser() { _testRailSelectorWindow.exec(); @@ -145,6 +185,7 @@ void TestRailInterface::requestDataFromUser() { _url = _testRailSelectorWindow.getURL(); _user = _testRailSelectorWindow.getUser(); _password = _testRailSelectorWindow.getPassword(); + _project = _testRailSelectorWindow.getProject(); } void TestRailInterface::createAddSectionsPythonScript(const QString& outputDirectory) { @@ -163,10 +204,13 @@ void TestRailInterface::createAddSectionsPythonScript(const QString& outputDirec stream << "client.user = \'" << _user << "\'\n"; stream << "client.password = \'" << _password << "\'\n\n"; + // top-level section stream << "data = { \'name\': \'" << "Test Suite - " << QDateTime::currentDateTime().toString("yyyy-MM-ddTHH:mm") << "\'}\n"; + stream << "section = client.send_post(\'add_section/\' + str(" << QString::number(_project) << "), data)"; + file.close(); } @@ -176,6 +220,7 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, const QString& branch) { createTestRailDotPyScript(outputDirectory); + createStackDotPyScript(outputDirectory); requestDataFromUser(); createAddSectionsPythonScript(outputDirectory); } diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 6c98ddf430..171a716a32 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -38,6 +38,7 @@ public: QDomElement processTest(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element); void createTestRailDotPyScript(const QString& outputDirectory); + void createStackDotPyScript(const QString& outputDirectory); void requestDataFromUser(); void createAddSectionsPythonScript(const QString& outputDirectory); @@ -49,6 +50,7 @@ private: QString _url; QString _user; QString _password; + int _project; }; #endif \ No newline at end of file From 7bb6d8dc823ed1516741bc25b61eb4c7bedee72c Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Fri, 27 Jul 2018 12:41:11 -0700 Subject: [PATCH 053/332] Can now create first level of sub-sections. --- tools/auto-tester/src/TestRailInterface.cpp | 85 ++++++++++++++++----- tools/auto-tester/src/TestRailInterface.h | 17 +++-- 2 files changed, 76 insertions(+), 26 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 66d42e9ab7..04977f473e 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -21,11 +21,14 @@ TestRailInterface::TestRailInterface() { _testRailSelectorWindow.setModal(true); - _testRailSelectorWindow.setURL("https://highfidelity.testrail.net/"); - _testRailSelectorWindow.setUser("@highfidelity.io"); + ////_testRailSelectorWindow.setURL("https://highfidelity.testrail.net"); + _testRailSelectorWindow.setURL("https://nissimhadar.testrail.io"); + ////_testRailSelectorWindow.setUser("@highfidelity.io"); + _testRailSelectorWindow.setUser("nissim.hadar@gmail.com"); // 24 is the HighFidelity Interface project id in TestRail - _testRailSelectorWindow.setProject(24); + ////_testRailSelectorWindow.setProject(24); + _testRailSelectorWindow.setProject(1); } // Creates the testrail.py script @@ -152,7 +155,7 @@ void TestRailInterface::createStackDotPyScript(const QString& outputDirectory) { stream << "\t\tself.items = []\n"; stream << "\n"; - stream << "\tdef isEmpty(self):\n"; + stream << "\tdef is_empty(self):\n"; stream << "\t\treturn self.items == []\n"; stream << "\n"; @@ -182,13 +185,54 @@ void TestRailInterface::requestDataFromUser() { return; } - _url = _testRailSelectorWindow.getURL(); + _url = _testRailSelectorWindow.getURL() + "/"; _user = _testRailSelectorWindow.getUser(); - _password = _testRailSelectorWindow.getPassword(); - _project = _testRailSelectorWindow.getProject(); + ////_password = _testRailSelectorWindow.getPassword(); + _password = "tutKA76"; + _project = QString::number(_testRailSelectorWindow.getProject()); } -void TestRailInterface::createAddSectionsPythonScript(const QString& outputDirectory) { +bool TestRailInterface::isAValidTestDirectory(const QString& directory) { + if (Test::isAValidDirectory(directory)) { + // Ignore the utils and preformance directories + if (directory.right(QString("utils").length()) == "utils" || + directory.right(QString("performance").length()) == "performance") { + return false; + } + return true; + } + + return false; +} + +void TestRailInterface::processDirecoryPython(const QString& directory, QTextStream& stream) { + // Loop over all entries in directory + QDirIterator it(directory.toStdString().c_str()); + while (it.hasNext()) { + QString nextDirectory = it.next(); + + // Only process directories + if (!isAValidTestDirectory(nextDirectory)) { + continue; + } + + // The name of the section is the directory at the end of the path + stream << "parent_id = parent_ids.peek()\n"; + QString name = nextDirectory.right(nextDirectory.length() - nextDirectory.lastIndexOf("/") - 1); + stream << "data = { \'name\': \'" << name << "\', \'parent_id\': parent_id }\n"; + + stream << "section = client.send_post(\'add_section/\' + str(" << _project << "), data)\n"; + } +} + + // A suite of TestRail test cases contains trees. +// The nodes of the trees are sections +// The leaves are the test cases +// +// Each node and leaf have an ID and a parent ID. +// Therefore, the tree is built top-down, using a stack to store the IDs of each node +// +void TestRailInterface::createAddSectionsPythonScript(const QString& testDirectory, const QString& outputDirectory) { QFile file(outputDirectory + "/addSections.py"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), @@ -204,12 +248,18 @@ void TestRailInterface::createAddSectionsPythonScript(const QString& outputDirec stream << "client.user = \'" << _user << "\'\n"; stream << "client.password = \'" << _password << "\'\n\n"; + stream << "from stack import *\n"; + stream << "parent_ids = Stack()\n\n"; // top-level section stream << "data = { \'name\': \'" << "Test Suite - " << QDateTime::currentDateTime().toString("yyyy-MM-ddTHH:mm") << "\'}\n"; - stream << "section = client.send_post(\'add_section/\' + str(" << QString::number(_project) << "), data)"; + stream << "section = client.send_post(\'add_section/\' + str(" << _project << "), data)\n"; + stream << "parent_ids.push(section[\'id\'])\n\n"; + + // Now recursively process each directory + processDirecoryPython(testDirectory, stream); file.close(); } @@ -222,7 +272,7 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, createTestRailDotPyScript(outputDirectory); createStackDotPyScript(outputDirectory); requestDataFromUser(); - createAddSectionsPythonScript(outputDirectory); + createAddSectionsPythonScript(testDirectory, outputDirectory); } void TestRailInterface::createTestSuiteXML(const QString& testDirectory, @@ -243,8 +293,9 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, suiteName.appendChild(_document.createTextNode("Test Suite - " + QDateTime::currentDateTime().toString("yyyy-MM-ddTHH:mm"))); topLevelSection.appendChild(suiteName); + // This is the first call to 'process'. This is then called recursively to build the full XML tree QDomElement secondLevelSections = _document.createElement("sections"); - topLevelSection.appendChild(processDirectory(testDirectory, user, branch, secondLevelSections)); + topLevelSection.appendChild(processDirectoryXML(testDirectory, user, branch, secondLevelSections)); topLevelSection.appendChild(secondLevelSections); root.appendChild(topLevelSection); @@ -265,7 +316,7 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, QMessageBox::information(0, "Success", "TestRail XML file has been created"); } -QDomElement TestRailInterface::processDirectory(const QString& directory, const QString& user, const QString& branch, const QDomElement& element) { +QDomElement TestRailInterface::processDirectoryXML(const QString& directory, const QString& user, const QString& branch, const QDomElement& element) { QDomElement result = element; // Loop over all entries in directory @@ -277,14 +328,8 @@ QDomElement TestRailInterface::processDirectory(const QString& directory, const QString objectName = nextDirectory.right(nextDirectory.length() - nextDirectory.lastIndexOf("/") - 1); // Only process directories - if (Test::isAValidDirectory(nextDirectory)) { - // Ignore the utils and preformance directories - if (nextDirectory.right(QString("utils").length()) == "utils" || nextDirectory.right(QString("performance").length()) == "performance") { - continue; - } - + if (isAValidTestDirectory(nextDirectory)) { // Create a section and process it - QDomElement sectionElement = _document.createElement("section"); QDomElement sectionElementName = _document.createElement("name"); @@ -292,7 +337,7 @@ QDomElement TestRailInterface::processDirectory(const QString& directory, const sectionElement.appendChild(sectionElementName); QDomElement testsElement = _document.createElement("sections"); - sectionElement.appendChild(processDirectory(nextDirectory, user, branch, testsElement)); + sectionElement.appendChild(processDirectoryXML(nextDirectory, user, branch, testsElement)); result.appendChild(sectionElement); } else if (objectName == "test.js" || objectName == "testStory.js") { diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 171a716a32..3285281577 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -30,17 +30,22 @@ public: const QString& user, const QString& branch); - QDomElement processDirectory(const QString& directory, - const QString& user, - const QString& branch, - const QDomElement& element); + QDomElement processDirectoryXML(const QString& directory, + const QString& user, + const QString& branch, + const QDomElement& element); QDomElement processTest(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element); void createTestRailDotPyScript(const QString& outputDirectory); void createStackDotPyScript(const QString& outputDirectory); void requestDataFromUser(); - void createAddSectionsPythonScript(const QString& outputDirectory); + void createAddSectionsPythonScript(const QString& testDirectory, const QString& outputDirectory); + + void processDirecoryPython(const QString& directory, QTextStream& stream); + + bool isAValidTestDirectory(const QString& directory); + private: QDomDocument _document; @@ -50,7 +55,7 @@ private: QString _url; QString _user; QString _password; - int _project; + QString _project; }; #endif \ No newline at end of file From 066b1acd9431a60fbf71a072d5fe144d76c94b0a Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Fri, 27 Jul 2018 13:35:31 -0700 Subject: [PATCH 054/332] Can write all the sections (sans tests themselves). --- tools/auto-tester/src/TestRailInterface.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 04977f473e..5a63576733 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -222,7 +222,14 @@ void TestRailInterface::processDirecoryPython(const QString& directory, QTextStr stream << "data = { \'name\': \'" << name << "\', \'parent_id\': parent_id }\n"; stream << "section = client.send_post(\'add_section/\' + str(" << _project << "), data)\n"; + + // Now we push the parent_id, and recursively process each directory + stream << "parent_ids.push(section[\'id\'])\n\n"; + processDirecoryPython(nextDirectory, stream); } + + // pop the parent directory before leaving + stream << "parent_ids.pop()\n\n"; } // A suite of TestRail test cases contains trees. @@ -256,9 +263,9 @@ void TestRailInterface::createAddSectionsPythonScript(const QString& testDirecto << "Test Suite - " << QDateTime::currentDateTime().toString("yyyy-MM-ddTHH:mm") << "\'}\n"; stream << "section = client.send_post(\'add_section/\' + str(" << _project << "), data)\n"; - stream << "parent_ids.push(section[\'id\'])\n\n"; - // Now recursively process each directory + // Now we push the parent_id, and recursively process each directory + stream << "parent_ids.push(section[\'id\'])\n\n"; processDirecoryPython(testDirectory, stream); file.close(); From 35464c4ca4d8a2151dd869d05b0f0609deaf0e54 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Fri, 27 Jul 2018 15:10:06 -0700 Subject: [PATCH 055/332] Can add tests (include only the preconditions) --- tools/auto-tester/src/TestRailInterface.cpp | 101 +++++++++++++------- tools/auto-tester/src/TestRailInterface.h | 12 ++- 2 files changed, 78 insertions(+), 35 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 5a63576733..987ce5a739 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -31,13 +31,17 @@ TestRailInterface::TestRailInterface() { _testRailSelectorWindow.setProject(1); } +QString TestRailInterface::getObject(const QString& path) { + return path.right(path.length() - path.lastIndexOf("/") - 1); +} + // Creates the testrail.py script // This is the file linked to from http://docs.gurock.com/testrail-api2/bindings-python void TestRailInterface::createTestRailDotPyScript(const QString& outputDirectory) { QFile file(outputDirectory + "/testrail.py"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), - "Could not create \'testrail.py\'"); + "Could not create 'testrail.py'"); exit(-1); } @@ -124,10 +128,10 @@ void TestRailInterface::createTestRailDotPyScript(const QString& outputDirectory stream << "\n"; stream << "\t\tif e != None:\n"; stream << "\t\t\tif result and 'error' in result:\n"; - stream << "\t\t\t\terror = \'\"\' + result[\'error\'] + \'\"\'\n"; + stream << "\t\t\t\terror = '\"' + result['error'] + '\"'\n"; stream << "\t\t\telse:\n"; - stream << "\t\t\t\terror = \'No additional error message received\'\n"; - stream << "\t\t\traise APIError(\'TestRail API returned HTTP %s (%s)\' % \n"; + stream << "\t\t\t\terror = 'No additional error message received'\n"; + stream << "\t\t\traise APIError('TestRail API returned HTTP %s (%s)' % \n"; stream << "\t\t\t\t(e.code, error))\n"; stream << "\n"; stream << "\t\treturn result\n"; @@ -143,7 +147,7 @@ void TestRailInterface::createStackDotPyScript(const QString& outputDirectory) { QFile file(outputDirectory + "/stack.py"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), - "Could not create \'stack.py\'"); + "Could not create 'stack.py'"); exit(-1); } @@ -205,27 +209,27 @@ bool TestRailInterface::isAValidTestDirectory(const QString& directory) { return false; } -void TestRailInterface::processDirecoryPython(const QString& directory, QTextStream& stream) { +void TestRailInterface::processDirectoryPython(const QString& directory, QTextStream& stream) { // Loop over all entries in directory QDirIterator it(directory.toStdString().c_str()); while (it.hasNext()) { QString nextDirectory = it.next(); - // Only process directories - if (!isAValidTestDirectory(nextDirectory)) { - continue; + QString objectName = getObject(nextDirectory); + + if (isAValidTestDirectory(nextDirectory)) { + // The name of the section is the directory at the end of the path + stream << "parent_id = parent_ids.peek()\n"; + stream << "data = { 'name': '" << objectName << "', 'parent_id': parent_id }\n"; + + stream << "section = client.send_post('add_section/' + str(" << _project << "), data)\n"; + + // Now we push the parent_id, and recursively process each directory + stream << "parent_ids.push(section['id'])\n\n"; + processDirectoryPython(nextDirectory, stream); + } else if (objectName == "test.js" || objectName == "testStory.js") { + processTestPython(nextDirectory, stream); } - - // The name of the section is the directory at the end of the path - stream << "parent_id = parent_ids.peek()\n"; - QString name = nextDirectory.right(nextDirectory.length() - nextDirectory.lastIndexOf("/") - 1); - stream << "data = { \'name\': \'" << name << "\', \'parent_id\': parent_id }\n"; - - stream << "section = client.send_post(\'add_section/\' + str(" << _project << "), data)\n"; - - // Now we push the parent_id, and recursively process each directory - stream << "parent_ids.push(section[\'id\'])\n\n"; - processDirecoryPython(nextDirectory, stream); } // pop the parent directory before leaving @@ -243,7 +247,7 @@ void TestRailInterface::createAddSectionsPythonScript(const QString& testDirecto QFile file(outputDirectory + "/addSections.py"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), - "Could not create \'addSections.py\'"); + "Could not create 'addSections.py'"); exit(-1); } @@ -251,24 +255,26 @@ void TestRailInterface::createAddSectionsPythonScript(const QString& testDirecto // Code to access TestRail stream << "from testrail import *\n"; - stream << "client = APIClient(\'" << _url.toStdString().c_str() << "\')\n"; - stream << "client.user = \'" << _user << "\'\n"; - stream << "client.password = \'" << _password << "\'\n\n"; + stream << "client = APIClient('" << _url.toStdString().c_str() << "')\n"; + stream << "client.user = '" << _user << "'\n"; + stream << "client.password = '" << _password << "'\n\n"; stream << "from stack import *\n"; stream << "parent_ids = Stack()\n\n"; // top-level section - stream << "data = { \'name\': \'" - << "Test Suite - " << QDateTime::currentDateTime().toString("yyyy-MM-ddTHH:mm") << "\'}\n"; + stream << "data = { 'name': '" + << "Test Suite - " << QDateTime::currentDateTime().toString("yyyy-MM-ddTHH:mm") << "'}\n"; - stream << "section = client.send_post(\'add_section/\' + str(" << _project << "), data)\n"; + stream << "section = client.send_post('add_section/' + str(" << _project << "), data)\n"; // Now we push the parent_id, and recursively process each directory - stream << "parent_ids.push(section[\'id\'])\n\n"; - processDirecoryPython(testDirectory, stream); + stream << "parent_ids.push(section['id'])\n\n"; + processDirectoryPython(testDirectory, stream); file.close(); + + QMessageBox::information(0, "Success", "TestRail Python script has been created"); } void TestRailInterface::createTestSuitePython(const QString& testDirectory, @@ -332,7 +338,7 @@ QDomElement TestRailInterface::processDirectoryXML(const QString& directory, con QString nextDirectory = it.next(); // The object name appears after the last slash (we are assured there is at least 1). - QString objectName = nextDirectory.right(nextDirectory.length() - nextDirectory.lastIndexOf("/") - 1); + QString objectName = getObject(nextDirectory); // Only process directories if (isAValidTestDirectory(nextDirectory)) { @@ -352,7 +358,7 @@ QDomElement TestRailInterface::processDirectoryXML(const QString& directory, con QDomElement sectionElementName = _document.createElement("name"); sectionElementName.appendChild(_document.createTextNode("all")); sectionElement.appendChild(sectionElementName); - sectionElement.appendChild(processTest(nextDirectory, objectName, user, branch, _document.createElement("cases"))); + sectionElement.appendChild(processTestXML(nextDirectory, objectName, user, branch, _document.createElement("cases"))); result.appendChild(sectionElement); } } @@ -360,7 +366,7 @@ QDomElement TestRailInterface::processDirectoryXML(const QString& directory, con return result; } -QDomElement TestRailInterface::processTest(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element) { +QDomElement TestRailInterface::processTestXML(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element) { QDomElement result = element; QDomElement caseElement = _document.createElement("case"); @@ -470,4 +476,35 @@ QDomElement TestRailInterface::processTest(const QString& fullDirectory, const Q result.appendChild(caseElement); return result; +} + +void TestRailInterface::processTestPython(const QString& fullDirectory, QTextStream& stream) { + // The name of the test is derived from the full path. + // The first term is the first word after "tests" + // The last word is the penultimate word + QStringList words = fullDirectory.split('/'); + int i = 0; + while (words[i] != "tests") { + ++i; + if (i >= words.length() - 1) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Folder \"tests\" not found in " + fullDirectory); + exit(-1); + } + } + + ++i; + QString title{ words[i] }; + for (++i; i < words.length() - 1; ++i) { + title += " / " + words[i]; + } + + stream << "section_id = parent_ids.peek()\n"; + stream << "data = {" + << "'title': '" << title << "', " + << "'template': '" << "Test Case (Steps)" << "', " + << "'custom_preconds': '" << "Tester is in an empty region of a domain in which they have edit rights\\n\\n*Note: Press \\'n\\' to advance test script'" + << " }\n"; + + stream << "case = client.send_post('add_case/' + str(section_id), data)\n"; } \ No newline at end of file diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 3285281577..5d8b932869 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -35,17 +35,23 @@ public: const QString& branch, const QDomElement& element); - QDomElement processTest(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element); + QDomElement processTestXML(const QString& fullDirectory, + const QString& test, + const QString& user, + const QString& branch, + const QDomElement& element); + + void processTestPython(const QString& fullDirectory, QTextStream& stream); void createTestRailDotPyScript(const QString& outputDirectory); void createStackDotPyScript(const QString& outputDirectory); void requestDataFromUser(); void createAddSectionsPythonScript(const QString& testDirectory, const QString& outputDirectory); - void processDirecoryPython(const QString& directory, QTextStream& stream); + void processDirectoryPython(const QString& directory, QTextStream& stream); bool isAValidTestDirectory(const QString& directory); - + QString getObject(const QString& path); private: QDomDocument _document; From 637a214165e04db2e2b0b3c031b2ebd5edd8dc03 Mon Sep 17 00:00:00 2001 From: amantley Date: Fri, 27 Jul 2018 17:25:00 -0700 Subject: [PATCH 056/332] added the anim stack print out static object for the list of motion and weights --- interface/resources/qml/Stats.qml | 20 +++++-- interface/src/ui/Stats.cpp | 21 +++---- interface/src/ui/Stats.h | 58 +++---------------- .../animation/src/AnimBlendLinearMove.cpp | 8 +++ libraries/animation/src/AnimClip.cpp | 1 + libraries/animation/src/AnimStateMachine.cpp | 22 +++++-- libraries/animation/src/AnimStateMachine.h | 1 + libraries/animation/src/Rig.cpp | 5 +- 8 files changed, 59 insertions(+), 77 deletions(-) diff --git a/interface/resources/qml/Stats.qml b/interface/resources/qml/Stats.qml index b1d397553c..ea01ec9568 100644 --- a/interface/resources/qml/Stats.qml +++ b/interface/resources/qml/Stats.qml @@ -174,13 +174,21 @@ Item { text: "Yaw: " + root.yaw.toFixed(1) } StatText { - text: "Animation1 Name: " + root.animationName1 + " Weight: " + root.animationWeight1.toFixed(1) + visible: root.animStackNames.length > 0; + text: "Anim Stack Names:" } - StatText { - text: "Animation2 Name: " + root.animationName2 + " Weight: " + root.animationWeight2.toFixed(1) - } - StatText { - text: "Animation3 Name: " + root.animationName3 + " Weight: " + root.animationWeight3.toFixed(1) + ListView { + width: geoCol.width + height: root.animStackNames.length * 15 + + visible: root.animStackNames.length > 0; + + model: root.animStackNames + delegate: StatText { + text: modelData.length > 30 + ? modelData.substring(0, 5) + "..." + modelData.substring(modelData.length - 22) + : modelData + } } StatText { visible: root.expanded; diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index c344c93ed2..05422bfe0a 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -34,6 +34,7 @@ #include "Util.h" #include "SequenceNumberStats.h" #include "StatTracker.h" +#include "InterfaceLogging.h" HIFI_QML_DEF(Stats) @@ -192,14 +193,17 @@ void Stats::updateStats(bool force) { // Third column, avatar stats auto myAvatar = avatarManager->getMyAvatar(); auto rigCopy = myAvatar->getSkeletonModel(); - auto forwardAlpha = rigCopy->getRig().getFwdAlpha(); auto animStack = rigCopy->getRig().getAnimStack(); + qCDebug(interfaceapp) << "Animation Stack Begin: "; + + //check to see if the anim stack has changed + _animStackNames.clear(); for (auto animStackIterator = animStack.begin(); animStackIterator != animStack.end(); ++animStackIterator) { - //animStackIterator->first + qCDebug(interfaceapp) << "---" << animStackIterator->first << " " << animStackIterator->second; + _animStackNames << animStackIterator->first + ": " + QString::number(animStackIterator->second); + //forwardAlpha = animStackIterator->second; } - //auto backwardAlpha = rigCopy->getRig().getBwdAlpha(); - //auto lateralAlpha = rigCopy->getRig().getLateralAlpha(); - QString animName(rigCopy->getRig().getAnimation1Name()); + emit animStackNamesChanged(); glm::vec3 avatarPos = myAvatar->getWorldPosition(); STAT_UPDATE(position, QVector3D(avatarPos.x, avatarPos.y, avatarPos.z)); @@ -261,7 +265,6 @@ void Stats::updateStats(bool force) { STAT_UPDATE(downloadsPending, ResourceCache::getPendingRequestCount()); STAT_UPDATE(processing, DependencyManager::get()->getStat("Processing").toInt()); STAT_UPDATE(processingPending, DependencyManager::get()->getStat("PendingProcessing").toInt()); - // See if the active download urls have changed bool shouldUpdateUrls = _downloads != _downloadUrls.size(); @@ -356,12 +359,6 @@ void Stats::updateStats(bool force) { auto config = qApp->getRenderEngine()->getConfiguration().get(); STAT_UPDATE(engineFrameTime, (float) config->getCPURunTime()); STAT_UPDATE(avatarSimulationTime, (float)avatarManager->getAvatarSimulationTime()); - STAT_UPDATE(animationWeight1, (float)forwardAlpha); - STAT_UPDATE(animationName1, (QString)animName); - STAT_UPDATE(animationWeight2, (float)forwardAlpha); - STAT_UPDATE(animationName2, (QString)animName); - STAT_UPDATE(animationWeight3, (float)forwardAlpha); - STAT_UPDATE(animationName3, (QString)animName); STAT_UPDATE(gpuBuffers, (int)gpu::Context::getBufferGPUCount()); STAT_UPDATE(gpuBufferMemory, (int)BYTES_TO_MB(gpu::Context::getBufferGPUMemSize())); diff --git a/interface/src/ui/Stats.h b/interface/src/ui/Stats.h index c908e325b0..cf624b54c3 100644 --- a/interface/src/ui/Stats.h +++ b/interface/src/ui/Stats.h @@ -135,12 +135,7 @@ private: \ * @property {number} batchFrameTime - Read-only. * @property {number} engineFrameTime - Read-only. * @property {number} avatarSimulationTime - Read-only. - * @property {number} animationWeight1 - Read-only. - * @property {number} animationName1 - Read-only. - * @property {number} animationWeight2 - Read-only. - * @property {number} animationName2 - Read-only. - * @property {number} animationWeight3 - Read-only. - * @property {number} animationName3 - Read-only. + * @property {string[]} animStackNames - Read-only. * * * @property {number} x @@ -288,12 +283,7 @@ class Stats : public QQuickItem { STATS_PROPERTY(float, batchFrameTime, 0) STATS_PROPERTY(float, engineFrameTime, 0) STATS_PROPERTY(float, avatarSimulationTime, 0) - STATS_PROPERTY(float, animationWeight1, 0) - STATS_PROPERTY(QString, animationName1, QString()) - STATS_PROPERTY(float, animationWeight2, 0) - STATS_PROPERTY(QString, animationName2, QString()) - STATS_PROPERTY(float, animationWeight3, 0) - STATS_PROPERTY(QString, animationName3, QString()) + Q_PROPERTY(QStringList animStackNames READ animStackNames NOTIFY animStackNamesChanged) public: static Stats* getInstance(); @@ -318,6 +308,7 @@ public: } QStringList downloadUrls () { return _downloadUrls; } + QStringList animStackNames() { return _animStackNames; } public slots: void forceUpdateStats() { updateStats(true); } @@ -1012,47 +1003,11 @@ signals: void avatarSimulationTimeChanged(); /**jsdoc - * Triggered when the value of the animationWeight property changes. - * @function Stats.animationWeightChanged + * Triggered when the value of the animStackNames property changes. + * @function Stats.animStackNamesChanged * @returns {Signal} */ - void animationWeight1Changed(); - - /**jsdoc - * Triggered when the value of the animationName property changes. - * @function Stats.animationNameChanged - * @returns {Signal} - */ - void animationName1Changed(); - - /**jsdoc - * Triggered when the value of the animationWeight property changes. - * @function Stats.animationWeightChanged - * @returns {Signal} - */ - void animationWeight2Changed(); - - /**jsdoc - * Triggered when the value of the animationName property changes. - * @function Stats.animationNameChanged - * @returns {Signal} - */ - - void animationName2Changed(); - /**jsdoc - * Triggered when the value of the animationWeight property changes. - * @function Stats.animationWeightChanged - * @returns {Signal} - */ - - void animationWeight3Changed(); - - /**jsdoc - * Triggered when the value of the animationName property changes. - * @function Stats.animationNameChanged - * @returns {Signal} - */ - void animationName3Changed(); + void animStackNamesChanged(); /**jsdoc * Triggered when the value of the rectifiedTextureCount property changes. @@ -1299,6 +1254,7 @@ private: QString _monospaceFont; const AudioIOStats* _audioStats; QStringList _downloadUrls = QStringList(); + QStringList _animStackNames = QStringList(); }; #endif // hifi_Stats_h diff --git a/libraries/animation/src/AnimBlendLinearMove.cpp b/libraries/animation/src/AnimBlendLinearMove.cpp index f9ae7aad76..76b45a32ff 100644 --- a/libraries/animation/src/AnimBlendLinearMove.cpp +++ b/libraries/animation/src/AnimBlendLinearMove.cpp @@ -50,6 +50,14 @@ const AnimPoseVec& AnimBlendLinearMove::evaluate(AnimVariantMap& animVars, const qCDebug(animation) << "in blend linear move " << _alphaVar << ": " << _alpha; setMyNum(getMyNum() + 1.0f); assert(_children.size() == _characteristicSpeeds.size()); + const int motion1 = static_cast(_alpha); + const int motion2 = motion1 + 1; + float alpha1 = _alpha - (float)motion1; + float alpha2 = 1.0f - alpha1; + _animStack[_children[motion1]->getID()] = alpha1; + if (motion2 < _children.size()) { + _animStack[_children[motion2]->getID()] = alpha2; + } _desiredSpeed = animVars.lookup(_desiredSpeedVar, _desiredSpeed); diff --git a/libraries/animation/src/AnimClip.cpp b/libraries/animation/src/AnimClip.cpp index abed4636d9..da26e2c698 100644 --- a/libraries/animation/src/AnimClip.cpp +++ b/libraries/animation/src/AnimClip.cpp @@ -32,6 +32,7 @@ AnimClip::~AnimClip() { const AnimPoseVec& AnimClip::evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { qCDebug(animation) << "anim clip is: " << _url; + //_animStack[_url] = -1.0f; // lookup parameters from animVars, using current instance variables as defaults. _startFrame = animVars.lookup(_startFrameVar, _startFrame); _endFrame = animVars.lookup(_endFrameVar, _endFrame); diff --git a/libraries/animation/src/AnimStateMachine.cpp b/libraries/animation/src/AnimStateMachine.cpp index 8a84374274..76b6a027ab 100644 --- a/libraries/animation/src/AnimStateMachine.cpp +++ b/libraries/animation/src/AnimStateMachine.cpp @@ -23,9 +23,13 @@ AnimStateMachine::~AnimStateMachine() { const AnimPoseVec& AnimStateMachine::evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { qCDebug(animation) << "in anim state machine " << _currentState->getID() << ": " << _alpha; - animVars.set("Animation1", _currentState->getID()); - _animStack[_currentState->getID()] = _alpha; + //animVars.set("Animation1", _currentState->getID()); + //setMyNum(getMyNum() + 1.0f); + if (_currentState->getID().contains("userAnimNone")) { + _animStack.clear(); + } + _animStack[_currentState->getID()] = _alpha; QString desiredStateID = animVars.lookup(_currentStateVar, _currentState->getID()); if (_currentState->getID() != desiredStateID) { @@ -33,10 +37,7 @@ const AnimPoseVec& AnimStateMachine::evaluate(AnimVariantMap& animVars, const An bool foundState = false; for (auto& state : _states) { if (state->getID() == desiredStateID) { - if (_animStack.count(_currentState->getID()) > 0) { - _animStack.erase(_currentState->getID()); - } - _animStack[desiredStateID] = _alpha; + _previousStateID = _currentState->getID(); switchState(animVars, context, state); foundState = true; break; @@ -50,6 +51,7 @@ const AnimPoseVec& AnimStateMachine::evaluate(AnimVariantMap& animVars, const An // evaluate currentState transitions auto desiredState = evaluateTransitions(animVars); if (desiredState != _currentState) { + _previousStateID = _currentState->getID(); switchState(animVars, context, desiredState); } @@ -82,6 +84,10 @@ const AnimPoseVec& AnimStateMachine::evaluate(AnimVariantMap& animVars, const An } } else { _duringInterp = false; + if (_animStack.count(_previousStateID) > 0) { + _animStack.erase(_previousStateID); + } + _previousStateID = "none"; _prevPoses.clear(); _nextPoses.clear(); } @@ -89,6 +95,10 @@ const AnimPoseVec& AnimStateMachine::evaluate(AnimVariantMap& animVars, const An if (!_duringInterp) { _poses = currentStateNode->evaluate(animVars, context, dt, triggersOut); } + if (!_previousStateID.contains("none")) { + _animStack[_previousStateID] = 1.0f - _alpha; + } + _animStack[_currentState->getID()] = _alpha; return _poses; } diff --git a/libraries/animation/src/AnimStateMachine.h b/libraries/animation/src/AnimStateMachine.h index f25508db9f..98019e2729 100644 --- a/libraries/animation/src/AnimStateMachine.h +++ b/libraries/animation/src/AnimStateMachine.h @@ -138,6 +138,7 @@ protected: float _alpha = 0.0f; AnimPoseVec _prevPoses; AnimPoseVec _nextPoses; + QString _previousStateID { "none" }; State::Pointer _currentState; std::vector _states; diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index ee3e4607c1..02873835fa 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1008,10 +1008,11 @@ void Rig::updateAnimations(float deltaTime, const glm::mat4& rootTransform, cons // evaluate the animation AnimNode::Triggers triggersOut; - + //clear the animation stack info + //_animNode->getAnimStack()->clear(); _internalPoseSet._relativePoses = _animNode->evaluate(_animVars, context, deltaTime, triggersOut); _fwdAlpha = _animNode->getMyNum(); - _animationName1 = _animVars.lookup("Animation1", _animationName1); + if ((int)_internalPoseSet._relativePoses.size() != _animSkeleton->getNumJoints()) { // animations haven't fully loaded yet. _internalPoseSet._relativePoses = _animSkeleton->getRelativeDefaultPoses(); From 951b90d74cacb125baaf656c56a1490afe519652 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Fri, 27 Jul 2018 21:40:18 -0700 Subject: [PATCH 057/332] WIP - running Python process. --- tools/auto-tester/src/TestRailInterface.cpp | 92 +++++++++++++++------ tools/auto-tester/src/TestRailInterface.h | 31 ++++--- 2 files changed, 87 insertions(+), 36 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 987ce5a739..3ac8c8f9f8 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include TestRailInterface::TestRailInterface() { @@ -209,7 +210,10 @@ bool TestRailInterface::isAValidTestDirectory(const QString& directory) { return false; } -void TestRailInterface::processDirectoryPython(const QString& directory, QTextStream& stream) { +void TestRailInterface::processDirectoryPython(const QString& directory, + QTextStream& stream, + const QString& userGitHub, + const QString& branchGitHub) { // Loop over all entries in directory QDirIterator it(directory.toStdString().c_str()); while (it.hasNext()) { @@ -226,9 +230,9 @@ void TestRailInterface::processDirectoryPython(const QString& directory, QTextSt // Now we push the parent_id, and recursively process each directory stream << "parent_ids.push(section['id'])\n\n"; - processDirectoryPython(nextDirectory, stream); + processDirectoryPython(nextDirectory, stream, userGitHub, branchGitHub); } else if (objectName == "test.js" || objectName == "testStory.js") { - processTestPython(nextDirectory, stream); + processTestPython(nextDirectory, stream, userGitHub, branchGitHub); } } @@ -243,8 +247,11 @@ void TestRailInterface::processDirectoryPython(const QString& directory, QTextSt // Each node and leaf have an ID and a parent ID. // Therefore, the tree is built top-down, using a stack to store the IDs of each node // -void TestRailInterface::createAddSectionsPythonScript(const QString& testDirectory, const QString& outputDirectory) { - QFile file(outputDirectory + "/addSections.py"); +void TestRailInterface::createAddSectionsPythonScript(const QString& testDirectory, + const QString& outputDirectory, + const QString& userGitHub, + const QString& branchGitHub) { + QFile file(outputDirectory + "/addTestCases.py"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Could not create 'addSections.py'"); @@ -270,28 +277,42 @@ void TestRailInterface::createAddSectionsPythonScript(const QString& testDirecto // Now we push the parent_id, and recursively process each directory stream << "parent_ids.push(section['id'])\n\n"; - processDirectoryPython(testDirectory, stream); + processDirectoryPython(testDirectory, stream, userGitHub, branchGitHub); file.close(); - QMessageBox::information(0, "Success", "TestRail Python script has been created"); + if (QMessageBox::Yes == QMessageBox(QMessageBox::Information, "Python script has been created", "Do you want to run the script and update TestRail?", QMessageBox::Yes | QMessageBox::No).exec()) { + QString command("python"); + QStringList parameters = QStringList() << outputDirectory + "/addTestCases.py"; + QProcess* process = new QProcess(); + process->startDetached(command, parameters); + if (process->waitForStarted(3000)) { + QMessageBox::information(0, "Python process started", "TestRail is being updated"); + + process->waitForFinished(); + process->close(); + } else { + QMessageBox::critical(0, "Failure", "Could not start process to update TestRail"); + return; + } + } } void TestRailInterface::createTestSuitePython(const QString& testDirectory, const QString& outputDirectory, - const QString& user, - const QString& branch) { + const QString& userGitHub, + const QString& branchGitHub) { createTestRailDotPyScript(outputDirectory); createStackDotPyScript(outputDirectory); requestDataFromUser(); - createAddSectionsPythonScript(testDirectory, outputDirectory); + createAddSectionsPythonScript(testDirectory, outputDirectory, userGitHub, branchGitHub); } void TestRailInterface::createTestSuiteXML(const QString& testDirectory, const QString& outputDirectory, - const QString& user, - const QString& branch) { + const QString& userGitHub, + const QString& branchGitHub) { QDomProcessingInstruction instruction = _document.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); _document.appendChild(instruction); @@ -308,7 +329,7 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, // This is the first call to 'process'. This is then called recursively to build the full XML tree QDomElement secondLevelSections = _document.createElement("sections"); - topLevelSection.appendChild(processDirectoryXML(testDirectory, user, branch, secondLevelSections)); + topLevelSection.appendChild(processDirectoryXML(testDirectory, userGitHub, branchGitHub, secondLevelSections)); topLevelSection.appendChild(secondLevelSections); root.appendChild(topLevelSection); @@ -329,7 +350,10 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, QMessageBox::information(0, "Success", "TestRail XML file has been created"); } -QDomElement TestRailInterface::processDirectoryXML(const QString& directory, const QString& user, const QString& branch, const QDomElement& element) { +QDomElement TestRailInterface::processDirectoryXML(const QString& directory, + const QString& userGitHub, + const QString& branchGitHub, + const QDomElement& element) { QDomElement result = element; // Loop over all entries in directory @@ -350,7 +374,7 @@ QDomElement TestRailInterface::processDirectoryXML(const QString& directory, con sectionElement.appendChild(sectionElementName); QDomElement testsElement = _document.createElement("sections"); - sectionElement.appendChild(processDirectoryXML(nextDirectory, user, branch, testsElement)); + sectionElement.appendChild(processDirectoryXML(nextDirectory, userGitHub, branchGitHub, testsElement)); result.appendChild(sectionElement); } else if (objectName == "test.js" || objectName == "testStory.js") { @@ -358,7 +382,9 @@ QDomElement TestRailInterface::processDirectoryXML(const QString& directory, con QDomElement sectionElementName = _document.createElement("name"); sectionElementName.appendChild(_document.createTextNode("all")); sectionElement.appendChild(sectionElementName); - sectionElement.appendChild(processTestXML(nextDirectory, objectName, user, branch, _document.createElement("cases"))); + sectionElement.appendChild( + processTestXML(nextDirectory, objectName, userGitHub, branchGitHub, _document.createElement("cases"))); + result.appendChild(sectionElement); } } @@ -366,7 +392,11 @@ QDomElement TestRailInterface::processDirectoryXML(const QString& directory, con return result; } -QDomElement TestRailInterface::processTestXML(const QString& fullDirectory, const QString& test, const QString& user, const QString& branch, const QDomElement& element) { +QDomElement TestRailInterface::processTestXML(const QString& fullDirectory, + const QString& test, + const QString& userGitHub, + const QString& branchGitHub, + const QDomElement& element) { QDomElement result = element; QDomElement caseElement = _document.createElement("case"); @@ -443,7 +473,7 @@ QDomElement TestRailInterface::processTestXML(const QString& fullDirectory, cons added_to_releaseElementId.appendChild(_document.createTextNode("4")); added_to_releaseElement.appendChild(added_to_releaseElementId); QDomElement added_to_releaseElementValue = _document.createElement("value"); - added_to_releaseElementValue.appendChild(_document.createTextNode(branch)); + added_to_releaseElementValue.appendChild(_document.createTextNode(branchGitHub)); added_to_releaseElement.appendChild(added_to_releaseElementValue); customElement.appendChild(added_to_releaseElement); @@ -451,7 +481,8 @@ QDomElement TestRailInterface::processTestXML(const QString& fullDirectory, cons precondsElement.appendChild(_document.createTextNode("Tester is in an empty region of a domain in which they have edit rights\n\n*Note: Press 'n' to advance test script")); customElement.appendChild(precondsElement); - QString testMDName = QString("https://github.com/") + user + "/hifi_tests/blob/" + branch + "/tests/content/entity/light/point/create/test.md"; + QString testMDName = QString("https://github.com/") + userGitHub + "/hifi_tests/blob/" + branchGitHub + + "/tests/content/entity/light/point/create/test.md"; QDomElement steps_seperatedElement = _document.createElement("steps_separated"); QDomElement stepElement = _document.createElement("step"); @@ -478,7 +509,10 @@ QDomElement TestRailInterface::processTestXML(const QString& fullDirectory, cons return result; } -void TestRailInterface::processTestPython(const QString& fullDirectory, QTextStream& stream) { +void TestRailInterface::processTestPython(const QString& fullDirectory, + QTextStream& stream, + const QString& userGitHub, + const QString& branchGitHub) { // The name of the test is derived from the full path. // The first term is the first word after "tests" // The last word is the penultimate word @@ -500,11 +534,19 @@ void TestRailInterface::processTestPython(const QString& fullDirectory, QTextStr } stream << "section_id = parent_ids.peek()\n"; - stream << "data = {" - << "'title': '" << title << "', " - << "'template': '" << "Test Case (Steps)" << "', " - << "'custom_preconds': '" << "Tester is in an empty region of a domain in which they have edit rights\\n\\n*Note: Press \\'n\\' to advance test script'" - << " }\n"; + + QString testMDName = QString("https://github.com/") + userGitHub + "/hifi_tests/blob/" + branchGitHub + + "/tests/content/entity/light/point/create/test.md"; + + QString testContent = QString("Execute instructions in [THIS TEST](") + testMDName + ")"; + QString testExpected = QString("Refer to the expected result in the linked description."); + + stream << "data = {\n\t" + << "'title': '" << title << "',\n\t" + << "'template_id': 2,\n\t" + << "'custom_preconds': " << "'Tester is in an empty region of a domain in which they have edit rights\\n\\n*Note: Press \\'n\\' to advance test script',\n\t" + << "'custom_steps_separated': " << "[\n\t\t{\n\t\t\t'content': '" << testContent << "',\n\t\t\t'expected': '" << testExpected << "'\n\t\t}\n\t]\n" + << "}\n"; stream << "case = client.send_post('add_case/' + str(section_id), data)\n"; } \ No newline at end of file diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 5d8b932869..b01e8158c1 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -22,33 +22,42 @@ public: void createTestSuiteXML(const QString& testDirectory, const QString& outputDirectory, - const QString& user, - const QString& branch); + const QString& userGitHub, + const QString& branchGitHub); void createTestSuitePython(const QString& testDirectory, const QString& outputDirectory, - const QString& user, - const QString& branch); + const QString& userGitHub, + const QString& branchGitHub); QDomElement processDirectoryXML(const QString& directory, - const QString& user, - const QString& branch, + const QString& useGitHubr, + const QString& branchGitHub, const QDomElement& element); QDomElement processTestXML(const QString& fullDirectory, const QString& test, - const QString& user, - const QString& branch, + const QString& userGitHub, + const QString& branchGitHub, const QDomElement& element); - void processTestPython(const QString& fullDirectory, QTextStream& stream); + void processTestPython(const QString& fullDirectory, + QTextStream& stream, + const QString& userGitHub, + const QString& branchGitHub); void createTestRailDotPyScript(const QString& outputDirectory); void createStackDotPyScript(const QString& outputDirectory); void requestDataFromUser(); - void createAddSectionsPythonScript(const QString& testDirectory, const QString& outputDirectory); + void createAddSectionsPythonScript(const QString& testDirectory, + const QString& outputDirectory, + const QString& userGitHub, + const QString& branchGitHub); - void processDirectoryPython(const QString& directory, QTextStream& stream); + void processDirectoryPython(const QString& directory, + QTextStream& stream, + const QString& userGitHub, + const QString& branchGitHub); bool isAValidTestDirectory(const QString& directory); QString getObject(const QString& path); From e0d14dd7021c72315362bc5b762c9421152e8086 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Sun, 29 Jul 2018 00:25:02 -0700 Subject: [PATCH 058/332] Works, but does not yet wait for completion of Python process. --- tools/auto-tester/src/TestRailInterface.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index b01e8158c1..768de24ea3 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -49,10 +49,10 @@ public: void createTestRailDotPyScript(const QString& outputDirectory); void createStackDotPyScript(const QString& outputDirectory); void requestDataFromUser(); - void createAddSectionsPythonScript(const QString& testDirectory, - const QString& outputDirectory, - const QString& userGitHub, - const QString& branchGitHub); + void createAddTestCasesPythonScript(const QString& testDirectory, + const QString& outputDirectory, + const QString& userGitHub, + const QString& branchGitHub); void processDirectoryPython(const QString& directory, QTextStream& stream, From e191c65290f0508e6ac6914e058529bbe548dfce Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Sun, 29 Jul 2018 00:27:15 -0700 Subject: [PATCH 059/332] Works, but does not yet wait for completion of Python process. --- tools/auto-tester/src/TestRailInterface.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 3ac8c8f9f8..2439623d6d 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -247,14 +247,14 @@ void TestRailInterface::processDirectoryPython(const QString& directory, // Each node and leaf have an ID and a parent ID. // Therefore, the tree is built top-down, using a stack to store the IDs of each node // -void TestRailInterface::createAddSectionsPythonScript(const QString& testDirectory, +void TestRailInterface::createAddTestCasesPythonScript(const QString& testDirectory, const QString& outputDirectory, const QString& userGitHub, const QString& branchGitHub) { QFile file(outputDirectory + "/addTestCases.py"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), - "Could not create 'addSections.py'"); + "Could not create 'addTestCases.py'"); exit(-1); } @@ -282,15 +282,11 @@ void TestRailInterface::createAddSectionsPythonScript(const QString& testDirecto file.close(); if (QMessageBox::Yes == QMessageBox(QMessageBox::Information, "Python script has been created", "Do you want to run the script and update TestRail?", QMessageBox::Yes | QMessageBox::No).exec()) { - QString command("python"); + QString command("C:\\Python37\\python"); QStringList parameters = QStringList() << outputDirectory + "/addTestCases.py"; QProcess* process = new QProcess(); - process->startDetached(command, parameters); - if (process->waitForStarted(3000)) { + if (process->startDetached(command, parameters)) { QMessageBox::information(0, "Python process started", "TestRail is being updated"); - - process->waitForFinished(); - process->close(); } else { QMessageBox::critical(0, "Failure", "Could not start process to update TestRail"); return; @@ -306,7 +302,7 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, createTestRailDotPyScript(outputDirectory); createStackDotPyScript(outputDirectory); requestDataFromUser(); - createAddSectionsPythonScript(testDirectory, outputDirectory, userGitHub, branchGitHub); + createAddTestCasesPythonScript(testDirectory, outputDirectory, userGitHub, branchGitHub); } void TestRailInterface::createTestSuiteXML(const QString& testDirectory, From 9247e8dc16b9f380b3abb9a86a17e1e7f86446f2 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Sun, 29 Jul 2018 20:28:46 -0700 Subject: [PATCH 060/332] QProcess signals connected. --- .../src/AssignmentClientMonitor.cpp | 7 +++++-- tools/auto-tester/src/TestRailInterface.cpp | 19 ++++++++++++------- tools/auto-tester/src/TestRailInterface.h | 4 +++- tools/auto-tester/src/ui/MismatchWindow.h | 3 +-- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/assignment-client/src/AssignmentClientMonitor.cpp b/assignment-client/src/AssignmentClientMonitor.cpp index 2847d4ebf1..6a9826f877 100644 --- a/assignment-client/src/AssignmentClientMonitor.cpp +++ b/assignment-client/src/AssignmentClientMonitor.cpp @@ -242,8 +242,11 @@ void AssignmentClientMonitor::spawnChildClient() { if (assignmentClient->processId() > 0) { auto pid = assignmentClient->processId(); // make sure we hear that this process has finished when it does - connect(assignmentClient, static_cast(&QProcess::finished), - this, [this, pid](int exitCode, QProcess::ExitStatus exitStatus) { + connect( + assignmentClient, + static_cast(&QProcess::finished), + this, + [this, pid](int exitCode, QProcess::ExitStatus exitStatus) { childProcessFinished(pid, exitCode, exitStatus); }); diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 2439623d6d..26c2b69896 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -285,12 +285,17 @@ void TestRailInterface::createAddTestCasesPythonScript(const QString& testDirect QString command("C:\\Python37\\python"); QStringList parameters = QStringList() << outputDirectory + "/addTestCases.py"; QProcess* process = new QProcess(); - if (process->startDetached(command, parameters)) { - QMessageBox::information(0, "Python process started", "TestRail is being updated"); - } else { - QMessageBox::critical(0, "Failure", "Could not start process to update TestRail"); - return; - } + connect( + process, &QProcess::started, + this, []() {QMessageBox::information(0, "Python process started", "TestRail is being updated"); } + ); + + connect( + process, static_cast(&QProcess::finished), + this, [](int exitCode, QProcess::ExitStatus exitStatus) {QMessageBox::information(0, "Python process finished", "TestRail tests have been added"); } + ); + + process->start(command, parameters); } } @@ -545,4 +550,4 @@ void TestRailInterface::processTestPython(const QString& fullDirectory, << "}\n"; stream << "case = client.send_post('add_case/' + str(section_id), data)\n"; -} \ No newline at end of file +} diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 768de24ea3..2d7ca21f58 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -16,7 +16,9 @@ #include #include -class TestRailInterface { +class TestRailInterface : public QObject{ + Q_OBJECT + public: TestRailInterface(); diff --git a/tools/auto-tester/src/ui/MismatchWindow.h b/tools/auto-tester/src/ui/MismatchWindow.h index 30fca94469..f203a2be6a 100644 --- a/tools/auto-tester/src/ui/MismatchWindow.h +++ b/tools/auto-tester/src/ui/MismatchWindow.h @@ -14,8 +14,7 @@ #include "../common.h" -class MismatchWindow : public QDialog, public Ui::MismatchWindow -{ +class MismatchWindow : public QDialog, public Ui::MismatchWindow { Q_OBJECT public: From b72d94e56d3f32417436efffcb6ef65411d47974 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Sun, 29 Jul 2018 20:58:07 -0700 Subject: [PATCH 061/332] Added a sweet "busy" window. --- tools/auto-tester/src/TestRailInterface.cpp | 9 ++- tools/auto-tester/src/TestRailInterface.h | 2 + tools/auto-tester/src/ui/BusyWindow.cpp | 18 ++++++ tools/auto-tester/src/ui/BusyWindow.h | 22 +++++++ tools/auto-tester/src/ui/BusyWindow.ui | 72 +++++++++++++++++++++ 5 files changed, 121 insertions(+), 2 deletions(-) create mode 100644 tools/auto-tester/src/ui/BusyWindow.cpp create mode 100644 tools/auto-tester/src/ui/BusyWindow.h create mode 100644 tools/auto-tester/src/ui/BusyWindow.ui diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 26c2b69896..e92ef59c77 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -20,6 +20,7 @@ #include TestRailInterface::TestRailInterface() { + _busyWindow.setModal(true); _testRailSelectorWindow.setModal(true); ////_testRailSelectorWindow.setURL("https://highfidelity.testrail.net"); @@ -287,12 +288,16 @@ void TestRailInterface::createAddTestCasesPythonScript(const QString& testDirect QProcess* process = new QProcess(); connect( process, &QProcess::started, - this, []() {QMessageBox::information(0, "Python process started", "TestRail is being updated"); } + this, [=]() { + _busyWindow.exec(); + } ); connect( process, static_cast(&QProcess::finished), - this, [](int exitCode, QProcess::ExitStatus exitStatus) {QMessageBox::information(0, "Python process finished", "TestRail tests have been added"); } + this, [=](int exitCode, QProcess::ExitStatus exitStatus) { + _busyWindow.hide(); + } ); process->start(command, parameters); diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 2d7ca21f58..1908c1bbd3 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -11,6 +11,7 @@ #ifndef hifi_test_testrail_interface_h #define hifi_test_testrail_interface_h +#include "ui/BusyWindow.h" #include "ui/TestRailSelectorWindow.h" #include #include @@ -67,6 +68,7 @@ public: private: QDomDocument _document; + BusyWindow _busyWindow; TestRailSelectorWindow _testRailSelectorWindow; QString _url; diff --git a/tools/auto-tester/src/ui/BusyWindow.cpp b/tools/auto-tester/src/ui/BusyWindow.cpp new file mode 100644 index 0000000000..904dc47d75 --- /dev/null +++ b/tools/auto-tester/src/ui/BusyWindow.cpp @@ -0,0 +1,18 @@ +// +// BusyWindow.cpp +// +// Created by Nissim Hadar on 26 Jul 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include "BusyWindow.h" + +#include + +#include + +BusyWindow::BusyWindow(QWidget *parent) { + setupUi(this); +} diff --git a/tools/auto-tester/src/ui/BusyWindow.h b/tools/auto-tester/src/ui/BusyWindow.h new file mode 100644 index 0000000000..62f2df7e04 --- /dev/null +++ b/tools/auto-tester/src/ui/BusyWindow.h @@ -0,0 +1,22 @@ +// +// BusyWindow.h +// +// Created by Nissim Hadar on 29 Jul 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#ifndef hifi_BusyWindow_h +#define hifi_BusyWindow_h + +#include "ui_BusyWindow.h" + +class BusyWindow : public QDialog, public Ui::BusyWindow { + Q_OBJECT + +public: + BusyWindow(QWidget* parent = Q_NULLPTR); +}; + +#endif \ No newline at end of file diff --git a/tools/auto-tester/src/ui/BusyWindow.ui b/tools/auto-tester/src/ui/BusyWindow.ui new file mode 100644 index 0000000000..f04a39418b --- /dev/null +++ b/tools/auto-tester/src/ui/BusyWindow.ui @@ -0,0 +1,72 @@ + + + BusyWindow + + + + 0 + 0 + 542 + 189 + + + + Updating TestRail - please wait + + + + + 30 + 850 + 500 + 28 + + + + + 12 + + + + similarity + + + + + + 40 + 40 + 481 + 101 + + + + 0 + + + 0 + + + + + + 50 + 60 + 431 + 61 + + + + + 20 + + + + Please wait for this window to close + + + + + + + From ad0a1c289da68d50c887f8c83d3ba1dd70b94e7e Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Sun, 29 Jul 2018 22:24:48 -0700 Subject: [PATCH 062/332] Use environment variable for Python path. --- tools/auto-tester/src/TestRailInterface.cpp | 14 +++++++++++++- tools/auto-tester/src/TestRailInterface.h | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index e92ef59c77..d8784e5a86 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -283,7 +283,7 @@ void TestRailInterface::createAddTestCasesPythonScript(const QString& testDirect file.close(); if (QMessageBox::Yes == QMessageBox(QMessageBox::Information, "Python script has been created", "Do you want to run the script and update TestRail?", QMessageBox::Yes | QMessageBox::No).exec()) { - QString command("C:\\Python37\\python"); + QString command(_pythonPath + "/" + pythonExe); QStringList parameters = QStringList() << outputDirectory + "/addTestCases.py"; QProcess* process = new QProcess(); connect( @@ -309,6 +309,18 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, const QString& userGitHub, const QString& branchGitHub) { + // First check that Python is available + QProcessEnvironment e = QProcessEnvironment::systemEnvironment(); + QStringList sl = e.toStringList(); + if (QProcessEnvironment::systemEnvironment().contains("PYTHON_PATH")) { + _pythonPath = QProcessEnvironment::systemEnvironment().value("PYTHON_PATH"); + if (!QFile::exists(_pythonPath + "/" + pythonExe)) { + QMessageBox::critical(0, pythonExe, QString("Python executable not found in ") + _pythonPath); + } + } else { + QMessageBox::critical(0, "PYTHON_PATH not defined", "Please set PYTHON_PATH to directory containing the Python executable"); + } + createTestRailDotPyScript(outputDirectory); createStackDotPyScript(outputDirectory); requestDataFromUser(); diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 1908c1bbd3..4c094a27f3 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -75,6 +75,10 @@ private: QString _user; QString _password; QString _project; + + QString _pythonPath; + + const QString pythonExe{ "python.exe" }; }; #endif \ No newline at end of file From 3f3f541a2092054e320eb2a827b1248021902300 Mon Sep 17 00:00:00 2001 From: Olivier Prat Date: Mon, 30 Jul 2018 17:27:10 +0200 Subject: [PATCH 063/332] Fixed shadow map case when bounds of objects in cascade is null --- .../render-utils/src/RenderShadowTask.cpp | 146 +++++++++--------- 1 file changed, 75 insertions(+), 71 deletions(-) diff --git a/libraries/render-utils/src/RenderShadowTask.cpp b/libraries/render-utils/src/RenderShadowTask.cpp index 91eb777199..327eac8867 100644 --- a/libraries/render-utils/src/RenderShadowTask.cpp +++ b/libraries/render-utils/src/RenderShadowTask.cpp @@ -78,36 +78,38 @@ static void computeNearFar(const glm::vec3 sceneBoundVertices[8], const Plane sh } static void adjustNearFar(const AABox& inShapeBounds, ViewFrustum& shadowFrustum) { - const Transform shadowView{ shadowFrustum.getView() }; - const Transform shadowViewInverse{ shadowView.getInverseMatrix() }; + if (!inShapeBounds.isNull()) { + const Transform shadowView{ shadowFrustum.getView() }; + const Transform shadowViewInverse{ shadowView.getInverseMatrix() }; - glm::vec3 sceneBoundVertices[8]; - // Keep only the left, right, top and bottom shadow frustum planes as we wish to determine - // the near and far - Plane shadowClipPlanes[4]; - int i; + glm::vec3 sceneBoundVertices[8]; + // Keep only the left, right, top and bottom shadow frustum planes as we wish to determine + // the near and far + Plane shadowClipPlanes[4]; + int i; - // The vertices of the scene bounding box are expressed in the shadow frustum's local space - for (i = 0; i < 8; i++) { - sceneBoundVertices[i] = shadowViewInverse.transform(inShapeBounds.getVertex(static_cast(i))); + // The vertices of the scene bounding box are expressed in the shadow frustum's local space + for (i = 0; i < 8; i++) { + sceneBoundVertices[i] = shadowViewInverse.transform(inShapeBounds.getVertex(static_cast(i))); + } + shadowFrustum.getUniformlyTransformedSidePlanes(shadowViewInverse, shadowClipPlanes); + + float near = std::numeric_limits::max(); + float far = 0.0f; + + computeNearFar(sceneBoundVertices, shadowClipPlanes, near, far); + // Limit the far range to the one used originally. + far = glm::min(far, shadowFrustum.getFarClip()); + + const auto depthEpsilon = 0.1f; + auto projMatrix = glm::ortho(-1.0f, 1.0f, -1.0f, 1.0f, near - depthEpsilon, far + depthEpsilon); + auto shadowProjection = shadowFrustum.getProjection(); + + shadowProjection[2][2] = projMatrix[2][2]; + shadowProjection[3][2] = projMatrix[3][2]; + shadowFrustum.setProjection(shadowProjection); + shadowFrustum.calculate(); } - shadowFrustum.getUniformlyTransformedSidePlanes(shadowViewInverse, shadowClipPlanes); - - float near = std::numeric_limits::max(); - float far = 0.0f; - - computeNearFar(sceneBoundVertices, shadowClipPlanes, near, far); - // Limit the far range to the one used originally. - far = glm::min(far, shadowFrustum.getFarClip()); - - const auto depthEpsilon = 0.1f; - auto projMatrix = glm::ortho(-1.0f, 1.0f, -1.0f, 1.0f, near - depthEpsilon, far + depthEpsilon); - auto shadowProjection = shadowFrustum.getProjection(); - - shadowProjection[2][2] = projMatrix[2][2]; - shadowProjection[3][2] = projMatrix[3][2]; - shadowFrustum.setProjection(shadowProjection); - shadowFrustum.calculate(); } void RenderShadowMap::run(const render::RenderContextPointer& renderContext, const Inputs& inputs) { @@ -151,60 +153,62 @@ void RenderShadowMap::run(const render::RenderContextPointer& renderContext, con batch.setFramebuffer(fbo); batch.clearDepthFramebuffer(1.0, false); - glm::mat4 projMat; - Transform viewMat; - args->getViewFrustum().evalProjectionMatrix(projMat); - args->getViewFrustum().evalViewTransform(viewMat); + if (!inShapeBounds.isNull()) { + glm::mat4 projMat; + Transform viewMat; + args->getViewFrustum().evalProjectionMatrix(projMat); + args->getViewFrustum().evalViewTransform(viewMat); - batch.setProjectionTransform(projMat); - batch.setViewTransform(viewMat, false); + batch.setProjectionTransform(projMat); + batch.setViewTransform(viewMat, false); - auto shadowPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder); - auto shadowSkinnedPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder.withSkinned()); - auto shadowSkinnedDQPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder.withSkinned().withDualQuatSkinned()); + auto shadowPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder); + auto shadowSkinnedPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder.withSkinned()); + auto shadowSkinnedDQPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder.withSkinned().withDualQuatSkinned()); - std::vector skinnedShapeKeys{}; - std::vector skinnedDQShapeKeys{}; - std::vector ownPipelineShapeKeys{}; + std::vector skinnedShapeKeys{}; + std::vector skinnedDQShapeKeys{}; + std::vector ownPipelineShapeKeys{}; - // Iterate through all inShapes and render the unskinned - args->_shapePipeline = shadowPipeline; - batch.setPipeline(shadowPipeline->pipeline); - for (auto items : inShapes) { - if (items.first.isSkinned()) { - if (items.first.isDualQuatSkinned()) { - skinnedDQShapeKeys.push_back(items.first); + // Iterate through all inShapes and render the unskinned + args->_shapePipeline = shadowPipeline; + batch.setPipeline(shadowPipeline->pipeline); + for (auto items : inShapes) { + if (items.first.isSkinned()) { + if (items.first.isDualQuatSkinned()) { + skinnedDQShapeKeys.push_back(items.first); + } else { + skinnedShapeKeys.push_back(items.first); + } + } else if (!items.first.hasOwnPipeline()) { + renderItems(renderContext, items.second); } else { - skinnedShapeKeys.push_back(items.first); + ownPipelineShapeKeys.push_back(items.first); } - } else if (!items.first.hasOwnPipeline()) { - renderItems(renderContext, items.second); - } else { - ownPipelineShapeKeys.push_back(items.first); } - } - // Reiterate to render the skinned - args->_shapePipeline = shadowSkinnedPipeline; - batch.setPipeline(shadowSkinnedPipeline->pipeline); - for (const auto& key : skinnedShapeKeys) { - renderItems(renderContext, inShapes.at(key)); - } + // Reiterate to render the skinned + args->_shapePipeline = shadowSkinnedPipeline; + batch.setPipeline(shadowSkinnedPipeline->pipeline); + for (const auto& key : skinnedShapeKeys) { + renderItems(renderContext, inShapes.at(key)); + } - // Reiterate to render the DQ skinned - args->_shapePipeline = shadowSkinnedDQPipeline; - batch.setPipeline(shadowSkinnedDQPipeline->pipeline); - for (const auto& key : skinnedDQShapeKeys) { - renderItems(renderContext, inShapes.at(key)); - } + // Reiterate to render the DQ skinned + args->_shapePipeline = shadowSkinnedDQPipeline; + batch.setPipeline(shadowSkinnedDQPipeline->pipeline); + for (const auto& key : skinnedDQShapeKeys) { + renderItems(renderContext, inShapes.at(key)); + } - // Finally render the items with their own pipeline last to prevent them from breaking the - // render state. This is probably a temporary code as there is probably something better - // to do in the render call of objects that have their own pipeline. - args->_shapePipeline = nullptr; - for (const auto& key : ownPipelineShapeKeys) { - args->_itemShapeKey = key._flags.to_ulong(); - renderItems(renderContext, inShapes.at(key)); + // Finally render the items with their own pipeline last to prevent them from breaking the + // render state. This is probably a temporary code as there is probably something better + // to do in the render call of objects that have their own pipeline. + args->_shapePipeline = nullptr; + for (const auto& key : ownPipelineShapeKeys) { + args->_itemShapeKey = key._flags.to_ulong(); + renderItems(renderContext, inShapes.at(key)); + } } args->_batch = nullptr; From 6be5ac8dee72fb40a48f504a0479902dbdcc3238 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 30 Jul 2018 13:58:14 -0700 Subject: [PATCH 064/332] Add missing equality operator to CollisionRegion to fix false cache collisions leading to false negatives --- libraries/shared/src/RegisteredMetaTypes.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index efafd35a06..69fa5b2b5d 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -278,6 +278,14 @@ public: shapeInfo.getType() == SHAPE_TYPE_NONE); } + bool operator==(const CollisionRegion& other) const { + return glm::all(glm::equal(transform.getTranslation(), other.transform.getTranslation())) && + glm::all(glm::equal(transform.getRotation(), other.transform.getRotation())) && + glm::all(glm::equal(transform.getScale(), other.transform.getScale())) && + shapeInfo.getType() == other.shapeInfo.getType() && + modelURL == other.modelURL; + } + bool shouldComputeShapeInfo() const { if (!(shapeInfo.getType() == SHAPE_TYPE_HULL || (shapeInfo.getType() >= SHAPE_TYPE_COMPOUND && From 541d2deed536536752faea09a57419ff2a426244 Mon Sep 17 00:00:00 2001 From: amantley Date: Mon, 30 Jul 2018 14:45:25 -0700 Subject: [PATCH 065/332] added the parent alpha into the child animation weight, removed extra hand overlay print outs --- interface/src/ui/Stats.cpp | 2 +- libraries/animation/src/AnimBlendLinear.cpp | 15 ++++++++++-- .../animation/src/AnimBlendLinearMove.cpp | 23 ++++++++++--------- libraries/animation/src/AnimOverlay.cpp | 2 +- libraries/animation/src/AnimStateMachine.cpp | 23 +++++++++++++------ libraries/animation/src/Rig.cpp | 1 - 6 files changed, 43 insertions(+), 23 deletions(-) diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index 05422bfe0a..04bd3944fb 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -200,7 +200,7 @@ void Stats::updateStats(bool force) { _animStackNames.clear(); for (auto animStackIterator = animStack.begin(); animStackIterator != animStack.end(); ++animStackIterator) { qCDebug(interfaceapp) << "---" << animStackIterator->first << " " << animStackIterator->second; - _animStackNames << animStackIterator->first + ": " + QString::number(animStackIterator->second); + _animStackNames << animStackIterator->first + ": " + QString::number(animStackIterator->second,'f',3); //forwardAlpha = animStackIterator->second; } emit animStackNamesChanged(); diff --git a/libraries/animation/src/AnimBlendLinear.cpp b/libraries/animation/src/AnimBlendLinear.cpp index 21539aba08..cd719b0f63 100644 --- a/libraries/animation/src/AnimBlendLinear.cpp +++ b/libraries/animation/src/AnimBlendLinear.cpp @@ -25,8 +25,9 @@ AnimBlendLinear::~AnimBlendLinear() { } const AnimPoseVec& AnimBlendLinear::evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { - qCDebug(animation) << "in blend linear ++++++++++++++++" << _alphaVar << ": " << _alpha; + qCDebug(animation) << "in blend linear ++++++++++++++++" << _alphaVar << ": " << QString::number(_alpha,'f',3) << " parent id: " << _id << " and alpha " << _animStack[_id]; _alpha = animVars.lookup(_alphaVar, _alpha); + float parentAlpha = _animStack[_id]; if (_children.size() == 0) { for (auto&& pose : _poses) { @@ -34,15 +35,25 @@ const AnimPoseVec& AnimBlendLinear::evaluate(AnimVariantMap& animVars, const Ani } } else if (_children.size() == 1) { _poses = _children[0]->evaluate(animVars, context, dt, triggersOut); + _animStack[_children[0]->getID()] = parentAlpha; } else { float clampedAlpha = glm::clamp(_alpha, 0.0f, (float)(_children.size() - 1)); size_t prevPoseIndex = glm::floor(clampedAlpha); size_t nextPoseIndex = glm::ceil(clampedAlpha); float alpha = glm::fract(clampedAlpha); - evaluateAndBlendChildren(animVars, context, triggersOut, alpha, prevPoseIndex, nextPoseIndex, dt); + + if (alpha > 0.00001f) { + float weight1 = alpha; + float weight2 = 1.0f - weight1; + _animStack[_children[prevPoseIndex]->getID()] = weight1 * parentAlpha; + if ((int)nextPoseIndex < _children.size()) { + _animStack[_children[nextPoseIndex]->getID()] = weight2 * parentAlpha; + } + } } + return _poses; } diff --git a/libraries/animation/src/AnimBlendLinearMove.cpp b/libraries/animation/src/AnimBlendLinearMove.cpp index 76b45a32ff..2f73e801b5 100644 --- a/libraries/animation/src/AnimBlendLinearMove.cpp +++ b/libraries/animation/src/AnimBlendLinearMove.cpp @@ -47,17 +47,9 @@ static float calculateAlpha(const float speed, const std::vector& charact } const AnimPoseVec& AnimBlendLinearMove::evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { - qCDebug(animation) << "in blend linear move " << _alphaVar << ": " << _alpha; - setMyNum(getMyNum() + 1.0f); + qCDebug(animation) << "in blend linear move " << _alphaVar << ": " << _alpha << " band id: " << _id << " parent alpha " << _animStack[_id]; assert(_children.size() == _characteristicSpeeds.size()); - const int motion1 = static_cast(_alpha); - const int motion2 = motion1 + 1; - float alpha1 = _alpha - (float)motion1; - float alpha2 = 1.0f - alpha1; - _animStack[_children[motion1]->getID()] = alpha1; - if (motion2 < _children.size()) { - _animStack[_children[motion2]->getID()] = alpha2; - } + _desiredSpeed = animVars.lookup(_desiredSpeedVar, _desiredSpeed); @@ -71,6 +63,7 @@ const AnimPoseVec& AnimBlendLinearMove::evaluate(AnimVariantMap& animVars, const speed = animVars.lookup("moveForwardSpeed", speed); } _alpha = calculateAlpha(speed, _characteristicSpeeds); + float parentAlpha = _animStack[_id]; if (_children.size() == 0) { for (auto&& pose : _poses) { @@ -83,8 +76,9 @@ const AnimPoseVec& AnimBlendLinearMove::evaluate(AnimVariantMap& animVars, const float prevDeltaTime, nextDeltaTime; setFrameAndPhase(dt, alpha, prevPoseIndex, nextPoseIndex, &prevDeltaTime, &nextDeltaTime, triggersOut); evaluateAndBlendChildren(animVars, context, triggersOut, alpha, prevPoseIndex, nextPoseIndex, prevDeltaTime, nextDeltaTime); + + _animStack[_children[0]->getID()] = parentAlpha; } else { - auto clampedAlpha = glm::clamp(_alpha, 0.0f, (float)(_children.size() - 1)); auto prevPoseIndex = glm::floor(clampedAlpha); auto nextPoseIndex = glm::ceil(clampedAlpha); @@ -92,6 +86,13 @@ const AnimPoseVec& AnimBlendLinearMove::evaluate(AnimVariantMap& animVars, const float prevDeltaTime, nextDeltaTime; setFrameAndPhase(dt, alpha, prevPoseIndex, nextPoseIndex, &prevDeltaTime, &nextDeltaTime, triggersOut); evaluateAndBlendChildren(animVars, context, triggersOut, alpha, prevPoseIndex, nextPoseIndex, prevDeltaTime, nextDeltaTime); + + float weight1 = alpha; + float weight2 = 1.0f - weight1; + _animStack[_children[prevPoseIndex]->getID()] = weight1 * parentAlpha; + if ((int)nextPoseIndex < _children.size()) { + _animStack[_children[nextPoseIndex]->getID()] = weight2 * parentAlpha; + } } return _poses; } diff --git a/libraries/animation/src/AnimOverlay.cpp b/libraries/animation/src/AnimOverlay.cpp index 767824a466..f5780505f6 100644 --- a/libraries/animation/src/AnimOverlay.cpp +++ b/libraries/animation/src/AnimOverlay.cpp @@ -42,7 +42,7 @@ void AnimOverlay::buildBoneSet(BoneSet boneSet) { } const AnimPoseVec& AnimOverlay::evaluate(AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut) { - qCDebug(animation) << "in anim overlay node" << _alphaVar << ": " << _alpha; + qCDebug(animation) << "in anim overlay node" << _alphaVar << ": " << _alpha << " id " << _id; // lookup parameters from animVars, using current instance variables as defaults. // NOTE: switching bonesets can be an expensive operation, let's try to avoid it. auto prevBoneSet = _boneSet; diff --git a/libraries/animation/src/AnimStateMachine.cpp b/libraries/animation/src/AnimStateMachine.cpp index 76b6a027ab..907bd562ad 100644 --- a/libraries/animation/src/AnimStateMachine.cpp +++ b/libraries/animation/src/AnimStateMachine.cpp @@ -26,10 +26,10 @@ const AnimPoseVec& AnimStateMachine::evaluate(AnimVariantMap& animVars, const An //animVars.set("Animation1", _currentState->getID()); //setMyNum(getMyNum() + 1.0f); - if (_currentState->getID().contains("userAnimNone")) { + if (_id.contains("userAnimStateMachine")) { _animStack.clear(); + qCDebug(animation) << "clearing anim stack"; } - _animStack[_currentState->getID()] = _alpha; QString desiredStateID = animVars.lookup(_currentStateVar, _currentState->getID()); if (_currentState->getID() != desiredStateID) { @@ -51,7 +51,8 @@ const AnimPoseVec& AnimStateMachine::evaluate(AnimVariantMap& animVars, const An // evaluate currentState transitions auto desiredState = evaluateTransitions(animVars); if (desiredState != _currentState) { - _previousStateID = _currentState->getID(); + //parenthesis means snapshot of this state. + _previousStateID = "(" + _currentState->getID() + ")"; switchState(animVars, context, desiredState); } @@ -59,6 +60,17 @@ const AnimPoseVec& AnimStateMachine::evaluate(AnimVariantMap& animVars, const An auto currentStateNode = _children[_currentState->getChildIndex()]; assert(currentStateNode); + if (!_previousStateID.contains("none")) { + _animStack[_previousStateID] = 1.0f - _alpha; + } + if (_alpha > 1.0f) { + _animStack[_currentState->getID()] = 1.0f; + } else { + _animStack[_currentState->getID()] = _alpha; + qCDebug(animation) << "setting child alpha " << _currentState->getID() << " " << _alpha; + + } + if (_duringInterp) { _alpha += _alphaVel * dt; if (_alpha < 1.0f) { @@ -95,10 +107,7 @@ const AnimPoseVec& AnimStateMachine::evaluate(AnimVariantMap& animVars, const An if (!_duringInterp) { _poses = currentStateNode->evaluate(animVars, context, dt, triggersOut); } - if (!_previousStateID.contains("none")) { - _animStack[_previousStateID] = 1.0f - _alpha; - } - _animStack[_currentState->getID()] = _alpha; + return _poses; } diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 02873835fa..b67eafb0c4 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1011,7 +1011,6 @@ void Rig::updateAnimations(float deltaTime, const glm::mat4& rootTransform, cons //clear the animation stack info //_animNode->getAnimStack()->clear(); _internalPoseSet._relativePoses = _animNode->evaluate(_animVars, context, deltaTime, triggersOut); - _fwdAlpha = _animNode->getMyNum(); if ((int)_internalPoseSet._relativePoses.size() != _animSkeleton->getNumJoints()) { // animations haven't fully loaded yet. From 41a8deb57538c71fd477d0bf5dd642c4422632c3 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 30 Jul 2018 14:51:04 -0700 Subject: [PATCH 066/332] Fix Linux build warnings --- interface/src/raypick/CollisionPick.cpp | 2 -- interface/src/raypick/CollisionPick.h | 2 +- libraries/physics/src/PhysicsEngine.cpp | 11 ++++------- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index ac3342110b..49c08a8f5c 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -135,7 +135,6 @@ void CollisionPick::computeShapeInfo(CollisionRegion& pick, ShapeInfo& shapeInfo const FBXGeometry& fbxGeometry = resource->getFBXGeometry(); int numFbxMeshes = fbxGeometry.meshes.size(); int totalNumVertices = 0; - glm::mat4 invRegistrationOffset = glm::translate(dimensions * (-ENTITY_ITEM_DEFAULT_REGISTRATION_POINT)); for (int i = 0; i < numFbxMeshes; i++) { const FBXMesh& mesh = fbxGeometry.meshes.at(i); totalNumVertices += mesh.vertices.size(); @@ -191,7 +190,6 @@ void CollisionPick::computeShapeInfo(CollisionRegion& pick, ShapeInfo& shapeInfo points.reserve(sizeToReserve); // copy points - uint32_t meshIndexOffset = (uint32_t)points.size(); const glm::vec3* vertexItr = vertices.cbegin(); while (vertexItr != vertices.cend()) { glm::vec3 point = *vertexItr; diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index d39e3be914..9a76d047bf 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -95,7 +95,7 @@ public: } CollisionRegion getMathematicalPick() const override; - PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const { return std::make_shared(pickVariant); } + PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const override { return std::make_shared(pickVariant); } PickResultPointer getEntityIntersection(const CollisionRegion& pick) override; PickResultPointer getOverlayIntersection(const CollisionRegion& pick) override; PickResultPointer getAvatarIntersection(const CollisionRegion& pick) override; diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index 592272acd5..20f09f6adf 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -843,8 +843,9 @@ void PhysicsEngine::setShowBulletConstraintLimits(bool value) { struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { AllContactsCallback(MotionStateType desiredObjectType, const ShapeInfo& shapeInfo, const Transform& transform) : desiredObjectType(desiredObjectType), - btCollisionWorld::ContactResultCallback(), - collisionObject() { + collisionObject(), + intersectingObjects(), + btCollisionWorld::ContactResultCallback() { const btCollisionShape* collisionShape = ObjectMotionState::getShapeManager()->getShape(shapeInfo); collisionObject.setCollisionShape(const_cast(collisionShape)); @@ -860,15 +861,11 @@ struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { ObjectMotionState::getShapeManager()->releaseShape(collisionObject.getCollisionShape()); } - AllContactsCallback(btCollisionObject& testCollisionObject) : - btCollisionWorld::ContactResultCallback(), collisionObject(testCollisionObject) { - } - MotionStateType desiredObjectType; btCollisionObject collisionObject; std::vector intersectingObjects; - virtual bool needsCollision(btBroadphaseProxy* proxy) const { + bool needsCollision(btBroadphaseProxy* proxy) const override { return true; } From fadc094a01f072c9ad1f467104520389351f4317 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 30 Jul 2018 15:10:21 -0700 Subject: [PATCH 067/332] Do not work with raw pointer in CollisionPickResult::compareAndProcessNewResult --- interface/src/raypick/CollisionPick.h | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index 9a76d047bf..b8da0db85e 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -69,14 +69,12 @@ public: bool checkOrFilterAgainstMaxDistance(float maxDistance) override { return true; } PickResultPointer compareAndProcessNewResult(const PickResultPointer& newRes) override { - const std::shared_ptr newCollisionResult = std::static_pointer_cast(*const_cast(&newRes)); - // Have to reference the raw pointer to work around strange type conversion errors - CollisionPickResult* newCollisionResultRaw = const_cast(newCollisionResult.get()); + const std::shared_ptr newCollisionResult = std::static_pointer_cast(newRes); - for (EntityIntersection& intersectingEntity : newCollisionResultRaw->intersectingEntities) { + for (EntityIntersection& intersectingEntity : newCollisionResult->intersectingEntities) { intersectingEntities.push_back(intersectingEntity); } - for (EntityIntersection& intersectingAvatar : newCollisionResultRaw->intersectingAvatars) { + for (EntityIntersection& intersectingAvatar : newCollisionResult->intersectingAvatars) { intersectingAvatars.push_back(intersectingAvatar); } From de7d9743369eb0ec5b99696767d5f979cd7d7e16 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 30 Jul 2018 16:45:31 -0700 Subject: [PATCH 068/332] Re-name EntityIntersection to ContactTestResult and remove its default constructor, plus update related variables --- interface/src/raypick/CollisionPick.cpp | 8 ++--- interface/src/raypick/CollisionPick.h | 44 ++++++++++++------------- libraries/physics/src/PhysicsEngine.cpp | 10 +++--- libraries/physics/src/PhysicsEngine.h | 20 +++++------ 4 files changed, 41 insertions(+), 41 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index 49c08a8f5c..c1fc8e9c87 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -271,8 +271,8 @@ PickResultPointer CollisionPick::getEntityIntersection(const CollisionRegion& pi return std::make_shared(); } - const auto& intersectingEntities = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_ENTITY, pick.shapeInfo, pick.transform); - return std::make_shared(pick, intersectingEntities, std::vector()); + const auto& entityIntersections = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_ENTITY, pick.shapeInfo, pick.transform); + return std::make_shared(pick, entityIntersections, std::vector()); } PickResultPointer CollisionPick::getOverlayIntersection(const CollisionRegion& pick) { @@ -285,8 +285,8 @@ PickResultPointer CollisionPick::getAvatarIntersection(const CollisionRegion& pi return std::make_shared(); } - const auto& intersectingAvatars = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_AVATAR, pick.shapeInfo, pick.transform); - return std::make_shared(pick, std::vector(), intersectingAvatars); + const auto& avatarIntersections = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_AVATAR, pick.shapeInfo, pick.transform); + return std::make_shared(pick, std::vector(), avatarIntersections); } PickResultPointer CollisionPick::getHUDIntersection(const CollisionRegion& pick) { diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index b8da0db85e..29990f21a7 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -18,22 +18,22 @@ public: CollisionPickResult() {} CollisionPickResult(const QVariantMap& pickVariant) : PickResult(pickVariant) {} - CollisionPickResult(const CollisionRegion& searchRegion, const std::vector& intersectingEntities, const std::vector& intersectingAvatars) : + CollisionPickResult(const CollisionRegion& searchRegion, const std::vector& entityIntersections, const std::vector& avatarIntersections) : PickResult(searchRegion.toVariantMap()), - intersects(intersectingEntities.size() || intersectingAvatars.size()), - intersectingEntities(intersectingEntities), - intersectingAvatars(intersectingAvatars) { + intersects(entityIntersections.size() || avatarIntersections.size()), + entityIntersections(entityIntersections), + avatarIntersections(avatarIntersections) { } CollisionPickResult(const CollisionPickResult& collisionPickResult) : PickResult(collisionPickResult.pickVariant) { - intersectingAvatars = collisionPickResult.intersectingAvatars; - intersectingEntities = collisionPickResult.intersectingEntities; - intersects = intersectingAvatars.size() || intersectingEntities.size(); + avatarIntersections = collisionPickResult.avatarIntersections; + entityIntersections = collisionPickResult.entityIntersections; + intersects = avatarIntersections.size() || entityIntersections.size(); } bool intersects { false }; - std::vector intersectingEntities; - std::vector intersectingAvatars; + std::vector entityIntersections; + std::vector avatarIntersections; virtual QVariantMap toVariantMap() const override { QVariantMap variantMap; @@ -41,21 +41,21 @@ public: variantMap["intersects"] = intersects; QVariantList qEntityIntersections; - for (auto intersectingEntity : intersectingEntities) { + for (auto entityIntersection : entityIntersections) { QVariantMap qEntityIntersection; - qEntityIntersection["objectID"] = intersectingEntity.id; - qEntityIntersection["pickCollisionPoint"] = vec3toVariant(intersectingEntity.testCollisionPoint); - qEntityIntersection["entityCollisionPoint"] = vec3toVariant(intersectingEntity.foundCollisionPoint); + qEntityIntersection["objectID"] = entityIntersection.foundID; + qEntityIntersection["pickCollisionPoint"] = vec3toVariant(entityIntersection.testCollisionPoint); + qEntityIntersection["entityCollisionPoint"] = vec3toVariant(entityIntersection.foundCollisionPoint); qEntityIntersections.append(qEntityIntersection); } variantMap["entityIntersections"] = qEntityIntersections; QVariantList qAvatarIntersections; - for (auto intersectingAvatar : intersectingAvatars) { + for (auto avatarIntersection : avatarIntersections) { QVariantMap qAvatarIntersection; - qAvatarIntersection["objectID"] = intersectingAvatar.id; - qAvatarIntersection["pickCollisionPoint"] = vec3toVariant(intersectingAvatar.testCollisionPoint); - qAvatarIntersection["entityCollisionPoint"] = vec3toVariant(intersectingAvatar.foundCollisionPoint); + qAvatarIntersection["objectID"] = avatarIntersection.foundID; + qAvatarIntersection["pickCollisionPoint"] = vec3toVariant(avatarIntersection.testCollisionPoint); + qAvatarIntersection["entityCollisionPoint"] = vec3toVariant(avatarIntersection.foundCollisionPoint); qAvatarIntersections.append(qAvatarIntersection); } variantMap["avatarIntersections"] = qAvatarIntersections; @@ -71,14 +71,14 @@ public: PickResultPointer compareAndProcessNewResult(const PickResultPointer& newRes) override { const std::shared_ptr newCollisionResult = std::static_pointer_cast(newRes); - for (EntityIntersection& intersectingEntity : newCollisionResult->intersectingEntities) { - intersectingEntities.push_back(intersectingEntity); + for (ContactTestResult& entityIntersection : newCollisionResult->entityIntersections) { + entityIntersections.push_back(entityIntersection); } - for (EntityIntersection& intersectingAvatar : newCollisionResult->intersectingAvatars) { - intersectingAvatars.push_back(intersectingAvatar); + for (ContactTestResult& avatarIntersection : newCollisionResult->avatarIntersections) { + avatarIntersections.push_back(avatarIntersection); } - intersects = intersectingEntities.size() || intersectingAvatars.size(); + intersects = entityIntersections.size() || avatarIntersections.size(); return std::make_shared(*this); } diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index 20f09f6adf..32708f6ead 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -844,7 +844,7 @@ struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { AllContactsCallback(MotionStateType desiredObjectType, const ShapeInfo& shapeInfo, const Transform& transform) : desiredObjectType(desiredObjectType), collisionObject(), - intersectingObjects(), + contacts(), btCollisionWorld::ContactResultCallback() { const btCollisionShape* collisionShape = ObjectMotionState::getShapeManager()->getShape(shapeInfo); @@ -863,7 +863,7 @@ struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { MotionStateType desiredObjectType; btCollisionObject collisionObject; - std::vector intersectingObjects; + std::vector contacts; bool needsCollision(btBroadphaseProxy* proxy) const override { return true; @@ -896,7 +896,7 @@ struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { } // This is the correct object type. Add it to the list. - intersectingObjects.emplace_back(candidate->getObjectID(), bulletToGLM(penetrationPoint), bulletToGLM(otherPenetrationPoint)); + contacts.emplace_back(candidate->getObjectID(), bulletToGLM(penetrationPoint), bulletToGLM(otherPenetrationPoint)); return 0; } @@ -907,10 +907,10 @@ protected: } }; -std::vector PhysicsEngine::getCollidingInRegion(MotionStateType desiredObjectType, const ShapeInfo& regionShapeInfo, const Transform& regionTransform) const { +const std::vector PhysicsEngine::getCollidingInRegion(MotionStateType desiredObjectType, const ShapeInfo& regionShapeInfo, const Transform& regionTransform) const { auto contactCallback = AllContactsCallback(desiredObjectType, regionShapeInfo, regionTransform); _dynamicsWorld->contactTest(&contactCallback.collisionObject, contactCallback); - return contactCallback.intersectingObjects; + return contactCallback.contacts; } diff --git a/libraries/physics/src/PhysicsEngine.h b/libraries/physics/src/PhysicsEngine.h index c6dfba518f..91e4cd4578 100644 --- a/libraries/physics/src/PhysicsEngine.h +++ b/libraries/physics/src/PhysicsEngine.h @@ -43,22 +43,22 @@ public: void* _b; // ObjectMotionState pointer }; -struct EntityIntersection { - EntityIntersection() { } +struct ContactTestResult { + ContactTestResult() = delete; - EntityIntersection(const EntityIntersection& entityIntersection) : - id(entityIntersection.id), - testCollisionPoint(entityIntersection.testCollisionPoint), - foundCollisionPoint(entityIntersection.foundCollisionPoint) { + ContactTestResult(const ContactTestResult& contactTestResult) : + foundID(contactTestResult.foundID), + testCollisionPoint(contactTestResult.testCollisionPoint), + foundCollisionPoint(contactTestResult.foundCollisionPoint) { } - EntityIntersection(QUuid id, glm::vec3 testCollisionPoint, glm::vec3 otherCollisionPoint) : - id(id), + ContactTestResult(QUuid foundID, glm::vec3 testCollisionPoint, glm::vec3 otherCollisionPoint) : + foundID(foundID), testCollisionPoint(testCollisionPoint), foundCollisionPoint(otherCollisionPoint) { } - QUuid id; + QUuid foundID; // The deepest point of an intersection within the volume of the test shape, in world space. glm::vec3 testCollisionPoint; // The deepest point of an intersection within the volume of the found object, in world space. @@ -128,7 +128,7 @@ public: void setShowBulletConstraintLimits(bool value); // Function for getting colliding ObjectMotionStates in the world of specified type - std::vector getCollidingInRegion(MotionStateType desiredObjectType, const ShapeInfo& regionShapeInfo, const Transform& regionTransform) const; + const std::vector getCollidingInRegion(MotionStateType desiredObjectType, const ShapeInfo& regionShapeInfo, const Transform& regionTransform) const; private: QList removeDynamicsForBody(btRigidBody* body); From 9e84603ca4e22f94cbb233aec547e146a669b3c4 Mon Sep 17 00:00:00 2001 From: Clement Date: Wed, 25 Jul 2018 16:06:52 -0700 Subject: [PATCH 069/332] Make proper -v and -h options for interface --- assignment-client/src/AssignmentClientApp.cpp | 12 +++- domain-server/src/DomainServer.cpp | 59 ++++++++++------- domain-server/src/DomainServer.h | 14 ++-- domain-server/src/main.cpp | 2 + interface/src/main.cpp | 66 ++++++++++++------- 5 files changed, 97 insertions(+), 56 deletions(-) diff --git a/assignment-client/src/AssignmentClientApp.cpp b/assignment-client/src/AssignmentClientApp.cpp index b37784cddc..acfbb8571c 100644 --- a/assignment-client/src/AssignmentClientApp.cpp +++ b/assignment-client/src/AssignmentClientApp.cpp @@ -11,6 +11,8 @@ #include "AssignmentClientApp.h" +#include + #include #include #include @@ -42,9 +44,8 @@ AssignmentClientApp::AssignmentClientApp(int argc, char* argv[]) : // parse command-line QCommandLineParser parser; parser.setApplicationDescription("High Fidelity Assignment Client"); - parser.addHelpOption(); - const QCommandLineOption helpOption = parser.addHelpOption(); + const QCommandLineOption versionOption = parser.addVersionOption(); QString typeDescription = "run single assignment client of given type\n# | Type\n============================"; for (Assignment::Type type = Assignment::FirstType; @@ -97,11 +98,16 @@ AssignmentClientApp::AssignmentClientApp(int argc, char* argv[]) : parser.addOption(parentPIDOption); if (!parser.parse(QCoreApplication::arguments())) { - qCritical() << parser.errorText() << endl; + std::cout << parser.errorText().toStdString() << std::endl; // Avoid Qt log spam parser.showHelp(); Q_UNREACHABLE(); } + if (parser.isSet(versionOption)) { + parser.showVersion(); + Q_UNREACHABLE(); + } + if (parser.isSet(helpOption)) { parser.showHelp(); Q_UNREACHABLE(); diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 86a9a58058..be842016d0 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -69,6 +70,12 @@ const QString ICE_SERVER_DEFAULT_HOSTNAME = "ice.highfidelity.com"; const QString ICE_SERVER_DEFAULT_HOSTNAME = "dev-ice.highfidelity.com"; #endif +QString DomainServer::_iceServerAddr { ICE_SERVER_DEFAULT_HOSTNAME }; +int DomainServer::_iceServerPort { ICE_SERVER_DEFAULT_PORT }; +bool DomainServer::_overrideDomainID { false }; +QUuid DomainServer::_overridingDomainID; +int DomainServer::_parentPID { -1 }; + bool DomainServer::forwardMetaverseAPIRequest(HTTPConnection* connection, const QString& metaversePath, const QString& requestSubobjectKey, @@ -148,24 +155,13 @@ bool DomainServer::forwardMetaverseAPIRequest(HTTPConnection* connection, DomainServer::DomainServer(int argc, char* argv[]) : QCoreApplication(argc, argv), _gatekeeper(this), - _httpManager(QHostAddress::AnyIPv4, DOMAIN_SERVER_HTTP_PORT, QString("%1/resources/web/").arg(QCoreApplication::applicationDirPath()), this), - _allAssignments(), - _unfulfilledAssignments(), - _isUsingDTLS(false), - _oauthProviderURL(), - _oauthClientID(), - _hostname(), - _ephemeralACScripts(), - _webAuthenticationStateSet(), - _cookieSessionHash(), - _automaticNetworkingSetting(), - _settingsManager(), - _iceServerAddr(ICE_SERVER_DEFAULT_HOSTNAME), - _iceServerPort(ICE_SERVER_DEFAULT_PORT) + _httpManager(QHostAddress::AnyIPv4, DOMAIN_SERVER_HTTP_PORT, QString("%1/resources/web/").arg(QCoreApplication::applicationDirPath()), this) { - PathUtils::removeTemporaryApplicationDirs(); + if (_parentPID != -1) { + watchParentProcess(_parentPID); + } - parseCommandLine(); + PathUtils::removeTemporaryApplicationDirs(); DependencyManager::set(); DependencyManager::set(); @@ -316,10 +312,11 @@ DomainServer::DomainServer(int argc, char* argv[]) : connect(_contentManager.get(), &DomainContentBackupManager::recoveryCompleted, this, &DomainServer::restart); } -void DomainServer::parseCommandLine() { +void DomainServer::parseCommandLine(int argc, char* argv[]) { QCommandLineParser parser; parser.setApplicationDescription("High Fidelity Domain Server"); - parser.addHelpOption(); + const QCommandLineOption versionOption = parser.addVersionOption(); + const QCommandLineOption helpOption = parser.addHelpOption(); const QCommandLineOption iceServerAddressOption("i", "ice-server address", "IP:PORT or HOSTNAME:PORT"); parser.addOption(iceServerAddressOption); @@ -336,8 +333,24 @@ void DomainServer::parseCommandLine() { const QCommandLineOption parentPIDOption(PARENT_PID_OPTION, "PID of the parent process", "parent-pid"); parser.addOption(parentPIDOption); - if (!parser.parse(QCoreApplication::arguments())) { - qWarning() << parser.errorText() << endl; + + QStringList arguments; + for (int i = 0; i < argc; ++i) { + arguments << argv[i]; + } + if (!parser.parse(arguments)) { + std::cout << parser.errorText().toStdString() << std::endl; // Avoid Qt log spam + QCoreApplication mockApp(argc, argv); // required for call to showHelp() + parser.showHelp(); + Q_UNREACHABLE(); + } + + if (parser.isSet(versionOption)) { + parser.showVersion(); + Q_UNREACHABLE(); + } + if (parser.isSet(helpOption)) { + QCoreApplication mockApp(argc, argv); // required for call to showHelp() parser.showHelp(); Q_UNREACHABLE(); } @@ -354,7 +367,7 @@ void DomainServer::parseCommandLine() { if (_iceServerAddr.isEmpty()) { qWarning() << "Could not parse an IP address and port combination from" << hostnamePortString; - QMetaObject::invokeMethod(this, "quit", Qt::QueuedConnection); + ::exit(0); } } @@ -370,8 +383,8 @@ void DomainServer::parseCommandLine() { int parentPID = parser.value(parentPIDOption).toInt(&ok); if (ok) { - qDebug() << "Parent process PID is" << parentPID; - watchParentProcess(parentPID); + _parentPID = parentPID; + qDebug() << "Parent process PID is" << _parentPID; } } } diff --git a/domain-server/src/DomainServer.h b/domain-server/src/DomainServer.h index c69267f379..7e96787371 100644 --- a/domain-server/src/DomainServer.h +++ b/domain-server/src/DomainServer.h @@ -59,6 +59,8 @@ public: DomainServer(int argc, char* argv[]); ~DomainServer(); + static void parseCommandLine(int argc, char* argv[]); + enum DomainType { NonMetaverse, MetaverseDomain, @@ -138,7 +140,6 @@ signals: private: QUuid getID(); - void parseCommandLine(); QString getContentBackupDir(); QString getEntitiesDirPath(); @@ -228,7 +229,7 @@ private: QQueue _unfulfilledAssignments; TransactionHash _pendingAssignmentCredits; - bool _isUsingDTLS; + bool _isUsingDTLS { false }; QUrl _oauthProviderURL; QString _oauthClientID; @@ -265,10 +266,11 @@ private: friend class DomainGatekeeper; friend class DomainMetadata; - QString _iceServerAddr; - int _iceServerPort; - bool _overrideDomainID { false }; // should we override the domain-id from settings? - QUuid _overridingDomainID { QUuid() }; // what should we override it with? + static QString _iceServerAddr; + static int _iceServerPort; + static bool _overrideDomainID; // should we override the domain-id from settings? + static QUuid _overridingDomainID; // what should we override it with? + static int _parentPID; bool _sendICEServerAddressToMetaverseAPIInProgress { false }; bool _sendICEServerAddressToMetaverseAPIRedo { false }; diff --git a/domain-server/src/main.cpp b/domain-server/src/main.cpp index d7856bf867..7aea9cc3d4 100644 --- a/domain-server/src/main.cpp +++ b/domain-server/src/main.cpp @@ -24,6 +24,8 @@ int main(int argc, char* argv[]) { setupHifiApplication(BuildInfo::DOMAIN_SERVER_NAME); + DomainServer::parseCommandLine(argc, argv); + Setting::init(); int currentExitCode = 0; diff --git a/interface/src/main.cpp b/interface/src/main.cpp index c1ba6f0535..3e3c9da148 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -42,6 +42,48 @@ extern "C" { int main(int argc, const char* argv[]) { setupHifiApplication(BuildInfo::INTERFACE_NAME); + QStringList arguments; + for (int i = 0; i < argc; ++i) { + arguments << argv[i]; + } + + QCommandLineParser parser; + parser.setApplicationDescription("High Fidelity Interface"); + QCommandLineOption versionOption = parser.addVersionOption(); + QCommandLineOption helpOption = parser.addHelpOption(); + + QCommandLineOption urlOption("url", "", "value"); + QCommandLineOption noUpdaterOption("no-updater", "Do not show auto-updater"); + QCommandLineOption checkMinSpecOption("checkMinSpec", "Check if machine meets minimum specifications"); + QCommandLineOption runServerOption("runServer", "Whether to run the server"); + QCommandLineOption serverContentPathOption("serverContentPath", "Where to find server content", "serverContentPath"); + QCommandLineOption allowMultipleInstancesOption("allowMultipleInstances", "Allow multiple instances to run"); + QCommandLineOption overrideAppLocalDataPathOption("cache", "set test cache ", "dir"); + QCommandLineOption overrideScriptsPathOption(SCRIPTS_SWITCH, "set scripts ", "path"); + + parser.addOption(urlOption); + parser.addOption(noUpdaterOption); + parser.addOption(checkMinSpecOption); + parser.addOption(runServerOption); + parser.addOption(serverContentPathOption); + parser.addOption(overrideAppLocalDataPathOption); + parser.addOption(overrideScriptsPathOption); + parser.addOption(allowMultipleInstancesOption); + + if (!parser.parse(arguments)) { + std::cout << parser.errorText().toStdString() << std::endl; // Avoid Qt log spam + } + + if (parser.isSet(versionOption)) { + parser.showVersion(); + Q_UNREACHABLE(); + } + if (parser.isSet(helpOption)) { + QCoreApplication mockApp(argc, const_cast(argv)); // required for call to showHelp() + parser.showHelp(); + Q_UNREACHABLE(); + } + // Early check for --traceFile argument auto tracer = DependencyManager::set(); const char * traceFile = nullptr; @@ -95,30 +137,6 @@ int main(int argc, const char* argv[]) { qDebug() << "Crash handler started:" << crashHandlerStarted; } - QStringList arguments; - for (int i = 0; i < argc; ++i) { - arguments << argv[i]; - } - - QCommandLineParser parser; - QCommandLineOption urlOption("url", "", "value"); - QCommandLineOption noUpdaterOption("no-updater", "Do not show auto-updater"); - QCommandLineOption checkMinSpecOption("checkMinSpec", "Check if machine meets minimum specifications"); - QCommandLineOption runServerOption("runServer", "Whether to run the server"); - QCommandLineOption serverContentPathOption("serverContentPath", "Where to find server content", "serverContentPath"); - QCommandLineOption allowMultipleInstancesOption("allowMultipleInstances", "Allow multiple instances to run"); - QCommandLineOption overrideAppLocalDataPathOption("cache", "set test cache ", "dir"); - QCommandLineOption overrideScriptsPathOption(SCRIPTS_SWITCH, "set scripts ", "path"); - parser.addOption(urlOption); - parser.addOption(noUpdaterOption); - parser.addOption(checkMinSpecOption); - parser.addOption(runServerOption); - parser.addOption(serverContentPathOption); - parser.addOption(overrideAppLocalDataPathOption); - parser.addOption(overrideScriptsPathOption); - parser.addOption(allowMultipleInstancesOption); - parser.parse(arguments); - const QString& applicationName = getInterfaceSharedMemoryName(); bool instanceMightBeRunning = true; From 333cbc99ad5bf7eeb6b0c4d2ccb2230e08610f3a Mon Sep 17 00:00:00 2001 From: Clement Date: Wed, 25 Jul 2018 16:08:42 -0700 Subject: [PATCH 070/332] Remove static logging --- libraries/gpu/src/gpu/Texture.cpp | 8 -------- libraries/shared/src/LogHandler.cpp | 5 ----- libraries/shared/src/PathUtils.cpp | 2 -- 3 files changed, 15 deletions(-) diff --git a/libraries/gpu/src/gpu/Texture.cpp b/libraries/gpu/src/gpu/Texture.cpp index 34262b0cd9..2d038ca3ba 100755 --- a/libraries/gpu/src/gpu/Texture.cpp +++ b/libraries/gpu/src/gpu/Texture.cpp @@ -43,14 +43,6 @@ bool recommendedSparseTextures = (QThread::idealThreadCount() >= MIN_CORES_FOR_I std::atomic Texture::_enableSparseTextures { recommendedSparseTextures }; -struct ReportTextureState { - ReportTextureState() { - qCDebug(gpulogging) << "[TEXTURE TRANSFER SUPPORT]" - << "\n\tidealThreadCount:" << QThread::idealThreadCount() - << "\n\tRECOMMENDED enableSparseTextures:" << recommendedSparseTextures; - } -} report; - void Texture::setEnableSparseTextures(bool enabled) { #ifdef Q_OS_WIN qCDebug(gpulogging) << "[TEXTURE TRANSFER SUPPORT] SETTING - Enable Sparse Textures and Dynamic Texture Management:" << enabled; diff --git a/libraries/shared/src/LogHandler.cpp b/libraries/shared/src/LogHandler.cpp index 45cf01510d..65651373be 100644 --- a/libraries/shared/src/LogHandler.cpp +++ b/libraries/shared/src/LogHandler.cpp @@ -33,17 +33,12 @@ LogHandler& LogHandler::getInstance() { } LogHandler::LogHandler() { - // when the log handler is first setup we should print our timezone - QString timezoneString = "Time zone: " + QDateTime::currentDateTime().toString("t"); - printMessage(LogMsgType::LogInfo, QMessageLogContext(), timezoneString); - // make sure we setup the repeated message flusher, but do it on the LogHandler thread QMetaObject::invokeMethod(this, "setupRepeatedMessageFlusher"); } LogHandler::~LogHandler() { flushRepeatedMessages(); - printMessage(LogMsgType::LogDebug, QMessageLogContext(), "LogHandler shutdown."); } const char* stringForLogType(LogMsgType msgType) { diff --git a/libraries/shared/src/PathUtils.cpp b/libraries/shared/src/PathUtils.cpp index 7fc94db6af..e66121f159 100644 --- a/libraries/shared/src/PathUtils.cpp +++ b/libraries/shared/src/PathUtils.cpp @@ -90,7 +90,6 @@ const QString& PathUtils::resourcesPath() { staticResourcePath = projectRootPath() + "/interface/resources/"; } #endif - qDebug() << "Resource path resolved to " << staticResourcePath; }); return staticResourcePath; } @@ -105,7 +104,6 @@ const QString& PathUtils::resourcesUrl() { staticResourcePath = QUrl::fromLocalFile(projectRootPath() + "/interface/resources/").toString(); } #endif - qDebug() << "Resource url resolved to " << staticResourcePath; }); return staticResourcePath; } From f8e98d2c6abed3d2adf9fade9cbdce9676daa1f0 Mon Sep 17 00:00:00 2001 From: Clement Date: Wed, 25 Jul 2018 17:09:27 -0700 Subject: [PATCH 071/332] Remove 2 year old migration code --- domain-server/src/DomainServer.cpp | 31 ++++++++--- domain-server/src/DomainServer.h | 2 + .../src/DomainServerSettingsManager.cpp | 9 ++-- .../src/DomainServerSettingsManager.h | 4 +- libraries/shared/src/HifiConfigVariantMap.cpp | 53 +------------------ libraries/shared/src/HifiConfigVariantMap.h | 3 +- 6 files changed, 33 insertions(+), 69 deletions(-) diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index be842016d0..728d46d7ca 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -74,6 +74,8 @@ QString DomainServer::_iceServerAddr { ICE_SERVER_DEFAULT_HOSTNAME }; int DomainServer::_iceServerPort { ICE_SERVER_DEFAULT_PORT }; bool DomainServer::_overrideDomainID { false }; QUuid DomainServer::_overridingDomainID; +bool DomainServer::_getTempName { false }; +QString DomainServer::_userConfigFilename; int DomainServer::_parentPID { -1 }; bool DomainServer::forwardMetaverseAPIRequest(HTTPConnection* connection, @@ -181,9 +183,16 @@ DomainServer::DomainServer(int argc, char* argv[]) : // (need this since domain-server can restart itself and maintain static variables) DependencyManager::set(); - auto args = arguments(); - - _settingsManager.setupConfigMap(args); + // load the user config + QString userConfigFilename; + if (!_userConfigFilename.isEmpty()) { + userConfigFilename = _userConfigFilename; + } else { + // we weren't passed a user config path + static const QString USER_CONFIG_FILE_NAME = "config.json"; + userConfigFilename = PathUtils::getAppDataFilePath(USER_CONFIG_FILE_NAME); + } + _settingsManager.setupConfigMap(userConfigFilename); // setup a shutdown event listener to handle SIGTERM or WM_CLOSE for us #ifdef _WIN32 @@ -242,8 +251,7 @@ DomainServer::DomainServer(int argc, char* argv[]) : } // check for the temporary name parameter - const QString GET_TEMPORARY_NAME_SWITCH = "--get-temp-name"; - if (args.contains(GET_TEMPORARY_NAME_SWITCH)) { + if (_getTempName) { getTemporaryName(); } @@ -321,14 +329,14 @@ void DomainServer::parseCommandLine(int argc, char* argv[]) { const QCommandLineOption iceServerAddressOption("i", "ice-server address", "IP:PORT or HOSTNAME:PORT"); parser.addOption(iceServerAddressOption); - const QCommandLineOption domainIDOption("d", "domain-server uuid"); + const QCommandLineOption domainIDOption("d", "domain-server uuid", "uuid"); parser.addOption(domainIDOption); const QCommandLineOption getTempNameOption("get-temp-name", "Request a temporary domain-name"); parser.addOption(getTempNameOption); - const QCommandLineOption masterConfigOption("master-config", "Deprecated config-file option"); - parser.addOption(masterConfigOption); + const QCommandLineOption userConfigOption("user-config", "Pass user config file pass", "path"); + parser.addOption(userConfigOption); const QCommandLineOption parentPIDOption(PARENT_PID_OPTION, "PID of the parent process", "parent-pid"); parser.addOption(parentPIDOption); @@ -377,6 +385,13 @@ void DomainServer::parseCommandLine(int argc, char* argv[]) { qDebug() << "domain-server ID is" << _overridingDomainID; } + if (parser.isSet(getTempNameOption)) { + _getTempName = true; + } + + if (parser.isSet(userConfigOption)) { + _userConfigFilename = parser.value(userConfigOption); + } if (parser.isSet(parentPIDOption)) { bool ok = false; diff --git a/domain-server/src/DomainServer.h b/domain-server/src/DomainServer.h index 7e96787371..e2bddc1aa5 100644 --- a/domain-server/src/DomainServer.h +++ b/domain-server/src/DomainServer.h @@ -270,6 +270,8 @@ private: static int _iceServerPort; static bool _overrideDomainID; // should we override the domain-id from settings? static QUuid _overridingDomainID; // what should we override it with? + static bool _getTempName; + static QString _userConfigFilename; static int _parentPID; bool _sendICEServerAddressToMetaverseAPIInProgress { false }; diff --git a/domain-server/src/DomainServerSettingsManager.cpp b/domain-server/src/DomainServerSettingsManager.cpp index 2bcaa8899e..780fad15f2 100644 --- a/domain-server/src/DomainServerSettingsManager.cpp +++ b/domain-server/src/DomainServerSettingsManager.cpp @@ -191,13 +191,12 @@ void DomainServerSettingsManager::processSettingsRequestPacket(QSharedPointersendPacketList(std::move(packetList), message->getSenderSockAddr()); } -void DomainServerSettingsManager::setupConfigMap(const QStringList& argumentList) { +void DomainServerSettingsManager::setupConfigMap(const QString& userConfigFilename) { // since we're called from the DomainServerSettingsManager constructor, we don't take a write lock here // even though we change the underlying config map - _argumentList = argumentList; - - _configMap.loadConfig(_argumentList); + _configMap.setUserConfigFilename(userConfigFilename); + _configMap.loadConfig(); static const auto VERSION_SETTINGS_KEYPATH = "version"; QVariant* versionVariant = _configMap.valueForKeyPath(VERSION_SETTINGS_KEYPATH); @@ -1736,7 +1735,7 @@ void DomainServerSettingsManager::persistToFile() { // failed to write, reload whatever the current config state is // with a write lock since we're about to overwrite the config map QWriteLocker locker(&_settingsLock); - _configMap.loadConfig(_argumentList); + _configMap.loadConfig(); } } diff --git a/domain-server/src/DomainServerSettingsManager.h b/domain-server/src/DomainServerSettingsManager.h index bcd33c2bb0..2020561205 100644 --- a/domain-server/src/DomainServerSettingsManager.h +++ b/domain-server/src/DomainServerSettingsManager.h @@ -49,7 +49,7 @@ public: DomainServerSettingsManager(); bool handleAuthenticatedHTTPRequest(HTTPConnection* connection, const QUrl& url); - void setupConfigMap(const QStringList& argumentList); + void setupConfigMap(const QString& userConfigFilename); // each of the three methods in this group takes a read lock of _settingsLock // and cannot be called when the a write lock is held by the same thread @@ -144,8 +144,6 @@ private slots: void processUsernameFromIDRequestPacket(QSharedPointer message, SharedNodePointer sendingNode); private: - QStringList _argumentList; - QJsonArray filteredDescriptionArray(bool isContentSettings); void updateSetting(const QString& key, const QJsonValue& newValue, QVariantMap& settingMap, const QJsonObject& settingDescription); diff --git a/libraries/shared/src/HifiConfigVariantMap.cpp b/libraries/shared/src/HifiConfigVariantMap.cpp index 59f660feee..91ec056f1a 100644 --- a/libraries/shared/src/HifiConfigVariantMap.cpp +++ b/libraries/shared/src/HifiConfigVariantMap.cpp @@ -91,58 +91,7 @@ QVariantMap HifiConfigVariantMap::mergeCLParametersWithJSONConfig(const QStringL return mergedMap; } -void HifiConfigVariantMap::loadConfig(const QStringList& argumentList) { - // load the user config - const QString USER_CONFIG_FILE_OPTION = "--user-config"; - static const QString USER_CONFIG_FILE_NAME = "config.json"; - - int userConfigIndex = argumentList.indexOf(USER_CONFIG_FILE_OPTION); - if (userConfigIndex != -1) { - _userConfigFilename = argumentList[userConfigIndex + 1]; - } else { - // we weren't passed a user config path - _userConfigFilename = PathUtils::getAppDataFilePath(USER_CONFIG_FILE_NAME); - - // as of 1/19/2016 this path was moved so we attempt a migration for first run post migration here - - // figure out what the old path was - - // if our build version is "dev" we should migrate from a different organization folder - - auto oldConfigFilename = QString("%1/%2/%3/%4").arg(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation), - QCoreApplication::organizationName(), - QCoreApplication::applicationName(), - USER_CONFIG_FILE_NAME); - - oldConfigFilename = oldConfigFilename.replace("High Fidelity - dev", "High Fidelity"); - - - // check if there's already a config file at the new path - QFile newConfigFile { _userConfigFilename }; - if (!newConfigFile.exists()) { - - QFile oldConfigFile { oldConfigFilename }; - - if (oldConfigFile.exists()) { - // we have the old file and not the new file - time to copy the file - - // make the destination directory if it doesn't exist - auto dataDirectory = PathUtils::getAppDataPath(); - if (QDir().mkpath(dataDirectory)) { - if (oldConfigFile.copy(_userConfigFilename)) { - qCDebug(shared) << "Migrated config file from" << oldConfigFilename << "to" << _userConfigFilename; - } else { - qCWarning(shared) << "Could not copy previous config file from" << oldConfigFilename << "to" << _userConfigFilename - << "- please try to copy manually and restart."; - } - } else { - qCWarning(shared) << "Could not create application data directory" << dataDirectory << "- unable to migrate previous config file."; - } - } - } - - } - +void HifiConfigVariantMap::loadConfig() { loadMapFromJSONFile(_userConfig, _userConfigFilename); } diff --git a/libraries/shared/src/HifiConfigVariantMap.h b/libraries/shared/src/HifiConfigVariantMap.h index ee248ec3d2..5725ae8f34 100644 --- a/libraries/shared/src/HifiConfigVariantMap.h +++ b/libraries/shared/src/HifiConfigVariantMap.h @@ -21,7 +21,7 @@ class HifiConfigVariantMap { public: static QVariantMap mergeCLParametersWithJSONConfig(const QStringList& argumentList); - void loadConfig(const QStringList& argumentList); + void loadConfig(); const QVariant value(const QString& key) const { return _userConfig.value(key); } QVariant* valueForKeyPath(const QString& keyPath, bool shouldCreateIfMissing = false) @@ -30,6 +30,7 @@ public: QVariantMap& getConfig() { return _userConfig; } const QString& getUserConfigFilename() const { return _userConfigFilename; } + void setUserConfigFilename(const QString& filename) { _userConfigFilename = filename; } private: QString _userConfigFilename; From 949c7f8c1913dd40d2142770dc68ece43337887b Mon Sep 17 00:00:00 2001 From: Clement Date: Wed, 25 Jul 2018 16:32:25 -0700 Subject: [PATCH 072/332] Add automated test tool scripting interface --- assignment-client/src/Agent.cpp | 1 - libraries/script-engine/src/ScriptEngine.cpp | 5 +++ .../src/StackTestScriptingInterface.cpp | 31 +++++++++++++++++++ .../src/StackTestScriptingInterface.h | 29 +++++++++++++++++ 4 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 libraries/script-engine/src/StackTestScriptingInterface.cpp create mode 100644 libraries/script-engine/src/StackTestScriptingInterface.h diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 1944d23654..c03dba372b 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -365,7 +365,6 @@ void Agent::executeScript() { // give scripts access to the Users object _scriptEngine->registerGlobalObject("Users", DependencyManager::get().data()); - auto player = DependencyManager::get(); connect(player.data(), &recording::Deck::playbackStateChanged, [=] { if (player->isPlaying()) { diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 99c02ba1f6..258a0354df 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -74,6 +74,7 @@ #include "WebSocketClass.h" #include "RecordingScriptingInterface.h" #include "ScriptEngines.h" +#include "StackTestScriptingInterface.h" #include "ModelScriptingInterface.h" @@ -748,6 +749,10 @@ void ScriptEngine::init() { qScriptRegisterMetaType(this, meshesToScriptValue, meshesFromScriptValue); registerGlobalObject("UserActivityLogger", DependencyManager::get().data()); + +#if DEV_BUILD || PR_BUILD + registerGlobalObject("StackTest", new StackTestScriptingInterface()); +#endif } void ScriptEngine::registerValue(const QString& valueName, QScriptValue value) { diff --git a/libraries/script-engine/src/StackTestScriptingInterface.cpp b/libraries/script-engine/src/StackTestScriptingInterface.cpp new file mode 100644 index 0000000000..432c1807f0 --- /dev/null +++ b/libraries/script-engine/src/StackTestScriptingInterface.cpp @@ -0,0 +1,31 @@ +// +// StackTestScriptingInterface.cpp +// libraries/script-engine/src +// +// Created by Clement Brisset on 7/25/18. +// Copyright 2018 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "StackTestScriptingInterface.h" + +#include +#include + +Q_DECLARE_LOGGING_CATEGORY(stackTest) +Q_LOGGING_CATEGORY(stackTest, "hifi.tools.stack-test") + +void StackTestScriptingInterface::pass(QString message) { + qCInfo(stackTest) << "PASS" << qPrintable(message); +} + +void StackTestScriptingInterface::fail(QString message) { + qCInfo(stackTest) << "FAIL" << qPrintable(message); +} + +void StackTestScriptingInterface::exit(QString message) { + qCInfo(stackTest) << "COMPLETE" << qPrintable(message); + qApp->exit(); +} diff --git a/libraries/script-engine/src/StackTestScriptingInterface.h b/libraries/script-engine/src/StackTestScriptingInterface.h new file mode 100644 index 0000000000..81eb95ea73 --- /dev/null +++ b/libraries/script-engine/src/StackTestScriptingInterface.h @@ -0,0 +1,29 @@ +// +// StackTestScriptingInterface.h +// libraries/script-engine/src +// +// Created by Clement Brisset on 7/25/18. +// Copyright 2018 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#pragma once + +#ifndef hifi_StackTestScriptingInterface_h +#define hifi_StackTestScriptingInterface_h + +#include + +class StackTestScriptingInterface : public QObject { + Q_OBJECT + +public: + Q_INVOKABLE void pass(QString message = QString()); + Q_INVOKABLE void fail(QString message = QString()); + + Q_INVOKABLE void exit(QString message = QString()); +}; + +#endif // hifi_StackTestScriptingInterface_h From 30600dff930ed0615a702ff9609f3e6eac3cc62c Mon Sep 17 00:00:00 2001 From: Olivier Prat Date: Tue, 31 Jul 2018 15:23:27 +0200 Subject: [PATCH 073/332] Non shadow casters now increase shadow scene bounds only in light direction --- .../src/workload/GameWorkloadRenderer.cpp | 2 +- .../render-utils/src/RenderShadowTask.cpp | 116 ++++++++++++++++-- libraries/render-utils/src/RenderShadowTask.h | 20 ++- libraries/render/src/render/CullTask.cpp | 90 ++++++-------- libraries/render/src/render/CullTask.h | 16 +++ 5 files changed, 179 insertions(+), 65 deletions(-) diff --git a/interface/src/workload/GameWorkloadRenderer.cpp b/interface/src/workload/GameWorkloadRenderer.cpp index a8b65492d3..a825967da8 100644 --- a/interface/src/workload/GameWorkloadRenderer.cpp +++ b/interface/src/workload/GameWorkloadRenderer.cpp @@ -101,7 +101,7 @@ namespace render { } } -GameWorkloadRenderItem::GameWorkloadRenderItem() : _key(render::ItemKey::Builder::opaqueShape().withTagBits(render::ItemKey::TAG_BITS_0 | render::ItemKey::TAG_BITS_1)) { +GameWorkloadRenderItem::GameWorkloadRenderItem() : _key(render::ItemKey::Builder::opaqueShape().withoutShadowCaster().withTagBits(render::ItemKey::TAG_BITS_0 | render::ItemKey::TAG_BITS_1)) { } render::ItemKey GameWorkloadRenderItem::getKey() const { diff --git a/libraries/render-utils/src/RenderShadowTask.cpp b/libraries/render-utils/src/RenderShadowTask.cpp index 327eac8867..c9171d7b69 100644 --- a/libraries/render-utils/src/RenderShadowTask.cpp +++ b/libraries/render-utils/src/RenderShadowTask.cpp @@ -264,22 +264,21 @@ void RenderShadowTask::build(JobModel& task, const render::Varying& input, rende char jobName[64]; sprintf(jobName, "ShadowCascadeSetup%d", i); const auto cascadeSetupOutput = task.addJob(jobName, i, _cullFunctor, tagBits, tagMask); - const auto shadowRenderFilter = cascadeSetupOutput.getN(0); - const auto shadowBoundsFilter = cascadeSetupOutput.getN(1); + const auto shadowFilter = cascadeSetupOutput.getN(0); auto antiFrustum = render::Varying(ViewFrustumPointer()); - cascadeFrustums[i] = cascadeSetupOutput.getN(2); + cascadeFrustums[i] = cascadeSetupOutput.getN(1); if (i > 1) { antiFrustum = cascadeFrustums[i - 2]; } // CPU jobs: finer grained culling - const auto cullInputs = CullShapeBounds::Inputs(sortedShapes, shadowRenderFilter, shadowBoundsFilter, antiFrustum).asVarying(); - const auto culledShadowItemsAndBounds = task.addJob("CullShadowCascade", cullInputs, shadowCullFunctor, RenderDetails::SHADOW); + const auto cullInputs = CullShadowBounds::Inputs(sortedShapes, shadowFilter, antiFrustum).asVarying(); + const auto culledShadowItemsAndBounds = task.addJob("CullShadowCascade", cullInputs, shadowCullFunctor); // GPU jobs: Render to shadow map sprintf(jobName, "RenderShadowMap%d", i); task.addJob(jobName, culledShadowItemsAndBounds, shapePlumber, i); - task.addJob("ShadowCascadeTeardown", shadowRenderFilter); + task.addJob("ShadowCascadeTeardown", shadowFilter); } task.addJob("ShadowTeardown", setupOutput); @@ -412,11 +411,8 @@ void RenderShadowCascadeSetup::run(const render::RenderContextPointer& renderCon const auto globalShadow = lightStage->getCurrentKeyShadow(); if (globalShadow && _cascadeIndexgetCascadeCount()) { - auto baseFilter = ItemFilter::Builder::visibleWorldItems().withTypeShape().withOpaque().withoutLayered().withTagBits(_tagBits, _tagMask); // Second item filter is to filter items to keep in shadow frustum computation (here we need to keep shadow receivers) - output.edit1() = baseFilter; - // First item filter is to filter items to render in shadow map (so only keep casters) - output.edit0() = baseFilter.withShadowCaster(); + output.edit0() = ItemFilter::Builder::visibleWorldItems().withTypeShape().withOpaque().withoutLayered().withTagBits(_tagBits, _tagMask); // Set the keylight render args auto& cascade = globalShadow->getCascade(_cascadeIndex); @@ -429,11 +425,10 @@ void RenderShadowCascadeSetup::run(const render::RenderContextPointer& renderCon texelSize *= minTexelCount; _cullFunctor._minSquareSize = texelSize * texelSize; - output.edit2() = cascadeFrustum; + output.edit1() = cascadeFrustum; } else { output.edit0() = ItemFilter::Builder::nothing(); - output.edit1() = ItemFilter::Builder::nothing(); - output.edit2() = ViewFrustumPointer(); + output.edit1() = ViewFrustumPointer(); } } @@ -456,3 +451,98 @@ void RenderShadowTeardown::run(const render::RenderContextPointer& renderContext // Reset the render args args->_renderMode = input.get0(); } + +static AABox& merge(AABox& box, const AABox& otherBox, const glm::vec3& dir) { + if (!otherBox.isInvalid()) { + int vertexIndex = 0; + vertexIndex |= ((dir.z > 0.0f) & 1) << 2; + vertexIndex |= ((dir.y > 0.0f) & 1) << 1; + vertexIndex |= ((dir.x < 0.0f) & 1); + auto vertex = otherBox.getVertex((BoxVertex)vertexIndex); + if (!box.isInvalid()) { + const auto boxCenter = box.calcCenter(); + vertex -= boxCenter; + vertex = dir * glm::max(0.0f, glm::dot(vertex, dir)); + vertex += boxCenter; + } + box += vertex; + } + return box; +} + +void CullShadowBounds::run(const render::RenderContextPointer& renderContext, const Inputs& inputs, Outputs& outputs) { + assert(renderContext->args); + assert(renderContext->args->hasViewFrustum()); + RenderArgs* args = renderContext->args; + + const auto& inShapes = inputs.get0(); + const auto& filter = inputs.get1(); + ViewFrustumPointer antiFrustum; + auto& outShapes = outputs.edit0(); + auto& outBounds = outputs.edit1(); + + if (!inputs[3].isNull()) { + antiFrustum = inputs.get2(); + } + outShapes.clear(); + outBounds = AABox(); + + if (!filter.selectsNothing()) { + auto& details = args->_details.edit(RenderDetails::SHADOW); + render::CullTest test(_cullFunctor, args, details, antiFrustum); + auto scene = args->_scene; + auto lightStage = renderContext->_scene->getStage(); + assert(lightStage); + const auto globalLightDir = lightStage->getCurrentKeyLight()->getDirection(); + auto castersFilter = render::ItemFilter::Builder(filter).withShadowCaster().build(); + const auto& receiversFilter = filter; + + for (auto& inItems : inShapes) { + auto key = inItems.first; + auto outItems = outShapes.find(key); + if (outItems == outShapes.end()) { + outItems = outShapes.insert(std::make_pair(key, ItemBounds{})).first; + outItems->second.reserve(inItems.second.size()); + } + + details._considered += (int)inItems.second.size(); + + if (antiFrustum == nullptr) { + for (auto& item : inItems.second) { + if (test.solidAngleTest(item.bound) && test.frustumTest(item.bound)) { + const auto shapeKey = scene->getItem(item.id).getKey(); + if (castersFilter.test(shapeKey)) { + outItems->second.emplace_back(item); + outBounds += item.bound; + } else if (receiversFilter.test(shapeKey)) { + // Receivers are not rendered but they still increase the bounds of the shadow scene + // although only in the direction of the light direction so as to have a correct far + // distance without decreasing the near distance. + merge(outBounds, item.bound, globalLightDir); + } + } + } + } else { + for (auto& item : inItems.second) { + if (test.solidAngleTest(item.bound) && test.frustumTest(item.bound) && test.antiFrustumTest(item.bound)) { + const auto shapeKey = scene->getItem(item.id).getKey(); + if (castersFilter.test(shapeKey)) { + outItems->second.emplace_back(item); + outBounds += item.bound; + } else if (receiversFilter.test(shapeKey)) { + // Receivers are not rendered but they still increase the bounds of the shadow scene + // although only in the direction of the light direction so as to have a correct far + // distance without decreasing the near distance. + merge(outBounds, item.bound, globalLightDir); + } + } + } + } + details._rendered += (int)outItems->second.size(); + } + + for (auto& items : outShapes) { + items.second.shrink_to_fit(); + } + } +} diff --git a/libraries/render-utils/src/RenderShadowTask.h b/libraries/render-utils/src/RenderShadowTask.h index 19ffcb4234..1309124f92 100644 --- a/libraries/render-utils/src/RenderShadowTask.h +++ b/libraries/render-utils/src/RenderShadowTask.h @@ -118,7 +118,7 @@ private: class RenderShadowCascadeSetup { public: - using Outputs = render::VaryingSet3; + using Outputs = render::VaryingSet2; using JobModel = render::Job::ModelO; RenderShadowCascadeSetup(unsigned int cascadeIndex, RenderShadowTask::CullFunctor& cullFunctor, uint8_t tagBits = 0x00, uint8_t tagMask = 0x00) : @@ -147,4 +147,22 @@ public: void run(const render::RenderContextPointer& renderContext, const Input& input); }; +class CullShadowBounds { +public: + using Inputs = render::VaryingSet3; + using Outputs = render::VaryingSet2; + using JobModel = render::Job::ModelIO; + + CullShadowBounds(render::CullFunctor cullFunctor) : + _cullFunctor{ cullFunctor } { + } + + void run(const render::RenderContextPointer& renderContext, const Inputs& inputs, Outputs& outputs); + +private: + + render::CullFunctor _cullFunctor; + +}; + #endif // hifi_RenderShadowTask_h diff --git a/libraries/render/src/render/CullTask.cpp b/libraries/render/src/render/CullTask.cpp index 8cfe7683ce..b5f1718f6c 100644 --- a/libraries/render/src/render/CullTask.cpp +++ b/libraries/render/src/render/CullTask.cpp @@ -19,60 +19,50 @@ using namespace render; -// Culling Frustum / solidAngle test helper class -struct Test { - CullFunctor _functor; - RenderArgs* _args; - RenderDetails::Item& _renderDetails; - ViewFrustumPointer _antiFrustum; - glm::vec3 _eyePos; - float _squareTanAlpha; +CullTest::CullTest(CullFunctor& functor, RenderArgs* pargs, RenderDetails::Item& renderDetails, ViewFrustumPointer antiFrustum) : + _functor(functor), + _args(pargs), + _renderDetails(renderDetails), + _antiFrustum(antiFrustum) { + // FIXME: Keep this code here even though we don't use it yet + /*_eyePos = _args->getViewFrustum().getPosition(); + float a = glm::degrees(Octree::getPerspectiveAccuracyAngle(_args->_sizeScale, _args->_boundaryLevelAdjust)); + auto angle = std::min(glm::radians(45.0f), a); // no worse than 45 degrees + angle = std::max(glm::radians(1.0f / 60.0f), a); // no better than 1 minute of degree + auto tanAlpha = tan(angle); + _squareTanAlpha = (float)(tanAlpha * tanAlpha); + */ +} - Test(CullFunctor& functor, RenderArgs* pargs, RenderDetails::Item& renderDetails, ViewFrustumPointer antiFrustum = nullptr) : - _functor(functor), - _args(pargs), - _renderDetails(renderDetails), - _antiFrustum(antiFrustum) { - // FIXME: Keep this code here even though we don't use it yet - /*_eyePos = _args->getViewFrustum().getPosition(); - float a = glm::degrees(Octree::getPerspectiveAccuracyAngle(_args->_sizeScale, _args->_boundaryLevelAdjust)); - auto angle = std::min(glm::radians(45.0f), a); // no worse than 45 degrees - angle = std::max(glm::radians(1.0f / 60.0f), a); // no better than 1 minute of degree - auto tanAlpha = tan(angle); - _squareTanAlpha = (float)(tanAlpha * tanAlpha); - */ +bool CullTest::frustumTest(const AABox& bound) { + if (!_args->getViewFrustum().boxIntersectsFrustum(bound)) { + _renderDetails._outOfView++; + return false; } + return true; +} - bool frustumTest(const AABox& bound) { - if (!_args->getViewFrustum().boxIntersectsFrustum(bound)) { - _renderDetails._outOfView++; - return false; - } - return true; +bool CullTest::antiFrustumTest(const AABox& bound) { + assert(_antiFrustum); + if (_antiFrustum->boxInsideFrustum(bound)) { + _renderDetails._outOfView++; + return false; } + return true; +} - bool antiFrustumTest(const AABox& bound) { - assert(_antiFrustum); - if (_antiFrustum->boxInsideFrustum(bound)) { - _renderDetails._outOfView++; - return false; - } - return true; +bool CullTest::solidAngleTest(const AABox& bound) { + // FIXME: Keep this code here even though we don't use it yet + //auto eyeToPoint = bound.calcCenter() - _eyePos; + //auto boundSize = bound.getDimensions(); + //float test = (glm::dot(boundSize, boundSize) / glm::dot(eyeToPoint, eyeToPoint)) - squareTanAlpha; + //if (test < 0.0f) { + if (!_functor(_args, bound)) { + _renderDetails._tooSmall++; + return false; } - - bool solidAngleTest(const AABox& bound) { - // FIXME: Keep this code here even though we don't use it yet - //auto eyeToPoint = bound.calcCenter() - _eyePos; - //auto boundSize = bound.getDimensions(); - //float test = (glm::dot(boundSize, boundSize) / glm::dot(eyeToPoint, eyeToPoint)) - squareTanAlpha; - //if (test < 0.0f) { - if (!_functor(_args, bound)) { - _renderDetails._tooSmall++; - return false; - } - return true; - } -}; + return true; +} void render::cullItems(const RenderContextPointer& renderContext, const CullFunctor& cullFunctor, RenderDetails::Item& details, const ItemBounds& inItems, ItemBounds& outItems) { @@ -205,7 +195,7 @@ void CullSpatialSelection::run(const RenderContextPointer& renderContext, args->pushViewFrustum(_frozenFrustum); // replace the true view frustum by the frozen one } - Test test(_cullFunctor, args, details); + CullTest test(_cullFunctor, args, details); // Now we have a selection of items to render outItems.clear(); @@ -382,7 +372,7 @@ void CullShapeBounds::run(const RenderContextPointer& renderContext, const Input if (!cullFilter.selectsNothing() || !boundsFilter.selectsNothing()) { auto& details = args->_details.edit(_detailType); - Test test(_cullFunctor, args, details, antiFrustum); + CullTest test(_cullFunctor, args, details, antiFrustum); auto scene = args->_scene; for (auto& inItems : inShapes) { diff --git a/libraries/render/src/render/CullTask.h b/libraries/render/src/render/CullTask.h index 47abe8a960..2ef9e92eaa 100644 --- a/libraries/render/src/render/CullTask.h +++ b/libraries/render/src/render/CullTask.h @@ -22,6 +22,22 @@ namespace render { void cullItems(const RenderContextPointer& renderContext, const CullFunctor& cullFunctor, RenderDetails::Item& details, const ItemBounds& inItems, ItemBounds& outItems); + // Culling Frustum / solidAngle test helper class + struct CullTest { + CullFunctor _functor; + RenderArgs* _args; + RenderDetails::Item& _renderDetails; + ViewFrustumPointer _antiFrustum; + glm::vec3 _eyePos; + float _squareTanAlpha; + + CullTest(CullFunctor& functor, RenderArgs* pargs, RenderDetails::Item& renderDetails, ViewFrustumPointer antiFrustum = nullptr); + + bool frustumTest(const AABox& bound); + bool antiFrustumTest(const AABox& bound); + bool solidAngleTest(const AABox& bound); + }; + class FetchNonspatialItems { public: using JobModel = Job::ModelIO; From cdca20101bcb68eff82812b12d9e618afe867951 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Tue, 31 Jul 2018 14:37:51 -0300 Subject: [PATCH 074/332] Not an accountManager in AndroidHelper anymore --- android/app/src/main/cpp/native.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/cpp/native.cpp b/android/app/src/main/cpp/native.cpp index def706c128..9f0e088157 100644 --- a/android/app/src/main/cpp/native.cpp +++ b/android/app/src/main/cpp/native.cpp @@ -287,12 +287,13 @@ Java_io_highfidelity_hifiinterface_fragment_LoginFragment_nativeLogin(JNIEnv *en JNIEXPORT jboolean JNICALL Java_io_highfidelity_hifiinterface_fragment_FriendsFragment_nativeIsLoggedIn(JNIEnv *env, jobject instance) { - return AndroidHelper::instance().getAccountManager()->isLoggedIn(); + auto accountManager = DependencyManager::get(); + return accountManager->isLoggedIn(); } JNIEXPORT jstring JNICALL Java_io_highfidelity_hifiinterface_fragment_FriendsFragment_nativeGetAccessToken(JNIEnv *env, jobject instance) { - auto accountManager = AndroidHelper::instance().getAccountManager(); + auto accountManager = DependencyManager::get(); return env->NewStringUTF(accountManager->getAccountInfo().getAccessToken().token.toLatin1().data()); } From f98c19fd1dbe3d91a25c29efc72145dbe6cbe000 Mon Sep 17 00:00:00 2001 From: Gabriel Calero Date: Tue, 31 Jul 2018 15:15:21 -0300 Subject: [PATCH 075/332] Test 1: restore input sample rate to native (48khz) and set CALLBACK_ACCELERATOR_RATIO = 1 for android --- libraries/audio-client/src/AudioClient.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index c57360b09f..fb7523a24f 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -489,10 +489,10 @@ bool nativeFormatForAudioDevice(const QAudioDeviceInfo& audioDevice, #if defined(Q_OS_ANDROID) // Using the HW sample rate (AUDIO_INPUT_FLAG_FAST) in some samsung phones causes a low volume at input stream // Changing the sample rate forces a resampling that (in samsung) amplifies +18 dB - QAndroidJniObject brand = QAndroidJniObject::getStaticObjectField("android/os/Build", "BRAND"); - if (audioDevice == QAudioDeviceInfo::defaultInputDevice() && brand.toString().contains("samsung", Qt::CaseInsensitive)) { - audioFormat.setSampleRate(24000); - } +// QAndroidJniObject brand = QAndroidJniObject::getStaticObjectField("android/os/Build", "BRAND"); +// if (audioDevice == QAudioDeviceInfo::defaultInputDevice() && brand.toString().contains("samsung", Qt::CaseInsensitive)) { +// audioFormat.setSampleRate(24000); +// } #endif if (!audioDevice.isFormatSupported(audioFormat)) { @@ -1848,7 +1848,9 @@ const float AudioClient::CALLBACK_ACCELERATOR_RATIO = IsWindows8OrGreater() ? 1. const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 2.0f; #endif -#ifdef Q_OS_LINUX +#ifdef Q_OS_ANDROID +const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 1.0f; +#elif defined(Q_OS_LINUX) const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 2.0f; #endif From 3402d7836a37f04bf437e3209c439176923af698 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 31 Jul 2018 11:17:53 -0700 Subject: [PATCH 076/332] Added milestones to TestRail cases. --- tools/auto-tester/src/TestRailInterface.cpp | 163 +++++++++++++++--- tools/auto-tester/src/TestRailInterface.h | 20 ++- .../src/ui/TestRailSelectorWindow.cpp | 27 ++- .../src/ui/TestRailSelectorWindow.h | 4 + .../src/ui/TestRailSelectorWindow.ui | 112 +++++++++--- 5 files changed, 261 insertions(+), 65 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index d8784e5a86..1640918c47 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -16,7 +16,6 @@ #include #include #include -#include #include TestRailInterface::TestRailInterface() { @@ -39,8 +38,8 @@ QString TestRailInterface::getObject(const QString& path) { // Creates the testrail.py script // This is the file linked to from http://docs.gurock.com/testrail-api2/bindings-python -void TestRailInterface::createTestRailDotPyScript(const QString& outputDirectory) { - QFile file(outputDirectory + "/testrail.py"); +void TestRailInterface::createTestRailDotPyScript() { + QFile file(_outputDirectory + "/testrail.py"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Could not create 'testrail.py'"); @@ -145,8 +144,13 @@ void TestRailInterface::createTestRailDotPyScript(const QString& outputDirectory } // Creates a Stack class -void TestRailInterface::createStackDotPyScript(const QString& outputDirectory) { - QFile file(outputDirectory + "/stack.py"); +void TestRailInterface::createStackDotPyScript() { + QString filename = _outputDirectory + "/stack.py"; + if (QFile::exists(filename)) { + QFile::remove(filename); + } + QFile file(filename); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Could not create 'stack.py'"); @@ -184,7 +188,7 @@ void TestRailInterface::createStackDotPyScript(const QString& outputDirectory) { file.close(); } -void TestRailInterface::requestDataFromUser() { +void TestRailInterface::requestTestRailDataFromUser() { _testRailSelectorWindow.exec(); if (_testRailSelectorWindow.getUserCancelled()) { @@ -249,10 +253,15 @@ void TestRailInterface::processDirectoryPython(const QString& directory, // Therefore, the tree is built top-down, using a stack to store the IDs of each node // void TestRailInterface::createAddTestCasesPythonScript(const QString& testDirectory, - const QString& outputDirectory, - const QString& userGitHub, - const QString& branchGitHub) { - QFile file(outputDirectory + "/addTestCases.py"); + const QString& userGitHub, + const QString& branchGitHub) { + + QString filename = _outputDirectory + "/addTestCases.py"; + if (QFile::exists(filename)) { + QFile::remove(filename); + } + QFile file(filename); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Could not create 'addTestCases.py'"); @@ -283,48 +292,141 @@ void TestRailInterface::createAddTestCasesPythonScript(const QString& testDirect file.close(); if (QMessageBox::Yes == QMessageBox(QMessageBox::Information, "Python script has been created", "Do you want to run the script and update TestRail?", QMessageBox::Yes | QMessageBox::No).exec()) { - QString command(_pythonPath + "/" + pythonExe); - QStringList parameters = QStringList() << outputDirectory + "/addTestCases.py"; QProcess* process = new QProcess(); - connect( - process, &QProcess::started, - this, [=]() { + connect(process, &QProcess::started, this, + [=]() { _busyWindow.exec(); } ); - connect( - process, static_cast(&QProcess::finished), - this, [=](int exitCode, QProcess::ExitStatus exitStatus) { + connect(process, static_cast(&QProcess::finished), this, + [=](int exitCode, QProcess::ExitStatus exitStatus) { _busyWindow.hide(); } ); - process->start(command, parameters); + QStringList parameters = QStringList() << _outputDirectory + "/addTestCases.py"; + process->start(_pythonCommand, parameters); } } +void TestRailInterface::updateMilestonesComboData(int exitCode, QProcess::ExitStatus exitStatus) { + // Check if process completed successfully + if (exitStatus != QProcess::NormalExit) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not get milestones from TestRail"); + exit(-1); + } + + // Create map of milestones from the file created by the process + _milestoneNames.clear(); + + QString filename = _outputDirectory + "/milestones.txt"; + if (!QFile::exists(filename)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not find milestones.txt in " + _outputDirectory); + exit(-1); + } + + QFile file(filename); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not open " + _outputDirectory + "/milestones.txt"); + exit(-1); + } + + QTextStream in(&file); + QString line = in.readLine(); + while (!line.isNull()) { + QStringList words = line.split(' '); + _milestones[words[0]] = words[1].toInt(); + _milestoneNames << words[0]; + + line = in.readLine(); + } + + file.close(); + + // Update the combo + _testRailSelectorWindow.updateMilestoneComboBoxData(_milestoneNames); + + _testRailSelectorWindow.exec(); + + if (_testRailSelectorWindow.getUserCancelled()) { + return; + } + + createAddTestCasesPythonScript(_testDirectory, _userGitHub, _branchGitHub); +} + +void TestRailInterface::getMilestonesFromTestRail() { + QString filename = _outputDirectory + "/getMilestones.py"; + if (QFile::exists(filename)) { + QFile::remove(filename); + } + QFile file(filename); + + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not create 'getMilestones.py'"); + exit(-1); + } + + QTextStream stream(&file); + + // Code to access TestRail + stream << "from testrail import *\n"; + stream << "client = APIClient('" << _url.toStdString().c_str() << "')\n"; + stream << "client.user = '" << _user << "'\n"; + stream << "client.password = '" << _password << "'\n\n"; + + // Print the list of uncompleted milestones + stream << "file = open('" + _outputDirectory + "/milestones.txt', 'w')\n\n"; + stream << "milestones = client.send_get('get_milestones/" + _project + "')\n"; + stream << "for milestone in milestones:\n"; + stream << "\tif milestone['is_completed'] == False:\n"; + stream << "\t\tfile.write(milestone['name'] + ' ' + str(milestone['id']) + '\\n')\n\n"; + stream << "file.close()\n"; + + file.close(); + + QProcess* process = new QProcess(); + connect(process, static_cast(&QProcess::finished), this, + [=](int exitCode, QProcess::ExitStatus exitStatus) { + updateMilestonesComboData(exitCode, exitStatus); + } + ); + + QStringList parameters = QStringList() << _outputDirectory + "/getMilestones.py "; + process->start(_pythonCommand, parameters); +} + void TestRailInterface::createTestSuitePython(const QString& testDirectory, const QString& outputDirectory, const QString& userGitHub, const QString& branchGitHub) { - + + _testDirectory = testDirectory; + _outputDirectory = outputDirectory; + _userGitHub = userGitHub; + _branchGitHub = branchGitHub; + // First check that Python is available - QProcessEnvironment e = QProcessEnvironment::systemEnvironment(); - QStringList sl = e.toStringList(); if (QProcessEnvironment::systemEnvironment().contains("PYTHON_PATH")) { - _pythonPath = QProcessEnvironment::systemEnvironment().value("PYTHON_PATH"); + QString _pythonPath = QProcessEnvironment::systemEnvironment().value("PYTHON_PATH"); if (!QFile::exists(_pythonPath + "/" + pythonExe)) { QMessageBox::critical(0, pythonExe, QString("Python executable not found in ") + _pythonPath); } + _pythonCommand = _pythonPath + "/" + pythonExe; } else { QMessageBox::critical(0, "PYTHON_PATH not defined", "Please set PYTHON_PATH to directory containing the Python executable"); + return; } - createTestRailDotPyScript(outputDirectory); - createStackDotPyScript(outputDirectory); - requestDataFromUser(); - createAddTestCasesPythonScript(testDirectory, outputDirectory, userGitHub, branchGitHub); + requestTestRailDataFromUser(); + getMilestonesFromTestRail(); + createTestRailDotPyScript(); + createStackDotPyScript(); } void TestRailInterface::createTestSuiteXML(const QString& testDirectory, @@ -332,6 +434,8 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, const QString& userGitHub, const QString& branchGitHub) { + _outputDirectory = outputDirectory; + QDomProcessingInstruction instruction = _document.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); _document.appendChild(instruction); @@ -353,7 +457,7 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, root.appendChild(topLevelSection); // Write to file - const QString testRailsFilename{ outputDirectory + "/TestRailSuite.xml" }; + const QString testRailsFilename{ _outputDirectory + "/TestRailSuite.xml" }; QFile file(testRailsFilename); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Could not create XML file"); @@ -559,9 +663,12 @@ void TestRailInterface::processTestPython(const QString& fullDirectory, QString testContent = QString("Execute instructions in [THIS TEST](") + testMDName + ")"; QString testExpected = QString("Refer to the expected result in the linked description."); + int milestone_id = _milestones[_milestoneNames[_testRailSelectorWindow.getMilestoneID()]]; + stream << "data = {\n\t" << "'title': '" << title << "',\n\t" << "'template_id': 2,\n\t" + << "'milestone_id': " << milestone_id << ",\n\t" << "'custom_preconds': " << "'Tester is in an empty region of a domain in which they have edit rights\\n\\n*Note: Press \\'n\\' to advance test script',\n\t" << "'custom_steps_separated': " << "[\n\t\t{\n\t\t\t'content': '" << testContent << "',\n\t\t\t'expected': '" << testExpected << "'\n\t\t}\n\t]\n" << "}\n"; diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 4c094a27f3..f7fe131416 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -15,6 +15,7 @@ #include "ui/TestRailSelectorWindow.h" #include #include +#include #include class TestRailInterface : public QObject{ @@ -49,11 +50,12 @@ public: const QString& userGitHub, const QString& branchGitHub); - void createTestRailDotPyScript(const QString& outputDirectory); - void createStackDotPyScript(const QString& outputDirectory); - void requestDataFromUser(); + void getMilestonesFromTestRail(); + void createTestRailDotPyScript(); + void createStackDotPyScript(); + void requestTestRailDataFromUser(); + void requestMilestoneFromUser(); void createAddTestCasesPythonScript(const QString& testDirectory, - const QString& outputDirectory, const QString& userGitHub, const QString& branchGitHub); @@ -65,6 +67,8 @@ public: bool isAValidTestDirectory(const QString& directory); QString getObject(const QString& path); + void updateMilestonesComboData(int exitCode, QProcess::ExitStatus exitStatus); + private: QDomDocument _document; @@ -76,9 +80,15 @@ private: QString _password; QString _project; - QString _pythonPath; + QString _testDirectory; + QString _outputDirectory; + QString _userGitHub; + QString _branchGitHub; const QString pythonExe{ "python.exe" }; + QString _pythonCommand; + std::map _milestones; + QStringList _milestoneNames; }; #endif \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp index b2555ae4ad..9f07c25f3a 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp @@ -19,6 +19,17 @@ TestRailSelectorWindow::TestRailSelectorWindow(QWidget *parent) { projectLineEdit->setValidator(new QIntValidator(1, 999, this)); } +void TestRailSelectorWindow::on_acceptButton_clicked() { + urlLineEdit->setDisabled(true); + userLineEdit->setDisabled(true); + passwordLineEdit->setDisabled(true); + projectLineEdit->setDisabled(true); + + OKButton->setDisabled(false); + milestoneComboBox->setDisabled(false); + close(); +} + void TestRailSelectorWindow::on_OKButton_clicked() { userCancelled = false; close(); @@ -34,19 +45,19 @@ bool TestRailSelectorWindow::getUserCancelled() { } void TestRailSelectorWindow::setURL(const QString& user) { - URLTextEdit->setText(user); + urlLineEdit->setText(user); } QString TestRailSelectorWindow::getURL() { - return URLTextEdit->toPlainText(); + return urlLineEdit->text(); } void TestRailSelectorWindow::setUser(const QString& user) { - userTextEdit->setText(user); + userLineEdit->setText(user); } QString TestRailSelectorWindow::getUser() { - return userTextEdit->toPlainText(); + return userLineEdit->text(); } QString TestRailSelectorWindow::getPassword() { @@ -60,3 +71,11 @@ void TestRailSelectorWindow::setProject(const int project) { int TestRailSelectorWindow::getProject() { return projectLineEdit->text().toInt(); } + +void TestRailSelectorWindow::updateMilestoneComboBoxData(QStringList data) { + milestoneComboBox->insertItems(0, data); +} + +int TestRailSelectorWindow::getMilestoneID() { + return milestoneComboBox->currentIndex(); +} \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.h b/tools/auto-tester/src/ui/TestRailSelectorWindow.h index 821102b6bc..7072c1cd46 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.h +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.h @@ -33,7 +33,11 @@ public: bool userCancelled{ false }; + void updateMilestoneComboBoxData(QStringList data); + int getMilestoneID(); + private slots: + void on_acceptButton_clicked(); void on_OKButton_clicked(); void on_cancelButton_clicked(); }; diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailSelectorWindow.ui index dfc477deb0..98c52f3194 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.ui +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.ui @@ -7,7 +7,7 @@ 0 0 489 - 312 + 415 @@ -35,7 +35,7 @@ 70 - 115 + 125 121 20 @@ -67,21 +67,14 @@ TestRail URL - - - - 200 - 25 - 231 - 24 - - - + + false + 120 - 240 + 350 93 28 @@ -94,7 +87,7 @@ 280 - 240 + 350 93 28 @@ -107,7 +100,7 @@ 200 - 115 + 120 231 24 @@ -116,21 +109,11 @@ QLineEdit::Password - - - - 200 - 70 - 231 - 24 - - - 70 - 70 + 75 121 20 @@ -148,7 +131,7 @@ 200 - 160 + 170 231 24 @@ -161,7 +144,7 @@ 70 - 160 + 175 121 20 @@ -175,6 +158,79 @@ TestRail Project + + + + 200 + 220 + 231 + 28 + + + + Accept + + + + + false + + + + 270 + 280 + 161 + 22 + + + + + + true + + + + 140 + 280 + 121 + 20 + + + + + 10 + + + + TestRail Milestone + + + + + + 200 + 20 + 231 + 24 + + + + QLineEdit::Normal + + + + + + 200 + 70 + 231 + 24 + + + + QLineEdit::Normal + + From b8bab858d9965cb9b7b04a1383f8153c32f4fc70 Mon Sep 17 00:00:00 2001 From: Gabriel Calero Date: Tue, 31 Jul 2018 15:32:39 -0300 Subject: [PATCH 077/332] Test 2: input sample rate: 24khz. Set CALLBACK_ACCELERATOR_RATIO = 0.5 for android --- libraries/audio-client/src/AudioClient.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index fb7523a24f..eb673b89e6 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -489,10 +489,10 @@ bool nativeFormatForAudioDevice(const QAudioDeviceInfo& audioDevice, #if defined(Q_OS_ANDROID) // Using the HW sample rate (AUDIO_INPUT_FLAG_FAST) in some samsung phones causes a low volume at input stream // Changing the sample rate forces a resampling that (in samsung) amplifies +18 dB -// QAndroidJniObject brand = QAndroidJniObject::getStaticObjectField("android/os/Build", "BRAND"); -// if (audioDevice == QAudioDeviceInfo::defaultInputDevice() && brand.toString().contains("samsung", Qt::CaseInsensitive)) { -// audioFormat.setSampleRate(24000); -// } + QAndroidJniObject brand = QAndroidJniObject::getStaticObjectField("android/os/Build", "BRAND"); + if (audioDevice == QAudioDeviceInfo::defaultInputDevice() && brand.toString().contains("samsung", Qt::CaseInsensitive)) { + audioFormat.setSampleRate(24000); + } #endif if (!audioDevice.isFormatSupported(audioFormat)) { @@ -1849,7 +1849,7 @@ const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 2.0f; #endif #ifdef Q_OS_ANDROID -const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 1.0f; +const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 0.5f; #elif defined(Q_OS_LINUX) const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 2.0f; #endif From b841a5f0168ee2c7d68d88cfd1f8f1ca389c6638 Mon Sep 17 00:00:00 2001 From: Gabriel Calero Date: Tue, 31 Jul 2018 16:54:20 -0300 Subject: [PATCH 078/332] Test 3: input sample rate: 24khz. Set CALLBACK_ACCELERATOR_RATIO = 2.0 for android (master version) --- libraries/audio-client/src/AudioClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index eb673b89e6..d5549444f8 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -1849,7 +1849,7 @@ const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 2.0f; #endif #ifdef Q_OS_ANDROID -const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 0.5f; +const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 2.0f; #elif defined(Q_OS_LINUX) const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 2.0f; #endif From c98d43bb32f5ebbae191c8b9bca76926a5326fd5 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 31 Jul 2018 13:06:04 -0700 Subject: [PATCH 079/332] Problem = last test is created twice. --- tools/auto-tester/src/TestRailInterface.cpp | 55 ++++++++++-------- tools/auto-tester/src/TestRailInterface.h | 9 ++- .../src/ui/TestRailSelectorWindow.cpp | 20 +++++-- .../src/ui/TestRailSelectorWindow.h | 7 ++- .../src/ui/TestRailSelectorWindow.ui | 58 ++++++++++++++++--- 5 files changed, 108 insertions(+), 41 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 1640918c47..31594fe66a 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -22,14 +22,15 @@ TestRailInterface::TestRailInterface() { _busyWindow.setModal(true); _testRailSelectorWindow.setModal(true); - ////_testRailSelectorWindow.setURL("https://highfidelity.testrail.net"); - _testRailSelectorWindow.setURL("https://nissimhadar.testrail.io"); - ////_testRailSelectorWindow.setUser("@highfidelity.io"); - _testRailSelectorWindow.setUser("nissim.hadar@gmail.com"); + _testRailSelectorWindow.setURL("https://highfidelity.testrail.net"); + ////_testRailSelectorWindow.setURL("https://nissimhadar.testrail.io"); + _testRailSelectorWindow.setUser("@highfidelity.io"); + ////_testRailSelectorWindow.setUser("nissim.hadar@gmail.com"); - // 24 is the HighFidelity Interface project id in TestRail - ////_testRailSelectorWindow.setProject(24); - _testRailSelectorWindow.setProject(1); + _testRailSelectorWindow.setProjectID(INTERFACE_PROJECT_ID); + ////_testRailSelectorWindow.setProject(1); + + _testRailSelectorWindow.setSuiteID(INTERFACE_SUITE_ID); } QString TestRailInterface::getObject(const QString& path) { @@ -197,9 +198,10 @@ void TestRailInterface::requestTestRailDataFromUser() { _url = _testRailSelectorWindow.getURL() + "/"; _user = _testRailSelectorWindow.getUser(); - ////_password = _testRailSelectorWindow.getPassword(); - _password = "tutKA76"; - _project = QString::number(_testRailSelectorWindow.getProject()); + _password = _testRailSelectorWindow.getPassword(); + ////_password = "tutKA76"; + _projectID = QString::number(_testRailSelectorWindow.getProjectID()); + _suiteID = QString::number(_testRailSelectorWindow.getSuiteID()); } bool TestRailInterface::isAValidTestDirectory(const QString& directory) { @@ -218,7 +220,8 @@ bool TestRailInterface::isAValidTestDirectory(const QString& directory) { void TestRailInterface::processDirectoryPython(const QString& directory, QTextStream& stream, const QString& userGitHub, - const QString& branchGitHub) { + const QString& branchGitHub +) { // Loop over all entries in directory QDirIterator it(directory.toStdString().c_str()); while (it.hasNext()) { @@ -229,9 +232,9 @@ void TestRailInterface::processDirectoryPython(const QString& directory, if (isAValidTestDirectory(nextDirectory)) { // The name of the section is the directory at the end of the path stream << "parent_id = parent_ids.peek()\n"; - stream << "data = { 'name': '" << objectName << "', 'parent_id': parent_id }\n"; + stream << "data = { 'name': '" << objectName << "', 'suite_id': " + _suiteID + ", 'parent_id': parent_id }\n"; - stream << "section = client.send_post('add_section/' + str(" << _project << "), data)\n"; + stream << "section = client.send_post('add_section/' + str(" << _projectID << "), data)\n"; // Now we push the parent_id, and recursively process each directory stream << "parent_ids.push(section['id'])\n\n"; @@ -254,8 +257,8 @@ void TestRailInterface::processDirectoryPython(const QString& directory, // void TestRailInterface::createAddTestCasesPythonScript(const QString& testDirectory, const QString& userGitHub, - const QString& branchGitHub) { - + const QString& branchGitHub +) { QString filename = _outputDirectory + "/addTestCases.py"; if (QFile::exists(filename)) { QFile::remove(filename); @@ -281,9 +284,10 @@ void TestRailInterface::createAddTestCasesPythonScript(const QString& testDirect // top-level section stream << "data = { 'name': '" - << "Test Suite - " << QDateTime::currentDateTime().toString("yyyy-MM-ddTHH:mm") << "'}\n"; + << "Test Suite - " << QDateTime::currentDateTime().toString("yyyy-MM-ddTHH:mm") + "', " + << "'suite_id': " + _suiteID + "}\n"; - stream << "section = client.send_post('add_section/' + str(" << _project << "), data)\n"; + stream << "section = client.send_post('add_section/' + str(" << _projectID << "), data)\n"; // Now we push the parent_id, and recursively process each directory stream << "parent_ids.push(section['id'])\n\n"; @@ -382,7 +386,7 @@ void TestRailInterface::getMilestonesFromTestRail() { // Print the list of uncompleted milestones stream << "file = open('" + _outputDirectory + "/milestones.txt', 'w')\n\n"; - stream << "milestones = client.send_get('get_milestones/" + _project + "')\n"; + stream << "milestones = client.send_get('get_milestones/" + _projectID + "')\n"; stream << "for milestone in milestones:\n"; stream << "\tif milestone['is_completed'] == False:\n"; stream << "\t\tfile.write(milestone['name'] + ' ' + str(milestone['id']) + '\\n')\n\n"; @@ -665,12 +669,15 @@ void TestRailInterface::processTestPython(const QString& fullDirectory, int milestone_id = _milestones[_milestoneNames[_testRailSelectorWindow.getMilestoneID()]]; - stream << "data = {\n\t" - << "'title': '" << title << "',\n\t" - << "'template_id': 2,\n\t" - << "'milestone_id': " << milestone_id << ",\n\t" - << "'custom_preconds': " << "'Tester is in an empty region of a domain in which they have edit rights\\n\\n*Note: Press \\'n\\' to advance test script',\n\t" - << "'custom_steps_separated': " << "[\n\t\t{\n\t\t\t'content': '" << testContent << "',\n\t\t\t'expected': '" << testExpected << "'\n\t\t}\n\t]\n" + stream << "data = {\n" + << "\t'title': '" << title << "',\n" + << "\t'template_id': 2,\n" + << "\t'milestone_id': " << milestone_id << ",\n" + << "\t'custom_tester_count': 1,\n" + << "\t'custom_domain_bot_load': 1,\n" + << "\t'custom_added_to_release': 4,\n" + << "\t'custom_preconds': " << "'Tester is in an empty region of a domain in which they have edit rights\\n\\n*Note: Press \\'n\\' to advance test script',\n" + << "\t'custom_steps_separated': " << "[\n\t\t{\n\t\t\t'content': '" << testContent << "',\n\t\t\t'expected': '" << testExpected << "'\n\t\t}\n\t]\n" << "}\n"; stream << "case = client.send_post('add_case/' + str(section_id), data)\n"; diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index f7fe131416..4d12145021 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -70,6 +70,12 @@ public: void updateMilestonesComboData(int exitCode, QProcess::ExitStatus exitStatus); private: + // HighFidelity Interface project ID in TestRail + const int INTERFACE_PROJECT_ID{ 24 }; + + // Rendering suite ID + const int INTERFACE_SUITE_ID{ 1147 }; + QDomDocument _document; BusyWindow _busyWindow; @@ -78,7 +84,8 @@ private: QString _url; QString _user; QString _password; - QString _project; + QString _projectID; + QString _suiteID; QString _testDirectory; QString _outputDirectory; diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp index 9f07c25f3a..afa94b31d0 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp @@ -16,14 +16,14 @@ TestRailSelectorWindow::TestRailSelectorWindow(QWidget *parent) { setupUi(this); - projectLineEdit->setValidator(new QIntValidator(1, 999, this)); + projectIDLineEdit->setValidator(new QIntValidator(1, 999, this)); } void TestRailSelectorWindow::on_acceptButton_clicked() { urlLineEdit->setDisabled(true); userLineEdit->setDisabled(true); passwordLineEdit->setDisabled(true); - projectLineEdit->setDisabled(true); + projectIDLineEdit->setDisabled(true); OKButton->setDisabled(false); milestoneComboBox->setDisabled(false); @@ -64,12 +64,20 @@ QString TestRailSelectorWindow::getPassword() { return passwordLineEdit->text(); } -void TestRailSelectorWindow::setProject(const int project) { - projectLineEdit->setText(QString::number(project)); +void TestRailSelectorWindow::setProjectID(const int project) { + projectIDLineEdit->setText(QString::number(project)); } -int TestRailSelectorWindow::getProject() { - return projectLineEdit->text().toInt(); +int TestRailSelectorWindow::getProjectID() { + return projectIDLineEdit->text().toInt(); +} + +void TestRailSelectorWindow::setSuiteID(const int project) { + suiteIDLineEdit->setText(QString::number(project)); +} + +int TestRailSelectorWindow::getSuiteID() { + return suiteIDLineEdit->text().toInt(); } void TestRailSelectorWindow::updateMilestoneComboBoxData(QStringList data) { diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.h b/tools/auto-tester/src/ui/TestRailSelectorWindow.h index 7072c1cd46..20bb012723 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.h +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.h @@ -28,8 +28,11 @@ public: QString getPassword(); - void setProject(const int project); - int getProject(); + void setProjectID(const int project); + int getProjectID(); + + void setSuiteID(const int project); + int getSuiteID(); bool userCancelled{ false }; diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailSelectorWindow.ui index 98c52f3194..5276b458e3 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.ui +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.ui @@ -7,7 +7,7 @@ 0 0 489 - 415 + 474 @@ -74,7 +74,7 @@ 120 - 350 + 420 93 28 @@ -87,7 +87,7 @@ 280 - 350 + 420 93 28 @@ -127,7 +127,7 @@ TestRail User - + 200 @@ -155,14 +155,14 @@ - TestRail Project + TestRail Project ID 200 - 220 + 270 231 28 @@ -178,7 +178,7 @@ 270 - 280 + 350 161 22 @@ -191,7 +191,7 @@ 140 - 280 + 350 121 20 @@ -231,8 +231,50 @@ QLineEdit::Normal + + + + 200 + 215 + 231 + 24 + + + + QLineEdit::Normal + + + + + + 70 + 220 + 121 + 20 + + + + + 10 + + + + TestRail Suite ID + + + + urlLineEdit + userLineEdit + passwordLineEdit + projectIDLineEdit + suiteIDLineEdit + acceptButton + milestoneComboBox + OKButton + cancelButton + From 3a140145ae607cf944c69d862ec03845eb101dba Mon Sep 17 00:00:00 2001 From: Clement Date: Tue, 31 Jul 2018 13:09:37 -0700 Subject: [PATCH 080/332] Fix angleBetween potential NaN return value --- libraries/shared/src/GLMHelpers.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libraries/shared/src/GLMHelpers.cpp b/libraries/shared/src/GLMHelpers.cpp index 4be8ad0e41..b1780b3652 100644 --- a/libraries/shared/src/GLMHelpers.cpp +++ b/libraries/shared/src/GLMHelpers.cpp @@ -294,7 +294,13 @@ glm::vec3 safeEulerAngles(const glm::quat& q) { // Helper function returns the positive angle (in radians) between two 3D vectors float angleBetween(const glm::vec3& v1, const glm::vec3& v2) { - return acosf((glm::dot(v1, v2)) / (glm::length(v1) * glm::length(v2))); + float cosAngle = glm::dot(v1, v2) / (glm::length(v1) * glm::length(v2)); + // If v1 and v2 are colinear, then floating point rounding errors might cause + // cosAngle to be slightly higher than 1 or slightly lower than -1 + // which is are values for which acos is not defined and result in a NaN + // So we clamp the value to insure the value is in the correct range + cosAngle = glm::clamp(cosAngle, -1.0f, 1.0f); + return acosf(cosAngle); } // Helper function return the rotation from the first vector onto the second From 87e7eb78a801349f8cd0257d5e7dc73261a6f0f6 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 31 Jul 2018 13:30:30 -0700 Subject: [PATCH 081/332] Corrected links to MD files. --- tools/auto-tester/src/TestRailInterface.cpp | 13 ++++++++++--- tools/auto-tester/src/ui/TestRailSelectorWindow.cpp | 11 +++++++++++ tools/auto-tester/src/ui/TestRailSelectorWindow.h | 2 ++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 31594fe66a..9142e24986 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -190,6 +190,8 @@ void TestRailInterface::createStackDotPyScript() { } void TestRailInterface::requestTestRailDataFromUser() { + // Make sure correct fields are enabled before calling + _testRailSelectorWindow.reset(); _testRailSelectorWindow.exec(); if (_testRailSelectorWindow.getUserCancelled()) { @@ -428,10 +430,12 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, } requestTestRailDataFromUser(); - getMilestonesFromTestRail(); createTestRailDotPyScript(); createStackDotPyScript(); - } + + // TestRail will be updated after the process initiated by getMilestonesFromTestRail has completed + getMilestonesFromTestRail(); +} void TestRailInterface::createTestSuiteXML(const QString& testDirectory, const QString& outputDirectory, @@ -659,10 +663,13 @@ void TestRailInterface::processTestPython(const QString& fullDirectory, title += " / " + words[i]; } + // To create the path to test.md, prefix by tests, and remove blanks + QString pathToTestMD = QString("/tests/") + title.remove(" "); + stream << "section_id = parent_ids.peek()\n"; QString testMDName = QString("https://github.com/") + userGitHub + "/hifi_tests/blob/" + branchGitHub + - "/tests/content/entity/light/point/create/test.md"; + pathToTestMD + "/test.md "; QString testContent = QString("Execute instructions in [THIS TEST](") + testMDName + ")"; QString testExpected = QString("Refer to the expected result in the linked description."); diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp index afa94b31d0..cb1c805923 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp @@ -19,6 +19,17 @@ TestRailSelectorWindow::TestRailSelectorWindow(QWidget *parent) { projectIDLineEdit->setValidator(new QIntValidator(1, 999, this)); } + +void TestRailSelectorWindow::reset() { + urlLineEdit->setDisabled(false); + userLineEdit->setDisabled(false); + passwordLineEdit->setDisabled(false); + projectIDLineEdit->setDisabled(false); + + OKButton->setDisabled(true); + milestoneComboBox->setDisabled(true); +} + void TestRailSelectorWindow::on_acceptButton_clicked() { urlLineEdit->setDisabled(true); userLineEdit->setDisabled(true); diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.h b/tools/auto-tester/src/ui/TestRailSelectorWindow.h index 20bb012723..89af63d1e2 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.h +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.h @@ -18,6 +18,8 @@ class TestRailSelectorWindow : public QDialog, public Ui::TestRailSelectorWindow public: TestRailSelectorWindow(QWidget* parent = Q_NULLPTR); + void reset(); + bool getUserCancelled(); void setURL(const QString& user); From 22953e6ab022afae18d9e7c90d0145f811b95e30 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 31 Jul 2018 13:48:17 -0700 Subject: [PATCH 082/332] Fixed appearance of dual tests. --- tools/auto-tester/src/TestRailInterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 9142e24986..49b497353f 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -241,7 +241,7 @@ void TestRailInterface::processDirectoryPython(const QString& directory, // Now we push the parent_id, and recursively process each directory stream << "parent_ids.push(section['id'])\n\n"; processDirectoryPython(nextDirectory, stream, userGitHub, branchGitHub); - } else if (objectName == "test.js" || objectName == "testStory.js") { + } else if (objectName == "test.js") { processTestPython(nextDirectory, stream, userGitHub, branchGitHub); } } From b3c84408d048451c9652a6a699ef0cb3edf8c1c9 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 31 Jul 2018 13:49:39 -0700 Subject: [PATCH 083/332] oopsy --- assignment-client/src/AssignmentClientMonitor.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/assignment-client/src/AssignmentClientMonitor.cpp b/assignment-client/src/AssignmentClientMonitor.cpp index 6a9826f877..2847d4ebf1 100644 --- a/assignment-client/src/AssignmentClientMonitor.cpp +++ b/assignment-client/src/AssignmentClientMonitor.cpp @@ -242,11 +242,8 @@ void AssignmentClientMonitor::spawnChildClient() { if (assignmentClient->processId() > 0) { auto pid = assignmentClient->processId(); // make sure we hear that this process has finished when it does - connect( - assignmentClient, - static_cast(&QProcess::finished), - this, - [this, pid](int exitCode, QProcess::ExitStatus exitStatus) { + connect(assignmentClient, static_cast(&QProcess::finished), + this, [this, pid](int exitCode, QProcess::ExitStatus exitStatus) { childProcessFinished(pid, exitCode, exitStatus); }); From 3f91c552231440a0f90d080ee903276e22c7a488 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 31 Jul 2018 15:20:43 -0700 Subject: [PATCH 084/332] Corrected window title. --- tools/auto-tester/src/ui/TestRailSelectorWindow.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailSelectorWindow.ui index 5276b458e3..24be35b92f 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.ui +++ b/tools/auto-tester/src/ui/TestRailSelectorWindow.ui @@ -11,7 +11,7 @@ - MismatchWindow + TestRail Selector Window From 0cf10a649f183304fd19392794dee6c22b68d235 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 31 Jul 2018 16:25:13 -0700 Subject: [PATCH 085/332] WIP - implementing creation of TestRail runs. --- tools/auto-tester/src/Test.cpp | 6 +++- tools/auto-tester/src/Test.h | 3 +- tools/auto-tester/src/TestRailInterface.cpp | 3 ++ tools/auto-tester/src/TestRailInterface.h | 2 ++ tools/auto-tester/src/ui/AutoTester.cpp | 8 +++-- tools/auto-tester/src/ui/AutoTester.h | 3 +- tools/auto-tester/src/ui/AutoTester.ui | 35 ++++++++++++++------- 7 files changed, 44 insertions(+), 16 deletions(-) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index f708137305..93a71d0d28 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -821,7 +821,7 @@ void Test::createTestsOutline() { QMessageBox::information(0, "Success", "Test outline file " + testsOutlineFilename + " has been created"); } -void Test::createTestRailTestSuite() { +void Test::createTestRailTestCases() { QString previousSelection = _testDirectory; QString parent = previousSelection.left(previousSelection.lastIndexOf('/')); if (!parent.isNull() && parent.right(1) != "/") { @@ -854,6 +854,10 @@ void Test::createTestRailTestSuite() { } } +void Test::createTestRailRun() { + _testRailInterface.createTestRailRun(); +} + QStringList Test::createListOfAll_imagesInDirectory(const QString& imageFormat, const QString& pathToImageDirectory) { _imageDirectory = QDir(pathToImageDirectory); QStringList nameFilters; diff --git a/tools/auto-tester/src/Test.h b/tools/auto-tester/src/Test.h index 36b4cdd897..6d7506b738 100644 --- a/tools/auto-tester/src/Test.h +++ b/tools/auto-tester/src/Test.h @@ -57,7 +57,8 @@ public: void createTestsOutline(); - void createTestRailTestSuite(); + void createTestRailTestCases(); + void createTestRailRun(); bool compareImageLists(bool isInteractiveMode, QProgressBar* progressBar); diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 49b497353f..962012a3d7 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -689,3 +689,6 @@ void TestRailInterface::processTestPython(const QString& fullDirectory, stream << "case = client.send_post('add_case/' + str(section_id), data)\n"; } + +void TestRailInterface::createTestRailRun() { +} \ No newline at end of file diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 4d12145021..4d863a0e3c 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -69,6 +69,8 @@ public: void updateMilestonesComboData(int exitCode, QProcess::ExitStatus exitStatus); + void createTestRailRun(); + private: // HighFidelity Interface project ID in TestRail const int INTERFACE_PROJECT_ID{ 24 }; diff --git a/tools/auto-tester/src/ui/AutoTester.cpp b/tools/auto-tester/src/ui/AutoTester.cpp index 02c3c49a53..697711c4eb 100644 --- a/tools/auto-tester/src/ui/AutoTester.cpp +++ b/tools/auto-tester/src/ui/AutoTester.cpp @@ -68,8 +68,12 @@ void AutoTester::on_createTestsOutlineButton_clicked() { _test->createTestsOutline(); } -void AutoTester::on_createTestRailTestSuiteButton_clicked() { - _test->createTestRailTestSuite(); +void AutoTester::on_createTestRailTestCasesButton_clicked() { + _test->createTestRailTestCases(); +} + +void AutoTester::on_createTestRailRunButton_clicked() { + _test->createTestRailRun(); } // To toggle between show and hide diff --git a/tools/auto-tester/src/ui/AutoTester.h b/tools/auto-tester/src/ui/AutoTester.h index 7f04bd1c49..236a1ed733 100644 --- a/tools/auto-tester/src/ui/AutoTester.h +++ b/tools/auto-tester/src/ui/AutoTester.h @@ -45,7 +45,8 @@ private slots: void on_createMDFileButton_clicked(); void on_createAllMDFilesButton_clicked(); void on_createTestsOutlineButton_clicked(); - void on_createTestRailTestSuiteButton_clicked(); + void on_createTestRailTestCasesButton_clicked(); + void on_createTestRailRunButton_clicked(); void on_hideTaskbarButton_clicked(); void on_showTaskbarButton_clicked(); diff --git a/tools/auto-tester/src/ui/AutoTester.ui b/tools/auto-tester/src/ui/AutoTester.ui index 9030016f34..680fe17785 100644 --- a/tools/auto-tester/src/ui/AutoTester.ui +++ b/tools/auto-tester/src/ui/AutoTester.ui @@ -7,7 +7,7 @@ 0 0 645 - 570 + 814 @@ -18,7 +18,7 @@ 380 - 450 + 620 101 40 @@ -44,7 +44,7 @@ 430 - 320 + 490 101 40 @@ -57,7 +57,7 @@ 330 - 170 + 340 220 40 @@ -70,7 +70,7 @@ 320 - 330 + 500 131 20 @@ -86,7 +86,7 @@ 320 - 380 + 550 255 23 @@ -99,7 +99,7 @@ 330 - 230 + 400 220 40 @@ -229,17 +229,17 @@ - + - 409 + 410 100 - 141 + 140 40 - Create TestRail Test Suite + Create TestRail Test Cases @@ -271,6 +271,19 @@ XML + + + + 410 + 180 + 140 + 40 + + + + Create TestRail Run + + From 431db7c40fb9925d48a6781d11d365bf4303bbfd Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 31 Jul 2018 17:47:55 -0700 Subject: [PATCH 086/332] Added new window for Runs (not used yet). --- tools/auto-tester/src/TestRailInterface.cpp | 38 ++- tools/auto-tester/src/TestRailInterface.h | 4 +- ...ndow.cpp => TestRailRunSelectorWindow.cpp} | 40 +-- .../src/ui/TestRailRunSelectorWindow.h | 50 ++++ ...Window.ui => TestRailRunSelectorWindow.ui} | 6 +- .../ui/TestRailTestCasesSelectorWindow.cpp | 100 +++++++ ...ow.h => TestRailTestCasesSelectorWindow.h} | 12 +- .../src/ui/TestRailTestCasesSelectorWindow.ui | 280 ++++++++++++++++++ 8 files changed, 479 insertions(+), 51 deletions(-) rename tools/auto-tester/src/ui/{TestRailSelectorWindow.cpp => TestRailRunSelectorWindow.cpp} (57%) create mode 100644 tools/auto-tester/src/ui/TestRailRunSelectorWindow.h rename tools/auto-tester/src/ui/{TestRailSelectorWindow.ui => TestRailRunSelectorWindow.ui} (97%) create mode 100644 tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.cpp rename tools/auto-tester/src/ui/{TestRailSelectorWindow.h => TestRailTestCasesSelectorWindow.h} (70%) create mode 100644 tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 962012a3d7..e696f38d0c 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -11,8 +11,6 @@ #include "TestRailInterface.h" #include "Test.h" -#include "ui/TestRailSelectorWindow.h" - #include #include #include @@ -20,17 +18,17 @@ TestRailInterface::TestRailInterface() { _busyWindow.setModal(true); - _testRailSelectorWindow.setModal(true); + _testRailTestCasesSelectorWindow.setModal(true); - _testRailSelectorWindow.setURL("https://highfidelity.testrail.net"); - ////_testRailSelectorWindow.setURL("https://nissimhadar.testrail.io"); - _testRailSelectorWindow.setUser("@highfidelity.io"); + _testRailTestCasesSelectorWindow.setURL("https://highfidelity.testrail.net"); + ////_testRailTestCasesSelectorWindow.setURL("https://nissimhadar.testrail.io"); + _testRailTestCasesSelectorWindow.setUser("@highfidelity.io"); ////_testRailSelectorWindow.setUser("nissim.hadar@gmail.com"); - _testRailSelectorWindow.setProjectID(INTERFACE_PROJECT_ID); + _testRailTestCasesSelectorWindow.setProjectID(INTERFACE_PROJECT_ID); ////_testRailSelectorWindow.setProject(1); - _testRailSelectorWindow.setSuiteID(INTERFACE_SUITE_ID); + _testRailTestCasesSelectorWindow.setSuiteID(INTERFACE_SUITE_ID); } QString TestRailInterface::getObject(const QString& path) { @@ -191,19 +189,19 @@ void TestRailInterface::createStackDotPyScript() { void TestRailInterface::requestTestRailDataFromUser() { // Make sure correct fields are enabled before calling - _testRailSelectorWindow.reset(); - _testRailSelectorWindow.exec(); + _testRailTestCasesSelectorWindow.reset(); + _testRailTestCasesSelectorWindow.exec(); - if (_testRailSelectorWindow.getUserCancelled()) { + if (_testRailTestCasesSelectorWindow.getUserCancelled()) { return; } - _url = _testRailSelectorWindow.getURL() + "/"; - _user = _testRailSelectorWindow.getUser(); - _password = _testRailSelectorWindow.getPassword(); + _url = _testRailTestCasesSelectorWindow.getURL() + "/"; + _user = _testRailTestCasesSelectorWindow.getUser(); + _password = _testRailTestCasesSelectorWindow.getPassword(); ////_password = "tutKA76"; - _projectID = QString::number(_testRailSelectorWindow.getProjectID()); - _suiteID = QString::number(_testRailSelectorWindow.getSuiteID()); + _projectID = QString::number(_testRailTestCasesSelectorWindow.getProjectID()); + _suiteID = QString::number(_testRailTestCasesSelectorWindow.getSuiteID()); } bool TestRailInterface::isAValidTestDirectory(const QString& directory) { @@ -354,11 +352,11 @@ void TestRailInterface::updateMilestonesComboData(int exitCode, QProcess::ExitSt file.close(); // Update the combo - _testRailSelectorWindow.updateMilestoneComboBoxData(_milestoneNames); + _testRailTestCasesSelectorWindow.updateMilestoneComboBoxData(_milestoneNames); - _testRailSelectorWindow.exec(); + _testRailTestCasesSelectorWindow.exec(); - if (_testRailSelectorWindow.getUserCancelled()) { + if (_testRailTestCasesSelectorWindow.getUserCancelled()) { return; } @@ -674,7 +672,7 @@ void TestRailInterface::processTestPython(const QString& fullDirectory, QString testContent = QString("Execute instructions in [THIS TEST](") + testMDName + ")"; QString testExpected = QString("Refer to the expected result in the linked description."); - int milestone_id = _milestones[_milestoneNames[_testRailSelectorWindow.getMilestoneID()]]; + int milestone_id = _milestones[_milestoneNames[_testRailTestCasesSelectorWindow.getMilestoneID()]]; stream << "data = {\n" << "\t'title': '" << title << "',\n" diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 4d863a0e3c..b6fe53bc30 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -12,7 +12,7 @@ #define hifi_test_testrail_interface_h #include "ui/BusyWindow.h" -#include "ui/TestRailSelectorWindow.h" +#include "ui/TestRailTestCasesSelectorWindow.h" #include #include #include @@ -81,7 +81,7 @@ private: QDomDocument _document; BusyWindow _busyWindow; - TestRailSelectorWindow _testRailSelectorWindow; + TestRailTestCasesSelectorWindow _testRailTestCasesSelectorWindow; QString _url; QString _user; diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.cpp similarity index 57% rename from tools/auto-tester/src/ui/TestRailSelectorWindow.cpp rename to tools/auto-tester/src/ui/TestRailRunSelectorWindow.cpp index cb1c805923..4da4b1493f 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.cpp +++ b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.cpp @@ -1,26 +1,26 @@ // -// TestRailSelectorWindow.cpp +// TestRailRunSelectorWindow.cpp // -// Created by Nissim Hadar on 26 Jul 2017. +// Created by Nissim Hadar on 31 Jul 2017. // Copyright 2013 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#include "TestRailSelectorWindow.h" +#include "TestRailRunSelectorWindow.h" #include #include -TestRailSelectorWindow::TestRailSelectorWindow(QWidget *parent) { +TestRailRunSelectorWindow::TestRailRunSelectorWindow(QWidget *parent) { setupUi(this); projectIDLineEdit->setValidator(new QIntValidator(1, 999, this)); } -void TestRailSelectorWindow::reset() { +void TestRailRunSelectorWindow::reset() { urlLineEdit->setDisabled(false); userLineEdit->setDisabled(false); passwordLineEdit->setDisabled(false); @@ -30,7 +30,7 @@ void TestRailSelectorWindow::reset() { milestoneComboBox->setDisabled(true); } -void TestRailSelectorWindow::on_acceptButton_clicked() { +void TestRailRunSelectorWindow::on_acceptButton_clicked() { urlLineEdit->setDisabled(true); userLineEdit->setDisabled(true); passwordLineEdit->setDisabled(true); @@ -41,60 +41,60 @@ void TestRailSelectorWindow::on_acceptButton_clicked() { close(); } -void TestRailSelectorWindow::on_OKButton_clicked() { +void TestRailRunSelectorWindow::on_OKButton_clicked() { userCancelled = false; close(); } -void TestRailSelectorWindow::on_cancelButton_clicked() { +void TestRailRunSelectorWindow::on_cancelButton_clicked() { userCancelled = true; close(); } -bool TestRailSelectorWindow::getUserCancelled() { +bool TestRailRunSelectorWindow::getUserCancelled() { return userCancelled; } -void TestRailSelectorWindow::setURL(const QString& user) { +void TestRailRunSelectorWindow::setURL(const QString& user) { urlLineEdit->setText(user); } -QString TestRailSelectorWindow::getURL() { +QString TestRailRunSelectorWindow::getURL() { return urlLineEdit->text(); } -void TestRailSelectorWindow::setUser(const QString& user) { +void TestRailRunSelectorWindow::setUser(const QString& user) { userLineEdit->setText(user); } -QString TestRailSelectorWindow::getUser() { +QString TestRailRunSelectorWindow::getUser() { return userLineEdit->text(); } -QString TestRailSelectorWindow::getPassword() { +QString TestRailRunSelectorWindow::getPassword() { return passwordLineEdit->text(); } -void TestRailSelectorWindow::setProjectID(const int project) { +void TestRailRunSelectorWindow::setProjectID(const int project) { projectIDLineEdit->setText(QString::number(project)); } -int TestRailSelectorWindow::getProjectID() { +int TestRailRunSelectorWindow::getProjectID() { return projectIDLineEdit->text().toInt(); } -void TestRailSelectorWindow::setSuiteID(const int project) { +void TestRailRunSelectorWindow::setSuiteID(const int project) { suiteIDLineEdit->setText(QString::number(project)); } -int TestRailSelectorWindow::getSuiteID() { +int TestRailRunSelectorWindow::getSuiteID() { return suiteIDLineEdit->text().toInt(); } -void TestRailSelectorWindow::updateMilestoneComboBoxData(QStringList data) { +void TestRailRunSelectorWindow::updateMilestoneComboBoxData(QStringList data) { milestoneComboBox->insertItems(0, data); } -int TestRailSelectorWindow::getMilestoneID() { +int TestRailRunSelectorWindow::getMilestoneID() { return milestoneComboBox->currentIndex(); } \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailRunSelectorWindow.h b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.h new file mode 100644 index 0000000000..ece70124b9 --- /dev/null +++ b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.h @@ -0,0 +1,50 @@ +// +// TestRailRunSelectorWindow.h +// +// Created by Nissim Hadar on 31 Jul 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#ifndef hifi_TestRailRunSelectorWindow_h +#define hifi_TestRailRunSelectorWindow_h + +#include "ui_TestRailRunSelectorWindow.h" + +class TestRailRunSelectorWindow : public QDialog, public Ui::TestRailRunSelectorWindow { + Q_OBJECT + +public: + TestRailRunSelectorWindow(QWidget* parent = Q_NULLPTR); + + void reset(); + + bool getUserCancelled(); + + void setURL(const QString& user); + QString getURL(); + + void setUser(const QString& user); + QString getUser(); + + QString getPassword(); + + void setProjectID(const int project); + int getProjectID(); + + void setSuiteID(const int project); + int getSuiteID(); + + bool userCancelled{ false }; + + void updateMilestoneComboBoxData(QStringList data); + int getMilestoneID(); + +private slots: + void on_acceptButton_clicked(); + void on_OKButton_clicked(); + void on_cancelButton_clicked(); +}; + +#endif \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.ui similarity index 97% rename from tools/auto-tester/src/ui/TestRailSelectorWindow.ui rename to tools/auto-tester/src/ui/TestRailRunSelectorWindow.ui index 24be35b92f..c83b98c5cc 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.ui +++ b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.ui @@ -1,7 +1,7 @@ - TestRailSelectorWindow - + TestRailRunSelectorWindow + 0 @@ -11,7 +11,7 @@ - TestRail Selector Window + TestRail Run Selector Window diff --git a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.cpp new file mode 100644 index 0000000000..afef51a321 --- /dev/null +++ b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.cpp @@ -0,0 +1,100 @@ +// +// TestRailTestCasesSelectorWindow.cpp +// +// Created by Nissim Hadar on 26 Jul 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include "TestRailTestCasesSelectorWindow.h" + +#include + +#include + +TestRailTestCasesSelectorWindow::TestRailTestCasesSelectorWindow(QWidget *parent) { + setupUi(this); + + projectIDLineEdit->setValidator(new QIntValidator(1, 999, this)); +} + + +void TestRailTestCasesSelectorWindow::reset() { + urlLineEdit->setDisabled(false); + userLineEdit->setDisabled(false); + passwordLineEdit->setDisabled(false); + projectIDLineEdit->setDisabled(false); + + OKButton->setDisabled(true); + milestoneComboBox->setDisabled(true); +} + +void TestRailTestCasesSelectorWindow::on_acceptButton_clicked() { + urlLineEdit->setDisabled(true); + userLineEdit->setDisabled(true); + passwordLineEdit->setDisabled(true); + projectIDLineEdit->setDisabled(true); + + OKButton->setDisabled(false); + milestoneComboBox->setDisabled(false); + close(); +} + +void TestRailTestCasesSelectorWindow::on_OKButton_clicked() { + userCancelled = false; + close(); +} + +void TestRailTestCasesSelectorWindow::on_cancelButton_clicked() { + userCancelled = true; + close(); +} + +bool TestRailTestCasesSelectorWindow::getUserCancelled() { + return userCancelled; +} + +void TestRailTestCasesSelectorWindow::setURL(const QString& user) { + urlLineEdit->setText(user); +} + +QString TestRailTestCasesSelectorWindow::getURL() { + return urlLineEdit->text(); +} + +void TestRailTestCasesSelectorWindow::setUser(const QString& user) { + userLineEdit->setText(user); +} + +QString TestRailTestCasesSelectorWindow::getUser() { + return userLineEdit->text(); +} + +QString TestRailTestCasesSelectorWindow::getPassword() { + return passwordLineEdit->text(); +} + +void TestRailTestCasesSelectorWindow::setProjectID(const int project) { + projectIDLineEdit->setText(QString::number(project)); +} + +int TestRailTestCasesSelectorWindow::getProjectID() { + return projectIDLineEdit->text().toInt(); +} + +void TestRailTestCasesSelectorWindow::setSuiteID(const int project) { + suiteIDLineEdit->setText(QString::number(project)); +} + +int TestRailTestCasesSelectorWindow::getSuiteID() { + return suiteIDLineEdit->text().toInt(); +} + +void TestRailTestCasesSelectorWindow::updateMilestoneComboBoxData(QStringList data) { + milestoneComboBox->insertItems(0, data); +} + +int TestRailTestCasesSelectorWindow::getMilestoneID() { + return milestoneComboBox->currentIndex(); +} \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailSelectorWindow.h b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.h similarity index 70% rename from tools/auto-tester/src/ui/TestRailSelectorWindow.h rename to tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.h index 89af63d1e2..fb9d741bab 100644 --- a/tools/auto-tester/src/ui/TestRailSelectorWindow.h +++ b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.h @@ -1,5 +1,5 @@ // -// TestRailSelectorWindow.h +// TestRailTestCasesSelectorWindow.h // // Created by Nissim Hadar on 26 Jul 2017. // Copyright 2013 High Fidelity, Inc. @@ -7,16 +7,16 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#ifndef hifi_TestRailSelectorWindow_h -#define hifi_TestRailSelectorWindow_h +#ifndef hifi_TestRailTestCasesSelectorWindow_h +#define hifi_TestRailTestCasesSelectorWindow_h -#include "ui_TestRailSelectorWindow.h" +#include "ui_TestRailTestCasesSelectorWindow.h" -class TestRailSelectorWindow : public QDialog, public Ui::TestRailSelectorWindow { +class TestRailTestCasesSelectorWindow : public QDialog, public Ui::TestRailTestCasesSelectorWindow { Q_OBJECT public: - TestRailSelectorWindow(QWidget* parent = Q_NULLPTR); + TestRailTestCasesSelectorWindow(QWidget* parent = Q_NULLPTR); void reset(); diff --git a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui new file mode 100644 index 0000000000..9233f7a629 --- /dev/null +++ b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui @@ -0,0 +1,280 @@ + + + TestRailTestCasesSelectorWindow + + + + 0 + 0 + 489 + 474 + + + + TestRail Test Case Selector Window + + + + + 30 + 850 + 500 + 28 + + + + + 12 + + + + similarity + + + + + + 70 + 125 + 121 + 20 + + + + + 10 + + + + TestRail Password + + + + + + 70 + 25 + 121 + 20 + + + + + 10 + + + + TestRail URL + + + + + false + + + + 120 + 420 + 93 + 28 + + + + OK + + + + + + 280 + 420 + 93 + 28 + + + + Cancel + + + + + + 200 + 120 + 231 + 24 + + + + QLineEdit::Password + + + + + + 70 + 75 + 121 + 20 + + + + + 10 + + + + TestRail User + + + + + + 200 + 170 + 231 + 24 + + + + QLineEdit::Normal + + + + + + 70 + 175 + 121 + 20 + + + + + 10 + + + + TestRail Project ID + + + + + + 200 + 270 + 231 + 28 + + + + Accept + + + + + false + + + + 270 + 350 + 161 + 22 + + + + + + true + + + + 140 + 350 + 121 + 20 + + + + + 10 + + + + TestRail Milestone + + + + + + 200 + 20 + 231 + 24 + + + + QLineEdit::Normal + + + + + + 200 + 70 + 231 + 24 + + + + QLineEdit::Normal + + + + + + 200 + 215 + 231 + 24 + + + + QLineEdit::Normal + + + + + + 70 + 220 + 121 + 20 + + + + + 10 + + + + TestRail Suite ID + + + + + + urlLineEdit + userLineEdit + passwordLineEdit + projectIDLineEdit + suiteIDLineEdit + acceptButton + milestoneComboBox + OKButton + cancelButton + + + + From 121f5e012956ab9b105d174cb3bfd62d89f28e78 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 31 Jul 2018 17:58:11 -0700 Subject: [PATCH 087/332] Set window modality in UI files. --- tools/auto-tester/src/TestRailInterface.cpp | 4 +--- tools/auto-tester/src/TestRailInterface.h | 6 +++++- tools/auto-tester/src/ui/BusyWindow.ui | 3 +++ tools/auto-tester/src/ui/MismatchWindow.ui | 5 ++++- tools/auto-tester/src/ui/TestRailRunSelectorWindow.ui | 3 +++ 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index e696f38d0c..d82add0db7 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -17,9 +17,6 @@ #include TestRailInterface::TestRailInterface() { - _busyWindow.setModal(true); - _testRailTestCasesSelectorWindow.setModal(true); - _testRailTestCasesSelectorWindow.setURL("https://highfidelity.testrail.net"); ////_testRailTestCasesSelectorWindow.setURL("https://nissimhadar.testrail.io"); _testRailTestCasesSelectorWindow.setUser("@highfidelity.io"); @@ -689,4 +686,5 @@ void TestRailInterface::processTestPython(const QString& fullDirectory, } void TestRailInterface::createTestRailRun() { + } \ No newline at end of file diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index b6fe53bc30..53d4bee618 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -12,7 +12,10 @@ #define hifi_test_testrail_interface_h #include "ui/BusyWindow.h" + #include "ui/TestRailTestCasesSelectorWindow.h" +#include "ui/TestRailRunSelectorWindow.h" + #include #include #include @@ -54,7 +57,7 @@ public: void createTestRailDotPyScript(); void createStackDotPyScript(); void requestTestRailDataFromUser(); - void requestMilestoneFromUser(); + void createAddTestCasesPythonScript(const QString& testDirectory, const QString& userGitHub, const QString& branchGitHub); @@ -82,6 +85,7 @@ private: BusyWindow _busyWindow; TestRailTestCasesSelectorWindow _testRailTestCasesSelectorWindow; + TestRailRunSelectorWindow _testRailRunSelectorWindow; QString _url; QString _user; diff --git a/tools/auto-tester/src/ui/BusyWindow.ui b/tools/auto-tester/src/ui/BusyWindow.ui index f04a39418b..c237566a5e 100644 --- a/tools/auto-tester/src/ui/BusyWindow.ui +++ b/tools/auto-tester/src/ui/BusyWindow.ui @@ -2,6 +2,9 @@ BusyWindow + + Qt::ApplicationModal + 0 diff --git a/tools/auto-tester/src/ui/MismatchWindow.ui b/tools/auto-tester/src/ui/MismatchWindow.ui index 72f86261ab..8a174989d4 100644 --- a/tools/auto-tester/src/ui/MismatchWindow.ui +++ b/tools/auto-tester/src/ui/MismatchWindow.ui @@ -2,6 +2,9 @@ MismatchWindow + + Qt::ApplicationModal + 0 @@ -193,4 +196,4 @@ - \ No newline at end of file + diff --git a/tools/auto-tester/src/ui/TestRailRunSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.ui index c83b98c5cc..a15c1b6d0c 100644 --- a/tools/auto-tester/src/ui/TestRailRunSelectorWindow.ui +++ b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.ui @@ -2,6 +2,9 @@ TestRailRunSelectorWindow + + Qt::ApplicationModal + 0 From 02dd2f4f286b8451c061a1cb1aaf3c5cc98d51b0 Mon Sep 17 00:00:00 2001 From: amantley Date: Tue, 31 Jul 2018 18:26:44 -0700 Subject: [PATCH 088/332] added velocity scaling for forward and back --- interface/src/avatar/MyAvatar.cpp | 25 +++++++++++++++++++++++-- interface/src/avatar/MyAvatar.h | 5 +++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index bf7276d5d5..7416d22367 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2326,6 +2326,14 @@ void MyAvatar::updateOrientation(float deltaTime) { } } +static float scaleSpeedByDirection(glm::vec2 velocityDirection, float speed) { + float scale = 1.0f; + if (velocityDirection.y > 0.0f) { + scale = 0.5f; + } + return scale * speed; +} + void MyAvatar::updateActionMotor(float deltaTime) { bool thrustIsPushing = (glm::length2(_thrust) > EPSILON); bool scriptedMotorIsPushing = (_motionBehaviors & AVATAR_MOTION_SCRIPTED_MOTOR_ENABLED) @@ -2387,7 +2395,10 @@ void MyAvatar::updateActionMotor(float deltaTime) { _actionMotorVelocity = motorSpeed * direction; } else { // we're interacting with a floor --> simple horizontal speed and exponential decay - _actionMotorVelocity = getSensorToWorldScale() * (_walkSpeed.get() * _walkSpeedScalar) * direction; + const glm::vec2 currentVel = { direction.x, direction.z }; + float wspd = _walkSpeed.get(); + float scaledSpeed = scaleSpeedByDirection(currentVel, wspd); + _actionMotorVelocity = getSensorToWorldScale() * (scaledSpeed * _walkSpeedScalar) * direction; } float previousBoomLength = _boomLength; @@ -3358,13 +3369,23 @@ bool MyAvatar::isReadyForPhysics() const { } void MyAvatar::setSprintMode(bool sprint) { - _walkSpeedScalar = sprint ? AVATAR_SPRINT_SPEED_SCALAR : AVATAR_WALK_SPEED_SCALAR; + _walkSpeedScalar = sprint ? _sprintSpeed.get() : AVATAR_WALK_SPEED_SCALAR; } void MyAvatar::setWalkSpeed(float value) { _walkSpeed.set(value); } +void MyAvatar::setSprintSpeed(float speed) { + _sprintSpeed.set(speed); +} + +float MyAvatar::getSprintSpeed() const { + return _sprintSpeed.get(); +} + + + QVector MyAvatar::getScriptUrls() { QVector scripts = _skeletonModel->isLoaded() ? _skeletonModel->getFBXGeometry().scripts : QVector(); return scripts; diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index add00962da..78d010808f 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -138,6 +138,7 @@ class MyAvatar : public Avatar { * where MyAvatar.sessionUUID is not available (e.g., if not connected to a domain). Note: Likely to be deprecated. * Read-only. * @property {number} walkSpeed + * @property {number} sprintSpeed * * @property {Vec3} skeletonOffset - Can be used to apply a translation offset between the avatar's position and the * registration point of the 3D model. @@ -233,6 +234,7 @@ class MyAvatar : public Avatar { Q_PROPERTY(QUuid SELF_ID READ getSelfID CONSTANT) Q_PROPERTY(float walkSpeed READ getWalkSpeed WRITE setWalkSpeed); + Q_PROPERTY(float sprintSpeed READ getSprintSpeed WRITE setSprintSpeed); const QString DOMINANT_LEFT_HAND = "left"; const QString DOMINANT_RIGHT_HAND = "right"; @@ -1048,6 +1050,8 @@ public: void setWalkSpeed(float value); float getWalkSpeed() const; + void setSprintSpeed(float speed); + float getSprintSpeed() const; QVector getScriptUrls(); @@ -1703,6 +1707,7 @@ private: // max unscaled forward movement speed ThreadSafeValueCache _walkSpeed { DEFAULT_AVATAR_MAX_WALKING_SPEED }; + ThreadSafeValueCache _sprintSpeed { AVATAR_SPRINT_SPEED_SCALAR }; float _walkSpeedScalar { AVATAR_WALK_SPEED_SCALAR }; // load avatar scripts once when rig is ready From 36d131592d71095a5ab81d3142c4c8d35505e854 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 31 Jul 2018 22:23:10 -0700 Subject: [PATCH 089/332] WIP --- tools/auto-tester/src/TestRailInterface.cpp | 34 +++++++++++++++++++-- tools/auto-tester/src/TestRailInterface.h | 7 ++++- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index d82add0db7..3161e4109c 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -26,6 +26,16 @@ TestRailInterface::TestRailInterface() { ////_testRailSelectorWindow.setProject(1); _testRailTestCasesSelectorWindow.setSuiteID(INTERFACE_SUITE_ID); + + _testRailRunSelectorWindow.setURL("https://highfidelity.testrail.net"); + ////_testRailRunSelectorWindow.setURL("https://nissimhadar.testrail.io"); + _testRailRunSelectorWindow.setUser("@highfidelity.io"); + ////_testRailSelectorWindow.setUser("nissim.hadar@gmail.com"); + + _testRailRunSelectorWindow.setProjectID(INTERFACE_PROJECT_ID); + ////_testRailSelectorWindow.setProject(1); + + _testRailRunSelectorWindow.setSuiteID(INTERFACE_SUITE_ID); } QString TestRailInterface::getObject(const QString& path) { @@ -184,7 +194,7 @@ void TestRailInterface::createStackDotPyScript() { file.close(); } -void TestRailInterface::requestTestRailDataFromUser() { +void TestRailInterface::requestTestRailTestCasesDataFromUser() { // Make sure correct fields are enabled before calling _testRailTestCasesSelectorWindow.reset(); _testRailTestCasesSelectorWindow.exec(); @@ -312,6 +322,11 @@ void TestRailInterface::createAddTestCasesPythonScript(const QString& testDirect } void TestRailInterface::updateMilestonesComboData(int exitCode, QProcess::ExitStatus exitStatus) { + // Quit if user has previously cancelled + if (_testRailTestCasesSelectorWindow.getUserCancelled()) { + return; + } + // Check if process completed successfully if (exitStatus != QProcess::NormalExit) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), @@ -424,7 +439,7 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, return; } - requestTestRailDataFromUser(); + requestTestRailTestCasesDataFromUser(); createTestRailDotPyScript(); createStackDotPyScript(); @@ -685,6 +700,19 @@ void TestRailInterface::processTestPython(const QString& fullDirectory, stream << "case = client.send_post('add_case/' + str(section_id), data)\n"; } +void TestRailInterface::requestTestRailRunDataFromUser() { + _testRailRunSelectorWindow.reset(); + _testRailRunSelectorWindow.exec(); +} + +void TestRailInterface::getTestCasesFromTestRail() { +} + void TestRailInterface::createTestRailRun() { - + requestTestRailRunDataFromUser(); + createTestRailDotPyScript(); + createStackDotPyScript(); + + // TestRail will be updated after the process initiated by getTestCasesFromTestRail has completed + getTestCasesFromTestRail(); } \ No newline at end of file diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 53d4bee618..4501be2d87 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -54,9 +54,13 @@ public: const QString& branchGitHub); void getMilestonesFromTestRail(); + void getTestCasesFromTestRail(); + void createTestRailDotPyScript(); void createStackDotPyScript(); - void requestTestRailDataFromUser(); + + void requestTestRailTestCasesDataFromUser(); + void requestTestRailRunDataFromUser(); void createAddTestCasesPythonScript(const QString& testDirectory, const QString& userGitHub, @@ -68,6 +72,7 @@ public: const QString& branchGitHub); bool isAValidTestDirectory(const QString& directory); + QString getObject(const QString& path); void updateMilestonesComboData(int exitCode, QProcess::ExitStatus exitStatus); From d1d67823819d88d2ef255e06ea72d91bd8111174 Mon Sep 17 00:00:00 2001 From: Olivier Prat Date: Wed, 1 Aug 2018 17:02:52 +0200 Subject: [PATCH 090/332] Repaired Luci shadow cascade and depth visualisation --- .../render-utils/src/RenderDeferredTask.cpp | 26 +++++++++++++++++++ .../render-utils/src/RenderDeferredTask.h | 16 +++++++++++- .../render-utils/src/RenderForwardTask.cpp | 5 ++-- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 0b05977265..57522f37d8 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -211,6 +211,9 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren const auto overlaysInFrontOpaque = filteredOverlaysOpaque.getN(0); const auto overlaysInFrontTransparent = filteredOverlaysTransparent.getN(0); + // We don't want the overlay to clear the deferred frame buffer depth because we would like to keep it for debugging visualisation + task.addJob("SeparateDepthForOverlay", deferredFramebuffer); + const auto overlayInFrontOpaquesInputs = DrawOverlay3D::Inputs(overlaysInFrontOpaque, lightingModel, jitter).asVarying(); const auto overlayInFrontTransparentsInputs = DrawOverlay3D::Inputs(overlaysInFrontTransparent, lightingModel, jitter).asVarying(); task.addJob("DrawOverlayInFrontOpaque", overlayInFrontOpaquesInputs, true); @@ -451,3 +454,26 @@ void DrawStateSortDeferred::run(const RenderContextPointer& renderContext, const config->setNumDrawn((int)inItems.size()); } + +void SetSeparateDeferredDepthBuffer::run(const render::RenderContextPointer& renderContext, const Inputs& inputs) { + assert(renderContext->args); + + const auto deferredFramebuffer = inputs->getDeferredFramebuffer(); + const auto frameSize = deferredFramebuffer->getSize(); + const auto renderbufferCount = deferredFramebuffer->getNumRenderBuffers(); + + if (!_framebuffer || _framebuffer->getSize() != frameSize || _framebuffer->getNumRenderBuffers() != renderbufferCount) { + auto depthFormat = deferredFramebuffer->getDepthStencilBufferFormat(); + auto depthStencilTexture = gpu::TexturePointer(gpu::Texture::createRenderBuffer(depthFormat, frameSize.x, frameSize.y)); + _framebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("deferredFramebufferSeparateDepth")); + _framebuffer->setDepthStencilBuffer(depthStencilTexture, depthFormat); + for (decltype(deferredFramebuffer->getNumRenderBuffers()) i = 0; i < renderbufferCount; i++) { + _framebuffer->setRenderBuffer(i, deferredFramebuffer->getRenderBuffer(i)); + } + } + + RenderArgs* args = renderContext->args; + gpu::doInBatch("SetSeparateDeferredDepthBuffer::run", args->_context, [this](gpu::Batch& batch) { + batch.setFramebuffer(_framebuffer); + }); +} diff --git a/libraries/render-utils/src/RenderDeferredTask.h b/libraries/render-utils/src/RenderDeferredTask.h index 1ce1682cf1..918fe606ee 100644 --- a/libraries/render-utils/src/RenderDeferredTask.h +++ b/libraries/render-utils/src/RenderDeferredTask.h @@ -87,7 +87,8 @@ public: using JobModel = render::Job::ModelI; DrawStateSortDeferred(render::ShapePlumberPointer shapePlumber) - : _shapePlumber{ shapePlumber } {} + : _shapePlumber{ shapePlumber } { + } void configure(const Config& config) { _maxDrawn = config.maxDrawn; @@ -101,6 +102,19 @@ protected: bool _stateSort; }; +class SetSeparateDeferredDepthBuffer { +public: + using Inputs = DeferredFramebufferPointer; + using JobModel = render::Job::ModelI; + + SetSeparateDeferredDepthBuffer() = default; + + void run(const render::RenderContextPointer& renderContext, const Inputs& inputs); + +protected: + gpu::FramebufferPointer _framebuffer; +}; + class RenderDeferredTaskConfig : public render::Task::Config { Q_OBJECT Q_PROPERTY(float fadeScale MEMBER fadeScale NOTIFY dirty) diff --git a/libraries/render-utils/src/RenderForwardTask.cpp b/libraries/render-utils/src/RenderForwardTask.cpp index d2933627f4..a71c5fb774 100755 --- a/libraries/render-utils/src/RenderForwardTask.cpp +++ b/libraries/render-utils/src/RenderForwardTask.cpp @@ -80,9 +80,10 @@ void RenderForwardTask::build(JobModel& task, const render::Varying& input, rend const auto filteredOverlaysTransparent = task.addJob("FilterOverlaysLayeredTransparent", overlayTransparents, render::hifi::LAYER_3D_FRONT); const auto overlaysInFrontOpaque = filteredOverlaysOpaque.getN(0); const auto overlaysInFrontTransparent = filteredOverlaysTransparent.getN(0); + const auto nullJitter = Varying(glm::vec2(0.0f, 0.0f)); - const auto overlayInFrontOpaquesInputs = DrawOverlay3D::Inputs(overlaysInFrontOpaque, lightingModel, nullptr).asVarying(); - const auto overlayInFrontTransparentsInputs = DrawOverlay3D::Inputs(overlaysInFrontTransparent, lightingModel, nullptr).asVarying(); + const auto overlayInFrontOpaquesInputs = DrawOverlay3D::Inputs(overlaysInFrontOpaque, lightingModel, nullJitter).asVarying(); + const auto overlayInFrontTransparentsInputs = DrawOverlay3D::Inputs(overlaysInFrontTransparent, lightingModel, nullJitter).asVarying(); task.addJob("DrawOverlayInFrontOpaque", overlayInFrontOpaquesInputs, true); task.addJob("DrawOverlayInFrontTransparent", overlayInFrontTransparentsInputs, false); From e11030bbc3ebb7229933bbdbf861652a79fbc6cd Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Wed, 1 Aug 2018 09:46:17 -0700 Subject: [PATCH 091/332] mukul's changes, enable parabolic teleport --- .../controllers/controllerModules/teleport.js | 78 ++++++------------- 1 file changed, 25 insertions(+), 53 deletions(-) diff --git a/scripts/system/controllers/controllerModules/teleport.js b/scripts/system/controllers/controllerModules/teleport.js index 4255eeb400..21acb9346b 100644 --- a/scripts/system/controllers/controllerModules/teleport.js +++ b/scripts/system/controllers/controllerModules/teleport.js @@ -22,7 +22,6 @@ Script.include("/~/system/libraries/controllers.js"); (function() { // BEGIN LOCAL_SCOPE var TARGET_MODEL_URL = Script.resolvePath("../../assets/models/teleport-destination.fbx"); - var TOO_CLOSE_MODEL_URL = Script.resolvePath("../../assets/models/teleport-cancel.fbx"); var SEAT_MODEL_URL = Script.resolvePath("../../assets/models/teleport-seat.fbx"); var TARGET_MODEL_DIMENSIONS = { @@ -49,8 +48,6 @@ Script.include("/~/system/libraries/controllers.js"); blue: 73 }; - var COOL_IN_DURATION = 300; - var handInfo = { right: { controllerInput: Controller.Standard.RightHand @@ -61,37 +58,19 @@ Script.include("/~/system/libraries/controllers.js"); }; var cancelPath = { - type: "line3d", color: COLORS_TELEPORT_CANCEL, - ignorePickIntersection: true, alpha: 1, - solid: true, - drawInFront: true, - glow: 1.0 + width: 0.025 }; var teleportPath = { - type: "line3d", color: COLORS_TELEPORT_CAN_TELEPORT, - ignorePickIntersection: true, alpha: 1, - solid: true, - drawInFront: true, - glow: 1.0 + width: 0.025 }; var seatPath = { - type: "line3d", color: COLORS_TELEPORT_SEAT, - ignorePickIntersection: true, alpha: 1, - solid: true, - drawInFront: true, - glow: 1.0 - }; - var cancelEnd = { - type: "model", - url: TOO_CLOSE_MODEL_URL, - dimensions: TARGET_MODEL_DIMENSIONS, - ignorePickIntersection: true + width: 0.025 }; var teleportEnd = { type: "model", @@ -107,20 +86,18 @@ Script.include("/~/system/libraries/controllers.js"); }; - var teleportRenderStates = [{name: "cancel", path: cancelPath, end: cancelEnd}, + var teleportRenderStates = [{name: "cancel", path: cancelPath}, {name: "teleport", path: teleportPath, end: teleportEnd}, {name: "seat", path: seatPath, end: seatEnd}]; - var DEFAULT_DISTANCE = 50; + var DEFAULT_DISTANCE = 8.0; var teleportDefaultRenderStates = [{name: "cancel", distance: DEFAULT_DISTANCE, path: cancelPath}]; - var coolInTimeout = null; var ignoredEntities = []; var TELEPORTER_STATES = { IDLE: 'idle', - COOL_IN: 'cool_in', TARGETTING: 'targetting', TARGETTING_INVALID: 'targetting_invalid' }; @@ -133,7 +110,7 @@ Script.include("/~/system/libraries/controllers.js"); SEAT: 'seat' // The current target is a seat }; - var speed = 7.0; + var speed = 12.0; var accelerationAxis = {x: 0.0, y: -5.0, z: 0.0}; function Teleporter(hand) { @@ -151,8 +128,10 @@ Script.include("/~/system/libraries/controllers.js"); return otherModule; }; - this.teleportParabolaHandVisible = Pointers.createPointer(PickType.Ray, { + this.teleportParabolaHandVisible = Pointers.createPointer(PickType.Parabola, { joint: (_this.hand === RIGHT_HAND) ? "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND" : "_CAMERA_RELATIVE_CONTROLLER_LEFTHAND", + dirOffset: { x: 0, y: 1, z: 0.1 }, + posOffset: { x: (_this.hand === RIGHT_HAND) ? 0.03 : -0.03, y: 0.2, z: 0.02 }, filter: Picks.PICK_ENTITIES, faceAvatar: true, scaleWithAvatar: true, @@ -161,10 +140,13 @@ Script.include("/~/system/libraries/controllers.js"); accelerationAxis: accelerationAxis, rotateAccelerationWithAvatar: true, renderStates: teleportRenderStates, - defaultRenderStates: teleportDefaultRenderStates + defaultRenderStates: teleportDefaultRenderStates, + maxDistance: 8.0 }); - this.teleportParabolaHandInvisible = Pointers.createPointer(PickType.Ray, { + this.teleportParabolaHandInvisible = Pointers.createPointer(PickType.Parabola, { joint: (_this.hand === RIGHT_HAND) ? "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND" : "_CAMERA_RELATIVE_CONTROLLER_LEFTHAND", + dirOffset: { x: 0, y: 1, z: 0.1 }, + posOffset: { x: (_this.hand === RIGHT_HAND) ? 0.03 : -0.03, y: 0.2, z: 0.02 }, filter: Picks.PICK_ENTITIES | Picks.PICK_INCLUDE_INVISIBLE, faceAvatar: true, scaleWithAvatar: true, @@ -172,9 +154,10 @@ Script.include("/~/system/libraries/controllers.js"); speed: speed, accelerationAxis: accelerationAxis, rotateAccelerationWithAvatar: true, - renderStates: teleportRenderStates + renderStates: teleportRenderStates, + maxDistance: 8.0 }); - this.teleportParabolaHeadVisible = Pointers.createPointer(PickType.Ray, { + this.teleportParabolaHeadVisible = Pointers.createPointer(PickType.Parabola, { joint: "Avatar", filter: Picks.PICK_ENTITIES, faceAvatar: true, @@ -184,9 +167,10 @@ Script.include("/~/system/libraries/controllers.js"); accelerationAxis: accelerationAxis, rotateAccelerationWithAvatar: true, renderStates: teleportRenderStates, - defaultRenderStates: teleportDefaultRenderStates + defaultRenderStates: teleportDefaultRenderStates, + maxDistance: 8.0 }); - this.teleportParabolaHeadInvisible = Pointers.createPointer(PickType.Ray, { + this.teleportParabolaHeadInvisible = Pointers.createPointer(PickType.Parabola, { joint: "Avatar", filter: Picks.PICK_ENTITIES | Picks.PICK_INCLUDE_INVISIBLE, faceAvatar: true, @@ -195,7 +179,8 @@ Script.include("/~/system/libraries/controllers.js"); speed: speed, accelerationAxis: accelerationAxis, rotateAccelerationWithAvatar: true, - renderStates: teleportRenderStates + renderStates: teleportRenderStates, + maxDistance: 8.0 }); this.cleanup = function() { @@ -216,16 +201,7 @@ Script.include("/~/system/libraries/controllers.js"); 100); this.enterTeleport = function() { - if (coolInTimeout !== null) { - Script.clearTimeout(coolInTimeout); - } - - this.state = TELEPORTER_STATES.COOL_IN; - coolInTimeout = Script.setTimeout(function() { - if (_this.state === TELEPORTER_STATES.COOL_IN) { - _this.state = TELEPORTER_STATES.TARGETTING; - } - }, COOL_IN_DURATION); + this.state = TELEPORTER_STATES.TARGETTING; }; this.isReady = function(controllerData, deltaTime) { @@ -287,11 +263,7 @@ Script.include("/~/system/libraries/controllers.js"); } else if (teleportLocationType === TARGET.INVALID || teleportLocationType === TARGET.INVISIBLE) { this.setTeleportState(mode, "", "cancel"); } else if (teleportLocationType === TARGET.SURFACE) { - if (this.state === TELEPORTER_STATES.COOL_IN) { - this.setTeleportState(mode, "cancel", ""); - } else { - this.setTeleportState(mode, "teleport", ""); - } + this.setTeleportState(mode, "teleport", ""); } else if (teleportLocationType === TARGET.SEAT) { this.setTeleportState(mode, "", "seat"); } @@ -304,7 +276,7 @@ Script.include("/~/system/libraries/controllers.js"); return makeRunningValues(true, [], []); } - if (target === TARGET.NONE || target === TARGET.INVALID || this.state === TELEPORTER_STATES.COOL_IN) { + if (target === TARGET.NONE || target === TARGET.INVALID) { // Do nothing } else if (target === TARGET.SEAT) { Entities.callEntityMethod(result.objectID, 'sit'); From a8c408abe82621431ba3af10f4b252fde39d283f Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Wed, 1 Aug 2018 10:59:21 -0700 Subject: [PATCH 092/332] correct render bounds for parabolas --- interface/src/raypick/ParabolaPointer.cpp | 38 +++++++++++++++++++---- interface/src/raypick/ParabolaPointer.h | 1 + 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/interface/src/raypick/ParabolaPointer.cpp b/interface/src/raypick/ParabolaPointer.cpp index 9371995a2a..fd6bdc7dbb 100644 --- a/interface/src/raypick/ParabolaPointer.cpp +++ b/interface/src/raypick/ParabolaPointer.cpp @@ -117,8 +117,6 @@ ParabolaPointer::RenderState::RenderState(const OverlayID& startID, const Overla _pathWidth = pathWidth; if (render::Item::isValidID(_pathID)) { auto renderItem = std::make_shared(pathColor, pathAlpha, pathWidth, isVisibleInSecondaryCamera, pathEnabled); - // TODO: update bounds properly - renderItem->editBound().setBox(glm::vec3(-16000.0f), 32000.0f); transaction.resetItem(_pathID, std::make_shared(renderItem)); scene->enqueueTransaction(transaction); } @@ -182,6 +180,7 @@ void ParabolaPointer::RenderState::update(const glm::vec3& origin, const glm::ve item.setAcceleration(acceleration); item.setParabolicDistance(parabolicDistance); item.setWidth(width); + item.updateBounds(); }); scene->enqueueTransaction(transaction); } @@ -304,10 +303,10 @@ void ParabolaPointer::RenderState::ParabolaRenderItem::setVisible(bool visible) } void ParabolaPointer::RenderState::ParabolaRenderItem::updateKey() { - // FIXME: There's no way to designate a render item as non-shadow-reciever, and since a parabola's bounding box covers the entire domain, - // it seems to block all shadows. I think this is a bug with shadows. - //auto builder = _parabolaData.color.a < 1.0f ? render::ItemKey::Builder::transparentShape() : render::ItemKey::Builder::opaqueShape(); - auto builder = render::ItemKey::Builder::transparentShape(); + auto builder = _parabolaData.color.a < 1.0f ? render::ItemKey::Builder::transparentShape() : render::ItemKey::Builder::opaqueShape(); + + // TODO: parabolas should cast shadows, but they're so thin that the cascaded shadow maps make them look pretty bad + //builder.withShadowCaster(); if (_enabled && _visible) { builder.withVisible(); @@ -324,6 +323,33 @@ void ParabolaPointer::RenderState::ParabolaRenderItem::updateKey() { _key = builder.build(); } +void ParabolaPointer::RenderState::ParabolaRenderItem::updateBounds() { + glm::vec3 max = _origin; + glm::vec3 min = _origin; + + glm::vec3 end = _origin + _parabolaData.velocity * _parabolaData.parabolicDistance + + 0.5f * _parabolaData.acceleration * _parabolaData.parabolicDistance * _parabolaData.parabolicDistance; + max = glm::max(max, end); + min = glm::min(min, end); + + for (int i = 0; i < 3; i++) { + if (fabsf(_parabolaData.velocity[i]) > EPSILON && fabsf(_parabolaData.acceleration[i]) > EPSILON) { + float maxT = -_parabolaData.velocity[i] / _parabolaData.acceleration[i]; + if (maxT > 0.0f && maxT < _parabolaData.parabolicDistance) { + glm::vec3 maxPoint = _origin + _parabolaData.velocity * maxT + 0.5f * _parabolaData.acceleration * maxT * maxT; + max = glm::max(max, maxPoint); + min = glm::min(min, maxPoint); + } + } + } + + glm::vec3 halfWidth = glm::vec3(0.5f * _parabolaData.width); + max += halfWidth; + min -= halfWidth; + + _bound = AABox(min, max - min); +} + const gpu::PipelinePointer ParabolaPointer::RenderState::ParabolaRenderItem::getParabolaPipeline() { if (!_parabolaPipeline || !_transparentParabolaPipeline) { auto vs = parabola_vert::getShader(); diff --git a/interface/src/raypick/ParabolaPointer.h b/interface/src/raypick/ParabolaPointer.h index ee4977e1e4..93f9a7b055 100644 --- a/interface/src/raypick/ParabolaPointer.h +++ b/interface/src/raypick/ParabolaPointer.h @@ -36,6 +36,7 @@ public: void setVisible(bool visible); void updateKey(); void updateUniformBuffer() { _uniformBuffer->setSubData(0, _parabolaData); } + void updateBounds(); void setColor(const glm::vec3& color) { _parabolaData.color = glm::vec4(color, _parabolaData.color.a); } void setAlpha(const float& alpha) { _parabolaData.color.a = alpha; } From 2dd70f1fcdea4481f295bf099d702f2ba8285d7d Mon Sep 17 00:00:00 2001 From: Clement Date: Wed, 1 Aug 2018 11:39:14 -0700 Subject: [PATCH 093/332] Warn against zero-length vectors --- libraries/shared/src/GLMHelpers.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libraries/shared/src/GLMHelpers.cpp b/libraries/shared/src/GLMHelpers.cpp index b1780b3652..d324e5af10 100644 --- a/libraries/shared/src/GLMHelpers.cpp +++ b/libraries/shared/src/GLMHelpers.cpp @@ -294,7 +294,13 @@ glm::vec3 safeEulerAngles(const glm::quat& q) { // Helper function returns the positive angle (in radians) between two 3D vectors float angleBetween(const glm::vec3& v1, const glm::vec3& v2) { - float cosAngle = glm::dot(v1, v2) / (glm::length(v1) * glm::length(v2)); + float lengthFactor = glm::length(v1) * glm::length(v2); + + if (lengthFactor < EPSILON) { + qWarning() << "DANGER: don't supply zero-length vec3's as arguments"; + } + + float cosAngle = glm::dot(v1, v2) / lengthFactor; // If v1 and v2 are colinear, then floating point rounding errors might cause // cosAngle to be slightly higher than 1 or slightly lower than -1 // which is are values for which acos is not defined and result in a NaN From fde77add79563ed00146c78f10a30eea1966c6ab Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Wed, 1 Aug 2018 11:49:18 -0700 Subject: [PATCH 094/332] Elbow pole vectors fixes --- libraries/animation/src/Rig.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 33f14e121e..64f4708903 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1547,16 +1547,18 @@ bool Rig::calculateElbowPoleVector(int handIndex, int elbowIndex, int armIndex, glm::vec3 backVector = oppositeArmPose.trans() - armPose.trans(); glm::vec3 backCenter = armPose.trans() + 0.5f * backVector; - const float OVER_BACK_HEAD_PERCENTAGE = 0.2f; + glm::vec3 frontVector = glm::normalize(glm::cross(backVector, Vectors::UNIT_Y)); + glm::vec3 topVector = glm::normalize(glm::cross(frontVector, backVector)); + + glm::vec3 centerToHand = handPose.trans() - backCenter; + glm::vec3 headCenter = backCenter + glm::length(backVector) * topVector; - glm::vec3 headCenter = backCenter + glm::vec3(0, OVER_BACK_HEAD_PERCENTAGE * backVector.length(), 0); - glm::vec3 frontVector = glm::normalize(glm::cross(backVector, glm::vec3(0, 1, 0))); // Make sure is pointing forward frontVector = frontVector.z < 0 ? -frontVector : frontVector; - float horizontalModule = glm::dot(armToHand, glm::vec3(0, -1, 0)); - glm::vec3 headForward = headCenter + horizontalModule * frontVector; + float horizontalModule = glm::dot(centerToHand, -topVector); + glm::vec3 headForward = headCenter + glm::max(0.0f, horizontalModule) * frontVector; glm::vec3 armToHead = headForward - armPose.trans(); float armToHandDistance = glm::length(armToHand); @@ -1570,8 +1572,10 @@ bool Rig::calculateElbowPoleVector(int handIndex, int elbowIndex, int armIndex, // How much the hand is reaching for the opposite side float oppositeProjection = glm::dot(armToHandDir, glm::normalize(backVector)); - // Don't use pole vector when the hands are behind - if (glm::dot(frontVector, armToHand) < 0 && oppositeProjection < 0.5f * armTotalDistance) { + bool isCrossed = glm::dot(centerToHand, backVector) > 0; + bool isBehind = glm::dot(frontVector, armToHand) < 0; + // Don't use pole vector when the hands are behind the back and the arms are not crossed + if (isBehind && !isCrossed) { return false; } @@ -1585,7 +1589,7 @@ bool Rig::calculateElbowPoleVector(int handIndex, int elbowIndex, int armIndex, glm::vec3 correctionVector = glm::vec3(0, 0, 0); const float FORWARD_TRIGGER_PERCENTAGE = 0.2f; - const float FORWARD_CORRECTOR_WEIGHT = 3.0f; + const float FORWARD_CORRECTOR_WEIGHT = 2.3f; float elbowForwardTrigger = FORWARD_TRIGGER_PERCENTAGE * armToHandDistance; From 3e9e00f1d6889f2263949ad8bfa4e85715468d36 Mon Sep 17 00:00:00 2001 From: David Back Date: Wed, 1 Aug 2018 12:42:50 -0700 Subject: [PATCH 095/332] use key codes for entity camera keys --- scripts/system/libraries/entityCameraTool.js | 27 +++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/scripts/system/libraries/entityCameraTool.js b/scripts/system/libraries/entityCameraTool.js index fb808cc7ea..3869ff2fe8 100644 --- a/scripts/system/libraries/entityCameraTool.js +++ b/scripts/system/libraries/entityCameraTool.js @@ -39,6 +39,9 @@ var EASING_MULTIPLIER = 8; var INITIAL_ZOOM_DISTANCE = 2; var INITIAL_ZOOM_DISTANCE_FIRST_PERSON = 3; +var KEY_A = 80; +var KEY_D = 80; + var easeOutCubic = function(t) { t--; return t * t * t + 1; @@ -77,17 +80,17 @@ CameraManager = function() { } var keyToActionMapping = { - "a": "orbitLeft", - "d": "orbitRight", - "w": "orbitForward", - "s": "orbitBackward", - "e": "orbitUp", - "c": "orbitDown", - - "LEFT": "orbitLeft", - "RIGHT": "orbitRight", - "UP": "orbitForward", - "DOWN": "orbitBackward", + 65: "orbitLeft", // "a" + 68: "orbitRight", // "d" + 87: "orbitForward", // "w" + 83: "orbitBackward",// "s" + 69: "orbitUp", // "e" + 67: "orbitDown", // "c" + + 16777234: "orbitLeft", //"LEFT" + 16777236: "orbitRight", //"RIGHT" + 16777235: "orbitForward", //"UP" + 16777237: "orbitBackward",//"DOWN" } var CAPTURED_KEYS = []; @@ -96,7 +99,7 @@ CameraManager = function() { } function getActionForKeyEvent(event) { - var action = keyToActionMapping[event.text]; + var action = keyToActionMapping[event.key]; if (action !== undefined) { if (event.isShifted) { if (action === "orbitForward") { From 97e45643b009fbcce63d2b05902508ffec910eb3 Mon Sep 17 00:00:00 2001 From: David Back Date: Wed, 1 Aug 2018 12:44:40 -0700 Subject: [PATCH 096/332] spacing --- scripts/system/libraries/entityCameraTool.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/scripts/system/libraries/entityCameraTool.js b/scripts/system/libraries/entityCameraTool.js index 3869ff2fe8..5f56c6edf6 100644 --- a/scripts/system/libraries/entityCameraTool.js +++ b/scripts/system/libraries/entityCameraTool.js @@ -80,17 +80,17 @@ CameraManager = function() { } var keyToActionMapping = { - 65: "orbitLeft", // "a" - 68: "orbitRight", // "d" - 87: "orbitForward", // "w" - 83: "orbitBackward",// "s" - 69: "orbitUp", // "e" - 67: "orbitDown", // "c" + 65: "orbitLeft", // "a" + 68: "orbitRight", // "d" + 87: "orbitForward", // "w" + 83: "orbitBackward", // "s" + 69: "orbitUp", // "e" + 67: "orbitDown", // "c" - 16777234: "orbitLeft", //"LEFT" - 16777236: "orbitRight", //"RIGHT" - 16777235: "orbitForward", //"UP" - 16777237: "orbitBackward",//"DOWN" + 16777234: "orbitLeft", // "LEFT" + 16777236: "orbitRight", // "RIGHT" + 16777235: "orbitForward", // "UP" + 16777237: "orbitBackward", // "DOWN" } var CAPTURED_KEYS = []; From f946bb73eff2ede58241547e8f6a350cb979d727 Mon Sep 17 00:00:00 2001 From: David Back Date: Wed, 1 Aug 2018 12:46:17 -0700 Subject: [PATCH 097/332] remove constants --- scripts/system/libraries/entityCameraTool.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/system/libraries/entityCameraTool.js b/scripts/system/libraries/entityCameraTool.js index 5f56c6edf6..36c45515e5 100644 --- a/scripts/system/libraries/entityCameraTool.js +++ b/scripts/system/libraries/entityCameraTool.js @@ -39,8 +39,6 @@ var EASING_MULTIPLIER = 8; var INITIAL_ZOOM_DISTANCE = 2; var INITIAL_ZOOM_DISTANCE_FIRST_PERSON = 3; -var KEY_A = 80; -var KEY_D = 80; var easeOutCubic = function(t) { t--; From cdbf75666fe22437145d58d815e128c1b2bf5951 Mon Sep 17 00:00:00 2001 From: David Back Date: Wed, 1 Aug 2018 12:46:49 -0700 Subject: [PATCH 098/332] new line --- scripts/system/libraries/entityCameraTool.js | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/system/libraries/entityCameraTool.js b/scripts/system/libraries/entityCameraTool.js index 36c45515e5..f554f45722 100644 --- a/scripts/system/libraries/entityCameraTool.js +++ b/scripts/system/libraries/entityCameraTool.js @@ -39,7 +39,6 @@ var EASING_MULTIPLIER = 8; var INITIAL_ZOOM_DISTANCE = 2; var INITIAL_ZOOM_DISTANCE_FIRST_PERSON = 3; - var easeOutCubic = function(t) { t--; return t * t * t + 1; From 9c89aa9f90164e6a9af1c40d38675d1bcd292167 Mon Sep 17 00:00:00 2001 From: Clement Date: Wed, 1 Aug 2018 13:29:07 -0700 Subject: [PATCH 099/332] Make sure the stack test interface gets cleaned up --- libraries/script-engine/src/ScriptEngine.cpp | 2 +- libraries/script-engine/src/StackTestScriptingInterface.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 258a0354df..0cecba2209 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -751,7 +751,7 @@ void ScriptEngine::init() { registerGlobalObject("UserActivityLogger", DependencyManager::get().data()); #if DEV_BUILD || PR_BUILD - registerGlobalObject("StackTest", new StackTestScriptingInterface()); + registerGlobalObject("StackTest", new StackTestScriptingInterface(this)); #endif } diff --git a/libraries/script-engine/src/StackTestScriptingInterface.h b/libraries/script-engine/src/StackTestScriptingInterface.h index 81eb95ea73..74e3290ddb 100644 --- a/libraries/script-engine/src/StackTestScriptingInterface.h +++ b/libraries/script-engine/src/StackTestScriptingInterface.h @@ -20,6 +20,8 @@ class StackTestScriptingInterface : public QObject { Q_OBJECT public: + StackTestScriptingInterface(QObject* parent = nullptr) : QObject(parent) {} + Q_INVOKABLE void pass(QString message = QString()); Q_INVOKABLE void fail(QString message = QString()); From 4b317a84d811e4e04c0909ee1e87df018aab92c5 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Fri, 27 Jul 2018 15:25:57 -0700 Subject: [PATCH 100/332] Don't allow Web surfaces created by non-client scripts to access files --- interface/resources/qml/QmlWebWindow.qml | 1 + interface/src/Application.cpp | 7 ++-- libraries/qml/src/qml/OffscreenSurface.cpp | 11 +++-- libraries/qml/src/qml/OffscreenSurface.h | 31 +++++++++----- libraries/ui/src/QmlFragmentClass.cpp | 6 +-- libraries/ui/src/QmlFragmentClass.h | 14 ++++++- libraries/ui/src/QmlWebWindowClass.cpp | 4 +- libraries/ui/src/QmlWebWindowClass.h | 12 +++++- libraries/ui/src/QmlWindowClass.cpp | 30 ++++++++++--- libraries/ui/src/QmlWindowClass.h | 17 +++++++- libraries/ui/src/ui/OffscreenQmlSurface.cpp | 24 +++++------ .../ui/src/ui/TabletScriptingInterface.cpp | 2 + .../ui/src/ui/types/ContextAwareProfile.cpp | 32 ++++++++++++++ .../ui/src/ui/types/ContextAwareProfile.h | 42 +++++++++++++++++++ libraries/ui/src/ui/types/FileTypeProfile.cpp | 21 ++++++++-- libraries/ui/src/ui/types/FileTypeProfile.h | 17 ++++++-- .../ui/types/FileTypeRequestInterceptor.cpp | 25 ----------- .../src/ui/types/FileTypeRequestInterceptor.h | 30 ------------- .../src/ui/types/HFTabletWebEngineProfile.h | 23 ---------- .../HFTabletWebEngineRequestInterceptor.h | 30 ------------- .../ui/src/ui/types/HFWebEngineProfile.cpp | 20 ++++++--- .../ui/src/ui/types/HFWebEngineProfile.h | 17 ++++++-- .../types/HFWebEngineRequestInterceptor.cpp | 25 ----------- .../ui/types/HFWebEngineRequestInterceptor.h | 30 ------------- libraries/ui/src/ui/types/RequestFilters.cpp | 32 +++++++++++--- libraries/ui/src/ui/types/RequestFilters.h | 6 ++- 26 files changed, 275 insertions(+), 234 deletions(-) create mode 100644 libraries/ui/src/ui/types/ContextAwareProfile.cpp create mode 100644 libraries/ui/src/ui/types/ContextAwareProfile.h delete mode 100644 libraries/ui/src/ui/types/FileTypeRequestInterceptor.cpp delete mode 100644 libraries/ui/src/ui/types/FileTypeRequestInterceptor.h delete mode 100644 libraries/ui/src/ui/types/HFTabletWebEngineProfile.h delete mode 100644 libraries/ui/src/ui/types/HFTabletWebEngineRequestInterceptor.h delete mode 100644 libraries/ui/src/ui/types/HFWebEngineRequestInterceptor.cpp delete mode 100644 libraries/ui/src/ui/types/HFWebEngineRequestInterceptor.h diff --git a/interface/resources/qml/QmlWebWindow.qml b/interface/resources/qml/QmlWebWindow.qml index d73a574081..8c4d6145ec 100644 --- a/interface/resources/qml/QmlWebWindow.qml +++ b/interface/resources/qml/QmlWebWindow.qml @@ -62,6 +62,7 @@ Windows.ScrollingWindow { url: "about:blank" anchors.fill: parent focus: true + profile: HFWebEngineProfile; property string userScriptUrl: "" diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 65fbefa381..ecd091ba2b 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -6603,11 +6603,12 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEnginePointe scriptEngine->registerGetterSetter("location", LocationScriptingInterface::locationGetter, LocationScriptingInterface::locationSetter); + bool clientScript = scriptEngine->isClientScript(); + scriptEngine->registerFunction("OverlayWindow", clientScript ? QmlWindowClass::constructor : QmlWindowClass::restricted_constructor); #if !defined(Q_OS_ANDROID) - scriptEngine->registerFunction("OverlayWebWindow", QmlWebWindowClass::constructor); + scriptEngine->registerFunction("OverlayWebWindow", clientScript ? QmlWebWindowClass::constructor : QmlWebWindowClass::restricted_constructor); #endif - scriptEngine->registerFunction("OverlayWindow", QmlWindowClass::constructor); - scriptEngine->registerFunction("QmlFragment", QmlFragmentClass::constructor); + scriptEngine->registerFunction("QmlFragment", clientScript ? QmlFragmentClass::constructor : QmlFragmentClass::restricted_constructor); scriptEngine->registerGlobalObject("Menu", MenuScriptingInterface::getInstance()); scriptEngine->registerGlobalObject("DesktopPreviewProvider", DependencyManager::get().data()); diff --git a/libraries/qml/src/qml/OffscreenSurface.cpp b/libraries/qml/src/qml/OffscreenSurface.cpp index ea6f1ce324..bbffee2407 100644 --- a/libraries/qml/src/qml/OffscreenSurface.cpp +++ b/libraries/qml/src/qml/OffscreenSurface.cpp @@ -40,7 +40,8 @@ static QSize clampSize(const QSize& qsize, uint32_t maxDimension) { return fromGlm(clampSize(toGlm(qsize), maxDimension)); } -const QmlContextObjectCallback OffscreenSurface::DEFAULT_CONTEXT_CALLBACK = [](QQmlContext*, QQuickItem*) {}; +const QmlContextObjectCallback OffscreenSurface::DEFAULT_CONTEXT_OBJECT_CALLBACK = [](QQmlContext*, QQuickItem*) {}; +const QmlContextCallback OffscreenSurface::DEFAULT_CONTEXT_CALLBACK = [](QQmlContext*) {}; void OffscreenSurface::initializeEngine(QQmlEngine* engine) { } @@ -266,8 +267,8 @@ void OffscreenSurface::load(const QUrl& qmlSource, bool createNewContext, const loadInternal(qmlSource, createNewContext, nullptr, callback); } -void OffscreenSurface::loadInNewContext(const QUrl& qmlSource, const QmlContextObjectCallback& callback) { - load(qmlSource, true, callback); +void OffscreenSurface::loadInNewContext(const QUrl& qmlSource, const QmlContextObjectCallback& callback, const QmlContextCallback& contextCallback) { + loadInternal(qmlSource, true, nullptr, callback, contextCallback); } void OffscreenSurface::load(const QUrl& qmlSource, const QmlContextObjectCallback& callback) { @@ -281,7 +282,8 @@ void OffscreenSurface::load(const QString& qmlSourceFile, const QmlContextObject void OffscreenSurface::loadInternal(const QUrl& qmlSource, bool createNewContext, QQuickItem* parent, - const QmlContextObjectCallback& callback) { + const QmlContextObjectCallback& callback, + const QmlContextCallback& contextCallback) { PROFILE_RANGE_EX(app, "OffscreenSurface::loadInternal", 0xffff00ff, 0, { std::make_pair("url", qmlSource.toDisplayString()) }); if (QThread::currentThread() != thread()) { qFatal("Called load on a non-surface thread"); @@ -310,6 +312,7 @@ void OffscreenSurface::loadInternal(const QUrl& qmlSource, } auto targetContext = contextForUrl(finalQmlSource, parent, createNewContext); + contextCallback(targetContext); QQmlComponent* qmlComponent; { PROFILE_RANGE(app, "new QQmlComponent"); diff --git a/libraries/qml/src/qml/OffscreenSurface.h b/libraries/qml/src/qml/OffscreenSurface.h index 555f2ee6a4..b3539e7709 100644 --- a/libraries/qml/src/qml/OffscreenSurface.h +++ b/libraries/qml/src/qml/OffscreenSurface.h @@ -37,13 +37,15 @@ namespace impl { class SharedObject; } +using QmlContextCallback = ::std::function; using QmlContextObjectCallback = ::std::function; class OffscreenSurface : public QObject { Q_OBJECT public: - static const QmlContextObjectCallback DEFAULT_CONTEXT_CALLBACK; + static const QmlContextObjectCallback DEFAULT_CONTEXT_OBJECT_CALLBACK; + static const QmlContextCallback DEFAULT_CONTEXT_CALLBACK; using TextureAndFence = std::pair; using MouseTranslator = std::function; @@ -85,10 +87,15 @@ public: Q_INVOKABLE void load(const QUrl& qmlSource, QQuickItem* parent, const QJSValue& callback); // For use from C++ - Q_INVOKABLE void load(const QUrl& qmlSource, const QmlContextObjectCallback& callback = DEFAULT_CONTEXT_CALLBACK); - Q_INVOKABLE void load(const QUrl& qmlSource, bool createNewContext, const QmlContextObjectCallback& callback = DEFAULT_CONTEXT_CALLBACK); - Q_INVOKABLE void load(const QString& qmlSourceFile, const QmlContextObjectCallback& callback = DEFAULT_CONTEXT_CALLBACK); - Q_INVOKABLE void loadInNewContext(const QUrl& qmlSource, const QmlContextObjectCallback& callback = DEFAULT_CONTEXT_CALLBACK); + Q_INVOKABLE void load(const QUrl& qmlSource, const QmlContextObjectCallback& callback = DEFAULT_CONTEXT_OBJECT_CALLBACK); + Q_INVOKABLE void load(const QUrl& qmlSource, + bool createNewContext, + const QmlContextObjectCallback& callback = DEFAULT_CONTEXT_OBJECT_CALLBACK); + Q_INVOKABLE void load(const QString& qmlSourceFile, + const QmlContextObjectCallback& callback = DEFAULT_CONTEXT_OBJECT_CALLBACK); + Q_INVOKABLE void loadInNewContext(const QUrl& qmlSource, + const QmlContextObjectCallback& callback = DEFAULT_CONTEXT_OBJECT_CALLBACK, + const QmlContextCallback& contextCallback = DEFAULT_CONTEXT_CALLBACK); public slots: virtual void onFocusObjectChanged(QObject* newFocus) {} @@ -103,19 +110,21 @@ protected: virtual void initializeEngine(QQmlEngine* engine); virtual void loadInternal(const QUrl& qmlSource, - bool createNewContext, - QQuickItem* parent, - const QmlContextObjectCallback& callback) final; + bool createNewContext, + QQuickItem* parent, + const QmlContextObjectCallback& callback, + const QmlContextCallback& contextCallback = DEFAULT_CONTEXT_CALLBACK) final; virtual void finishQmlLoad(QQmlComponent* qmlComponent, - QQmlContext* qmlContext, - QQuickItem* parent, - const QmlContextObjectCallback& onQmlLoadedCallback) final; + QQmlContext* qmlContext, + QQuickItem* parent, + const QmlContextObjectCallback& onQmlLoadedCallback) final; virtual void onRootCreated() {} virtual void onItemCreated(QQmlContext* context, QQuickItem* newItem) {} virtual void onRootContextCreated(QQmlContext* qmlContext) {} virtual QQmlContext* contextForUrl(const QUrl& qmlSource, QQuickItem* parent, bool forceNewContext); + private: MouseTranslator _mouseTranslator{ [](const QPointF& p) { return p.toPoint(); } }; friend class hifi::qml::impl::SharedObject; diff --git a/libraries/ui/src/QmlFragmentClass.cpp b/libraries/ui/src/QmlFragmentClass.cpp index c4cac73b2d..13e3527ded 100644 --- a/libraries/ui/src/QmlFragmentClass.cpp +++ b/libraries/ui/src/QmlFragmentClass.cpp @@ -20,10 +20,10 @@ std::mutex QmlFragmentClass::_mutex; std::map QmlFragmentClass::_fragments; -QmlFragmentClass::QmlFragmentClass(QString id) : qml(id) { } +QmlFragmentClass::QmlFragmentClass(bool restricted, QString id) : QmlWindowClass(restricted), qml(id) { } // Method called by Qt scripts to create a new bottom menu bar in Android -QScriptValue QmlFragmentClass::constructor(QScriptContext* context, QScriptEngine* engine) { +QScriptValue QmlFragmentClass::internal_constructor(QScriptContext* context, QScriptEngine* engine, bool restricted) { std::lock_guard guard(_mutex); auto qml = context->argument(0).toVariant().toMap().value("qml"); @@ -41,7 +41,7 @@ QScriptValue QmlFragmentClass::constructor(QScriptContext* context, QScriptEngin auto properties = parseArguments(context); auto offscreenUi = DependencyManager::get(); - QmlFragmentClass* retVal = new QmlFragmentClass(qml.toString()); + QmlFragmentClass* retVal = new QmlFragmentClass(restricted, qml.toString()); Q_ASSERT(retVal); if (QThread::currentThread() != qApp->thread()) { retVal->moveToThread(qApp->thread()); diff --git a/libraries/ui/src/QmlFragmentClass.h b/libraries/ui/src/QmlFragmentClass.h index 8a8d0e1732..ea80b2bd13 100644 --- a/libraries/ui/src/QmlFragmentClass.h +++ b/libraries/ui/src/QmlFragmentClass.h @@ -13,9 +13,19 @@ class QmlFragmentClass : public QmlWindowClass { Q_OBJECT + +private: + static QScriptValue internal_constructor(QScriptContext* context, QScriptEngine* engine, bool restricted); public: - QmlFragmentClass(QString id); - static QScriptValue constructor(QScriptContext* context, QScriptEngine* engine); + static QScriptValue constructor(QScriptContext* context, QScriptEngine* engine) { + return internal_constructor(context, engine, false); + } + + static QScriptValue restricted_constructor(QScriptContext* context, QScriptEngine* engine ){ + return internal_constructor(context, engine, true); + } + + QmlFragmentClass(bool restricted, QString id); /**jsdoc * Creates a new button, adds it to this and returns it. diff --git a/libraries/ui/src/QmlWebWindowClass.cpp b/libraries/ui/src/QmlWebWindowClass.cpp index 44a0af7787..282161497a 100644 --- a/libraries/ui/src/QmlWebWindowClass.cpp +++ b/libraries/ui/src/QmlWebWindowClass.cpp @@ -20,10 +20,10 @@ static const char* const URL_PROPERTY = "source"; static const char* const SCRIPT_PROPERTY = "scriptUrl"; // Method called by Qt scripts to create a new web window in the overlay -QScriptValue QmlWebWindowClass::constructor(QScriptContext* context, QScriptEngine* engine) { +QScriptValue QmlWebWindowClass::internal_constructor(QScriptContext* context, QScriptEngine* engine, bool restricted) { auto properties = parseArguments(context); auto offscreenUi = DependencyManager::get(); - QmlWebWindowClass* retVal = new QmlWebWindowClass(); + QmlWebWindowClass* retVal = new QmlWebWindowClass(restricted); Q_ASSERT(retVal); if (QThread::currentThread() != qApp->thread()) { retVal->moveToThread(qApp->thread()); diff --git a/libraries/ui/src/QmlWebWindowClass.h b/libraries/ui/src/QmlWebWindowClass.h index 8cf77e4286..e3aea22e3d 100644 --- a/libraries/ui/src/QmlWebWindowClass.h +++ b/libraries/ui/src/QmlWebWindowClass.h @@ -57,8 +57,18 @@ class QmlWebWindowClass : public QmlWindowClass { Q_OBJECT Q_PROPERTY(QString url READ getURL CONSTANT) +private: + static QScriptValue internal_constructor(QScriptContext* context, QScriptEngine* engine, bool restricted); public: - static QScriptValue constructor(QScriptContext* context, QScriptEngine* engine); + QmlWebWindowClass(bool restricted) : QmlWindowClass(restricted) {} + + static QScriptValue constructor(QScriptContext* context, QScriptEngine* engine) { + return internal_constructor(context, engine, false); + } + + static QScriptValue restricted_constructor(QScriptContext* context, QScriptEngine* engine ){ + return internal_constructor(context, engine, true); + } public slots: diff --git a/libraries/ui/src/QmlWindowClass.cpp b/libraries/ui/src/QmlWindowClass.cpp index 64fa27c8c6..0182e3adc3 100644 --- a/libraries/ui/src/QmlWindowClass.cpp +++ b/libraries/ui/src/QmlWindowClass.cpp @@ -25,6 +25,8 @@ #include #include "OffscreenUi.h" +#include "ui/types/HFWebEngineProfile.h" +#include "ui/types/FileTypeProfile.h" static const char* const SOURCE_PROPERTY = "source"; static const char* const TITLE_PROPERTY = "title"; @@ -68,10 +70,10 @@ QVariantMap QmlWindowClass::parseArguments(QScriptContext* context) { // Method called by Qt scripts to create a new web window in the overlay -QScriptValue QmlWindowClass::constructor(QScriptContext* context, QScriptEngine* engine) { +QScriptValue QmlWindowClass::internal_constructor(QScriptContext* context, QScriptEngine* engine, bool restricted) { auto properties = parseArguments(context); auto offscreenUi = DependencyManager::get(); - QmlWindowClass* retVal = new QmlWindowClass(); + QmlWindowClass* retVal = new QmlWindowClass(restricted); Q_ASSERT(retVal); if (QThread::currentThread() != qApp->thread()) { retVal->moveToThread(qApp->thread()); @@ -83,7 +85,7 @@ QScriptValue QmlWindowClass::constructor(QScriptContext* context, QScriptEngine* return engine->newQObject(retVal); } -QmlWindowClass::QmlWindowClass() { +QmlWindowClass::QmlWindowClass(bool restricted) : _restricted(restricted) { } @@ -99,8 +101,7 @@ void QmlWindowClass::initQml(QVariantMap properties) { auto offscreenUi = DependencyManager::get(); _source = properties[SOURCE_PROPERTY].toString(); - // Build the event bridge and wrapper on the main thread - offscreenUi->loadInNewContext(qmlSource(), [&](QQmlContext* context, QObject* object) { + auto objectInitLambda = [&](QQmlContext* context, QObject* object) { _qmlWindow = object; context->setContextProperty(EVENT_BRIDGE_PROPERTY, this); context->engine()->setObjectOwnership(this, QQmlEngine::CppOwnership); @@ -128,7 +129,24 @@ void QmlWindowClass::initQml(QVariantMap properties) { if (metaObject->indexOfSignal("moved") >= 0) connect(_qmlWindow, SIGNAL(moved(QVector2D)), this, SLOT(hasMoved(QVector2D)), Qt::QueuedConnection); connect(_qmlWindow, SIGNAL(windowClosed()), this, SLOT(hasClosed()), Qt::QueuedConnection); - }); + }; + + auto contextInitLambda = [&](QQmlContext* context) { +#if !defined(Q_OS_ANDROID) + // If the restricted flag is on, override the FileTypeProfile and HFWebEngineProfile objects in the + // QML surface root context with local ones + qDebug() << "Context initialization lambda"; + if (_restricted) { + qDebug() << "Restricting web content"; + ContextAwareProfile::restrictContext(context); + FileTypeProfile::registerWithContext(context); + HFWebEngineProfile::registerWithContext(context); + } +#endif + }; + + // Build the event bridge and wrapper on the main thread + offscreenUi->loadInNewContext(qmlSource(), objectInitLambda, contextInitLambda); Q_ASSERT(_qmlWindow); Q_ASSERT(dynamic_cast(_qmlWindow.data())); diff --git a/libraries/ui/src/QmlWindowClass.h b/libraries/ui/src/QmlWindowClass.h index 2b01c028ea..18ee1fedd5 100644 --- a/libraries/ui/src/QmlWindowClass.h +++ b/libraries/ui/src/QmlWindowClass.h @@ -38,9 +38,18 @@ class QmlWindowClass : public QObject { Q_PROPERTY(glm::vec2 size READ getSize WRITE setSize NOTIFY sizeChanged) Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged) +private: + static QScriptValue internal_constructor(QScriptContext* context, QScriptEngine* engine, bool restricted); public: - static QScriptValue constructor(QScriptContext* context, QScriptEngine* engine); - QmlWindowClass(); + static QScriptValue constructor(QScriptContext* context, QScriptEngine* engine) { + return internal_constructor(context, engine, false); + } + + static QScriptValue restricted_constructor(QScriptContext* context, QScriptEngine* engine ){ + return internal_constructor(context, engine, true); + } + + QmlWindowClass(bool restricted); ~QmlWindowClass(); /**jsdoc @@ -51,6 +60,8 @@ public: QQuickItem* asQuickItem() const; + + public slots: /**jsdoc @@ -250,10 +261,12 @@ protected: QPointer _qmlWindow; QString _source; + const bool _restricted; private: // QmlWindow content may include WebView requiring EventBridge. void setKeyboardRaised(QObject* object, bool raised, bool numeric = false); + }; #endif diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index 48e778c063..2c947aea20 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -265,19 +265,6 @@ void OffscreenQmlSurface::initializeEngine(QQmlEngine* engine) { if (!javaScriptToInject.isEmpty()) { rootContext->setContextProperty("eventBridgeJavaScriptToInject", QVariant(javaScriptToInject)); } -#if !defined(Q_OS_ANDROID) - rootContext->setContextProperty("FileTypeProfile", new FileTypeProfile(rootContext)); - rootContext->setContextProperty("HFWebEngineProfile", new HFWebEngineProfile(rootContext)); - { - PROFILE_RANGE(startup, "FileTypeProfile"); - rootContext->setContextProperty("FileTypeProfile", new FileTypeProfile(rootContext)); - } - { - PROFILE_RANGE(startup, "HFWebEngineProfile"); - rootContext->setContextProperty("HFWebEngineProfile", new HFWebEngineProfile(rootContext)); - - } -#endif rootContext->setContextProperty("Paths", DependencyManager::get().data()); rootContext->setContextProperty("Tablet", DependencyManager::get().data()); rootContext->setContextProperty("Toolbars", DependencyManager::get().data()); @@ -300,6 +287,17 @@ void OffscreenQmlSurface::onRootContextCreated(QQmlContext* qmlContext) { // FIXME Compatibility mechanism for existing HTML and JS that uses eventBridgeWrapper // Find a way to flag older scripts using this mechanism and wanr that this is deprecated qmlContext->setContextProperty("eventBridgeWrapper", new EventBridgeWrapper(this, qmlContext)); +#if !defined(Q_OS_ANDROID) + { + PROFILE_RANGE(startup, "FileTypeProfile"); + FileTypeProfile::registerWithContext(qmlContext); + } + { + PROFILE_RANGE(startup, "HFWebEngineProfile"); + HFWebEngineProfile::registerWithContext(qmlContext); + + } +#endif } QQmlContext* OffscreenQmlSurface::contextForUrl(const QUrl& qmlSource, QQuickItem* parent, bool forceNewContext) { diff --git a/libraries/ui/src/ui/TabletScriptingInterface.cpp b/libraries/ui/src/ui/TabletScriptingInterface.cpp index 6f00e046af..4e920e430b 100644 --- a/libraries/ui/src/ui/TabletScriptingInterface.cpp +++ b/libraries/ui/src/ui/TabletScriptingInterface.cpp @@ -334,6 +334,8 @@ static const char* VRMENU_SOURCE_URL = "hifi/tablet/TabletMenu.qml"; class TabletRootWindow : public QmlWindowClass { virtual QString qmlSource() const override { return "hifi/tablet/WindowRoot.qml"; } +public: + TabletRootWindow() : QmlWindowClass(false) {} }; TabletProxy::TabletProxy(QObject* parent, const QString& name) : QObject(parent), _name(name) { diff --git a/libraries/ui/src/ui/types/ContextAwareProfile.cpp b/libraries/ui/src/ui/types/ContextAwareProfile.cpp new file mode 100644 index 0000000000..98cc94ec10 --- /dev/null +++ b/libraries/ui/src/ui/types/ContextAwareProfile.cpp @@ -0,0 +1,32 @@ +// +// FileTypeProfile.cpp +// interface/src/networking +// +// Created by Kunal Gosar on 2017-03-10. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "ContextAwareProfile.h" + +#if !defined(Q_OS_ANDROID) + +#include + +static const QString RESTRICTED_FLAG_PROPERTY = "RestrictFileAccess"; + +ContextAwareProfile::ContextAwareProfile(QQmlContext* parent) : + QQuickWebEngineProfile(parent), _context(parent) { } + + +void ContextAwareProfile::restrictContext(QQmlContext* context) { + context->setContextProperty(RESTRICTED_FLAG_PROPERTY, true); +} + +bool ContextAwareProfile::isRestricted(QQmlContext* context) { + return context->contextProperty(RESTRICTED_FLAG_PROPERTY).toBool(); +} + +#endif \ No newline at end of file diff --git a/libraries/ui/src/ui/types/ContextAwareProfile.h b/libraries/ui/src/ui/types/ContextAwareProfile.h new file mode 100644 index 0000000000..8fa5b98878 --- /dev/null +++ b/libraries/ui/src/ui/types/ContextAwareProfile.h @@ -0,0 +1,42 @@ +// +// Created by Bradley Austin Davis on 2018/07/27 +// Copyright 2013-2018 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#pragma once + +#ifndef hifi_ContextAwareProfile_h +#define hifi_ContextAwareProfile_h + +#include + +#if !defined(Q_OS_ANDROID) +#include +#include + +class QQmlContext; + +class ContextAwareProfile : public QQuickWebEngineProfile { +public: + static void restrictContext(QQmlContext* context); + static bool isRestricted(QQmlContext* context); + QQmlContext* getContext() const { return _context; } +protected: + + class RequestInterceptor : public QWebEngineUrlRequestInterceptor { + public: + RequestInterceptor(ContextAwareProfile* parent) : QWebEngineUrlRequestInterceptor(parent), _profile(parent) {} + QQmlContext* getContext() const { return _profile->getContext(); } + protected: + ContextAwareProfile* _profile; + }; + + ContextAwareProfile(QQmlContext* parent); + QQmlContext* _context; +}; +#endif + +#endif // hifi_FileTypeProfile_h diff --git a/libraries/ui/src/ui/types/FileTypeProfile.cpp b/libraries/ui/src/ui/types/FileTypeProfile.cpp index 90a2c6ba18..073460903e 100644 --- a/libraries/ui/src/ui/types/FileTypeProfile.cpp +++ b/libraries/ui/src/ui/types/FileTypeProfile.cpp @@ -11,18 +11,31 @@ #include "FileTypeProfile.h" -#include "FileTypeRequestInterceptor.h" +#include + +#include "RequestFilters.h" #if !defined(Q_OS_ANDROID) static const QString QML_WEB_ENGINE_STORAGE_NAME = "qmlWebEngine"; -FileTypeProfile::FileTypeProfile(QObject* parent) : - QQuickWebEngineProfile(parent) +FileTypeProfile::FileTypeProfile(QQmlContext* parent) : + ContextAwareProfile(parent) { static const QString WEB_ENGINE_USER_AGENT = "Chrome/48.0 (HighFidelityInterface)"; setHttpUserAgent(WEB_ENGINE_USER_AGENT); - auto requestInterceptor = new FileTypeRequestInterceptor(this); + auto requestInterceptor = new RequestInterceptor(this); setRequestInterceptor(requestInterceptor); } + +void FileTypeProfile::RequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo& info) { + RequestFilters::interceptHFWebEngineRequest(info, getContext()); + RequestFilters::interceptFileType(info, getContext()); +} + +void FileTypeProfile::registerWithContext(QQmlContext* context) { + context->setContextProperty("FileTypeProfile", new FileTypeProfile(context)); +} + + #endif \ No newline at end of file diff --git a/libraries/ui/src/ui/types/FileTypeProfile.h b/libraries/ui/src/ui/types/FileTypeProfile.h index c7d07cd822..7ddfdd0aed 100644 --- a/libraries/ui/src/ui/types/FileTypeProfile.h +++ b/libraries/ui/src/ui/types/FileTypeProfile.h @@ -17,12 +17,23 @@ #include #if !defined(Q_OS_ANDROID) -#include +#include "ContextAwareProfile.h" + +class FileTypeProfile : public ContextAwareProfile { + using Parent = ContextAwareProfile; -class FileTypeProfile : public QQuickWebEngineProfile { public: - FileTypeProfile(QObject* parent = Q_NULLPTR); + static void registerWithContext(QQmlContext* parent); + +protected: + FileTypeProfile(QQmlContext* parent); + class RequestInterceptor : public Parent::RequestInterceptor { + public: + RequestInterceptor(ContextAwareProfile* parent) : Parent::RequestInterceptor(parent) {} + void interceptRequest(QWebEngineUrlRequestInfo& info) override; + }; }; + #endif #endif // hifi_FileTypeProfile_h diff --git a/libraries/ui/src/ui/types/FileTypeRequestInterceptor.cpp b/libraries/ui/src/ui/types/FileTypeRequestInterceptor.cpp deleted file mode 100644 index 25866ad395..0000000000 --- a/libraries/ui/src/ui/types/FileTypeRequestInterceptor.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// -// FileTypeRequestInterceptor.cpp -// interface/src/networking -// -// Created by Kunal Gosar on 2017-03-10. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#include "FileTypeRequestInterceptor.h" - -#include - -#include "RequestFilters.h" - -#if !defined(Q_OS_ANDROID) - -void FileTypeRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo& info) { - RequestFilters::interceptHFWebEngineRequest(info); - RequestFilters::interceptFileType(info); -} - -#endif \ No newline at end of file diff --git a/libraries/ui/src/ui/types/FileTypeRequestInterceptor.h b/libraries/ui/src/ui/types/FileTypeRequestInterceptor.h deleted file mode 100644 index b8a01a53fa..0000000000 --- a/libraries/ui/src/ui/types/FileTypeRequestInterceptor.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// FileTypeRequestInterceptor.h -// interface/src/networking -// -// Created by Kunal Gosar on 2017-03-10. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#pragma once - -#ifndef hifi_FileTypeRequestInterceptor_h -#define hifi_FileTypeRequestInterceptor_h - -#include - -#if !defined(Q_OS_ANDROID) -#include - -class FileTypeRequestInterceptor : public QWebEngineUrlRequestInterceptor { -public: - FileTypeRequestInterceptor(QObject* parent) : QWebEngineUrlRequestInterceptor(parent) {}; - - virtual void interceptRequest(QWebEngineUrlRequestInfo& info) override; -}; -#endif - -#endif // hifi_FileTypeRequestInterceptor_h diff --git a/libraries/ui/src/ui/types/HFTabletWebEngineProfile.h b/libraries/ui/src/ui/types/HFTabletWebEngineProfile.h deleted file mode 100644 index 406cb1a19a..0000000000 --- a/libraries/ui/src/ui/types/HFTabletWebEngineProfile.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// HFTabletWebEngineProfile.h -// interface/src/networking -// -// Created by Dante Ruiz on 2017-03-31. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - - -#ifndef hifi_HFTabletWebEngineProfile_h -#define hifi_HFTabletWebEngineProfile_h - -#include - -class HFTabletWebEngineProfile : public QQuickWebEngineProfile { -public: - HFTabletWebEngineProfile(QObject* parent = Q_NULLPTR); -}; - -#endif // hifi_HFTabletWebEngineProfile_h diff --git a/libraries/ui/src/ui/types/HFTabletWebEngineRequestInterceptor.h b/libraries/ui/src/ui/types/HFTabletWebEngineRequestInterceptor.h deleted file mode 100644 index 8be2974782..0000000000 --- a/libraries/ui/src/ui/types/HFTabletWebEngineRequestInterceptor.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// HFTabletWebEngineRequestInterceptor.h -// interface/src/networking -// -// Created by Dante Ruiz on 2017-3-31. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#ifndef hifi_HFTabletWebEngineRequestInterceptor_h -#define hifi_HFTabletWebEngineRequestInterceptor_h -#if !defined(Q_OS_ANDROID) -#include - -#include - -class HFTabletWebEngineRequestInterceptor - : public QWebEngineUrlRequestInterceptor -{ -public: - HFTabletWebEngineRequestInterceptor(QObject* parent) - : QWebEngineUrlRequestInterceptor(parent) - {}; - virtual void interceptRequest(QWebEngineUrlRequestInfo& info) override; -}; -#endif - -#endif // hifi_HFWebEngineRequestInterceptor_h diff --git a/libraries/ui/src/ui/types/HFWebEngineProfile.cpp b/libraries/ui/src/ui/types/HFWebEngineProfile.cpp index 381bdb10bd..ef1d009f09 100644 --- a/libraries/ui/src/ui/types/HFWebEngineProfile.cpp +++ b/libraries/ui/src/ui/types/HFWebEngineProfile.cpp @@ -11,20 +11,28 @@ #include "HFWebEngineProfile.h" -#include "HFWebEngineRequestInterceptor.h" +#include + +#include "RequestFilters.h" #if !defined(Q_OS_ANDROID) static const QString QML_WEB_ENGINE_STORAGE_NAME = "qmlWebEngine"; -HFWebEngineProfile::HFWebEngineProfile(QObject* parent) : - QQuickWebEngineProfile(parent) +HFWebEngineProfile::HFWebEngineProfile(QQmlContext* parent) : Parent(parent) { setStorageName(QML_WEB_ENGINE_STORAGE_NAME); // we use the HFWebEngineRequestInterceptor to make sure that web requests are authenticated for the interface user - auto requestInterceptor = new HFWebEngineRequestInterceptor(this); - setRequestInterceptor(requestInterceptor); + setRequestInterceptor(new RequestInterceptor(this)); } -#endif \ No newline at end of file +void HFWebEngineProfile::RequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo& info) { + RequestFilters::interceptHFWebEngineRequest(info, getContext()); +} + +void HFWebEngineProfile::registerWithContext(QQmlContext* context) { + context->setContextProperty("HFWebEngineProfile", new HFWebEngineProfile(context)); +} + +#endif diff --git a/libraries/ui/src/ui/types/HFWebEngineProfile.h b/libraries/ui/src/ui/types/HFWebEngineProfile.h index 30da489c92..6b84ad6f80 100644 --- a/libraries/ui/src/ui/types/HFWebEngineProfile.h +++ b/libraries/ui/src/ui/types/HFWebEngineProfile.h @@ -14,15 +14,24 @@ #ifndef hifi_HFWebEngineProfile_h #define hifi_HFWebEngineProfile_h -#include +#include "ContextAwareProfile.h" #if !defined(Q_OS_ANDROID) -#include -class HFWebEngineProfile : public QQuickWebEngineProfile { +class HFWebEngineProfile : public ContextAwareProfile { + using Parent = ContextAwareProfile; public: - HFWebEngineProfile(QObject* parent = Q_NULLPTR); + static void registerWithContext(QQmlContext* parent); + +protected: + HFWebEngineProfile(QQmlContext* parent); + class RequestInterceptor : public Parent::RequestInterceptor { + public: + RequestInterceptor(ContextAwareProfile* parent) : Parent::RequestInterceptor(parent) {} + void interceptRequest(QWebEngineUrlRequestInfo& info) override; + }; }; + #endif #endif // hifi_HFWebEngineProfile_h diff --git a/libraries/ui/src/ui/types/HFWebEngineRequestInterceptor.cpp b/libraries/ui/src/ui/types/HFWebEngineRequestInterceptor.cpp deleted file mode 100644 index 5a11c32efa..0000000000 --- a/libraries/ui/src/ui/types/HFWebEngineRequestInterceptor.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// -// HFWebEngineRequestInterceptor.cpp -// interface/src/networking -// -// Created by Stephen Birarda on 2016-10-14. -// Copyright 2016 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#include "HFWebEngineRequestInterceptor.h" - -#include - -#include "AccountManager.h" -#include "RequestFilters.h" - -#if !defined(Q_OS_ANDROID) - -void HFWebEngineRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo& info) { - RequestFilters::interceptHFWebEngineRequest(info); -} - -#endif \ No newline at end of file diff --git a/libraries/ui/src/ui/types/HFWebEngineRequestInterceptor.h b/libraries/ui/src/ui/types/HFWebEngineRequestInterceptor.h deleted file mode 100644 index b5521a106e..0000000000 --- a/libraries/ui/src/ui/types/HFWebEngineRequestInterceptor.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// HFWebEngineRequestInterceptor.h -// interface/src/networking -// -// Created by Stephen Birarda on 2016-10-14. -// Copyright 2016 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#pragma once - -#ifndef hifi_HFWebEngineRequestInterceptor_h -#define hifi_HFWebEngineRequestInterceptor_h - -#include - -#if !defined(Q_OS_ANDROID) -#include - -class HFWebEngineRequestInterceptor : public QWebEngineUrlRequestInterceptor { -public: - HFWebEngineRequestInterceptor(QObject* parent) : QWebEngineUrlRequestInterceptor(parent) {}; - - virtual void interceptRequest(QWebEngineUrlRequestInfo& info) override; -}; -#endif - -#endif // hifi_HFWebEngineRequestInterceptor_h diff --git a/libraries/ui/src/ui/types/RequestFilters.cpp b/libraries/ui/src/ui/types/RequestFilters.cpp index 4cd51c6d98..9d831a1758 100644 --- a/libraries/ui/src/ui/types/RequestFilters.cpp +++ b/libraries/ui/src/ui/types/RequestFilters.cpp @@ -10,12 +10,15 @@ // #include "RequestFilters.h" -#include "NetworkingConstants.h" #include -#include +#include -#include "AccountManager.h" +#include +#include +#include + +#include "ContextAwareProfile.h" #if !defined(Q_OS_ANDROID) @@ -42,9 +45,28 @@ namespace { return filename.endsWith(".json", Qt::CaseInsensitive); } + bool blockLocalFiles(QWebEngineUrlRequestInfo& info) { + auto requestUrl = info.requestUrl(); + if (!requestUrl.isLocalFile()) { + // Not a local file, do not block + return false; + } + + QString targetFilePath = QFileInfo(requestUrl.toLocalFile()).canonicalFilePath(); + + // If we get here, then it's a local file that isn't whitelisted and the + // developer mode environment variable is not enabled. Block access to the file + qWarning() << "Blocking web access to local file path" << targetFilePath; + info.block(true); + return true; + } } -void RequestFilters::interceptHFWebEngineRequest(QWebEngineUrlRequestInfo& info) { +void RequestFilters::interceptHFWebEngineRequest(QWebEngineUrlRequestInfo& info, QQmlContext* context) { + if (ContextAwareProfile::isRestricted(context) && blockLocalFiles(info)) { + return; + } + // check if this is a request to a highfidelity URL bool isAuthable = isAuthableHighFidelityURL(info.requestUrl()); if (isAuthable) { @@ -71,7 +93,7 @@ void RequestFilters::interceptHFWebEngineRequest(QWebEngineUrlRequestInfo& info) info.setHttpHeader(USER_AGENT.toLocal8Bit(), tokenString.toLocal8Bit()); } -void RequestFilters::interceptFileType(QWebEngineUrlRequestInfo& info) { +void RequestFilters::interceptFileType(QWebEngineUrlRequestInfo& info, QQmlContext* context) { QString filename = info.requestUrl().fileName(); if (isScript(filename) || isJSON(filename)) { static const QString CONTENT_HEADER = "Accept"; diff --git a/libraries/ui/src/ui/types/RequestFilters.h b/libraries/ui/src/ui/types/RequestFilters.h index ccab6a6ee3..8fde94a1b4 100644 --- a/libraries/ui/src/ui/types/RequestFilters.h +++ b/libraries/ui/src/ui/types/RequestFilters.h @@ -20,10 +20,12 @@ #include #include +class QQmlContext; + class RequestFilters : public QObject { public: - static void interceptHFWebEngineRequest(QWebEngineUrlRequestInfo& info); - static void interceptFileType(QWebEngineUrlRequestInfo& info); + static void interceptHFWebEngineRequest(QWebEngineUrlRequestInfo& info, QQmlContext* context); + static void interceptFileType(QWebEngineUrlRequestInfo& info, QQmlContext* context); }; #endif From 9957fc9474849bc3c061e2059f827809870febc1 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Wed, 1 Aug 2018 15:13:44 -0700 Subject: [PATCH 101/332] Can create list of highest level sections. --- tools/auto-tester/src/Test.cpp | 6 +- tools/auto-tester/src/TestRailInterface.cpp | 167 ++++++++++++------ tools/auto-tester/src/TestRailInterface.h | 5 +- .../src/ui/TestRailRunSelectorWindow.cpp | 13 +- .../src/ui/TestRailRunSelectorWindow.h | 4 +- .../src/ui/TestRailRunSelectorWindow.ui | 12 +- .../ui/TestRailTestCasesSelectorWindow.cpp | 10 +- .../src/ui/TestRailTestCasesSelectorWindow.h | 2 +- .../src/ui/TestRailTestCasesSelectorWindow.ui | 4 +- 9 files changed, 139 insertions(+), 84 deletions(-) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 93a71d0d28..eba1cf231b 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -838,7 +838,7 @@ void Test::createTestRailTestCases() { } QString outputDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select a folder to store generated files in", - parent, QFileDialog::ShowDirsOnly); + nullptr, QFileDialog::ShowDirsOnly); // If user cancelled then return if (outputDirectory == "") { @@ -855,7 +855,9 @@ void Test::createTestRailTestCases() { } void Test::createTestRailRun() { - _testRailInterface.createTestRailRun(); + QString outputDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select a folder to store generated files in", + nullptr, QFileDialog::ShowDirsOnly); + _testRailInterface.createTestRailRun(outputDirectory); } QStringList Test::createListOfAll_imagesInDirectory(const QString& imageFormat, const QString& pathToImageDirectory) { diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 3161e4109c..9520ee645b 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -227,8 +227,7 @@ bool TestRailInterface::isAValidTestDirectory(const QString& directory) { void TestRailInterface::processDirectoryPython(const QString& directory, QTextStream& stream, const QString& userGitHub, - const QString& branchGitHub -) { + const QString& branchGitHub) { // Loop over all entries in directory QDirIterator it(directory.toStdString().c_str()); while (it.hasNext()) { @@ -255,7 +254,7 @@ void TestRailInterface::processDirectoryPython(const QString& directory, stream << "parent_ids.pop()\n\n"; } - // A suite of TestRail test cases contains trees. +// A suite of TestRail test cases contains trees. // The nodes of the trees are sections // The leaves are the test cases // @@ -264,8 +263,7 @@ void TestRailInterface::processDirectoryPython(const QString& directory, // void TestRailInterface::createAddTestCasesPythonScript(const QString& testDirectory, const QString& userGitHub, - const QString& branchGitHub -) { + const QString& branchGitHub) { QString filename = _outputDirectory + "/addTestCases.py"; if (QFile::exists(filename)) { QFile::remove(filename); @@ -302,19 +300,15 @@ void TestRailInterface::createAddTestCasesPythonScript(const QString& testDirect file.close(); - if (QMessageBox::Yes == QMessageBox(QMessageBox::Information, "Python script has been created", "Do you want to run the script and update TestRail?", QMessageBox::Yes | QMessageBox::No).exec()) { + if (QMessageBox::Yes == QMessageBox(QMessageBox::Information, "Python script has been created", + "Do you want to run the script and update TestRail?", + QMessageBox::Yes | QMessageBox::No) + .exec()) { QProcess* process = new QProcess(); - connect(process, &QProcess::started, this, - [=]() { - _busyWindow.exec(); - } - ); + connect(process, &QProcess::started, this, [=]() { _busyWindow.exec(); }); - connect(process, static_cast(&QProcess::finished), this, - [=](int exitCode, QProcess::ExitStatus exitStatus) { - _busyWindow.hide(); - } - ); + connect(process, static_cast(&QProcess::finished), this, + [=](int exitCode, QProcess::ExitStatus exitStatus) { _busyWindow.hide(); }); QStringList parameters = QStringList() << _outputDirectory + "/addTestCases.py"; process->start(_pythonCommand, parameters); @@ -331,7 +325,7 @@ void TestRailInterface::updateMilestonesComboData(int exitCode, QProcess::ExitSt if (exitStatus != QProcess::NormalExit) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Could not get milestones from TestRail"); - exit(-1); + exit(-1); } // Create map of milestones from the file created by the process @@ -347,7 +341,7 @@ void TestRailInterface::updateMilestonesComboData(int exitCode, QProcess::ExitSt QFile file(filename); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), - "Could not open " + _outputDirectory + "/milestones.txt"); + "Could not open " + _outputDirectory + "/milestones.txt"); exit(-1); } @@ -364,7 +358,7 @@ void TestRailInterface::updateMilestonesComboData(int exitCode, QProcess::ExitSt file.close(); // Update the combo - _testRailTestCasesSelectorWindow.updateMilestoneComboBoxData(_milestoneNames); + _testRailTestCasesSelectorWindow.updateMilestonesComboBoxData(_milestoneNames); _testRailTestCasesSelectorWindow.exec(); @@ -375,6 +369,9 @@ void TestRailInterface::updateMilestonesComboData(int exitCode, QProcess::ExitSt createAddTestCasesPythonScript(_testDirectory, _userGitHub, _branchGitHub); } +void TestRailInterface::updateSectionsComboData(int exitCode, QProcess::ExitStatus exitStatus) { +} + void TestRailInterface::getMilestonesFromTestRail() { QString filename = _outputDirectory + "/getMilestones.py"; if (QFile::exists(filename)) { @@ -408,10 +405,7 @@ void TestRailInterface::getMilestonesFromTestRail() { QProcess* process = new QProcess(); connect(process, static_cast(&QProcess::finished), this, - [=](int exitCode, QProcess::ExitStatus exitStatus) { - updateMilestonesComboData(exitCode, exitStatus); - } - ); + [=](int exitCode, QProcess::ExitStatus exitStatus) { updateMilestonesComboData(exitCode, exitStatus); }); QStringList parameters = QStringList() << _outputDirectory + "/getMilestones.py "; process->start(_pythonCommand, parameters); @@ -421,7 +415,6 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, const QString& outputDirectory, const QString& userGitHub, const QString& branchGitHub) { - _testDirectory = testDirectory; _outputDirectory = outputDirectory; _userGitHub = userGitHub; @@ -435,7 +428,8 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, } _pythonCommand = _pythonPath + "/" + pythonExe; } else { - QMessageBox::critical(0, "PYTHON_PATH not defined", "Please set PYTHON_PATH to directory containing the Python executable"); + QMessageBox::critical(0, "PYTHON_PATH not defined", + "Please set PYTHON_PATH to directory containing the Python executable"); return; } @@ -447,12 +441,11 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, getMilestonesFromTestRail(); } - void TestRailInterface::createTestSuiteXML(const QString& testDirectory, - const QString& outputDirectory, - const QString& userGitHub, - const QString& branchGitHub) { - - _outputDirectory = outputDirectory; +void TestRailInterface::createTestSuiteXML(const QString& testDirectory, + const QString& outputDirectory, + const QString& userGitHub, + const QString& branchGitHub) { + _outputDirectory = outputDirectory; QDomProcessingInstruction instruction = _document.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); _document.appendChild(instruction); @@ -464,7 +457,8 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, QDomElement topLevelSection = _document.createElement("section"); QDomElement suiteName = _document.createElement("name"); - suiteName.appendChild(_document.createTextNode("Test Suite - " + QDateTime::currentDateTime().toString("yyyy-MM-ddTHH:mm"))); + suiteName.appendChild( + _document.createTextNode("Test Suite - " + QDateTime::currentDateTime().toString("yyyy-MM-ddTHH:mm"))); topLevelSection.appendChild(suiteName); // This is the first call to 'process'. This is then called recursively to build the full XML tree @@ -475,10 +469,11 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, root.appendChild(topLevelSection); // Write to file - const QString testRailsFilename{ _outputDirectory + "/TestRailSuite.xml" }; + const QString testRailsFilename{ _outputDirectory + "/TestRailSuite.xml" }; QFile file(testRailsFilename); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { - QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Could not create XML file"); + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not create XML file"); exit(-1); } @@ -499,10 +494,10 @@ QDomElement TestRailInterface::processDirectoryXML(const QString& directory, // Loop over all entries in directory QDirIterator it(directory.toStdString().c_str()); while (it.hasNext()) { - QString nextDirectory = it.next(); + QString nextDirectory = it.next(); - // The object name appears after the last slash (we are assured there is at least 1). - QString objectName = getObject(nextDirectory); + // The object name appears after the last slash (we are assured there is at least 1). + QString objectName = getObject(nextDirectory); // Only process directories if (isAValidTestDirectory(nextDirectory)) { @@ -538,7 +533,7 @@ QDomElement TestRailInterface::processTestXML(const QString& fullDirectory, const QString& branchGitHub, const QDomElement& element) { QDomElement result = element; - + QDomElement caseElement = _document.createElement("case"); caseElement.appendChild(_document.createElement("id")); @@ -551,7 +546,8 @@ QDomElement TestRailInterface::processTestXML(const QString& fullDirectory, while (words[i] != "tests") { ++i; if (i >= words.length() - 1) { - QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Folder \"tests\" not found in " + fullDirectory); + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Folder \"tests\" not found in " + fullDirectory); exit(-1); } } @@ -595,7 +591,8 @@ QDomElement TestRailInterface::processTestXML(const QString& fullDirectory, domain_bot_loadElementId.appendChild(_document.createTextNode("1")); domain_bot_loadElement.appendChild(domain_bot_loadElementId); QDomElement domain_bot_loadElementValue = _document.createElement("value"); - domain_bot_loadElementValue.appendChild(_document.createTextNode(" Without Bots (hifiqa-rc / hifi-qa-stable / hifiqa-master)")); + domain_bot_loadElementValue.appendChild( + _document.createTextNode(" Without Bots (hifiqa-rc / hifi-qa-stable / hifiqa-master)")); domain_bot_loadElement.appendChild(domain_bot_loadElementValue); customElement.appendChild(domain_bot_loadElement); @@ -618,7 +615,8 @@ QDomElement TestRailInterface::processTestXML(const QString& fullDirectory, customElement.appendChild(added_to_releaseElement); QDomElement precondsElement = _document.createElement("preconds"); - precondsElement.appendChild(_document.createTextNode("Tester is in an empty region of a domain in which they have edit rights\n\n*Note: Press 'n' to advance test script")); + precondsElement.appendChild(_document.createTextNode( + "Tester is in an empty region of a domain in which they have edit rights\n\n*Note: Press 'n' to advance test script")); customElement.appendChild(precondsElement); QString testMDName = QString("https://github.com/") + userGitHub + "/hifi_tests/blob/" + branchGitHub + @@ -630,7 +628,8 @@ QDomElement TestRailInterface::processTestXML(const QString& fullDirectory, stepIndexElement.appendChild(_document.createTextNode("1")); stepElement.appendChild(stepIndexElement); QDomElement stepContentElement = _document.createElement("content"); - stepContentElement.appendChild(_document.createTextNode(QString("Execute instructions in [THIS TEST](") + testMDName + ")")); + stepContentElement.appendChild( + _document.createTextNode(QString("Execute instructions in [THIS TEST](") + testMDName + ")")); stepElement.appendChild(stepContentElement); QDomElement stepExpectedElement = _document.createElement("expected"); stepExpectedElement.appendChild(_document.createTextNode("Refer to the expected result in the linked description.")); @@ -645,7 +644,7 @@ QDomElement TestRailInterface::processTestXML(const QString& fullDirectory, caseElement.appendChild(customElement); result.appendChild(caseElement); - + return result; } @@ -678,24 +677,27 @@ void TestRailInterface::processTestPython(const QString& fullDirectory, stream << "section_id = parent_ids.peek()\n"; - QString testMDName = QString("https://github.com/") + userGitHub + "/hifi_tests/blob/" + branchGitHub + - pathToTestMD + "/test.md "; + QString testMDName = + QString("https://github.com/") + userGitHub + "/hifi_tests/blob/" + branchGitHub + pathToTestMD + "/test.md "; QString testContent = QString("Execute instructions in [THIS TEST](") + testMDName + ")"; QString testExpected = QString("Refer to the expected result in the linked description."); int milestone_id = _milestones[_milestoneNames[_testRailTestCasesSelectorWindow.getMilestoneID()]]; - stream << "data = {\n" - << "\t'title': '" << title << "',\n" - << "\t'template_id': 2,\n" - << "\t'milestone_id': " << milestone_id << ",\n" - << "\t'custom_tester_count': 1,\n" - << "\t'custom_domain_bot_load': 1,\n" - << "\t'custom_added_to_release': 4,\n" - << "\t'custom_preconds': " << "'Tester is in an empty region of a domain in which they have edit rights\\n\\n*Note: Press \\'n\\' to advance test script',\n" - << "\t'custom_steps_separated': " << "[\n\t\t{\n\t\t\t'content': '" << testContent << "',\n\t\t\t'expected': '" << testExpected << "'\n\t\t}\n\t]\n" - << "}\n"; + stream << "data = {\n" + << "\t'title': '" << title << "',\n" + << "\t'template_id': 2,\n" + << "\t'milestone_id': " << milestone_id << ",\n" + << "\t'custom_tester_count': 1,\n" + << "\t'custom_domain_bot_load': 1,\n" + << "\t'custom_added_to_release': 4,\n" + << "\t'custom_preconds': " + << "'Tester is in an empty region of a domain in which they have edit rights\\n\\n*Note: Press \\'n\\' to advance " + "test script',\n" + << "\t'custom_steps_separated': " + << "[\n\t\t{\n\t\t\t'content': '" << testContent << "',\n\t\t\t'expected': '" << testExpected << "'\n\t\t}\n\t]\n" + << "}\n"; stream << "case = client.send_post('add_case/' + str(section_id), data)\n"; } @@ -703,16 +705,65 @@ void TestRailInterface::processTestPython(const QString& fullDirectory, void TestRailInterface::requestTestRailRunDataFromUser() { _testRailRunSelectorWindow.reset(); _testRailRunSelectorWindow.exec(); + + if (_testRailRunSelectorWindow.getUserCancelled()) { + return; + } + + _url = _testRailRunSelectorWindow.getURL() + "/"; + _user = _testRailRunSelectorWindow.getUser(); + _password = _testRailRunSelectorWindow.getPassword(); + ////_password = "tutKA76"; + _projectID = QString::number(_testRailRunSelectorWindow.getProjectID()); + _suiteID = QString::number(_testRailRunSelectorWindow.getSuiteID()); } -void TestRailInterface::getTestCasesFromTestRail() { +void TestRailInterface::getTestSectionsFromTestRail() { + QString filename = _outputDirectory + "/getSections.py"; + if (QFile::exists(filename)) { + QFile::remove(filename); + } + QFile file(filename); + + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not create 'getSections.py'"); + exit(-1); + } + + QTextStream stream(&file); + + // Code to access TestRail + stream << "from testrail import *\n"; + stream << "client = APIClient('" << _url.toStdString().c_str() << "')\n"; + stream << "client.user = '" << _user << "'\n"; + stream << "client.password = '" << _password << "'\n\n"; + + // Print the list of sections without parents + stream << "sections = client.send_get('get_sections/" + _projectID + "&suite_id=" + _suiteID + "')\n\n"; + stream << "file = open('" + _outputDirectory + "/sections.txt', 'w')\n\n"; + stream << "for section in sections:\n"; + stream << "\tif section['parent_id'] == None:\n"; + stream << "\t\tfile.write(section['name'] + ' ' + str(section['id']) + '\\n')\n\n"; + stream << "file.close()\n"; + + file.close(); + + QProcess* process = new QProcess(); + connect(process, static_cast(&QProcess::finished), this, + [=](int exitCode, QProcess::ExitStatus exitStatus) { updateSectionsComboData(exitCode, exitStatus); }); + + QStringList parameters = QStringList() << _outputDirectory + "/getSections.py "; + process->start(_pythonCommand, parameters); } -void TestRailInterface::createTestRailRun() { +void TestRailInterface::createTestRailRun(const QString& outputDirectory) { + _outputDirectory = outputDirectory; + requestTestRailRunDataFromUser(); createTestRailDotPyScript(); createStackDotPyScript(); // TestRail will be updated after the process initiated by getTestCasesFromTestRail has completed - getTestCasesFromTestRail(); + getTestSectionsFromTestRail(); } \ No newline at end of file diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 4501be2d87..0c5f11971c 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -54,7 +54,7 @@ public: const QString& branchGitHub); void getMilestonesFromTestRail(); - void getTestCasesFromTestRail(); + void getTestSectionsFromTestRail(); void createTestRailDotPyScript(); void createStackDotPyScript(); @@ -76,8 +76,9 @@ public: QString getObject(const QString& path); void updateMilestonesComboData(int exitCode, QProcess::ExitStatus exitStatus); + void updateSectionsComboData(int exitCode, QProcess::ExitStatus exitStatus); - void createTestRailRun(); + void createTestRailRun(const QString& outputDirectory); private: // HighFidelity Interface project ID in TestRail diff --git a/tools/auto-tester/src/ui/TestRailRunSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.cpp index 4da4b1493f..9d960b16c1 100644 --- a/tools/auto-tester/src/ui/TestRailRunSelectorWindow.cpp +++ b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.cpp @@ -27,7 +27,7 @@ void TestRailRunSelectorWindow::reset() { projectIDLineEdit->setDisabled(false); OKButton->setDisabled(true); - milestoneComboBox->setDisabled(true); + sectionsComboBox->setDisabled(true); } void TestRailRunSelectorWindow::on_acceptButton_clicked() { @@ -37,7 +37,7 @@ void TestRailRunSelectorWindow::on_acceptButton_clicked() { projectIDLineEdit->setDisabled(true); OKButton->setDisabled(false); - milestoneComboBox->setDisabled(false); + sectionsComboBox->setDisabled(false); close(); } @@ -91,10 +91,11 @@ int TestRailRunSelectorWindow::getSuiteID() { return suiteIDLineEdit->text().toInt(); } -void TestRailRunSelectorWindow::updateMilestoneComboBoxData(QStringList data) { - milestoneComboBox->insertItems(0, data); +void TestRailRunSelectorWindow::updateSectionsComboBoxData(QStringList data) { + sectionsComboBox->insertItems(0, data); } -int TestRailRunSelectorWindow::getMilestoneID() { - return milestoneComboBox->currentIndex(); +int TestRailRunSelectorWindow::getSectionID() { + return 0; + sectionsComboBox->currentIndex(); } \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailRunSelectorWindow.h b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.h index ece70124b9..d6428bb476 100644 --- a/tools/auto-tester/src/ui/TestRailRunSelectorWindow.h +++ b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.h @@ -38,8 +38,8 @@ public: bool userCancelled{ false }; - void updateMilestoneComboBoxData(QStringList data); - int getMilestoneID(); + void updateSectionsComboBoxData(QStringList data); + int getSectionID(); private slots: void on_acceptButton_clicked(); diff --git a/tools/auto-tester/src/ui/TestRailRunSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.ui index a15c1b6d0c..ad39b5cc64 100644 --- a/tools/auto-tester/src/ui/TestRailRunSelectorWindow.ui +++ b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.ui @@ -174,15 +174,15 @@ Accept - + false - 270 + 140 350 - 161 + 311 22 @@ -193,7 +193,7 @@ - 140 + 20 350 121 20 @@ -205,7 +205,7 @@ - TestRail Milestone + TestRail Sections @@ -274,7 +274,7 @@ projectIDLineEdit suiteIDLineEdit acceptButton - milestoneComboBox + sectionsComboBox OKButton cancelButton diff --git a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.cpp index afef51a321..27d91df1ac 100644 --- a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.cpp +++ b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.cpp @@ -27,7 +27,7 @@ void TestRailTestCasesSelectorWindow::reset() { projectIDLineEdit->setDisabled(false); OKButton->setDisabled(true); - milestoneComboBox->setDisabled(true); + milestonesComboBox->setDisabled(true); } void TestRailTestCasesSelectorWindow::on_acceptButton_clicked() { @@ -37,7 +37,7 @@ void TestRailTestCasesSelectorWindow::on_acceptButton_clicked() { projectIDLineEdit->setDisabled(true); OKButton->setDisabled(false); - milestoneComboBox->setDisabled(false); + milestonesComboBox->setDisabled(false); close(); } @@ -91,10 +91,10 @@ int TestRailTestCasesSelectorWindow::getSuiteID() { return suiteIDLineEdit->text().toInt(); } -void TestRailTestCasesSelectorWindow::updateMilestoneComboBoxData(QStringList data) { - milestoneComboBox->insertItems(0, data); +void TestRailTestCasesSelectorWindow::updateMilestonesComboBoxData(QStringList data) { + milestonesComboBox->insertItems(0, data); } int TestRailTestCasesSelectorWindow::getMilestoneID() { - return milestoneComboBox->currentIndex(); + return milestonesComboBox->currentIndex(); } \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.h b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.h index fb9d741bab..51e3a562ae 100644 --- a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.h +++ b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.h @@ -38,7 +38,7 @@ public: bool userCancelled{ false }; - void updateMilestoneComboBoxData(QStringList data); + void updateMilestonesComboBoxData(QStringList data); int getMilestoneID(); private slots: diff --git a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui index 9233f7a629..2dc43d08f1 100644 --- a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui +++ b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui @@ -171,7 +171,7 @@ Accept - + false @@ -271,7 +271,7 @@ projectIDLineEdit suiteIDLineEdit acceptButton - milestoneComboBox + milestonesComboBox OKButton cancelButton From 687f5e3df324fb181b800843b6656952f9a4969c Mon Sep 17 00:00:00 2001 From: Gabriel Date: Wed, 1 Aug 2018 19:49:04 -0300 Subject: [PATCH 102/332] Update AudioClient.cpp Trying 40ms --- libraries/audio-client/src/AudioClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index d5549444f8..2a07d2898a 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -1849,7 +1849,7 @@ const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 2.0f; #endif #ifdef Q_OS_ANDROID -const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 2.0f; +const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 0.25f; #elif defined(Q_OS_LINUX) const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 2.0f; #endif From 0b9e520b53c912c5e38d203a5f6d190b164148c7 Mon Sep 17 00:00:00 2001 From: David Back Date: Wed, 1 Aug 2018 16:00:25 -0700 Subject: [PATCH 103/332] fix grab cloning parented entitiy --- libraries/entities/src/EntityItemProperties.cpp | 2 ++ .../controllerModules/nearActionGrabEntity.js | 10 ++++++---- .../controllerModules/nearParentGrabEntity.js | 10 ++++++---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 1f9bf2eb18..27fe55673f 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -3743,6 +3743,8 @@ bool EntityItemProperties::verifyStaticCertificateProperties() { void EntityItemProperties::convertToCloneProperties(const EntityItemID& entityIDToClone) { setName(getName() + "-clone-" + entityIDToClone.toString()); setLocked(false); + setParentID(QUuid()); + setParentJointIndex(-1); setLifetime(getCloneLifetime()); setDynamic(getCloneDynamic()); setClientOnly(getCloneAvatarEntity()); diff --git a/scripts/system/controllers/controllerModules/nearActionGrabEntity.js b/scripts/system/controllers/controllerModules/nearActionGrabEntity.js index f528c6f80f..a8de76aebd 100644 --- a/scripts/system/controllers/controllerModules/nearActionGrabEntity.js +++ b/scripts/system/controllers/controllerModules/nearActionGrabEntity.js @@ -174,10 +174,12 @@ Script.include("/~/system/libraries/cloneEntityUtils.js"); Controller.triggerHapticPulse(HAPTIC_PULSE_STRENGTH, HAPTIC_PULSE_DURATION, this.hand); this.hapticTargetID = props.id; } - // if we've attempted to grab a child, roll up to the root of the tree - var groupRootProps = findGroupParent(controllerData, props); - if (entityIsGrabbable(groupRootProps)) { - return groupRootProps; + if (!entityIsCloneable(props)) { + // if we've attempted to grab a non-cloneable child, roll up to the root of the tree + var groupRootProps = findGroupParent(controllerData, props); + if (entityIsGrabbable(groupRootProps)) { + return groupRootProps; + } } return props; } diff --git a/scripts/system/controllers/controllerModules/nearParentGrabEntity.js b/scripts/system/controllers/controllerModules/nearParentGrabEntity.js index a0a4608fbc..3089545dc1 100644 --- a/scripts/system/controllers/controllerModules/nearParentGrabEntity.js +++ b/scripts/system/controllers/controllerModules/nearParentGrabEntity.js @@ -268,10 +268,12 @@ Script.include("/~/system/libraries/controllers.js"); Controller.triggerHapticPulse(HAPTIC_PULSE_STRENGTH, HAPTIC_PULSE_DURATION, this.hand); this.hapticTargetID = props.id; } - // if we've attempted to grab a child, roll up to the root of the tree - var groupRootProps = findGroupParent(controllerData, props); - if (entityIsGrabbable(groupRootProps)) { - return groupRootProps; + if (!entityIsCloneable(props)) { + // if we've attempted to grab a non-cloneable child, roll up to the root of the tree + var groupRootProps = findGroupParent(controllerData, props); + if (entityIsGrabbable(groupRootProps)) { + return groupRootProps; + } } return props; } From 69660cae813b8ba36709a7247c4208e95cc3f018 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Wed, 1 Aug 2018 17:07:53 -0700 Subject: [PATCH 104/332] Can populate Test Section combo. --- tools/auto-tester/src/TestRailInterface.cpp | 88 ++++++++++++++++++--- tools/auto-tester/src/TestRailInterface.h | 6 ++ 2 files changed, 84 insertions(+), 10 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 9520ee645b..f5fe8cefdb 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -42,6 +42,24 @@ QString TestRailInterface::getObject(const QString& path) { return path.right(path.length() - path.lastIndexOf("/") - 1); } + +bool TestRailInterface::setPythonCommand() { + if (QProcessEnvironment::systemEnvironment().contains("PYTHON_PATH")) { + QString _pythonPath = QProcessEnvironment::systemEnvironment().value("PYTHON_PATH"); + if (!QFile::exists(_pythonPath + "/" + pythonExe)) { + QMessageBox::critical(0, pythonExe, QString("Python executable not found in ") + _pythonPath); + } + _pythonCommand = _pythonPath + "/" + pythonExe; + return true; + } else { + QMessageBox::critical(0, "PYTHON_PATH not defined", + "Please set PYTHON_PATH to directory containing the Python executable"); + return false; + } + + return false; +} + // Creates the testrail.py script // This is the file linked to from http://docs.gurock.com/testrail-api2/bindings-python void TestRailInterface::createTestRailDotPyScript() { @@ -370,6 +388,61 @@ void TestRailInterface::updateMilestonesComboData(int exitCode, QProcess::ExitSt } void TestRailInterface::updateSectionsComboData(int exitCode, QProcess::ExitStatus exitStatus) { + // Quit if user has previously cancelled + if (_testRailRunSelectorWindow.getUserCancelled()) { + return; + } + + // Check if process completed successfully + if (exitStatus != QProcess::NormalExit) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not get sections from TestRail"); + exit(-1); + } + + // Create map of sections from the file created by the process + _sectionNames.clear(); + + QString filename = _outputDirectory + "/sections.txt"; + if (!QFile::exists(filename)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not find sections.txt in " + _outputDirectory); + exit(-1); + } + + QFile file(filename); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not open " + _outputDirectory + "/sections.txt"); + exit(-1); + } + + QTextStream in(&file); + QString line = in.readLine(); + while (!line.isNull()) { + // The section name is all the words except for the last + // The id is the last word + QString section = line.left(line.lastIndexOf(" ")); + QString id = line.right(line.length() - line.lastIndexOf(" ") - 1); + + _sections[section] = id.toInt(); + _sectionNames << section; + + line = in.readLine(); + } + + file.close(); + + // Update the combo + _testRailRunSelectorWindow.updateSectionsComboBoxData(_sectionNames); + + _testRailRunSelectorWindow.exec(); + + if (_testRailRunSelectorWindow.getUserCancelled()) { + return; + } + + ////createAddTestCasesPythonScript(_testDirectory, _userGitHub, _branchGitHub); } void TestRailInterface::getMilestonesFromTestRail() { @@ -420,16 +493,7 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, _userGitHub = userGitHub; _branchGitHub = branchGitHub; - // First check that Python is available - if (QProcessEnvironment::systemEnvironment().contains("PYTHON_PATH")) { - QString _pythonPath = QProcessEnvironment::systemEnvironment().value("PYTHON_PATH"); - if (!QFile::exists(_pythonPath + "/" + pythonExe)) { - QMessageBox::critical(0, pythonExe, QString("Python executable not found in ") + _pythonPath); - } - _pythonCommand = _pythonPath + "/" + pythonExe; - } else { - QMessageBox::critical(0, "PYTHON_PATH not defined", - "Please set PYTHON_PATH to directory containing the Python executable"); + if (!setPythonCommand()) { return; } @@ -760,6 +824,10 @@ void TestRailInterface::getTestSectionsFromTestRail() { void TestRailInterface::createTestRailRun(const QString& outputDirectory) { _outputDirectory = outputDirectory; + if (!setPythonCommand()) { + return; + } + requestTestRailRunDataFromUser(); createTestRailDotPyScript(); createStackDotPyScript(); diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 0c5f11971c..4c2bc7b937 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -80,6 +80,8 @@ public: void createTestRailRun(const QString& outputDirectory); + bool setPythonCommand(); + private: // HighFidelity Interface project ID in TestRail const int INTERFACE_PROJECT_ID{ 24 }; @@ -106,8 +108,12 @@ private: const QString pythonExe{ "python.exe" }; QString _pythonCommand; + std::map _milestones; QStringList _milestoneNames; + + std::map _sections; + QStringList _sectionNames; }; #endif \ No newline at end of file From 1ba28de5b62ae1673a6db332ac39d878aef08fb4 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Wed, 1 Aug 2018 17:52:27 -0700 Subject: [PATCH 105/332] try to fix nodelist not getting destroyed --- assignment-client/src/Agent.cpp | 2 +- domain-server/src/DomainGatekeeper.cpp | 6 +- domain-server/src/DomainServer.cpp | 12 ++-- interface/src/Application.cpp | 60 ++++++++--------- interface/src/AvatarBookmarks.cpp | 2 +- interface/src/Menu.cpp | 24 ++++--- interface/src/avatar/AvatarManager.cpp | 6 +- interface/src/commerce/Wallet.cpp | 2 +- interface/src/ui/PreferencesDialog.cpp | 65 +++++++++---------- interface/src/ui/Stats.cpp | 2 +- libraries/avatars/src/AvatarData.cpp | 2 +- .../entities/src/EntityScriptingInterface.cpp | 2 +- libraries/entities/src/EntityTree.cpp | 2 +- 13 files changed, 98 insertions(+), 89 deletions(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 15c6471b3d..f2747144b3 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -517,7 +517,7 @@ void Agent::setIsListeningToAudioStream(bool isListeningToAudioStream) { auto nodeList = DependencyManager::get(); nodeList->eachMatchingNode( - [&](const SharedNodePointer& node)->bool { + [](const SharedNodePointer& node)->bool { return (node->getType() == NodeType::AudioMixer) && node->getActiveSocket(); }, [&](const SharedNodePointer& node) { diff --git a/domain-server/src/DomainGatekeeper.cpp b/domain-server/src/DomainGatekeeper.cpp index 59cc8d10f6..39ec5463dc 100644 --- a/domain-server/src/DomainGatekeeper.cpp +++ b/domain-server/src/DomainGatekeeper.cpp @@ -264,7 +264,7 @@ void DomainGatekeeper::updateNodePermissions() { QList nodesToKill; auto limitedNodeList = DependencyManager::get(); - limitedNodeList->eachNode([this, limitedNodeList, &nodesToKill](const SharedNodePointer& node){ + limitedNodeList->eachNode([this, &limitedNodeList, &nodesToKill](const SharedNodePointer& node){ // the id and the username in NodePermissions will often be the same, but id is set before // authentication and verifiedUsername is only set once they user's key has been confirmed. QString verifiedUsername = node->getPermissions().getVerifiedUserName(); @@ -458,7 +458,7 @@ SharedNodePointer DomainGatekeeper::processAgentConnectRequest(const NodeConnect // in case this is a node that's failing to connect // double check we don't have the same node whose sockets match exactly already in the list - limitedNodeList->eachNodeBreakable([&](const SharedNodePointer& node){ + limitedNodeList->eachNodeBreakable([nodeConnection, username, &existingNodeID](const SharedNodePointer& node){ if (node->getPublicSocket() == nodeConnection.publicSockAddr && node->getLocalSocket() == nodeConnection.localSockAddr) { // we have a node that already has these exact sockets - this can occur if a node @@ -1009,7 +1009,7 @@ void DomainGatekeeper::refreshGroupsCache() { getDomainOwnerFriendsList(); auto nodeList = DependencyManager::get(); - nodeList->eachNode([&](const SharedNodePointer& node) { + nodeList->eachNode([this](const SharedNodePointer& node) { if (!node->getPermissions().isAssignment) { // this node is an agent const QString& verifiedUserName = node->getPermissions().getVerifiedUserName(); diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 86a9a58058..05555314f3 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -1046,7 +1046,7 @@ bool DomainServer::isInInterestSet(const SharedNodePointer& nodeA, const SharedN unsigned int DomainServer::countConnectedUsers() { unsigned int result = 0; auto nodeList = DependencyManager::get(); - nodeList->eachNode([&](const SharedNodePointer& node){ + nodeList->eachNode([&result](const SharedNodePointer& node){ // only count unassigned agents (i.e., users) if (node->getType() == NodeType::Agent) { auto nodeData = static_cast(node->getLinkedData()); @@ -1149,7 +1149,7 @@ void DomainServer::sendDomainListToNode(const SharedNodePointer& node, const Hif // DTLSServerSession* dtlsSession = _isUsingDTLS ? _dtlsSessions[senderSockAddr] : NULL; if (nodeData->isAuthenticated()) { // if this authenticated node has any interest types, send back those nodes as well - limitedNodeList->eachNode([&](const SharedNodePointer& otherNode) { + limitedNodeList->eachNode([this, node, &domainListPackets, &domainListStream](const SharedNodePointer& otherNode) { if (otherNode->getUUID() != node->getUUID() && isInInterestSet(node, otherNode)) { // since we're about to add a node to the packet we start a segment domainListPackets->startSegment(); @@ -1209,7 +1209,7 @@ void DomainServer::broadcastNewNode(const SharedNodePointer& addedNode) { int connectionSecretIndex = addNodePacket->pos(); limitedNodeList->eachMatchingNode( - [&](const SharedNodePointer& node)->bool { + [this, addedNode](const SharedNodePointer& node)->bool { if (node->getLinkedData() && node->getActiveSocket() && node != addedNode) { // is the added Node in this node's interest list? return isInInterestSet(node, addedNode); @@ -1217,7 +1217,7 @@ void DomainServer::broadcastNewNode(const SharedNodePointer& addedNode) { return false; } }, - [&](const SharedNodePointer& node) { + [this, &addNodePacket, connectionSecretIndex, addedNode, &limitedNodeList](const SharedNodePointer& node) { addNodePacket->seek(connectionSecretIndex); QByteArray rfcConnectionSecret = connectionSecretForNodes(node, addedNode).toRfc4122(); @@ -2832,7 +2832,7 @@ void DomainServer::updateReplicationNodes(ReplicationServerDirection direction) auto serversSettings = replicationSettings.value(serversKey).toList(); std::vector knownReplicationNodes; - nodeList->eachNode([&](const SharedNodePointer& otherNode) { + nodeList->eachNode([direction, &knownReplicationNodes](const SharedNodePointer& otherNode) { if ((direction == Upstream && NodeType::isUpstream(otherNode->getType())) || (direction == Downstream && NodeType::isDownstream(otherNode->getType()))) { knownReplicationNodes.push_back(otherNode->getPublicSocket()); @@ -2870,7 +2870,7 @@ void DomainServer::updateReplicationNodes(ReplicationServerDirection direction) // collect them in a vector to separately remove them with handleKillNode (since eachNode has a read lock and // we cannot recursively take the write lock required by handleKillNode) std::vector nodesToKill; - nodeList->eachNode([&](const SharedNodePointer& otherNode) { + nodeList->eachNode([this, direction, replicationNodesInSettings, replicationDirection, &nodesToKill](const SharedNodePointer& otherNode) { if ((direction == Upstream && NodeType::isUpstream(otherNode->getType())) || (direction == Downstream && NodeType::isDownstream(otherNode->getType()))) { bool nodeInSettings = find(replicationNodesInSettings.cbegin(), replicationNodesInSettings.cend(), diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 65653868da..ca2d9a919e 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1138,7 +1138,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // setup a timer for domain-server check ins QTimer* domainCheckInTimer = new QTimer(this); - connect(domainCheckInTimer, &QTimer::timeout, [this, nodeList] { + connect(domainCheckInTimer, &QTimer::timeout, [this, &nodeList] { if (!isServerlessMode()) { nodeList->sendDomainServerCheckIn(); } @@ -1164,7 +1164,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo return myAvatar ? myAvatar->getOrientationForAudio() : Quaternions::IDENTITY; }); - recording::Frame::registerFrameHandler(AudioConstants::getAudioFrameName(), [=](recording::Frame::ConstPointer frame) { + recording::Frame::registerFrameHandler(AudioConstants::getAudioFrameName(), [&audioIO](recording::Frame::ConstPointer frame) { audioIO->handleRecordedAudioInput(frame->data); }); @@ -1835,13 +1835,13 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo } }); - connect(entityScriptingInterface.data(), &EntityScriptingInterface::deletingEntity, [=](const EntityItemID& entityItemID) { + connect(entityScriptingInterface.data(), &EntityScriptingInterface::deletingEntity, [this](const EntityItemID& entityItemID) { if (entityItemID == _keyboardFocusedEntity.get()) { setKeyboardFocusEntity(UNKNOWN_ENTITY_ID); } }); - connect(getEntities()->getTree().get(), &EntityTree::deletingEntity, [=](const EntityItemID& entityItemID) { + connect(getEntities()->getTree().get(), &EntityTree::deletingEntity, [](const EntityItemID& entityItemID) { auto avatarManager = DependencyManager::get(); auto myAvatar = avatarManager ? avatarManager->getMyAvatar() : nullptr; if (myAvatar) { @@ -1849,7 +1849,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo } }); - EntityTree::setAddMaterialToEntityOperator([&](const QUuid& entityID, graphics::MaterialLayer material, const std::string& parentMaterialName) { + EntityTree::setAddMaterialToEntityOperator([this](const QUuid& entityID, graphics::MaterialLayer material, const std::string& parentMaterialName) { // try to find the renderable auto renderable = getEntities()->renderableForEntityId(entityID); if (renderable) { @@ -1864,7 +1864,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo } return false; }); - EntityTree::setRemoveMaterialFromEntityOperator([&](const QUuid& entityID, graphics::MaterialPointer material, const std::string& parentMaterialName) { + EntityTree::setRemoveMaterialFromEntityOperator([this](const QUuid& entityID, graphics::MaterialPointer material, const std::string& parentMaterialName) { // try to find the renderable auto renderable = getEntities()->renderableForEntityId(entityID); if (renderable) { @@ -1899,7 +1899,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo return false; }); - EntityTree::setAddMaterialToOverlayOperator([&](const QUuid& overlayID, graphics::MaterialLayer material, const std::string& parentMaterialName) { + EntityTree::setAddMaterialToOverlayOperator([this](const QUuid& overlayID, graphics::MaterialLayer material, const std::string& parentMaterialName) { auto overlay = _overlays.getOverlay(overlayID); if (overlay) { overlay->addMaterial(material, parentMaterialName); @@ -1907,7 +1907,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo } return false; }); - EntityTree::setRemoveMaterialFromOverlayOperator([&](const QUuid& overlayID, graphics::MaterialPointer material, const std::string& parentMaterialName) { + EntityTree::setRemoveMaterialFromOverlayOperator([this](const QUuid& overlayID, graphics::MaterialPointer material, const std::string& parentMaterialName) { auto overlay = _overlays.getOverlay(overlayID); if (overlay) { overlay->removeMaterial(material, parentMaterialName); @@ -1918,13 +1918,13 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // Keyboard focus handling for Web overlays. auto overlays = &(qApp->getOverlays()); - connect(overlays, &Overlays::overlayDeleted, [=](const OverlayID& overlayID) { + connect(overlays, &Overlays::overlayDeleted, [this](const OverlayID& overlayID) { if (overlayID == _keyboardFocusedOverlay.get()) { setKeyboardFocusOverlay(UNKNOWN_OVERLAY_ID); } }); - connect(this, &Application::aboutToQuit, [=]() { + connect(this, &Application::aboutToQuit, [this]() { setKeyboardFocusOverlay(UNKNOWN_OVERLAY_ID); setKeyboardFocusEntity(UNKNOWN_ENTITY_ID); }); @@ -2201,14 +2201,14 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // This is done so we don't get a "connection time-out" message when we haven't passed in a URL. if (arguments().contains("--url")) { auto reply = SandboxUtils::getStatus(); - connect(reply, &QNetworkReply::finished, this, [=] { + connect(reply, &QNetworkReply::finished, this, [this, reply] { handleSandboxStatus(reply); }); } } else { PROFILE_RANGE(render, "GetSandboxStatus"); auto reply = SandboxUtils::getStatus(); - connect(reply, &QNetworkReply::finished, this, [=] { + connect(reply, &QNetworkReply::finished, this, [this, reply] { handleSandboxStatus(reply); }); } @@ -2235,8 +2235,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo connect(&_myCamera, &Camera::modeUpdated, this, &Application::cameraModeChanged); - DependencyManager::get()->setShouldPickHUDOperator([&]() { return DependencyManager::get()->isHMDMode(); }); - DependencyManager::get()->setCalculatePos2DFromHUDOperator([&](const glm::vec3& intersection) { + DependencyManager::get()->setShouldPickHUDOperator([]() { return DependencyManager::get()->isHMDMode(); }); + DependencyManager::get()->setCalculatePos2DFromHUDOperator([this](const glm::vec3& intersection) { const glm::vec2 MARGIN(25.0f); glm::vec2 maxPos = _controllerScriptingInterface->getViewportDimensions() - MARGIN; glm::vec2 pos2D = DependencyManager::get()->overlayFromWorldPoint(intersection); @@ -2246,7 +2246,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // Setup the mouse ray pick and related operators DependencyManager::get()->setMouseRayPickID(DependencyManager::get()->addPick(PickQuery::Ray, std::make_shared( PickFilter(PickScriptingInterface::PICK_ENTITIES() | PickScriptingInterface::PICK_INCLUDE_NONCOLLIDABLE()), 0.0f, true))); - DependencyManager::get()->setMouseRayPickResultOperator([&](unsigned int rayPickID) { + DependencyManager::get()->setMouseRayPickResultOperator([](unsigned int rayPickID) { RayToEntityIntersectionResult entityResult; entityResult.intersects = false; auto pickResult = DependencyManager::get()->getPrevPickResultTyped(rayPickID); @@ -2262,7 +2262,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo } return entityResult; }); - DependencyManager::get()->setSetPrecisionPickingOperator([&](unsigned int rayPickID, bool value) { + DependencyManager::get()->setSetPrecisionPickingOperator([](unsigned int rayPickID, bool value) { DependencyManager::get()->setPrecisionPicking(rayPickID, value); }); @@ -2461,32 +2461,35 @@ void Application::cleanupBeforeQuit() { _keyboardFocusHighlight = nullptr; } - auto nodeList = DependencyManager::get(); + { + auto nodeList = DependencyManager::get(); - // send the domain a disconnect packet, force stoppage of domain-server check-ins - nodeList->getDomainHandler().disconnect(); - nodeList->setIsShuttingDown(true); + // send the domain a disconnect packet, force stoppage of domain-server check-ins + nodeList->getDomainHandler().disconnect(); + nodeList->setIsShuttingDown(true); - // tell the packet receiver we're shutting down, so it can drop packets - nodeList->getPacketReceiver().setShouldDropPackets(true); + // tell the packet receiver we're shutting down, so it can drop packets + nodeList->getPacketReceiver().setShouldDropPackets(true); + } getEntities()->shutdown(); // tell the entities system we're shutting down, so it will stop running scripts // Clear any queued processing (I/O, FBX/OBJ/Texture parsing) QThreadPool::globalInstance()->clear(); + DependencyManager::destroy(); + + // FIXME: Something is still holding on to the ScriptEnginePointers contained in ScriptEngines, and they hold backpointers to ScriptEngines, + // so this doesn't shut down properly + DependencyManager::get()->shutdownScripting(); // stop all currently running global scripts // These classes hold ScriptEnginePointers, so they must be destroyed before ScriptEngines + // Must be done after shutdownScripting in case any scripts try to access these things { - DependencyManager::destroy(); DependencyManager::destroy(); EntityTreePointer tree = getEntities()->getTree(); tree->setSimulation(nullptr); DependencyManager::destroy(); } - - // FIXME: Something is still holding on to the ScriptEnginePointers contained in ScriptEngines, and they hold backpointers to ScriptEngines, - // so this doesn't shut down properly - DependencyManager::get()->shutdownScripting(); // stop all currently running global scripts DependencyManager::destroy(); _displayPlugin.reset(); @@ -4748,7 +4751,7 @@ bool Application::exportEntities(const QString& filename, exportTree->createRootElement(); glm::vec3 root(TREE_SCALE, TREE_SCALE, TREE_SCALE); bool success = true; - entityTree->withReadLock([&] { + entityTree->withReadLock([entityIDs, entityTree, givenOffset, myAvatarID, &root, &entities, &success, &exportTree] { for (auto entityID : entityIDs) { // Gather entities and properties. auto entityItem = entityTree->findEntityByEntityItemID(entityID); if (!entityItem) { @@ -6345,7 +6348,6 @@ void Application::domainURLChanged(QUrl domainURL) { void Application::resettingDomain() { _notifiedPacketVersionMismatchThisDomain = false; - auto nodeList = DependencyManager::get(); clearDomainOctreeDetails(); } diff --git a/interface/src/AvatarBookmarks.cpp b/interface/src/AvatarBookmarks.cpp index 3e0e643bd8..61babb2c18 100644 --- a/interface/src/AvatarBookmarks.cpp +++ b/interface/src/AvatarBookmarks.cpp @@ -64,7 +64,7 @@ void addAvatarEntities(const QVariantList& avatarEntities) { EntityItemID id = EntityItemID(QUuid::createUuid()); bool success = true; - entityTree->withWriteLock([&] { + entityTree->withWriteLock([&entityTree, id, &entityProperties, &success] { EntityItemPointer entity = entityTree->addEntity(id, entityProperties); if (entity) { if (entityProperties.queryAACubeRelatedPropertyChanged()) { diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 84b7855714..2c364154f7 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -147,9 +147,11 @@ Menu::Menu() { auto assetServerAction = addActionToQMenuAndActionHash(editMenu, MenuOption::AssetServer, Qt::CTRL | Qt::SHIFT | Qt::Key_A, qApp, SLOT(showAssetServerWidget())); - auto nodeList = DependencyManager::get(); - QObject::connect(nodeList.data(), &NodeList::canWriteAssetsChanged, assetServerAction, &QAction::setEnabled); - assetServerAction->setEnabled(nodeList->getThisNodeCanWriteAssets()); + { + auto nodeList = DependencyManager::get(); + QObject::connect(nodeList.data(), &NodeList::canWriteAssetsChanged, assetServerAction, &QAction::setEnabled); + assetServerAction->setEnabled(nodeList->getThisNodeCanWriteAssets()); + } // Edit > Package Model as .fst... addActionToQMenuAndActionHash(editMenu, MenuOption::PackageModel, 0, @@ -620,8 +622,11 @@ Menu::Menu() { addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::SendWrongProtocolVersion, 0, false, qApp, SLOT(sendWrongProtocolVersionsSignature(bool))); - addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::SendWrongDSConnectVersion, 0, false, - nodeList.data(), SLOT(toggleSendNewerDSConnectVersion(bool))); + { + auto nodeList = DependencyManager::get(); + addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::SendWrongDSConnectVersion, 0, false, + nodeList.data(), SLOT(toggleSendNewerDSConnectVersion(bool))); + } #endif @@ -763,11 +768,14 @@ Menu::Menu() { qApp, SLOT(toggleLogDialog())); auto essLogAction = addActionToQMenuAndActionHash(developerMenu, MenuOption::EntityScriptServerLog, 0, qApp, SLOT(toggleEntityScriptServerLogDialog())); - QObject::connect(nodeList.data(), &NodeList::canRezChanged, essLogAction, [essLogAction] { + { auto nodeList = DependencyManager::get(); + QObject::connect(nodeList.data(), &NodeList::canRezChanged, essLogAction, [essLogAction] { + auto nodeList = DependencyManager::get(); + essLogAction->setEnabled(nodeList->getThisNodeCanRez()); + }); essLogAction->setEnabled(nodeList->getThisNodeCanRez()); - }); - essLogAction->setEnabled(nodeList->getThisNodeCanRez()); + } addActionToQMenuAndActionHash(developerMenu, "Script Log (HMD friendly)...", Qt::NoButton, qApp, SLOT(showScriptLogs())); diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index fab512f787..eb96554cb2 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -79,7 +79,7 @@ AvatarManager::AvatarManager(QObject* parent) : // when we hear that the user has ignored an avatar by session UUID // immediately remove that avatar instead of waiting for the absence of packets from avatar mixer - connect(nodeList.data(), &NodeList::ignoredNode, this, [=](const QUuid& nodeID, bool enabled) { + connect(nodeList.data(), &NodeList::ignoredNode, this, [this](const QUuid& nodeID, bool enabled) { if (enabled) { removeAvatar(nodeID, KillAvatarReason::AvatarIgnored); } @@ -334,10 +334,10 @@ void AvatarManager::postUpdate(float deltaTime, const render::ScenePointer& scen void AvatarManager::sendIdentityRequest(const QUuid& avatarID) const { auto nodeList = DependencyManager::get(); nodeList->eachMatchingNode( - [&](const SharedNodePointer& node)->bool { + [](const SharedNodePointer& node)->bool { return node->getType() == NodeType::AvatarMixer && node->getActiveSocket(); }, - [&](const SharedNodePointer& node) { + [this, avatarID, &nodeList](const SharedNodePointer& node) { auto packet = NLPacket::create(PacketType::AvatarIdentityRequest, NUM_BYTES_RFC4122_UUID, true); packet->write(avatarID.toRfc4122()); nodeList->sendPacket(std::move(packet), *node); diff --git a/interface/src/commerce/Wallet.cpp b/interface/src/commerce/Wallet.cpp index 991f1ebf3f..ef6b4654f5 100644 --- a/interface/src/commerce/Wallet.cpp +++ b/interface/src/commerce/Wallet.cpp @@ -328,7 +328,7 @@ Wallet::Wallet() { packetReceiver.registerListener(PacketType::ChallengeOwnership, this, "handleChallengeOwnershipPacket"); packetReceiver.registerListener(PacketType::ChallengeOwnershipRequest, this, "handleChallengeOwnershipPacket"); - connect(ledger.data(), &Ledger::accountResult, this, [&](QJsonObject result) { + connect(ledger.data(), &Ledger::accountResult, this, [](QJsonObject result) { auto wallet = DependencyManager::get(); auto walletScriptingInterface = DependencyManager::get(); uint status; diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index 50a4d17cae..37f94f5b2a 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -27,28 +27,27 @@ void setupPreferences() { auto preferences = DependencyManager::get(); - auto nodeList = DependencyManager::get(); auto myAvatar = DependencyManager::get()->getMyAvatar(); static const QString AVATAR_BASICS { "Avatar Basics" }; { - auto getter = [=]()->QString { return myAvatar->getDisplayName(); }; - auto setter = [=](const QString& value) { myAvatar->setDisplayName(value); }; + auto getter = [myAvatar]()->QString { return myAvatar->getDisplayName(); }; + auto setter = [myAvatar](const QString& value) { myAvatar->setDisplayName(value); }; auto preference = new EditPreference(AVATAR_BASICS, "Avatar display name (optional)", getter, setter); preference->setPlaceholderText("Not showing a name"); preferences->addPreference(preference); } { - auto getter = [=]()->QString { return myAvatar->getCollisionSoundURL(); }; - auto setter = [=](const QString& value) { myAvatar->setCollisionSoundURL(value); }; + auto getter = [myAvatar]()->QString { return myAvatar->getCollisionSoundURL(); }; + auto setter = [myAvatar](const QString& value) { myAvatar->setCollisionSoundURL(value); }; auto preference = new EditPreference(AVATAR_BASICS, "Avatar collision sound URL (optional)", getter, setter); preference->setPlaceholderText("Enter the URL of a sound to play when you bump into something"); preferences->addPreference(preference); } { - auto getter = [=]()->QString { return myAvatar->getFullAvatarURLFromPreferences().toString(); }; - auto setter = [=](const QString& value) { myAvatar->useFullAvatarURL(value, ""); qApp->clearAvatarOverrideUrl(); }; + auto getter = [myAvatar]()->QString { return myAvatar->getFullAvatarURLFromPreferences().toString(); }; + auto setter = [myAvatar](const QString& value) { myAvatar->useFullAvatarURL(value, ""); qApp->clearAvatarOverrideUrl(); }; auto preference = new AvatarPreference(AVATAR_BASICS, "Appearance", getter, setter); preferences->addPreference(preference); } @@ -163,8 +162,8 @@ void setupPreferences() { static const QString VIEW_CATEGORY{ "View" }; { - auto getter = [=]()->float { return myAvatar->getRealWorldFieldOfView(); }; - auto setter = [=](float value) { myAvatar->setRealWorldFieldOfView(value); }; + auto getter = [myAvatar]()->float { return myAvatar->getRealWorldFieldOfView(); }; + auto setter = [myAvatar](float value) { myAvatar->setRealWorldFieldOfView(value); }; auto preference = new SpinnerPreference(VIEW_CATEGORY, "Real world vertical field of view (angular size of monitor)", getter, setter); preference->setMin(1); preference->setMax(180); @@ -219,13 +218,13 @@ void setupPreferences() { static const QString AVATAR_TUNING { "Avatar Tuning" }; { - auto getter = [=]()->QString { return myAvatar->getDominantHand(); }; - auto setter = [=](const QString& value) { myAvatar->setDominantHand(value); }; + auto getter = [myAvatar]()->QString { return myAvatar->getDominantHand(); }; + auto setter = [myAvatar](const QString& value) { myAvatar->setDominantHand(value); }; preferences->addPreference(new PrimaryHandPreference(AVATAR_TUNING, "Dominant Hand", getter, setter)); } { - auto getter = [=]()->float { return myAvatar->getTargetScale(); }; - auto setter = [=](float value) { myAvatar->setTargetScale(value); }; + auto getter = [myAvatar]()->float { return myAvatar->getTargetScale(); }; + auto setter = [myAvatar](float value) { myAvatar->setTargetScale(value); }; auto preference = new SpinnerSliderPreference(AVATAR_TUNING, "Avatar Scale", getter, setter); preference->setMin(0.25); preference->setMax(4); @@ -240,16 +239,16 @@ void setupPreferences() { } { - auto getter = [=]()->QString { return myAvatar->getAnimGraphOverrideUrl().toString(); }; - auto setter = [=](const QString& value) { myAvatar->setAnimGraphOverrideUrl(QUrl(value)); }; + auto getter = [myAvatar]()->QString { return myAvatar->getAnimGraphOverrideUrl().toString(); }; + auto setter = [myAvatar](const QString& value) { myAvatar->setAnimGraphOverrideUrl(QUrl(value)); }; auto preference = new EditPreference(AVATAR_TUNING, "Avatar animation JSON", getter, setter); preference->setPlaceholderText("default"); preferences->addPreference(preference); } { - auto getter = [=]()->bool { return myAvatar->getCollisionsEnabled(); }; - auto setter = [=](bool value) { myAvatar->setCollisionsEnabled(value); }; + auto getter = [myAvatar]()->bool { return myAvatar->getCollisionsEnabled(); }; + auto setter = [myAvatar](bool value) { myAvatar->setCollisionsEnabled(value); }; auto preference = new CheckPreference(AVATAR_TUNING, "Enable Avatar collisions", getter, setter); preferences->addPreference(preference); } @@ -270,15 +269,15 @@ void setupPreferences() { { static const QString movementsControlChannel = QStringLiteral("Hifi-Advanced-Movement-Disabler"); - auto getter = [=]()->bool { return myAvatar->useAdvancedMovementControls(); }; - auto setter = [=](bool value) { myAvatar->setUseAdvancedMovementControls(value); }; + auto getter = [myAvatar]()->bool { return myAvatar->useAdvancedMovementControls(); }; + auto setter = [myAvatar](bool value) { myAvatar->setUseAdvancedMovementControls(value); }; preferences->addPreference(new CheckPreference(MOVEMENT, QStringLiteral("Advanced movement for hand controllers"), getter, setter)); } { - auto getter = [=]()->int { return myAvatar->getSnapTurn() ? 0 : 1; }; - auto setter = [=](int value) { myAvatar->setSnapTurn(value == 0); }; + auto getter = [myAvatar]()->int { return myAvatar->getSnapTurn() ? 0 : 1; }; + auto setter = [myAvatar](int value) { myAvatar->setSnapTurn(value == 0); }; auto preference = new RadioButtonsPreference(MOVEMENT, "Snap turn / Smooth turn", getter, setter); QStringList items; items << "Snap turn" << "Smooth turn"; @@ -306,20 +305,20 @@ void setupPreferences() { { static const QString movementsControlChannel = QStringLiteral("Hifi-Advanced-Movement-Disabler"); - auto getter = [=]()->bool { return myAvatar->useAdvancedMovementControls(); }; - auto setter = [=](bool value) { myAvatar->setUseAdvancedMovementControls(value); }; + auto getter = [myAvatar]()->bool { return myAvatar->useAdvancedMovementControls(); }; + auto setter = [myAvatar](bool value) { myAvatar->setUseAdvancedMovementControls(value); }; preferences->addPreference(new CheckPreference(VR_MOVEMENT, QStringLiteral("Advanced movement for hand controllers"), getter, setter)); } { - auto getter = [=]()->bool { return myAvatar->getFlyingHMDPref(); }; - auto setter = [=](bool value) { myAvatar->setFlyingHMDPref(value); }; + auto getter = [myAvatar]()->bool { return myAvatar->getFlyingHMDPref(); }; + auto setter = [myAvatar](bool value) { myAvatar->setFlyingHMDPref(value); }; preferences->addPreference(new CheckPreference(VR_MOVEMENT, "Flying & jumping", getter, setter)); } { - auto getter = [=]()->int { return myAvatar->getSnapTurn() ? 0 : 1; }; - auto setter = [=](int value) { myAvatar->setSnapTurn(value == 0); }; + auto getter = [myAvatar]()->int { return myAvatar->getSnapTurn() ? 0 : 1; }; + auto setter = [myAvatar](int value) { myAvatar->setSnapTurn(value == 0); }; auto preference = new RadioButtonsPreference(VR_MOVEMENT, "Snap turn / Smooth turn", getter, setter); QStringList items; items << "Snap turn" << "Smooth turn"; @@ -345,8 +344,8 @@ void setupPreferences() { static const QString AVATAR_CAMERA{ "Mouse Sensitivity" }; { - auto getter = [=]()->float { return myAvatar->getPitchSpeed(); }; - auto setter = [=](float value) { myAvatar->setPitchSpeed(value); }; + auto getter = [myAvatar]()->float { return myAvatar->getPitchSpeed(); }; + auto setter = [myAvatar](float value) { myAvatar->setPitchSpeed(value); }; auto preference = new SpinnerSliderPreference(AVATAR_CAMERA, "Y input:", getter, setter); preference->setMin(1.0f); preference->setMax(360.0f); @@ -355,8 +354,8 @@ void setupPreferences() { preferences->addPreference(preference); } { - auto getter = [=]()->float { return myAvatar->getYawSpeed(); }; - auto setter = [=](float value) { myAvatar->setYawSpeed(value); }; + auto getter = [myAvatar]()->float { return myAvatar->getYawSpeed(); }; + auto setter = [myAvatar](float value) { myAvatar->setYawSpeed(value); }; auto preference = new SpinnerSliderPreference(AVATAR_CAMERA, "X input:", getter, setter); preference->setMin(1.0f); preference->setMax(360.0f); @@ -421,8 +420,8 @@ void setupPreferences() { { static const int MIN_PORT_NUMBER { 0 }; static const int MAX_PORT_NUMBER { 65535 }; - auto getter = [nodelist] { return static_cast(nodelist->getSocketLocalPort()); }; - auto setter = [nodelist](int preset) { nodelist->setSocketLocalPort(static_cast(preset)); }; + auto getter = [&nodelist] { return static_cast(nodelist->getSocketLocalPort()); }; + auto setter = [&nodelist](int preset) { nodelist->setSocketLocalPort(static_cast(preset)); }; auto preference = new IntSpinnerPreference(NETWORKING, "Listening Port", getter, setter); preference->setMin(MIN_PORT_NUMBER); preference->setMax(MAX_PORT_NUMBER); diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index 1f6b540ad6..107de97d33 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -174,7 +174,7 @@ void Stats::updateStats(bool force) { int octreeServerCount = 0; int pingOctreeMax = 0; int totalEntityKbps = 0; - nodeList->eachNode([&](const SharedNodePointer& node) { + nodeList->eachNode([&totalPingOctree, &totalEntityKbps, &octreeServerCount, &pingOctreeMax](const SharedNodePointer& node) { // TODO: this should also support entities if (node->getType() == NodeType::EntityServer) { totalPingOctree += node->getPingMs(); diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index abdac838b6..a7579dac2b 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -1908,7 +1908,7 @@ void AvatarData::sendIdentityPacket() { auto packetList = NLPacketList::create(PacketType::AvatarIdentity, QByteArray(), true, true); packetList->write(identityData); nodeList->eachMatchingNode( - [&](const SharedNodePointer& node)->bool { + [](const SharedNodePointer& node)->bool { return node->getType() == NodeType::AvatarMixer && node->getActiveSocket(); }, [&](const SharedNodePointer& node) { diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 8fd87e068a..0fac5e55e8 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -1249,7 +1249,7 @@ bool EntityScriptingInterface::actionWorker(const QUuid& entityID, EntityItemPointer entity; bool doTransmit = false; - _entityTree->withWriteLock([&] { + _entityTree->withWriteLock([this, &entity, entityID, myNodeID, &doTransmit, actor, &properties] { EntitySimulationPointer simulation = _entityTree->getSimulation(); entity = _entityTree->findEntityByEntityItemID(entityID); if (!entity) { diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 66dd6adfb5..377e192bb1 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -1435,7 +1435,7 @@ void EntityTree::validatePop(const QString& certID, const EntityItemID& entityIt QNetworkReply* networkReply = networkAccessManager.put(networkRequest, QJsonDocument(request).toJson()); - connect(networkReply, &QNetworkReply::finished, [=]() { + connect(networkReply, &QNetworkReply::finished, [this, networkReply, entityItemID, certID, senderNode]() { QJsonObject jsonObject = QJsonDocument::fromJson(networkReply->readAll()).object(); jsonObject = jsonObject["data"].toObject(); From 6b2c67e5bd707c14046e2160c23373b87bdecf69 Mon Sep 17 00:00:00 2001 From: amantley Date: Wed, 1 Aug 2018 18:22:51 -0700 Subject: [PATCH 106/332] more doug support --- interface/src/avatar/MyAvatar.cpp | 1 + .../animation/src/AnimBlendLinearMove.cpp | 9 ++++++--- libraries/animation/src/AnimStateMachine.cpp | 19 +++++++++++-------- libraries/animation/src/Rig.cpp | 13 +++++++++++++ 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 7416d22367..aec31253f4 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2328,6 +2328,7 @@ void MyAvatar::updateOrientation(float deltaTime) { static float scaleSpeedByDirection(glm::vec2 velocityDirection, float speed) { float scale = 1.0f; + float x = sqrtf(1.0f - (velocityDirection.y * velocityDirection.y) / 3.0f); if (velocityDirection.y > 0.0f) { scale = 0.5f; } diff --git a/libraries/animation/src/AnimBlendLinearMove.cpp b/libraries/animation/src/AnimBlendLinearMove.cpp index 2f73e801b5..0250c37638 100644 --- a/libraries/animation/src/AnimBlendLinearMove.cpp +++ b/libraries/animation/src/AnimBlendLinearMove.cpp @@ -50,7 +50,6 @@ const AnimPoseVec& AnimBlendLinearMove::evaluate(AnimVariantMap& animVars, const qCDebug(animation) << "in blend linear move " << _alphaVar << ": " << _alpha << " band id: " << _id << " parent alpha " << _animStack[_id]; assert(_children.size() == _characteristicSpeeds.size()); - _desiredSpeed = animVars.lookup(_desiredSpeedVar, _desiredSpeed); float speed = 0.0f; @@ -64,6 +63,10 @@ const AnimPoseVec& AnimBlendLinearMove::evaluate(AnimVariantMap& animVars, const } _alpha = calculateAlpha(speed, _characteristicSpeeds); float parentAlpha = _animStack[_id]; + + _animStack["speed"] = speed; + + qCDebug(animation) << "speed is now: " << speed; if (_children.size() == 0) { for (auto&& pose : _poses) { @@ -87,8 +90,8 @@ const AnimPoseVec& AnimBlendLinearMove::evaluate(AnimVariantMap& animVars, const setFrameAndPhase(dt, alpha, prevPoseIndex, nextPoseIndex, &prevDeltaTime, &nextDeltaTime, triggersOut); evaluateAndBlendChildren(animVars, context, triggersOut, alpha, prevPoseIndex, nextPoseIndex, prevDeltaTime, nextDeltaTime); - float weight1 = alpha; - float weight2 = 1.0f - weight1; + float weight2 = alpha; + float weight1 = 1.0f - weight2; _animStack[_children[prevPoseIndex]->getID()] = weight1 * parentAlpha; if ((int)nextPoseIndex < _children.size()) { _animStack[_children[nextPoseIndex]->getID()] = weight2 * parentAlpha; diff --git a/libraries/animation/src/AnimStateMachine.cpp b/libraries/animation/src/AnimStateMachine.cpp index 907bd562ad..9db396e6ec 100644 --- a/libraries/animation/src/AnimStateMachine.cpp +++ b/libraries/animation/src/AnimStateMachine.cpp @@ -37,7 +37,8 @@ const AnimPoseVec& AnimStateMachine::evaluate(AnimVariantMap& animVars, const An bool foundState = false; for (auto& state : _states) { if (state->getID() == desiredStateID) { - _previousStateID = _currentState->getID(); + _previousStateID = "(" + _currentState->getID() + ")"; + //_previousStateID = _currentState->getID(); switchState(animVars, context, state); foundState = true; break; @@ -63,16 +64,17 @@ const AnimPoseVec& AnimStateMachine::evaluate(AnimVariantMap& animVars, const An if (!_previousStateID.contains("none")) { _animStack[_previousStateID] = 1.0f - _alpha; } - if (_alpha > 1.0f) { - _animStack[_currentState->getID()] = 1.0f; - } else { - _animStack[_currentState->getID()] = _alpha; - qCDebug(animation) << "setting child alpha " << _currentState->getID() << " " << _alpha; - - } + if (_duringInterp) { _alpha += _alphaVel * dt; + if (_alpha > 1.0f) { + _animStack[_currentState->getID()] = 1.0f; + } else { + _animStack[_currentState->getID()] = _alpha; + qCDebug(animation) << "setting child alpha " << _currentState->getID() << " " << _alpha; + + } if (_alpha < 1.0f) { AnimPoseVec* nextPoses = nullptr; AnimPoseVec* prevPoses = nullptr; @@ -105,6 +107,7 @@ const AnimPoseVec& AnimStateMachine::evaluate(AnimVariantMap& animVars, const An } } if (!_duringInterp) { + _animStack[_currentState->getID()] = 1.0f; _poses = currentStateNode->evaluate(animVars, context, dt, triggersOut); } diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index b67eafb0c4..7f6bc11cf2 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -636,6 +636,8 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("moveForwardSpeed", _averageForwardSpeed.getAverage()); _animVars.set("moveBackwardSpeed", -_averageForwardSpeed.getAverage()); _animVars.set("moveLateralSpeed", fabsf(_averageLateralSpeed.getAverage())); + _animVars.set("lastSampledForwardSpeed", forwardSpeed); + _animVars.set("lastSampledLateralSpeed", lateralSpeed); const float MOVE_ENTER_SPEED_THRESHOLD = 0.2f; // m/sec const float MOVE_EXIT_SPEED_THRESHOLD = 0.07f; // m/sec @@ -706,6 +708,17 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos if ((_desiredStateAge >= STATE_CHANGE_HYSTERESIS_TIMER) && _desiredState != _state) { _state = _desiredState; _desiredStateAge = 0.0f; + // if we are changing anim states. + //reset the average speed to the current reading of speed + qCDebug(animation) << "reset the average movement speeds"; + _averageForwardSpeed.reset(); + _averageLateralSpeed.reset(); + _averageForwardSpeed.updateAverage(forwardSpeed); + _averageLateralSpeed.updateAverage(lateralSpeed); + _animVars.set("moveForwardSpeed", _averageForwardSpeed.getAverage()); + _animVars.set("moveBackwardSpeed", -_averageForwardSpeed.getAverage()); + _animVars.set("moveLateralSpeed", fabsf(_averageLateralSpeed.getAverage())); + } _desiredStateAge += deltaTime; From f0d058cb61d0a18dadb4e31b8e62a69a692940b2 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Thu, 2 Aug 2018 11:29:56 -0300 Subject: [PATCH 107/332] Set buffer to 10 ms for android (CALLBACK_ACCELERATOR_RATIO = 1.0) --- libraries/audio-client/src/AudioClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index 2a07d2898a..85ceece702 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -1849,7 +1849,7 @@ const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 2.0f; #endif #ifdef Q_OS_ANDROID -const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 0.25f; +const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 1.0f; #elif defined(Q_OS_LINUX) const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 2.0f; #endif From a06f85faa8e5ac46ca7f2688ec7713fb3cc3133e Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 31 Jul 2018 09:25:51 -0700 Subject: [PATCH 108/332] Consolidate intersection information in CollisionPickResult to one list, and move variant conversion code to source file --- interface/src/raypick/CollisionPick.cpp | 55 +++++++++++++++++++++++++ interface/src/raypick/CollisionPick.h | 30 +------------- 2 files changed, 56 insertions(+), 29 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index c1fc8e9c87..0531a5a67d 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -14,6 +14,61 @@ #include "ScriptEngineLogging.h" #include "model-networking/ModelCache.h" +#include "UUIDHasher.h" + +QVariantMap CollisionPickResult::toVariantMap() const { + QVariantMap variantMap; + + variantMap["intersects"] = intersects; + + std::unordered_map intersections; + std::unordered_map collisionPointPairs; + + IntersectionType intersectionTypesToCheck[] = { ENTITY, AVATAR }; + for (int i = 0; i < 2; i++) { + IntersectionType intersectionType = intersectionTypesToCheck[i]; + + const std::vector* objectIntersections; + if (intersectionType == ENTITY) { + objectIntersections = &entityIntersections; + } + else { + objectIntersections = &avatarIntersections; + } + + for (auto& objectIntersection : *objectIntersections) { + auto at = intersections.find(objectIntersection.foundID); + if (at == intersections.end()) { + QVariantMap intersectingObject; + intersectingObject["id"] = objectIntersection.foundID; + intersectingObject["type"] = intersectionType; + intersections[objectIntersection.foundID] = intersectingObject; + + collisionPointPairs[objectIntersection.foundID] = QVariantList(); + } + + QVariantMap collisionPointPair; + collisionPointPair["pick"] = vec3toVariant(objectIntersection.testCollisionPoint); + collisionPointPair["object"] = vec3toVariant(objectIntersection.foundCollisionPoint); + + collisionPointPairs[objectIntersection.foundID].append(collisionPointPair); + } + } + + QVariantList qIntersectingObjects; + for (auto& intersectionKeyVal : intersections) { + const QUuid& id = intersectionKeyVal.first; + QVariantMap& intersection = intersectionKeyVal.second; + + intersection["collisionPointPairs"] = collisionPointPairs[id]; + qIntersectingObjects.append(intersection); + } + + variantMap["intersectingObjects"] = qIntersectingObjects; + variantMap["collisionRegion"] = pickVariant; + + return variantMap; +} bool CollisionPick::isShapeInfoReady(CollisionRegion& pick) { if (pick.shouldComputeShapeInfo()) { diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index 29990f21a7..48b3173f19 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -35,35 +35,7 @@ public: std::vector entityIntersections; std::vector avatarIntersections; - virtual QVariantMap toVariantMap() const override { - QVariantMap variantMap; - - variantMap["intersects"] = intersects; - - QVariantList qEntityIntersections; - for (auto entityIntersection : entityIntersections) { - QVariantMap qEntityIntersection; - qEntityIntersection["objectID"] = entityIntersection.foundID; - qEntityIntersection["pickCollisionPoint"] = vec3toVariant(entityIntersection.testCollisionPoint); - qEntityIntersection["entityCollisionPoint"] = vec3toVariant(entityIntersection.foundCollisionPoint); - qEntityIntersections.append(qEntityIntersection); - } - variantMap["entityIntersections"] = qEntityIntersections; - - QVariantList qAvatarIntersections; - for (auto avatarIntersection : avatarIntersections) { - QVariantMap qAvatarIntersection; - qAvatarIntersection["objectID"] = avatarIntersection.foundID; - qAvatarIntersection["pickCollisionPoint"] = vec3toVariant(avatarIntersection.testCollisionPoint); - qAvatarIntersection["entityCollisionPoint"] = vec3toVariant(avatarIntersection.foundCollisionPoint); - qAvatarIntersections.append(qAvatarIntersection); - } - variantMap["avatarIntersections"] = qAvatarIntersections; - - variantMap["collisionRegion"] = pickVariant; - - return variantMap; - } + QVariantMap CollisionPickResult::toVariantMap() const override; bool doesIntersect() const override { return intersects; } bool checkOrFilterAgainstMaxDistance(float maxDistance) override { return true; } From 2f358f3380082a44438958c969c96b324a072d56 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Thu, 2 Aug 2018 11:33:39 -0700 Subject: [PATCH 109/332] fix shapes always drawing as transparents --- libraries/entities-renderer/src/RenderableEntityItem.cpp | 9 +++++++++ .../entities-renderer/src/RenderableShapeEntityItem.cpp | 9 ++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/libraries/entities-renderer/src/RenderableEntityItem.cpp b/libraries/entities-renderer/src/RenderableEntityItem.cpp index 78801df715..f04ee28d7f 100644 --- a/libraries/entities-renderer/src/RenderableEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableEntityItem.cpp @@ -336,6 +336,11 @@ bool EntityRenderer::needsRenderUpdate() const { if (_needsRenderUpdate) { return true; } + + if (isFading()) { + return true; + } + if (_prevIsTransparent != isTransparent()) { return true; } @@ -380,6 +385,10 @@ void EntityRenderer::updateModelTransformAndBound() { void EntityRenderer::doRenderUpdateSynchronous(const ScenePointer& scene, Transaction& transaction, const EntityItemPointer& entity) { DETAILED_PROFILE_RANGE(simulation_physics, __FUNCTION__); withWriteLock([&] { + if (isFading()) { + emit requestRenderUpdate(); + } + auto transparent = isTransparent(); if (_prevIsTransparent && !transparent) { _isFading = false; diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp index c50b3bd760..3fd79ffad1 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp @@ -216,7 +216,14 @@ ShapeKey ShapeEntityRenderer::getShapeKey() { return builder.build(); } else { - return Parent::getShapeKey(); + ShapeKey::Builder builder; + if (_procedural.isReady()) { + builder.withOwnPipeline(); + } + if (isTransparent()) { + builder.withTranslucent(); + } + return builder.build(); } } From 8248691b7d6a707418ba3f1299ce23057d7d2ac9 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Thu, 2 Aug 2018 13:03:24 -0700 Subject: [PATCH 110/332] Can create a test run. --- tools/auto-tester/src/TestRailInterface.cpp | 106 +++++++++++++++--- tools/auto-tester/src/TestRailInterface.h | 6 +- .../src/ui/TestRailRunSelectorWindow.cpp | 3 +- 3 files changed, 97 insertions(+), 18 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index f5fe8cefdb..6b78642259 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -20,22 +20,24 @@ TestRailInterface::TestRailInterface() { _testRailTestCasesSelectorWindow.setURL("https://highfidelity.testrail.net"); ////_testRailTestCasesSelectorWindow.setURL("https://nissimhadar.testrail.io"); _testRailTestCasesSelectorWindow.setUser("@highfidelity.io"); - ////_testRailSelectorWindow.setUser("nissim.hadar@gmail.com"); + ////_testRailTestCasesSelectorWindow.setUser("nissim.hadar@gmail.com"); _testRailTestCasesSelectorWindow.setProjectID(INTERFACE_PROJECT_ID); - ////_testRailSelectorWindow.setProject(1); + ////_testRailTestCasesSelectorWindow.setProjectID(2); _testRailTestCasesSelectorWindow.setSuiteID(INTERFACE_SUITE_ID); + ////_testRailTestCasesSelectorWindow.setSuiteID(2); _testRailRunSelectorWindow.setURL("https://highfidelity.testrail.net"); ////_testRailRunSelectorWindow.setURL("https://nissimhadar.testrail.io"); _testRailRunSelectorWindow.setUser("@highfidelity.io"); - ////_testRailSelectorWindow.setUser("nissim.hadar@gmail.com"); + ////_testRailRunSelectorWindow.setUser("nissim.hadar@gmail.com"); _testRailRunSelectorWindow.setProjectID(INTERFACE_PROJECT_ID); - ////_testRailSelectorWindow.setProject(1); + ////_testRailRunSelectorWindow.setProjectID(2); _testRailRunSelectorWindow.setSuiteID(INTERFACE_SUITE_ID); + ////_testRailRunSelectorWindow.setSuiteID(2); } QString TestRailInterface::getObject(const QString& path) { @@ -224,7 +226,7 @@ void TestRailInterface::requestTestRailTestCasesDataFromUser() { _url = _testRailTestCasesSelectorWindow.getURL() + "/"; _user = _testRailTestCasesSelectorWindow.getUser(); _password = _testRailTestCasesSelectorWindow.getPassword(); - ////_password = "tutKA76"; + ////_password = "tutKA76";//// _projectID = QString::number(_testRailTestCasesSelectorWindow.getProjectID()); _suiteID = QString::number(_testRailTestCasesSelectorWindow.getSuiteID()); } @@ -307,7 +309,7 @@ void TestRailInterface::createAddTestCasesPythonScript(const QString& testDirect // top-level section stream << "data = { 'name': '" - << "Test Suite - " << QDateTime::currentDateTime().toString("yyyy-MM-ddTHH:mm") + "', " + << "Test Section - " << QDateTime::currentDateTime().toString("yyyy-MM-ddTHH:mm") + "', " << "'suite_id': " + _suiteID + "}\n"; stream << "section = client.send_post('add_section/' + str(" << _projectID << "), data)\n"; @@ -320,8 +322,8 @@ void TestRailInterface::createAddTestCasesPythonScript(const QString& testDirect if (QMessageBox::Yes == QMessageBox(QMessageBox::Information, "Python script has been created", "Do you want to run the script and update TestRail?", - QMessageBox::Yes | QMessageBox::No) - .exec()) { + QMessageBox::Yes | QMessageBox::No).exec() + ) { QProcess* process = new QProcess(); connect(process, &QProcess::started, this, [=]() { _busyWindow.exec(); }); @@ -367,7 +369,7 @@ void TestRailInterface::updateMilestonesComboData(int exitCode, QProcess::ExitSt QString line = in.readLine(); while (!line.isNull()) { QStringList words = line.split(' '); - _milestones[words[0]] = words[1].toInt(); + _milestoneIDs.push_back(words[1].toInt()); _milestoneNames << words[0]; line = in.readLine(); @@ -387,6 +389,80 @@ void TestRailInterface::updateMilestonesComboData(int exitCode, QProcess::ExitSt createAddTestCasesPythonScript(_testDirectory, _userGitHub, _branchGitHub); } +void TestRailInterface::addRun() { + QString filename = _outputDirectory + "/addRun.py"; + if (QFile::exists(filename)) { + QFile::remove(filename); + } + QFile file(filename); + + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not create 'addRun.py'"); + exit(-1); + } + + QTextStream stream(&file); + + // Code to access TestRail + stream << "from testrail import *\n"; + stream << "client = APIClient('" << _url.toStdString().c_str() << "')\n"; + stream << "client.user = '" << _user << "'\n"; + stream << "client.password = '" << _password << "'\n\n"; + + // A test suite is a forest. Each node is a section and leaves are either sections or test cases + // The user has selected a root for the run + // To find the cases in this tree we need all the sections in the tree + // These are found by building a set of all relevant sections. The first section is the selected root + // As the sections are in an ordered array we use the following snippet to find the relevant sections: + // initialize section set with the root + // for each section in the ordered array of sections in the suite + // if the parent of the section is in the section set then + // add this section to the section set + // + stream << "sections = client.send_get('get_sections/" + _projectID + "&suite_id=" + _suiteID + "')\n\n"; + + int sectionID = _sectionIDs[_testRailRunSelectorWindow.getSectionID()]; + + stream << "relevantSections = { " + QString::number(sectionID) + " }\n"; + stream << "for section in sections:\n"; + stream << "\tif section['parent_id'] in relevantSections:\n"; + stream << "\t\trelevantSections.add(section['id'])\n\n"; + + // We now loop over each section in the set and collect the cases into an array + stream << "cases = []\n"; + stream << "for section_id in relevantSections:\n"; + stream << "\tcases = cases + client.send_get('get_cases/" + _projectID + "&suite_id=" + _suiteID + "§ion_id=' + str(section_id))\n\n"; + + // To create a run we need an array of the relevant case ids + stream << "case_ids = []\n"; + stream << "for case in cases:\n"; + stream << "\tcase_ids.append(case['id'])\n\n"; + + // Now, we can create the run + stream << "data = { 'name': '" + _sectionNames[_testRailRunSelectorWindow.getSectionID()].replace("Section", "Run") + + "', 'suite_id': " + _suiteID + + ", 'include_all': False, 'case_ids': case_ids}\n"; + + stream << "run = client.send_post('add_run/" + _projectID + "', data)\n"; + + file.close(); + + if (QMessageBox::Yes == QMessageBox(QMessageBox::Information, "Python script has been created", + "Do you want to run the script and update TestRail?", + QMessageBox::Yes | QMessageBox::No).exec() + ) { + QProcess* process = new QProcess(); + connect(process, &QProcess::started, this, [=]() { _busyWindow.exec(); }); + + connect(process, static_cast(&QProcess::finished), this, + [=](int exitCode, QProcess::ExitStatus exitStatus) { _busyWindow.hide(); }); + + QStringList parameters = QStringList() << _outputDirectory + "/addRun.py"; + process->start(_pythonCommand, parameters); + } +} + void TestRailInterface::updateSectionsComboData(int exitCode, QProcess::ExitStatus exitStatus) { // Quit if user has previously cancelled if (_testRailRunSelectorWindow.getUserCancelled()) { @@ -425,7 +501,7 @@ void TestRailInterface::updateSectionsComboData(int exitCode, QProcess::ExitStat QString section = line.left(line.lastIndexOf(" ")); QString id = line.right(line.length() - line.lastIndexOf(" ") - 1); - _sections[section] = id.toInt(); + _sectionIDs.push_back(id.toInt()); _sectionNames << section; line = in.readLine(); @@ -442,7 +518,9 @@ void TestRailInterface::updateSectionsComboData(int exitCode, QProcess::ExitStat return; } - ////createAddTestCasesPythonScript(_testDirectory, _userGitHub, _branchGitHub); + // The test cases are now read from TestRail + // When this is complete, the Run can be created + addRun(); } void TestRailInterface::getMilestonesFromTestRail() { @@ -747,12 +825,12 @@ void TestRailInterface::processTestPython(const QString& fullDirectory, QString testContent = QString("Execute instructions in [THIS TEST](") + testMDName + ")"; QString testExpected = QString("Refer to the expected result in the linked description."); - int milestone_id = _milestones[_milestoneNames[_testRailTestCasesSelectorWindow.getMilestoneID()]]; + int milestoneID = _milestoneIDs[_testRailTestCasesSelectorWindow.getMilestoneID()]; stream << "data = {\n" << "\t'title': '" << title << "',\n" << "\t'template_id': 2,\n" - << "\t'milestone_id': " << milestone_id << ",\n" + << "\t'milestone_id': " << milestoneID << ",\n" << "\t'custom_tester_count': 1,\n" << "\t'custom_domain_bot_load': 1,\n" << "\t'custom_added_to_release': 4,\n" @@ -777,7 +855,7 @@ void TestRailInterface::requestTestRailRunDataFromUser() { _url = _testRailRunSelectorWindow.getURL() + "/"; _user = _testRailRunSelectorWindow.getUser(); _password = _testRailRunSelectorWindow.getPassword(); - ////_password = "tutKA76"; + ////_password = "tutKA76";//// _projectID = QString::number(_testRailRunSelectorWindow.getProjectID()); _suiteID = QString::number(_testRailRunSelectorWindow.getSuiteID()); } diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 4c2bc7b937..931d7be386 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -80,6 +80,8 @@ public: void createTestRailRun(const QString& outputDirectory); + void addRun(); + bool setPythonCommand(); private: @@ -109,11 +111,11 @@ private: const QString pythonExe{ "python.exe" }; QString _pythonCommand; - std::map _milestones; QStringList _milestoneNames; + std::vector _milestoneIDs; - std::map _sections; QStringList _sectionNames; + std::vector _sectionIDs; }; #endif \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailRunSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.cpp index 9d960b16c1..54a3985a8b 100644 --- a/tools/auto-tester/src/ui/TestRailRunSelectorWindow.cpp +++ b/tools/auto-tester/src/ui/TestRailRunSelectorWindow.cpp @@ -96,6 +96,5 @@ void TestRailRunSelectorWindow::updateSectionsComboBoxData(QStringList data) { } int TestRailRunSelectorWindow::getSectionID() { - return 0; - sectionsComboBox->currentIndex(); + return sectionsComboBox->currentIndex(); } \ No newline at end of file From eda80fb36fe5cea974f3ab4d9c94cb74cc8e38ed Mon Sep 17 00:00:00 2001 From: Alexia Mandeville Date: Thu, 2 Aug 2018 13:26:08 -0700 Subject: [PATCH 111/332] updating emote app icon --- .../icons/tablet-icons/EmoteAppIcon.svg | 54 ++++++++++++++----- 1 file changed, 40 insertions(+), 14 deletions(-) diff --git a/interface/resources/icons/tablet-icons/EmoteAppIcon.svg b/interface/resources/icons/tablet-icons/EmoteAppIcon.svg index 340f0fcd2f..382f61467f 100644 --- a/interface/resources/icons/tablet-icons/EmoteAppIcon.svg +++ b/interface/resources/icons/tablet-icons/EmoteAppIcon.svg @@ -1,21 +1,47 @@ - + - - - - + + + + + + + + + + + + + + + + + + + From 096cb0db815670ddca92a1d9cfcbad2f1ad0eda2 Mon Sep 17 00:00:00 2001 From: amantley Date: Thu, 2 Aug 2018 13:32:06 -0700 Subject: [PATCH 112/332] working on strafe left and right transitions --- libraries/animation/src/AnimStateMachine.cpp | 7 +--- libraries/animation/src/AnimStateMachine.h | 2 +- libraries/animation/src/Rig.cpp | 43 +++++++++++++++----- 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/libraries/animation/src/AnimStateMachine.cpp b/libraries/animation/src/AnimStateMachine.cpp index 731c11f6f3..1fe80dca3e 100644 --- a/libraries/animation/src/AnimStateMachine.cpp +++ b/libraries/animation/src/AnimStateMachine.cpp @@ -109,13 +109,8 @@ const AnimPoseVec& AnimStateMachine::evaluate(const AnimVariantMap& animVars, co _animStack[_currentState->getID()] = 1.0f; _poses = currentStateNode->evaluate(animVars, context, dt, triggersOut); } -<<<<<<< HEAD - -======= - processOutputJoints(triggersOut); ->>>>>>> upstream/master return _poses; } @@ -127,7 +122,7 @@ void AnimStateMachine::addState(State::Pointer state) { _states.push_back(state); } -void AnimStateMachine::switchState(AnimVariantMap& animVars, const AnimContext& context, State::Pointer desiredState) { +void AnimStateMachine::switchState(const AnimVariantMap& animVars, const AnimContext& context, State::Pointer desiredState) { const float FRAMES_PER_SECOND = 30.0f; diff --git a/libraries/animation/src/AnimStateMachine.h b/libraries/animation/src/AnimStateMachine.h index a950ea3e99..b20e5203a1 100644 --- a/libraries/animation/src/AnimStateMachine.h +++ b/libraries/animation/src/AnimStateMachine.h @@ -123,7 +123,7 @@ protected: void addState(State::Pointer state); - void switchState(AnimVariantMap& animVars, const AnimContext& context, State::Pointer desiredState); + void switchState(const AnimVariantMap& animVars, const AnimContext& context, State::Pointer desiredState); State::Pointer evaluateTransitions(const AnimVariantMap& animVars) const; // for AnimDebugDraw rendering diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 79f59ca51f..1706032344 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -641,6 +641,11 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos float lateralSpeed = glm::dot(localVel, IDENTITY_RIGHT); float turningSpeed = glm::orientedAngle(forward, _lastForward, IDENTITY_UP) / deltaTime; + glm::vec3 lastVel = glm::inverse(worldRotation) * _lastVelocity; + + float lastForwardSpeed = glm::dot(lastVel, IDENTITY_FORWARD); + float lastLateralSpeed = glm::dot(lastVel, IDENTITY_RIGHT); + // filter speeds using a simple moving average. _averageForwardSpeed.updateAverage(forwardSpeed); _averageLateralSpeed.updateAverage(lateralSpeed); @@ -723,26 +728,20 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos if ((_desiredStateAge >= STATE_CHANGE_HYSTERESIS_TIMER) && _desiredState != _state) { _state = _desiredState; _desiredStateAge = 0.0f; - // if we are changing anim states. - //reset the average speed to the current reading of speed - qCDebug(animation) << "reset the average movement speeds"; - _averageForwardSpeed.reset(); - _averageLateralSpeed.reset(); - _averageForwardSpeed.updateAverage(forwardSpeed); - _averageLateralSpeed.updateAverage(lateralSpeed); - _animVars.set("moveForwardSpeed", _averageForwardSpeed.getAverage()); - _animVars.set("moveBackwardSpeed", -_averageForwardSpeed.getAverage()); - _animVars.set("moveLateralSpeed", fabsf(_averageLateralSpeed.getAverage())); - } _desiredStateAge += deltaTime; + bool resetVelocityAverage = false; + if (_state == RigRole::Move) { glm::vec3 horizontalVel = localVel - glm::vec3(0.0f, localVel.y, 0.0f); if (glm::length(horizontalVel) > MOVE_ENTER_SPEED_THRESHOLD) { if (fabsf(forwardSpeed) > 0.5f * fabsf(lateralSpeed)) { if (forwardSpeed > 0.0f) { + if (lastForwardSpeed < 0.0f){ + resetVelocityAverage = true; + } // forward _animVars.set("isMovingForward", true); _animVars.set("isMovingBackward", false); @@ -751,6 +750,9 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isNotMoving", false); } else { + if (lastForwardSpeed > 0.0f) { + resetVelocityAverage = true; + } // backward _animVars.set("isMovingBackward", true); _animVars.set("isMovingForward", false); @@ -760,6 +762,9 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos } } else { if (lateralSpeed > 0.0f) { + if (lastLateralSpeed < 0.0f) { + resetVelocityAverage = true; + } // right _animVars.set("isMovingRight", true); _animVars.set("isMovingLeft", false); @@ -767,6 +772,9 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isMovingBackward", false); _animVars.set("isNotMoving", false); } else { + if (lastLateralSpeed > 0.0f) { + resetVelocityAverage = true; + } // left _animVars.set("isMovingLeft", true); _animVars.set("isMovingRight", false); @@ -788,6 +796,19 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isInAirRun", false); _animVars.set("isNotInAir", true); + if (false) { + // if we are changing anim states. + //reset the average speed to the current reading of speed + qCDebug(animation) << "reset the average movement speeds"; + _averageForwardSpeed.reset(); + _averageLateralSpeed.reset(); + _averageForwardSpeed.updateAverage(forwardSpeed); + _averageLateralSpeed.updateAverage(lateralSpeed); + _animVars.set("moveForwardSpeed", _averageForwardSpeed.getAverage()); + _animVars.set("moveBackwardSpeed", -_averageForwardSpeed.getAverage()); + _animVars.set("moveLateralSpeed", fabsf(_averageLateralSpeed.getAverage())); + } + } else if (_state == RigRole::Turn) { if (turningSpeed > 0.0f) { // turning right From 11b4beda5e04f335a4df58ee7e384c2ae49b2f9d Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Thu, 2 Aug 2018 15:37:44 -0700 Subject: [PATCH 113/332] Can create a test run. --- tools/auto-tester/src/TestRailInterface.cpp | 65 ++++++++++--------- tools/auto-tester/src/TestRailInterface.h | 7 +- .../ui/TestRailTestCasesSelectorWindow.cpp | 16 +++-- .../src/ui/TestRailTestCasesSelectorWindow.h | 4 +- .../src/ui/TestRailTestCasesSelectorWindow.ui | 12 ++-- 5 files changed, 57 insertions(+), 47 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 6b78642259..5d17b96e5e 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -335,7 +335,7 @@ void TestRailInterface::createAddTestCasesPythonScript(const QString& testDirect } } -void TestRailInterface::updateMilestonesComboData(int exitCode, QProcess::ExitStatus exitStatus) { +void TestRailInterface::updateReleasesComboData(int exitCode, QProcess::ExitStatus exitStatus) { // Quit if user has previously cancelled if (_testRailTestCasesSelectorWindow.getUserCancelled()) { return; @@ -344,41 +344,38 @@ void TestRailInterface::updateMilestonesComboData(int exitCode, QProcess::ExitSt // Check if process completed successfully if (exitStatus != QProcess::NormalExit) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), - "Could not get milestones from TestRail"); + "Could not get 'added to release' data from TestRail"); exit(-1); } - // Create map of milestones from the file created by the process - _milestoneNames.clear(); + // Create map of releases from the file created by the process + _releaseNames.clear(); - QString filename = _outputDirectory + "/milestones.txt"; + QString filename = _outputDirectory + "/releases.txt"; if (!QFile::exists(filename)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), - "Could not find milestones.txt in " + _outputDirectory); + "Could not find releases.txt in " + _outputDirectory); exit(-1); } QFile file(filename); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), - "Could not open " + _outputDirectory + "/milestones.txt"); + "Could not open " + _outputDirectory + "/releases.txt"); exit(-1); } QTextStream in(&file); QString line = in.readLine(); while (!line.isNull()) { - QStringList words = line.split(' '); - _milestoneIDs.push_back(words[1].toInt()); - _milestoneNames << words[0]; - + _releaseNames << line; line = in.readLine(); } file.close(); // Update the combo - _testRailTestCasesSelectorWindow.updateMilestonesComboBoxData(_milestoneNames); + _testRailTestCasesSelectorWindow.updateReleasesComboBoxData(_releaseNames); _testRailTestCasesSelectorWindow.exec(); @@ -523,8 +520,8 @@ void TestRailInterface::updateSectionsComboData(int exitCode, QProcess::ExitStat addRun(); } -void TestRailInterface::getMilestonesFromTestRail() { - QString filename = _outputDirectory + "/getMilestones.py"; +void TestRailInterface::getReleasesFromTestRail() { + QString filename = _outputDirectory + "/getReleases.py"; if (QFile::exists(filename)) { QFile::remove(filename); } @@ -532,7 +529,7 @@ void TestRailInterface::getMilestonesFromTestRail() { if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), - "Could not create 'getMilestones.py'"); + "Could not create 'getReleases.py'"); exit(-1); } @@ -544,21 +541,33 @@ void TestRailInterface::getMilestonesFromTestRail() { stream << "client.user = '" << _user << "'\n"; stream << "client.password = '" << _password << "'\n\n"; - // Print the list of uncompleted milestones - stream << "file = open('" + _outputDirectory + "/milestones.txt', 'w')\n\n"; - stream << "milestones = client.send_get('get_milestones/" + _projectID + "')\n"; - stream << "for milestone in milestones:\n"; - stream << "\tif milestone['is_completed'] == False:\n"; - stream << "\t\tfile.write(milestone['name'] + ' ' + str(milestone['id']) + '\\n')\n\n"; + // Print the list of releases + stream << "case_fields = client.send_get('get_case_fields/" + _projectID + "')\n"; + stream << "for case_field in case_fields:\n"; + stream << "\tif case_field['name'] == 'added_to_release':\n"; + stream << "\t\trelease_string = case_field['configs'][0]['options']['items']\n\n"; + + // The list read from TestRail looks like this: + // '0,< RC65\n1,RC65\n2,RC66\n3,RC67\n4,RC68\n5,RC69\n6,v0.70.0\n7,v0.71.0\n8,v0.72.0\n9,v0.73.0\n10,v0.74.0\n11,v0.75.0\n12,v0.76.0\n13,v0.77.0\n14,v0.78.0\n15,v0.79.0' + // Splitting on newline gives an array: + // ['0,< RC65', '1,RC65', '2,RC66', '3,RC67', '4,RC68', '5,RC69', '6,v0.70.0', '7,v0.71.0', '8,v0.72.0', '9,v0.73.0', '10,v0.74.0', '11,v0.75.0', '12,v0.76.0', '13,v0.77.0', '14,v0.78.0', '15,v0.79.0'] + // Each element consists of an index and a string, separated by a comma. + // We just need the strings + stream << "file = open('" + _outputDirectory + "/releases.txt', 'w')\n\n"; + stream << "releases = release_string.split('\\n')\n"; + stream << "for release in releases:\n"; + stream << "\twords = release.split(',')\n"; + stream << "\tfile.write(words[1] + '\\n')\n\n"; + stream << "file.close()\n"; file.close(); QProcess* process = new QProcess(); connect(process, static_cast(&QProcess::finished), this, - [=](int exitCode, QProcess::ExitStatus exitStatus) { updateMilestonesComboData(exitCode, exitStatus); }); + [=](int exitCode, QProcess::ExitStatus exitStatus) { updateReleasesComboData(exitCode, exitStatus); }); - QStringList parameters = QStringList() << _outputDirectory + "/getMilestones.py "; + QStringList parameters = QStringList() << filename; process->start(_pythonCommand, parameters); } @@ -579,8 +588,8 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, createTestRailDotPyScript(); createStackDotPyScript(); - // TestRail will be updated after the process initiated by getMilestonesFromTestRail has completed - getMilestonesFromTestRail(); + // TestRail will be updated after the process initiated by getReleasesFromTestRail has completed + getReleasesFromTestRail(); } void TestRailInterface::createTestSuiteXML(const QString& testDirectory, @@ -825,15 +834,13 @@ void TestRailInterface::processTestPython(const QString& fullDirectory, QString testContent = QString("Execute instructions in [THIS TEST](") + testMDName + ")"; QString testExpected = QString("Refer to the expected result in the linked description."); - int milestoneID = _milestoneIDs[_testRailTestCasesSelectorWindow.getMilestoneID()]; stream << "data = {\n" << "\t'title': '" << title << "',\n" << "\t'template_id': 2,\n" - << "\t'milestone_id': " << milestoneID << ",\n" + << "\t'custom_added_to_release': " << _testRailTestCasesSelectorWindow.getReleaseID() << ",\n" << "\t'custom_tester_count': 1,\n" << "\t'custom_domain_bot_load': 1,\n" - << "\t'custom_added_to_release': 4,\n" << "\t'custom_preconds': " << "'Tester is in an empty region of a domain in which they have edit rights\\n\\n*Note: Press \\'n\\' to advance " "test script',\n" @@ -895,7 +902,7 @@ void TestRailInterface::getTestSectionsFromTestRail() { connect(process, static_cast(&QProcess::finished), this, [=](int exitCode, QProcess::ExitStatus exitStatus) { updateSectionsComboData(exitCode, exitStatus); }); - QStringList parameters = QStringList() << _outputDirectory + "/getSections.py "; + QStringList parameters = QStringList() << filename; process->start(_pythonCommand, parameters); } diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 931d7be386..914c4ae208 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -53,7 +53,7 @@ public: const QString& userGitHub, const QString& branchGitHub); - void getMilestonesFromTestRail(); + void getReleasesFromTestRail(); void getTestSectionsFromTestRail(); void createTestRailDotPyScript(); @@ -75,7 +75,7 @@ public: QString getObject(const QString& path); - void updateMilestonesComboData(int exitCode, QProcess::ExitStatus exitStatus); + void updateReleasesComboData(int exitCode, QProcess::ExitStatus exitStatus); void updateSectionsComboData(int exitCode, QProcess::ExitStatus exitStatus); void createTestRailRun(const QString& outputDirectory); @@ -111,8 +111,7 @@ private: const QString pythonExe{ "python.exe" }; QString _pythonCommand; - QStringList _milestoneNames; - std::vector _milestoneIDs; + QStringList _releaseNames; QStringList _sectionNames; std::vector _sectionIDs; diff --git a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.cpp index 27d91df1ac..abb873ea14 100644 --- a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.cpp +++ b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.cpp @@ -27,7 +27,9 @@ void TestRailTestCasesSelectorWindow::reset() { projectIDLineEdit->setDisabled(false); OKButton->setDisabled(true); - milestonesComboBox->setDisabled(true); + + releasesLabel->setDisabled(true); + releasesComboBox->setDisabled(true); } void TestRailTestCasesSelectorWindow::on_acceptButton_clicked() { @@ -37,7 +39,9 @@ void TestRailTestCasesSelectorWindow::on_acceptButton_clicked() { projectIDLineEdit->setDisabled(true); OKButton->setDisabled(false); - milestonesComboBox->setDisabled(false); + + releasesLabel->setDisabled(false); + releasesComboBox->setDisabled(false); close(); } @@ -91,10 +95,10 @@ int TestRailTestCasesSelectorWindow::getSuiteID() { return suiteIDLineEdit->text().toInt(); } -void TestRailTestCasesSelectorWindow::updateMilestonesComboBoxData(QStringList data) { - milestonesComboBox->insertItems(0, data); +void TestRailTestCasesSelectorWindow::updateReleasesComboBoxData(QStringList data) { + releasesComboBox->insertItems(0, data); } -int TestRailTestCasesSelectorWindow::getMilestoneID() { - return milestonesComboBox->currentIndex(); +int TestRailTestCasesSelectorWindow::getReleaseID() { + return releasesComboBox->currentIndex(); } \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.h b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.h index 51e3a562ae..9153b003fa 100644 --- a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.h +++ b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.h @@ -38,8 +38,8 @@ public: bool userCancelled{ false }; - void updateMilestonesComboBoxData(QStringList data); - int getMilestoneID(); + void updateReleasesComboBoxData(QStringList data); + int getReleaseID(); private slots: void on_acceptButton_clicked(); diff --git a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui index 2dc43d08f1..f904339ff5 100644 --- a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui +++ b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui @@ -171,7 +171,7 @@ Accept - + false @@ -184,15 +184,15 @@ - + true - 140 + 80 350 - 121 + 181 20 @@ -202,7 +202,7 @@ - TestRail Milestone + TestRail Added for release @@ -271,7 +271,7 @@ projectIDLineEdit suiteIDLineEdit acceptButton - milestonesComboBox + releasesComboBox OKButton cancelButton From 66391c2d64f585c8907a21009e32514f50d8ec15 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Thu, 2 Aug 2018 19:07:16 -0700 Subject: [PATCH 114/332] WIP - add results to runs. --- tools/auto-tester/src/Test.cpp | 14 +++++++++++--- tools/auto-tester/src/Test.h | 6 ++++-- tools/auto-tester/src/TestRailInterface.cpp | 11 +++++++++++ tools/auto-tester/src/TestRailInterface.h | 3 +++ tools/auto-tester/src/ui/AutoTester.cpp | 4 ++++ tools/auto-tester/src/ui/AutoTester.h | 4 ++++ tools/auto-tester/src/ui/AutoTester.ui | 19 ++++++++++++++++--- 7 files changed, 53 insertions(+), 8 deletions(-) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index eba1cf231b..86e47be047 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -132,9 +132,7 @@ void Test::appendTestResultsToFile(const QString& _testResultsFolderPath, TestFa exit(-1); } - QString err = QString::number(testFailure._error).left(6); - - QString failureFolderPath { _testResultsFolderPath + "/" + err + "-Failure_" + QString::number(_index) + "--" + testFailure._actualImageFilename.left(testFailure._actualImageFilename.length() - 4) }; + QString failureFolderPath { _testResultsFolderPath + "/Failure_" + QString::number(_index) + "--" + testFailure._actualImageFilename.left(testFailure._actualImageFilename.length() - 4) }; if (!QDir().mkdir(failureFolderPath)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "Failed to create folder " + failureFolderPath); exit(-1); @@ -860,6 +858,16 @@ void Test::createTestRailRun() { _testRailInterface.createTestRailRun(outputDirectory); } +void Test::updateTestRailRunResult() { + QString testResults = QFileDialog::getOpenFileName(nullptr, "Please select the zipped test results to update from", nullptr, + "Zipped Test Results (*.zip)"); + + QString tempDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select a folder to store temporary files in", + nullptr, QFileDialog::ShowDirsOnly); + + _testRailInterface.updateTestRailRunResults(testResults, tempDirectory); +} + QStringList Test::createListOfAll_imagesInDirectory(const QString& imageFormat, const QString& pathToImageDirectory) { _imageDirectory = QDir(pathToImageDirectory); QStringList nameFilters; diff --git a/tools/auto-tester/src/Test.h b/tools/auto-tester/src/Test.h index 6d7506b738..07facdd10a 100644 --- a/tools/auto-tester/src/Test.h +++ b/tools/auto-tester/src/Test.h @@ -51,14 +51,16 @@ public: void createRecursiveScript(const QString& topLevelDirectory, bool interactiveMode); void createTests(); + + void createTestsOutline(); + void createMDFile(); void createAllMDFiles(); void createMDFile(const QString& topLevelDirectory); - void createTestsOutline(); - void createTestRailTestCases(); void createTestRailRun(); + void updateTestRailRunResult(); bool compareImageLists(bool isInteractiveMode, QProgressBar* progressBar); diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 5d17b96e5e..8081b68f78 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -11,6 +11,9 @@ #include "TestRailInterface.h" #include "Test.h" +#include +#include + #include #include #include @@ -919,4 +922,12 @@ void TestRailInterface::createTestRailRun(const QString& outputDirectory) { // TestRail will be updated after the process initiated by getTestCasesFromTestRail has completed getTestSectionsFromTestRail(); +} + + +void TestRailInterface::updateTestRailRunResults(const QString& testResults, const QString& tempDirectory) { + QString tempSubDirectory = tempDirectory + "/" + tempName; + QDir dir = tempSubDirectory; + dir.mkdir(tempSubDirectory); + JlCompress::extractDir(testResults, tempSubDirectory); } \ No newline at end of file diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index 914c4ae208..a4e18afad8 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -79,6 +79,7 @@ public: void updateSectionsComboData(int exitCode, QProcess::ExitStatus exitStatus); void createTestRailRun(const QString& outputDirectory); + void updateTestRailRunResults(const QString& testResults, const QString& tempDirectory); void addRun(); @@ -115,6 +116,8 @@ private: QStringList _sectionNames; std::vector _sectionIDs; + + QString tempName{ "fgadhcUDHSFaidsfh3478JJJFSDFIUSOEIrf" }; }; #endif \ No newline at end of file diff --git a/tools/auto-tester/src/ui/AutoTester.cpp b/tools/auto-tester/src/ui/AutoTester.cpp index 697711c4eb..7534604afb 100644 --- a/tools/auto-tester/src/ui/AutoTester.cpp +++ b/tools/auto-tester/src/ui/AutoTester.cpp @@ -76,6 +76,10 @@ void AutoTester::on_createTestRailRunButton_clicked() { _test->createTestRailRun(); } +void AutoTester::on_updateTestRailRunResultsButton_clicked() { + _test->updateTestRailRunResult(); +} + // To toggle between show and hide // if (uState & ABS_AUTOHIDE) on_showTaskbarButton_clicked(); // else on_hideTaskbarButton_clicked(); diff --git a/tools/auto-tester/src/ui/AutoTester.h b/tools/auto-tester/src/ui/AutoTester.h index 236a1ed733..a42c76bb4d 100644 --- a/tools/auto-tester/src/ui/AutoTester.h +++ b/tools/auto-tester/src/ui/AutoTester.h @@ -42,11 +42,15 @@ private slots: void on_createRecursiveScriptButton_clicked(); void on_createAllRecursiveScriptsButton_clicked(); void on_createTestsButton_clicked(); + void on_createMDFileButton_clicked(); void on_createAllMDFilesButton_clicked(); + void on_createTestsOutlineButton_clicked(); + void on_createTestRailTestCasesButton_clicked(); void on_createTestRailRunButton_clicked(); + void on_updateTestRailRunResultsButton_clicked(); void on_hideTaskbarButton_clicked(); void on_showTaskbarButton_clicked(); diff --git a/tools/auto-tester/src/ui/AutoTester.ui b/tools/auto-tester/src/ui/AutoTester.ui index 680fe17785..badd91a2c0 100644 --- a/tools/auto-tester/src/ui/AutoTester.ui +++ b/tools/auto-tester/src/ui/AutoTester.ui @@ -234,7 +234,7 @@ 410 100 - 140 + 161 40 @@ -275,8 +275,8 @@ 410 - 180 - 140 + 160 + 161 40 @@ -284,6 +284,19 @@ Create TestRail Run + + + + 410 + 220 + 161 + 40 + + + + Update TestRail Run Results + + From 2a6bc8bd3e1279ac2cfded5b83f8de054622afe0 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Thu, 2 Aug 2018 20:10:25 -0700 Subject: [PATCH 115/332] WIP - add results to runs. --- tools/auto-tester/src/TestRailInterface.cpp | 1 + .../src/ui/TestRailResultsSelectorWindow.cpp | 104 +++++++ .../src/ui/TestRailResultsSelectorWindow.h | 50 ++++ .../src/ui/TestRailResultsSelectorWindow.ui | 280 ++++++++++++++++++ 4 files changed, 435 insertions(+) create mode 100644 tools/auto-tester/src/ui/TestRailResultsSelectorWindow.cpp create mode 100644 tools/auto-tester/src/ui/TestRailResultsSelectorWindow.h create mode 100644 tools/auto-tester/src/ui/TestRailResultsSelectorWindow.ui diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 8081b68f78..bedc8d2138 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -926,6 +926,7 @@ void TestRailInterface::createTestRailRun(const QString& outputDirectory) { void TestRailInterface::updateTestRailRunResults(const QString& testResults, const QString& tempDirectory) { + // Extract test failures from zipped folder QString tempSubDirectory = tempDirectory + "/" + tempName; QDir dir = tempSubDirectory; dir.mkdir(tempSubDirectory); diff --git a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.cpp new file mode 100644 index 0000000000..65a136d13f --- /dev/null +++ b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.cpp @@ -0,0 +1,104 @@ +// +// TestRailResultsSelectorWindow.cpp +// +// Created by Nissim Hadar on 2 Aug 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include "TestRailResultsSelectorWindow.h" + +#include + +#include + +TestRailResultsSelectorWindow::TestRailResultsSelectorWindow(QWidget *parent) { + setupUi(this); + + projectIDLineEdit->setValidator(new QIntValidator(1, 999, this)); +} + + +void TestRailResultsSelectorWindow::reset() { + urlLineEdit->setDisabled(false); + userLineEdit->setDisabled(false); + passwordLineEdit->setDisabled(false); + projectIDLineEdit->setDisabled(false); + + OKButton->setDisabled(true); + + releasesLabel->setDisabled(true); + releasesComboBox->setDisabled(true); +} + +void TestRailResultsSelectorWindow::on_acceptButton_clicked() { + urlLineEdit->setDisabled(true); + userLineEdit->setDisabled(true); + passwordLineEdit->setDisabled(true); + projectIDLineEdit->setDisabled(true); + + OKButton->setDisabled(false); + + releasesLabel->setDisabled(false); + releasesComboBox->setDisabled(false); + close(); +} + +void TestRailResultsSelectorWindow::on_OKButton_clicked() { + userCancelled = false; + close(); +} + +void TestRailResultsSelectorWindow::on_cancelButton_clicked() { + userCancelled = true; + close(); +} + +bool TestRailResultsSelectorWindow::getUserCancelled() { + return userCancelled; +} + +void TestRailResultsSelectorWindow::setURL(const QString& user) { + urlLineEdit->setText(user); +} + +QString TestRailResultsSelectorWindow::getURL() { + return urlLineEdit->text(); +} + +void TestRailResultsSelectorWindow::setUser(const QString& user) { + userLineEdit->setText(user); +} + +QString TestRailResultsSelectorWindow::getUser() { + return userLineEdit->text(); +} + +QString TestRailResultsSelectorWindow::getPassword() { + return passwordLineEdit->text(); +} + +void TestRailResultsSelectorWindow::setProjectID(const int project) { + projectIDLineEdit->setText(QString::number(project)); +} + +int TestRailResultsSelectorWindow::getProjectID() { + return projectIDLineEdit->text().toInt(); +} + +void TestRailResultsSelectorWindow::setSuiteID(const int project) { + suiteIDLineEdit->setText(QString::number(project)); +} + +int TestRailResultsSelectorWindow::getSuiteID() { + return suiteIDLineEdit->text().toInt(); +} + +void TestRailResultsSelectorWindow::updateReleasesComboBoxData(QStringList data) { + releasesComboBox->insertItems(0, data); +} + +int TestRailResultsSelectorWindow::getReleaseID() { + return releasesComboBox->currentIndex(); +} \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.h b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.h new file mode 100644 index 0000000000..2c8f18034a --- /dev/null +++ b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.h @@ -0,0 +1,50 @@ +// +// TestRailResultsSelectorWindow.h +// +// Created by Nissim Hadar on 2 Aug 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#ifndef hifi_TestRailResultsSelectorWindow_h +#define hifi_TestRailResultsSelectorWindow_h + +#include "ui_TestRailResultsSelectorWindow.h" + +class TestRailResultsSelectorWindow : public QDialog, public Ui::TestRailResultsSelectorWindow { + Q_OBJECT + +public: + TestRailResultsSelectorWindow(QWidget* parent = Q_NULLPTR); + + void reset(); + + bool getUserCancelled(); + + void setURL(const QString& user); + QString getURL(); + + void setUser(const QString& user); + QString getUser(); + + QString getPassword(); + + void setProjectID(const int project); + int getProjectID(); + + void setSuiteID(const int project); + int getSuiteID(); + + bool userCancelled{ false }; + + void updateReleasesComboBoxData(QStringList data); + int getReleaseID(); + +private slots: + void on_acceptButton_clicked(); + void on_OKButton_clicked(); + void on_cancelButton_clicked(); +}; + +#endif \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.ui new file mode 100644 index 0000000000..c7664518b0 --- /dev/null +++ b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.ui @@ -0,0 +1,280 @@ + + + TestRailResultsSelectorWindow + + + + 0 + 0 + 489 + 474 + + + + TestRail Test Case Selector Window + + + + + 30 + 850 + 500 + 28 + + + + + 12 + + + + similarity + + + + + + 70 + 125 + 121 + 20 + + + + + 10 + + + + TestRail Password + + + + + + 70 + 25 + 121 + 20 + + + + + 10 + + + + TestRail URL + + + + + false + + + + 120 + 420 + 93 + 28 + + + + OK + + + + + + 280 + 420 + 93 + 28 + + + + Cancel + + + + + + 200 + 120 + 231 + 24 + + + + QLineEdit::Password + + + + + + 70 + 75 + 121 + 20 + + + + + 10 + + + + TestRail User + + + + + + 200 + 170 + 231 + 24 + + + + QLineEdit::Normal + + + + + + 70 + 175 + 121 + 20 + + + + + 10 + + + + TestRail Project ID + + + + + + 200 + 270 + 231 + 28 + + + + Accept + + + + + false + + + + 270 + 350 + 161 + 22 + + + + + + true + + + + 80 + 350 + 181 + 20 + + + + + 10 + + + + TestRail Added for release + + + + + + 200 + 20 + 231 + 24 + + + + QLineEdit::Normal + + + + + + 200 + 70 + 231 + 24 + + + + QLineEdit::Normal + + + + + + 200 + 215 + 231 + 24 + + + + QLineEdit::Normal + + + + + + 70 + 220 + 121 + 20 + + + + + 10 + + + + TestRail Suite ID + + + + + + urlLineEdit + userLineEdit + passwordLineEdit + projectIDLineEdit + suiteIDLineEdit + acceptButton + releasesComboBox + OKButton + cancelButton + + + + From 5a2506e94f6838b42a5394c1c0ea39326c6d8ca1 Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Fri, 3 Aug 2018 17:10:41 +0300 Subject: [PATCH 116/332] FB16831 qml-related warnings in log fix is based on exposing C++ objects to QML before root object is created (as root object might already require C++ objects) --- interface/src/Application.cpp | 9 +++++++++ interface/src/ui/overlays/Web3DOverlay.cpp | 8 +++++--- interface/src/ui/overlays/Web3DOverlay.h | 2 +- libraries/ui/src/ui/OffscreenQmlSurfaceCache.cpp | 9 +++++++++ libraries/ui/src/ui/OffscreenQmlSurfaceCache.h | 3 +++ 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ba7c15ad33..d9a84981a7 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2926,6 +2926,15 @@ void Application::initializeUi() { // Pre-create a couple of Web3D overlays to speed up tablet UI auto offscreenSurfaceCache = DependencyManager::get(); + offscreenSurfaceCache->setOnRootContextCreated([&](const QString& rootObject, QQmlContext* surfaceContext) { + if (rootObject == TabletScriptingInterface::QML) { + // in Qt 5.10.0 there is already an "Audio" object in the QML context + // though I failed to find it (from QtMultimedia??). So.. let it be "AudioScriptingInterface" + surfaceContext->setContextProperty("AudioScriptingInterface", DependencyManager::get().data()); + surfaceContext->setContextProperty("Account", AccountServicesScriptingInterface::getInstance()); // DEPRECATED - TO BE REMOVED + } + }); + offscreenSurfaceCache->reserve(TabletScriptingInterface::QML, 1); offscreenSurfaceCache->reserve(Web3DOverlay::QML, 2); diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index 12100e026c..c16b4c016d 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -184,9 +184,11 @@ void Web3DOverlay::buildWebSurface() { _webSurface->getRootItem()->setProperty("scriptURL", _scriptURL); } else { _webSurface = QSharedPointer(new OffscreenQmlSurface(), qmlSurfaceDeleter); + connect(_webSurface.data(), &hifi::qml::OffscreenSurface::rootContextCreated, [this](QQmlContext* surfaceContext) { + setupQmlSurface(_url == TabletScriptingInterface::QML); + }); _webSurface->load(_url); _cachedWebSurface = false; - setupQmlSurface(); } _webSurface->getSurfaceContext()->setContextProperty("globalPosition", vec3toVariant(getWorldPosition())); onResizeWebSurface(); @@ -214,7 +216,7 @@ bool Web3DOverlay::isWebContent() const { return false; } -void Web3DOverlay::setupQmlSurface() { +void Web3DOverlay::setupQmlSurface(bool isTablet) { _webSurface->getSurfaceContext()->setContextProperty("Users", DependencyManager::get().data()); _webSurface->getSurfaceContext()->setContextProperty("HMD", DependencyManager::get().data()); _webSurface->getSurfaceContext()->setContextProperty("UserActivityLogger", DependencyManager::get().data()); @@ -225,7 +227,7 @@ void Web3DOverlay::setupQmlSurface() { _webSurface->getSurfaceContext()->setContextProperty("Entities", DependencyManager::get().data()); _webSurface->getSurfaceContext()->setContextProperty("Snapshot", DependencyManager::get().data()); - if (_webSurface->getRootItem() && _webSurface->getRootItem()->objectName() == "tabletRoot") { + if (isTablet) { auto tabletScriptingInterface = DependencyManager::get(); auto flags = tabletScriptingInterface->getFlags(); diff --git a/interface/src/ui/overlays/Web3DOverlay.h b/interface/src/ui/overlays/Web3DOverlay.h index 233f4e0d21..4137ed8680 100644 --- a/interface/src/ui/overlays/Web3DOverlay.h +++ b/interface/src/ui/overlays/Web3DOverlay.h @@ -79,7 +79,7 @@ protected: Transform evalRenderTransform() override; private: - void setupQmlSurface(); + void setupQmlSurface(bool isTablet); void rebuildWebSurface(); bool isWebContent() const; diff --git a/libraries/ui/src/ui/OffscreenQmlSurfaceCache.cpp b/libraries/ui/src/ui/OffscreenQmlSurfaceCache.cpp index 51fe11fdc7..aad90d0806 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurfaceCache.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurfaceCache.cpp @@ -46,8 +46,17 @@ void OffscreenQmlSurfaceCache::release(const QString& rootSource, const QSharedP QSharedPointer OffscreenQmlSurfaceCache::buildSurface(const QString& rootSource) { auto surface = QSharedPointer(new OffscreenQmlSurface()); + + QObject::connect(surface.data(), &hifi::qml::OffscreenSurface::rootContextCreated, [this, rootSource](QQmlContext* surfaceContext) { + if (_onRootContextCreated) + _onRootContextCreated(rootSource, surfaceContext); + }); + surface->load(rootSource); surface->resize(QSize(100, 100)); return surface; } +void OffscreenQmlSurfaceCache::setOnRootContextCreated(const std::function& onRootContextCreated) { + _onRootContextCreated = onRootContextCreated; +} \ No newline at end of file diff --git a/libraries/ui/src/ui/OffscreenQmlSurfaceCache.h b/libraries/ui/src/ui/OffscreenQmlSurfaceCache.h index 02382a791b..6dc8b79ca3 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurfaceCache.h +++ b/libraries/ui/src/ui/OffscreenQmlSurfaceCache.h @@ -13,6 +13,7 @@ #include +class QQmlContext; class OffscreenQmlSurface; class OffscreenQmlSurfaceCache : public Dependency { @@ -25,10 +26,12 @@ public: QSharedPointer acquire(const QString& rootSource); void release(const QString& rootSource, const QSharedPointer& surface); void reserve(const QString& rootSource, int count = 1); + void setOnRootContextCreated(const std::function & onRootContextCreated); private: QSharedPointer buildSurface(const QString& rootSource); QHash>> _cache; + std::function _onRootContextCreated; }; #endif From f2a01021f31210b70f8cd077b6cbd5f4db324268 Mon Sep 17 00:00:00 2001 From: Olivier Prat Date: Fri, 3 Aug 2018 18:01:22 +0200 Subject: [PATCH 117/332] Improvement of debug shadow script --- interface/src/SecondaryCamera.cpp | 4 +- .../render-utils/src/RenderDeferredTask.cpp | 12 +- .../render-utils/src/RenderDeferredTask.h | 3 +- .../render-utils/src/RenderShadowTask.cpp | 6 + libraries/render-utils/src/RenderShadowTask.h | 5 +- libraries/render-utils/src/RenderViewTask.cpp | 12 +- .../developer/utilities/render/debugShadow.js | 79 ++++++- scripts/developer/utilities/render/shadow.qml | 219 +++++++++--------- 8 files changed, 214 insertions(+), 126 deletions(-) diff --git a/interface/src/SecondaryCamera.cpp b/interface/src/SecondaryCamera.cpp index 559cb140b5..f99a373259 100644 --- a/interface/src/SecondaryCamera.cpp +++ b/interface/src/SecondaryCamera.cpp @@ -205,7 +205,9 @@ void SecondaryCameraRenderTask::build(JobModel& task, const render::Varying& inp const auto items = task.addJob("FetchCullSort", cullFunctor, render::ItemKey::TAG_BITS_1, render::ItemKey::TAG_BITS_1); assert(items.canCast()); if (isDeferred) { - task.addJob("RenderDeferredTask", items, false); + const render::Varying cascadeSceneBBoxes; + const auto renderInput = RenderDeferredTask::Input(items, cascadeSceneBBoxes).asVarying(); + task.addJob("RenderDeferredTask", renderInput, false); } else { task.addJob("Forward", items); } diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 57522f37d8..8c3afc74f7 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -83,7 +83,9 @@ const render::Varying RenderDeferredTask::addSelectItemJobs(JobModel& task, cons } void RenderDeferredTask::build(JobModel& task, const render::Varying& input, render::Varying& output, bool renderShadows) { - const auto& items = input.get(); + const auto& inputs = input.get(); + const auto& items = inputs.get0(); + auto fadeEffect = DependencyManager::get(); // Prepare the ShapePipelines @@ -246,11 +248,17 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren const auto viewFrustum = frustums.getN(ExtractFrustums::VIEW_FRUSTUM); task.addJob("DrawViewFrustum", viewFrustum, glm::vec3(1.0f, 1.0f, 0.0f)); for (auto i = 0; i < ExtractFrustums::SHADOW_CASCADE_FRUSTUM_COUNT; i++) { - const auto shadowFrustum = frustums.getN(ExtractFrustums::SHADOW_CASCADE0_FRUSTUM+i); + const auto shadowFrustum = frustums.getN(ExtractFrustums::SHADOW_CASCADE0_FRUSTUM + i); float tint = 1.0f - i / float(ExtractFrustums::SHADOW_CASCADE_FRUSTUM_COUNT - 1); char jobName[64]; sprintf(jobName, "DrawShadowFrustum%d", i); task.addJob(jobName, shadowFrustum, glm::vec3(0.0f, tint, 1.0f)); + if (!inputs[1].isNull()) { + const auto& shadowCascadeSceneBBoxes = inputs.get1(); + const auto shadowBBox = shadowCascadeSceneBBoxes[ExtractFrustums::SHADOW_CASCADE0_FRUSTUM + i]; + sprintf(jobName, "DrawShadowBBox%d", i); + task.addJob(jobName, shadowBBox, glm::vec3(1.0f, tint, 0.0f)); + } } // Render.getConfig("RenderMainView.DrawSelectionBounds").enabled = true diff --git a/libraries/render-utils/src/RenderDeferredTask.h b/libraries/render-utils/src/RenderDeferredTask.h index 918fe606ee..161a14c943 100644 --- a/libraries/render-utils/src/RenderDeferredTask.h +++ b/libraries/render-utils/src/RenderDeferredTask.h @@ -16,6 +16,7 @@ #include #include "LightingModel.h" #include "LightClusters.h" +#include "RenderShadowTask.h" class DrawDeferredConfig : public render::Job::Config { Q_OBJECT @@ -135,7 +136,7 @@ signals: class RenderDeferredTask { public: - using Input = RenderFetchCullSortTask::Output; + using Input = render::VaryingSet2; using Config = RenderDeferredTaskConfig; using JobModel = render::Task::ModelI; diff --git a/libraries/render-utils/src/RenderShadowTask.cpp b/libraries/render-utils/src/RenderShadowTask.cpp index c9171d7b69..2e0dbe3c80 100644 --- a/libraries/render-utils/src/RenderShadowTask.cpp +++ b/libraries/render-utils/src/RenderShadowTask.cpp @@ -260,6 +260,8 @@ void RenderShadowTask::build(JobModel& task, const render::Varying& input, rende #endif }; + Output cascadeSceneBBoxes; + for (auto i = 0; i < SHADOW_CASCADE_MAX_COUNT; i++) { char jobName[64]; sprintf(jobName, "ShadowCascadeSetup%d", i); @@ -279,8 +281,12 @@ void RenderShadowTask::build(JobModel& task, const render::Varying& input, rende sprintf(jobName, "RenderShadowMap%d", i); task.addJob(jobName, culledShadowItemsAndBounds, shapePlumber, i); task.addJob("ShadowCascadeTeardown", shadowFilter); + + cascadeSceneBBoxes[i] = culledShadowItemsAndBounds.getN(1); } + output = render::Varying(cascadeSceneBBoxes); + task.addJob("ShadowTeardown", setupOutput); } diff --git a/libraries/render-utils/src/RenderShadowTask.h b/libraries/render-utils/src/RenderShadowTask.h index 1309124f92..77892305fb 100644 --- a/libraries/render-utils/src/RenderShadowTask.h +++ b/libraries/render-utils/src/RenderShadowTask.h @@ -46,8 +46,11 @@ signals: class RenderShadowTask { public: + + // There is one AABox per shadow cascade + using Output = render::VaryingArray; using Config = RenderShadowTaskConfig; - using JobModel = render::Task::Model; + using JobModel = render::Task::ModelO; RenderShadowTask() {} void build(JobModel& task, const render::Varying& inputs, render::Varying& outputs, render::CullFunctor cameraCullFunctor, uint8_t tagBits = 0x00, uint8_t tagMask = 0x00); diff --git a/libraries/render-utils/src/RenderViewTask.cpp b/libraries/render-utils/src/RenderViewTask.cpp index 6f6a87c222..2e03082ff4 100644 --- a/libraries/render-utils/src/RenderViewTask.cpp +++ b/libraries/render-utils/src/RenderViewTask.cpp @@ -17,17 +17,15 @@ void RenderViewTask::build(JobModel& task, const render::Varying& input, render::Varying& output, render::CullFunctor cullFunctor, bool isDeferred, uint8_t tagBits, uint8_t tagMask) { // auto items = input.get(); - // Warning : the cull functor passed to the shadow pass should only be testing for LOD culling. If frustum culling - // is performed, then casters not in the view frustum will be removed, which is not what we wish. - if (isDeferred) { - task.addJob("RenderShadowTask", cullFunctor, tagBits, tagMask); - } - const auto items = task.addJob("FetchCullSort", cullFunctor, tagBits, tagMask); assert(items.canCast()); if (isDeferred) { - task.addJob("RenderDeferredTask", items, true); + // Warning : the cull functor passed to the shadow pass should only be testing for LOD culling. If frustum culling + // is performed, then casters not in the view frustum will be removed, which is not what we wish. + const auto cascadeSceneBBoxes = task.addJob("RenderShadowTask", cullFunctor, tagBits, tagMask); + const auto renderInput = RenderDeferredTask::Input(items, cascadeSceneBBoxes).asVarying(); + task.addJob("RenderDeferredTask", renderInput, true); } else { task.addJob("Forward", items); } diff --git a/scripts/developer/utilities/render/debugShadow.js b/scripts/developer/utilities/render/debugShadow.js index 1f1d00e6b4..1ff59a316a 100644 --- a/scripts/developer/utilities/render/debugShadow.js +++ b/scripts/developer/utilities/render/debugShadow.js @@ -1,3 +1,5 @@ +"use strict"; + // // debugShadow.js // developer/utilities/render @@ -9,12 +11,71 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -// Set up the qml ui -var qml = Script.resolvePath('shadow.qml'); -var window = new OverlayWindow({ - title: 'Shadow Debug', - source: qml, - width: 250, - height: 300 -}); -window.closed.connect(function() { Script.stop(); }); \ No newline at end of file +(function() { + var TABLET_BUTTON_NAME = "Shadow"; + var QMLAPP_URL = Script.resolvePath("./shadow.qml"); + + + var onLuciScreen = false; + + function onClicked() { + if (onLuciScreen) { + tablet.gotoHomeScreen(); + } else { + tablet.loadQMLSource(QMLAPP_URL); + } + } + + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + var button = tablet.addButton({ + text: TABLET_BUTTON_NAME, + sortOrder: 1 + }); + + var hasEventBridge = false; + + function wireEventBridge(on) { + if (!tablet) { + print("Warning in wireEventBridge(): 'tablet' undefined!"); + return; + } + if (on) { + if (!hasEventBridge) { + tablet.fromQml.connect(fromQml); + hasEventBridge = true; + } + } else { + if (hasEventBridge) { + tablet.fromQml.disconnect(fromQml); + hasEventBridge = false; + } + } + } + + function onScreenChanged(type, url) { + if (url === QMLAPP_URL) { + onLuciScreen = true; + } else { + onLuciScreen = false; + } + + button.editProperties({isActive: onLuciScreen}); + wireEventBridge(onLuciScreen); + } + + function fromQml(message) { + } + + button.clicked.connect(onClicked); + tablet.screenChanged.connect(onScreenChanged); + + Script.scriptEnding.connect(function () { + if (onLuciScreen) { + tablet.gotoHomeScreen(); + } + button.clicked.disconnect(onClicked); + tablet.screenChanged.disconnect(onScreenChanged); + tablet.removeButton(button); + }); + +}()); \ No newline at end of file diff --git a/scripts/developer/utilities/render/shadow.qml b/scripts/developer/utilities/render/shadow.qml index 3400dcd847..464fe00eb9 100644 --- a/scripts/developer/utilities/render/shadow.qml +++ b/scripts/developer/utilities/render/shadow.qml @@ -8,21 +8,31 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or https://www.apache.org/licenses/LICENSE-2.0.html // -import QtQuick 2.5 +import QtQuick 2.7 import QtQuick.Controls 1.4 +import QtQuick.Layouts 1.3 + import "qrc:///qml/styles-uit" import "qrc:///qml/controls-uit" as HifiControls -import "configSlider" + +import "configSlider" + +Rectangle { + id: root; + + HifiConstants { id: hifi; } + color: hifi.colors.baseGray; -Column { - id: root - spacing: 8 property var viewConfig: Render.getConfig("RenderMainView.DrawViewFrustum"); property var shadowConfig : Render.getConfig("RenderMainView.ShadowSetup"); property var shadow0Config: Render.getConfig("RenderMainView.DrawShadowFrustum0"); property var shadow1Config: Render.getConfig("RenderMainView.DrawShadowFrustum1"); property var shadow2Config: Render.getConfig("RenderMainView.DrawShadowFrustum2"); property var shadow3Config: Render.getConfig("RenderMainView.DrawShadowFrustum3"); + property var shadowBBox0Config: Render.getConfig("RenderMainView.DrawShadowBBox0"); + property var shadowBBox1Config: Render.getConfig("RenderMainView.DrawShadowBBox1"); + property var shadowBBox2Config: Render.getConfig("RenderMainView.DrawShadowBBox2"); + property var shadowBBox3Config: Render.getConfig("RenderMainView.DrawShadowBBox3"); Component.onCompleted: { viewConfig.enabled = true; @@ -30,6 +40,10 @@ Column { shadow1Config.enabled = true; shadow2Config.enabled = true; shadow3Config.enabled = true; + shadowBBox0Config.enabled = true; + shadowBBox1Config.enabled = true; + shadowBBox2Config.enabled = true; + shadowBBox3Config.enabled = true; } Component.onDestruction: { viewConfig.enabled = false; @@ -41,108 +55,103 @@ Column { shadow1Config.isFrozen = false; shadow2Config.isFrozen = false; shadow3Config.isFrozen = false; - shadow0BoundConfig.isFrozen = false; - shadow1BoundConfig.isFrozen = false; - shadow2BoundConfig.isFrozen = false; - shadow3BoundConfig.isFrozen = false; + + shadowBBox0Config.enabled = false; + shadowBBox1Config.enabled = false; + shadowBBox2Config.enabled = false; + shadowBBox3Config.enabled = false; + shadowBBox0Config.isFrozen = false; + shadowBBox1Config.isFrozen = false; + shadowBBox2Config.isFrozen = false; + shadowBBox3Config.isFrozen = false; } - CheckBox { - text: "Freeze Frustums" - checked: false - onCheckedChanged: { - viewConfig.isFrozen = checked; - shadow0Config.isFrozen = checked; - shadow1Config.isFrozen = checked; - shadow2Config.isFrozen = checked; - shadow3Config.isFrozen = checked; - shadow0BoundConfig.isFrozen = checked; - shadow1BoundConfig.isFrozen = checked; - shadow2BoundConfig.isFrozen = checked; - shadow3BoundConfig.isFrozen = checked; - } - } - Row { - spacing: 8 - Label { - text: "View" - color: "yellow" - font.italic: true - } - Label { - text: "Shadow" - color: "blue" - font.italic: true - } - Label { - text: "Items" - color: "magenta" - font.italic: true - } - } - ConfigSlider { - label: qsTr("Cascade 0 constant bias") - integral: false - config: shadowConfig - property: "constantBias0" - max: 1.0 - min: 0.0 - } - ConfigSlider { - label: qsTr("Cascade 1 constant bias") - integral: false - config: shadowConfig - property: "constantBias1" - max: 1.0 - min: 0.0 - } - ConfigSlider { - label: qsTr("Cascade 2 constant bias") - integral: false - config: shadowConfig - property: "constantBias2" - max: 1.0 - min: 0.0 - } - ConfigSlider { - label: qsTr("Cascade 3 constant bias") - integral: false - config: shadowConfig - property: "constantBias3" - max: 1.0 - min: 0.0 - } + ColumnLayout { + spacing: 20 + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: hifi.dimensions.contentMargin.x - ConfigSlider { - label: qsTr("Cascade 0 slope bias") - integral: false - config: shadowConfig - property: "slopeBias0" - max: 1.0 - min: 0.0 - } - ConfigSlider { - label: qsTr("Cascade 1 slope bias") - integral: false - config: shadowConfig - property: "slopeBias1" - max: 1.0 - min: 0.0 - } - ConfigSlider { - label: qsTr("Cascade 2 slope bias") - integral: false - config: shadowConfig - property: "slopeBias2" - max: 1.0 - min: 0.0 - } - ConfigSlider { - label: qsTr("Cascade 3 slope bias") - integral: false - config: shadowConfig - property: "slopeBias3" - max: 1.0 - min: 0.0 + RowLayout { + spacing: 20 + Layout.fillWidth: true + + HifiControls.CheckBox { + boxSize: 20 + text: "Freeze" + checked: false + onCheckedChanged: { + viewConfig.isFrozen = checked; + shadow0Config.isFrozen = checked; + shadow1Config.isFrozen = checked; + shadow2Config.isFrozen = checked; + shadow3Config.isFrozen = checked; + + shadowBBox0Config.isFrozen = checked; + shadowBBox1Config.isFrozen = checked; + shadowBBox2Config.isFrozen = checked; + shadowBBox3Config.isFrozen = checked; + } + } + HifiControls.Label { + text: "View" + color: "yellow" + font.italic: true + } + HifiControls.Label { + text: "Shadow" + color: "blue" + font.italic: true + } + HifiControls.Label { + text: "AABB" + color: "red" + font.italic: true + } + } + Repeater { + model: [ + "0", "1", "2", "3" + ] + ColumnLayout { + spacing: 8 + anchors.left: parent.left + anchors.right: parent.right + + HifiControls.Separator { + anchors.left: parent.left + anchors.right: parent.right + } + HifiControls.CheckBox { + text: "Cascade "+modelData + boxSize: 20 + checked: Render.getConfig("RenderMainView.DrawShadowFrustum"+modelData) + onCheckedChanged: { + Render.getConfig("RenderMainView.DrawShadowFrustum"+modelData).enabled = checked; + Render.getConfig("RenderMainView.DrawShadowBBox"+modelData).enabled = checked; + } + } + ConfigSlider { + label: qsTr("Constant bias") + integral: false + config: shadowConfig + property: "constantBias"+modelData + max: 1.0 + min: 0.0 + height: 38 + width:250 + } + ConfigSlider { + label: qsTr("Slope bias") + integral: false + config: shadowConfig + property: "slopeBias"+modelData + max: 1.0 + min: 0.0 + height: 38 + width: 250 + } + } + } } } From da252a70c1ddb3180929e8169c5b9e75b0931083 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 3 Aug 2018 09:22:29 -0700 Subject: [PATCH 118/332] Same as https://github.com/highfidelity/hifi/pull/13747 --- interface/src/avatar/AvatarManager.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index fab512f787..dbafd06611 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -412,9 +412,6 @@ void AvatarManager::clearOtherAvatars() { while (avatarIterator != _avatarHash.end()) { auto avatar = std::static_pointer_cast(avatarIterator.value()); if (avatar != _myAvatar) { - if (avatar->isInScene()) { - avatar->removeFromScene(avatar, scene, transaction); - } handleRemovedAvatar(avatar); avatarIterator = _avatarHash.erase(avatarIterator); } else { From cb24046eea29e5a66a9413a14e0fa2a04b3d1794 Mon Sep 17 00:00:00 2001 From: Olivier Prat Date: Fri, 3 Aug 2018 18:51:31 +0200 Subject: [PATCH 119/332] Reorder some functions --- .../render-utils/src/RenderShadowTask.cpp | 162 +++++++++--------- 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/libraries/render-utils/src/RenderShadowTask.cpp b/libraries/render-utils/src/RenderShadowTask.cpp index 2e0dbe3c80..4d8b949063 100644 --- a/libraries/render-utils/src/RenderShadowTask.cpp +++ b/libraries/render-utils/src/RenderShadowTask.cpp @@ -33,6 +33,87 @@ using namespace render; extern void initZPassPipelines(ShapePlumber& plumber, gpu::StatePointer state); +void RenderShadowTask::configure(const Config& configuration) { + DependencyManager::get()->setShadowMapEnabled(configuration.enabled); + // This is a task, so must still propogate configure() to its Jobs + // Task::configure(configuration); +} + +void RenderShadowTask::build(JobModel& task, const render::Varying& input, render::Varying& output, render::CullFunctor cameraCullFunctor, uint8_t tagBits, uint8_t tagMask) { + ::CullFunctor shadowCullFunctor = [this](const RenderArgs* args, const AABox& bounds) { + return _cullFunctor(args, bounds); + }; + + // Prepare the ShapePipeline + ShapePlumberPointer shapePlumber = std::make_shared(); + { + auto state = std::make_shared(); + state->setCullMode(gpu::State::CULL_BACK); + state->setDepthTest(true, true, gpu::LESS_EQUAL); + + initZPassPipelines(*shapePlumber, state); + } + + const auto setupOutput = task.addJob("ShadowSetup"); + const auto queryResolution = setupOutput.getN(1); + // Fetch and cull the items from the scene + + static const auto shadowCasterReceiverFilter = ItemFilter::Builder::visibleWorldItems().withTypeShape().withOpaque().withoutLayered().withTagBits(tagBits, tagMask); + + const auto fetchInput = FetchSpatialTree::Inputs(shadowCasterReceiverFilter, queryResolution).asVarying(); + const auto shadowSelection = task.addJob("FetchShadowTree", fetchInput); + const auto selectionInputs = FetchSpatialSelection::Inputs(shadowSelection, shadowCasterReceiverFilter).asVarying(); + const auto shadowItems = task.addJob("FetchShadowSelection", selectionInputs); + + // Cull objects that are not visible in camera view. Hopefully the cull functor only performs LOD culling, not + // frustum culling or this will make shadow casters out of the camera frustum disappear. + const auto cameraFrustum = setupOutput.getN(2); + const auto applyFunctorInputs = ApplyCullFunctorOnItemBounds::Inputs(shadowItems, cameraFrustum).asVarying(); + const auto culledShadowItems = task.addJob("ShadowCullCamera", applyFunctorInputs, cameraCullFunctor); + + // Sort + const auto sortedPipelines = task.addJob("PipelineSortShadow", culledShadowItems); + const auto sortedShapes = task.addJob("DepthSortShadow", sortedPipelines, true); + + render::Varying cascadeFrustums[SHADOW_CASCADE_MAX_COUNT] = { + ViewFrustumPointer() +#if SHADOW_CASCADE_MAX_COUNT>1 + ,ViewFrustumPointer(), + ViewFrustumPointer(), + ViewFrustumPointer() +#endif + }; + + Output cascadeSceneBBoxes; + + for (auto i = 0; i < SHADOW_CASCADE_MAX_COUNT; i++) { + char jobName[64]; + sprintf(jobName, "ShadowCascadeSetup%d", i); + const auto cascadeSetupOutput = task.addJob(jobName, i, _cullFunctor, tagBits, tagMask); + const auto shadowFilter = cascadeSetupOutput.getN(0); + auto antiFrustum = render::Varying(ViewFrustumPointer()); + cascadeFrustums[i] = cascadeSetupOutput.getN(1); + if (i > 1) { + antiFrustum = cascadeFrustums[i - 2]; + } + + // CPU jobs: finer grained culling + const auto cullInputs = CullShadowBounds::Inputs(sortedShapes, shadowFilter, antiFrustum).asVarying(); + const auto culledShadowItemsAndBounds = task.addJob("CullShadowCascade", cullInputs, shadowCullFunctor); + + // GPU jobs: Render to shadow map + sprintf(jobName, "RenderShadowMap%d", i); + task.addJob(jobName, culledShadowItemsAndBounds, shapePlumber, i); + task.addJob("ShadowCascadeTeardown", shadowFilter); + + cascadeSceneBBoxes[i] = culledShadowItemsAndBounds.getN(1); + } + + output = render::Varying(cascadeSceneBBoxes); + + task.addJob("ShadowTeardown", setupOutput); +} + static void computeNearFar(const Triangle& triangle, const Plane shadowClipPlanes[4], float& near, float& far) { static const int MAX_TRIANGLE_COUNT = 16; Triangle clippedTriangles[MAX_TRIANGLE_COUNT]; @@ -215,87 +296,6 @@ void RenderShadowMap::run(const render::RenderContextPointer& renderContext, con }); } -void RenderShadowTask::build(JobModel& task, const render::Varying& input, render::Varying& output, render::CullFunctor cameraCullFunctor, uint8_t tagBits, uint8_t tagMask) { - ::CullFunctor shadowCullFunctor = [this](const RenderArgs* args, const AABox& bounds) { - return _cullFunctor(args, bounds); - }; - - // Prepare the ShapePipeline - ShapePlumberPointer shapePlumber = std::make_shared(); - { - auto state = std::make_shared(); - state->setCullMode(gpu::State::CULL_BACK); - state->setDepthTest(true, true, gpu::LESS_EQUAL); - - initZPassPipelines(*shapePlumber, state); - } - - const auto setupOutput = task.addJob("ShadowSetup"); - const auto queryResolution = setupOutput.getN(1); - // Fetch and cull the items from the scene - - static const auto shadowCasterReceiverFilter = ItemFilter::Builder::visibleWorldItems().withTypeShape().withOpaque().withoutLayered().withTagBits(tagBits, tagMask); - - const auto fetchInput = FetchSpatialTree::Inputs(shadowCasterReceiverFilter, queryResolution).asVarying(); - const auto shadowSelection = task.addJob("FetchShadowTree", fetchInput); - const auto selectionInputs = FetchSpatialSelection::Inputs(shadowSelection, shadowCasterReceiverFilter).asVarying(); - const auto shadowItems = task.addJob("FetchShadowSelection", selectionInputs); - - // Cull objects that are not visible in camera view. Hopefully the cull functor only performs LOD culling, not - // frustum culling or this will make shadow casters out of the camera frustum disappear. - const auto cameraFrustum = setupOutput.getN(2); - const auto applyFunctorInputs = ApplyCullFunctorOnItemBounds::Inputs(shadowItems, cameraFrustum).asVarying(); - const auto culledShadowItems = task.addJob("ShadowCullCamera", applyFunctorInputs, cameraCullFunctor); - - // Sort - const auto sortedPipelines = task.addJob("PipelineSortShadow", culledShadowItems); - const auto sortedShapes = task.addJob("DepthSortShadow", sortedPipelines, true); - - render::Varying cascadeFrustums[SHADOW_CASCADE_MAX_COUNT] = { - ViewFrustumPointer() -#if SHADOW_CASCADE_MAX_COUNT>1 - ,ViewFrustumPointer(), - ViewFrustumPointer(), - ViewFrustumPointer() -#endif - }; - - Output cascadeSceneBBoxes; - - for (auto i = 0; i < SHADOW_CASCADE_MAX_COUNT; i++) { - char jobName[64]; - sprintf(jobName, "ShadowCascadeSetup%d", i); - const auto cascadeSetupOutput = task.addJob(jobName, i, _cullFunctor, tagBits, tagMask); - const auto shadowFilter = cascadeSetupOutput.getN(0); - auto antiFrustum = render::Varying(ViewFrustumPointer()); - cascadeFrustums[i] = cascadeSetupOutput.getN(1); - if (i > 1) { - antiFrustum = cascadeFrustums[i - 2]; - } - - // CPU jobs: finer grained culling - const auto cullInputs = CullShadowBounds::Inputs(sortedShapes, shadowFilter, antiFrustum).asVarying(); - const auto culledShadowItemsAndBounds = task.addJob("CullShadowCascade", cullInputs, shadowCullFunctor); - - // GPU jobs: Render to shadow map - sprintf(jobName, "RenderShadowMap%d", i); - task.addJob(jobName, culledShadowItemsAndBounds, shapePlumber, i); - task.addJob("ShadowCascadeTeardown", shadowFilter); - - cascadeSceneBBoxes[i] = culledShadowItemsAndBounds.getN(1); - } - - output = render::Varying(cascadeSceneBBoxes); - - task.addJob("ShadowTeardown", setupOutput); -} - -void RenderShadowTask::configure(const Config& configuration) { - DependencyManager::get()->setShadowMapEnabled(configuration.enabled); - // This is a task, so must still propogate configure() to its Jobs -// Task::configure(configuration); -} - RenderShadowSetup::RenderShadowSetup() : _cameraFrustum{ std::make_shared() }, _coarseShadowFrustum{ std::make_shared() } { From 0565e0400cd450c37f0c3413d9421b62b2d0a5a3 Mon Sep 17 00:00:00 2001 From: David Back Date: Fri, 3 Aug 2018 11:08:56 -0700 Subject: [PATCH 120/332] fix edit log spam with -1 hand --- scripts/system/libraries/controllers.js | 48 +++++++++++++------------ 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/scripts/system/libraries/controllers.js b/scripts/system/libraries/controllers.js index d99fd0db48..cc20c196aa 100644 --- a/scripts/system/libraries/controllers.js +++ b/scripts/system/libraries/controllers.js @@ -38,30 +38,34 @@ getGrabPointSphereOffset = function(handController, ignoreSensorToWorldScale) { getControllerWorldLocation = function (handController, doOffset) { var orientation; var position; - var pose = Controller.getPoseValue(handController); - var valid = pose.valid; - var controllerJointIndex; - if (pose.valid) { - if (handController === Controller.Standard.RightHand) { - controllerJointIndex = MyAvatar.getJointIndex("_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND"); - } else { - controllerJointIndex = MyAvatar.getJointIndex("_CAMERA_RELATIVE_CONTROLLER_LEFTHAND"); - } - orientation = Quat.multiply(MyAvatar.orientation, MyAvatar.getAbsoluteJointRotationInObjectFrame(controllerJointIndex)); - position = Vec3.sum(MyAvatar.position, Vec3.multiplyQbyV(MyAvatar.orientation, MyAvatar.getAbsoluteJointTranslationInObjectFrame(controllerJointIndex))); + var valid = false; + + if (handController >= 0) { + var pose = Controller.getPoseValue(handController); + valid = pose.valid; + var controllerJointIndex; + if (pose.valid) { + if (handController === Controller.Standard.RightHand) { + controllerJointIndex = MyAvatar.getJointIndex("_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND"); + } else { + controllerJointIndex = MyAvatar.getJointIndex("_CAMERA_RELATIVE_CONTROLLER_LEFTHAND"); + } + orientation = Quat.multiply(MyAvatar.orientation, MyAvatar.getAbsoluteJointRotationInObjectFrame(controllerJointIndex)); + position = Vec3.sum(MyAvatar.position, Vec3.multiplyQbyV(MyAvatar.orientation, MyAvatar.getAbsoluteJointTranslationInObjectFrame(controllerJointIndex))); - // add to the real position so the grab-point is out in front of the hand, a bit - if (doOffset) { - var offset = getGrabPointSphereOffset(handController); - position = Vec3.sum(position, Vec3.multiplyQbyV(orientation, offset)); - } + // add to the real position so the grab-point is out in front of the hand, a bit + if (doOffset) { + var offset = getGrabPointSphereOffset(handController); + position = Vec3.sum(position, Vec3.multiplyQbyV(orientation, offset)); + } - } else if (!HMD.isHandControllerAvailable()) { - // NOTE: keep this offset in sync with scripts/system/controllers/handControllerPointer.js:493 - var VERTICAL_HEAD_LASER_OFFSET = 0.1 * MyAvatar.sensorToWorldScale; - position = Vec3.sum(Camera.position, Vec3.multiplyQbyV(Camera.orientation, {x: 0, y: VERTICAL_HEAD_LASER_OFFSET, z: 0})); - orientation = Quat.multiply(Camera.orientation, Quat.angleAxis(-90, { x: 1, y: 0, z: 0 })); - valid = true; + } else if (!HMD.isHandControllerAvailable()) { + // NOTE: keep this offset in sync with scripts/system/controllers/handControllerPointer.js:493 + var VERTICAL_HEAD_LASER_OFFSET = 0.1 * MyAvatar.sensorToWorldScale; + position = Vec3.sum(Camera.position, Vec3.multiplyQbyV(Camera.orientation, {x: 0, y: VERTICAL_HEAD_LASER_OFFSET, z: 0})); + orientation = Quat.multiply(Camera.orientation, Quat.angleAxis(-90, { x: 1, y: 0, z: 0 })); + valid = true; + } } return {position: position, From 7ef3b274906de4d6693d7ca0ccc15258b81606ec Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Fri, 3 Aug 2018 11:12:18 -0700 Subject: [PATCH 121/332] WIP - updating test results. --- tools/auto-tester/src/Test.cpp | 17 +- tools/auto-tester/src/TestRailInterface.cpp | 188 ++++++++++++++++-- tools/auto-tester/src/TestRailInterface.h | 12 +- .../src/ui/TestRailResultsSelectorWindow.cpp | 14 +- .../src/ui/TestRailResultsSelectorWindow.h | 2 +- .../src/ui/TestRailResultsSelectorWindow.ui | 8 +- .../src/ui/TestRailTestCasesSelectorWindow.ui | 2 +- 7 files changed, 203 insertions(+), 40 deletions(-) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 86e47be047..37d1f9ca0f 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -830,7 +830,7 @@ void Test::createTestRailTestCases() { QFileDialog::getExistingDirectory(nullptr, "Please select the tests root folder", parent, QFileDialog::ShowDirsOnly); // If user cancelled then restore previous selection and return - if (_testDirectory == "") { + if (_testDirectory.isNull()) { _testDirectory = previousSelection; return; } @@ -839,7 +839,7 @@ void Test::createTestRailTestCases() { nullptr, QFileDialog::ShowDirsOnly); // If user cancelled then return - if (outputDirectory == "") { + if (outputDirectory.isNull()) { return; } @@ -855,15 +855,26 @@ void Test::createTestRailTestCases() { void Test::createTestRailRun() { QString outputDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select a folder to store generated files in", nullptr, QFileDialog::ShowDirsOnly); + + if (outputDirectory.isNull()) { + return; + } + _testRailInterface.createTestRailRun(outputDirectory); } void Test::updateTestRailRunResult() { QString testResults = QFileDialog::getOpenFileName(nullptr, "Please select the zipped test results to update from", nullptr, - "Zipped Test Results (*.zip)"); + "Zipped Test Results (*.zip)"); + if (testResults.isNull()) { + return; + } QString tempDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select a folder to store temporary files in", nullptr, QFileDialog::ShowDirsOnly); + if (tempDirectory.isNull()) { + return; + } _testRailInterface.updateTestRailRunResults(testResults, tempDirectory); } diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index bedc8d2138..fbb6c81718 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -41,6 +41,17 @@ TestRailInterface::TestRailInterface() { _testRailRunSelectorWindow.setSuiteID(INTERFACE_SUITE_ID); ////_testRailRunSelectorWindow.setSuiteID(2); + + _testRailResultsSelectorWindow.setURL("https://highfidelity.testrail.net"); + ////_testRailResultsSelectorWindow.setURL("https://nissimhadar.testrail.io"); + _testRailResultsSelectorWindow.setUser("@highfidelity.io"); + ////_testRailResultsSelectorWindow.setUser("nissim.hadar@gmail.com"); + + _testRailResultsSelectorWindow.setProjectID(INTERFACE_PROJECT_ID); + ////_testRailResultsSelectorWindow.setProjectID(2); + + _testRailResultsSelectorWindow.setSuiteID(INTERFACE_SUITE_ID); + ////_testRailResultsSelectorWindow.setSuiteID(2); } QString TestRailInterface::getObject(const QString& path) { @@ -217,13 +228,13 @@ void TestRailInterface::createStackDotPyScript() { file.close(); } -void TestRailInterface::requestTestRailTestCasesDataFromUser() { +bool TestRailInterface::requestTestRailTestCasesDataFromUser() { // Make sure correct fields are enabled before calling _testRailTestCasesSelectorWindow.reset(); _testRailTestCasesSelectorWindow.exec(); if (_testRailTestCasesSelectorWindow.getUserCancelled()) { - return; + return false; } _url = _testRailTestCasesSelectorWindow.getURL() + "/"; @@ -232,6 +243,44 @@ void TestRailInterface::requestTestRailTestCasesDataFromUser() { ////_password = "tutKA76";//// _projectID = QString::number(_testRailTestCasesSelectorWindow.getProjectID()); _suiteID = QString::number(_testRailTestCasesSelectorWindow.getSuiteID()); + + return true; +} + +bool TestRailInterface::requestTestRailRunDataFromUser() { + _testRailRunSelectorWindow.reset(); + _testRailRunSelectorWindow.exec(); + + if (_testRailRunSelectorWindow.getUserCancelled()) { + return false; + } + + _url = _testRailRunSelectorWindow.getURL() + "/"; + _user = _testRailRunSelectorWindow.getUser(); + _password = _testRailRunSelectorWindow.getPassword(); + ////_password = "tutKA76";//// + _projectID = QString::number(_testRailRunSelectorWindow.getProjectID()); + _suiteID = QString::number(_testRailRunSelectorWindow.getSuiteID()); + + return true; +} + +bool TestRailInterface::requestTestRailResultsDataFromUser() { + _testRailResultsSelectorWindow.reset(); + _testRailResultsSelectorWindow.exec(); + + if (_testRailResultsSelectorWindow.getUserCancelled()) { + return false; + } + + _url = _testRailResultsSelectorWindow.getURL() + "/"; + _user = _testRailResultsSelectorWindow.getUser(); + _password = _testRailResultsSelectorWindow.getPassword(); + ////_password = "tutKA76";//// + _projectID = QString::number(_testRailResultsSelectorWindow.getProjectID()); + _suiteID = QString::number(_testRailResultsSelectorWindow.getSuiteID()); + + return true; } bool TestRailInterface::isAValidTestDirectory(const QString& directory) { @@ -489,7 +538,7 @@ void TestRailInterface::updateSectionsComboData(int exitCode, QProcess::ExitStat QFile file(filename); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), - "Could not open " + _outputDirectory + "/sections.txt"); + "Could not open " + filename); exit(-1); } @@ -523,6 +572,67 @@ void TestRailInterface::updateSectionsComboData(int exitCode, QProcess::ExitStat addRun(); } +void TestRailInterface::updateRunsComboData(int exitCode, QProcess::ExitStatus exitStatus) { + // Quit if user has previously cancelled + if (_testRailRunSelectorWindow.getUserCancelled()) { + return; + } + + // Check if process completed successfully + if (exitStatus != QProcess::NormalExit) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not get runs from TestRail"); + exit(-1); + } + + // Create map of sections from the file created by the process + _runNames.clear(); + + QString filename = _outputDirectory + "/runs.txt"; + if (!QFile::exists(filename)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not find runs.txt in " + _outputDirectory); + exit(-1); + } + + QFile file(filename); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not open " + filename); + exit(-1); + } + + QTextStream in(&file); + QString line = in.readLine(); + while (!line.isNull()) { + // The run name is all the words except for the last + // The id is the last word + QString section = line.left(line.lastIndexOf(" ")); + QString id = line.right(line.length() - line.lastIndexOf(" ") - 1); + + _runIDs.push_back(id.toInt()); + _runNames << section; + + line = in.readLine(); + } + + file.close(); + + // Update the combo + _testRailResultsSelectorWindow.updateRunsComboBoxData(_sectionNames); + + _testRailResultsSelectorWindow.exec(); + + if (_testRailResultsSelectorWindow.getUserCancelled()) { + return; + } + + // The test cases are now read from TestRail + // When this is complete, the Run can be created + int sfg = 456; + //addRun(); +} + void TestRailInterface::getReleasesFromTestRail() { QString filename = _outputDirectory + "/getReleases.py"; if (QFile::exists(filename)) { @@ -587,7 +697,10 @@ void TestRailInterface::createTestSuitePython(const QString& testDirectory, return; } - requestTestRailTestCasesDataFromUser(); + if (!requestTestRailTestCasesDataFromUser()) { + return; + } + createTestRailDotPyScript(); createStackDotPyScript(); @@ -854,22 +967,6 @@ void TestRailInterface::processTestPython(const QString& fullDirectory, stream << "case = client.send_post('add_case/' + str(section_id), data)\n"; } -void TestRailInterface::requestTestRailRunDataFromUser() { - _testRailRunSelectorWindow.reset(); - _testRailRunSelectorWindow.exec(); - - if (_testRailRunSelectorWindow.getUserCancelled()) { - return; - } - - _url = _testRailRunSelectorWindow.getURL() + "/"; - _user = _testRailRunSelectorWindow.getUser(); - _password = _testRailRunSelectorWindow.getPassword(); - ////_password = "tutKA76";//// - _projectID = QString::number(_testRailRunSelectorWindow.getProjectID()); - _suiteID = QString::number(_testRailRunSelectorWindow.getSuiteID()); -} - void TestRailInterface::getTestSectionsFromTestRail() { QString filename = _outputDirectory + "/getSections.py"; if (QFile::exists(filename)) { @@ -909,6 +1006,44 @@ void TestRailInterface::getTestSectionsFromTestRail() { process->start(_pythonCommand, parameters); } +void TestRailInterface::getRunFromTestRail() { + QString filename = _outputDirectory + "/getRun.py"; + if (QFile::exists(filename)) { + QFile::remove(filename); + } + QFile file(filename); + + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not create 'getRun.py'"); + exit(-1); + } + + QTextStream stream(&file); + + // Code to access TestRail + stream << "from testrail import *\n"; + stream << "client = APIClient('" << _url.toStdString().c_str() << "')\n"; + stream << "client.user = '" << _user << "'\n"; + stream << "client.password = '" << _password << "'\n\n"; + + // Print the list of runs + stream << "runs = client.send_get('get_runs/" + _projectID + "')\n\n"; + stream << "file = open('" + _outputDirectory + "/runs.txt', 'w')\n\n"; + stream << "for run in runs:\n"; + stream << "\tfile.write(run['name'] + ' ' + str(run['id']) + '\\n')\n\n"; + stream << "file.close()\n"; + + file.close(); + + QProcess* process = new QProcess(); + connect(process, static_cast(&QProcess::finished), this, + [=](int exitCode, QProcess::ExitStatus exitStatus) { updateRunsComboData(exitCode, exitStatus); }); + + QStringList parameters = QStringList() << filename; + process->start(_pythonCommand, parameters); +} + void TestRailInterface::createTestRailRun(const QString& outputDirectory) { _outputDirectory = outputDirectory; @@ -916,7 +1051,10 @@ void TestRailInterface::createTestRailRun(const QString& outputDirectory) { return; } - requestTestRailRunDataFromUser(); + if (!requestTestRailRunDataFromUser()) { + return; + } + createTestRailDotPyScript(); createStackDotPyScript(); @@ -924,8 +1062,14 @@ void TestRailInterface::createTestRailRun(const QString& outputDirectory) { getTestSectionsFromTestRail(); } - void TestRailInterface::updateTestRailRunResults(const QString& testResults, const QString& tempDirectory) { + if (requestTestRailResultsDataFromUser()) { + return; + } + + // TestRail will be updated after the process initiated by getTestRunFromTestRail has completed + getRunFromTestRail(); + // Extract test failures from zipped folder QString tempSubDirectory = tempDirectory + "/" + tempName; QDir dir = tempSubDirectory; diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index a4e18afad8..baf4ef5600 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -15,6 +15,7 @@ #include "ui/TestRailTestCasesSelectorWindow.h" #include "ui/TestRailRunSelectorWindow.h" +#include "ui/TestRailResultsSelectorWindow.h" #include #include @@ -55,12 +56,14 @@ public: void getReleasesFromTestRail(); void getTestSectionsFromTestRail(); + void getRunFromTestRail(); void createTestRailDotPyScript(); void createStackDotPyScript(); - void requestTestRailTestCasesDataFromUser(); - void requestTestRailRunDataFromUser(); + bool requestTestRailTestCasesDataFromUser(); + bool requestTestRailRunDataFromUser(); + bool requestTestRailResultsDataFromUser(); void createAddTestCasesPythonScript(const QString& testDirectory, const QString& userGitHub, @@ -77,6 +80,7 @@ public: void updateReleasesComboData(int exitCode, QProcess::ExitStatus exitStatus); void updateSectionsComboData(int exitCode, QProcess::ExitStatus exitStatus); + void updateRunsComboData(int exitCode, QProcess::ExitStatus exitStatus); void createTestRailRun(const QString& outputDirectory); void updateTestRailRunResults(const QString& testResults, const QString& tempDirectory); @@ -97,6 +101,7 @@ private: BusyWindow _busyWindow; TestRailTestCasesSelectorWindow _testRailTestCasesSelectorWindow; TestRailRunSelectorWindow _testRailRunSelectorWindow; + TestRailResultsSelectorWindow _testRailResultsSelectorWindow; QString _url; QString _user; @@ -117,6 +122,9 @@ private: QStringList _sectionNames; std::vector _sectionIDs; + QStringList _runNames; + std::vector _runIDs; + QString tempName{ "fgadhcUDHSFaidsfh3478JJJFSDFIUSOEIrf" }; }; diff --git a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.cpp index 65a136d13f..f9ed45cac8 100644 --- a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.cpp +++ b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.cpp @@ -28,8 +28,8 @@ void TestRailResultsSelectorWindow::reset() { OKButton->setDisabled(true); - releasesLabel->setDisabled(true); - releasesComboBox->setDisabled(true); + runsLabel->setDisabled(true); + runsComboBox->setDisabled(true); } void TestRailResultsSelectorWindow::on_acceptButton_clicked() { @@ -40,8 +40,8 @@ void TestRailResultsSelectorWindow::on_acceptButton_clicked() { OKButton->setDisabled(false); - releasesLabel->setDisabled(false); - releasesComboBox->setDisabled(false); + runsLabel->setDisabled(false); + runsComboBox->setDisabled(false); close(); } @@ -95,10 +95,10 @@ int TestRailResultsSelectorWindow::getSuiteID() { return suiteIDLineEdit->text().toInt(); } -void TestRailResultsSelectorWindow::updateReleasesComboBoxData(QStringList data) { - releasesComboBox->insertItems(0, data); +void TestRailResultsSelectorWindow::updateRunsComboBoxData(QStringList data) { + runsComboBox->insertItems(0, data); } int TestRailResultsSelectorWindow::getReleaseID() { - return releasesComboBox->currentIndex(); + return runsComboBox->currentIndex(); } \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.h b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.h index 2c8f18034a..abe4e7b9a5 100644 --- a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.h +++ b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.h @@ -38,7 +38,7 @@ public: bool userCancelled{ false }; - void updateReleasesComboBoxData(QStringList data); + void updateRunsComboBoxData(QStringList data); int getReleaseID(); private slots: diff --git a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.ui index c7664518b0..c15c86493f 100644 --- a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.ui +++ b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.ui @@ -171,7 +171,7 @@ Accept - + false @@ -184,7 +184,7 @@ - + true @@ -202,7 +202,7 @@ - TestRail Added for release + TestRail Run @@ -271,7 +271,7 @@ projectIDLineEdit suiteIDLineEdit acceptButton - releasesComboBox + runsComboBox OKButton cancelButton diff --git a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui index f904339ff5..41ff2943d5 100644 --- a/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui +++ b/tools/auto-tester/src/ui/TestRailTestCasesSelectorWindow.ui @@ -202,7 +202,7 @@ - TestRail Added for release + TestRail Added for Release From 8e9c1e5c0a80b8d64d0d1a8116526d00f555cca2 Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Fri, 3 Aug 2018 11:38:39 -0700 Subject: [PATCH 122/332] Fix out of date comment --- libraries/ui/src/ui/types/RequestFilters.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libraries/ui/src/ui/types/RequestFilters.cpp b/libraries/ui/src/ui/types/RequestFilters.cpp index 9d831a1758..7f192d6e52 100644 --- a/libraries/ui/src/ui/types/RequestFilters.cpp +++ b/libraries/ui/src/ui/types/RequestFilters.cpp @@ -52,10 +52,11 @@ namespace { return false; } + // We can potentially add whitelisting logic or development environment variables that + // will allow people to override this setting on a per-client basis here. QString targetFilePath = QFileInfo(requestUrl.toLocalFile()).canonicalFilePath(); - // If we get here, then it's a local file that isn't whitelisted and the - // developer mode environment variable is not enabled. Block access to the file + // If we get here, we've determined it's a local file and we have no reason not to block it qWarning() << "Blocking web access to local file path" << targetFilePath; info.block(true); return true; @@ -101,4 +102,4 @@ void RequestFilters::interceptFileType(QWebEngineUrlRequestInfo& info, QQmlConte info.setHttpHeader(CONTENT_HEADER.toLocal8Bit(), TYPE_VALUE.toLocal8Bit()); } } -#endif \ No newline at end of file +#endif From 0b40608650ae7b43cd185910ea00d61be44779e2 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 3 Aug 2018 10:23:22 -0700 Subject: [PATCH 123/332] Fix collision picks not working with MyAvatar --- libraries/physics/src/PhysicsEngine.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index 32708f6ead..5ba6501006 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -841,11 +841,12 @@ void PhysicsEngine::setShowBulletConstraintLimits(bool value) { } struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { - AllContactsCallback(MotionStateType desiredObjectType, const ShapeInfo& shapeInfo, const Transform& transform) : + AllContactsCallback(MotionStateType desiredObjectType, const ShapeInfo& shapeInfo, const Transform& transform, btCollisionObject* myAvatarCollisionObject) : desiredObjectType(desiredObjectType), collisionObject(), contacts(), - btCollisionWorld::ContactResultCallback() { + btCollisionWorld::ContactResultCallback(), + myAvatarCollisionObject(myAvatarCollisionObject) { const btCollisionShape* collisionShape = ObjectMotionState::getShapeManager()->getShape(shapeInfo); collisionObject.setCollisionShape(const_cast(collisionShape)); @@ -864,6 +865,7 @@ struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { MotionStateType desiredObjectType; btCollisionObject collisionObject; std::vector contacts; + btCollisionObject* myAvatarCollisionObject; bool needsCollision(btBroadphaseProxy* proxy) const override { return true; @@ -884,12 +886,17 @@ struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { otherPenetrationPoint = getWorldPoint(cp.m_localPointB, colObj1->getWorldTransform()); } + // TODO: Give MyAvatar a motion state so we don't have to do this + if (desiredObjectType == MOTIONSTATE_TYPE_AVATAR && myAvatarCollisionObject && myAvatarCollisionObject == otherBody) { + contacts.emplace_back(Physics::getSessionUUID(), bulletToGLM(penetrationPoint), bulletToGLM(otherPenetrationPoint)); + } + if (!(otherBody->getInternalType() & btCollisionObject::CO_RIGID_BODY)) { return 0; } const btRigidBody* collisionCandidate = static_cast(otherBody); - const btMotionState* motionStateCandidate = collisionCandidate->getMotionState(); + const btMotionState* motionStateCandidate = collisionCandidate->getMotionState(); const ObjectMotionState* candidate = dynamic_cast(motionStateCandidate); if (!candidate || candidate->getType() != desiredObjectType) { return 0; @@ -908,7 +915,13 @@ protected: }; const std::vector PhysicsEngine::getCollidingInRegion(MotionStateType desiredObjectType, const ShapeInfo& regionShapeInfo, const Transform& regionTransform) const { - auto contactCallback = AllContactsCallback(desiredObjectType, regionShapeInfo, regionTransform); + // TODO: Give MyAvatar a motion state so we don't have to do this + btCollisionObject* myAvatarCollisionObject = nullptr; + if (desiredObjectType == MOTIONSTATE_TYPE_AVATAR && _myAvatarController) { + myAvatarCollisionObject = _myAvatarController->getCollisionObject(); + } + + auto contactCallback = AllContactsCallback(desiredObjectType, regionShapeInfo, regionTransform, myAvatarCollisionObject); _dynamicsWorld->contactTest(&contactCallback.collisionObject, contactCallback); return contactCallback.contacts; From 76b182f03be6f792b3ad1d75614e3545240aec04 Mon Sep 17 00:00:00 2001 From: amantley Date: Fri, 3 Aug 2018 12:12:01 -0700 Subject: [PATCH 124/332] added the hmd strafe to the rig code --- libraries/animation/src/Rig.cpp | 70 ++++++++++++++++++++++++++------- libraries/animation/src/Rig.h | 6 +-- 2 files changed, 57 insertions(+), 19 deletions(-) diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 1706032344..433fd625e4 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -656,8 +656,6 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("moveForwardSpeed", _averageForwardSpeed.getAverage()); _animVars.set("moveBackwardSpeed", -_averageForwardSpeed.getAverage()); _animVars.set("moveLateralSpeed", fabsf(_averageLateralSpeed.getAverage())); - _animVars.set("lastSampledForwardSpeed", forwardSpeed); - _animVars.set("lastSampledLateralSpeed", lateralSpeed); const float MOVE_ENTER_SPEED_THRESHOLD = 0.2f; // m/sec const float MOVE_EXIT_SPEED_THRESHOLD = 0.07f; // m/sec @@ -734,12 +732,18 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos bool resetVelocityAverage = false; + //bool headEnabled = params.primaryControllerFlags[PrimaryControllerType_Head] & (uint8_t)ControllerFlags::Enabled; + //int headType = (int)(IKTarget::Type::HmdHead); + // headType = (int)_animVars.lookup("headType", headType); + qCDebug(animation) << "head type anim variable is : " << _headEnabled; + + if (_state == RigRole::Move) { glm::vec3 horizontalVel = localVel - glm::vec3(0.0f, localVel.y, 0.0f); if (glm::length(horizontalVel) > MOVE_ENTER_SPEED_THRESHOLD) { if (fabsf(forwardSpeed) > 0.5f * fabsf(lateralSpeed)) { if (forwardSpeed > 0.0f) { - if (lastForwardSpeed < 0.0f){ + if (lastForwardSpeed < 0.0f) { resetVelocityAverage = true; } // forward @@ -747,6 +751,8 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isMovingBackward", false); _animVars.set("isMovingRight", false); _animVars.set("isMovingLeft", false); + _animVars.set("isMovingRightHmd", false); + _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotMoving", false); } else { @@ -756,8 +762,13 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos // backward _animVars.set("isMovingBackward", true); _animVars.set("isMovingForward", false); - _animVars.set("isMovingRight", false); - _animVars.set("isMovingLeft", false); + if (!_headEnabled) { + _animVars.set("isMovingRight", false); + _animVars.set("isMovingLeft", false); + } else { + _animVars.set("isMovingRightHmd", false); + _animVars.set("isMovingLeftHmd", false); + } _animVars.set("isNotMoving", false); } } else { @@ -766,8 +777,17 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos resetVelocityAverage = true; } // right - _animVars.set("isMovingRight", true); - _animVars.set("isMovingLeft", false); + if (!_headEnabled) { + _animVars.set("isMovingRight", true); + _animVars.set("isMovingLeft", false); + _animVars.set("isMovingRightHmd", false); + _animVars.set("isMovingLeftHmd", false); + } else { + _animVars.set("isMovingRightHmd", true); + _animVars.set("isMovingLeftHmd", false); + _animVars.set("isMovingRight", false); + _animVars.set("isMovingLeft", false); + } _animVars.set("isMovingForward", false); _animVars.set("isMovingBackward", false); _animVars.set("isNotMoving", false); @@ -776,8 +796,17 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos resetVelocityAverage = true; } // left - _animVars.set("isMovingLeft", true); - _animVars.set("isMovingRight", false); + if (!_headEnabled) { + _animVars.set("isMovingRight", false); + _animVars.set("isMovingLeft", true); + _animVars.set("isMovingRightHmd", false); + _animVars.set("isMovingLeftHmd", false); + } else { + _animVars.set("isMovingRightHmd", false); + _animVars.set("isMovingLeftHmd", true); + _animVars.set("isMovingRight", false); + _animVars.set("isMovingLeft", false); + } _animVars.set("isMovingForward", false); _animVars.set("isMovingBackward", false); _animVars.set("isNotMoving", false); @@ -825,6 +854,8 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isMovingBackward", false); _animVars.set("isMovingRight", false); _animVars.set("isMovingLeft", false); + _animVars.set("isMovingRightHmd", false); + _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotMoving", true); _animVars.set("isFlying", false); _animVars.set("isNotFlying", true); @@ -835,7 +866,7 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isInAirRun", false); _animVars.set("isNotInAir", true); - } else if (_state == RigRole::Idle ) { + } else if (_state == RigRole::Idle) { // default anim vars to notMoving and notTurning _animVars.set("isMovingForward", false); _animVars.set("isMovingBackward", false); @@ -844,6 +875,8 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isNotMoving", true); _animVars.set("isTurningLeft", false); _animVars.set("isTurningRight", false); + _animVars.set("isMovingRightHmd", false); + _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotTurning", true); _animVars.set("isFlying", false); _animVars.set("isNotFlying", true); @@ -863,6 +896,8 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isNotMoving", true); _animVars.set("isTurningLeft", false); _animVars.set("isTurningRight", false); + _animVars.set("isMovingRightHmd", false); + _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotTurning", true); _animVars.set("isFlying", true); _animVars.set("isNotFlying", false); @@ -879,6 +914,8 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isMovingBackward", false); _animVars.set("isMovingLeft", false); _animVars.set("isMovingRight", false); + _animVars.set("isMovingRightHmd", false); + _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotMoving", true); _animVars.set("isTurningLeft", false); _animVars.set("isTurningRight", false); @@ -906,6 +943,8 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isMovingBackward", false); _animVars.set("isMovingLeft", false); _animVars.set("isMovingRight", false); + _animVars.set("isMovingRightHmd", false); + _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotMoving", true); _animVars.set("isTurningLeft", false); _animVars.set("isTurningRight", false); @@ -942,6 +981,7 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos } } _lastEnableInverseKinematics = _enableInverseKinematics; + } _lastForward = forward; @@ -1612,7 +1652,7 @@ void Rig::updateFromControllerParameters(const ControllerParameters& params, flo _animVars.set("isTalking", params.isTalking); _animVars.set("notIsTalking", !params.isTalking); - bool headEnabled = params.primaryControllerFlags[PrimaryControllerType_Head] & (uint8_t)ControllerFlags::Enabled; + _headEnabled = params.primaryControllerFlags[PrimaryControllerType_Head] & (uint8_t)ControllerFlags::Enabled; bool leftHandEnabled = params.primaryControllerFlags[PrimaryControllerType_LeftHand] & (uint8_t)ControllerFlags::Enabled; bool rightHandEnabled = params.primaryControllerFlags[PrimaryControllerType_RightHand] & (uint8_t)ControllerFlags::Enabled; bool hipsEnabled = params.primaryControllerFlags[PrimaryControllerType_Hips] & (uint8_t)ControllerFlags::Enabled; @@ -1624,18 +1664,18 @@ void Rig::updateFromControllerParameters(const ControllerParameters& params, flo bool rightArmEnabled = params.secondaryControllerFlags[SecondaryControllerType_RightArm] & (uint8_t)ControllerFlags::Enabled; glm::mat4 sensorToRigMatrix = glm::inverse(params.rigToSensorMatrix); - updateHead(headEnabled, hipsEnabled, params.primaryControllerPoses[PrimaryControllerType_Head]); + updateHead(_headEnabled, hipsEnabled, params.primaryControllerPoses[PrimaryControllerType_Head]); - updateHands(leftHandEnabled, rightHandEnabled, hipsEnabled, hipsEstimated, leftArmEnabled, rightArmEnabled, headEnabled, dt, + updateHands(leftHandEnabled, rightHandEnabled, hipsEnabled, hipsEstimated, leftArmEnabled, rightArmEnabled, _headEnabled, dt, params.primaryControllerPoses[PrimaryControllerType_LeftHand], params.primaryControllerPoses[PrimaryControllerType_RightHand], params.hipsShapeInfo, params.spineShapeInfo, params.spine1ShapeInfo, params.spine2ShapeInfo, params.rigToSensorMatrix, sensorToRigMatrix); - updateFeet(leftFootEnabled, rightFootEnabled, headEnabled, + updateFeet(leftFootEnabled, rightFootEnabled, _headEnabled, params.primaryControllerPoses[PrimaryControllerType_LeftFoot], params.primaryControllerPoses[PrimaryControllerType_RightFoot], params.rigToSensorMatrix, sensorToRigMatrix); - if (headEnabled) { + if (_headEnabled) { // Blend IK chains toward the joint limit centers, this should stablize head and hand ik. _animVars.set("solutionSource", (int)AnimInverseKinematics::SolutionSource::RelaxToLimitCenterPoses); } else { diff --git a/libraries/animation/src/Rig.h b/libraries/animation/src/Rig.h index a2aab2ce04..a29a78f1cc 100644 --- a/libraries/animation/src/Rig.h +++ b/libraries/animation/src/Rig.h @@ -302,10 +302,7 @@ protected: std::shared_ptr _animSkeleton; std::unique_ptr _animLoader; AnimVariantMap _animVars; - float _fwdAlpha { 0.0f }; - float _bwdAlpha { 0.0f }; - float _lateralAlpha { 0.0f }; - QString _animationName1 { "none" }; + enum class RigRole { Idle = 0, Turn, @@ -391,6 +388,7 @@ protected: bool _smoothPoleVectors { false }; int _rigId; + bool _headEnabled { false }; }; #endif /* defined(__hifi__Rig__) */ From 2270255d88fdaa4c23051e9b45f48471c862717d Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 4 Aug 2018 07:22:12 +1200 Subject: [PATCH 125/332] JSDoc review --- libraries/audio/src/SoundCacheScriptingInterface.h | 7 ++++--- libraries/script-engine/src/AudioScriptingInterface.h | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/libraries/audio/src/SoundCacheScriptingInterface.h b/libraries/audio/src/SoundCacheScriptingInterface.h index 9e660a2d04..c985e8c211 100644 --- a/libraries/audio/src/SoundCacheScriptingInterface.h +++ b/libraries/audio/src/SoundCacheScriptingInterface.h @@ -48,10 +48,11 @@ public: SoundCacheScriptingInterface(); /**jsdoc - * Loads the content of an audio file into an object, ready for playback by {@link Audio.playSound}. + * Loads the content of an audio file into a {@link SoundObject}, ready for playback by {@link Audio.playSound}. * @function SoundCache.getSound - * @param {string} url - The URL of the audio file to load. See {@link SoundObject} for supported formats. - * @returns {SoundObject} + * @param {string} url - The URL of the audio file to load — Web, ATP, or file. See {@link SoundObject} for supported + * formats. + * @returns {SoundObject} The sound ready for playback. */ Q_INVOKABLE SharedSoundPointer getSound(const QUrl& url); }; diff --git a/libraries/script-engine/src/AudioScriptingInterface.h b/libraries/script-engine/src/AudioScriptingInterface.h index 72b9541763..1220a9b769 100644 --- a/libraries/script-engine/src/AudioScriptingInterface.h +++ b/libraries/script-engine/src/AudioScriptingInterface.h @@ -98,7 +98,8 @@ signals: void mutedByMixer(); /**jsdoc - * Triggered when everyone is muted by the mixer. + * Triggered when the client is muted by the mixer because they're within a certain radius (50m) of someone who requested + * the mute through Developer > Audio > Mute Environment. * @function Audio.environmentMuted * @returns {Signal} */ From fdd6b7e07b5e9b073d8acf447ba2665ed9ac1dad Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 4 Aug 2018 07:29:57 +1200 Subject: [PATCH 126/332] Delete erroneous merge file --- libraries/audio/src/SoundCache.h.orig | 97 --------------------------- 1 file changed, 97 deletions(-) delete mode 100644 libraries/audio/src/SoundCache.h.orig diff --git a/libraries/audio/src/SoundCache.h.orig b/libraries/audio/src/SoundCache.h.orig deleted file mode 100644 index f1ff40ae42..0000000000 --- a/libraries/audio/src/SoundCache.h.orig +++ /dev/null @@ -1,97 +0,0 @@ -// -// SoundCache.h -// libraries/audio/src -// -// Created by Stephen Birarda on 2014-11-13. -// Copyright 2014 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#ifndef hifi_SoundCache_h -#define hifi_SoundCache_h - -#include - -#include "Sound.h" - -class SoundCache : public ResourceCache, public Dependency { - Q_OBJECT - SINGLETON_DEPENDENCY - -public: -<<<<<<< .merge_file_a15692 - - // Properties are copied over from ResourceCache (see ResourceCache.h for reason). - - /**jsdoc - * API to manage sound cache resources. - * @namespace SoundCache - * - * @hifi-interface - * @hifi-client-entity - * @hifi-server-entity - * @hifi-assignment-client - * - * @property {number} numTotal - Total number of total resources. Read-only. - * @property {number} numCached - Total number of cached resource. Read-only. - * @property {number} sizeTotal - Size in bytes of all resources. Read-only. - * @property {number} sizeCached - Size in bytes of all cached resources. Read-only. - */ - - - // Functions are copied over from ResourceCache (see ResourceCache.h for reason). - - /**jsdoc - * Get the list of all resource URLs. - * @function SoundCache.getResourceList - * @returns {string[]} - */ - - /**jsdoc - * @function SoundCache.dirty - * @returns {Signal} - */ - - /**jsdoc - * @function SoundCache.updateTotalSize - * @param {number} deltaSize - */ - - /**jsdoc - * Prefetches a resource. - * @function SoundCache.prefetch - * @param {string} url - URL of the resource to prefetch. - * @param {object} [extra=null] - * @returns {ResourceObject} - */ - - /**jsdoc - * Asynchronously loads a resource from the specified URL and returns it. - * @function SoundCache.getResource - * @param {string} url - URL of the resource to load. - * @param {string} [fallback=""] - Fallback URL if load of the desired URL fails. - * @param {} [extra=null] - * @returns {object} - */ - - - /**jsdoc - * Loads the content of an audio file into an object, ready for playback by {@link Audio.playSound}. - * @function SoundCache.getSound - * @param {string} url - The URL of the audio file to load. See {@link SoundObject} for supported formats. - * @returns {SoundObject} - */ -======= ->>>>>>> .merge_file_a28756 - Q_INVOKABLE SharedSoundPointer getSound(const QUrl& url); - -protected: - virtual QSharedPointer createResource(const QUrl& url, const QSharedPointer& fallback, - const void* extra) override; -private: - SoundCache(QObject* parent = NULL); -}; - -#endif // hifi_SoundCache_h From b7d5804edbceeb6bdd96f3915d8f69ab01fa49de Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 3 Aug 2018 12:55:11 -0700 Subject: [PATCH 127/332] Format if..else statements --- libraries/physics/src/PhysicsEngine.cpp | 3 +-- libraries/shared/src/RegisteredMetaTypes.h | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index 5ba6501006..d55fbf7e34 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -879,8 +879,7 @@ struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { otherBody = colObj1->m_collisionObject; penetrationPoint = getWorldPoint(cp.m_localPointB, colObj1->getWorldTransform()); otherPenetrationPoint = getWorldPoint(cp.m_localPointA, colObj0->getWorldTransform()); - } - else { + } else { otherBody = colObj0->m_collisionObject; penetrationPoint = getWorldPoint(cp.m_localPointA, colObj0->getWorldTransform()); otherPenetrationPoint = getWorldPoint(cp.m_localPointB, colObj1->getWorldTransform()); diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index 69fa5b2b5d..a96903100e 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -235,8 +235,7 @@ public: if (shapeType >= SHAPE_TYPE_COMPOUND && shapeType <= SHAPE_TYPE_STATIC_MESH && shape["modelURL"].isValid()) { QString newURL = shape["modelURL"].toString(); modelURL.setUrl(newURL); - } - else { + } else { modelURL.setUrl(""); } From dfa461b4f6ad9f9427fa0332270d8e153b222b0e Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Fri, 3 Aug 2018 12:57:54 -0700 Subject: [PATCH 128/332] Ready to update the run with the test results. --- tools/auto-tester/src/TestRailInterface.cpp | 28 +++++++++++++-------- tools/auto-tester/src/TestRailInterface.h | 3 ++- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index fbb6c81718..843af1d727 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -511,8 +511,10 @@ void TestRailInterface::addRun() { process->start(_pythonCommand, parameters); } } +void TestRailInterface::updateRunWithResults() { +} -void TestRailInterface::updateSectionsComboData(int exitCode, QProcess::ExitStatus exitStatus) { +void TestRailInterface::updateSectionsComboData(int exitCode, QProcess::ExitStatus exitStatus) {( // Quit if user has previously cancelled if (_testRailRunSelectorWindow.getUserCancelled()) { return; @@ -619,7 +621,7 @@ void TestRailInterface::updateRunsComboData(int exitCode, QProcess::ExitStatus e file.close(); // Update the combo - _testRailResultsSelectorWindow.updateRunsComboBoxData(_sectionNames); + _testRailResultsSelectorWindow.updateRunsComboBoxData(_runNames); _testRailResultsSelectorWindow.exec(); @@ -628,9 +630,8 @@ void TestRailInterface::updateRunsComboData(int exitCode, QProcess::ExitStatus e } // The test cases are now read from TestRail - // When this is complete, the Run can be created - int sfg = 456; - //addRun(); + // When this is complete, the Run can be updated + updateRunWithResults(); } void TestRailInterface::getReleasesFromTestRail() { @@ -1006,8 +1007,8 @@ void TestRailInterface::getTestSectionsFromTestRail() { process->start(_pythonCommand, parameters); } -void TestRailInterface::getRunFromTestRail() { - QString filename = _outputDirectory + "/getRun.py"; +void TestRailInterface::getRunsFromTestRail() { + QString filename = _outputDirectory + "/getRuns.py"; if (QFile::exists(filename)) { QFile::remove(filename); } @@ -1015,7 +1016,7 @@ void TestRailInterface::getRunFromTestRail() { if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), - "Could not create 'getRun.py'"); + "Could not create " + filename); exit(-1); } @@ -1041,6 +1042,7 @@ void TestRailInterface::getRunFromTestRail() { [=](int exitCode, QProcess::ExitStatus exitStatus) { updateRunsComboData(exitCode, exitStatus); }); QStringList parameters = QStringList() << filename; + process->start(_pythonCommand, parameters); } @@ -1063,12 +1065,18 @@ void TestRailInterface::createTestRailRun(const QString& outputDirectory) { } void TestRailInterface::updateTestRailRunResults(const QString& testResults, const QString& tempDirectory) { - if (requestTestRailResultsDataFromUser()) { + _outputDirectory = tempDirectory; + + if (!setPythonCommand()) { + return; + } + + if (!requestTestRailResultsDataFromUser()) { return; } // TestRail will be updated after the process initiated by getTestRunFromTestRail has completed - getRunFromTestRail(); + getRunsFromTestRail(); // Extract test failures from zipped folder QString tempSubDirectory = tempDirectory + "/" + tempName; diff --git a/tools/auto-tester/src/TestRailInterface.h b/tools/auto-tester/src/TestRailInterface.h index baf4ef5600..6f250dfbba 100644 --- a/tools/auto-tester/src/TestRailInterface.h +++ b/tools/auto-tester/src/TestRailInterface.h @@ -56,7 +56,7 @@ public: void getReleasesFromTestRail(); void getTestSectionsFromTestRail(); - void getRunFromTestRail(); + void getRunsFromTestRail(); void createTestRailDotPyScript(); void createStackDotPyScript(); @@ -86,6 +86,7 @@ public: void updateTestRailRunResults(const QString& testResults, const QString& tempDirectory); void addRun(); + void updateRunWithResults(); bool setPythonCommand(); From c58322387a9cb1bb976d85ea9e581917cfdf80b8 Mon Sep 17 00:00:00 2001 From: Alexia Mandeville Date: Fri, 3 Aug 2018 13:05:20 -0700 Subject: [PATCH 129/332] Increase stroke width on icon --- .../icons/tablet-icons/EmoteAppIcon.svg | 132 ++++++++++++++---- 1 file changed, 102 insertions(+), 30 deletions(-) diff --git a/interface/resources/icons/tablet-icons/EmoteAppIcon.svg b/interface/resources/icons/tablet-icons/EmoteAppIcon.svg index 382f61467f..4882337358 100644 --- a/interface/resources/icons/tablet-icons/EmoteAppIcon.svg +++ b/interface/resources/icons/tablet-icons/EmoteAppIcon.svg @@ -1,5 +1,5 @@ - + From 37f761beebc543c978a42d8cb7d5707d5b9f6eb5 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Fri, 3 Aug 2018 14:21:10 -0700 Subject: [PATCH 130/332] Builds Python script that creates list of failure names --- tools/auto-tester/src/TestRailInterface.cpp | 43 ++++++++++++++++++- .../src/ui/TestRailResultsSelectorWindow.cpp | 2 +- .../src/ui/TestRailResultsSelectorWindow.h | 2 +- .../src/ui/TestRailResultsSelectorWindow.ui | 8 ++-- 4 files changed, 47 insertions(+), 8 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 843af1d727..313d538ac5 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -447,7 +447,7 @@ void TestRailInterface::addRun() { if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), - "Could not create 'addRun.py'"); + "Could not create " + filename); exit(-1); } @@ -512,9 +512,48 @@ void TestRailInterface::addRun() { } } void TestRailInterface::updateRunWithResults() { + QString filename = _outputDirectory + "/updateRunWithResults.py"; + if (QFile::exists(filename)) { + QFile::remove(filename); + } + QFile file(filename); + + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), + "Could not create " + filename); + exit(-1); + } + + QTextStream stream(&file); + + // Code to access TestRail + stream << "from testrail import *\n"; + stream << "client = APIClient('" << _url.toStdString().c_str() << "')\n"; + stream << "client.user = '" << _user << "'\n"; + stream << "client.password = '" << _password << "'\n\n"; + + // It is assumed that all the tests that haven't failed have passed + // The failed tests are read, formatted and inserted into a set + // A failure named 'Failure_1--tests.content.entity.material.apply.avatars.00000' is formatted to 'content/entity/material/apply/avatars' + // This is the name of the test in TestRail + stream << "from os import listdir\n"; + + stream << "names = []"; + + stream << "for entry in listdir('" + _outputDirectory + "/" + tempName + "'):\n"; + stream << "\tparts = entry.split('--tests.')[1].split('.')\n"; + stream << "\tname = parts[0]\n"; + stream << "\tfor i in range(1, len(parts) - 1):\n"; + stream << "\t\tname = name + '/' + parts[i]\n"; + + stream << "\tnames.append(name)\n"; + + int runID = _runIDs[_testRailResultsSelectorWindow.getRunID()]; + + file.close(); } -void TestRailInterface::updateSectionsComboData(int exitCode, QProcess::ExitStatus exitStatus) {( +void TestRailInterface::updateSectionsComboData(int exitCode, QProcess::ExitStatus exitStatus) { // Quit if user has previously cancelled if (_testRailRunSelectorWindow.getUserCancelled()) { return; diff --git a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.cpp b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.cpp index f9ed45cac8..414e4fca79 100644 --- a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.cpp +++ b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.cpp @@ -99,6 +99,6 @@ void TestRailResultsSelectorWindow::updateRunsComboBoxData(QStringList data) { runsComboBox->insertItems(0, data); } -int TestRailResultsSelectorWindow::getReleaseID() { +int TestRailResultsSelectorWindow::getRunID() { return runsComboBox->currentIndex(); } \ No newline at end of file diff --git a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.h b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.h index abe4e7b9a5..51059d6127 100644 --- a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.h +++ b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.h @@ -39,7 +39,7 @@ public: bool userCancelled{ false }; void updateRunsComboBoxData(QStringList data); - int getReleaseID(); + int getRunID(); private slots: void on_acceptButton_clicked(); diff --git a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.ui b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.ui index c15c86493f..983b95ee79 100644 --- a/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.ui +++ b/tools/auto-tester/src/ui/TestRailResultsSelectorWindow.ui @@ -6,7 +6,7 @@ 0 0 - 489 + 533 474 @@ -177,9 +177,9 @@ - 270 + 160 350 - 161 + 271 22 @@ -192,7 +192,7 @@ 80 350 - 181 + 71 20 From 9e8619f7be770c6858d2dfdf259d85b2880a1b5c Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Fri, 3 Aug 2018 14:50:20 -0700 Subject: [PATCH 131/332] WIP - updating test results. --- tools/auto-tester/src/TestRailInterface.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 313d538ac5..9bc51e9498 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -538,17 +538,28 @@ void TestRailInterface::updateRunWithResults() { // This is the name of the test in TestRail stream << "from os import listdir\n"; - stream << "names = []"; + stream << "failed_tests = set()\n"; stream << "for entry in listdir('" + _outputDirectory + "/" + tempName + "'):\n"; stream << "\tparts = entry.split('--tests.')[1].split('.')\n"; - stream << "\tname = parts[0]\n"; + stream << "\tfailed_test = parts[0]\n"; stream << "\tfor i in range(1, len(parts) - 1):\n"; - stream << "\t\tname = name + '/' + parts[i]\n"; + stream << "\t\tfailed_test = failed_test + '/' + parts[i]\n"; - stream << "\tnames.append(name)\n"; + stream << "\tfailed_tests.add(failed_test)\n\n"; int runID = _runIDs[_testRailResultsSelectorWindow.getRunID()]; + stream << "tests = client.send_get('get_tests/" + QString::number(runID) + "')\n\n"; + stream << "for test in tests:\n"; + + // status_id's: 1 - Passed + // 2 - Blocked + // 3 - Untested + // 4 - Retest + // 5 - Failed + stream << "\tstatus_id = 1\n"; + stream << "\tif test['title'] in failed_tests:\n"; + stream << "\t\tstatus_id = 5\n"; file.close(); } From d6bcdcde3f2b6fdeced7994911debc81edd7b390 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Fri, 25 May 2018 12:02:36 -0700 Subject: [PATCH 132/332] Fix DISABLE_QML behavior --- interface/src/Application.cpp | 13 +++--- libraries/qml/src/qml/OffscreenSurface.cpp | 2 +- .../qml/src/qml/impl/RenderEventHandler.cpp | 3 ++ .../qml/src/qml/impl/RenderEventHandler.h | 4 ++ libraries/qml/src/qml/impl/SharedObject.cpp | 42 ++++++++++++++++++- libraries/qml/src/qml/impl/SharedObject.h | 16 ++++--- libraries/ui/src/OffscreenUi.cpp | 11 +++-- 7 files changed, 73 insertions(+), 18 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ba7c15ad33..b859dc4b66 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4574,11 +4574,14 @@ void Application::idle() { _lastTimeUpdated.start(); // If the offscreen Ui has something active that is NOT the root, then assume it has keyboard focus. - if (_keyboardDeviceHasFocus && offscreenUi && offscreenUi->getWindow()->activeFocusItem() != offscreenUi->getRootItem()) { - _keyboardMouseDevice->pluginFocusOutEvent(); - _keyboardDeviceHasFocus = false; - } else if (offscreenUi && offscreenUi->getWindow()->activeFocusItem() == offscreenUi->getRootItem()) { - _keyboardDeviceHasFocus = true; + if (offscreenUi && offscreenUi->getWindow()) { + auto activeFocusItem = offscreenUi->getWindow()->activeFocusItem(); + if (_keyboardDeviceHasFocus && activeFocusItem != offscreenUi->getRootItem()) { + _keyboardMouseDevice->pluginFocusOutEvent(); + _keyboardDeviceHasFocus = false; + } else if (activeFocusItem == offscreenUi->getRootItem()) { + _keyboardDeviceHasFocus = true; + } } checkChangeCursor(); diff --git a/libraries/qml/src/qml/OffscreenSurface.cpp b/libraries/qml/src/qml/OffscreenSurface.cpp index ea6f1ce324..3c39d72a28 100644 --- a/libraries/qml/src/qml/OffscreenSurface.cpp +++ b/libraries/qml/src/qml/OffscreenSurface.cpp @@ -99,7 +99,7 @@ QPointF OffscreenSurface::mapToVirtualScreen(const QPointF& originalPoint) { // bool OffscreenSurface::filterEnabled(QObject* originalDestination, QEvent* event) const { - if (!_sharedObject || _sharedObject->getWindow() == originalDestination) { + if (!_sharedObject || !_sharedObject->getWindow() || _sharedObject->getWindow() == originalDestination) { return false; } // Only intercept events while we're in an active state diff --git a/libraries/qml/src/qml/impl/RenderEventHandler.cpp b/libraries/qml/src/qml/impl/RenderEventHandler.cpp index 945a469611..39f3123d40 100644 --- a/libraries/qml/src/qml/impl/RenderEventHandler.cpp +++ b/libraries/qml/src/qml/impl/RenderEventHandler.cpp @@ -8,6 +8,8 @@ #include "RenderEventHandler.h" +#ifndef DISABLE_QML + #include #include @@ -165,3 +167,4 @@ void RenderEventHandler::onQuit() { moveToThread(qApp->thread()); QThread::currentThread()->quit(); } +#endif \ No newline at end of file diff --git a/libraries/qml/src/qml/impl/RenderEventHandler.h b/libraries/qml/src/qml/impl/RenderEventHandler.h index d1e079cc85..1e2f9945f3 100644 --- a/libraries/qml/src/qml/impl/RenderEventHandler.h +++ b/libraries/qml/src/qml/impl/RenderEventHandler.h @@ -7,6 +7,8 @@ // #pragma once +#ifndef DISABLE_QML + #include #include #include @@ -54,3 +56,5 @@ private: }; }}} // namespace hifi::qml::impl + +#endif \ No newline at end of file diff --git a/libraries/qml/src/qml/impl/SharedObject.cpp b/libraries/qml/src/qml/impl/SharedObject.cpp index 2fde057ca8..3b8d0bb743 100644 --- a/libraries/qml/src/qml/impl/SharedObject.cpp +++ b/libraries/qml/src/qml/impl/SharedObject.cpp @@ -55,6 +55,8 @@ QOpenGLContext* SharedObject::getSharedContext() { } SharedObject::SharedObject() { +#ifndef DISABLE_QML + // Create render control _renderControl = new RenderControl(); @@ -68,6 +70,7 @@ SharedObject::SharedObject() { _quickWindow->setColor(QColor(255, 255, 255, 0)); _quickWindow->setClearBeforeRendering(true); +#endif QObject::connect(qApp, &QCoreApplication::aboutToQuit, this, &SharedObject::onAboutToQuit); } @@ -78,7 +81,7 @@ SharedObject::~SharedObject() { destroy(); // _renderTimer is created with `this` as the parent, so need no explicit destruction - +#ifndef DISABLE_QML // Destroy the event hand if (_renderObject) { delete _renderObject; @@ -89,18 +92,20 @@ SharedObject::~SharedObject() { delete _renderControl; _renderControl = nullptr; } +#endif if (_rootItem) { delete _rootItem; _rootItem = nullptr; } +#ifndef DISABLE_QML if (_quickWindow) { _quickWindow->destroy(); delete _quickWindow; _quickWindow = nullptr; } - +#endif if (_qmlContext) { auto engine = _qmlContext->engine(); delete _qmlContext; @@ -114,7 +119,9 @@ void SharedObject::create(OffscreenSurface* surface) { qFatal("QML surface root item already set"); } +#ifndef DISABLE_QML QObject::connect(_quickWindow, &QQuickWindow::focusObjectChanged, surface, &OffscreenSurface::onFocusObjectChanged); +#endif // Create a QML engine. auto qmlEngine = acquireEngine(surface); @@ -125,10 +132,12 @@ void SharedObject::create(OffscreenSurface* surface) { surface->onRootContextCreated(_qmlContext); emit surface->rootContextCreated(_qmlContext); +#ifndef DISABLE_QML if (!qmlEngine->incubationController()) { qmlEngine->setIncubationController(_quickWindow->incubationController()); } _qmlContext->setContextProperty("offscreenWindow", QVariant::fromValue(_quickWindow)); +#endif } void SharedObject::setRootItem(QQuickItem* rootItem) { @@ -137,6 +146,7 @@ void SharedObject::setRootItem(QQuickItem* rootItem) { } _rootItem = rootItem; +#ifndef DISABLE_QML _rootItem->setSize(_quickWindow->size()); // Create the render thread @@ -150,6 +160,8 @@ void SharedObject::setRootItem(QQuickItem* rootItem) { QObject::connect(_renderControl, &QQuickRenderControl::renderRequested, this, &SharedObject::requestRender); QObject::connect(_renderControl, &QQuickRenderControl::sceneChanged, this, &SharedObject::requestRenderSync); +#endif + } void SharedObject::destroy() { @@ -163,6 +175,7 @@ void SharedObject::destroy() { } _paused = true; +#ifndef DISABLE_QML if (_renderTimer) { _renderTimer->stop(); QObject::disconnect(_renderTimer); @@ -171,9 +184,11 @@ void SharedObject::destroy() { if (_renderControl) { QObject::disconnect(_renderControl); } +#endif QObject::disconnect(qApp); +#ifndef DISABLE_QML { QMutexLocker lock(&_mutex); _quit = true; @@ -190,6 +205,7 @@ void SharedObject::destroy() { delete _renderThread; _renderThread = nullptr; } +#endif } @@ -240,6 +256,7 @@ void SharedObject::releaseEngine(QQmlEngine* engine) { } bool SharedObject::event(QEvent* e) { +#ifndef DISABLE_QML switch (static_cast(e->type())) { case OffscreenEvent::Initialize: onInitialize(); @@ -252,6 +269,7 @@ bool SharedObject::event(QEvent* e) { default: break; } +#endif return QObject::event(e); } @@ -261,22 +279,28 @@ void SharedObject::initializeRenderControl(QOpenGLContext* context) { qFatal("QML rendering context has no share context"); } +#ifndef DISABLE_QML if (!nsightActive()) { _renderControl->initialize(context); } +#endif } void SharedObject::releaseTextureAndFence() { +#ifndef DISABLE_QML QMutexLocker lock(&_mutex); // If the most recent texture was unused, we can directly recycle it if (_latestTextureAndFence.first) { getTextureCache().releaseTexture(_latestTextureAndFence); _latestTextureAndFence = TextureAndFence{ 0, 0 }; } +#endif } void SharedObject::setRenderTarget(uint32_t fbo, const QSize& size) { +#ifndef DISABLE_QML _quickWindow->setRenderTarget(fbo, size); +#endif } QSize SharedObject::getSize() const { @@ -295,6 +319,7 @@ void SharedObject::setSize(const QSize& size) { } qCDebug(qmlLogging) << "Offscreen UI resizing to " << size.width() << "x" << size.height(); +#ifndef DISABLE_QML _quickWindow->setGeometry(QRect(QPoint(), size)); _quickWindow->contentItem()->setSize(size); @@ -304,9 +329,11 @@ void SharedObject::setSize(const QSize& size) { } requestRenderSync(); +#endif } bool SharedObject::preRender() { +#ifndef DISABLE_QML QMutexLocker lock(&_mutex); if (_paused) { if (_syncRequested) { @@ -327,6 +354,7 @@ bool SharedObject::preRender() { } _syncRequested = false; } +#endif return true; } @@ -339,8 +367,10 @@ void SharedObject::shutdownRendering(OffscreenGLCanvas& canvas, const QSize& siz getTextureCache().releaseTexture(_latestTextureAndFence); } } +#ifndef DISABLE_QML _renderControl->invalidate(); canvas.doneCurrent(); +#endif wake(); } @@ -381,8 +411,10 @@ bool SharedObject::fetchTexture(TextureAndFence& textureAndFence) { } void SharedObject::setProxyWindow(QWindow* window) { +#ifndef DISABLE_QML _proxyWindow = window; _renderControl->setRenderWindow(window); +#endif } void SharedObject::wait() { @@ -394,6 +426,7 @@ void SharedObject::wake() { } void SharedObject::onInitialize() { +#ifndef DISABLE_QML // Associate root item with the window. _rootItem->setParentItem(_quickWindow->contentItem()); _renderControl->prepareThread(_renderThread); @@ -410,9 +443,11 @@ void SharedObject::onInitialize() { _renderTimer->setTimerType(Qt::PreciseTimer); _renderTimer->setInterval(MIN_TIMER_MS); // 5ms, Qt::PreciseTimer required _renderTimer->start(); +#endif } void SharedObject::onRender() { +#ifndef DISABLE_QML PROFILE_RANGE(render_qml, __FUNCTION__); if (_quit) { return; @@ -430,6 +465,7 @@ void SharedObject::onRender() { QCoreApplication::postEvent(_renderObject, new OffscreenEvent(OffscreenEvent::Render)); } _renderRequested = false; +#endif } void SharedObject::onTimer() { @@ -455,7 +491,9 @@ void SharedObject::onTimer() { } } +#ifndef DISABLE_QML QCoreApplication::postEvent(this, new OffscreenEvent(OffscreenEvent::Render)); +#endif } void SharedObject::onAboutToQuit() { diff --git a/libraries/qml/src/qml/impl/SharedObject.h b/libraries/qml/src/qml/impl/SharedObject.h index 76dde611fc..002679c44d 100644 --- a/libraries/qml/src/qml/impl/SharedObject.h +++ b/libraries/qml/src/qml/impl/SharedObject.h @@ -93,17 +93,21 @@ private: // Texture management TextureAndFence _latestTextureAndFence{ 0, 0 }; - RenderControl* _renderControl{ nullptr }; - RenderEventHandler* _renderObject{ nullptr }; - QQuickWindow* _quickWindow{ nullptr }; - QWindow* _proxyWindow{ nullptr }; QQuickItem* _item{ nullptr }; QQuickItem* _rootItem{ nullptr }; + QQuickWindow* _quickWindow{ nullptr }; QQmlContext* _qmlContext{ nullptr }; + mutable QMutex _mutex; + QWaitCondition _cond; + +#ifndef DISABLE_QML + QWindow* _proxyWindow{ nullptr }; + RenderControl* _renderControl{ nullptr }; + RenderEventHandler* _renderObject{ nullptr }; + QTimer* _renderTimer{ nullptr }; QThread* _renderThread{ nullptr }; - QWaitCondition _cond; - mutable QMutex _mutex; +#endif uint64_t _lastRenderTime{ 0 }; QSize _size{ 100, 100 }; diff --git a/libraries/ui/src/OffscreenUi.cpp b/libraries/ui/src/OffscreenUi.cpp index 25f0652496..a5ef1457db 100644 --- a/libraries/ui/src/OffscreenUi.cpp +++ b/libraries/ui/src/OffscreenUi.cpp @@ -96,10 +96,13 @@ static OffscreenFlags* offscreenFlags { nullptr }; // so I think it's OK for the time being. bool OffscreenUi::shouldSwallowShortcut(QEvent* event) { Q_ASSERT(event->type() == QEvent::ShortcutOverride); - QObject* focusObject = getWindow()->focusObject(); - if (focusObject != getWindow() && focusObject != getRootItem()) { - event->accept(); - return true; + auto window = getWindow(); + if (window) { + QObject* focusObject = getWindow()->focusObject(); + if (focusObject != getWindow() && focusObject != getRootItem()) { + event->accept(); + return true; + } } return false; } From 04e84f1d23617cd3313aa2d3108e1a942889f0fd Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Sat, 2 Jun 2018 11:02:05 -0700 Subject: [PATCH 133/332] Moving to cmake time shader compiling --- cmake/macros/AutoScribeShader.cmake | 232 +++++++++--- cmake/macros/LinkHifiLibraries.cmake | 6 +- interface/CMakeLists.txt | 1 + .../src/workload/GameWorkloadRenderer.cpp | 14 +- libraries/display-plugins/CMakeLists.txt | 2 +- .../display-plugins/OpenGLDisplayPlugin.cpp | 20 +- .../display-plugins/hmd/HmdDisplayPlugin.cpp | 8 +- .../stereo/InterleavedStereoDisplayPlugin.cpp | 4 +- libraries/entities-renderer/CMakeLists.txt | 4 +- .../RenderableParticleEffectEntityItem.cpp | 8 +- .../src/RenderablePolyLineEntityItem.cpp | 11 +- .../src/RenderablePolyVoxEntityItem.cpp | 18 +- .../src/RenderableShapeEntityItem.cpp | 13 +- libraries/gpu/CMakeLists.txt | 4 +- libraries/gpu/src/gpu/DrawNada.slf | 5 + libraries/gpu/src/gpu/Shader.cpp | 58 ++- libraries/gpu/src/gpu/Shader.h | 34 +- libraries/gpu/src/gpu/StandardShaderLib.cpp | 163 --------- libraries/gpu/src/gpu/StandardShaderLib.h | 84 ----- libraries/graphics/CMakeLists.txt | 4 +- libraries/graphics/src/graphics/Skybox.cpp | 7 +- libraries/procedural/CMakeLists.txt | 3 +- .../procedural/src/procedural/Procedural.cpp | 5 +- .../src/procedural/ProceduralSkybox.cpp | 9 +- libraries/render-utils/CMakeLists.txt | 5 +- .../src/AmbientOcclusionEffect.cpp | 26 +- libraries/render-utils/src/AnimDebugDraw.cpp | 10 +- .../render-utils/src/AntialiasingEffect.cpp | 19 +- libraries/render-utils/src/BloomEffect.cpp | 25 +- .../render-utils/src/DebugDeferredBuffer.cpp | 8 +- .../src/DeferredLightingEffect.cpp | 38 +- libraries/render-utils/src/DrawHaze.cpp | 9 +- libraries/render-utils/src/GeometryCache.cpp | 76 ++-- .../render-utils/src/HighlightEffect.cpp | 61 ++-- libraries/render-utils/src/LightClusters.cpp | 30 +- .../render-utils/src/RenderForwardTask.cpp | 3 - .../render-utils/src/RenderPipelines.cpp | 341 +++++------------- .../render-utils/src/StencilMaskPass.cpp | 14 +- .../render-utils/src/SubsurfaceScattering.cpp | 38 +- .../render-utils/src/SurfaceGeometryPass.cpp | 22 +- libraries/render-utils/src/TextRenderer3D.cpp | 4 +- .../render-utils/src/ToneMappingEffect.cpp | 8 +- .../render-utils/src/VelocityBufferPass.cpp | 11 +- libraries/render-utils/src/ZoneRenderer.cpp | 20 +- .../render-utils/src/skin_model_shadow.slf | 20 - .../src/skin_model_shadow_fade.slf | 30 -- libraries/render-utils/src/text/Font.cpp | 12 +- libraries/render/CMakeLists.txt | 3 +- libraries/render/src/render/BlurTask.cpp | 24 +- .../render/src/render/DrawSceneOctree.cpp | 24 +- libraries/render/src/render/DrawStatus.cpp | 15 +- libraries/render/src/render/DrawTask.cpp | 13 +- libraries/render/src/render/ResampleTask.cpp | 8 +- libraries/shaders/CMakeLists.txt | 175 +++++++++ libraries/shaders/Shaders.cpp.in | 11 + libraries/shaders/Shaders.h.in | 14 + libraries/shaders/shaders.qrc.in | 6 + .../shaders/src/shaders/ShadersCommon.cpp | 16 + tests/shaders/CMakeLists.txt | 9 + tests/shaders/src/ShaderTests.cpp | 100 +++++ tests/shaders/src/ShaderTests.h | 29 ++ 61 files changed, 883 insertions(+), 1111 deletions(-) create mode 100644 libraries/gpu/src/gpu/DrawNada.slf delete mode 100755 libraries/gpu/src/gpu/StandardShaderLib.cpp delete mode 100755 libraries/gpu/src/gpu/StandardShaderLib.h delete mode 100644 libraries/render-utils/src/skin_model_shadow.slf delete mode 100644 libraries/render-utils/src/skin_model_shadow_fade.slf create mode 100644 libraries/shaders/CMakeLists.txt create mode 100644 libraries/shaders/Shaders.cpp.in create mode 100644 libraries/shaders/Shaders.h.in create mode 100644 libraries/shaders/shaders.qrc.in create mode 100644 libraries/shaders/src/shaders/ShadersCommon.cpp create mode 100644 tests/shaders/CMakeLists.txt create mode 100644 tests/shaders/src/ShaderTests.cpp create mode 100644 tests/shaders/src/ShaderTests.h diff --git a/cmake/macros/AutoScribeShader.cmake b/cmake/macros/AutoScribeShader.cmake index c4cd2d186a..7d1b5395b9 100755 --- a/cmake/macros/AutoScribeShader.cmake +++ b/cmake/macros/AutoScribeShader.cmake @@ -8,6 +8,12 @@ # See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html # +function(global_append varName varValue) + get_property(LOCAL_LIST GLOBAL PROPERTY ${varName}) + list(APPEND LOCAL_LIST ${varValue}) + set_property(GLOBAL PROPERTY ${varName} ${LOCAL_LIST}) +endfunction() + function(AUTOSCRIBE_SHADER SHADER_FILE) # Grab include files foreach(includeFile ${ARGN}) @@ -45,11 +51,8 @@ function(AUTOSCRIBE_SHADER SHADER_FILE) elseif(${SHADER_EXT} STREQUAL .slg) set(SHADER_TYPE geom) endif() - set(SHADER_TARGET ${SHADER_TARGET}_${SHADER_TYPE}) - - set(SHADER_TARGET "${SHADERS_DIR}/${SHADER_TARGET}") - set(SHADER_TARGET_HEADER ${SHADER_TARGET}.h) - set(SHADER_TARGET_SOURCE ${SHADER_TARGET}.cpp) + file(MAKE_DIRECTORY "${SHADERS_DIR}/${SHADER_LIB}") + set(SHADER_TARGET "${SHADERS_DIR}/${SHADER_LIB}/${SHADER_TARGET}.${SHADER_TYPE}") set(SCRIBE_COMMAND scribe) # Target dependant Custom rule on the SHADER_FILE @@ -63,65 +66,200 @@ function(AUTOSCRIBE_SHADER SHADER_FILE) else () set(GLPROFILE PC_GL) endif() - set(SCRIBE_ARGS -c++ -T ${SHADER_TYPE} -D GLPROFILE ${GLPROFILE} ${SCRIBE_INCLUDES} -o ${SHADER_TARGET} ${SHADER_FILE}) + set(SCRIBE_ARGS -T ${SHADER_TYPE} -D GLPROFILE ${GLPROFILE} ${SCRIBE_INCLUDES} -o ${SHADER_TARGET} ${SHADER_FILE}) add_custom_command( - OUTPUT ${SHADER_TARGET_HEADER} ${SHADER_TARGET_SOURCE} + OUTPUT ${SHADER_TARGET} COMMAND ${SCRIBE_COMMAND} ${SCRIBE_ARGS} - DEPENDS ${SCRIBE_COMMAND} ${SHADER_INCLUDE_FILES} ${SHADER_FILE} + DEPENDS ${SHADER_FILE} ${SCRIBE_COMMAND} ${SHADER_INCLUDE_FILES} ) #output the generated file name - set(AUTOSCRIBE_SHADER_RETURN ${SHADER_TARGET_HEADER} ${SHADER_TARGET_SOURCE} PARENT_SCOPE) - - file(GLOB INCLUDE_FILES ${SHADER_TARGET_HEADER}) - + set(AUTOSCRIBE_SHADER_RETURN ${SHADER_TARGET} PARENT_SCOPE) endfunction() +macro(AUTOSCRIBE_APPEND_SHADER_SOURCES) + if (NOT("${ARGN}" STREQUAL "")) + set_property(GLOBAL PROPERTY ${TARGET_NAME}_SHADER_SOURCES "${ARGN}") + global_append(GLOBAL_SHADER_LIBS ${TARGET_NAME}) + global_append(GLOBAL_SHADER_SOURCES "${ARGN}") + endif() +endmacro() macro(AUTOSCRIBE_SHADER_LIB) + set(GLOBAL_SHADER_SOURCES "") set(HIFI_LIBRARIES_SHADER_INCLUDE_FILES "") + set(SRC_FOLDER "${CMAKE_SOURCE_DIR}/libraries/${TARGET_NAME}/src") + file(GLOB_RECURSE SHADER_INCLUDE_FILES ${SRC_FOLDER}/*.slh) + file(GLOB_RECURSE SHADER_VERTEX_FILES ${SRC_FOLDER}/*.slv) + file(GLOB_RECURSE SHADER_FRAGMENT_FILES ${SRC_FOLDER}/*.slf) + file(GLOB_RECURSE SHADER_GEOMETRY_FILES ${SRC_FOLDER}/*.slg) + file(GLOB_RECURSE SHADER_COMPUTE_FILES ${SRC_FOLDER}/*.slc) + + list(APPEND SHADER_SOURCE_FILES ${SHADER_VERTEX_FILES}) + list(APPEND SHADER_SOURCE_FILES ${SHADER_FRAGMENT_FILES}) + list(APPEND SHADER_SOURCE_FILES ${SHADER_GEOMETRY_FILES}) + list(APPEND SHADER_SOURCE_FILES ${SHADER_COMPUTE_FILES}) + + list(APPEND GLOBAL_SHADER_SOURCES ${SHADER_SOURCE_FILES}) + list(APPEND GLOBAL_SHADER_SOURCES ${SHADER_INCLUDE_FILES}) + AUTOSCRIBE_APPEND_SHADER_SOURCES(${GLOBAL_SHADER_SOURCES}) + file(RELATIVE_PATH RELATIVE_LIBRARY_DIR_PATH ${CMAKE_CURRENT_SOURCE_DIR} "${HIFI_LIBRARY_DIR}") foreach(HIFI_LIBRARY ${ARGN}) - #if (NOT TARGET ${HIFI_LIBRARY}) - # file(GLOB_RECURSE HIFI_LIBRARIES_SHADER_INCLUDE_FILES ${RELATIVE_LIBRARY_DIR_PATH}/${HIFI_LIBRARY}/src/) - #endif () - - #file(GLOB_RECURSE HIFI_LIBRARIES_SHADER_INCLUDE_FILES ${HIFI_LIBRARY_DIR}/${HIFI_LIBRARY}/src/*.slh) list(APPEND HIFI_LIBRARIES_SHADER_INCLUDE_FILES ${HIFI_LIBRARY_DIR}/${HIFI_LIBRARY}/src) endforeach() - #message("${TARGET_NAME} ${HIFI_LIBRARIES_SHADER_INCLUDE_FILES}") +endmacro() - file(GLOB_RECURSE SHADER_INCLUDE_FILES src/*.slh) - file(GLOB_RECURSE SHADER_SOURCE_FILES src/*.slv src/*.slf src/*.slg) +macro(AUTOSCRIBE_PROGRAM) + set(oneValueArgs NAME VERTEX FRAGMENT GEOMETRY COMPUTE) + cmake_parse_arguments(AUTOSCRIBE_PROGRAM "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if (NOT (DEFINED AUTOSCRIBE_PROGRAM_NAME)) + message(FATAL_ERROR "Programs must have a name and both a vertex and fragment shader") + endif() + if (NOT (DEFINED AUTOSCRIBE_PROGRAM_VERTEX)) + set(AUTOSCRIBE_PROGRAM_VERTEX ${AUTOSCRIBE_PROGRAM_NAME}) + endif() + if (NOT (DEFINED AUTOSCRIBE_PROGRAM_FRAGMENT)) + set(AUTOSCRIBE_PROGRAM_FRAGMENT ${AUTOSCRIBE_PROGRAM_NAME}) + endif() - #make the shader folder - set(SHADERS_DIR "${CMAKE_CURRENT_BINARY_DIR}/shaders/${TARGET_NAME}") - file(MAKE_DIRECTORY ${SHADERS_DIR}) + if (NOT (${AUTOSCRIBE_PROGRAM_VERTEX} MATCHES ".*::.*")) + set(AUTOSCRIBE_PROGRAM_VERTEX "vertex::${AUTOSCRIBE_PROGRAM_VERTEX}") + endif() + if (NOT (${AUTOSCRIBE_PROGRAM_FRAGMENT} MATCHES ".*::.*")) + set(AUTOSCRIBE_PROGRAM_FRAGMENT "fragment::${AUTOSCRIBE_PROGRAM_FRAGMENT}") + endif() - #message("${TARGET_NAME} ${SHADER_INCLUDE_FILES}") - set(AUTOSCRIBE_SHADER_SRC "") - foreach(SHADER_FILE ${SHADER_SOURCE_FILES}) - AUTOSCRIBE_SHADER(${SHADER_FILE} ${SHADER_INCLUDE_FILES}) + unset(AUTOSCRIBE_PROGRAM_MAP) + list(APPEND AUTOSCRIBE_PROGRAM_MAP AUTOSCRIBE_PROGRAM_VERTEX) + list(APPEND AUTOSCRIBE_PROGRAM_MAP ${AUTOSCRIBE_PROGRAM_VERTEX}) + list(APPEND AUTOSCRIBE_PROGRAM_MAP AUTOSCRIBE_PROGRAM_FRAGMENT) + list(APPEND AUTOSCRIBE_PROGRAM_MAP ${AUTOSCRIBE_PROGRAM_FRAGMENT}) + global_append(${TARGET_NAME}_PROGRAMS ${AUTOSCRIBE_PROGRAM_NAME}) + set_property(GLOBAL PROPERTY ${AUTOSCRIBE_PROGRAM_NAME} "${AUTOSCRIBE_PROGRAM_MAP}") +endmacro() + +macro(unpack_map) + set(MAP_VAR "${ARGN}") + list(LENGTH MAP_VAR MAP_SIZE) + MATH(EXPR MAP_ENTRY_RANGE "(${MAP_SIZE} / 2) - 1") + foreach(INDEX RANGE ${MAP_ENTRY_RANGE}) + MATH(EXPR INDEX_NAME "${INDEX} * 2") + MATH(EXPR INDEX_VAL "${INDEX_NAME} + 1") + list(GET MAP_VAR ${INDEX_NAME} VAR_NAME) + list(GET MAP_VAR ${INDEX_VAL} VAR_VAL) + set(${VAR_NAME} ${VAR_VAL}) + endforeach() +endmacro() + +macro(PROCESS_SHADER_FILE) + AUTOSCRIBE_SHADER(${SHADER} ${ALL_SHADER_HEADERS} ${HIFI_LIBRARIES_SHADER_INCLUDE_FILES}) file(TO_CMAKE_PATH "${AUTOSCRIBE_SHADER_RETURN}" AUTOSCRIBE_GENERATED_FILE) set_property(SOURCE ${AUTOSCRIBE_GENERATED_FILE} PROPERTY SKIP_AUTOMOC ON) - list(APPEND AUTOSCRIBE_SHADER_SRC ${AUTOSCRIBE_GENERATED_FILE}) - endforeach() - #message(${TARGET_NAME} ${AUTOSCRIBE_SHADER_SRC}) - - if (WIN32) - source_group("Shaders" FILES ${SHADER_INCLUDE_FILES}) - source_group("Shaders" FILES ${SHADER_SOURCE_FILES}) - source_group("Shaders\\generated" FILES ${AUTOSCRIBE_SHADER_SRC}) - endif() - - list(APPEND AUTOSCRIBE_SHADER_LIB_SRC ${SHADER_INCLUDE_FILES}) - list(APPEND AUTOSCRIBE_SHADER_LIB_SRC ${SHADER_SOURCE_FILES}) - list(APPEND AUTOSCRIBE_SHADER_LIB_SRC ${AUTOSCRIBE_SHADER_SRC}) - - # Link library shaders, if they exist - include_directories("${SHADERS_DIR}") - - # Add search directory to find gpu/Shader.h - include_directories("${HIFI_LIBRARY_DIR}/gpu/src") - + source_group("Compiled/${SHADER_LIB}" FILES ${AUTOSCRIBE_GENERATED_FILE}) + list(APPEND COMPILED_SHADERS ${AUTOSCRIBE_GENERATED_FILE}) + get_filename_component(ENUM_NAME ${SHADER} NAME_WE) + string(CONCAT SHADER_ENUMS "${SHADER_ENUMS}" "${ENUM_NAME} = ${SHADER_COUNT},\n") + MATH(EXPR SHADER_COUNT "${SHADER_COUNT}+1") +endmacro() + +macro(AUTOSCRIBE_SHADER_FINISH) + get_property(GLOBAL_SHADER_LIBS GLOBAL PROPERTY GLOBAL_SHADER_LIBS) + list(REMOVE_DUPLICATES GLOBAL_SHADER_LIBS) + set(SHADER_COUNT 0) + set(PROGRAM_COUNT 0) + set(SHADERS_DIR "${CMAKE_CURRENT_BINARY_DIR}/shaders") + set(SHADER_ENUMS "") + file(MAKE_DIRECTORY ${SHADERS_DIR}) + + unset(COMPILED_SHADERS) + foreach(SHADER_LIB ${GLOBAL_SHADER_LIBS}) + get_property(LIB_SHADER_SOURCES GLOBAL PROPERTY ${SHADER_LIB}_SHADER_SOURCES) + get_property(LIB_PROGRAMS GLOBAL PROPERTY ${SHADER_LIB}_PROGRAMS) + list(REMOVE_DUPLICATES LIB_SHADER_SOURCES) + string(REGEX REPLACE "[-]" "_" SHADER_NAMESPACE ${SHADER_LIB}) + list(APPEND HIFI_LIBRARIES_SHADER_INCLUDE_FILES "${CMAKE_SOURCE_DIR}/libraries/${SHADER_LIB}/src") + + unset(VERTEX_SHADERS) + unset(FRAGMENT_SHADERS) + unset(SHADER_HEADERS) + + foreach(SHADER_FILE ${LIB_SHADER_SOURCES}) + if (SHADER_FILE MATCHES ".*\\.slv") + list(APPEND VERTEX_SHADERS ${SHADER_FILE}) + elseif (SHADER_FILE MATCHES ".*\\.slf") + list(APPEND FRAGMENT_SHADERS ${SHADER_FILE}) + elseif (SHADER_FILE MATCHES ".*\\.slh") + list(APPEND SHADER_HEADERS ${SHADER_FILE}) + endif() + endforeach() + + if (DEFINED SHADER_HEADERS) + source_group("Shaders/${SHADER_LIB}/Headers" FILES ${SHADER_HEADERS}) + list(APPEND ALL_SHADER_HEADERS ${SHADER_HEADERS}) + endif() + + string(CONCAT SHADER_ENUMS "${SHADER_ENUMS}" "namespace ${SHADER_NAMESPACE} {\n") + if (DEFINED VERTEX_SHADERS) + list(REMOVE_DUPLICATES VERTEX_SHADERS) + source_group("Shaders/${SHADER_LIB}/Vertex" FILES ${VERTEX_SHADERS}) + string(CONCAT SHADER_ENUMS "${SHADER_ENUMS}" "namespace vertex { enum {\n") + foreach(SHADER ${VERTEX_SHADERS}) + process_shader_file() + endforeach() + string(CONCAT SHADER_ENUMS "${SHADER_ENUMS}" "}; } // vertex \n") + endif() + + if (DEFINED FRAGMENT_SHADERS) + list(REMOVE_DUPLICATES FRAGMENT_SHADERS) + source_group("Shaders/${SHADER_LIB}/Fragment" FILES ${FRAGMENT_SHADERS}) + string(CONCAT SHADER_ENUMS "${SHADER_ENUMS}" "namespace fragment { enum {\n") + foreach(SHADER ${FRAGMENT_SHADERS}) + process_shader_file() + endforeach() + string(CONCAT SHADER_ENUMS "${SHADER_ENUMS}" "}; } // fragment \n") + endif() + + if (DEFINED LIB_PROGRAMS) + string(CONCAT SHADER_ENUMS "${SHADER_ENUMS}" "namespace program { enum {\n") + foreach(LIB_PROGRAM ${LIB_PROGRAMS}) + get_property(LIB_PROGRAM_MAP GLOBAL PROPERTY ${LIB_PROGRAM}) + unpack_map(${LIB_PROGRAM_MAP}) + string(CONCAT SHADER_ENUMS "${SHADER_ENUMS}" "${LIB_PROGRAM} = (${AUTOSCRIBE_PROGRAM_VERTEX} << 16) | ${AUTOSCRIBE_PROGRAM_FRAGMENT},\n") + MATH(EXPR PROGRAM_COUNT "${PROGRAM_COUNT}+1") + list(APPEND SHADER_ALL_PROGRAMS "${SHADER_NAMESPACE}::program::${LIB_PROGRAM}") + endforeach() + string(CONCAT SHADER_ENUMS "${SHADER_ENUMS}" "}; } // program \n") + endif() + string(CONCAT SHADER_ENUMS "${SHADER_ENUMS}" "} // namespace ${SHADER_NAMESPACE}\n") + endforeach() + + set(SHADER_PROGRAMS_ARRAY "") + foreach(SHADER_PROGRAM ${SHADER_ALL_PROGRAMS}) + string(CONCAT SHADER_PROGRAMS_ARRAY "${SHADER_PROGRAMS_ARRAY}" " ${SHADER_PROGRAM},\n") + endforeach() + + set(SHADER_COUNT 0) + foreach(COMPILED_SHADER ${COMPILED_SHADERS}) + string(CONCAT SHADER_QRC "${SHADER_QRC}" "${COMPILED_SHADER}\n") + MATH(EXPR SHADER_COUNT "${SHADER_COUNT}+1") + endforeach() + + configure_file( + Shaders.cpp.in + ${CMAKE_CURRENT_BINARY_DIR}/shaders/Shaders.cpp + ) + configure_file( + Shaders.h.in + ${CMAKE_CURRENT_BINARY_DIR}/shaders/Shaders.h + ) + configure_file( + shaders.qrc.in + ${CMAKE_CURRENT_BINARY_DIR}/shaders.qrc + ) + set(AUTOSCRIBE_SHADER_LIB_SRC "${CMAKE_CURRENT_BINARY_DIR}/shaders/Shaders.h;${CMAKE_CURRENT_BINARY_DIR}/shaders/Shaders.cpp") + set(QT_RESOURCES_FILE ${CMAKE_CURRENT_BINARY_DIR}/shaders.qrc) + get_property(GLOBAL_SHADER_SOURCES GLOBAL PROPERTY GLOBAL_SHADER_SOURCES) + list(REMOVE_DUPLICATES GLOBAL_SHADER_SOURCES) + #add_custom_target(shader-sources SOURCES ${GLOBAL_SHADER_SOURCES} ${COMPILED_SHADERS} "${CMAKE_BINARY_DIR}/shaders/Shaders.h") endmacro() diff --git a/cmake/macros/LinkHifiLibraries.cmake b/cmake/macros/LinkHifiLibraries.cmake index 395af01f8d..7a6a136799 100644 --- a/cmake/macros/LinkHifiLibraries.cmake +++ b/cmake/macros/LinkHifiLibraries.cmake @@ -19,12 +19,8 @@ function(LINK_HIFI_LIBRARIES) endforeach() foreach(HIFI_LIBRARY ${LIBRARIES_TO_LINK}) - include_directories("${HIFI_LIBRARY_DIR}/${HIFI_LIBRARY}/src") - include_directories("${CMAKE_BINARY_DIR}/libraries/${HIFI_LIBRARY}/shaders") - - #add_dependencies(${TARGET_NAME} ${HIFI_LIBRARY}) - + include_directories("${CMAKE_BINARY_DIR}/libraries/${HIFI_LIBRARY}") # link the actual library - it is static so don't bubble it up target_link_libraries(${TARGET_NAME} ${HIFI_LIBRARY}) endforeach() diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index ea30909a08..990d84a774 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -214,6 +214,7 @@ link_hifi_libraries( controllers plugins image trackers ui-plugins display-plugins input-plugins ${PLATFORM_GL_BACKEND} + shaders ) # include the binary directory of render-utils for shader includes diff --git a/interface/src/workload/GameWorkloadRenderer.cpp b/interface/src/workload/GameWorkloadRenderer.cpp index a8b65492d3..c0aaad8100 100644 --- a/interface/src/workload/GameWorkloadRenderer.cpp +++ b/interface/src/workload/GameWorkloadRenderer.cpp @@ -14,11 +14,7 @@ #include #include - -#include "render-utils/drawWorkloadProxy_vert.h" -#include "render-utils/drawWorkloadView_vert.h" -#include "render-utils/drawWorkloadProxy_frag.h" -#include "render-utils/drawWorkloadView_frag.h" +#include void GameSpaceToRender::configure(const Config& config) { @@ -149,9 +145,7 @@ void GameWorkloadRenderItem::setAllViews(const workload::Views& views) { const gpu::PipelinePointer GameWorkloadRenderItem::getProxiesPipeline() { if (!_drawAllProxiesPipeline) { - auto vs = drawWorkloadProxy_vert::getShader(); - auto ps = drawWorkloadProxy_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::drawWorkloadProxy); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding("workloadProxiesBuffer", 0)); @@ -173,9 +167,7 @@ const gpu::PipelinePointer GameWorkloadRenderItem::getProxiesPipeline() { const gpu::PipelinePointer GameWorkloadRenderItem::getViewsPipeline() { if (!_drawAllViewsPipeline) { - auto vs = drawWorkloadView_vert::getShader(); - auto ps = drawWorkloadView_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::drawWorkloadView); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding("workloadViewsBuffer", 1)); diff --git a/libraries/display-plugins/CMakeLists.txt b/libraries/display-plugins/CMakeLists.txt index 7d34258c96..529ef4c921 100644 --- a/libraries/display-plugins/CMakeLists.txt +++ b/libraries/display-plugins/CMakeLists.txt @@ -1,7 +1,7 @@ set(TARGET_NAME display-plugins) AUTOSCRIBE_SHADER_LIB(gpu display-plugins) setup_hifi_library(Gui) -link_hifi_libraries(shared plugins ui-plugins gl ui render-utils ${PLATFORM_GL_BACKEND}) +link_hifi_libraries(shared shaders plugins ui-plugins gl ui render-utils ${PLATFORM_GL_BACKEND}) include_hifi_library_headers(gpu) include_hifi_library_headers(model-networking) include_hifi_library_headers(networking) diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index 9200843cf8..b9328e01c3 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -30,7 +30,7 @@ #include #include -#include +#include #include #include #include @@ -391,8 +391,8 @@ void OpenGLDisplayPlugin::customizeContext() { if (!_presentPipeline) { { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = gpu::StandardShaderLib::getDrawTexturePS(); + auto vs = gpu::Shader::createVertex(shader::gpu::vertex::DrawUnitQuadTexcoord); + auto ps = gpu::Shader::createPixel(shader::gpu::fragment::DrawTexture); gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); gpu::Shader::makeProgram(*program); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); @@ -402,7 +402,7 @@ void OpenGLDisplayPlugin::customizeContext() { } { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); + auto vs = gpu::Shader::createVertex(shader::gpu::vertex::DrawUnitQuadTexcoord); auto ps = gpu::Shader::createPixel(std::string(SRGB_TO_LINEAR_FRAG)); gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); gpu::Shader::makeProgram(*program); @@ -413,8 +413,8 @@ void OpenGLDisplayPlugin::customizeContext() { } { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = gpu::StandardShaderLib::getDrawTexturePS(); + auto vs = gpu::Shader::createVertex(shader::gpu::vertex::DrawUnitQuadTexcoord); + auto ps = gpu::Shader::createPixel(shader::gpu::fragment::DrawTexture); gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); gpu::Shader::makeProgram(*program); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); @@ -426,8 +426,8 @@ void OpenGLDisplayPlugin::customizeContext() { } { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = gpu::StandardShaderLib::getDrawTextureMirroredXPS(); + auto vs = gpu::Shader::createVertex(shader::gpu::vertex::DrawUnitQuadTexcoord); + auto ps = gpu::Shader::createPixel(shader::gpu::fragment::DrawTextureMirroredX); gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); gpu::Shader::makeProgram(*program); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); @@ -439,8 +439,8 @@ void OpenGLDisplayPlugin::customizeContext() { } { - auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); - auto ps = gpu::StandardShaderLib::getDrawTexturePS(); + auto vs = gpu::Shader::createVertex(shader::gpu::vertex::DrawTransformUnitQuad); + auto ps = gpu::Shader::createPixel(shader::gpu::fragment::DrawTexture); gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); gpu::Shader::makeProgram(*program); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp index 98283b0ef6..9966fb4357 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp @@ -24,8 +24,8 @@ #include #include #include -#include #include +#include #include #include @@ -34,8 +34,6 @@ #include "../CompositorHelper.h" #include "DesktopPreviewProvider.h" -#include "render-utils/hmd_ui_vert.h" -#include "render-utils/hmd_ui_frag.h" static const QString MONO_PREVIEW = "Mono Preview"; static const QString DISABLE_PREVIEW = "Disable Preview"; @@ -409,9 +407,7 @@ void HmdDisplayPlugin::HUDRenderer::build() { void HmdDisplayPlugin::HUDRenderer::updatePipeline() { if (!pipeline) { - auto vs = hmd_ui_vert::getShader(); - auto ps = hmd_ui_frag::getShader(); - auto program = gpu::Shader::createProgram(vs, ps); + auto program = gpu::Shader::createProgram(shader::render_utils::program::hmd_ui); gpu::Shader::makeProgram(*program, gpu::Shader::BindingSet()); uniformsLocation = program->getUniformBuffers().findLocation("hudBuffer"); diff --git a/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.cpp index 0b20d0bf30..fe3f54a9a8 100644 --- a/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.cpp @@ -8,10 +8,10 @@ #include "InterleavedStereoDisplayPlugin.h" -#include #include #include #include +#include static const char* INTERLEAVED_SRGB_TO_LINEAR_FRAG = R"SCRIBE( @@ -46,7 +46,7 @@ const QString InterleavedStereoDisplayPlugin::NAME("3D TV - Interleaved"); void InterleavedStereoDisplayPlugin::customizeContext() { StereoDisplayPlugin::customizeContext(); if (!_interleavedPresentPipeline) { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); + auto vs = gpu::Shader::createVertex(shader::gpu::vertex::DrawUnitQuadTexcoord); auto ps = gpu::Shader::createPixel(std::string(INTERLEAVED_SRGB_TO_LINEAR_FRAG)); gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); gpu::Shader::makeProgram(*program); diff --git a/libraries/entities-renderer/CMakeLists.txt b/libraries/entities-renderer/CMakeLists.txt index 12b9b3dea5..cf887bfeff 100644 --- a/libraries/entities-renderer/CMakeLists.txt +++ b/libraries/entities-renderer/CMakeLists.txt @@ -1,7 +1,6 @@ set(TARGET_NAME entities-renderer) -AUTOSCRIBE_SHADER_LIB(gpu graphics procedural render render-utils) setup_hifi_library(Network Script) -link_hifi_libraries(shared workload gpu procedural graphics model-networking script-engine render render-utils image qml ui pointers) +link_hifi_libraries(shared workload gpu shaders procedural graphics model-networking script-engine render render-utils image qml ui pointers) include_hifi_library_headers(networking) include_hifi_library_headers(gl) include_hifi_library_headers(ktx) @@ -18,3 +17,4 @@ include_hifi_library_headers(graphics-scripting) # for Forward.h target_bullet() target_polyvox() + diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index 73f46245c4..f5118b3570 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -13,9 +13,8 @@ #include #include +#include -#include "textured_particle_vert.h" -#include "textured_particle_frag.h" using namespace render; using namespace render::entities; @@ -36,10 +35,7 @@ static ShapePipelinePointer shapePipelineFactory(const ShapePlumber& plumber, co gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); PrepareStencil::testMask(*state); - auto vertShader = textured_particle_vert::getShader(); - auto fragShader = textured_particle_frag::getShader(); - - auto program = gpu::Shader::createProgram(vertShader, fragShader); + auto program = gpu::Shader::createProgram(shader::entities_renderer::program::textured_particle); _texturedPipeline = texturedPipeline = gpu::Pipeline::create(program, state); batch.runLambda([program] { diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp index 7cab57123d..fac2fd5841 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp @@ -17,18 +17,13 @@ #include #include #include +#include //#define POLYLINE_ENTITY_USE_FADE_EFFECT #ifdef POLYLINE_ENTITY_USE_FADE_EFFECT # include #endif -#include "paintStroke_vert.h" -#include "paintStroke_frag.h" - -#include "paintStroke_fade_vert.h" -#include "paintStroke_fade_frag.h" - using namespace render; using namespace render::entities; @@ -48,9 +43,7 @@ struct PolyLineUniforms { static render::ShapePipelinePointer shapePipelineFactory(const render::ShapePlumber& plumber, const render::ShapeKey& key, gpu::Batch& batch) { if (!polylinePipeline) { - auto VS = paintStroke_vert::getShader(); - auto PS = paintStroke_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(VS, PS); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::entities_renderer::program::paintStroke); #ifdef POLYLINE_ENTITY_USE_FADE_EFFECT auto fadeVS = gpu::Shader::createVertex(std::string(paintStroke_fade_vert)); auto fadePS = gpu::Shader::createPixel(std::string(paintStroke_fade_frag)); diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp index 2de6316d74..0157db4cb0 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp @@ -26,12 +26,9 @@ #include #include -#include "EntityTreeRenderer.h" +#include -#include "polyvox_vert.h" -#include "polyvox_frag.h" -#include "polyvox_fade_vert.h" -#include "polyvox_fade_frag.h" +#include "EntityTreeRenderer.h" #ifdef POLYVOX_ENTITY_USE_FADE_EFFECT # include @@ -72,11 +69,6 @@ #include "EntityTreeRenderer.h" -#include "polyvox_vert.h" -#include "polyvox_frag.h" -#include "polyvox_fade_vert.h" -#include "polyvox_fade_frag.h" - #include "RenderablePolyVoxEntityItem.h" #include "EntityEditPacketSender.h" #include "PhysicalEntitySimulation.h" @@ -1572,8 +1564,8 @@ static gpu::Stream::FormatPointer _vertexFormat; ShapePipelinePointer shapePipelineFactory(const ShapePlumber& plumber, const ShapeKey& key, gpu::Batch& batch) { if (!_pipelines[0]) { - gpu::ShaderPointer vertexShaders[2] = { polyvox_vert::getShader(), polyvox_fade_vert::getShader() }; - gpu::ShaderPointer pixelShaders[2] = { polyvox_frag::getShader(), polyvox_fade_frag::getShader() }; + using namespace shader::entities_renderer::program; + int programsIds[2] = { polyvox, polyvox_fade }; gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("materialBuffer"), MATERIAL_GPU_SLOT)); @@ -1597,7 +1589,7 @@ ShapePipelinePointer shapePipelineFactory(const ShapePlumber& plumber, const Sha // Two sets of pipelines: normal and fading for (auto i = 0; i < 2; i++) { - gpu::ShaderPointer program = gpu::Shader::createProgram(vertexShaders[i], pixelShaders[i]); + gpu::ShaderPointer program = gpu::Shader::createProgram(programsIds[i]); batch.runLambda([program, slotBindings] { gpu::Shader::makeProgram(*program, slotBindings); diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp index c50b3bd760..b73ceb3269 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp @@ -15,12 +15,7 @@ #include #include #include - -#include "render-utils/simple_vert.h" -#include "render-utils/simple_frag.h" -#include "render-utils/simple_transparent_frag.h" -#include "render-utils/forward_simple_frag.h" -#include "render-utils/forward_simple_transparent_frag.h" +#include #include "RenderPipelines.h" @@ -37,12 +32,12 @@ static const float SPHERE_ENTITY_SCALE = 0.5f; ShapeEntityRenderer::ShapeEntityRenderer(const EntityItemPointer& entity) : Parent(entity) { - _procedural._vertexSource = simple_vert::getSource(); + _procedural._vertexSource = gpu::Shader::getVertexShaderSource(shader::render_utils::vertex::simple).getCode(); // FIXME: Setup proper uniform slots and use correct pipelines for forward rendering - _procedural._opaquefragmentSource = simple_frag::getSource(); + _procedural._opaquefragmentSource = gpu::Shader::getFragmentShaderSource(shader::render_utils::fragment::simple).getCode(); // FIXME: Transparent procedural entities only seem to work if they use the opaque pipelines //_procedural._transparentfragmentSource = simple_transparent_frag::getSource(); - _procedural._transparentfragmentSource = simple_frag::getSource(); + _procedural._transparentfragmentSource = _procedural._opaquefragmentSource; _procedural._opaqueState->setCullMode(gpu::State::CULL_NONE); _procedural._opaqueState->setDepthTest(true, true, gpu::LESS_EQUAL); PrepareStencil::testMaskDrawShape(*_procedural._opaqueState); diff --git a/libraries/gpu/CMakeLists.txt b/libraries/gpu/CMakeLists.txt index 207431d8c7..7573cc5473 100644 --- a/libraries/gpu/CMakeLists.txt +++ b/libraries/gpu/CMakeLists.txt @@ -1,6 +1,6 @@ set(TARGET_NAME gpu) -autoscribe_shader_lib(gpu) + setup_hifi_library() -link_hifi_libraries(shared ktx) +link_hifi_libraries(shared ktx shaders) target_nsight() diff --git a/libraries/gpu/src/gpu/DrawNada.slf b/libraries/gpu/src/gpu/DrawNada.slf new file mode 100644 index 0000000000..6f286a5164 --- /dev/null +++ b/libraries/gpu/src/gpu/DrawNada.slf @@ -0,0 +1,5 @@ +<@include gpu/Config.slh@> + +<$VERSION_HEADER$> + +void main(void) { } diff --git a/libraries/gpu/src/gpu/Shader.cpp b/libraries/gpu/src/gpu/Shader.cpp index b539a84925..ca1613bd0b 100755 --- a/libraries/gpu/src/gpu/Shader.cpp +++ b/libraries/gpu/src/gpu/Shader.cpp @@ -13,6 +13,8 @@ #include #include +#include + #include "Context.h" using namespace gpu; @@ -62,17 +64,6 @@ Shader::Pointer Shader::createOrReuseDomainShader(Type type, const Source& sourc return shader; } -Shader::Pointer Shader::createVertex(const Source& source) { - return createOrReuseDomainShader(VERTEX, source); -} - -Shader::Pointer Shader::createPixel(const Source& source) { - return createOrReuseDomainShader(PIXEL, source); -} - -Shader::Pointer Shader::createGeometry(const Source& source) { - return createOrReuseDomainShader(GEOMETRY, source); -} ShaderPointer Shader::createOrReuseProgramShader(Type type, const Pointer& vertexShader, const Pointer& geometryShader, const Pointer& pixelShader) { PROFILE_RANGE(app, "createOrReuseProgramShader"); @@ -116,15 +107,6 @@ ShaderPointer Shader::createOrReuseProgramShader(Type type, const Pointer& verte return program; } - -Shader::Pointer Shader::createProgram(const Pointer& vertexShader, const Pointer& pixelShader) { - return createOrReuseProgramShader(PROGRAM, vertexShader, nullptr, pixelShader); -} - -Shader::Pointer Shader::createProgram(const Pointer& vertexShader, const Pointer& geometryShader, const Pointer& pixelShader) { - return createOrReuseProgramShader(PROGRAM, vertexShader, geometryShader, pixelShader); -} - void Shader::defineSlots(const SlotSet& uniforms, const SlotSet& uniformBuffers, const SlotSet& resourceBuffers, const SlotSet& textures, const SlotSet& samplers, const SlotSet& inputs, const SlotSet& outputs) { _uniforms = uniforms; _uniformBuffers = uniformBuffers; @@ -153,3 +135,39 @@ void Shader::incrementCompilationAttempt() const { _numCompilationAttempts++; } + +Shader::Source Shader::getShaderSource(Type type, int shaderId) { + return shader::loadShaderSource(shaderId); +} + +Shader::Pointer Shader::createVertex(const Source& source) { + return createOrReuseDomainShader(VERTEX, source); +} + +Shader::Pointer Shader::createPixel(const Source& source) { + return createOrReuseDomainShader(FRAGMENT, source); +} + +Shader::Pointer Shader::createVertex(int id) { + return createVertex(getShaderSource(VERTEX, id)); +} + +Shader::Pointer Shader::createPixel(int id) { + return createPixel(getShaderSource(FRAGMENT, id)); +} + +Shader::Pointer Shader::createProgram(const Pointer& vertexShader, const Pointer& pixelShader) { + return createOrReuseProgramShader(PROGRAM, vertexShader, nullptr, pixelShader); +} + +Shader::Pointer Shader::createProgram(int programId) { + int vertexId = (programId >> 16) & 0xFFFF; + int fragmentId = programId & 0xFFFF; + auto vertexShader = createVertex(vertexId); + auto fragmentShader = createPixel(fragmentId); + return createOrReuseProgramShader(PROGRAM, vertexShader, nullptr, fragmentShader); +} + +//Shader::Pointer Shader::createProgram(const Pointer& vertexShader, const Pointer& geometryShader, const Pointer& pixelShader) { +// return createOrReuseProgramShader(PROGRAM, vertexShader, geometryShader, pixelShader); +//} diff --git a/libraries/gpu/src/gpu/Shader.h b/libraries/gpu/src/gpu/Shader.h index fe92da1469..64a2fc3f4f 100755 --- a/libraries/gpu/src/gpu/Shader.h +++ b/libraries/gpu/src/gpu/Shader.h @@ -26,9 +26,21 @@ public: // unique identifier of a shader using ID = uint32_t; + enum Type { + VERTEX = 0, + PIXEL, + FRAGMENT = PIXEL, + GEOMETRY, + NUM_DOMAINS, + + PROGRAM, + }; + typedef std::shared_ptr< Shader > Pointer; typedef std::vector< Pointer > Shaders; + + class Source { public: enum Language { @@ -52,6 +64,10 @@ public: Language _lang = GLSL; }; + static Source getShaderSource(Type type, int shaderId); + static Source getVertexShaderSource(int shaderId) { return getShaderSource(VERTEX, shaderId); } + static Source getFragmentShaderSource(int shaderId) { return getShaderSource(FRAGMENT, shaderId); } + struct CompilationLog { std::string message; bool compiled{ false }; @@ -121,21 +137,17 @@ public: typedef std::set> BindingSet; - enum Type { - VERTEX = 0, - PIXEL, - GEOMETRY, - NUM_DOMAINS, - - PROGRAM, - }; - static Pointer createVertex(const Source& source); static Pointer createPixel(const Source& source); - static Pointer createGeometry(const Source& source); + //static Pointer createGeometry(const Source& source); + static Pointer createVertex(int shaderId); + static Pointer createPixel(int shaderId); + static Pointer createGeometry(int shaderId); + static Pointer createProgram(int programId); static Pointer createProgram(const Pointer& vertexShader, const Pointer& pixelShader); - static Pointer createProgram(const Pointer& vertexShader, const Pointer& geometryShader, const Pointer& pixelShader); + //static Pointer createProgram(int vertexId, int fragmentId); + //static Pointer createProgram(const Pointer& vertexShader, const Pointer& geometryShader, const Pointer& pixelShader); ~Shader(); diff --git a/libraries/gpu/src/gpu/StandardShaderLib.cpp b/libraries/gpu/src/gpu/StandardShaderLib.cpp deleted file mode 100755 index 0d829fb21f..0000000000 --- a/libraries/gpu/src/gpu/StandardShaderLib.cpp +++ /dev/null @@ -1,163 +0,0 @@ -// -// StandardShaderLib.cpp -// libraries/gpu/src/gpu -// -// Collection of standard shaders that can be used all over the place -// -// Created by Sam Gateau on 6/22/2015. -// Copyright 2015 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// -#include "StandardShaderLib.h" - -#include "DrawUnitQuadTexcoord_vert.h" -#include "DrawTransformUnitQuad_vert.h" -#include "DrawTexcoordRectTransformUnitQuad_vert.h" -#include "DrawViewportQuadTransformTexcoord_vert.h" -#include "DrawVertexPosition_vert.h" -#include "DrawTransformVertexPosition_vert.h" - -const char DrawNada_frag[] = "void main(void) {}"; // DrawNada is really simple... - -#include "DrawWhite_frag.h" -#include "DrawColor_frag.h" -#include "DrawTexture_frag.h" -#include "DrawTextureMirroredX_frag.h" -#include "DrawTextureOpaque_frag.h" -#include "DrawColoredTexture_frag.h" - -using namespace gpu; - -ShaderPointer StandardShaderLib::_drawUnitQuadTexcoordVS; -ShaderPointer StandardShaderLib::_drawTransformUnitQuadVS; -ShaderPointer StandardShaderLib::_drawTexcoordRectTransformUnitQuadVS; -ShaderPointer StandardShaderLib::_drawViewportQuadTransformTexcoordVS; -ShaderPointer StandardShaderLib::_drawVertexPositionVS; -ShaderPointer StandardShaderLib::_drawTransformVertexPositionVS; -ShaderPointer StandardShaderLib::_drawNadaPS; -ShaderPointer StandardShaderLib::_drawWhitePS; -ShaderPointer StandardShaderLib::_drawColorPS; -ShaderPointer StandardShaderLib::_drawTexturePS; -ShaderPointer StandardShaderLib::_drawTextureMirroredXPS; -ShaderPointer StandardShaderLib::_drawTextureOpaquePS; -ShaderPointer StandardShaderLib::_drawColoredTexturePS; -StandardShaderLib::ProgramMap StandardShaderLib::_programs; - -ShaderPointer StandardShaderLib::getProgram(GetShader getVS, GetShader getPS) { - - auto programIt = _programs.find(std::pair(getVS, getPS)); - if (programIt != _programs.end()) { - return (*programIt).second; - } else { - auto vs = (getVS)(); - auto ps = (getPS)(); - auto program = gpu::Shader::createProgram(vs, ps); - if (program) { - // Program created, let's try to make it - if (gpu::Shader::makeProgram((*program))) { - // All good, backup and return that program - _programs.insert(ProgramMap::value_type(std::pair(getVS, getPS), program)); - return program; - } else { - // Failed to make the program probably because vs and ps cannot work together? - } - } else { - // Failed to create the program maybe because ps and vs are not true vertex and pixel shaders? - } - } - return ShaderPointer(); -} - - -ShaderPointer StandardShaderLib::getDrawUnitQuadTexcoordVS() { - if (!_drawUnitQuadTexcoordVS) { - _drawUnitQuadTexcoordVS = DrawUnitQuadTexcoord_vert::getShader(); - } - return _drawUnitQuadTexcoordVS; -} - -ShaderPointer StandardShaderLib::getDrawTransformUnitQuadVS() { - if (!_drawTransformUnitQuadVS) { - _drawTransformUnitQuadVS = DrawTransformUnitQuad_vert::getShader(); - } - return _drawTransformUnitQuadVS; -} - -ShaderPointer StandardShaderLib::getDrawTexcoordRectTransformUnitQuadVS() { - if (!_drawTexcoordRectTransformUnitQuadVS) { - _drawTexcoordRectTransformUnitQuadVS = DrawTexcoordRectTransformUnitQuad_vert::getShader(); - } - return _drawTexcoordRectTransformUnitQuadVS; -} - -ShaderPointer StandardShaderLib::getDrawViewportQuadTransformTexcoordVS() { - if (!_drawViewportQuadTransformTexcoordVS) { - _drawViewportQuadTransformTexcoordVS = DrawViewportQuadTransformTexcoord_vert::getShader(); - } - return _drawViewportQuadTransformTexcoordVS; -} - -ShaderPointer StandardShaderLib::getDrawVertexPositionVS() { - if (!_drawVertexPositionVS) { - _drawVertexPositionVS = DrawVertexPosition_vert::getShader(); - } - return _drawVertexPositionVS; -} - -ShaderPointer StandardShaderLib::getDrawTransformVertexPositionVS() { - if (!_drawTransformVertexPositionVS) { - _drawTransformVertexPositionVS = DrawTransformVertexPosition_vert::getShader(); - } - return _drawTransformVertexPositionVS; -} - -ShaderPointer StandardShaderLib::getDrawNadaPS() { - if (!_drawNadaPS) { - _drawNadaPS = gpu::Shader::createPixel(std::string(DrawNada_frag)); - } - return _drawNadaPS; -} - -ShaderPointer StandardShaderLib::getDrawWhitePS() { - if (!_drawWhitePS) { - _drawWhitePS = DrawWhite_frag::getShader(); - } - return _drawWhitePS; -} - -ShaderPointer StandardShaderLib::getDrawColorPS() { - if (!_drawColorPS) { - _drawColorPS = DrawColor_frag::getShader(); - } - return _drawColorPS; -} - -ShaderPointer StandardShaderLib::getDrawTexturePS() { - if (!_drawTexturePS) { - _drawTexturePS = DrawTexture_frag::getShader(); - } - return _drawTexturePS; -} - -ShaderPointer StandardShaderLib::getDrawTextureMirroredXPS() { - if (!_drawTextureMirroredXPS) { - _drawTextureMirroredXPS = DrawTextureMirroredX_frag::getShader(); - } - return _drawTextureMirroredXPS; -} - -ShaderPointer StandardShaderLib::getDrawTextureOpaquePS() { - if (!_drawTextureOpaquePS) { - _drawTextureOpaquePS = DrawTextureOpaque_frag::getShader(); - } - return _drawTextureOpaquePS; -} - -ShaderPointer StandardShaderLib::getDrawColoredTexturePS() { - if (!_drawColoredTexturePS) { - _drawColoredTexturePS = DrawColoredTexture_frag::getShader(); - } - return _drawColoredTexturePS; -} diff --git a/libraries/gpu/src/gpu/StandardShaderLib.h b/libraries/gpu/src/gpu/StandardShaderLib.h deleted file mode 100755 index 9c11f6cc3a..0000000000 --- a/libraries/gpu/src/gpu/StandardShaderLib.h +++ /dev/null @@ -1,84 +0,0 @@ -// -// StandardShaderLib.h -// libraries/gpu/src/gpu -// -// Collection of standard shaders that can be used all over the place -// -// Created by Sam Gateau on 6/22/2015. -// Copyright 2015 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// -#ifndef hifi_gpu_StandardShaderLib_h -#define hifi_gpu_StandardShaderLib_h - -#include -#include - -#include "Shader.h" - -namespace gpu { - -class StandardShaderLib { -public: - - // Shader draws the unit quad in the full viewport clipPos = ([(-1,-1),(1,1)]) and the unit texcoord = [(0,0),(1,1)]. - static ShaderPointer getDrawUnitQuadTexcoordVS(); - - // Shader draw the unit quad objectPos = ([(-1,-1),(1,1)]) and transform it by the full model transform stack (Model, View, Proj). - // A texcoord attribute is also generated texcoord = [(0,0),(1,1)] - static ShaderPointer getDrawTransformUnitQuadVS(); - - // Shader draw the unit quad objectPos = ([(-1,-1),(1,1)]) and transform it by the full model transform stack (Model, View, Proj). - // A texcoord attribute is also generated covering a rect defined from the uniform vec4 texcoordRect: texcoord = [texcoordRect.xy,texcoordRect.xy + texcoordRect.zw] - static ShaderPointer getDrawTexcoordRectTransformUnitQuadVS(); - - // Shader draws the unit quad in the full viewport clipPos = ([(-1,-1),(1,1)]) and transform the texcoord = [(0,0),(1,1)] by the model transform. - static ShaderPointer getDrawViewportQuadTransformTexcoordVS(); - - // Shader draw the fed vertex position and transform it by the full model transform stack (Model, View, Proj). - // simply output the world pos and the clip pos to the next stage - static ShaderPointer getDrawVertexPositionVS(); - static ShaderPointer getDrawTransformVertexPositionVS(); - - // PShader does nothing, no really nothing, but still needed for defining a program triggering rasterization - static ShaderPointer getDrawNadaPS(); - - static ShaderPointer getDrawWhitePS(); - static ShaderPointer getDrawColorPS(); - static ShaderPointer getDrawTexturePS(); - static ShaderPointer getDrawTextureMirroredXPS(); - static ShaderPointer getDrawTextureOpaquePS(); - static ShaderPointer getDrawColoredTexturePS(); - - // The shader program combining the shaders available above, so they are unique - typedef ShaderPointer (*GetShader) (); - static ShaderPointer getProgram(GetShader vs, GetShader ps); - -protected: - - static ShaderPointer _drawUnitQuadTexcoordVS; - static ShaderPointer _drawTransformUnitQuadVS; - static ShaderPointer _drawTexcoordRectTransformUnitQuadVS; - static ShaderPointer _drawViewportQuadTransformTexcoordVS; - - static ShaderPointer _drawVertexPositionVS; - static ShaderPointer _drawTransformVertexPositionVS; - - static ShaderPointer _drawNadaPS; - static ShaderPointer _drawWhitePS; - static ShaderPointer _drawColorPS; - static ShaderPointer _drawTexturePS; - static ShaderPointer _drawTextureMirroredXPS; - static ShaderPointer _drawTextureOpaquePS; - static ShaderPointer _drawColoredTexturePS; - - typedef std::map, ShaderPointer> ProgramMap; - static ProgramMap _programs; -}; - - -}; - -#endif diff --git a/libraries/graphics/CMakeLists.txt b/libraries/graphics/CMakeLists.txt index 2b15604fdf..556d4ef53f 100755 --- a/libraries/graphics/CMakeLists.txt +++ b/libraries/graphics/CMakeLists.txt @@ -1,4 +1,4 @@ set(TARGET_NAME graphics) -AUTOSCRIBE_SHADER_LIB(gpu graphics) setup_hifi_library() -link_hifi_libraries(shared ktx gpu image) \ No newline at end of file + +link_hifi_libraries(shared ktx gpu shaders image) \ No newline at end of file diff --git a/libraries/graphics/src/graphics/Skybox.cpp b/libraries/graphics/src/graphics/Skybox.cpp index 6ad0045aa9..6c044444f0 100755 --- a/libraries/graphics/src/graphics/Skybox.cpp +++ b/libraries/graphics/src/graphics/Skybox.cpp @@ -15,8 +15,7 @@ #include #include -#include "skybox_vert.h" -#include "skybox_frag.h" +#include using namespace graphics; @@ -91,9 +90,7 @@ void Skybox::render(gpu::Batch& batch, const ViewFrustum& viewFrustum, const Sky static std::once_flag once; std::call_once(once, [&] { { - auto skyVS = skybox_vert::getShader(); - auto skyFS = skybox_frag::getShader(); - auto skyShader = gpu::Shader::createProgram(skyVS, skyFS); + auto skyShader = gpu::Shader::createProgram(shader::graphics::program::skybox); batch.runLambda([skyShader] { gpu::Shader::BindingSet bindings; diff --git a/libraries/procedural/CMakeLists.txt b/libraries/procedural/CMakeLists.txt index 9ec7cb6431..6d6610a323 100644 --- a/libraries/procedural/CMakeLists.txt +++ b/libraries/procedural/CMakeLists.txt @@ -1,5 +1,4 @@ set(TARGET_NAME procedural) -AUTOSCRIBE_SHADER_LIB(gpu graphics) setup_hifi_library() -link_hifi_libraries(shared gpu networking graphics model-networking ktx image) +link_hifi_libraries(shared gpu shaders networking graphics model-networking ktx image) diff --git a/libraries/procedural/src/procedural/Procedural.cpp b/libraries/procedural/src/procedural/Procedural.cpp index 7bf020094a..8f0c9ab4f0 100644 --- a/libraries/procedural/src/procedural/Procedural.cpp +++ b/libraries/procedural/src/procedural/Procedural.cpp @@ -20,7 +20,7 @@ #include #include #include -#include "ProceduralCommon_frag.h" +#include #include "Logging.h" @@ -223,9 +223,10 @@ bool Procedural::isReady() const { std::string Procedural::replaceProceduralBlock(const std::string& fragmentSource) { std::string fragmentShaderSource = fragmentSource; + static const auto proceduralCommonSource = gpu::Shader::getFragmentShaderSource(shader::procedural::fragment::ProceduralCommon); size_t replaceIndex = fragmentShaderSource.find(PROCEDURAL_COMMON_BLOCK); if (replaceIndex != std::string::npos) { - fragmentShaderSource.replace(replaceIndex, PROCEDURAL_COMMON_BLOCK.size(), ProceduralCommon_frag::getSource()); + fragmentShaderSource.replace(replaceIndex, PROCEDURAL_COMMON_BLOCK.size(), proceduralCommonSource.getCode()); } replaceIndex = fragmentShaderSource.find(PROCEDURAL_VERSION); diff --git a/libraries/procedural/src/procedural/ProceduralSkybox.cpp b/libraries/procedural/src/procedural/ProceduralSkybox.cpp index 0c6501928b..26a90e1894 100644 --- a/libraries/procedural/src/procedural/ProceduralSkybox.cpp +++ b/libraries/procedural/src/procedural/ProceduralSkybox.cpp @@ -13,14 +13,13 @@ #include #include +#include #include - -#include -#include +#include ProceduralSkybox::ProceduralSkybox() : graphics::Skybox() { - _procedural._vertexSource = skybox_vert::getSource(); - _procedural._opaquefragmentSource = skybox_frag::getSource(); + _procedural._vertexSource = gpu::Shader::getVertexShaderSource(shader::graphics::vertex::skybox).getCode(); + _procedural._opaquefragmentSource = gpu::Shader::getFragmentShaderSource(shader::graphics::fragment::skybox).getCode(); // Adjust the pipeline state for background using the stencil test _procedural.setDoesFade(false); // Must match PrepareStencil::STENCIL_BACKGROUND diff --git a/libraries/render-utils/CMakeLists.txt b/libraries/render-utils/CMakeLists.txt index 319b6ad415..eaa3b4dbf5 100644 --- a/libraries/render-utils/CMakeLists.txt +++ b/libraries/render-utils/CMakeLists.txt @@ -1,9 +1,9 @@ set(TARGET_NAME render-utils) -AUTOSCRIBE_SHADER_LIB(gpu graphics render) + # pull in the resources.qrc file qt5_add_resources(QT_RESOURCES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/res/fonts/fonts.qrc") setup_hifi_library(Gui Network Qml Quick Script) -link_hifi_libraries(shared task ktx gpu graphics graphics-scripting model-networking render animation fbx image procedural) +link_hifi_libraries(shared task ktx gpu shaders graphics graphics-scripting model-networking render animation fbx image procedural) include_hifi_library_headers(audio) include_hifi_library_headers(networking) include_hifi_library_headers(octree) @@ -14,3 +14,4 @@ set_property(SOURCE qrc_fonts.cpp PROPERTY SKIP_AUTOMOC ON) if (NOT ANDROID) target_nsight() endif () + diff --git a/libraries/render-utils/src/AmbientOcclusionEffect.cpp b/libraries/render-utils/src/AmbientOcclusionEffect.cpp index 2ac8e77898..aca71636ff 100644 --- a/libraries/render-utils/src/AmbientOcclusionEffect.cpp +++ b/libraries/render-utils/src/AmbientOcclusionEffect.cpp @@ -18,7 +18,8 @@ #include #include #include -#include +#include + #include "RenderUtilsLogging.h" #include "DeferredLightingEffect.h" @@ -27,11 +28,6 @@ #include "DependencyManager.h" #include "ViewFrustum.h" -#include "ssao_makePyramid_frag.h" -#include "ssao_makeOcclusion_frag.h" -#include "ssao_debugOcclusion_frag.h" -#include "ssao_makeHorizontalBlur_frag.h" -#include "ssao_makeVerticalBlur_frag.h" AmbientOcclusionFramebuffer::AmbientOcclusionFramebuffer() { @@ -261,9 +257,7 @@ void AmbientOcclusionEffect::configure(const Config& config) { const gpu::PipelinePointer& AmbientOcclusionEffect::getOcclusionPipeline() { if (!_occlusionPipeline) { - auto vs = gpu::StandardShaderLib::getDrawViewportQuadTransformTexcoordVS(); - auto ps = ssao_makeOcclusion_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::ssao_makeOcclusion); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), AmbientOcclusionEffect_FrameTransformSlot)); @@ -286,9 +280,7 @@ const gpu::PipelinePointer& AmbientOcclusionEffect::getOcclusionPipeline() { const gpu::PipelinePointer& AmbientOcclusionEffect::getHBlurPipeline() { if (!_hBlurPipeline) { - auto vs = gpu::StandardShaderLib::getDrawViewportQuadTransformTexcoordVS(); - auto ps = ssao_makeHorizontalBlur_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::ssao_makeHorizontalBlur); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("ambientOcclusionFrameTransformBuffer"), AmbientOcclusionEffect_FrameTransformSlot)); @@ -309,9 +301,7 @@ const gpu::PipelinePointer& AmbientOcclusionEffect::getHBlurPipeline() { const gpu::PipelinePointer& AmbientOcclusionEffect::getVBlurPipeline() { if (!_vBlurPipeline) { - auto vs = gpu::StandardShaderLib::getDrawViewportQuadTransformTexcoordVS(); - auto ps = ssao_makeVerticalBlur_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::ssao_makeVerticalBlur); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("ambientOcclusionFrameTransformBuffer"), AmbientOcclusionEffect_FrameTransformSlot)); @@ -456,10 +446,8 @@ void DebugAmbientOcclusion::configure(const Config& config) { const gpu::PipelinePointer& DebugAmbientOcclusion::getDebugPipeline() { if (!_debugPipeline) { - auto vs = gpu::StandardShaderLib::getDrawViewportQuadTransformTexcoordVS(); - auto ps = ssao_debugOcclusion_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::ssao_debugOcclusion); + gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), AmbientOcclusionEffect_FrameTransformSlot)); slotBindings.insert(gpu::Shader::Binding(std::string("ambientOcclusionParamsBuffer"), AmbientOcclusionEffect_ParamsSlot)); diff --git a/libraries/render-utils/src/AnimDebugDraw.cpp b/libraries/render-utils/src/AnimDebugDraw.cpp index eca500f36c..74afded28f 100644 --- a/libraries/render-utils/src/AnimDebugDraw.cpp +++ b/libraries/render-utils/src/AnimDebugDraw.cpp @@ -12,17 +12,13 @@ #include #include #include +#include #include "AbstractViewStateInterface.h" #include "RenderUtilsLogging.h" #include "DebugDraw.h" #include "StencilMaskPass.h" -#include "animdebugdraw_vert.h" -#include "animdebugdraw_frag.h" - -#include "animdebugdraw_vert.h" -#include "animdebugdraw_frag.h" class AnimDebugDrawData { public: @@ -106,9 +102,7 @@ AnimDebugDraw::AnimDebugDraw() : gpu::State::INV_SRC_ALPHA, gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); PrepareStencil::testMaskDrawShape(*state.get()); - auto vertShader = animdebugdraw_vert::getShader(); - auto fragShader = animdebugdraw_frag::getShader(); - auto program = gpu::Shader::createProgram(vertShader, fragShader); + auto program = gpu::Shader::createProgram(shader::render_utils::program::animdebugdraw); _pipeline = gpu::Pipeline::create(program, state); _animDebugDrawData = std::make_shared(); diff --git a/libraries/render-utils/src/AntialiasingEffect.cpp b/libraries/render-utils/src/AntialiasingEffect.cpp index 8317568fc6..52105f1390 100644 --- a/libraries/render-utils/src/AntialiasingEffect.cpp +++ b/libraries/render-utils/src/AntialiasingEffect.cpp @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include "StencilMaskPass.h" #include "TextureCache.h" @@ -172,10 +172,6 @@ void Antialiasing::run(const render::RenderContextPointer& renderContext, const } #else -#include "taa_frag.h" -#include "fxaa_blend_frag.h" -#include "taa_blend_frag.h" - const int AntialiasingPass_ParamsSlot = 0; const int AntialiasingPass_FrameTransformSlot = 1; @@ -200,10 +196,7 @@ Antialiasing::~Antialiasing() { const gpu::PipelinePointer& Antialiasing::getAntialiasingPipeline(const render::RenderContextPointer& renderContext) { if (!_antialiasingPipeline) { - - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = taa_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::taa); gpu::Shader::BindingSet slotBindings; @@ -235,9 +228,7 @@ const gpu::PipelinePointer& Antialiasing::getAntialiasingPipeline(const render:: const gpu::PipelinePointer& Antialiasing::getBlendPipeline() { if (!_blendPipeline) { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = fxaa_blend_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::fxaa_blend); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("colorTexture"), AntialiasingPass_NextMapSlot)); @@ -258,9 +249,7 @@ const gpu::PipelinePointer& Antialiasing::getBlendPipeline() { const gpu::PipelinePointer& Antialiasing::getDebugBlendPipeline() { if (!_debugBlendPipeline) { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = taa_blend_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::taa_blend); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("taaParamsBuffer"), AntialiasingPass_ParamsSlot)); diff --git a/libraries/render-utils/src/BloomEffect.cpp b/libraries/render-utils/src/BloomEffect.cpp index 0e95655370..604919ad2d 100644 --- a/libraries/render-utils/src/BloomEffect.cpp +++ b/libraries/render-utils/src/BloomEffect.cpp @@ -10,15 +10,13 @@ // #include "BloomEffect.h" -#include "gpu/Context.h" -#include "gpu/StandardShaderLib.h" +#include + +#include #include #include -#include "BloomThreshold_frag.h" -#include "BloomApply_frag.h" - #define BLOOM_BLUR_LEVEL_COUNT 3 BloomThreshold::BloomThreshold(unsigned int downsamplingFactor) { @@ -65,9 +63,7 @@ void BloomThreshold::run(const render::RenderContextPointer& renderContext, cons static const int PARAMETERS_SLOT = 1; if (!_pipeline) { - auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); - auto ps = BloomThreshold_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::bloomThreshold); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding("colorMap", COLOR_MAP_SLOT)); @@ -124,9 +120,7 @@ void BloomApply::run(const render::RenderContextPointer& renderContext, const In static const auto PARAMETERS_SLOT = 0; if (!_pipeline) { - auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); - auto ps = BloomApply_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::bloomApply); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding("blurMap0", BLUR0_SLOT)); @@ -178,10 +172,7 @@ void BloomDraw::run(const render::RenderContextPointer& renderContext, const Inp const auto framebufferSize = frameBuffer->getSize(); if (!_pipeline) { - auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); - auto ps = gpu::StandardShaderLib::getDrawTextureOpaquePS(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::gpu::program::drawTransformUnitQuadTextureOpaque); gpu::Shader::BindingSet slotBindings; gpu::Shader::makeProgram(*program, slotBindings); @@ -237,9 +228,7 @@ void DebugBloom::run(const render::RenderContextPointer& renderContext, const In static auto TEXCOORD_RECT_SLOT = 1; if (!_pipeline) { - auto vs = gpu::StandardShaderLib::getDrawTexcoordRectTransformUnitQuadVS(); - auto ps = gpu::StandardShaderLib::getDrawTextureOpaquePS(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::gpu::program::drawTextureOpaqueTexcoordRect); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("texcoordRect"), TEXCOORD_RECT_SLOT)); diff --git a/libraries/render-utils/src/DebugDeferredBuffer.cpp b/libraries/render-utils/src/DebugDeferredBuffer.cpp index 8575df399e..4844c821e5 100644 --- a/libraries/render-utils/src/DebugDeferredBuffer.cpp +++ b/libraries/render-utils/src/DebugDeferredBuffer.cpp @@ -18,14 +18,12 @@ #include #include #include +#include #include "GeometryCache.h" #include "TextureCache.h" #include "DeferredLightingEffect.h" -#include "debug_deferred_buffer_vert.h" -#include "debug_deferred_buffer_frag.h" - using namespace render; void DebugDeferredBufferConfig::setMode(int newMode) { @@ -378,7 +376,7 @@ bool DebugDeferredBuffer::pipelineNeedsUpdate(Mode mode, std::string customFile) const gpu::PipelinePointer& DebugDeferredBuffer::getPipeline(Mode mode, std::string customFile) { if (pipelineNeedsUpdate(mode, customFile)) { - static const std::string FRAGMENT_SHADER { debug_deferred_buffer_frag::getSource() }; + static const std::string FRAGMENT_SHADER { gpu::Shader::getFragmentShaderSource(shader::render_utils::fragment::debug_deferred_buffer).getCode() }; static const std::string SOURCE_PLACEHOLDER { "//SOURCE_PLACEHOLDER" }; static const auto SOURCE_PLACEHOLDER_INDEX = FRAGMENT_SHADER.find(SOURCE_PLACEHOLDER); Q_ASSERT_X(SOURCE_PLACEHOLDER_INDEX != std::string::npos, Q_FUNC_INFO, @@ -388,7 +386,7 @@ const gpu::PipelinePointer& DebugDeferredBuffer::getPipeline(Mode mode, std::str bakedFragmentShader.replace(SOURCE_PLACEHOLDER_INDEX, SOURCE_PLACEHOLDER.size(), getShaderSourceCode(mode, customFile)); - const auto vs = debug_deferred_buffer_vert::getShader(); + const auto vs = gpu::Shader::createVertex(shader::render_utils::vertex::debug_deferred_buffer); const auto ps = gpu::Shader::createPixel(bakedFragmentShader); const auto program = gpu::Shader::createProgram(vs, ps); diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 62d8dffe3a..0d077b19d8 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -17,9 +17,9 @@ #include #include #include - #include #include +#include #include "StencilMaskPass.h" #include "AbstractViewStateInterface.h" @@ -27,20 +27,6 @@ #include "TextureCache.h" #include "FramebufferCache.h" -#include "deferred_light_vert.h" -#include "deferred_light_point_vert.h" -#include "deferred_light_spot_vert.h" - -#include "directional_ambient_light_frag.h" -#include "directional_skybox_light_frag.h" - -#include "directional_ambient_light_shadow_frag.h" -#include "directional_skybox_light_shadow_frag.h" - -#include "local_lights_shading_frag.h" -#include "local_lights_drawOutline_frag.h" - - using namespace render; struct LightLocations { @@ -85,7 +71,7 @@ enum DeferredShader_BufferSlot { LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT, }; -static void loadLightProgram(const gpu::ShaderPointer& vertShader, const gpu::ShaderPointer& fragShader, bool lightVolume, gpu::PipelinePointer& program, LightLocationsPtr& locations); +static void loadLightProgram(int programId, bool lightVolume, gpu::PipelinePointer& program, LightLocationsPtr& locations); void DeferredLightingEffect::init() { _directionalAmbientSphereLightLocations = std::make_shared(); @@ -97,14 +83,14 @@ void DeferredLightingEffect::init() { _localLightLocations = std::make_shared(); _localLightOutlineLocations = std::make_shared(); - loadLightProgram(deferred_light_vert::getShader(), directional_ambient_light_frag::getShader(), false, _directionalAmbientSphereLight, _directionalAmbientSphereLightLocations); - loadLightProgram(deferred_light_vert::getShader(), directional_skybox_light_frag::getShader(), false, _directionalSkyboxLight, _directionalSkyboxLightLocations); + loadLightProgram(shader::render_utils::program::directional_ambient_light, false, _directionalAmbientSphereLight, _directionalAmbientSphereLightLocations); + loadLightProgram(shader::render_utils::program::directional_skybox_light, false, _directionalSkyboxLight, _directionalSkyboxLightLocations); - loadLightProgram(deferred_light_vert::getShader(), directional_ambient_light_shadow_frag::getShader(), false, _directionalAmbientSphereLightShadow, _directionalAmbientSphereLightShadowLocations); - loadLightProgram(deferred_light_vert::getShader(), directional_skybox_light_shadow_frag::getShader(), false, _directionalSkyboxLightShadow, _directionalSkyboxLightShadowLocations); + loadLightProgram(shader::render_utils::program::directional_ambient_light_shadow, false, _directionalAmbientSphereLightShadow, _directionalAmbientSphereLightShadowLocations); + loadLightProgram(shader::render_utils::program::directional_skybox_light_shadow, false, _directionalSkyboxLightShadow, _directionalSkyboxLightShadowLocations); - loadLightProgram(deferred_light_vert::getShader(), local_lights_shading_frag::getShader(), true, _localLight, _localLightLocations); - loadLightProgram(deferred_light_vert::getShader(), local_lights_drawOutline_frag::getShader(), true, _localLightOutline, _localLightOutlineLocations); + loadLightProgram(shader::render_utils::program::local_lights_shading, true, _localLight, _localLightLocations); + loadLightProgram(shader::render_utils::program::local_lights_drawOutline, true, _localLightOutline, _localLightOutlineLocations); } void DeferredLightingEffect::setupKeyLightBatch(const RenderArgs* args, gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit) { @@ -176,8 +162,8 @@ void DeferredLightingEffect::unsetLocalLightsBatch(gpu::Batch& batch, int lightA } } -static gpu::ShaderPointer makeLightProgram(const gpu::ShaderPointer& vertShader, const gpu::ShaderPointer& fragShader, LightLocationsPtr& locations) { - gpu::ShaderPointer program = gpu::Shader::createProgram(vertShader, fragShader); +static gpu::ShaderPointer makeLightProgram(int programId, LightLocationsPtr& locations) { + gpu::ShaderPointer program = gpu::Shader::createProgram(programId); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("colorMap"), DEFERRED_BUFFER_COLOR_UNIT)); slotBindings.insert(gpu::Shader::Binding(std::string("normalMap"), DEFERRED_BUFFER_NORMAL_UNIT)); @@ -226,9 +212,9 @@ static gpu::ShaderPointer makeLightProgram(const gpu::ShaderPointer& vertShader, return program; } -static void loadLightProgram(const gpu::ShaderPointer& vertShader, const gpu::ShaderPointer& fragShader, bool lightVolume, gpu::PipelinePointer& pipeline, LightLocationsPtr& locations) { +static void loadLightProgram(int programId, bool lightVolume, gpu::PipelinePointer& pipeline, LightLocationsPtr& locations) { - gpu::ShaderPointer program = makeLightProgram(vertShader, fragShader, locations); + gpu::ShaderPointer program = makeLightProgram(programId, locations); auto state = std::make_shared(); state->setColorWriteMask(true, true, true, false); diff --git a/libraries/render-utils/src/DrawHaze.cpp b/libraries/render-utils/src/DrawHaze.cpp index 94bac4e3ac..587f997887 100644 --- a/libraries/render-utils/src/DrawHaze.cpp +++ b/libraries/render-utils/src/DrawHaze.cpp @@ -12,15 +12,13 @@ #include "DrawHaze.h" #include -#include +#include #include "StencilMaskPass.h" #include "FramebufferCache.h" #include "HazeStage.h" #include "LightStage.h" -#include "Haze_frag.h" - void HazeConfig::setHazeColor(const glm::vec3 value) { hazeColor = value; } @@ -132,10 +130,7 @@ void DrawHaze::run(const render::RenderContextPointer& renderContext, const Inpu RenderArgs* args = renderContext->args; if (!_hazePipeline) { - gpu::ShaderPointer ps = Haze_frag::getShader(); - gpu::ShaderPointer vs = gpu::StandardShaderLib::getDrawViewportQuadTransformTexcoordVS(); - - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::haze); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setBlendFunction(true, diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index f8f49921a3..60ac75619e 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -23,36 +23,17 @@ #include #include +#include +#include +#include +#include #include "TextureCache.h" #include "RenderUtilsLogging.h" #include "StencilMaskPass.h" #include "FadeEffect.h" -#include "gpu/StandardShaderLib.h" -#include "graphics/TextureMap.h" -#include "graphics/BufferViewHelpers.h" -#include "render/Args.h" - -#include "standardTransformPNTC_vert.h" -#include "standardDrawTexture_frag.h" - -#include "simple_vert.h" -#include "simple_textured_frag.h" -#include "simple_transparent_textured_frag.h" -#include "simple_textured_unlit_frag.h" -#include "simple_fade_vert.h" -#include "simple_textured_fade_frag.h" -#include "simple_textured_unlit_fade_frag.h" -#include "simple_opaque_web_browser_frag.h" -#include "simple_transparent_web_browser_frag.h" -#include "glowLine_vert.h" -#include "glowLine_frag.h" - -#include "forward_simple_textured_frag.h" -#include "forward_simple_textured_transparent_frag.h" -#include "forward_simple_textured_unlit_frag.h" #include "DeferredLightingEffect.h" @@ -63,8 +44,6 @@ static const QString RENDER_FORWARD{ "HIFI_RENDER_FORWARD" }; static bool DISABLE_DEFERRED = QProcessEnvironment::systemEnvironment().contains(RENDER_FORWARD); #endif -#include "grid_frag.h" - //#define WANT_DEBUG // @note: Originally size entity::NUM_SHAPES @@ -2052,9 +2031,7 @@ void GeometryCache::renderGlowLine(gpu::Batch& batch, const glm::vec3& p1, const static std::once_flag once; std::call_once(once, [&] { auto state = std::make_shared(); - auto VS = glowLine_vert::getShader(); - auto PS = glowLine_frag::getShader(); - auto program = gpu::Shader::createProgram(VS, PS); + auto program = gpu::Shader::createProgram(shader::render_utils::program::glowLine); state->setCullMode(gpu::State::CULL_NONE); state->setDepthTest(true, false, gpu::LESS_EQUAL); state->setBlendFunction(true, @@ -2109,9 +2086,7 @@ void GeometryCache::renderGlowLine(gpu::Batch& batch, const glm::vec3& p1, const void GeometryCache::useSimpleDrawPipeline(gpu::Batch& batch, bool noBlend) { static std::once_flag once; std::call_once(once, [&]() { - auto vs = standardTransformPNTC_vert::getShader(); - auto ps = standardDrawTexture_frag::getShader(); - auto program = gpu::Shader::createProgram(vs, ps); + auto program = gpu::Shader::createProgram(shader::render_utils::program::standardDrawTexture); auto state = std::make_shared(); @@ -2125,8 +2100,8 @@ void GeometryCache::useSimpleDrawPipeline(gpu::Batch& batch, bool noBlend) { auto stateNoBlend = std::make_shared(); PrepareStencil::testMaskDrawShape(*stateNoBlend); - auto noBlendPS = gpu::StandardShaderLib::getDrawTextureOpaquePS(); - auto programNoBlend = gpu::Shader::createProgram(vs, noBlendPS); + auto noBlendPS = gpu::Shader::createVertex(shader::gpu::fragment::DrawTextureOpaque); + auto programNoBlend = gpu::Shader::createProgram(shader::render_utils::program::standardDrawTextureNoBlend); _standardDrawPipelineNoBlend = gpu::Pipeline::create(programNoBlend, stateNoBlend); @@ -2145,9 +2120,7 @@ void GeometryCache::useSimpleDrawPipeline(gpu::Batch& batch, bool noBlend) { void GeometryCache::useGridPipeline(gpu::Batch& batch, GridBuffer gridBuffer, bool isLayered) { if (!_gridPipeline) { - auto vs = standardTransformPNTC_vert::getShader(); - auto ps = grid_frag::getShader(); - auto program = gpu::Shader::createProgram(vs, ps); + auto program = gpu::Shader::createProgram(shader::render_utils::program::grid); gpu::Shader::makeProgram((*program)); _gridSlot = program->getUniformBuffers().findLocation("gridBuffer"); @@ -2229,9 +2202,9 @@ inline bool operator==(const SimpleProgramKey& a, const SimpleProgramKey& b) { return a.getRaw() == b.getRaw(); } -static void buildWebShader(const gpu::ShaderPointer& vertShader, const gpu::ShaderPointer& fragShader, bool blendEnable, +static void buildWebShader(int programId, bool blendEnable, gpu::ShaderPointer& shaderPointerOut, gpu::PipelinePointer& pipelinePointerOut) { - shaderPointerOut = gpu::Shader::createProgram(vertShader, fragShader); + shaderPointerOut = gpu::Shader::createProgram(programId); gpu::Shader::BindingSet slotBindings; gpu::Shader::makeProgram(*shaderPointerOut, slotBindings); @@ -2254,8 +2227,8 @@ void GeometryCache::bindWebBrowserProgram(gpu::Batch& batch, bool transparent) { gpu::PipelinePointer GeometryCache::getWebBrowserProgram(bool transparent) { static std::once_flag once; std::call_once(once, [&]() { - buildWebShader(simple_vert::getShader(), simple_opaque_web_browser_frag::getShader(), false, _simpleOpaqueWebBrowserShader, _simpleOpaqueWebBrowserPipeline); - buildWebShader(simple_vert::getShader(), simple_transparent_web_browser_frag::getShader(), true, _simpleTransparentWebBrowserShader, _simpleTransparentWebBrowserPipeline); + buildWebShader(shader::render_utils::program::simple_opaque_web_browser, false, _simpleOpaqueWebBrowserShader, _simpleOpaqueWebBrowserPipeline); + buildWebShader(shader::render_utils::program::simple_transparent_web_browser, true, _simpleTransparentWebBrowserShader, _simpleTransparentWebBrowserPipeline); }); return transparent ? _simpleTransparentWebBrowserPipeline : _simpleOpaqueWebBrowserPipeline; @@ -2284,15 +2257,15 @@ gpu::PipelinePointer GeometryCache::getSimplePipeline(bool textured, bool transp if (!fading) { static std::once_flag once; std::call_once(once, [&]() { - auto VS = simple_vert::getShader(); - auto PS = DISABLE_DEFERRED ? forward_simple_textured_frag::getShader() : simple_textured_frag::getShader(); + using namespace shader::render_utils::program; + auto PS = DISABLE_DEFERRED ? forward_simple_textured : simple_textured; // Use the forward pipeline for both here, otherwise transparents will be unlit - auto PSTransparent = DISABLE_DEFERRED ? forward_simple_textured_transparent_frag::getShader() : forward_simple_textured_transparent_frag::getShader(); - auto PSUnlit = DISABLE_DEFERRED ? forward_simple_textured_unlit_frag::getShader() : simple_textured_unlit_frag::getShader(); + auto PSTransparent = DISABLE_DEFERRED ? forward_simple_textured_transparent : forward_simple_textured_transparent; + auto PSUnlit = DISABLE_DEFERRED ? forward_simple_textured_unlit : simple_textured_unlit; - _simpleShader = gpu::Shader::createProgram(VS, PS); - _transparentShader = gpu::Shader::createProgram(VS, PSTransparent); - _unlitShader = gpu::Shader::createProgram(VS, PSUnlit); + _simpleShader = gpu::Shader::createProgram(PS); + _transparentShader = gpu::Shader::createProgram(PSTransparent); + _unlitShader = gpu::Shader::createProgram(PSUnlit); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("originalTexture"), render::ShapePipeline::Slot::MAP::ALBEDO)); @@ -2307,12 +2280,9 @@ gpu::PipelinePointer GeometryCache::getSimplePipeline(bool textured, bool transp } else { static std::once_flag once; std::call_once(once, [&]() { - auto VS = simple_fade_vert::getShader(); - auto PS = DISABLE_DEFERRED ? forward_simple_textured_frag::getShader() : simple_textured_fade_frag::getShader(); - auto PSUnlit = DISABLE_DEFERRED ? forward_simple_textured_unlit_frag::getShader() : simple_textured_unlit_fade_frag::getShader(); - - _simpleFadeShader = gpu::Shader::createProgram(VS, PS); - _unlitFadeShader = gpu::Shader::createProgram(VS, PSUnlit); + using namespace shader::render_utils::program; + _simpleFadeShader = gpu::Shader::createProgram(DISABLE_DEFERRED ? forward_simple_textured : simple_textured_fade); + _unlitFadeShader = gpu::Shader::createProgram(DISABLE_DEFERRED ? forward_simple_textured_unlit : simple_textured_unlit_fade); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("originalTexture"), render::ShapePipeline::Slot::MAP::ALBEDO)); diff --git a/libraries/render-utils/src/HighlightEffect.cpp b/libraries/render-utils/src/HighlightEffect.cpp index 6c8a90da81..a07d24c106 100644 --- a/libraries/render-utils/src/HighlightEffect.cpp +++ b/libraries/render-utils/src/HighlightEffect.cpp @@ -10,25 +10,19 @@ // #include "HighlightEffect.h" -#include "GeometryCache.h" - -#include "CubeProjectedPolygon.h" +#include #include #include -#include "gpu/Context.h" -#include "gpu/StandardShaderLib.h" +#include +#include + +#include "GeometryCache.h" +#include "CubeProjectedPolygon.h" + -#include -#include "surfaceGeometry_copyDepth_frag.h" -#include "debug_deferred_buffer_vert.h" -#include "debug_deferred_buffer_frag.h" -#include "Highlight_frag.h" -#include "Highlight_filled_frag.h" -#include "Highlight_aabox_vert.h" -#include "nop_frag.h" using namespace render; @@ -133,9 +127,7 @@ void DrawHighlightMask::run(const render::RenderContextPointer& renderContext, c fillState->setColorWriteMask(false, false, false, false); fillState->setCullMode(gpu::State::CULL_FRONT); - auto vs = Highlight_aabox_vert::getShader(); - auto ps = nop_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::highlight_aabox); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("ssbo0Buffer"), BOUNDS_SLOT)); @@ -327,9 +319,7 @@ const gpu::PipelinePointer& DrawHighlight::getPipeline(const render::HighlightSt state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); state->setStencilTest(true, 0, gpu::State::StencilTest(OUTLINE_STENCIL_MASK, 0xFF, gpu::EQUAL)); - auto vs = gpu::StandardShaderLib::getDrawViewportQuadTransformTexcoordVS(); - auto ps = Highlight_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::highlight); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding("highlightParamsBuffer", HIGHLIGHT_PARAMS_SLOT)); @@ -340,8 +330,7 @@ const gpu::PipelinePointer& DrawHighlight::getPipeline(const render::HighlightSt _pipeline = gpu::Pipeline::create(program, state); - ps = Highlight_filled_frag::getShader(); - program = gpu::Shader::createProgram(vs, ps); + program = gpu::Shader::createProgram(shader::render_utils::program::highlight_filled); gpu::Shader::makeProgram(*program, slotBindings); _pipelineFilled = gpu::Pipeline::create(program, state); } @@ -406,7 +395,7 @@ void DebugHighlight::run(const render::RenderContextPointer& renderContext, cons } void DebugHighlight::initializePipelines() { - static const std::string FRAGMENT_SHADER{ debug_deferred_buffer_frag::getSource() }; + static const std::string FRAGMENT_SHADER{ gpu::Shader::getFragmentShaderSource(shader::render_utils::fragment::debug_deferred_buffer).getCode() }; static const std::string SOURCE_PLACEHOLDER{ "//SOURCE_PLACEHOLDER" }; static const auto SOURCE_PLACEHOLDER_INDEX = FRAGMENT_SHADER.find(SOURCE_PLACEHOLDER); Q_ASSERT_X(SOURCE_PLACEHOLDER_INDEX != std::string::npos, Q_FUNC_INFO, @@ -416,17 +405,17 @@ void DebugHighlight::initializePipelines() { state->setDepthTest(gpu::State::DepthTest(false, false)); state->setStencilTest(true, 0, gpu::State::StencilTest(OUTLINE_STENCIL_MASK, 0xFF, gpu::EQUAL)); - const auto vs = debug_deferred_buffer_vert::getShader(); + const auto vs = gpu::Shader::createVertex(shader::render_utils::vertex::debug_deferred_buffer); // Depth shader { - static const std::string DEPTH_SHADER{ - "vec4 getFragmentColor() {" - " float Zdb = texelFetch(depthMap, ivec2(gl_FragCoord.xy), 0).x;" - " Zdb = 1.0-(1.0-Zdb)*100;" - " return vec4(Zdb, Zdb, Zdb, 1.0); " - "}" - }; + static const std::string DEPTH_SHADER{ R"SHADER( + vec4 getFragmentColor() { + float Zdb = texelFetch(depthMap, ivec2(gl_FragCoord.xy), 0).x; + Zdb = 1.0-(1.0-Zdb)*100; + return vec4(Zdb, Zdb, Zdb, 1.0); + } + )SHADER" }; auto fragmentShader = FRAGMENT_SHADER; fragmentShader.replace(SOURCE_PLACEHOLDER_INDEX, SOURCE_PLACEHOLDER.size(), DEPTH_SHADER); @@ -572,21 +561,13 @@ const render::Varying DrawHighlightTask::addSelectItemJobs(JobModel& task, const return task.addJob("TransparentSelection", selectItemInput); } -#include "model_shadow_vert.h" -#include "skin_model_shadow_vert.h" - -#include "model_shadow_frag.h" - void DrawHighlightTask::initMaskPipelines(render::ShapePlumber& shapePlumber, gpu::StatePointer state) { - auto modelVertex = model_shadow_vert::getShader(); - auto modelPixel = model_shadow_frag::getShader(); - gpu::ShaderPointer modelProgram = gpu::Shader::createProgram(modelVertex, modelPixel); + gpu::ShaderPointer modelProgram = gpu::Shader::createProgram(shader::render_utils::program::model_shadow); shapePlumber.addPipeline( ShapeKey::Filter::Builder().withoutSkinned(), modelProgram, state); - auto skinVertex = skin_model_shadow_vert::getShader(); - gpu::ShaderPointer skinProgram = gpu::Shader::createProgram(skinVertex, modelPixel); + gpu::ShaderPointer skinProgram = gpu::Shader::createProgram(shader::render_utils::program::skin_model_shadow); shapePlumber.addPipeline( ShapeKey::Filter::Builder().withSkinned(), skinProgram, state); diff --git a/libraries/render-utils/src/LightClusters.cpp b/libraries/render-utils/src/LightClusters.cpp index fdd9ea461f..87698cab44 100644 --- a/libraries/render-utils/src/LightClusters.cpp +++ b/libraries/render-utils/src/LightClusters.cpp @@ -9,24 +9,13 @@ // #include "LightClusters.h" -#include "RenderUtilsLogging.h" - #include +#include -#include - +#include "RenderUtilsLogging.h" #include "StencilMaskPass.h" -#include "lightClusters_drawGrid_vert.h" -#include "lightClusters_drawGrid_frag.h" - -//#include "lightClusters_drawClusterFromDepth_vert.h" -#include "lightClusters_drawClusterFromDepth_frag.h" - - -#include "lightClusters_drawClusterContent_vert.h" -#include "lightClusters_drawClusterContent_frag.h" enum LightClusterGridShader_MapSlot { DEFERRED_BUFFER_LINEAR_DEPTH_UNIT = 0, @@ -605,9 +594,7 @@ void DebugLightClusters::configure(const Config& config) { const gpu::PipelinePointer DebugLightClusters::getDrawClusterGridPipeline() { if (!_drawClusterGrid) { - auto vs = lightClusters_drawGrid_vert::getShader(); - auto ps = lightClusters_drawGrid_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::lightClusters_drawGrid); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("frustumGridBuffer"), LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT)); @@ -633,10 +620,7 @@ const gpu::PipelinePointer DebugLightClusters::getDrawClusterGridPipeline() { const gpu::PipelinePointer DebugLightClusters::getDrawClusterFromDepthPipeline() { if (!_drawClusterFromDepth) { - // auto vs = gpu::Shader::createVertex(std::string(lightClusters_drawGrid_vert)); - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = lightClusters_drawClusterFromDepth_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::lightClusters_drawClusterFromDepth); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("frustumGridBuffer"), LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT)); @@ -663,11 +647,7 @@ const gpu::PipelinePointer DebugLightClusters::getDrawClusterFromDepthPipeline() const gpu::PipelinePointer DebugLightClusters::getDrawClusterContentPipeline() { if (!_drawClusterContent) { - // auto vs = gpu::Shader::createVertex(std::string(lightClusters_drawClusterContent_vert)); - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = lightClusters_drawClusterContent_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::lightClusters_drawClusterContent); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("lightBuffer"), LIGHT_GPU_SLOT)); diff --git a/libraries/render-utils/src/RenderForwardTask.cpp b/libraries/render-utils/src/RenderForwardTask.cpp index d2933627f4..c6cc97f0b6 100755 --- a/libraries/render-utils/src/RenderForwardTask.cpp +++ b/libraries/render-utils/src/RenderForwardTask.cpp @@ -17,7 +17,6 @@ #include #include #include -#include #include @@ -34,8 +33,6 @@ #include "RenderCommonTask.h" #include "LightStage.h" -#include "nop_frag.h" - using namespace render; extern void initForwardPipelines(ShapePlumber& plumber); diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index 6a653bb192..f44325d353 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -15,89 +15,13 @@ #include #include -#include #include +#include +#include #include "StencilMaskPass.h" #include "DeferredLightingEffect.h" #include "TextureCache.h" -#include "render/DrawTask.h" - -#include "model_vert.h" -#include "model_normal_map_vert.h" -#include "model_lightmap_vert.h" -#include "model_lightmap_normal_map_vert.h" -#include "skin_model_vert.h" -#include "skin_model_normal_map_vert.h" -#include "skin_model_dq_vert.h" -#include "skin_model_normal_map_dq_vert.h" - -#include "model_lightmap_fade_vert.h" -#include "model_lightmap_normal_map_fade_vert.h" -#include "model_translucent_vert.h" -#include "model_translucent_normal_map_vert.h" -#include "skin_model_fade_vert.h" -#include "skin_model_normal_map_fade_vert.h" -#include "skin_model_fade_dq_vert.h" -#include "skin_model_normal_map_fade_dq_vert.h" - -#include "simple_vert.h" -#include "simple_textured_frag.h" -#include "simple_textured_unlit_frag.h" -#include "simple_transparent_textured_frag.h" -#include "simple_transparent_textured_unlit_frag.h" - -#include "simple_fade_vert.h" -#include "simple_textured_fade_frag.h" -#include "simple_textured_unlit_fade_frag.h" -#include "simple_transparent_textured_fade_frag.h" -#include "simple_transparent_textured_unlit_fade_frag.h" - -#include "model_frag.h" -#include "model_unlit_frag.h" -#include "model_normal_map_frag.h" -#include "model_fade_vert.h" -#include "model_normal_map_fade_vert.h" - -#include "model_fade_frag.h" -#include "model_unlit_fade_frag.h" -#include "model_normal_map_fade_frag.h" - -#include "forward_model_frag.h" -#include "forward_model_unlit_frag.h" -#include "forward_model_normal_map_frag.h" -#include "forward_model_translucent_frag.h" - -#include "model_lightmap_frag.h" -#include "model_lightmap_normal_map_frag.h" -#include "model_translucent_frag.h" -#include "model_translucent_unlit_frag.h" -#include "model_translucent_normal_map_frag.h" - -#include "model_lightmap_fade_frag.h" -#include "model_lightmap_normal_map_fade_frag.h" -#include "model_translucent_fade_frag.h" -#include "model_translucent_unlit_fade_frag.h" -#include "model_translucent_normal_map_fade_frag.h" - -#include "model_shadow_vert.h" -#include "skin_model_shadow_vert.h" -#include "skin_model_shadow_dq_vert.h" -#include "skin_model_shadow_fade_dq_vert.h" - -#include "model_shadow_frag.h" -#include "skin_model_shadow_frag.h" - -#include "model_shadow_fade_vert.h" -#include "skin_model_shadow_fade_vert.h" - -#include "model_shadow_fade_frag.h" -#include "skin_model_shadow_fade_frag.h" - -#include "simple_vert.h" -#include "forward_simple_textured_frag.h" -#include "forward_simple_textured_transparent_frag.h" -#include "forward_simple_textured_unlit_frag.h" using namespace render; using namespace std::placeholders; @@ -107,7 +31,7 @@ void initForwardPipelines(ShapePlumber& plumber); void initZPassPipelines(ShapePlumber& plumber, gpu::StatePointer state); void addPlumberPipeline(ShapePlumber& plumber, - const ShapeKey& key, const gpu::ShaderPointer& vertex, const gpu::ShaderPointer& pixel, + const ShapeKey& key, int programId, const render::ShapePipeline::BatchSetter& batchSetter, const render::ShapePipeline::ItemSetter& itemSetter); void batchSetter(const ShapePipeline& pipeline, gpu::Batch& batch, RenderArgs* args); @@ -115,326 +39,239 @@ void lightBatchSetter(const ShapePipeline& pipeline, gpu::Batch& batch, RenderAr static bool forceLightBatchSetter{ false }; void initDeferredPipelines(render::ShapePlumber& plumber, const render::ShapePipeline::BatchSetter& batchSetter, const render::ShapePipeline::ItemSetter& itemSetter) { - // Vertex shaders - auto simpleVertex = simple_vert::getShader(); - auto modelVertex = model_vert::getShader(); - auto modelNormalMapVertex = model_normal_map_vert::getShader(); - auto modelLightmapVertex = model_lightmap_vert::getShader(); - auto modelLightmapNormalMapVertex = model_lightmap_normal_map_vert::getShader(); - auto modelTranslucentVertex = model_translucent_vert::getShader(); - auto modelTranslucentNormalMapVertex = model_translucent_normal_map_vert::getShader(); - auto modelShadowVertex = model_shadow_vert::getShader(); - - auto modelLightmapFadeVertex = model_lightmap_fade_vert::getShader(); - auto modelLightmapNormalMapFadeVertex = model_lightmap_normal_map_fade_vert::getShader(); - - // matrix palette skinned - auto skinModelVertex = skin_model_vert::getShader(); - auto skinModelNormalMapVertex = skin_model_normal_map_vert::getShader(); - auto skinModelShadowVertex = skin_model_shadow_vert::getShader(); - auto skinModelFadeVertex = skin_model_fade_vert::getShader(); - auto skinModelNormalMapFadeVertex = skin_model_normal_map_fade_vert::getShader(); - auto skinModelTranslucentVertex = skinModelFadeVertex; // We use the same because it ouputs world position per vertex - auto skinModelNormalMapTranslucentVertex = skinModelNormalMapFadeVertex; // We use the same because it ouputs world position per vertex - - // dual quaternion skinned - auto skinModelDualQuatVertex = skin_model_dq_vert::getShader(); - auto skinModelNormalMapDualQuatVertex = skin_model_normal_map_dq_vert::getShader(); - auto skinModelShadowDualQuatVertex = skin_model_shadow_dq_vert::getShader(); - auto skinModelShadowFadeDualQuatVertex = skin_model_shadow_fade_dq_vert::getShader(); - auto skinModelFadeDualQuatVertex = skin_model_fade_dq_vert::getShader(); - auto skinModelNormalMapFadeDualQuatVertex = skin_model_normal_map_fade_dq_vert::getShader(); - auto skinModelTranslucentDualQuatVertex = skinModelFadeDualQuatVertex; // We use the same because it ouputs world position per vertex - auto skinModelNormalMapTranslucentDualQuatVertex = skinModelNormalMapFadeDualQuatVertex; // We use the same because it ouputs world position per vertex - - auto modelFadeVertex = model_fade_vert::getShader(); - auto modelNormalMapFadeVertex = model_normal_map_fade_vert::getShader(); - auto simpleFadeVertex = simple_fade_vert::getShader(); - auto modelShadowFadeVertex = model_shadow_fade_vert::getShader(); - auto skinModelShadowFadeVertex = skin_model_shadow_fade_vert::getShader(); - - // Pixel shaders - auto simplePixel = simple_textured_frag::getShader(); - auto simpleUnlitPixel = simple_textured_unlit_frag::getShader(); - auto simpleTranslucentPixel = simple_transparent_textured_frag::getShader(); - auto simpleTranslucentUnlitPixel = simple_transparent_textured_unlit_frag::getShader(); - auto modelPixel = model_frag::getShader(); - auto modelUnlitPixel = model_unlit_frag::getShader(); - auto modelNormalMapPixel = model_normal_map_frag::getShader(); - auto modelTranslucentPixel = model_translucent_frag::getShader(); - auto modelTranslucentUnlitPixel = model_translucent_unlit_frag::getShader(); - auto modelTranslucentNormalMapPixel = model_translucent_normal_map_frag::getShader(); - auto modelShadowPixel = model_shadow_frag::getShader(); - auto modelLightmapPixel = model_lightmap_frag::getShader(); - auto modelLightmapNormalMapPixel = model_lightmap_normal_map_frag::getShader(); - auto modelLightmapFadePixel = model_lightmap_fade_frag::getShader(); - auto modelLightmapNormalMapFadePixel = model_lightmap_normal_map_fade_frag::getShader(); - - auto modelFadePixel = model_fade_frag::getShader(); - auto modelUnlitFadePixel = model_unlit_fade_frag::getShader(); - auto modelNormalMapFadePixel = model_normal_map_fade_frag::getShader(); - auto modelShadowFadePixel = model_shadow_fade_frag::getShader(); - auto modelTranslucentFadePixel = model_translucent_fade_frag::getShader(); - auto modelTranslucentUnlitFadePixel = model_translucent_unlit_fade_frag::getShader(); - auto modelTranslucentNormalMapFadePixel = model_translucent_normal_map_fade_frag::getShader(); - auto simpleFadePixel = simple_textured_fade_frag::getShader(); - auto simpleUnlitFadePixel = simple_textured_unlit_fade_frag::getShader(); - auto simpleTranslucentFadePixel = simple_transparent_textured_fade_frag::getShader(); - auto simpleTranslucentUnlitFadePixel = simple_transparent_textured_unlit_fade_frag::getShader(); - + using namespace shader::render_utils::program; using Key = render::ShapeKey; - auto addPipeline = std::bind(&addPlumberPipeline, std::ref(plumber), _1, _2, _3, _4, _5); + auto addPipeline = std::bind(&addPlumberPipeline, std::ref(plumber), _1, _2, _3, _4); // TODO: Refactor this to use a filter // Opaques addPipeline( Key::Builder().withMaterial(), - modelVertex, modelPixel, nullptr, nullptr); + model, nullptr, nullptr); addPipeline( Key::Builder(), - simpleVertex, simplePixel, nullptr, nullptr); + simple_textured, nullptr, nullptr); addPipeline( Key::Builder().withMaterial().withUnlit(), - modelVertex, modelUnlitPixel, nullptr, nullptr); + model_unlit, nullptr, nullptr); addPipeline( Key::Builder().withUnlit(), - simpleVertex, simpleUnlitPixel, nullptr, nullptr); + simple_textured_unlit, nullptr, nullptr); addPipeline( Key::Builder().withMaterial().withTangents(), - modelNormalMapVertex, modelNormalMapPixel, nullptr, nullptr); + model_normal_map, nullptr, nullptr); // Same thing but with Fade on addPipeline( Key::Builder().withMaterial().withFade(), - modelFadeVertex, modelFadePixel, batchSetter, itemSetter); + model_fade, batchSetter, itemSetter); addPipeline( Key::Builder().withFade(), - simpleFadeVertex, simpleFadePixel, batchSetter, itemSetter); + simple_textured_fade, batchSetter, itemSetter); addPipeline( Key::Builder().withMaterial().withUnlit().withFade(), - modelFadeVertex, modelUnlitFadePixel, batchSetter, itemSetter); + model_unlit_fade, batchSetter, itemSetter); addPipeline( Key::Builder().withUnlit().withFade(), - simpleFadeVertex, simpleUnlitFadePixel, batchSetter, itemSetter); + simple_textured_unlit_fade, batchSetter, itemSetter); addPipeline( Key::Builder().withMaterial().withTangents().withFade(), - modelNormalMapFadeVertex, modelNormalMapFadePixel, batchSetter, itemSetter); + model_normal_map_fade, batchSetter, itemSetter); // Translucents addPipeline( Key::Builder().withMaterial().withTranslucent(), - modelTranslucentVertex, modelTranslucentPixel, nullptr, nullptr); + model_translucent, nullptr, nullptr); addPipeline( Key::Builder().withTranslucent(), - simpleVertex, simpleTranslucentPixel, nullptr, nullptr); + simple_transparent_textured, nullptr, nullptr); addPipeline( Key::Builder().withMaterial().withTranslucent().withUnlit(), - modelVertex, modelTranslucentUnlitPixel, nullptr, nullptr); + model_translucent_unlit, nullptr, nullptr); addPipeline( Key::Builder().withTranslucent().withUnlit(), - simpleVertex, simpleTranslucentUnlitPixel, nullptr, nullptr); + simple_transparent_textured_unlit, nullptr, nullptr); addPipeline( Key::Builder().withMaterial().withTranslucent().withTangents(), - modelTranslucentNormalMapVertex, modelTranslucentNormalMapPixel, nullptr, nullptr); + model_translucent_normal_map, nullptr, nullptr); addPipeline( // FIXME: Ignore lightmap for translucents meshpart Key::Builder().withMaterial().withTranslucent().withLightmap(), - modelTranslucentVertex, modelTranslucentPixel, nullptr, nullptr); + model_translucent, nullptr, nullptr); // Same thing but with Fade on addPipeline( Key::Builder().withMaterial().withTranslucent().withFade(), - modelTranslucentVertex, modelTranslucentFadePixel, batchSetter, itemSetter); + model_translucent_fade, batchSetter, itemSetter); addPipeline( Key::Builder().withTranslucent().withFade(), - simpleFadeVertex, simpleTranslucentFadePixel, batchSetter, itemSetter); + simple_transparent_textured_fade, batchSetter, itemSetter); addPipeline( Key::Builder().withMaterial().withTranslucent().withUnlit().withFade(), - modelFadeVertex, modelTranslucentUnlitFadePixel, batchSetter, itemSetter); + model_translucent_unlit_fade, batchSetter, itemSetter); addPipeline( Key::Builder().withTranslucent().withUnlit().withFade(), - simpleFadeVertex, simpleTranslucentUnlitFadePixel, batchSetter, itemSetter); + simple_transparent_textured_unlit_fade, batchSetter, itemSetter); addPipeline( Key::Builder().withMaterial().withTranslucent().withTangents().withFade(), - modelTranslucentNormalMapVertex, modelTranslucentNormalMapFadePixel, batchSetter, itemSetter); + model_translucent_normal_map_fade, batchSetter, itemSetter); addPipeline( // FIXME: Ignore lightmap for translucents meshpart Key::Builder().withMaterial().withTranslucent().withLightmap().withFade(), - modelFadeVertex, modelTranslucentFadePixel, batchSetter, itemSetter); - + model_translucent_fade, batchSetter, itemSetter); // Lightmapped addPipeline( Key::Builder().withMaterial().withLightmap(), - modelLightmapVertex, modelLightmapPixel, nullptr, nullptr); + model_lightmap, nullptr, nullptr); addPipeline( Key::Builder().withMaterial().withLightmap().withTangents(), - modelLightmapNormalMapVertex, modelLightmapNormalMapPixel, nullptr, nullptr); + model_lightmap_normal_map, nullptr, nullptr); // Same thing but with Fade on addPipeline( Key::Builder().withMaterial().withLightmap().withFade(), - modelLightmapFadeVertex, modelLightmapFadePixel, batchSetter, itemSetter); + model_lightmap_fade, batchSetter, itemSetter); addPipeline( Key::Builder().withMaterial().withLightmap().withTangents().withFade(), - modelLightmapNormalMapFadeVertex, modelLightmapNormalMapFadePixel, batchSetter, itemSetter); + model_lightmap_normal_map_fade, batchSetter, itemSetter); // matrix palette skinned addPipeline( Key::Builder().withMaterial().withSkinned(), - skinModelVertex, modelPixel, nullptr, nullptr); + skin_model, nullptr, nullptr); addPipeline( Key::Builder().withMaterial().withSkinned().withTangents(), - skinModelNormalMapVertex, modelNormalMapPixel, nullptr, nullptr); + skin_model_normal_map, nullptr, nullptr); // Same thing but with Fade on addPipeline( Key::Builder().withMaterial().withSkinned().withFade(), - skinModelFadeVertex, modelFadePixel, batchSetter, itemSetter); + skin_model_fade, batchSetter, itemSetter); addPipeline( Key::Builder().withMaterial().withSkinned().withTangents().withFade(), - skinModelNormalMapFadeVertex, modelNormalMapFadePixel, batchSetter, itemSetter); - + skin_model_normal_map_fade, batchSetter, itemSetter); // matrix palette skinned and translucent addPipeline( Key::Builder().withMaterial().withSkinned().withTranslucent(), - skinModelTranslucentVertex, modelTranslucentPixel, nullptr, nullptr); + skin_model_translucent, nullptr, nullptr); addPipeline( Key::Builder().withMaterial().withSkinned().withTranslucent().withTangents(), - skinModelNormalMapTranslucentVertex, modelTranslucentNormalMapPixel, nullptr, nullptr); + skin_model_normal_map_translucent, nullptr, nullptr); // Same thing but with Fade on addPipeline( Key::Builder().withMaterial().withSkinned().withTranslucent().withFade(), - skinModelFadeVertex, modelTranslucentFadePixel, batchSetter, itemSetter); + skin_model_translucent_fade, batchSetter, itemSetter); addPipeline( Key::Builder().withMaterial().withSkinned().withTranslucent().withTangents().withFade(), - skinModelNormalMapFadeVertex, modelTranslucentNormalMapFadePixel, batchSetter, itemSetter); + skin_model_normal_map_translucent_fade, batchSetter, itemSetter); // dual quaternion skinned addPipeline( Key::Builder().withMaterial().withSkinned().withDualQuatSkinned(), - skinModelDualQuatVertex, modelPixel, nullptr, nullptr); + skin_model_dq, nullptr, nullptr); addPipeline( Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withTangents(), - skinModelNormalMapDualQuatVertex, modelNormalMapPixel, nullptr, nullptr); + skin_model_normal_map_dq, nullptr, nullptr); // Same thing but with Fade on addPipeline( Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withFade(), - skinModelFadeDualQuatVertex, modelFadePixel, batchSetter, itemSetter); + skin_model_fade_dq, batchSetter, itemSetter); addPipeline( Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withTangents().withFade(), - skinModelNormalMapFadeDualQuatVertex, modelNormalMapFadePixel, batchSetter, itemSetter); - + skin_model_normal_map_fade_dq, batchSetter, itemSetter); // dual quaternion skinned and translucent addPipeline( Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withTranslucent(), - skinModelTranslucentDualQuatVertex, modelTranslucentPixel, nullptr, nullptr); + skin_model_translucent_dq, nullptr, nullptr); addPipeline( Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withTranslucent().withTangents(), - skinModelNormalMapTranslucentDualQuatVertex, modelTranslucentNormalMapPixel, nullptr, nullptr); + skin_model_normal_map_translucent_dq, nullptr, nullptr); // Same thing but with Fade on addPipeline( Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withTranslucent().withFade(), - skinModelFadeDualQuatVertex, modelTranslucentFadePixel, batchSetter, itemSetter); + skin_model_translucent_fade_dq, batchSetter, itemSetter); addPipeline( Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withTranslucent().withTangents().withFade(), - skinModelNormalMapFadeDualQuatVertex, modelTranslucentNormalMapFadePixel, batchSetter, itemSetter); + skin_model_normal_map_translucent_fade_dq, batchSetter, itemSetter); // Depth-only addPipeline( Key::Builder().withDepthOnly(), - modelShadowVertex, modelShadowPixel, nullptr, nullptr); + model_shadow, nullptr, nullptr); addPipeline( Key::Builder().withSkinned().withDepthOnly(), - skinModelShadowVertex, modelShadowPixel, nullptr, nullptr); + skin_model_shadow, nullptr, nullptr); // Same thing but with Fade on addPipeline( Key::Builder().withDepthOnly().withFade(), - modelShadowFadeVertex, modelShadowFadePixel, batchSetter, itemSetter); + model_shadow_fade, batchSetter, itemSetter); addPipeline( Key::Builder().withSkinned().withDepthOnly().withFade(), - skinModelShadowFadeVertex, modelShadowFadePixel, batchSetter, itemSetter); + skin_model_shadow_fade, batchSetter, itemSetter); // Now repeat for dual quaternion // Depth-only addPipeline( Key::Builder().withSkinned().withDualQuatSkinned().withDepthOnly(), - skinModelShadowDualQuatVertex, modelShadowPixel, nullptr, nullptr); + skin_model_shadow_dq, nullptr, nullptr); // Same thing but with Fade on addPipeline( Key::Builder().withSkinned().withDualQuatSkinned().withDepthOnly().withFade(), - skinModelShadowFadeDualQuatVertex, modelShadowFadePixel, batchSetter, itemSetter); + skin_model_shadow_fade_dq, batchSetter, itemSetter); } void initForwardPipelines(ShapePlumber& plumber) { - // Vertex shaders - auto simpleVertex = simple_vert::getShader(); - auto modelVertex = model_vert::getShader(); - auto modelNormalMapVertex = model_normal_map_vert::getShader(); - auto skinModelVertex = skin_model_vert::getShader(); - auto skinModelNormalMapVertex = skin_model_normal_map_vert::getShader(); - - auto skinModelDualQuatVertex = skin_model_dq_vert::getShader(); - auto skinModelNormalMapDualQuatVertex = skin_model_normal_map_dq_vert::getShader(); - - // Pixel shaders - auto simplePixel = forward_simple_textured_frag::getShader(); - auto simpleTranslucentPixel = forward_simple_textured_transparent_frag::getShader(); - auto simpleUnlitPixel = forward_simple_textured_unlit_frag::getShader(); - auto simpleTranslucentUnlitPixel = simple_transparent_textured_unlit_frag::getShader(); - auto modelPixel = forward_model_frag::getShader(); - auto modelUnlitPixel = forward_model_unlit_frag::getShader(); - auto modelNormalMapPixel = forward_model_normal_map_frag::getShader(); - auto modelTranslucentPixel = forward_model_translucent_frag::getShader(); + using namespace shader::render_utils::program; using Key = render::ShapeKey; - auto addPipelineBind = std::bind(&addPlumberPipeline, std::ref(plumber), _1, _2, _3, _4, _5); + auto addPipelineBind = std::bind(&addPlumberPipeline, std::ref(plumber), _1, _2, _3, _4); // Disable fade on the forward pipeline, all shaders get added twice, once with the fade key and once without - auto addPipeline = [&](const ShapeKey& key, const gpu::ShaderPointer& vertex, const gpu::ShaderPointer& pixel) { - addPipelineBind(key, vertex, pixel, nullptr, nullptr); - addPipelineBind(Key::Builder(key).withFade(), vertex, pixel, nullptr, nullptr); + auto addPipeline = [&](const ShapeKey& key, int programId) { + addPipelineBind(key, programId, nullptr, nullptr); + addPipelineBind(Key::Builder(key).withFade(), programId, nullptr, nullptr); }; // Forward pipelines need the lightBatchSetter for opaques and transparents forceLightBatchSetter = true; // Simple Opaques - addPipeline(Key::Builder(), simpleVertex, simplePixel); - addPipeline(Key::Builder().withUnlit(), simpleVertex, simpleUnlitPixel); + addPipeline(Key::Builder(), simple); + addPipeline(Key::Builder().withUnlit(), simpleUnlit); // Simple Translucents - addPipeline(Key::Builder().withTranslucent(), simpleVertex, simpleTranslucentPixel); - addPipeline(Key::Builder().withTranslucent().withUnlit(), simpleVertex, simpleTranslucentUnlitPixel); + addPipeline(Key::Builder().withTranslucent(), simpleTranslucent); + addPipeline(Key::Builder().withTranslucent().withUnlit(), simpleTranslucentUnlit); // Opaques - addPipeline(Key::Builder().withMaterial(), modelVertex, modelPixel); - addPipeline(Key::Builder().withMaterial().withUnlit(), modelVertex, modelUnlitPixel); - addPipeline(Key::Builder().withMaterial().withTangents(), modelNormalMapVertex, modelNormalMapPixel); + addPipeline(Key::Builder().withMaterial(), forward_model); + addPipeline(Key::Builder().withMaterial().withUnlit(), forward_model_unlit); + addPipeline(Key::Builder().withMaterial().withTangents(), forward_model_translucent); // Skinned Opaques - addPipeline(Key::Builder().withMaterial().withSkinned(), skinModelVertex, modelPixel); - addPipeline(Key::Builder().withMaterial().withSkinned().withTangents(), skinModelNormalMapVertex, modelNormalMapPixel); - addPipeline(Key::Builder().withMaterial().withSkinned().withDualQuatSkinned(), skinModelDualQuatVertex, modelPixel); - addPipeline(Key::Builder().withMaterial().withSkinned().withTangents().withDualQuatSkinned(), skinModelNormalMapDualQuatVertex, modelNormalMapPixel); + addPipeline(Key::Builder().withMaterial().withSkinned(), forward_skin_model); + addPipeline(Key::Builder().withMaterial().withSkinned().withTangents(), forward_skin_model_normal_map); + addPipeline(Key::Builder().withMaterial().withSkinned().withDualQuatSkinned(), forward_skin_model_dq); + addPipeline(Key::Builder().withMaterial().withSkinned().withTangents().withDualQuatSkinned(), forward_skin_model_normal_map_dq); // Translucents - addPipeline(Key::Builder().withMaterial().withTranslucent(), modelVertex, modelTranslucentPixel); - addPipeline(Key::Builder().withMaterial().withTranslucent().withTangents(), modelNormalMapVertex, modelTranslucentPixel); + addPipeline(Key::Builder().withMaterial().withTranslucent(), forward_model_translucent); + addPipeline(Key::Builder().withMaterial().withTranslucent().withTangents(), forward_model_normal_map_translucent); // Skinned Translucents - addPipeline(Key::Builder().withMaterial().withSkinned().withTranslucent(), skinModelVertex, modelTranslucentPixel); - addPipeline(Key::Builder().withMaterial().withSkinned().withTranslucent().withTangents(), skinModelNormalMapVertex, modelTranslucentPixel); - addPipeline(Key::Builder().withMaterial().withSkinned().withTranslucent().withDualQuatSkinned(), skinModelDualQuatVertex, modelTranslucentPixel); - addPipeline(Key::Builder().withMaterial().withSkinned().withTranslucent().withTangents().withDualQuatSkinned(), skinModelNormalMapDualQuatVertex, modelTranslucentPixel); + addPipeline(Key::Builder().withMaterial().withSkinned().withTranslucent(), forward_skin_translucent); + addPipeline(Key::Builder().withMaterial().withSkinned().withTranslucent().withTangents(), forward_skin_translucent_normal_map); + addPipeline(Key::Builder().withMaterial().withSkinned().withTranslucent().withDualQuatSkinned(), forward_skin_translucent_dq); + addPipeline(Key::Builder().withMaterial().withSkinned().withTranslucent().withTangents().withDualQuatSkinned(), forward_skin_translucent_normal_map_dq); forceLightBatchSetter = false; } void addPlumberPipeline(ShapePlumber& plumber, - const ShapeKey& key, const gpu::ShaderPointer& vertex, const gpu::ShaderPointer& pixel, + const ShapeKey& key, int programId, const render::ShapePipeline::BatchSetter& extraBatchSetter, const render::ShapePipeline::ItemSetter& itemSetter) { // These key-values' pipelines are added by this functor in addition to the key passed assert(!key.isWireframe()); assert(!key.isDepthBiased()); assert(key.isCullFace()); - gpu::ShaderPointer program = gpu::Shader::createProgram(vertex, pixel); + gpu::ShaderPointer program = gpu::Shader::createProgram(programId); for (int i = 0; i < 8; i++) { bool isCulled = (i & 1); @@ -517,43 +354,33 @@ void lightBatchSetter(const ShapePipeline& pipeline, gpu::Batch& batch, RenderAr } void initZPassPipelines(ShapePlumber& shapePlumber, gpu::StatePointer state) { - auto modelVertex = model_shadow_vert::getShader(); - auto modelPixel = model_shadow_frag::getShader(); - gpu::ShaderPointer modelProgram = gpu::Shader::createProgram(modelVertex, modelPixel); + using namespace shader::render_utils::program; + gpu::ShaderPointer modelProgram = gpu::Shader::createProgram(model_shadow); shapePlumber.addPipeline( ShapeKey::Filter::Builder().withoutSkinned().withoutFade(), modelProgram, state); - auto skinVertex = skin_model_shadow_vert::getShader(); - auto skinPixel = skin_model_shadow_frag::getShader(); - gpu::ShaderPointer skinProgram = gpu::Shader::createProgram(skinVertex, skinPixel); + gpu::ShaderPointer skinProgram = gpu::Shader::createProgram(skin_model_shadow); shapePlumber.addPipeline( ShapeKey::Filter::Builder().withSkinned().withoutDualQuatSkinned().withoutFade(), skinProgram, state); - auto modelFadeVertex = model_shadow_fade_vert::getShader(); - auto modelFadePixel = model_shadow_fade_frag::getShader(); - gpu::ShaderPointer modelFadeProgram = gpu::Shader::createProgram(modelFadeVertex, modelFadePixel); + gpu::ShaderPointer modelFadeProgram = gpu::Shader::createProgram(model_shadow_fade); shapePlumber.addPipeline( ShapeKey::Filter::Builder().withoutSkinned().withFade(), modelFadeProgram, state); - auto skinFadeVertex = skin_model_shadow_fade_vert::getShader(); - auto skinFadePixel = skin_model_shadow_fade_frag::getShader(); - gpu::ShaderPointer skinFadeProgram = gpu::Shader::createProgram(skinFadeVertex, skinFadePixel); + gpu::ShaderPointer skinFadeProgram = gpu::Shader::createProgram(skin_model_shadow_fade); shapePlumber.addPipeline( ShapeKey::Filter::Builder().withSkinned().withoutDualQuatSkinned().withFade(), skinFadeProgram, state); - //Added for dual quaternions - auto skinModelShadowDualQuatVertex = skin_model_shadow_dq_vert::getShader(); - gpu::ShaderPointer skinModelShadowDualQuatProgram = gpu::Shader::createProgram(skinModelShadowDualQuatVertex, skinPixel); + gpu::ShaderPointer skinModelShadowDualQuatProgram = gpu::Shader::createProgram(skin_model_shadow_dq); shapePlumber.addPipeline( ShapeKey::Filter::Builder().withSkinned().withDualQuatSkinned().withoutFade(), skinModelShadowDualQuatProgram, state); - auto skinModelShadowFadeDualQuatVertex = skin_model_shadow_fade_dq_vert::getShader(); - gpu::ShaderPointer skinModelShadowFadeDualQuatProgram = gpu::Shader::createProgram(skinModelShadowFadeDualQuatVertex, skinFadePixel); + gpu::ShaderPointer skinModelShadowFadeDualQuatProgram = gpu::Shader::createProgram(skin_model_shadow_fade_dq); shapePlumber.addPipeline( ShapeKey::Filter::Builder().withSkinned().withDualQuatSkinned().withFade(), skinModelShadowFadeDualQuatProgram, state); diff --git a/libraries/render-utils/src/StencilMaskPass.cpp b/libraries/render-utils/src/StencilMaskPass.cpp index b9b8274039..08fe1bf35a 100644 --- a/libraries/render-utils/src/StencilMaskPass.cpp +++ b/libraries/render-utils/src/StencilMaskPass.cpp @@ -13,11 +13,7 @@ #include #include - - -#include - -#include "stencil_drawMask_frag.h" +#include using namespace render; @@ -43,9 +39,7 @@ graphics::MeshPointer PrepareStencil::getMesh() { gpu::PipelinePointer PrepareStencil::getMeshStencilPipeline() { if (!_meshStencilPipeline) { - auto vs = gpu::StandardShaderLib::getDrawVertexPositionVS(); - auto ps = gpu::StandardShaderLib::getDrawNadaPS(); - auto program = gpu::Shader::createProgram(vs, ps); + auto program = gpu::Shader::createProgram(shader::gpu::program::drawNothing); gpu::Shader::makeProgram((*program)); auto state = std::make_shared(); @@ -59,9 +53,7 @@ gpu::PipelinePointer PrepareStencil::getMeshStencilPipeline() { gpu::PipelinePointer PrepareStencil::getPaintStencilPipeline() { if (!_paintStencilPipeline) { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = stencil_drawMask_frag::getShader(); - auto program = gpu::Shader::createProgram(vs, ps); + auto program = gpu::Shader::createProgram(shader::render_utils::program::stencil_drawMask); gpu::Shader::makeProgram((*program)); auto state = std::make_shared(); diff --git a/libraries/render-utils/src/SubsurfaceScattering.cpp b/libraries/render-utils/src/SubsurfaceScattering.cpp index 1ffa0d2e5c..2c27569269 100644 --- a/libraries/render-utils/src/SubsurfaceScattering.cpp +++ b/libraries/render-utils/src/SubsurfaceScattering.cpp @@ -11,17 +11,12 @@ #include "SubsurfaceScattering.h" #include -#include +#include #include "FramebufferCache.h" #include "DeferredLightingEffect.h" -#include "subsurfaceScattering_makeProfile_frag.h" -#include "subsurfaceScattering_makeLUT_frag.h" -#include "subsurfaceScattering_makeSpecularBeckmann_frag.h" - -#include "subsurfaceScattering_drawScattering_frag.h" enum ScatteringShaderBufferSlots { ScatteringTask_FrameTransformSlot = 0, @@ -307,9 +302,7 @@ void diffuseProfileGPU(gpu::TexturePointer& profileMap, RenderArgs* args) { gpu::PipelinePointer makePipeline; { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = subsurfaceScattering_makeProfile_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::subsurfaceScattering_makeProfile); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); @@ -338,15 +331,11 @@ void diffuseScatterGPU(const gpu::TexturePointer& profileMap, gpu::TexturePointe int width = lut->getWidth(); int height = lut->getHeight(); - gpu::PipelinePointer makePipeline; - - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = subsurfaceScattering_makeLUT_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::subsurfaceScattering_makeLUT); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); - makePipeline = gpu::Pipeline::create(program, state); + gpu::PipelinePointer makePipeline = gpu::Pipeline::create(program, state); auto makeFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("diffuseScatter")); makeFramebuffer->setRenderBuffer(0, lut); @@ -379,9 +368,7 @@ void computeSpecularBeckmannGPU(gpu::TexturePointer& beckmannMap, RenderArgs* ar gpu::PipelinePointer makePipeline; { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = subsurfaceScattering_makeSpecularBeckmann_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::subsurfaceScattering_makeSpecularBeckmann); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); @@ -451,9 +438,7 @@ void DebugSubsurfaceScattering::configure(const Config& config) { gpu::PipelinePointer DebugSubsurfaceScattering::getScatteringPipeline() { if (!_scatteringPipeline) { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = subsurfaceScattering_drawScattering_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::subsurfaceScattering_drawScattering); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ScatteringTask_FrameTransformSlot)); @@ -480,19 +465,12 @@ gpu::PipelinePointer DebugSubsurfaceScattering::getScatteringPipeline() { return _scatteringPipeline; } - gpu::PipelinePointer _showLUTPipeline; -gpu::PipelinePointer getShowLUTPipeline(); + gpu::PipelinePointer DebugSubsurfaceScattering::getShowLUTPipeline() { if (!_showLUTPipeline) { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = gpu::StandardShaderLib::getDrawTextureOpaquePS(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - - gpu::Shader::BindingSet slotBindings; - + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::gpu::program::drawUnitQuatTextureOpaque); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); - _showLUTPipeline = gpu::Pipeline::create(program, state); } diff --git a/libraries/render-utils/src/SurfaceGeometryPass.cpp b/libraries/render-utils/src/SurfaceGeometryPass.cpp index 51046f10b3..fd0200b369 100644 --- a/libraries/render-utils/src/SurfaceGeometryPass.cpp +++ b/libraries/render-utils/src/SurfaceGeometryPass.cpp @@ -13,7 +13,8 @@ #include #include -#include +#include + #include "StencilMaskPass.h" const int DepthLinearPass_FrameTransformSlot = 0; @@ -25,13 +26,6 @@ const int SurfaceGeometryPass_ParamsSlot = 1; const int SurfaceGeometryPass_DepthMapSlot = 0; const int SurfaceGeometryPass_NormalMapSlot = 1; -#include "surfaceGeometry_makeLinearDepth_frag.h" -#include "surfaceGeometry_downsampleDepthNormal_frag.h" - -#include "surfaceGeometry_makeCurvature_frag.h" - - - LinearDepthFramebuffer::LinearDepthFramebuffer() { } @@ -212,9 +206,7 @@ void LinearDepthPass::run(const render::RenderContextPointer& renderContext, con const gpu::PipelinePointer& LinearDepthPass::getLinearDepthPipeline(const render::RenderContextPointer& renderContext) { gpu::ShaderPointer program; if (!_linearDepthPipeline) { - auto vs = gpu::StandardShaderLib::getDrawViewportQuadTransformTexcoordVS(); - auto ps = surfaceGeometry_makeLinearDepth_frag::getShader(); - program = gpu::Shader::createProgram(vs, ps); + program = gpu::Shader::createProgram(shader::render_utils::program::surfaceGeometry_makeLinearDepth); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); @@ -243,9 +235,7 @@ const gpu::PipelinePointer& LinearDepthPass::getLinearDepthPipeline(const render const gpu::PipelinePointer& LinearDepthPass::getDownsamplePipeline(const render::RenderContextPointer& renderContext) { if (!_downsamplePipeline) { - auto vs = gpu::StandardShaderLib::getDrawViewportQuadTransformTexcoordVS(); - auto ps = surfaceGeometry_downsampleDepthNormal_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::surfaceGeometry_downsampleDepthNormal); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); PrepareStencil::testShape(*state); @@ -546,9 +536,7 @@ void SurfaceGeometryPass::run(const render::RenderContextPointer& renderContext, const gpu::PipelinePointer& SurfaceGeometryPass::getCurvaturePipeline(const render::RenderContextPointer& renderContext) { if (!_curvaturePipeline) { - auto vs = gpu::StandardShaderLib::getDrawViewportQuadTransformTexcoordVS(); - auto ps = surfaceGeometry_makeCurvature_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::surfaceGeometry_makeCurvature); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); diff --git a/libraries/render-utils/src/TextRenderer3D.cpp b/libraries/render-utils/src/TextRenderer3D.cpp index 9c85952107..dd9167d248 100644 --- a/libraries/render-utils/src/TextRenderer3D.cpp +++ b/libraries/render-utils/src/TextRenderer3D.cpp @@ -19,15 +19,13 @@ #include #include +#include #include "text/Font.h" #include "GLMHelpers.h" #include "MatrixStack.h" #include "RenderUtilsLogging.h" -#include "sdf_text3D_vert.h" -#include "sdf_text3D_frag.h" - #include "GeometryCache.h" const float TextRenderer3D::DEFAULT_POINT_SIZE = 12; diff --git a/libraries/render-utils/src/ToneMappingEffect.cpp b/libraries/render-utils/src/ToneMappingEffect.cpp index 12152fd6ba..5403f3e2f8 100644 --- a/libraries/render-utils/src/ToneMappingEffect.cpp +++ b/libraries/render-utils/src/ToneMappingEffect.cpp @@ -12,12 +12,11 @@ #include "ToneMappingEffect.h" #include -#include +#include #include "StencilMaskPass.h" #include "FramebufferCache.h" -#include "toneMapping_frag.h" const int ToneMappingEffect_ParamsSlot = 0; const int ToneMappingEffect_LightingMapSlot = 0; @@ -28,10 +27,7 @@ ToneMappingEffect::ToneMappingEffect() { } void ToneMappingEffect::init(RenderArgs* args) { - auto blitPS = toneMapping_frag::getShader(); - - auto blitVS = gpu::StandardShaderLib::getDrawViewportQuadTransformTexcoordVS(); - auto blitProgram = gpu::ShaderPointer(gpu::Shader::createProgram(blitVS, blitPS)); + auto blitProgram = gpu::Shader::createProgram(shader::render_utils::program::toneMapping); auto blitState = std::make_shared(); blitState->setColorWriteMask(true, true, true, true); diff --git a/libraries/render-utils/src/VelocityBufferPass.cpp b/libraries/render-utils/src/VelocityBufferPass.cpp index 3f7da4cdcd..1431316aed 100644 --- a/libraries/render-utils/src/VelocityBufferPass.cpp +++ b/libraries/render-utils/src/VelocityBufferPass.cpp @@ -13,15 +13,13 @@ #include #include -#include +#include + #include "StencilMaskPass.h" const int VelocityBufferPass_FrameTransformSlot = 0; const int VelocityBufferPass_DepthMapSlot = 0; - -#include "velocityBuffer_cameraMotion_frag.h" - VelocityFramebuffer::VelocityFramebuffer() { } @@ -145,10 +143,7 @@ void VelocityBufferPass::run(const render::RenderContextPointer& renderContext, const gpu::PipelinePointer& VelocityBufferPass::getCameraMotionPipeline(const render::RenderContextPointer& renderContext) { if (!_cameraMotionPipeline) { - auto vs = gpu::StandardShaderLib::getDrawViewportQuadTransformTexcoordVS(); - auto ps = velocityBuffer_cameraMotion_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::velocityBuffer_cameraMotion); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); // Stencil test the curvature pass for objects pixels only, not the background diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index 51939efd4f..fc0cccd9e3 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -10,21 +10,15 @@ // #include "ZoneRenderer.h" - #include -#include #include #include +#include #include "StencilMaskPass.h" #include "DeferredLightingEffect.h" -#include "zone_drawKeyLight_frag.h" -#include "zone_drawAmbient_frag.h" -#include "zone_drawSkybox_frag.h" - - using namespace render; class SetupZones { @@ -77,9 +71,7 @@ void SetupZones::run(const RenderContextPointer& context, const Inputs& inputs) const gpu::PipelinePointer& DebugZoneLighting::getKeyLightPipeline() { if (!_keyLightPipeline) { - auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); - auto ps = zone_drawKeyLight_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::zone_drawKeyLight); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ZONE_DEFERRED_TRANSFORM_BUFFER)); @@ -98,9 +90,7 @@ const gpu::PipelinePointer& DebugZoneLighting::getKeyLightPipeline() { const gpu::PipelinePointer& DebugZoneLighting::getAmbientPipeline() { if (!_ambientPipeline) { - auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); - auto ps = zone_drawAmbient_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::zone_drawAmbient); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ZONE_DEFERRED_TRANSFORM_BUFFER)); @@ -119,9 +109,7 @@ const gpu::PipelinePointer& DebugZoneLighting::getAmbientPipeline() { } const gpu::PipelinePointer& DebugZoneLighting::getBackgroundPipeline() { if (!_backgroundPipeline) { - auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); - auto ps = zone_drawSkybox_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::zone_drawSkybox); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ZONE_DEFERRED_TRANSFORM_BUFFER)); diff --git a/libraries/render-utils/src/skin_model_shadow.slf b/libraries/render-utils/src/skin_model_shadow.slf deleted file mode 100644 index e464d6e6c8..0000000000 --- a/libraries/render-utils/src/skin_model_shadow.slf +++ /dev/null @@ -1,20 +0,0 @@ -<@include gpu/Config.slh@> -<$VERSION_HEADER$> -// Generated on <$_SCRIBE_DATE$> -// -// skin_model_shadow.frag -// fragment shader -// -// Created by Andrzej Kapolka on 3/24/14. -// Copyright 2013 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -layout(location = 0) out vec4 _fragColor; - -void main(void) { - // pass-through to set z-buffer - _fragColor = vec4(1.0, 1.0, 1.0, 0.0); -} diff --git a/libraries/render-utils/src/skin_model_shadow_fade.slf b/libraries/render-utils/src/skin_model_shadow_fade.slf deleted file mode 100644 index 214fc72e42..0000000000 --- a/libraries/render-utils/src/skin_model_shadow_fade.slf +++ /dev/null @@ -1,30 +0,0 @@ -<@include gpu/Config.slh@> -<$VERSION_HEADER$> -// Generated on <$_SCRIBE_DATE$> -// -// skin_model_shadow_fade.frag -// fragment shader -// -// Created by Olivier Prat on 06/08/17. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -<@include Fade.slh@> -<$declareFadeFragment()$> - -in vec4 _positionWS; - -layout(location = 0) out vec4 _fragColor; - -void main(void) { - FadeObjectParams fadeParams; - - <$fetchFadeObjectParams(fadeParams)$> - applyFadeClip(fadeParams, _positionWS.xyz); - - // pass-through to set z-buffer - _fragColor = vec4(1.0, 1.0, 1.0, 0.0); -} diff --git a/libraries/render-utils/src/text/Font.cpp b/libraries/render-utils/src/text/Font.cpp index cd171db855..66f052e25f 100644 --- a/libraries/render-utils/src/text/Font.cpp +++ b/libraries/render-utils/src/text/Font.cpp @@ -6,10 +6,7 @@ #include #include - -#include "sdf_text3D_vert.h" -#include "sdf_text3D_frag.h" -#include "sdf_text3D_transparent_frag.h" +#include #include "../RenderUtilsLogging.h" #include "FontFamilies.h" @@ -223,11 +220,8 @@ void Font::setupGPU() { // Setup render pipeline { - auto vertexShader = sdf_text3D_vert::getShader(); - auto pixelShader = sdf_text3D_frag::getShader(); - auto pixelShaderTransparent = sdf_text3D_transparent_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vertexShader, pixelShader); - gpu::ShaderPointer programTransparent = gpu::Shader::createProgram(vertexShader, pixelShaderTransparent); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::sdf_text3D); + gpu::ShaderPointer programTransparent = gpu::Shader::createProgram(shader::render_utils::program::sdf_text3D_transparent); gpu::Shader::BindingSet slotBindings; gpu::Shader::makeProgram(*program, slotBindings); diff --git a/libraries/render/CMakeLists.txt b/libraries/render/CMakeLists.txt index 2a888a5b18..e3aa4bd491 100644 --- a/libraries/render/CMakeLists.txt +++ b/libraries/render/CMakeLists.txt @@ -1,8 +1,7 @@ set(TARGET_NAME render) -AUTOSCRIBE_SHADER_LIB(gpu graphics) setup_hifi_library() # render needs octree only for getAccuracyAngle(float, int) -link_hifi_libraries(shared task ktx gpu graphics octree) +link_hifi_libraries(shared task ktx gpu shaders graphics octree) target_nsight() diff --git a/libraries/render/src/render/BlurTask.cpp b/libraries/render/src/render/BlurTask.cpp index 896482eb2a..3699922074 100644 --- a/libraries/render/src/render/BlurTask.cpp +++ b/libraries/render/src/render/BlurTask.cpp @@ -11,13 +11,7 @@ #include "BlurTask.h" #include -#include - -#include "blurGaussianV_frag.h" -#include "blurGaussianH_frag.h" - -#include "blurGaussianDepthAwareV_frag.h" -#include "blurGaussianDepthAwareH_frag.h" +#include using namespace render; @@ -209,9 +203,7 @@ BlurGaussian::BlurGaussian(bool generateOutputFramebuffer, unsigned int downsamp gpu::PipelinePointer BlurGaussian::getBlurVPipeline() { if (!_blurVPipeline) { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = blurGaussianV_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::blurGaussianV); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("blurParamsBuffer"), BlurTask_ParamsSlot)); @@ -231,9 +223,7 @@ gpu::PipelinePointer BlurGaussian::getBlurVPipeline() { gpu::PipelinePointer BlurGaussian::getBlurHPipeline() { if (!_blurHPipeline) { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = blurGaussianH_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::blurGaussianH); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("blurParamsBuffer"), BlurTask_ParamsSlot)); @@ -323,9 +313,7 @@ BlurGaussianDepthAware::BlurGaussianDepthAware(bool generateOutputFramebuffer, c gpu::PipelinePointer BlurGaussianDepthAware::getBlurVPipeline() { if (!_blurVPipeline) { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = blurGaussianDepthAwareV_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::blurGaussianDepthAwareV); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("blurParamsBuffer"), BlurTask_ParamsSlot)); @@ -346,9 +334,7 @@ gpu::PipelinePointer BlurGaussianDepthAware::getBlurVPipeline() { gpu::PipelinePointer BlurGaussianDepthAware::getBlurHPipeline() { if (!_blurHPipeline) { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = blurGaussianDepthAwareH_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::blurGaussianDepthAwareH); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("blurParamsBuffer"), BlurTask_ParamsSlot)); diff --git a/libraries/render/src/render/DrawSceneOctree.cpp b/libraries/render/src/render/DrawSceneOctree.cpp index 433851eec2..5de538759a 100644 --- a/libraries/render/src/render/DrawSceneOctree.cpp +++ b/libraries/render/src/render/DrawSceneOctree.cpp @@ -18,25 +18,17 @@ #include #include -#include +#include #include "Args.h" -#include "drawCellBounds_vert.h" -#include "drawCellBounds_frag.h" -#include "drawLODReticle_frag.h" - -#include "drawItemBounds_vert.h" -#include "drawItemBounds_frag.h" using namespace render; const gpu::PipelinePointer DrawSceneOctree::getDrawCellBoundsPipeline() { if (!_drawCellBoundsPipeline) { - auto vs = drawCellBounds_vert::getShader(); - auto ps = drawCellBounds_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawCellBounds); gpu::Shader::BindingSet slotBindings; gpu::Shader::makeProgram(*program, slotBindings); @@ -58,12 +50,8 @@ const gpu::PipelinePointer DrawSceneOctree::getDrawCellBoundsPipeline() { const gpu::PipelinePointer DrawSceneOctree::getDrawLODReticlePipeline() { if (!_drawLODReticlePipeline) { - auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); - auto ps = drawLODReticle_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawLODReticle); + gpu::Shader::makeProgram(*program); // _drawCellLocationLoc = program->getUniforms().findLocation("inCellLocation"); @@ -162,9 +150,7 @@ void DrawSceneOctree::run(const RenderContextPointer& renderContext, const ItemS const gpu::PipelinePointer DrawItemSelection::getDrawItemBoundPipeline() { if (!_drawItemBoundPipeline) { - auto vs = drawItemBounds_vert::getShader(); - auto ps = drawItemBounds_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawItemBounds); gpu::Shader::BindingSet slotBindings; gpu::Shader::makeProgram(*program, slotBindings); diff --git a/libraries/render/src/render/DrawStatus.cpp b/libraries/render/src/render/DrawStatus.cpp index 496b2000a9..b8fef0d987 100644 --- a/libraries/render/src/render/DrawStatus.cpp +++ b/libraries/render/src/render/DrawStatus.cpp @@ -19,12 +19,9 @@ #include -#include "Args.h" +#include -#include "drawItemBounds_vert.h" -#include "drawItemBounds_frag.h" -#include "drawItemStatus_vert.h" -#include "drawItemStatus_frag.h" +#include "Args.h" using namespace render; @@ -35,9 +32,7 @@ void DrawStatusConfig::dirtyHelper() { const gpu::PipelinePointer DrawStatus::getDrawItemBoundsPipeline() { if (!_drawItemBoundsPipeline) { - auto vs = drawItemBounds_vert::getShader(); - auto ps = drawItemBounds_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawItemBounds); gpu::Shader::BindingSet slotBindings; gpu::Shader::makeProgram(*program, slotBindings); @@ -63,9 +58,7 @@ const gpu::PipelinePointer DrawStatus::getDrawItemBoundsPipeline() { const gpu::PipelinePointer DrawStatus::getDrawItemStatusPipeline() { if (!_drawItemStatusPipeline) { - auto vs = drawItemStatus_vert::getShader(); - auto ps = drawItemStatus_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawItemStatus); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("iconStatusMap"), 0)); diff --git a/libraries/render/src/render/DrawTask.cpp b/libraries/render/src/render/DrawTask.cpp index 3a7555f790..08be053ddf 100755 --- a/libraries/render/src/render/DrawTask.cpp +++ b/libraries/render/src/render/DrawTask.cpp @@ -18,13 +18,10 @@ #include #include #include -#include +#include #include "Logging.h" -#include "drawItemBounds_vert.h" -#include "drawItemBounds_frag.h" - using namespace render; void render::renderItems(const RenderContextPointer& renderContext, const ItemBounds& inItems, int maxDrawnItems) { @@ -160,9 +157,7 @@ void DrawLight::run(const RenderContextPointer& renderContext, const ItemBounds& const gpu::PipelinePointer DrawBounds::getPipeline() { if (!_boundsPipeline) { - auto vs = drawItemBounds_vert::getShader(); - auto ps = drawItemBounds_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawItemBounds); gpu::Shader::BindingSet slotBindings; gpu::Shader::makeProgram(*program, slotBindings); @@ -267,9 +262,7 @@ gpu::PipelinePointer DrawQuadVolume::getPipeline() { static gpu::PipelinePointer pipeline; if (!pipeline) { - auto vs = gpu::StandardShaderLib::getDrawTransformVertexPositionVS(); - auto ps = gpu::StandardShaderLib::getDrawColorPS(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::gpu::program::drawColor); gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding("color", 0)); diff --git a/libraries/render/src/render/ResampleTask.cpp b/libraries/render/src/render/ResampleTask.cpp index 008234b437..880d13fde1 100644 --- a/libraries/render/src/render/ResampleTask.cpp +++ b/libraries/render/src/render/ResampleTask.cpp @@ -12,8 +12,8 @@ // #include "ResampleTask.h" -#include "gpu/Context.h" -#include "gpu/StandardShaderLib.h" +#include +#include using namespace render; @@ -51,9 +51,7 @@ void HalfDownsample::run(const RenderContextPointer& renderContext, const gpu::F resampledFrameBuffer = getResampledFrameBuffer(sourceFramebuffer); if (!_pipeline) { - auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); - auto ps = gpu::StandardShaderLib::getDrawTextureOpaquePS(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::gpu::program::drawTransformUnitQuadTextureOpaque); gpu::Shader::BindingSet slotBindings; gpu::Shader::makeProgram(*program, slotBindings); diff --git a/libraries/shaders/CMakeLists.txt b/libraries/shaders/CMakeLists.txt new file mode 100644 index 0000000000..de188089a6 --- /dev/null +++ b/libraries/shaders/CMakeLists.txt @@ -0,0 +1,175 @@ + +set(TARGET_NAME gpu) +AUTOSCRIBE_SHADER_LIB(gpu) +AUTOSCRIBE_PROGRAM(NAME drawColor VERTEX DrawTransformVertexPosition FRAGMENT DrawColor) +AUTOSCRIBE_PROGRAM(NAME drawTransformUnitQuadTextureOpaque VERTEX DrawTransformUnitQuad FRAGMENT DrawTextureOpaque) +AUTOSCRIBE_PROGRAM(NAME drawUnitQuatTextureOpaque VERTEX DrawUnitQuadTexcoord FRAGMENT DrawTextureOpaque) +AUTOSCRIBE_PROGRAM(NAME drawTextureOpaqueTexcoordRect VERTEX DrawTexcoordRectTransformUnitQuad FRAGMENT DrawTextureOpaque) +AUTOSCRIBE_PROGRAM(NAME drawNothing VERTEX DrawVertexPosition FRAGMENT DrawNada) + +set(TARGET_NAME graphics) +AUTOSCRIBE_SHADER_LIB(gpu) +AUTOSCRIBE_PROGRAM(NAME skybox) + +set(TARGET_NAME procedural) +AUTOSCRIBE_SHADER_LIB(gpu graphics) + +set(TARGET_NAME render) +AUTOSCRIBE_SHADER_LIB(gpu graphics) +AUTOSCRIBE_PROGRAM(NAME drawCellBounds) +AUTOSCRIBE_PROGRAM(NAME drawItemBounds) +AUTOSCRIBE_PROGRAM(NAME drawItemStatus) +AUTOSCRIBE_PROGRAM(NAME drawLODReticle VERTEX gpu::vertex::DrawTransformUnitQuad) +AUTOSCRIBE_PROGRAM(NAME blurGaussianV VERTEX gpu::vertex::DrawUnitQuadTexcoord) +AUTOSCRIBE_PROGRAM(NAME blurGaussianH VERTEX gpu::vertex::DrawUnitQuadTexcoord) +AUTOSCRIBE_PROGRAM(NAME blurGaussianDepthAwareV VERTEX gpu::vertex::DrawUnitQuadTexcoord) +AUTOSCRIBE_PROGRAM(NAME blurGaussianDepthAwareH VERTEX gpu::vertex::DrawUnitQuadTexcoord) + +set(TARGET_NAME render-utils) +AUTOSCRIBE_SHADER_LIB(gpu graphics render) +AUTOSCRIBE_PROGRAM(NAME animdebugdraw) +AUTOSCRIBE_PROGRAM(NAME bloomThreshold VERTEX gpu::vertex::DrawTransformUnitQuad FRAGMENT BloomThreshold) +AUTOSCRIBE_PROGRAM(NAME bloomApply VERTEX gpu::vertex::DrawTransformUnitQuad FRAGMENT BloomApply) +AUTOSCRIBE_PROGRAM(NAME directional_ambient_light VERTEX deferred_light) +AUTOSCRIBE_PROGRAM(NAME directional_ambient_light_shadow VERTEX deferred_light) +AUTOSCRIBE_PROGRAM(NAME directional_skybox_light VERTEX deferred_light) +AUTOSCRIBE_PROGRAM(NAME directional_skybox_light_shadow VERTEX deferred_light) +AUTOSCRIBE_PROGRAM(NAME local_lights_shading VERTEX deferred_light) +AUTOSCRIBE_PROGRAM(NAME local_lights_drawOutline VERTEX deferred_light) +AUTOSCRIBE_PROGRAM(NAME forward_simple_textured VERTEX simple) +AUTOSCRIBE_PROGRAM(NAME forward_simple_textured_unlit VERTEX simple) +AUTOSCRIBE_PROGRAM(NAME forward_simple_textured_transparent VERTEX simple) +AUTOSCRIBE_PROGRAM(NAME fxaa_blend VERTEX gpu::vertex::DrawUnitQuadTexcoord) +AUTOSCRIBE_PROGRAM(NAME glowLine) +AUTOSCRIBE_PROGRAM(NAME grid VERTEX standardTransformPNTC) +AUTOSCRIBE_PROGRAM(NAME hmd_ui) +AUTOSCRIBE_PROGRAM(NAME drawWorkloadProxy) +AUTOSCRIBE_PROGRAM(NAME drawWorkloadView) +AUTOSCRIBE_PROGRAM(NAME haze VERTEX gpu::vertex::DrawViewportQuadTransformTexcoord FRAGMENT Haze) +AUTOSCRIBE_PROGRAM(NAME highlight_aabox VERTEX Highlight_aabox FRAGMENT nop) +AUTOSCRIBE_PROGRAM(NAME highlight VERTEX gpu::vertex::DrawViewportQuadTransformTexcoord FRAGMENT Highlight) +AUTOSCRIBE_PROGRAM(NAME highlight_filled VERTEX gpu::vertex::DrawViewportQuadTransformTexcoord FRAGMENT Highlight_filled) +AUTOSCRIBE_PROGRAM(NAME lightClusters_drawGrid) +AUTOSCRIBE_PROGRAM(NAME lightClusters_drawClusterFromDepth VERTEX gpu::vertex::DrawUnitQuadTexcoord) +AUTOSCRIBE_PROGRAM(NAME lightClusters_drawClusterContent VERTEX gpu::vertex::DrawUnitQuadTexcoord) +AUTOSCRIBE_PROGRAM(NAME simple_opaque_web_browser VERTEX simple) +AUTOSCRIBE_PROGRAM(NAME simple_transparent_web_browser VERTEX simple) +AUTOSCRIBE_PROGRAM(NAME simple_textured VERTEX simple) +AUTOSCRIBE_PROGRAM(NAME simple_textured_unlit VERTEX simple) +AUTOSCRIBE_PROGRAM(NAME simple_transparent_textured VERTEX simple) +AUTOSCRIBE_PROGRAM(NAME simple_transparent_textured_unlit VERTEX simple) +AUTOSCRIBE_PROGRAM(NAME simple_textured_fade VERTEX simple_fade) +AUTOSCRIBE_PROGRAM(NAME simple_textured_unlit_fade VERTEX simple_fade) +AUTOSCRIBE_PROGRAM(NAME simple_transparent_textured_fade VERTEX simple_fade) +AUTOSCRIBE_PROGRAM(NAME simple_transparent_textured_unlit_fade VERTEX simple_fade) + +AUTOSCRIBE_PROGRAM(NAME sdf_text3D) +AUTOSCRIBE_PROGRAM(NAME sdf_text3D_transparent VERTEX sdf_text3D) + +AUTOSCRIBE_PROGRAM(NAME ssao_makeOcclusion VERTEX gpu::vertex::DrawViewportQuadTransformTexcoord) +AUTOSCRIBE_PROGRAM(NAME ssao_makeHorizontalBlur VERTEX gpu::vertex::DrawViewportQuadTransformTexcoord) +AUTOSCRIBE_PROGRAM(NAME ssao_makeVerticalBlur VERTEX gpu::vertex::DrawViewportQuadTransformTexcoord) +AUTOSCRIBE_PROGRAM(NAME ssao_debugOcclusion VERTEX gpu::vertex::DrawViewportQuadTransformTexcoord) + +AUTOSCRIBE_PROGRAM(NAME stencil_drawMask VERTEX gpu::vertex::DrawUnitQuadTexcoord) + +AUTOSCRIBE_PROGRAM(NAME standardDrawTexture VERTEX standardTransformPNTC) +AUTOSCRIBE_PROGRAM(NAME standardDrawTextureNoBlend VERTEX standardTransformPNTC FRAGMENT gpu::fragment::DrawTextureOpaque) + +AUTOSCRIBE_PROGRAM(NAME subsurfaceScattering_makeProfile VERTEX gpu::vertex::DrawUnitQuadTexcoord) +AUTOSCRIBE_PROGRAM(NAME subsurfaceScattering_makeLUT VERTEX gpu::vertex::DrawUnitQuadTexcoord) +AUTOSCRIBE_PROGRAM(NAME subsurfaceScattering_makeSpecularBeckmann VERTEX gpu::vertex::DrawUnitQuadTexcoord) +AUTOSCRIBE_PROGRAM(NAME subsurfaceScattering_drawScattering VERTEX gpu::vertex::DrawUnitQuadTexcoord) + +AUTOSCRIBE_PROGRAM(NAME surfaceGeometry_makeLinearDepth VERTEX gpu::vertex::DrawViewportQuadTransformTexcoord) +AUTOSCRIBE_PROGRAM(NAME surfaceGeometry_downsampleDepthNormal VERTEX gpu::vertex::DrawViewportQuadTransformTexcoord) +AUTOSCRIBE_PROGRAM(NAME surfaceGeometry_makeCurvature VERTEX gpu::vertex::DrawViewportQuadTransformTexcoord) + + +AUTOSCRIBE_PROGRAM(NAME taa VERTEX gpu::vertex::DrawUnitQuadTexcoord) +AUTOSCRIBE_PROGRAM(NAME taa_blend VERTEX gpu::vertex::DrawUnitQuadTexcoord) + +AUTOSCRIBE_PROGRAM(NAME simple FRAGMENT forward_simple_textured) +AUTOSCRIBE_PROGRAM(NAME simpleUnlit VERTEX simple FRAGMENT forward_simple_textured_unlit) +AUTOSCRIBE_PROGRAM(NAME simpleTranslucent VERTEX simple FRAGMENT forward_simple_textured_transparent) +AUTOSCRIBE_PROGRAM(NAME simpleTranslucentUnlit VERTEX simple FRAGMENT simple_transparent_textured_unlit) + +AUTOSCRIBE_PROGRAM(NAME forward_model VERTEX model) +AUTOSCRIBE_PROGRAM(NAME forward_model_translucent VERTEX model) +AUTOSCRIBE_PROGRAM(NAME forward_model_unlit VERTEX model) +AUTOSCRIBE_PROGRAM(NAME forward_model_normal_map VERTEX model_normal_map) +AUTOSCRIBE_PROGRAM(NAME forward_model_normal_map_translucent VERTEX model_normal_map FRAGMENT forward_model_translucent) + +AUTOSCRIBE_PROGRAM(NAME forward_skin_model VERTEX skin_model FRAGMENT forward_model) +AUTOSCRIBE_PROGRAM(NAME forward_skin_model_normal_map VERTEX skin_model_normal_map FRAGMENT forward_model_normal_map) +AUTOSCRIBE_PROGRAM(NAME forward_skin_model_dq VERTEX skin_model_dq FRAGMENT forward_model) +AUTOSCRIBE_PROGRAM(NAME forward_skin_model_normal_map_dq VERTEX skin_model_normal_map_dq FRAGMENT forward_model_normal_map) + +AUTOSCRIBE_PROGRAM(NAME forward_skin_translucent VERTEX skin_model FRAGMENT forward_model_translucent) +AUTOSCRIBE_PROGRAM(NAME forward_skin_translucent_normal_map VERTEX skin_model_normal_map FRAGMENT forward_model_translucent) +AUTOSCRIBE_PROGRAM(NAME forward_skin_translucent_dq VERTEX skin_model_dq FRAGMENT forward_model_translucent) +AUTOSCRIBE_PROGRAM(NAME forward_skin_translucent_normal_map_dq VERTEX skin_model_normal_map_dq FRAGMENT forward_model_translucent) + +AUTOSCRIBE_PROGRAM(NAME model) +AUTOSCRIBE_PROGRAM(NAME model_unlit VERTEX model) +AUTOSCRIBE_PROGRAM(NAME model_normal_map) +AUTOSCRIBE_PROGRAM(NAME model_translucent) +AUTOSCRIBE_PROGRAM(NAME model_translucent_normal_map) +AUTOSCRIBE_PROGRAM(NAME model_translucent_unlit VERTEX model) +AUTOSCRIBE_PROGRAM(NAME model_lightmap) +AUTOSCRIBE_PROGRAM(NAME model_lightmap_normal_map) +AUTOSCRIBE_PROGRAM(NAME model_shadow) +AUTOSCRIBE_PROGRAM(NAME model_shadow_fade) + +AUTOSCRIBE_PROGRAM(NAME skin_model FRAGMENT model) +AUTOSCRIBE_PROGRAM(NAME skin_model_normal_map FRAGMENT model_normal_map) +AUTOSCRIBE_PROGRAM(NAME skin_model_normal_map_fade FRAGMENT model_normal_map_fade) +AUTOSCRIBE_PROGRAM(NAME skin_model_translucent VERTEX skin_model_fade FRAGMENT model_translucent) +AUTOSCRIBE_PROGRAM(NAME skin_model_translucent_fade VERTEX skin_model_fade FRAGMENT model_translucent_fade) +AUTOSCRIBE_PROGRAM(NAME skin_model_normal_map_translucent VERTEX skin_model_normal_map_fade FRAGMENT model_translucent_normal_map) +AUTOSCRIBE_PROGRAM(NAME skin_model_normal_map_translucent_fade VERTEX skin_model_normal_map_fade FRAGMENT model_translucent_normal_map_fade) +AUTOSCRIBE_PROGRAM(NAME skin_model_fade FRAGMENT model_fade) +AUTOSCRIBE_PROGRAM(NAME skin_model_shadow FRAGMENT model_shadow) +AUTOSCRIBE_PROGRAM(NAME skin_model_shadow_fade FRAGMENT model_shadow) + + +AUTOSCRIBE_PROGRAM(NAME skin_model_dq FRAGMENT model) +AUTOSCRIBE_PROGRAM(NAME skin_model_fade_dq FRAGMENT model_fade) +AUTOSCRIBE_PROGRAM(NAME skin_model_normal_map_dq FRAGMENT model_normal_map) +AUTOSCRIBE_PROGRAM(NAME skin_model_normal_map_fade_dq FRAGMENT model_normal_map_fade) +AUTOSCRIBE_PROGRAM(NAME skin_model_translucent_dq VERTEX skin_model_fade_dq FRAGMENT model_translucent) +AUTOSCRIBE_PROGRAM(NAME skin_model_translucent_fade_dq VERTEX skin_model_fade_dq FRAGMENT model_translucent_fade) +AUTOSCRIBE_PROGRAM(NAME skin_model_normal_map_translucent_dq VERTEX skin_model_normal_map_fade_dq FRAGMENT model_translucent_normal_map) +AUTOSCRIBE_PROGRAM(NAME skin_model_normal_map_translucent_fade_dq VERTEX skin_model_normal_map_fade_dq FRAGMENT model_translucent_normal_map_fade) + +AUTOSCRIBE_PROGRAM(NAME skin_model_shadow_dq FRAGMENT model_shadow) +AUTOSCRIBE_PROGRAM(NAME skin_model_shadow_fade_dq FRAGMENT model_shadow_fade) + +AUTOSCRIBE_PROGRAM(NAME model_fade) +AUTOSCRIBE_PROGRAM(NAME model_unlit_fade VERTEX model_fade) +AUTOSCRIBE_PROGRAM(NAME model_translucent_unlit_fade VERTEX model_fade) +AUTOSCRIBE_PROGRAM(NAME model_normal_map_fade) +AUTOSCRIBE_PROGRAM(NAME model_translucent_normal_map_fade VERTEX model_translucent_normal_map) +AUTOSCRIBE_PROGRAM(NAME model_translucent_fade VERTEX model_fade) +AUTOSCRIBE_PROGRAM(NAME model_lightmap_fade) +AUTOSCRIBE_PROGRAM(NAME model_lightmap_normal_map_fade) + +AUTOSCRIBE_PROGRAM(NAME zone_drawKeyLight VERTEX gpu::vertex::DrawTransformUnitQuad) +AUTOSCRIBE_PROGRAM(NAME zone_drawSkybox VERTEX gpu::vertex::DrawTransformUnitQuad) +AUTOSCRIBE_PROGRAM(NAME zone_drawAmbient VERTEX gpu::vertex::DrawTransformUnitQuad) + +AUTOSCRIBE_PROGRAM(NAME toneMapping VERTEX gpu::vertex::DrawViewportQuadTransformTexcoord) +AUTOSCRIBE_PROGRAM(NAME velocityBuffer_cameraMotion VERTEX gpu::vertex::DrawViewportQuadTransformTexcoord) + +set(TARGET_NAME entities-renderer) +AUTOSCRIBE_SHADER_LIB(gpu graphics procedural render render-utils) +AUTOSCRIBE_PROGRAM(NAME polyvox) +AUTOSCRIBE_PROGRAM(NAME polyvox_fade) +AUTOSCRIBE_PROGRAM(NAME paintStroke) +AUTOSCRIBE_PROGRAM(NAME textured_particle) + +set(TARGET_NAME shaders) +autoscribe_shader_finish() +setup_hifi_library(Gui) +link_hifi_libraries(shared) + diff --git a/libraries/shaders/Shaders.cpp.in b/libraries/shaders/Shaders.cpp.in new file mode 100644 index 0000000000..795367cc4e --- /dev/null +++ b/libraries/shaders/Shaders.cpp.in @@ -0,0 +1,11 @@ +#include "Shaders.h" + +namespace shader { + +uint32_t all_programs[] = { +@SHADER_PROGRAMS_ARRAY@ + INVALID_SHADER +}; + +} + diff --git a/libraries/shaders/Shaders.h.in b/libraries/shaders/Shaders.h.in new file mode 100644 index 0000000000..fd9b5c9ba9 --- /dev/null +++ b/libraries/shaders/Shaders.h.in @@ -0,0 +1,14 @@ +#include +#include + +namespace shader { + +@SHADER_ENUMS@ + +extern uint32_t all_programs[]; + +static const uint32_t INVALID_SHADER = (uint32_t)-1; + +std::string loadShaderSource(uint32_t shaderId); +} + diff --git a/libraries/shaders/shaders.qrc.in b/libraries/shaders/shaders.qrc.in new file mode 100644 index 0000000000..6078b4a9e9 --- /dev/null +++ b/libraries/shaders/shaders.qrc.in @@ -0,0 +1,6 @@ + + + +@SHADER_QRC@ + + \ No newline at end of file diff --git a/libraries/shaders/src/shaders/ShadersCommon.cpp b/libraries/shaders/src/shaders/ShadersCommon.cpp new file mode 100644 index 0000000000..03c8bd2918 --- /dev/null +++ b/libraries/shaders/src/shaders/ShadersCommon.cpp @@ -0,0 +1,16 @@ +#include +#include + +namespace shader { + +std::string loadShaderSource(uint32_t shaderId) { + static std::once_flag once; + std::call_once(once, [] { + Q_INIT_RESOURCE(shaders); + }); + auto shaderPath = std::string(":/shaders/") + std::to_string(shaderId); + auto shaderData = FileUtils::readFile(shaderPath.c_str()); + return shaderData.toStdString(); +} + +} diff --git a/tests/shaders/CMakeLists.txt b/tests/shaders/CMakeLists.txt new file mode 100644 index 0000000000..08678c1c26 --- /dev/null +++ b/tests/shaders/CMakeLists.txt @@ -0,0 +1,9 @@ + +# Declare dependencies +macro (setup_testcase_dependencies) + # link in the shared libraries + link_hifi_libraries(shared test-utils gpu shaders gl ${PLATFORM_GL_BACKEND}) + package_libraries_for_deployment() +endmacro () + +setup_hifi_testcase(Gui) diff --git a/tests/shaders/src/ShaderTests.cpp b/tests/shaders/src/ShaderTests.cpp new file mode 100644 index 0000000000..3953c5042c --- /dev/null +++ b/tests/shaders/src/ShaderTests.cpp @@ -0,0 +1,100 @@ +// +// ShaderTests.cpp +// tests/octree/src +// +// Created by Andrew Meadows on 2016.02.19 +// Copyright 2016 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "ShaderTests.h" + +#include +#include + +#include + +#include +#include +#include + +#include +#include +#include +#include + +QTEST_MAIN(ShaderTests) + +void ShaderTests::initTestCase() { + getDefaultOpenGLSurfaceFormat(); + _canvas.create(); + if (!_canvas.makeCurrent()) { + qFatal("Unable to make test GL context current"); + } + gl::initModuleGl(); + gpu::Context::init(); + _gpuContext = std::make_shared(); +} + +void ShaderTests::cleanupTestCase() { +} + + +QVariantList slotSetToVariantList(const gpu::Shader::SlotSet& slotSet) { + QVariantList result; + for (const auto slot : slotSet) { + QVariantMap inputMap; + inputMap["name"] = slot._name.c_str(); + inputMap["location"] = slot._location; + result.append(inputMap); + } + return result; +} + +std::string reflect(const gpu::ShaderPointer& program) { + QVariantMap result; + if (!program->getInputs().empty()) { + result["inputs"] = slotSetToVariantList(program->getInputs()); + } + if (!program->getOutputs().empty()) { + result["outputs"] = slotSetToVariantList(program->getOutputs()); + } + if (!program->getResourceBuffers().empty()) { + result["storage_buffers"] = slotSetToVariantList(program->getResourceBuffers()); + } + if (!program->getSamplers().empty()) { + result["samplers"] = slotSetToVariantList(program->getSamplers()); + } + if (!program->getTextures().empty()) { + result["textures"] = slotSetToVariantList(program->getTextures()); + } + if (!program->getUniforms().empty()) { + result["uniforms"] = slotSetToVariantList(program->getUniforms()); + } + if (!program->getUniformBuffers().empty()) { + result["uniform_buffers"] = slotSetToVariantList(program->getUniformBuffers()); + } + + return QJsonDocument::fromVariant(result).toJson(QJsonDocument::Indented).toStdString(); +} + +void ShaderTests::testShaderLoad() { + size_t index = 0; + uint32_t INVALID_SHADER_ID = (uint32_t)-1; + while (INVALID_SHADER_ID != shader::all_programs[index]) { + auto programId = shader::all_programs[index]; + uint32_t vertexId = programId >> 16; + uint32_t fragmentId = programId & 0xFF; + auto vertexSource = shader::loadShaderSource(vertexId); + QVERIFY(!vertexSource.empty()); + auto fragmentSource = shader::loadShaderSource(fragmentId); + QVERIFY(!fragmentSource.empty()); + auto program = gpu::Shader::createProgram(programId); + QVERIFY(gpu::Shader::makeProgram(*program, {})); + auto reflectionData = reflect(program); + std::ofstream(std::string("d:/reflection/") + std::to_string(index) + std::string(".json")) << reflectionData; + ++index; + } +} diff --git a/tests/shaders/src/ShaderTests.h b/tests/shaders/src/ShaderTests.h new file mode 100644 index 0000000000..2b731899cc --- /dev/null +++ b/tests/shaders/src/ShaderTests.h @@ -0,0 +1,29 @@ +// +// Created by Bradley Austin Davis on 2018/06/21 +// Copyright 2013-2018 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_ShaderTests_h +#define hifi_ShaderTests_h + +#include +#include +#include + +class ShaderTests : public QObject { + Q_OBJECT + +private slots: + void initTestCase(); + void cleanupTestCase(); + void testShaderLoad(); + +private: + OffscreenGLCanvas _canvas; + gpu::ContextPointer _gpuContext; +}; + +#endif // hifi_ViewFruxtumTests_h From ae8f841912c3d3c60928aed01f987228cdb60f56 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Thu, 24 May 2018 10:53:27 -0700 Subject: [PATCH 134/332] Shader refactoring for explicit bindings --- CMakeLists.txt | 1 + android/app/build.gradle | 1 + android/build.gradle | 31 +- cmake/compiler.cmake | 45 +-- cmake/externals/json/CMakeLists.txt | 22 ++ cmake/macros/AutoScribeShader.cmake | 48 ++- cmake/macros/TargetJson.cmake | 13 + cmake/modules/FindJSON.cmake | 19 + interface/src/Application.cpp | 2 - .../src/workload/GameWorkloadRenderer.cpp | 12 +- .../InterleavedSrgbToLinear.slf | 21 + .../display-plugins/OpenGLDisplayPlugin.cpp | 40 +- .../src/display-plugins/SrgbToLinear.slf | 22 ++ .../display-plugins/hmd/HmdDisplayPlugin.cpp | 6 +- .../display-plugins/hmd/HmdDisplayPlugin.h | 1 - .../stereo/InterleavedStereoDisplayPlugin.cpp | 33 +- .../RenderableParticleEffectEntityItem.cpp | 10 +- .../src/RenderablePolyLineEntityItem.cpp | 15 - .../src/RenderablePolyVoxEntityItem.cpp | 22 +- .../src/RenderableShapeEntityItem.cpp | 4 +- .../src/entities-renderer/ShaderConstants.h | 61 +++ .../entities-renderer/src/paintStroke.slf | 10 +- .../entities-renderer/src/paintStroke.slv | 6 +- .../src/paintStroke_fade.slf | 14 +- .../src/paintStroke_fade.slv | 10 +- libraries/entities-renderer/src/polyvox.slf | 16 +- libraries/entities-renderer/src/polyvox.slv | 8 +- .../entities-renderer/src/polyvox_fade.slf | 19 +- .../entities-renderer/src/polyvox_fade.slv | 10 +- .../src/textured_particle.slf | 11 +- .../src/textured_particle.slv | 8 +- libraries/gl/src/gl/GLShaders.cpp | 321 ++++++++++----- libraries/gl/src/gl/GLShaders.h | 114 ++++-- .../gpu-gl-common/src/gpu/gl/GLBackend.cpp | 74 +++- .../gpu-gl-common/src/gpu/gl/GLBackend.h | 55 ++- .../src/gpu/gl/GLBackendPipeline.cpp | 79 ++-- .../src/gpu/gl/GLBackendShader.cpp | 223 +---------- .../src/gpu/gl/GLBackendTransform.cpp | 5 +- .../gpu-gl-common/src/gpu/gl/GLPipeline.cpp | 3 +- .../gpu-gl-common/src/gpu/gl/GLPipeline.h | 2 +- .../gpu-gl-common/src/gpu/gl/GLShader.cpp | 47 --- libraries/gpu-gl-common/src/gpu/gl/GLShader.h | 21 +- .../src/gpu/gl/GLTextureTransfer.cpp | 5 +- .../gpu-gl/src/gpu/gl/GLDesktopBackend.cpp | 4 - libraries/gpu-gl/src/gpu/gl41/GL41Backend.h | 5 +- .../gpu-gl/src/gpu/gl41/GL41BackendShader.cpp | 158 ++++---- .../src/gpu/gl41/GL41BackendTransform.cpp | 4 +- libraries/gpu-gl/src/gpu/gl45/GL45Backend.cpp | 16 + libraries/gpu-gl/src/gpu/gl45/GL45Backend.h | 13 +- .../gpu-gl/src/gpu/gl45/GL45BackendShader.cpp | 149 ------- .../src/gpu/gl45/GL45BackendTransform.cpp | 6 +- libraries/gpu-gles/src/gpu/gl/GLESBackend.cpp | 4 - libraries/gpu-gles/src/gpu/gles/GLESBackend.h | 5 +- .../src/gpu/gles/GLESBackendShader.cpp | 90 ----- .../src/gpu/gles/GLESBackendTransform.cpp | 6 +- libraries/gpu/src/gpu/Batch.h | 21 +- libraries/gpu/src/gpu/Context.cpp | 15 - libraries/gpu/src/gpu/Context.h | 11 +- libraries/gpu/src/gpu/DrawColor.slf | 9 +- libraries/gpu/src/gpu/DrawColoredTexture.slf | 11 +- .../gpu/DrawTexcoordRectTransformUnitQuad.slv | 8 +- libraries/gpu/src/gpu/DrawTexture.slf | 8 +- .../gpu/src/gpu/DrawTextureMirroredX.slf | 8 +- libraries/gpu/src/gpu/DrawTextureOpaque.slf | 10 +- .../gpu/src/gpu/DrawTransformUnitQuad.slv | 4 +- .../src/gpu/DrawTransformVertexPosition.slv | 6 +- .../gpu/src/gpu/DrawUnitQuadTexcoord.slv | 4 +- libraries/gpu/src/gpu/DrawVertexPosition.slv | 4 +- .../gpu/DrawViewportQuadTransformTexcoord.slv | 4 +- libraries/gpu/src/gpu/DrawWhite.slf | 4 +- libraries/gpu/src/gpu/Inputs.slh | 25 +- libraries/gpu/src/gpu/Shader.cpp | 144 +++++-- libraries/gpu/src/gpu/Shader.h | 238 +++++------ libraries/gpu/src/gpu/ShaderConstants.h | 126 ++++++ libraries/gpu/src/gpu/Transform.slh | 15 +- libraries/gpu/src/gpu/null/NullBackend.h | 1 - libraries/graphics/src/graphics/Light.slh | 9 +- libraries/graphics/src/graphics/Material.slh | 4 +- .../src/graphics}/MaterialTextures.slh | 24 +- .../graphics/src/graphics/ShaderConstants.h | 78 ++++ libraries/graphics/src/graphics/Skybox.cpp | 31 +- libraries/graphics/src/graphics/Skybox.h | 5 +- libraries/graphics/src/graphics/skybox.slf | 33 +- libraries/graphics/src/graphics/skybox.slv | 2 +- libraries/procedural/src/procedural/Logging.h | 2 +- .../procedural/src/procedural/Procedural.cpp | 175 ++++----- .../procedural/src/procedural/Procedural.h | 18 +- .../src/procedural/ProceduralCommon.slf | 52 --- .../src/procedural/ProceduralCommon.slh | 56 +++ .../src/procedural/ProceduralSkybox.cpp | 8 +- .../src/procedural/ShaderConstants.h | 72 ++++ .../src/procedural/proceduralSkybox.slf | 45 +++ .../src/AmbientOcclusionEffect.cpp | 64 +-- .../render-utils/src/AntialiasingEffect.cpp | 112 ++---- .../render-utils/src/AntialiasingEffect.h | 1 - libraries/render-utils/src/BloomApply.slf | 14 +- libraries/render-utils/src/BloomEffect.cpp | 40 +- libraries/render-utils/src/BloomThreshold.slf | 11 +- .../src/CauterizedMeshPartPayload.cpp | 3 +- .../render-utils/src/DebugDeferredBuffer.cpp | 128 +++--- .../render-utils/src/DeferredBufferRead.slh | 21 +- .../render-utils/src/DeferredBufferWrite.slh | 9 +- .../render-utils/src/DeferredFrameTransform.h | 18 +- .../src/DeferredLightingEffect.cpp | 254 ++++-------- .../render-utils/src/DeferredLightingEffect.h | 8 +- .../render-utils/src/DeferredTransform.slh | 7 +- libraries/render-utils/src/DrawHaze.cpp | 56 ++- libraries/render-utils/src/Fade.slh | 24 +- libraries/render-utils/src/FadeEffect.cpp | 12 +- libraries/render-utils/src/GeometryCache.cpp | 65 +-- libraries/render-utils/src/Haze.slf | 8 +- libraries/render-utils/src/Haze.slh | 5 +- libraries/render-utils/src/Highlight.slf | 2 +- libraries/render-utils/src/Highlight.slh | 6 +- .../render-utils/src/HighlightEffect.cpp | 54 ++- libraries/render-utils/src/HighlightEffect.h | 8 - .../render-utils/src/Highlight_aabox.slv | 13 +- .../render-utils/src/Highlight_filled.slf | 2 +- libraries/render-utils/src/LightAmbient.slh | 3 +- .../render-utils/src/LightClusterGrid.slh | 8 +- libraries/render-utils/src/LightClusters.cpp | 106 ++--- .../render-utils/src/LightDirectional.slh | 2 +- libraries/render-utils/src/LightLocal.slh | 13 +- libraries/render-utils/src/LightPoint.slh | 2 +- libraries/render-utils/src/LightSpot.slh | 2 +- libraries/render-utils/src/LightingModel.slh | 225 +---------- .../render-utils/src/MeshPartPayload.cpp | 4 +- .../render-utils/src/RenderCommonTask.cpp | 21 +- .../render-utils/src/RenderDeferredTask.cpp | 44 +-- .../render-utils/src/RenderForwardTask.cpp | 22 +- .../render-utils/src/RenderPipelines.cpp | 61 +-- libraries/render-utils/src/ShadingModel.slh | 237 +++++++++++ libraries/render-utils/src/Shadow.slh | 3 +- libraries/render-utils/src/ShadowCore.slh | 2 +- libraries/render-utils/src/Skinning.slh | 4 +- .../render-utils/src/StencilMaskPass.cpp | 6 +- .../render-utils/src/SubsurfaceScattering.cpp | 73 ++-- .../render-utils/src/SubsurfaceScattering.slh | 8 +- .../render-utils/src/SurfaceGeometryPass.cpp | 89 ++--- .../render-utils/src/ToneMappingEffect.cpp | 17 +- .../render-utils/src/VelocityBufferPass.cpp | 21 +- libraries/render-utils/src/ZoneRenderer.cpp | 52 ++- libraries/render-utils/src/ZoneRenderer.h | 9 - libraries/render-utils/src/animdebugdraw.slf | 6 +- libraries/render-utils/src/animdebugdraw.slv | 4 +- .../src/debug_deferred_buffer.slf | 22 +- .../src/debug_deferred_buffer.slv | 4 +- libraries/render-utils/src/deferred_light.slv | 6 +- .../src/deferred_light_limited.slv | 4 +- .../render-utils/src/deferred_light_point.slv | 10 +- .../render-utils/src/deferred_light_spot.slv | 8 +- .../src/directional_ambient_light.slf | 5 +- .../src/directional_ambient_light_shadow.slf | 7 +- .../src/directional_skybox_light.slf | 5 +- .../src/directional_skybox_light_shadow.slf | 7 +- .../render-utils/src/drawWorkloadProxy.slv | 8 +- .../render-utils/src/drawWorkloadView.slf | 3 +- .../render-utils/src/drawWorkloadView.slv | 19 +- libraries/render-utils/src/forward_model.slf | 25 +- .../src/forward_model_normal_map.slf | 26 +- .../src/forward_model_translucent.slf | 21 +- .../render-utils/src/forward_model_unlit.slf | 9 +- libraries/render-utils/src/forward_simple.slf | 16 +- .../src/forward_simple_textured.slf | 16 +- .../forward_simple_textured_transparent.slf | 16 +- .../src/forward_simple_textured_unlit.slf | 12 +- .../src/forward_simple_transparent.slf | 14 +- libraries/render-utils/src/fxaa.slf | 10 +- libraries/render-utils/src/fxaa.slv | 2 +- libraries/render-utils/src/fxaa_blend.slf | 10 +- libraries/render-utils/src/glowLine.slf | 8 +- libraries/render-utils/src/glowLine.slv | 20 +- libraries/render-utils/src/grid.slf | 14 +- libraries/render-utils/src/hmd_ui.slf | 9 +- libraries/render-utils/src/hmd_ui.slv | 6 +- .../src/lightClusters_drawClusterContent.slf | 6 +- .../src/lightClusters_drawClusterContent.slv | 4 +- .../lightClusters_drawClusterFromDepth.slf | 6 +- .../lightClusters_drawClusterFromDepth.slv | 4 +- .../src/lightClusters_drawGrid.slf | 6 +- .../src/lightClusters_drawGrid.slv | 4 +- .../src/local_lights_drawOutline.slf | 5 +- .../render-utils/src/local_lights_shading.slf | 6 +- libraries/render-utils/src/model.slf | 15 +- libraries/render-utils/src/model.slv | 18 +- libraries/render-utils/src/model_fade.slf | 14 +- libraries/render-utils/src/model_fade.slv | 20 +- libraries/render-utils/src/model_lightmap.slf | 15 +- libraries/render-utils/src/model_lightmap.slv | 14 +- .../render-utils/src/model_lightmap_fade.slf | 14 +- .../render-utils/src/model_lightmap_fade.slv | 16 +- .../src/model_lightmap_normal_map.slf | 16 +- .../src/model_lightmap_normal_map.slv | 17 +- .../src/model_lightmap_normal_map_fade.slf | 18 +- .../src/model_lightmap_normal_map_fade.slv | 20 +- .../render-utils/src/model_normal_map.slf | 16 +- .../render-utils/src/model_normal_map.slv | 19 +- .../src/model_normal_map_fade.slf | 20 +- .../src/model_normal_map_fade.slv | 22 +- libraries/render-utils/src/model_shadow.slf | 2 +- .../render-utils/src/model_shadow_fade.slf | 7 +- .../render-utils/src/model_shadow_fade.slv | 5 +- .../render-utils/src/model_translucent.slf | 28 +- .../render-utils/src/model_translucent.slv | 20 +- .../src/model_translucent_fade.slf | 20 +- .../src/model_translucent_normal_map.slf | 22 +- .../src/model_translucent_normal_map.slv | 22 +- .../src/model_translucent_normal_map_fade.slf | 23 +- .../src/model_translucent_unlit.slf | 12 +- .../src/model_translucent_unlit_fade.slf | 14 +- libraries/render-utils/src/model_unlit.slf | 11 +- .../render-utils/src/model_unlit_fade.slf | 15 +- libraries/render-utils/src/nop.slf | 2 + .../src/render-utils/ShaderConstants.h | 238 +++++++++++ libraries/render-utils/src/sdf_text3D.slf | 11 +- libraries/render-utils/src/sdf_text3D.slv | 6 +- .../src/sdf_text3D_transparent.slf | 11 +- libraries/render-utils/src/simple.slf | 16 +- libraries/render-utils/src/simple.slv | 14 +- libraries/render-utils/src/simple_fade.slf | 18 +- libraries/render-utils/src/simple_fade.slv | 16 +- .../src/simple_opaque_web_browser.slf | 12 +- .../render-utils/src/simple_textured.slf | 14 +- .../render-utils/src/simple_textured_fade.slf | 14 +- .../src/simple_textured_unlit.slf | 12 +- .../src/simple_textured_unlit_fade.slf | 12 +- .../render-utils/src/simple_transparent.slf | 16 +- .../src/simple_transparent_textured.slf | 12 +- .../src/simple_transparent_textured_fade.slf | 18 +- .../src/simple_transparent_textured_unlit.slf | 12 +- ...simple_transparent_textured_unlit_fade.slf | 14 +- .../src/simple_transparent_web_browser.slf | 12 +- libraries/render-utils/src/skin_model.slv | 16 +- libraries/render-utils/src/skin_model_dq.slv | 18 +- .../render-utils/src/skin_model_fade.slv | 18 +- .../render-utils/src/skin_model_fade_dq.slv | 18 +- .../src/skin_model_normal_map.slv | 18 +- .../src/skin_model_normal_map_dq.slv | 19 +- .../src/skin_model_normal_map_fade.slv | 20 +- .../src/skin_model_normal_map_fade_dq.slv | 20 +- .../render-utils/src/skin_model_shadow_dq.slv | 2 +- .../src/skin_model_shadow_fade.slv | 4 +- .../src/skin_model_shadow_fade_dq.slv | 8 +- libraries/render-utils/src/ssao.slh | 8 +- .../render-utils/src/ssao_debugOcclusion.slf | 6 +- .../src/ssao_makeHorizontalBlur.slf | 4 +- .../render-utils/src/ssao_makeOcclusion.slf | 4 +- .../render-utils/src/ssao_makePyramid.slf | 6 +- .../src/ssao_makeVerticalBlur.slf | 4 +- .../render-utils/src/standardDrawTexture.slf | 14 +- .../src/standardTransformPNTC.slv | 10 +- .../render-utils/src/stencil_drawMask.slf | 4 +- .../subsurfaceScattering_drawScattering.slf | 9 +- .../src/subsurfaceScattering_makeLUT.slf | 6 +- .../src/subsurfaceScattering_makeProfile.slf | 6 +- ...surfaceScattering_makeSpecularBeckmann.slf | 6 +- .../src/surfaceGeometry_copyDepth.slf | 6 +- .../surfaceGeometry_downsampleDepthNormal.slf | 13 +- .../src/surfaceGeometry_makeCurvature.slf | 15 +- .../src/surfaceGeometry_makeLinearDepth.slf | 9 +- libraries/render-utils/src/taa.slf | 4 +- libraries/render-utils/src/taa.slh | 16 +- libraries/render-utils/src/taa_blend.slf | 4 +- libraries/render-utils/src/text/Font.cpp | 24 +- libraries/render-utils/src/text/Font.h | 4 - libraries/render-utils/src/toneMapping.slf | 12 +- .../src/velocityBuffer_cameraMotion.slf | 8 +- .../render-utils/src/zone_drawAmbient.slf | 4 +- .../render-utils/src/zone_drawKeyLight.slf | 4 +- .../render-utils/src/zone_drawSkybox.slf | 10 +- libraries/render/src/render/BlurTask.cpp | 26 -- libraries/render/src/render/BlurTask.slh | 8 +- .../render/src/render/DrawSceneOctree.cpp | 48 +-- libraries/render/src/render/DrawSceneOctree.h | 10 - libraries/render/src/render/DrawStatus.cpp | 42 +- libraries/render/src/render/DrawStatus.h | 8 - libraries/render/src/render/DrawTask.cpp | 14 +- libraries/render/src/render/DrawTask.h | 2 - libraries/render/src/render/ResampleTask.cpp | 12 +- libraries/render/src/render/ShapePipeline.cpp | 98 ++--- libraries/render/src/render/ShapePipeline.h | 77 ++-- .../src/render/blurGaussianDepthAwareH.slf | 6 +- .../src/render/blurGaussianDepthAwareV.slf | 6 +- libraries/render/src/render/blurGaussianH.slf | 6 +- libraries/render/src/render/blurGaussianV.slf | 6 +- .../render/src/render/drawCellBounds.slf | 6 +- .../render/src/render/drawCellBounds.slv | 6 +- .../render/src/render/drawItemBounds.slf | 6 +- .../render/src/render/drawItemBounds.slv | 15 +- .../render/src/render/drawItemStatus.slf | 8 +- .../render/src/render/drawItemStatus.slv | 15 +- .../render/src/render/drawLODReticle.slf | 4 +- libraries/shaders/CMakeLists.txt | 16 + .../{Shaders.cpp.in => ShaderEnums.cpp.in} | 4 +- libraries/shaders/ShaderEnums.h.in | 9 + libraries/shaders/Shaders.h.in | 14 - libraries/shaders/src/shaders/Shaders.cpp | 95 +++++ libraries/shaders/src/shaders/Shaders.h | 34 ++ .../shaders/src/shaders/ShadersCommon.cpp | 16 - .../shared/src/shared/GlobalAppProperties.cpp | 1 - libraries/test-utils/src/test-utils/Utils.cpp | 40 ++ libraries/test-utils/src/test-utils/Utils.h | 17 + plugins/openvr/src/OpenVrDisplayPlugin.cpp | 117 +++--- tests-manual/gpu-textures/src/TestHelpers.cpp | 11 - tests-manual/gpu-textures/src/TestHelpers.h | 1 - .../gpu-textures/src/TestTextures.cpp | 6 +- tests-manual/gpu/src/TestHelpers.cpp | 11 - tests-manual/gpu/src/TestHelpers.h | 1 - tests-manual/render-perf/CMakeLists.txt | 3 +- tests-manual/render-perf/src/main.cpp | 370 ++++++++---------- .../render-texture-load/CMakeLists.txt | 2 +- tests-manual/render-texture-load/src/main.cpp | 13 +- tests-manual/render-utils/src/main.cpp | 7 - tests-manual/shaders/CMakeLists.txt | 27 -- tests-manual/shaders/src/main.cpp | 222 ----------- tests/gpu/src/ShaderLoadTest.cpp | 33 +- tests/gpu/src/ShaderLoadTest.h | 5 +- tests/gpu/src/TextureTest.cpp | 26 +- tests/shaders/src/ShaderTests.cpp | 199 +++++++--- tools/CMakeLists.txt | 3 + tools/shreflect/CMakeLists.txt | 10 + tools/shreflect/src/main.cpp | 196 ++++++++++ 322 files changed, 4581 insertions(+), 4305 deletions(-) create mode 100644 cmake/externals/json/CMakeLists.txt create mode 100644 cmake/macros/TargetJson.cmake create mode 100644 cmake/modules/FindJSON.cmake create mode 100644 libraries/display-plugins/src/display-plugins/InterleavedSrgbToLinear.slf create mode 100644 libraries/display-plugins/src/display-plugins/SrgbToLinear.slf create mode 100644 libraries/entities-renderer/src/entities-renderer/ShaderConstants.h create mode 100644 libraries/gpu/src/gpu/ShaderConstants.h rename libraries/{render-utils/src => graphics/src/graphics}/MaterialTextures.slh (90%) create mode 100644 libraries/graphics/src/graphics/ShaderConstants.h delete mode 100644 libraries/procedural/src/procedural/ProceduralCommon.slf create mode 100644 libraries/procedural/src/procedural/ProceduralCommon.slh create mode 100644 libraries/procedural/src/procedural/ShaderConstants.h create mode 100644 libraries/procedural/src/procedural/proceduralSkybox.slf create mode 100644 libraries/render-utils/src/ShadingModel.slh create mode 100644 libraries/render-utils/src/render-utils/ShaderConstants.h rename libraries/shaders/{Shaders.cpp.in => ShaderEnums.cpp.in} (65%) create mode 100644 libraries/shaders/ShaderEnums.h.in delete mode 100644 libraries/shaders/Shaders.h.in create mode 100644 libraries/shaders/src/shaders/Shaders.cpp create mode 100644 libraries/shaders/src/shaders/Shaders.h delete mode 100644 libraries/shaders/src/shaders/ShadersCommon.cpp create mode 100644 libraries/test-utils/src/test-utils/Utils.cpp create mode 100644 libraries/test-utils/src/test-utils/Utils.h delete mode 100644 tests-manual/shaders/CMakeLists.txt delete mode 100644 tests-manual/shaders/src/main.cpp create mode 100644 tools/shreflect/CMakeLists.txt create mode 100644 tools/shreflect/src/main.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 54505717d4..2a01b18a57 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,7 @@ include("cmake/compiler.cmake") if (BUILD_SCRIBE_ONLY) add_subdirectory(tools/scribe) + add_subdirectory(tools/shader_reflect) return() endif() diff --git a/android/app/build.gradle b/android/app/build.gradle index d5058a7f40..54405a8746 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -24,6 +24,7 @@ android { '-DANDROID_STL=c++_shared', '-DQT_CMAKE_PREFIX_PATH=' + HIFI_ANDROID_PRECOMPILED + '/qt/lib/cmake', '-DNATIVE_SCRIBE=' + HIFI_ANDROID_PRECOMPILED + '/scribe' + EXEC_SUFFIX, + '-DNATIVE_SHREFLECT=' + HIFI_ANDROID_PRECOMPILED + '/shreflect' + EXEC_SUFFIX, '-DHIFI_ANDROID_PRECOMPILED=' + HIFI_ANDROID_PRECOMPILED, '-DRELEASE_NUMBER=' + RELEASE_NUMBER, '-DRELEASE_TYPE=' + RELEASE_TYPE, diff --git a/android/build.gradle b/android/build.gradle index bc39c30472..b85aba79a1 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -164,18 +164,29 @@ def packages = [ def scribeLocalFile='scribe' + EXEC_SUFFIX - def scribeFile='scribe_linux_x86_64' def scribeChecksum='ca4b904f52f4f993c29175ba96798fa6' def scribeVersion='u_iTrJDaE95i2abTPXOpPZckGBIim53G' + +def shreflectLocalFile='shreflect' + EXEC_SUFFIX +def shreflectFile='shreflect_linux_x86_64' +def shreflectChecksum='d6094a8580066c0b6f4e80b5adfb1d98' +def shreflectVersion='jnrpudh6fptIg6T2.Z6fgKP2ultAdKmE' + if (Os.isFamily(Os.FAMILY_MAC)) { scribeFile = 'scribe_osx_x86_64' scribeChecksum='72db9d32d4e1e50add755570ac5eb749' scribeVersion='DAW0DmnjCRib4MD8x93bgc2Z2MpPojZC' + shreflectFile='shreflect_osx_x86_64' + shreflectChecksum='d613ef0703c21371fee93fd2e54b964f' + shreflectVersion='.rYNzjSFq6WtWDnE5KIKRIAGyJtr__ad' } else if (Os.isFamily(Os.FAMILY_WINDOWS)) { scribeFile = 'scribe_win32_x86_64.exe' scribeChecksum='678e43d290c90fda670c6fefe038a06d' scribeVersion='PuullrA_bPlO9kXZRt8rLe536X1UI.m7' + shreflectFile='shreflect_win32_x86_64.exe' + shreflectChecksum='6f4a77b8cceb3f1bbc655132c3665060' + shreflectVersion='iIyCyza1nelkbI7ihybF59bBlwrfAC3D' } def options = [ @@ -450,11 +461,27 @@ task fixScribePermissions(type: Exec, dependsOn: verifyScribe) { commandLine 'chmod', 'a+x', HIFI_ANDROID_PRECOMPILED + '/' + scribeLocalFile } -task setupScribe(dependsOn: verifyScribe) { } +task downloadShreflect(type: Download) { + src baseUrl + shreflectFile + '?versionId=' + shreflectVersion + dest new File(baseFolder, shreflectLocalFile) + onlyIfNewer true +} + +task verifyShreflect(type: Verify, dependsOn: downloadShreflect) { + src new File(baseFolder, shreflectLocalFile); + checksum shreflectChecksum +} + +task fixShreflectPermissions(type: Exec, dependsOn: verifyShreflect) { + commandLine 'chmod', 'a+x', HIFI_ANDROID_PRECOMPILED + '/' + shreflectLocalFile +} + +task setupScribe(dependsOn: [verifyScribe, verifyShreflect]) { } // On Windows, we don't need to set the executable bit, but on OSX and Unix we do if (!Os.isFamily(Os.FAMILY_WINDOWS)) { setupScribe.dependsOn fixScribePermissions + setupScribe.dependsOn fixShreflectPermissions } task extractGvrBinaries(dependsOn: extractDependencies) { diff --git a/cmake/compiler.cmake b/cmake/compiler.cmake index de9f8a22fa..6ff6fce1d8 100644 --- a/cmake/compiler.cmake +++ b/cmake/compiler.cmake @@ -1,10 +1,12 @@ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG") +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +if (NOT "${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + message( FATAL_ERROR "Only 64 bit builds supported." ) +endif() if (WIN32) - if (NOT "${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - message( FATAL_ERROR "Only 64 bit builds supported." ) - endif() - add_definitions(-DNOMINMAX -D_CRT_SECURE_NO_WARNINGS) if (NOT WINDOW_SDK_PATH) @@ -52,32 +54,27 @@ endif() if (ANDROID) # assume that the toolchain selected for android has C++11 support - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") +elseif(APPLE) + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --stdlib=libc++") + if (CMAKE_GENERATOR STREQUAL "Xcode") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") + set(CMAKE_XCODE_ATTRIBUTE_GCC_GENERATE_DEBUGGING_SYMBOLS[variant=Release] "YES") + set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT[variant=Release] "dwarf-with-dsym") + set(CMAKE_XCODE_ATTRIBUTE_DEPLOYMENT_POSTPROCESSING[variant=Release] "YES") + endif() elseif ((NOT MSVC12) AND (NOT MSVC14)) include(CheckCXXCompilerFlag) - CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) - CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) - if (COMPILER_SUPPORTS_CXX11) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - elseif(COMPILER_SUPPORTS_CXX0X) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") + CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX14) + if (COMPILER_SUPPORTS_CXX14) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") else() message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") endif() endif () -if (CMAKE_GENERATOR STREQUAL "Xcode") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") - set(CMAKE_XCODE_ATTRIBUTE_GCC_GENERATE_DEBUGGING_SYMBOLS[variant=Release] "YES") - set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT[variant=Release] "dwarf-with-dsym") - set(CMAKE_XCODE_ATTRIBUTE_DEPLOYMENT_POSTPROCESSING[variant=Release] "YES") -endif() - -if (APPLE) - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --stdlib=libc++") -endif () if (NOT ANDROID_LIB_DIR) set(ANDROID_LIB_DIR $ENV{ANDROID_LIB_DIR}) @@ -110,4 +107,4 @@ if (APPLE) # set that as the SDK to use set(CMAKE_OSX_SYSROOT ${_OSX_DESIRED_SDK_PATH}/MacOSX${OSX_SDK}.sdk) endif () -endif () \ No newline at end of file +endif () diff --git a/cmake/externals/json/CMakeLists.txt b/cmake/externals/json/CMakeLists.txt new file mode 100644 index 0000000000..91bdb09fc8 --- /dev/null +++ b/cmake/externals/json/CMakeLists.txt @@ -0,0 +1,22 @@ +set(EXTERNAL_NAME json) + +include(ExternalProject) +ExternalProject_Add( + ${EXTERNAL_NAME} + URL https://hifi-public.s3.amazonaws.com/dependencies/json_3.1.2.zip + URL_MD5 94dbf6ea25a7569ddc0ab6e20862cf16 + BINARY_DIR ${EXTERNAL_PROJECT_PREFIX}/build + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= ${EXTERNAL_ARGS} + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + LOG_DOWNLOAD 1 +) + +# Hide this external target (for ide users) +set_target_properties(${EXTERNAL_NAME} PROPERTIES FOLDER "hidden/externals") + +ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR) + +string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) +set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIRS ${SOURCE_DIR} CACHE PATH "List of json include directories") diff --git a/cmake/macros/AutoScribeShader.cmake b/cmake/macros/AutoScribeShader.cmake index 7d1b5395b9..03eaa2842f 100755 --- a/cmake/macros/AutoScribeShader.cmake +++ b/cmake/macros/AutoScribeShader.cmake @@ -86,23 +86,26 @@ macro(AUTOSCRIBE_APPEND_SHADER_SOURCES) endmacro() macro(AUTOSCRIBE_SHADER_LIB) - set(GLOBAL_SHADER_SOURCES "") - set(HIFI_LIBRARIES_SHADER_INCLUDE_FILES "") + unset(HIFI_LIBRARIES_SHADER_INCLUDE_FILES) set(SRC_FOLDER "${CMAKE_SOURCE_DIR}/libraries/${TARGET_NAME}/src") + file(GLOB_RECURSE SHADER_INCLUDE_FILES ${SRC_FOLDER}/*.slh) file(GLOB_RECURSE SHADER_VERTEX_FILES ${SRC_FOLDER}/*.slv) file(GLOB_RECURSE SHADER_FRAGMENT_FILES ${SRC_FOLDER}/*.slf) file(GLOB_RECURSE SHADER_GEOMETRY_FILES ${SRC_FOLDER}/*.slg) file(GLOB_RECURSE SHADER_COMPUTE_FILES ${SRC_FOLDER}/*.slc) + unset(SHADER_SOURCE_FILES) list(APPEND SHADER_SOURCE_FILES ${SHADER_VERTEX_FILES}) list(APPEND SHADER_SOURCE_FILES ${SHADER_FRAGMENT_FILES}) list(APPEND SHADER_SOURCE_FILES ${SHADER_GEOMETRY_FILES}) list(APPEND SHADER_SOURCE_FILES ${SHADER_COMPUTE_FILES}) - list(APPEND GLOBAL_SHADER_SOURCES ${SHADER_SOURCE_FILES}) - list(APPEND GLOBAL_SHADER_SOURCES ${SHADER_INCLUDE_FILES}) - AUTOSCRIBE_APPEND_SHADER_SOURCES(${GLOBAL_SHADER_SOURCES}) + unset(LOCAL_SHADER_SOURCES) + list(APPEND LOCAL_SHADER_SOURCES ${SHADER_SOURCE_FILES}) + list(APPEND LOCAL_SHADER_SOURCES ${SHADER_INCLUDE_FILES}) + + AUTOSCRIBE_APPEND_SHADER_SOURCES(${LOCAL_SHADER_SOURCES}) file(RELATIVE_PATH RELATIVE_LIBRARY_DIR_PATH ${CMAKE_CURRENT_SOURCE_DIR} "${HIFI_LIBRARY_DIR}") foreach(HIFI_LIBRARY ${ARGN}) @@ -157,6 +160,8 @@ macro(PROCESS_SHADER_FILE) file(TO_CMAKE_PATH "${AUTOSCRIBE_SHADER_RETURN}" AUTOSCRIBE_GENERATED_FILE) set_property(SOURCE ${AUTOSCRIBE_GENERATED_FILE} PROPERTY SKIP_AUTOMOC ON) source_group("Compiled/${SHADER_LIB}" FILES ${AUTOSCRIBE_GENERATED_FILE}) + set(REFLECTED_SHADER "${AUTOSCRIBE_GENERATED_FILE}.json") + source_group("Reflected/${SHADER_LIB}" FILES ${REFLECTED_SHADER}) list(APPEND COMPILED_SHADERS ${AUTOSCRIBE_GENERATED_FILE}) get_filename_component(ENUM_NAME ${SHADER} NAME_WE) string(CONCAT SHADER_ENUMS "${SHADER_ENUMS}" "${ENUM_NAME} = ${SHADER_COUNT},\n") @@ -239,27 +244,48 @@ macro(AUTOSCRIBE_SHADER_FINISH) string(CONCAT SHADER_PROGRAMS_ARRAY "${SHADER_PROGRAMS_ARRAY}" " ${SHADER_PROGRAM},\n") endforeach() + set(SHREFLECT_COMMAND shreflect) + set(SHREFLECT_DEPENDENCY shreflect) + if (ANDROID) + set(SHREFLECT_COMMAND ${NATIVE_SHREFLECT}) + unset(SHREFLECT_DEPENDENCY) + endif() + set(SHADER_COUNT 0) foreach(COMPILED_SHADER ${COMPILED_SHADERS}) + set(REFLECTED_SHADER "${COMPILED_SHADER}.json") + list(APPEND COMPILED_SHADER_REFLECTIONS ${REFLECTED_SHADER}) string(CONCAT SHADER_QRC "${SHADER_QRC}" "${COMPILED_SHADER}\n") + string(CONCAT SHADER_QRC "${SHADER_QRC}" "${REFLECTED_SHADER}\n") MATH(EXPR SHADER_COUNT "${SHADER_COUNT}+1") + add_custom_command( + OUTPUT ${REFLECTED_SHADER} + COMMAND ${SHREFLECT_COMMAND} ${COMPILED_SHADER} + DEPENDS ${SHREFLECT_DEPENDENCY} ${COMPILED_SHADER} + ) endforeach() + + # Custom targets required to force generation of the shaders via scribe + add_custom_target(compiled_shaders SOURCES ${COMPILED_SHADERS}) + add_custom_target(reflected_shaders SOURCES ${COMPILED_SHADER_REFLECTIONS}) + set_target_properties(compiled_shaders PROPERTIES FOLDER "Shaders") + set_target_properties(reflected_shaders PROPERTIES FOLDER "Shaders") configure_file( - Shaders.cpp.in - ${CMAKE_CURRENT_BINARY_DIR}/shaders/Shaders.cpp + ShaderEnums.cpp.in + ${CMAKE_CURRENT_BINARY_DIR}/shaders/ShaderEnums.cpp ) configure_file( - Shaders.h.in - ${CMAKE_CURRENT_BINARY_DIR}/shaders/Shaders.h + ShaderEnums.h.in + ${CMAKE_CURRENT_BINARY_DIR}/shaders/ShaderEnums.h ) configure_file( shaders.qrc.in ${CMAKE_CURRENT_BINARY_DIR}/shaders.qrc ) - set(AUTOSCRIBE_SHADER_LIB_SRC "${CMAKE_CURRENT_BINARY_DIR}/shaders/Shaders.h;${CMAKE_CURRENT_BINARY_DIR}/shaders/Shaders.cpp") + set(AUTOSCRIBE_SHADER_LIB_SRC "${CMAKE_CURRENT_BINARY_DIR}/shaders/ShaderEnums.h;${CMAKE_CURRENT_BINARY_DIR}/shaders/ShaderEnums.cpp") + list(APPEND AUTOSCRIBE_SHADER_LIB_SRC ${COMPILED_SHADERS}) set(QT_RESOURCES_FILE ${CMAKE_CURRENT_BINARY_DIR}/shaders.qrc) get_property(GLOBAL_SHADER_SOURCES GLOBAL PROPERTY GLOBAL_SHADER_SOURCES) list(REMOVE_DUPLICATES GLOBAL_SHADER_SOURCES) - #add_custom_target(shader-sources SOURCES ${GLOBAL_SHADER_SOURCES} ${COMPILED_SHADERS} "${CMAKE_BINARY_DIR}/shaders/Shaders.h") endmacro() diff --git a/cmake/macros/TargetJson.cmake b/cmake/macros/TargetJson.cmake new file mode 100644 index 0000000000..057024cd0a --- /dev/null +++ b/cmake/macros/TargetJson.cmake @@ -0,0 +1,13 @@ +# +# Created by Bradley Austin Davis on 2018/07/22 +# Copyright 2013-2018 High Fidelity, Inc. +# +# Distributed under the Apache License, Version 2.0. +# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +# +macro(TARGET_JSON) + add_dependency_external_projects(json) + find_package(JSON REQUIRED) + message("JSON_INCLUDE_DIRS ${JSON_INCLUDE_DIRS}") + target_include_directories(${TARGET_NAME} PUBLIC ${JSON_INCLUDE_DIRS}) +endmacro() \ No newline at end of file diff --git a/cmake/modules/FindJSON.cmake b/cmake/modules/FindJSON.cmake new file mode 100644 index 0000000000..d5011bd5dd --- /dev/null +++ b/cmake/modules/FindJSON.cmake @@ -0,0 +1,19 @@ +# +# Created by Bradley Austin Davis on 2018/07/22 +# Copyright 2013-2018 High Fidelity, Inc. +# +# Distributed under the Apache License, Version 2.0. +# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +# + +# setup hints for JSON search +include("${MACRO_DIR}/HifiLibrarySearchHints.cmake") +hifi_library_search_hints("json") + +# locate header +find_path(JSON_INCLUDE_DIRS "json/json.hpp" HINTS ${JSON_SEARCH_DIRS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(JSON DEFAULT_MSG JSON_INCLUDE_DIRS) + +mark_as_advanced(JSON_INCLUDE_DIRS JSON_SEARCH_DIRS) \ No newline at end of file diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index b859dc4b66..49b449aa39 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2703,8 +2703,6 @@ void Application::initializeGL() { // contexts _glWidget->makeCurrent(); gpu::Context::init(); - qApp->setProperty(hifi::properties::gl::MAKE_PROGRAM_CALLBACK, - QVariant::fromValue((void*)(&gpu::gl::GLBackend::makeProgram))); _glWidget->makeCurrent(); _gpuContext = std::make_shared(); diff --git a/interface/src/workload/GameWorkloadRenderer.cpp b/interface/src/workload/GameWorkloadRenderer.cpp index c0aaad8100..ae0e0abbeb 100644 --- a/interface/src/workload/GameWorkloadRenderer.cpp +++ b/interface/src/workload/GameWorkloadRenderer.cpp @@ -146,11 +146,6 @@ void GameWorkloadRenderItem::setAllViews(const workload::Views& views) { const gpu::PipelinePointer GameWorkloadRenderItem::getProxiesPipeline() { if (!_drawAllProxiesPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::drawWorkloadProxy); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding("workloadProxiesBuffer", 0)); - gpu::Shader::makeProgram(*program, slotBindings); - auto state = std::make_shared(); state->setDepthTest(true, true, gpu::LESS_EQUAL); /* state->setBlendFunction(true, @@ -168,12 +163,6 @@ const gpu::PipelinePointer GameWorkloadRenderItem::getProxiesPipeline() { const gpu::PipelinePointer GameWorkloadRenderItem::getViewsPipeline() { if (!_drawAllViewsPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::drawWorkloadView); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding("workloadViewsBuffer", 1)); - slotBindings.insert(gpu::Shader::Binding("drawMeshBuffer", 0)); - gpu::Shader::makeProgram(*program, slotBindings); - auto state = std::make_shared(); state->setDepthTest(true, true, gpu::LESS_EQUAL); /* state->setBlendFunction(true, @@ -184,6 +173,7 @@ const gpu::PipelinePointer GameWorkloadRenderItem::getViewsPipeline() { state->setCullMode(gpu::State::CULL_NONE); _drawAllViewsPipeline = gpu::Pipeline::create(program, state); } + return _drawAllViewsPipeline; } diff --git a/libraries/display-plugins/src/display-plugins/InterleavedSrgbToLinear.slf b/libraries/display-plugins/src/display-plugins/InterleavedSrgbToLinear.slf new file mode 100644 index 0000000000..db94594fe9 --- /dev/null +++ b/libraries/display-plugins/src/display-plugins/InterleavedSrgbToLinear.slf @@ -0,0 +1,21 @@ +struct TextureData { + ivec2 textureSize; +}; + +layout(std140, location=0) uniform textureDataBuffer { + TextureData textureData; +}; + +layout(binding=0) uniform sampler2D colorMap; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; + +void main(void) { + ivec2 texCoord = ivec2(floor(varTexCoord0 * textureData.textureSize)); + texCoord.x /= 2; + int row = int(floor(gl_FragCoord.y)); + if (row % 2 > 0) { + texCoord.x += (textureData.textureSize.x / 2); + } + outFragColor = vec4(pow(texelFetch(colorMap, texCoord, 0).rgb, vec3(2.2)), 1.0); +} diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index b9328e01c3..580bea254a 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -44,33 +44,6 @@ #include "CompositorHelper.h" #include "Logging.h" -const char* SRGB_TO_LINEAR_FRAG = R"SCRIBE( - -// OpenGLDisplayPlugin_present.frag - -uniform sampler2D colorMap; - -in vec2 varTexCoord0; - -out vec4 outFragColor; - -float sRGBFloatToLinear(float value) { - const float SRGB_ELBOW = 0.04045; - - return (value <= SRGB_ELBOW) ? value / 12.92 : pow((value + 0.055) / 1.055, 2.4); -} - -vec3 colorToLinearRGB(vec3 srgb) { - return vec3(sRGBFloatToLinear(srgb.r), sRGBFloatToLinear(srgb.g), sRGBFloatToLinear(srgb.b)); -} - -void main(void) { - outFragColor.a = 1.0; - outFragColor.rgb = colorToLinearRGB(texture(colorMap, varTexCoord0).rgb); -} - -)SCRIBE"; - extern QThread* RENDER_THREAD; class PresentThread : public QThread, public Dependency { @@ -391,10 +364,7 @@ void OpenGLDisplayPlugin::customizeContext() { if (!_presentPipeline) { { - auto vs = gpu::Shader::createVertex(shader::gpu::vertex::DrawUnitQuadTexcoord); - auto ps = gpu::Shader::createPixel(shader::gpu::fragment::DrawTexture); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::makeProgram(*program); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::gpu::program::drawTexture); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(gpu::State::DepthTest(false)); state->setScissorEnable(true); @@ -402,10 +372,7 @@ void OpenGLDisplayPlugin::customizeContext() { } { - auto vs = gpu::Shader::createVertex(shader::gpu::vertex::DrawUnitQuadTexcoord); - auto ps = gpu::Shader::createPixel(std::string(SRGB_TO_LINEAR_FRAG)); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::makeProgram(*program); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::display_plugins::program::SrgbToLinear); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(gpu::State::DepthTest(false)); state->setScissorEnable(true); @@ -416,7 +383,6 @@ void OpenGLDisplayPlugin::customizeContext() { auto vs = gpu::Shader::createVertex(shader::gpu::vertex::DrawUnitQuadTexcoord); auto ps = gpu::Shader::createPixel(shader::gpu::fragment::DrawTexture); gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::makeProgram(*program); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(gpu::State::DepthTest(false)); state->setBlendFunction(true, @@ -429,7 +395,6 @@ void OpenGLDisplayPlugin::customizeContext() { auto vs = gpu::Shader::createVertex(shader::gpu::vertex::DrawUnitQuadTexcoord); auto ps = gpu::Shader::createPixel(shader::gpu::fragment::DrawTextureMirroredX); gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::makeProgram(*program); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(gpu::State::DepthTest(false)); state->setBlendFunction(true, @@ -442,7 +407,6 @@ void OpenGLDisplayPlugin::customizeContext() { auto vs = gpu::Shader::createVertex(shader::gpu::vertex::DrawTransformUnitQuad); auto ps = gpu::Shader::createPixel(shader::gpu::fragment::DrawTexture); gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::makeProgram(*program); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(gpu::State::DepthTest(false)); state->setBlendFunction(true, diff --git a/libraries/display-plugins/src/display-plugins/SrgbToLinear.slf b/libraries/display-plugins/src/display-plugins/SrgbToLinear.slf new file mode 100644 index 0000000000..c2bcfb5cb3 --- /dev/null +++ b/libraries/display-plugins/src/display-plugins/SrgbToLinear.slf @@ -0,0 +1,22 @@ +// OpenGLDisplayPlugin_present.frag + +layout(binding = 0) uniform sampler2D colorMap; + +layout(location = 0) in vec2 varTexCoord0; + +layout(location = 0) out vec4 outFragColor; + +float sRGBFloatToLinear(float value) { + const float SRGB_ELBOW = 0.04045; + + return (value <= SRGB_ELBOW) ? value / 12.92 : pow((value + 0.055) / 1.055, 2.4); +} + +vec3 colorToLinearRGB(vec3 srgb) { + return vec3(sRGBFloatToLinear(srgb.r), sRGBFloatToLinear(srgb.g), sRGBFloatToLinear(srgb.b)); +} + +void main(void) { + outFragColor.a = 1.0; + outFragColor.rgb = colorToLinearRGB(texture(colorMap, varTexCoord0).rgb); +} diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp index 9966fb4357..d76b211ede 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp @@ -408,9 +408,6 @@ void HmdDisplayPlugin::HUDRenderer::build() { void HmdDisplayPlugin::HUDRenderer::updatePipeline() { if (!pipeline) { auto program = gpu::Shader::createProgram(shader::render_utils::program::hmd_ui); - gpu::Shader::makeProgram(*program, gpu::Shader::BindingSet()); - uniformsLocation = program->getUniformBuffers().findLocation("hudBuffer"); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(gpu::State::DepthTest(true, true, gpu::LESS_EQUAL)); state->setBlendFunction(true, @@ -433,9 +430,8 @@ std::function HmdDis batch.setInputBuffer(gpu::Stream::POSITION, posView); batch.setInputBuffer(gpu::Stream::TEXCOORD, uvView); batch.setIndexBuffer(gpu::UINT16, indices, 0); - uniformsBuffer->setSubData(0, uniforms); - batch.setUniformBuffer(uniformsLocation, uniformsBuffer); + batch.setUniformBuffer(0, uniformsBuffer); auto compositorHelper = DependencyManager::get(); glm::mat4 modelTransform = compositorHelper->getUiTransform(); diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h index fb10084b09..ea11832e94 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h @@ -102,7 +102,6 @@ private: gpu::BufferPointer indices; uint32_t indexCount { 0 }; gpu::PipelinePointer pipeline; - int32_t uniformsLocation { -1 }; gpu::BufferPointer uniformsBuffer; diff --git a/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.cpp index fe3f54a9a8..0ae0f9b1b6 100644 --- a/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.cpp @@ -13,43 +13,12 @@ #include #include -static const char* INTERLEAVED_SRGB_TO_LINEAR_FRAG = R"SCRIBE( - -struct TextureData { - ivec2 textureSize; -}; - -layout(std140) uniform textureDataBuffer { - TextureData textureData; -}; - -uniform sampler2D colorMap; - -in vec2 varTexCoord0; - -out vec4 outFragColor; - -void main(void) { - ivec2 texCoord = ivec2(floor(varTexCoord0 * textureData.textureSize)); - texCoord.x /= 2; - int row = int(floor(gl_FragCoord.y)); - if (row % 2 > 0) { - texCoord.x += (textureData.textureSize.x / 2); - } - outFragColor = vec4(pow(texelFetch(colorMap, texCoord, 0).rgb, vec3(2.2)), 1.0); -} - -)SCRIBE"; - const QString InterleavedStereoDisplayPlugin::NAME("3D TV - Interleaved"); void InterleavedStereoDisplayPlugin::customizeContext() { StereoDisplayPlugin::customizeContext(); if (!_interleavedPresentPipeline) { - auto vs = gpu::Shader::createVertex(shader::gpu::vertex::DrawUnitQuadTexcoord); - auto ps = gpu::Shader::createPixel(std::string(INTERLEAVED_SRGB_TO_LINEAR_FRAG)); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::makeProgram(*program); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::display_plugins::program::InterleavedSrgbToLinear); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(gpu::State::DepthTest(false)); _interleavedPresentPipeline = gpu::Pipeline::create(program, state); diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index f5118b3570..18c4921836 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -22,8 +22,6 @@ using namespace render::entities; static uint8_t CUSTOM_PIPELINE_NUMBER = 0; static gpu::Stream::FormatPointer _vertexFormat; static std::weak_ptr _texturedPipeline; -// FIXME: This is interfering with the uniform buffers in DeferredLightingEffect.cpp, so use 12 to avoid collisions -static int32_t PARTICLE_UNIFORM_SLOT { 12 }; static ShapePipelinePointer shapePipelineFactory(const ShapePlumber& plumber, const ShapeKey& key, gpu::Batch& batch) { auto texturedPipeline = _texturedPipeline.lock(); @@ -37,12 +35,6 @@ static ShapePipelinePointer shapePipelineFactory(const ShapePlumber& plumber, co auto program = gpu::Shader::createProgram(shader::entities_renderer::program::textured_particle); _texturedPipeline = texturedPipeline = gpu::Pipeline::create(program, state); - - batch.runLambda([program] { - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("particleBuffer"), PARTICLE_UNIFORM_SLOT)); - gpu::Shader::makeProgram(*program, slotBindings); - }); } return std::make_shared(texturedPipeline, nullptr, nullptr, nullptr); @@ -342,7 +334,7 @@ void ParticleEffectEntityRenderer::doRender(RenderArgs* args) { transform.setRotation(_renderTransform.getRotation()); }); batch.setModelTransform(transform); - batch.setUniformBuffer(PARTICLE_UNIFORM_SLOT, _uniformBuffer); + batch.setUniformBuffer(0, _uniformBuffer); batch.setInputFormat(_vertexFormat); batch.setInputBuffer(0, _particleBuffer, 0, sizeof(GpuParticle)); diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp index fac2fd5841..25e8e859aa 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp @@ -49,21 +49,6 @@ static render::ShapePipelinePointer shapePipelineFactory(const render::ShapePlum auto fadePS = gpu::Shader::createPixel(std::string(paintStroke_fade_frag)); gpu::ShaderPointer fadeProgram = gpu::Shader::createProgram(fadeVS, fadePS); #endif - batch.runLambda([program -#ifdef POLYLINE_ENTITY_USE_FADE_EFFECT - , fadeProgram -#endif - ] { - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("originalTexture"), PAINTSTROKE_TEXTURE_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("polyLineBuffer"), PAINTSTROKE_UNIFORM_SLOT)); - gpu::Shader::makeProgram(*program, slotBindings); -#ifdef POLYLINE_ENTITY_USE_FADE_EFFECT - slotBindings.insert(gpu::Shader::Binding(std::string("fadeMaskMap"), PAINTSTROKE_TEXTURE_SLOT + 1)); - slotBindings.insert(gpu::Shader::Binding(std::string("fadeParametersBuffer"), PAINTSTROKE_UNIFORM_SLOT + 1)); - gpu::Shader::makeProgram(*fadeProgram, slotBindings); -#endif - }); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(true, true, gpu::LESS_EQUAL); PrepareStencil::testMask(*state); diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp index 0157db4cb0..c11ccb70a0 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp @@ -25,6 +25,10 @@ #include #include #include +#include +#include + +#include "entities-renderer/ShaderConstants.h" #include @@ -1556,7 +1560,6 @@ scriptable::ScriptableModelBase RenderablePolyVoxEntityItem::getScriptableModel( using namespace render; using namespace render::entities; -static const int MATERIAL_GPU_SLOT { 3 }; static uint8_t CUSTOM_PIPELINE_NUMBER; static gpu::PipelinePointer _pipelines[2]; static gpu::PipelinePointer _wireframePipelines[2]; @@ -1567,15 +1570,6 @@ ShapePipelinePointer shapePipelineFactory(const ShapePlumber& plumber, const Sha using namespace shader::entities_renderer::program; int programsIds[2] = { polyvox, polyvox_fade }; - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("materialBuffer"), MATERIAL_GPU_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("xMap"), 0)); - slotBindings.insert(gpu::Shader::Binding(std::string("yMap"), 1)); - slotBindings.insert(gpu::Shader::Binding(std::string("zMap"), 2)); -#ifdef POLYVOX_ENTITY_USE_FADE_EFFECT - slotBindings.insert(gpu::Shader::Binding(std::string("fadeMaskMap"), 3)); -#endif - auto state = std::make_shared(); state->setCullMode(gpu::State::CULL_BACK); state->setDepthTest(true, true, gpu::LESS_EQUAL); @@ -1590,11 +1584,6 @@ ShapePipelinePointer shapePipelineFactory(const ShapePlumber& plumber, const Sha // Two sets of pipelines: normal and fading for (auto i = 0; i < 2; i++) { gpu::ShaderPointer program = gpu::Shader::createProgram(programsIds[i]); - - batch.runLambda([program, slotBindings] { - gpu::Shader::makeProgram(*program, slotBindings); - }); - _pipelines[i] = gpu::Pipeline::create(program, state); _wireframePipelines[i] = gpu::Pipeline::create(program, wireframeState); } @@ -1729,8 +1718,7 @@ void PolyVoxEntityRenderer::doRender(RenderArgs* args) { } } - int voxelVolumeSizeLocation = args->_shapePipeline->pipeline->getProgram()->getUniforms().findLocation("voxelVolumeSize"); - batch._glUniform3f(voxelVolumeSizeLocation, _lastVoxelVolumeSize.x, _lastVoxelVolumeSize.y, _lastVoxelVolumeSize.z); + batch._glUniform3f(entities_renderer::slot::uniform::PolyvoxVoxelSize, _lastVoxelVolumeSize.x, _lastVoxelVolumeSize.y, _lastVoxelVolumeSize.z); batch.drawIndexed(gpu::TRIANGLES, (gpu::uint32)_mesh->getNumIndices(), 0); } diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp index b73ceb3269..a1b0eaf9e6 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp @@ -32,9 +32,9 @@ static const float SPHERE_ENTITY_SCALE = 0.5f; ShapeEntityRenderer::ShapeEntityRenderer(const EntityItemPointer& entity) : Parent(entity) { - _procedural._vertexSource = gpu::Shader::getVertexShaderSource(shader::render_utils::vertex::simple).getCode(); + _procedural._vertexSource = gpu::Shader::getVertexShaderSource(shader::render_utils::vertex::simple); // FIXME: Setup proper uniform slots and use correct pipelines for forward rendering - _procedural._opaquefragmentSource = gpu::Shader::getFragmentShaderSource(shader::render_utils::fragment::simple).getCode(); + _procedural._opaquefragmentSource = gpu::Shader::getFragmentShaderSource(shader::render_utils::fragment::simple); // FIXME: Transparent procedural entities only seem to work if they use the opaque pipelines //_procedural._transparentfragmentSource = simple_transparent_frag::getSource(); _procedural._transparentfragmentSource = _procedural._opaquefragmentSource; diff --git a/libraries/entities-renderer/src/entities-renderer/ShaderConstants.h b/libraries/entities-renderer/src/entities-renderer/ShaderConstants.h new file mode 100644 index 0000000000..58b0bf5688 --- /dev/null +++ b/libraries/entities-renderer/src/entities-renderer/ShaderConstants.h @@ -0,0 +1,61 @@ +// + +// <@if not ENTITIES_SHADER_CONSTANTS_H@> +// <@def ENTITIES_SHADER_CONSTANTS_H@> + +// Hack comment to absorb the extra '//' scribe prepends + +#ifndef ENTITIES_SHADER_CONSTANTS_H +#define ENTITIES_SHADER_CONSTANTS_H + +// Polyvox +#define ENTITIES_UNIFORM_POLYVOX_VOXEL_SIZE 0 +#define ENTITIES_TEXTURE_POLYVOX_XMAP 0 +#define ENTITIES_TEXTURE_POLYVOX_YMAP 1 +#define ENTITIES_TEXTURE_POLYVOX_ZMAP 2 + + + +// +// Hack Comment + +#endif // ENTITIES_SHADER_CONSTANTS_H + +// <@if 1@> +// Trigger Scribe include +// <@endif@> + +// <@endif@> + +// Hack Comment diff --git a/libraries/entities-renderer/src/paintStroke.slf b/libraries/entities-renderer/src/paintStroke.slf index 738561eccc..718e4608b0 100644 --- a/libraries/entities-renderer/src/paintStroke.slf +++ b/libraries/entities-renderer/src/paintStroke.slf @@ -16,18 +16,18 @@ // the albedo texture -uniform sampler2D originalTexture; +layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal -in vec3 interpolatedNormal; -in vec2 varTexcoord; -in vec4 varColor; +layout(location=0) in vec3 interpolatedNormal; +layout(location=1) in vec2 varTexcoord; +layout(location=2) in vec4 varColor; struct PolyLineUniforms { vec3 color; }; -uniform polyLineBuffer { +layout(binding=0) uniform polyLineBuffer { PolyLineUniforms polyline; }; diff --git a/libraries/entities-renderer/src/paintStroke.slv b/libraries/entities-renderer/src/paintStroke.slv index 0cf9596cce..5e7d9f0ae3 100644 --- a/libraries/entities-renderer/src/paintStroke.slv +++ b/libraries/entities-renderer/src/paintStroke.slv @@ -18,12 +18,12 @@ <$declareStandardTransform()$> // the interpolated normal -out vec3 interpolatedNormal; +layout(location=0) out vec3 interpolatedNormal; //the diffuse texture -out vec2 varTexcoord; +layout(location=1) out vec2 varTexcoord; -out vec4 varColor; +layout(location=2) out vec4 varColor; void main(void) { diff --git a/libraries/entities-renderer/src/paintStroke_fade.slf b/libraries/entities-renderer/src/paintStroke_fade.slf index cc037aeac4..8739c9bb9b 100644 --- a/libraries/entities-renderer/src/paintStroke_fade.slf +++ b/libraries/entities-renderer/src/paintStroke_fade.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// paintStroke_fade.slf +// paintStroke_fade.frag // fragment shader // // Created by Olivier Prat on 19/07/17. @@ -18,19 +18,19 @@ <$declareFadeFragment()$> // the albedo texture -uniform sampler2D originalTexture; +layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal -in vec3 interpolatedNormal; -in vec2 varTexcoord; -in vec4 varColor; -in vec4 _worldPosition; +layout(location=0) in vec3 interpolatedNormal; +layout(location=1) in vec2 varTexcoord; +layout(location=2) in vec4 varColor; +layout(location=3) in vec4 _worldPosition; struct PolyLineUniforms { vec3 color; }; -uniform polyLineBuffer { +layout(binding=0) uniform polyLineBuffer { PolyLineUniforms polyline; }; diff --git a/libraries/entities-renderer/src/paintStroke_fade.slv b/libraries/entities-renderer/src/paintStroke_fade.slv index b6075caaf8..f6fcb18c98 100644 --- a/libraries/entities-renderer/src/paintStroke_fade.slv +++ b/libraries/entities-renderer/src/paintStroke_fade.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// paintStroke_fade.slv +// paintStroke_fade.vert // vertex shader // // Created by Olivier Prat on 19/07/17. @@ -18,13 +18,13 @@ <$declareStandardTransform()$> // the interpolated normal -out vec3 interpolatedNormal; +layout(location=0) out vec3 interpolatedNormal; //the diffuse texture -out vec2 varTexcoord; +layout(location=1) out vec2 varTexcoord; -out vec4 varColor; -out vec4 _worldPosition; +layout(location=2) out vec4 varColor; +layout(location=3) out vec4 _worldPosition; void main(void) { diff --git a/libraries/entities-renderer/src/polyvox.slf b/libraries/entities-renderer/src/polyvox.slf index 50034db48c..ba2fd7031b 100644 --- a/libraries/entities-renderer/src/polyvox.slf +++ b/libraries/entities-renderer/src/polyvox.slf @@ -13,15 +13,17 @@ <@include graphics/Material.slh@> <@include DeferredBufferWrite.slh@> +<@include render-utils/ShaderConstants.h@> +<@include entities-renderer/ShaderConstants.h@> -in vec3 _normal; -in vec4 _position; -in vec4 _worldPosition; +layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normal; +layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _position; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _worldPosition; -uniform sampler2D xMap; -uniform sampler2D yMap; -uniform sampler2D zMap; -uniform vec3 voxelVolumeSize; +layout(binding=ENTITIES_TEXTURE_POLYVOX_XMAP) uniform sampler2D xMap; +layout(binding=ENTITIES_TEXTURE_POLYVOX_YMAP) uniform sampler2D yMap; +layout(binding=ENTITIES_TEXTURE_POLYVOX_ZMAP) uniform sampler2D zMap; +layout(location=ENTITIES_UNIFORM_POLYVOX_VOXEL_SIZE) uniform vec3 voxelVolumeSize; void main(void) { vec3 worldNormal = cross(dFdy(_worldPosition.xyz), dFdx(_worldPosition.xyz)); diff --git a/libraries/entities-renderer/src/polyvox.slv b/libraries/entities-renderer/src/polyvox.slv index eb8d264a1b..d17974c994 100644 --- a/libraries/entities-renderer/src/polyvox.slv +++ b/libraries/entities-renderer/src/polyvox.slv @@ -11,14 +11,14 @@ // <@include gpu/Inputs.slh@> - <@include gpu/Transform.slh@> +<@include render-utils/ShaderConstants.h@> <$declareStandardTransform()$> -out vec4 _position; -out vec4 _worldPosition; -out vec3 _normal; +layout(location=RENDER_UTILS_ATTR_POSITION_MS) out vec4 _position; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _worldPosition; +layout(location=RENDER_UTILS_ATTR_NORMAL_MS) out vec3 _normal; void main(void) { // standard transform diff --git a/libraries/entities-renderer/src/polyvox_fade.slf b/libraries/entities-renderer/src/polyvox_fade.slf index 4c179a15b6..2247e472ea 100644 --- a/libraries/entities-renderer/src/polyvox_fade.slf +++ b/libraries/entities-renderer/src/polyvox_fade.slf @@ -13,18 +13,21 @@ <@include graphics/Material.slh@> <@include DeferredBufferWrite.slh@> +<@include render-utils/ShaderConstants.h@> +<@include entities-renderer/ShaderConstants.h@> <@include Fade.slh@> -in vec3 _normal; -in vec4 _position; -in vec4 _worldPosition; -in vec4 _worldFadePosition; +layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normal; +layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _position; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _worldPosition; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _worldFadePosition; -uniform sampler2D xMap; -uniform sampler2D yMap; -uniform sampler2D zMap; -uniform vec3 voxelVolumeSize; +layout(binding=ENTITIES_TEXTURE_POLYVOX_XMAP) uniform sampler2D xMap; +layout(binding=ENTITIES_TEXTURE_POLYVOX_YMAP) uniform sampler2D yMap; +layout(binding=ENTITIES_TEXTURE_POLYVOX_ZMAP) uniform sampler2D zMap; + +layout(location=ENTITIES_UNIFORM_POLYVOX_VOXEL_SIZE) uniform vec3 voxelVolumeSize; // Declare after all samplers to prevent sampler location mix up with voxel shading (sampler locations are hardcoded in RenderablePolyVoxEntityItem) <$declareFadeFragment()$> diff --git a/libraries/entities-renderer/src/polyvox_fade.slv b/libraries/entities-renderer/src/polyvox_fade.slv index 506b5d16e7..97b98f5840 100644 --- a/libraries/entities-renderer/src/polyvox_fade.slv +++ b/libraries/entities-renderer/src/polyvox_fade.slv @@ -12,15 +12,15 @@ // <@include gpu/Inputs.slh@> - <@include gpu/Transform.slh@> +<@include render-utils/ShaderConstants.h@> <$declareStandardTransform()$> -out vec4 _position; -out vec4 _worldPosition; -out vec4 _worldFadePosition; -out vec3 _normal; +layout(location=RENDER_UTILS_ATTR_POSITION_MS) out vec4 _position; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _worldPosition; +layout(location=RENDER_UTILS_ATTR_NORMAL_MS) out vec3 _normal; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _worldFadePosition; void main(void) { // standard transform diff --git a/libraries/entities-renderer/src/textured_particle.slf b/libraries/entities-renderer/src/textured_particle.slf index e139c7cc01..7a0cedf011 100644 --- a/libraries/entities-renderer/src/textured_particle.slf +++ b/libraries/entities-renderer/src/textured_particle.slf @@ -1,7 +1,8 @@ <@include gpu/Config.slh@> <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> -// fragment shader +// +// textured_particle.frag // // Copyright 2015 High Fidelity, Inc. // @@ -9,12 +10,12 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -uniform sampler2D colorMap; +layout(binding=0) uniform sampler2D colorMap; -in vec4 varColor; -in vec2 varTexcoord; +layout(location=0) in vec4 varColor; +layout(location=1) in vec2 varTexcoord; -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { outFragColor = texture(colorMap, varTexcoord.xy) * varColor; diff --git a/libraries/entities-renderer/src/textured_particle.slv b/libraries/entities-renderer/src/textured_particle.slv index 22254c0ab0..60bca6e9bd 100644 --- a/libraries/entities-renderer/src/textured_particle.slv +++ b/libraries/entities-renderer/src/textured_particle.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// particle vertex shader +// texture_particle.vert // // Copyright 2015 High Fidelity, Inc. // @@ -43,15 +43,15 @@ struct ParticleUniforms { vec2 spare; }; -layout(std140) uniform particleBuffer { +layout(std140, binding=0) uniform particleBuffer { ParticleUniforms particle; }; layout(location=0) in vec3 inPosition; layout(location=2) in vec2 inColor; // This is actual Lifetime + Seed -out vec4 varColor; -out vec2 varTexcoord; +layout(location=0) out vec4 varColor; +layout(location=1) out vec2 varTexcoord; float bezierInterpolate(float y1, float y2, float y3, float u) { // https://en.wikipedia.org/wiki/Bezier_curve diff --git a/libraries/gl/src/gl/GLShaders.cpp b/libraries/gl/src/gl/GLShaders.cpp index 9bfe214fcf..f4a7dc1fa2 100644 --- a/libraries/gl/src/gl/GLShaders.cpp +++ b/libraries/gl/src/gl/GLShaders.cpp @@ -13,32 +13,165 @@ using namespace gl; void Uniform::load(GLuint glprogram, int index) { + this->index = index; const GLint NAME_LENGTH = 256; GLchar glname[NAME_LENGTH]; GLint length = 0; glGetActiveUniform(glprogram, index, NAME_LENGTH, &length, &size, &type, glname); + // Length does NOT include the null terminator + // https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetActiveUniform.xhtml name = std::string(glname, length); - location = glGetUniformLocation(glprogram, glname); + binding = glGetUniformLocation(glprogram, glname); } -Uniforms gl::loadUniforms(GLuint glprogram) { +bool isTextureType(GLenum type) { + switch (type) { +#ifndef USE_GLES + case GL_SAMPLER_1D: + case GL_SAMPLER_1D_ARRAY: + case GL_SAMPLER_1D_SHADOW: + case GL_SAMPLER_1D_ARRAY_SHADOW: +#endif + case GL_SAMPLER_2D: + case GL_SAMPLER_3D: + case GL_SAMPLER_CUBE: + case GL_SAMPLER_2D_ARRAY: + case GL_SAMPLER_CUBE_MAP_ARRAY: + case GL_SAMPLER_2D_SHADOW: + case GL_SAMPLER_2D_ARRAY_SHADOW: + case GL_SAMPLER_BUFFER: + return true; + default: + break; + } + return false; +} + +Uniforms Uniform::load(GLuint glprogram, const std::function& filter) { + Uniforms result; GLint uniformsCount = 0; glGetProgramiv(glprogram, GL_ACTIVE_UNIFORMS, &uniformsCount); - - Uniforms result; - result.resize(uniformsCount); + result.reserve(uniformsCount); for (int i = 0; i < uniformsCount; i++) { - result[i].load(glprogram, i); + result.emplace_back(glprogram, i); + } + result.erase(std::remove_if(result.begin(), result.end(), filter), result.end()); + return result; +} + + +Uniforms Uniform::loadTextures(GLuint glprogram) { + return load(glprogram, [](const Uniform& uniform) -> bool { + if (std::string::npos != uniform.name.find('.')) { + return true; + } + if (std::string::npos != uniform.name.find('[')) { + return true; + } + if (!isTextureType(uniform.type)) { + return true; + } + return false; + }); +} + +Uniforms Uniform::load(GLuint glprogram) { + return load(glprogram, [](const Uniform& uniform) -> bool { + if (std::string::npos != uniform.name.find('.')) { + return true; + } + if (std::string::npos != uniform.name.find('[')) { + return true; + } + if (isTextureType(uniform.type)) { + return true; + } + return false; + }); +} + +Uniforms Uniform::load(GLuint glprogram, const std::vector& indices) { + Uniforms result; + result.reserve(indices.size()); + for (const auto& i : indices) { + if (i == GL_INVALID_INDEX) { + continue; + } + result.emplace_back(glprogram, i); + } + return result; +} + +Uniforms Uniform::load(GLuint glprogram, const std::vector& cnames) { + GLsizei count = static_cast(cnames.size()); + std::vector indices; + indices.resize(count); + glGetUniformIndices(glprogram, count, cnames.data(), indices.data()); + return load(glprogram, indices); +} + +void UniformBlock::load(GLuint glprogram, int index) { + this->index = index; + GLint length = 0; + + // Length DOES include the null terminator + // https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetActiveUniformBlock.xhtml + glGetActiveUniformBlockiv(glprogram, index, GL_UNIFORM_BLOCK_NAME_LENGTH, &length); + if (length > 1) { + std::vector nameBuffer; + nameBuffer.resize(length); + glGetActiveUniformBlockName(glprogram, index, length, nullptr, nameBuffer.data()); + name = std::string(nameBuffer.data(), length - 1); + } + glGetActiveUniformBlockiv(glprogram, index, GL_UNIFORM_BLOCK_BINDING, &binding); + glGetActiveUniformBlockiv(glprogram, index, GL_UNIFORM_BLOCK_DATA_SIZE, &size); +} + +UniformBlocks UniformBlock::load(GLuint glprogram) { + GLint buffersCount = -1; + glGetProgramiv(glprogram, GL_ACTIVE_UNIFORM_BLOCKS, &buffersCount); + + // fast exit + if (buffersCount <= 0) { + return {}; + } + + UniformBlocks uniformBlocks; + for (int i = 0; i < buffersCount; ++i) { + uniformBlocks.emplace_back(glprogram, i); + } + return uniformBlocks; +} + +void Input::load(GLuint glprogram, int index) { + const GLint NAME_LENGTH = 256; + GLchar name[NAME_LENGTH]; + GLint length = 0; + // Length does NOT include the null terminator + // https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetActiveAttrib.xhtml + glGetActiveAttrib(glprogram, index, NAME_LENGTH, &length, &size, &type, name); + if (length > 0) { + this->name = std::string(name, length); + } + binding = glGetAttribLocation(glprogram, name); +} + +Inputs Input::load(GLuint glprogram) { + Inputs result; + GLint count; + glGetProgramiv(glprogram, GL_ACTIVE_ATTRIBUTES, &count); + for (int i = 0; i < count; ++i) { + result.emplace_back(glprogram, i); } return result; } #ifdef SEPARATE_PROGRAM bool gl::compileShader(GLenum shaderDomain, - const std::string& shaderSource, - GLuint& shaderObject, - GLuint& programObject, - std::string& message) { + const std::string& shaderSource, + GLuint& shaderObject, + GLuint& programObject, + std::string& message) { return compileShader(shaderDomain, std::vector{ shaderSource }, shaderObject, programObject, message); } #else @@ -49,15 +182,15 @@ bool gl::compileShader(GLenum shaderDomain, const std::string& shaderSource, GLu #ifdef SEPARATE_PROGRAM bool gl::compileShader(GLenum shaderDomain, - const std::string& shaderSource, - GLuint& shaderObject, - GLuint& programObject, - std::string& message) { + const std::string& shaderSource, + GLuint& shaderObject, + GLuint& programObject, + std::string& message) { #else bool gl::compileShader(GLenum shaderDomain, - const std::vector& shaderSources, - GLuint& shaderObject, - std::string& message) { + const std::vector& shaderSources, + GLuint& shaderObject, + std::string& message) { #endif if (shaderSources.empty()) { qCDebug(glLogging) << "GLShader::compileShader - no GLSL shader source code ? so failed to create"; @@ -101,17 +234,18 @@ bool gl::compileShader(GLenum shaderDomain, std::ofstream filestream; filestream.open("debugshader.glsl"); if (filestream.is_open()) { - filestream << srcstr[0]; - filestream << srcstr[1]; - filestream.close(); + for (const auto& str : cstrs) { + filestream << str; + } + filestream.close(); } */ /* filestream.open("debugshader.glsl.info.txt"); if (filestream.is_open()) { - filestream << std::string(temp); - filestream.close(); + filestream << std::string(temp); + filestream.close(); } */ @@ -193,7 +327,33 @@ bool gl::compileShader(GLenum shaderDomain, return true; } -GLuint gl::compileProgram(const std::vector& glshaders, std::string& message, CachedShader& cachedShader) { +void gl::getProgramInfoLog(GLuint glprogram, std::string& message) { + std::string result; + GLint infoLength = 0; + glGetProgramiv(glprogram, GL_INFO_LOG_LENGTH, &infoLength); + if (infoLength > 0) { + char* temp = new char[infoLength]; + glGetProgramInfoLog(glprogram, infoLength, NULL, temp); + message = std::string(temp); + delete[] temp; + } else { + message.clear(); + } +} + +void gl::getProgramBinary(GLuint glprogram, CachedShader& cachedShader) { + GLint binaryLength = 0; + glGetProgramiv(glprogram, GL_PROGRAM_BINARY_LENGTH, &binaryLength); + if (binaryLength > 0) { + cachedShader.binary.resize(binaryLength); + glGetProgramBinary(glprogram, binaryLength, NULL, &cachedShader.format, cachedShader.binary.data()); + } else { + cachedShader.binary.clear(); + cachedShader.format = 0; + } +} + +GLuint gl::buildProgram(const std::vector& glshaders) { // A brand new program: GLuint glprogram = glCreateProgram(); if (!glprogram) { @@ -201,80 +361,55 @@ GLuint gl::compileProgram(const std::vector& glshaders, std::string& mes return 0; } - bool binaryLoaded = false; - - if (glshaders.empty() && cachedShader) { - glProgramBinary(glprogram, cachedShader.format, cachedShader.binary.data(), (GLsizei)cachedShader.binary.size()); - binaryLoaded = true; - } else { - // glProgramParameteri(glprogram, GL_PROGRAM_, GL_TRUE); - // Create the program from the sub shaders - for (auto so : glshaders) { - glAttachShader(glprogram, so); - } - - // Link! - glLinkProgram(glprogram); - } - - GLint linked = 0; - glGetProgramiv(glprogram, GL_LINK_STATUS, &linked); - - GLint infoLength = 0; - glGetProgramiv(glprogram, GL_INFO_LOG_LENGTH, &infoLength); - - if ((infoLength > 0) || !linked) { - char* temp = new char[infoLength]; - glGetProgramInfoLog(glprogram, infoLength, NULL, temp); - - message = std::string(temp); - - if (!linked) { - /* - // save the source code to a temp file so we can debug easily - std::ofstream filestream; - filestream.open("debugshader.glsl"); - if (filestream.is_open()) { - filestream << shaderSource->source; - filestream.close(); - } - */ - - qCDebug(glLogging) << "GLShader::compileProgram - failed to LINK the gl program object :"; - qCDebug(glLogging) << temp; - - delete[] temp; - - /* - filestream.open("debugshader.glsl.info.txt"); - if (filestream.is_open()) { - filestream << std::string(temp); - filestream.close(); - } - */ - - glDeleteProgram(glprogram); - return 0; - } else { - qCDebug(glLogging) << "GLShader::compileProgram - success:"; - qCDebug(glLogging) << temp; - delete[] temp; - } - } - - // If linked get the binaries - if (linked && !binaryLoaded) { - GLint binaryLength = 0; - glGetProgramiv(glprogram, GL_PROGRAM_BINARY_LENGTH, &binaryLength); - if (binaryLength > 0) { - cachedShader.binary.resize(binaryLength); - glGetProgramBinary(glprogram, binaryLength, NULL, &cachedShader.format, cachedShader.binary.data()); - } + // glProgramParameteri(glprogram, GL_PROGRAM_, GL_TRUE); + // Create the program from the sub shaders + for (auto so : glshaders) { + glAttachShader(glprogram, so); } return glprogram; } + +GLuint gl::buildProgram(const CachedShader& cachedShader) { + // A brand new program: + GLuint glprogram = glCreateProgram(); + if (!glprogram) { + qCDebug(glLogging) << "GLShader::compileProgram - failed to create the gl program object"; + return 0; + } + glProgramBinary(glprogram, cachedShader.format, cachedShader.binary.data(), (GLsizei)cachedShader.binary.size()); + GLint linked = 0; + glGetProgramiv(glprogram, GL_LINK_STATUS, &linked); + if (!linked) { + glDeleteProgram(glprogram); + return 0; + } + + return glprogram; +} + + +bool gl::linkProgram(GLuint glprogram, std::string& message) { + glLinkProgram(glprogram); + + GLint linked = 0; + glGetProgramiv(glprogram, GL_LINK_STATUS, &linked); + ::gl::getProgramInfoLog(glprogram, message); + if (!linked) { + qCDebug(glLogging) << "GLShader::compileProgram - failed to LINK the gl program object :"; + qCDebug(glLogging) << message.c_str(); + return false; + } + + if (!message.empty()) { + qCDebug(glLogging) << "GLShader::compileProgram - success:"; + qCDebug(glLogging) << message.c_str(); + } + + return true; +} + const QString& getShaderCacheFile() { static const QString SHADER_CACHE_FOLDER{ "shaders" }; static const QString SHADER_CACHE_FILE_NAME{ "cache.json" }; @@ -287,6 +422,7 @@ static const char* SHADER_JSON_SOURCE_KEY = "source"; static const char* SHADER_JSON_DATA_KEY = "data"; void gl::loadShaderCache(ShaderCache& cache) { +#if !defined(DISABLE_QML) QString shaderCacheFile = getShaderCacheFile(); if (QFileInfo(shaderCacheFile).exists()) { QString json = FileUtils::readFile(shaderCacheFile); @@ -302,6 +438,7 @@ void gl::loadShaderCache(ShaderCache& cache) { cachedShader.source = programObject[SHADER_JSON_SOURCE_KEY].toString().toStdString(); } } +#endif } void gl::saveShaderCache(const ShaderCache& cache) { diff --git a/libraries/gl/src/gl/GLShaders.h b/libraries/gl/src/gl/GLShaders.h index e6c11b4eb3..7666bba823 100644 --- a/libraries/gl/src/gl/GLShaders.h +++ b/libraries/gl/src/gl/GLShaders.h @@ -12,50 +12,108 @@ #include "Config.h" -#include +#include #include #include +#include +#include namespace gl { - struct Uniform { - std::string name; - GLint size{ -1 }; - GLenum type{ GL_FLOAT }; - GLint location{ -1 }; - void load(GLuint glprogram, int index); - }; +struct ShaderBinding { + int index; + std::string name; + GLint size{ -1 }; + GLint binding{ -1 }; +}; - using Uniforms = std::vector; +struct Uniform : public ShaderBinding { + Uniform(){}; + Uniform(GLint program, int index) { load(program, index); }; + using Vector = std::vector; + GLenum type{ GL_FLOAT }; - Uniforms loadUniforms(GLuint glprogram); + void load(GLuint glprogram, int index); + // Incredibly slow on mac, DO NOT USE + static Vector load(GLuint glprogram, const std::function& filter); + static Vector loadTextures(GLuint glprogram); + static Vector load(GLuint glprogram); + static Vector load(GLuint glprogram, const std::vector& indices); + static Vector load(GLuint glprogram, const std::vector& names); - struct CachedShader { - GLenum format{ 0 }; - std::string source; - std::vector binary; - inline operator bool() const { - return format != 0 && !binary.empty(); + template + static Vector loadByName(GLuint glprogram, const C& names) { + std::vector cnames; + cnames.reserve(names.size()); + for (const auto& name : names) { + cnames.push_back(name.c_str()); } - }; + return load(glprogram, cnames); + } +}; - using ShaderCache = std::unordered_map; +using Uniforms = Uniform::Vector; - std::string getShaderHash(const std::string& shaderSource); - void loadShaderCache(ShaderCache& cache); - void saveShaderCache(const ShaderCache& cache); +struct UniformBlock : public ShaderBinding { + UniformBlock(){}; + UniformBlock(GLint program, int index) { load(program, index); }; + using Vector = std::vector; + void load(GLuint glprogram, int index); + static Vector load(GLuint glprogram); +}; + +using UniformBlocks = UniformBlock::Vector; + +struct Input : public ShaderBinding { + Input(){}; + Input(GLint program, int index) { load(program, index); }; + using Vector = std::vector; + GLenum type{ GL_FLOAT }; + + void load(GLuint glprogram, int index); + static Vector load(GLuint glprogram); +}; + +using Inputs = Input::Vector; + +struct CachedShader { + GLenum format{ 0 }; + std::string source; + std::vector binary; + inline operator bool() const { return format != 0 && !binary.empty(); } +}; + +using ShaderCache = std::unordered_map; + +std::string getShaderHash(const std::string& shaderSource); +void loadShaderCache(ShaderCache& cache); +void saveShaderCache(const ShaderCache& cache); #ifdef SEPARATE_PROGRAM - bool compileShader(GLenum shaderDomain, const std::string& shaderSource, GLuint &shaderObject, GLuint &programObject, std::string& message); - bool compileShader(GLenum shaderDomain, const std::vector& shaderSources, GLuint &shaderObject, GLuint &programObject, std::string& message); +bool compileShader(GLenum shaderDomain, + const std::string& shaderSource, + GLuint& shaderObject, + GLuint& programObject, + std::string& message); +bool compileShader(GLenum shaderDomain, + const std::vector& shaderSources, + GLuint& shaderObject, + GLuint& programObject, + std::string& message); #else - bool compileShader(GLenum shaderDomain, const std::string& shaderSource, GLuint &shaderObject, std::string& message); - bool compileShader(GLenum shaderDomain, const std::vector& shaderSources, GLuint &shaderObject, std::string& message); +bool compileShader(GLenum shaderDomain, const std::string& shaderSource, GLuint& shaderObject, std::string& message); +bool compileShader(GLenum shaderDomain, + const std::vector& shaderSources, + GLuint& shaderObject, + std::string& message); #endif - GLuint compileProgram(const std::vector& glshaders, std::string& message, CachedShader& binary); - -} +GLuint buildProgram(const std::vector& glshaders); +GLuint buildProgram(const CachedShader& binary); +bool linkProgram(GLuint glprogram, std::string& message); +void getProgramInfoLog(GLuint glprogram, std::string& message); +void getProgramBinary(GLuint glprogram, CachedShader& cachedShader); +} // namespace gl #endif diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.cpp b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.cpp index 2321342eb4..2d26b4b347 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.cpp +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.cpp @@ -100,11 +100,35 @@ GLBackend::CommandCall GLBackend::_commandCalls[Batch::NUM_COMMANDS] = (&::gpu::gl::GLBackend::do_popProfileRange), }; +#define GL_GET_INTEGER(NAME) glGetIntegerv(GL_##NAME, &const_cast(NAME)); + +GLint GLBackend::MAX_TEXTURE_IMAGE_UNITS{ 0 }; +GLint GLBackend::MAX_UNIFORM_BUFFER_BINDINGS{ 0 }; +GLint GLBackend::MAX_COMBINED_UNIFORM_BLOCKS{ 0 }; +GLint GLBackend::MAX_COMBINED_TEXTURE_IMAGE_UNITS{ 0 }; +GLint GLBackend::MAX_UNIFORM_BLOCK_SIZE{ 0 }; +GLint GLBackend::UNIFORM_BUFFER_OFFSET_ALIGNMENT{ 1 }; +GLint GLBackend::MAX_UNIFORM_LOCATIONS{ 0 }; + void GLBackend::init() { static std::once_flag once; std::call_once(once, [] { + + QString vendor{ (const char*)glGetString(GL_VENDOR) }; QString renderer{ (const char*)glGetString(GL_RENDERER) }; + + // Textures + GL_GET_INTEGER(MAX_TEXTURE_IMAGE_UNITS); + GL_GET_INTEGER(MAX_COMBINED_TEXTURE_IMAGE_UNITS); + + // Uniform blocks + GL_GET_INTEGER(MAX_UNIFORM_BUFFER_BINDINGS); + GL_GET_INTEGER(MAX_COMBINED_UNIFORM_BLOCKS); + GL_GET_INTEGER(MAX_UNIFORM_BLOCK_SIZE); + GL_GET_INTEGER(UNIFORM_BUFFER_OFFSET_ALIGNMENT); + GL_GET_INTEGER(MAX_UNIFORM_LOCATIONS); + qCDebug(gpugllogging) << "GL Version: " << QString((const char*) glGetString(GL_VERSION)); qCDebug(gpugllogging) << "GL Shader Language Version: " << QString((const char*) glGetString(GL_SHADING_LANGUAGE_VERSION)); qCDebug(gpugllogging) << "GL Vendor: " << vendor; @@ -115,15 +139,26 @@ void GLBackend::init() { qCDebug(gpugllogging) << "\tcard:" << gpu->getName(); qCDebug(gpugllogging) << "\tdriver:" << gpu->getDriver(); qCDebug(gpugllogging) << "\tdedicated memory:" << gpu->getMemory() << "MB"; + qCDebug(gpugllogging) << "Limits:"; + qCDebug(gpugllogging) << "\tmax textures:" << MAX_TEXTURE_IMAGE_UNITS; + qCDebug(gpugllogging) << "\tmax texture binding:" << MAX_COMBINED_TEXTURE_IMAGE_UNITS; + qCDebug(gpugllogging) << "\tmax uniforms:" << MAX_UNIFORM_BUFFER_BINDINGS; + qCDebug(gpugllogging) << "\tmax uniform binding:" << MAX_COMBINED_UNIFORM_BLOCKS; + qCDebug(gpugllogging) << "\tmax uniform size:" << MAX_UNIFORM_BLOCK_SIZE; + qCDebug(gpugllogging) << "\tuniform alignment:" << UNIFORM_BUFFER_OFFSET_ALIGNMENT; #if !defined(USE_GLES) qCDebug(gpugllogging, "V-Sync is %s\n", (::gl::getSwapInterval() > 0 ? "ON" : "OFF")); #endif }); } +GLBackend::GLBackend(bool syncCache) { + _pipeline._cameraCorrectionBuffer._buffer->flush(); + initShaderBinaryCache(); +} + GLBackend::GLBackend() { _pipeline._cameraCorrectionBuffer._buffer->flush(); - glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, &_uboAlignment); initShaderBinaryCache(); } @@ -386,17 +421,11 @@ void GLBackend::do_popProfileRange(const Batch& batch, size_t paramOffset) { } } + // TODO: As long as we have gl calls explicitely issued from interface // code, we need to be able to record and batch these calls. THe long // term strategy is to get rid of any GL calls in favor of the HIFI GPU API -// As long as we don;t use several versions of shaders we can avoid this more complex code path -#ifdef GPU_STEREO_CAMERA_BUFFER -#define GET_UNIFORM_LOCATION(shaderUniformLoc) ((_pipeline._programShader) ? _pipeline._programShader->getUniformLocation(shaderUniformLoc, (GLShader::Version) isStereo()) : -1) -#else -#define GET_UNIFORM_LOCATION(shaderUniformLoc) shaderUniformLoc -#endif - void GLBackend::do_glUniform1i(const Batch& batch, size_t paramOffset) { if (_pipeline._program == 0) { // We should call updatePipeline() to bind the program but we are not doing that @@ -405,8 +434,9 @@ void GLBackend::do_glUniform1i(const Batch& batch, size_t paramOffset) { } updatePipeline(); + GLint location = getRealUniformLocation(batch._params[paramOffset + 1]._int); glUniform1i( - GET_UNIFORM_LOCATION(batch._params[paramOffset + 1]._int), + location, batch._params[paramOffset + 0]._int); (void)CHECK_GL_ERROR(); } @@ -419,8 +449,9 @@ void GLBackend::do_glUniform1f(const Batch& batch, size_t paramOffset) { } updatePipeline(); + GLint location = getRealUniformLocation(batch._params[paramOffset + 1]._int); glUniform1f( - GET_UNIFORM_LOCATION(batch._params[paramOffset + 1]._int), + location, batch._params[paramOffset + 0]._float); (void)CHECK_GL_ERROR(); } @@ -432,8 +463,9 @@ void GLBackend::do_glUniform2f(const Batch& batch, size_t paramOffset) { return; } updatePipeline(); + GLint location = getRealUniformLocation(batch._params[paramOffset + 2]._int); glUniform2f( - GET_UNIFORM_LOCATION(batch._params[paramOffset + 2]._int), + location, batch._params[paramOffset + 1]._float, batch._params[paramOffset + 0]._float); (void)CHECK_GL_ERROR(); @@ -446,8 +478,9 @@ void GLBackend::do_glUniform3f(const Batch& batch, size_t paramOffset) { return; } updatePipeline(); + GLint location = getRealUniformLocation(batch._params[paramOffset + 3]._int); glUniform3f( - GET_UNIFORM_LOCATION(batch._params[paramOffset + 3]._int), + location, batch._params[paramOffset + 2]._float, batch._params[paramOffset + 1]._float, batch._params[paramOffset + 0]._float); @@ -461,8 +494,9 @@ void GLBackend::do_glUniform4f(const Batch& batch, size_t paramOffset) { return; } updatePipeline(); + GLint location = getRealUniformLocation(batch._params[paramOffset + 4]._int); glUniform4f( - GET_UNIFORM_LOCATION(batch._params[paramOffset + 4]._int), + location, batch._params[paramOffset + 3]._float, batch._params[paramOffset + 2]._float, batch._params[paramOffset + 1]._float, @@ -477,8 +511,9 @@ void GLBackend::do_glUniform3fv(const Batch& batch, size_t paramOffset) { return; } updatePipeline(); + GLint location = getRealUniformLocation(batch._params[paramOffset + 2]._int); glUniform3fv( - GET_UNIFORM_LOCATION(batch._params[paramOffset + 2]._int), + location, batch._params[paramOffset + 1]._uint, (const GLfloat*)batch.readData(batch._params[paramOffset + 0]._uint)); @@ -493,7 +528,7 @@ void GLBackend::do_glUniform4fv(const Batch& batch, size_t paramOffset) { } updatePipeline(); - GLint location = GET_UNIFORM_LOCATION(batch._params[paramOffset + 2]._int); + GLint location = getRealUniformLocation(batch._params[paramOffset + 2]._int); GLsizei count = batch._params[paramOffset + 1]._uint; const GLfloat* value = (const GLfloat*)batch.readData(batch._params[paramOffset + 0]._uint); glUniform4fv(location, count, value); @@ -508,8 +543,9 @@ void GLBackend::do_glUniform4iv(const Batch& batch, size_t paramOffset) { return; } updatePipeline(); + GLint location = getRealUniformLocation(batch._params[paramOffset + 2]._int); glUniform4iv( - GET_UNIFORM_LOCATION(batch._params[paramOffset + 2]._int), + location, batch._params[paramOffset + 1]._uint, (const GLint*)batch.readData(batch._params[paramOffset + 0]._uint)); @@ -524,8 +560,9 @@ void GLBackend::do_glUniformMatrix3fv(const Batch& batch, size_t paramOffset) { } updatePipeline(); + GLint location = getRealUniformLocation(batch._params[paramOffset + 3]._int); glUniformMatrix3fv( - GET_UNIFORM_LOCATION(batch._params[paramOffset + 3]._int), + location, batch._params[paramOffset + 2]._uint, batch._params[paramOffset + 1]._uint, (const GLfloat*)batch.readData(batch._params[paramOffset + 0]._uint)); @@ -540,8 +577,9 @@ void GLBackend::do_glUniformMatrix4fv(const Batch& batch, size_t paramOffset) { } updatePipeline(); + GLint location = getRealUniformLocation(batch._params[paramOffset + 3]._int); glUniformMatrix4fv( - GET_UNIFORM_LOCATION(batch._params[paramOffset + 3]._int), + location, batch._params[paramOffset + 2]._uint, batch._params[paramOffset + 1]._uint, (const GLfloat*)batch.readData(batch._params[paramOffset + 0]._uint)); diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h index 6faccb1527..ff3e94fd16 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h @@ -68,7 +68,30 @@ protected: explicit GLBackend(bool syncCache); GLBackend(); public: - static bool makeProgram(Shader& shader, const Shader::BindingSet& slotBindings, const Shader::CompilationHandler& handler); + +#if defined(USE_GLES) + // https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGet.xhtml + static const GLint MIN_REQUIRED_TEXTURE_IMAGE_UNITS = 16; + static const GLint MIN_REQUIRED_COMBINED_UNIFORM_BLOCKS = 60; + static const GLint MIN_REQUIRED_COMBINED_TEXTURE_IMAGE_UNITS = 48; + static const GLint MIN_REQUIRED_UNIFORM_BUFFER_BINDINGS = 72; + static const GLint MIN_REQUIRED_UNIFORM_LOCATIONS = 1024; +#else + // https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGet.xhtml + static const GLint MIN_REQUIRED_TEXTURE_IMAGE_UNITS = 16; + static const GLint MIN_REQUIRED_COMBINED_UNIFORM_BLOCKS = 70; + static const GLint MIN_REQUIRED_COMBINED_TEXTURE_IMAGE_UNITS = 48; + static const GLint MIN_REQUIRED_UNIFORM_BUFFER_BINDINGS = 36; + static const GLint MIN_REQUIRED_UNIFORM_LOCATIONS = 1024; +#endif + + static GLint MAX_TEXTURE_IMAGE_UNITS; + static GLint MAX_UNIFORM_BUFFER_BINDINGS; + static GLint MAX_COMBINED_UNIFORM_BLOCKS; + static GLint MAX_COMBINED_TEXTURE_IMAGE_UNITS; + static GLint MAX_UNIFORM_BLOCK_SIZE; + static GLint MAX_UNIFORM_LOCATIONS; + static GLint UNIFORM_BUFFER_OFFSET_ALIGNMENT; virtual ~GLBackend(); @@ -107,7 +130,6 @@ public: // Texture Tables offers 2 dedicated slot (taken from the ubo slots) static const int MAX_NUM_RESOURCE_TABLE_TEXTURES = 2; - static const int RESOURCE_TABLE_TEXTURE_SLOT_OFFSET = TRANSFORM_CAMERA_SLOT + 1; size_t getMaxNumResourceTextureTables() const { return MAX_NUM_RESOURCE_TABLE_TEXTURES; } @@ -238,6 +260,7 @@ public: bool isTextureManagementSparseEnabled() const override { return (_textureManagement._sparseCapable && Texture::getEnableSparseTextures()); } protected: + virtual GLint getRealUniformLocation(GLint location) const { return location; } void recycle() const override; @@ -247,7 +270,6 @@ protected: static const size_t INVALID_OFFSET = (size_t)-1; bool _inRenderTransferPass { false }; - int32_t _uboAlignment { 0 }; int _currentDraw { -1 }; std::list profileRanges; @@ -394,10 +416,21 @@ protected: virtual void transferTransformState(const Batch& batch) const = 0; struct UniformStageState { - std::array _buffers; + struct BufferState { + BufferPointer buffer; + GLintptr offset{ 0 }; + GLsizeiptr size{ 0 }; + BufferState(const BufferPointer& buffer = nullptr, GLintptr offset = 0, GLsizeiptr size = 0); + bool operator ==(BufferState& other) const { + return offset == other.offset && size == other.size && buffer == other.buffer; + } + }; + std::array _buffers; //Buffers _buffers { }; } _uniform; + // Helper function that provides common code + void bindUniformBuffer(uint32_t slot, const BufferPointer& buffer, GLintptr offset = 0, GLsizeiptr size = 0); void releaseUniformBuffer(uint32_t slot); void resetUniformStage(); @@ -410,6 +443,7 @@ protected: // do_setResourceTextureTable (in non-bindless mode) void bindResourceTexture(uint32_t slot, const TexturePointer& texture); + // update resource cache and do the gl unbind call with the current gpu::Texture cached at slot s void releaseResourceTexture(uint32_t slot); @@ -436,7 +470,7 @@ protected: PipelinePointer _pipeline; GLuint _program { 0 }; - GLint _cameraCorrectionLocation { -1 }; + bool _cameraCorrection { false }; GLShader* _programShader { nullptr }; bool _invalidProgram { false }; @@ -457,6 +491,7 @@ protected: } _pipeline; // Backend dependant compilation of the shader + virtual void postLinkProgram(ShaderObject& programObject, const Shader& program) const {} virtual GLShader* compileBackendProgram(const Shader& program, const Shader::CompilationHandler& handler); virtual GLShader* compileBackendShader(const Shader& shader, const Shader::CompilationHandler& handler); virtual std::string getBackendShaderHeader() const = 0; @@ -467,7 +502,6 @@ protected: // The program string returned can be used as a key for a cache of shader binaries // The shader strings can be reliably sent to the low level `compileShader` functions virtual std::string getShaderSource(const Shader& shader, int version) final; - virtual void makeProgramBindings(ShaderObject& shaderObject); class ElementResource { public: gpu::Element _element; @@ -475,15 +509,6 @@ protected: ElementResource(Element&& elem, uint16 resource) : _element(elem), _resource(resource) {} }; ElementResource getFormatFromGLUniform(GLenum gltype); - static const GLint UNUSED_SLOT {-1}; - static bool isUnusedSlot(GLint binding) { return (binding == UNUSED_SLOT); } - virtual int makeUniformSlots(const ShaderObject& program, const Shader::BindingSet& slotBindings, - Shader::SlotSet& uniforms, Shader::SlotSet& textures, Shader::SlotSet& samplers); - virtual int makeUniformBlockSlots(const ShaderObject& program, const Shader::BindingSet& slotBindings, Shader::SlotSet& buffers); - virtual int makeResourceBufferSlots(const ShaderObject& program, const Shader::BindingSet& slotBindings, Shader::SlotSet& resourceBuffers) = 0; - virtual int makeInputSlots(const ShaderObject& program, const Shader::BindingSet& slotBindings, Shader::SlotSet& inputs); - virtual int makeOutputSlots(const ShaderObject& program, const Shader::BindingSet& slotBindings, Shader::SlotSet& outputs); - // Synchronize the state cache of this Backend with the actual real state of the GL Context void syncOutputStateCache(); diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackendPipeline.cpp b/libraries/gpu-gl-common/src/gpu/gl/GLBackendPipeline.cpp index adea3292e1..d3d2bc0938 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackendPipeline.cpp +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackendPipeline.cpp @@ -10,6 +10,7 @@ // #include "GLBackend.h" #include +#include #include "GLShared.h" #include "GLPipeline.h" @@ -36,7 +37,7 @@ void GLBackend::do_setPipeline(const Batch& batch, size_t paramOffset) { _pipeline._pipeline.reset(); _pipeline._program = 0; - _pipeline._cameraCorrectionLocation = -1; + _pipeline._cameraCorrection = false; _pipeline._programShader = nullptr; _pipeline._invalidProgram = true; @@ -62,7 +63,7 @@ void GLBackend::do_setPipeline(const Batch& batch, size_t paramOffset) { _pipeline._program = glprogram; _pipeline._programShader = pipelineObject->_program; _pipeline._invalidProgram = true; - _pipeline._cameraCorrectionLocation = pipelineObject->_cameraCorrection; + _pipeline._cameraCorrection = pipelineObject->_cameraCorrection; } // Now for the state @@ -78,16 +79,13 @@ void GLBackend::do_setPipeline(const Batch& batch, size_t paramOffset) { // THis should be done on Pipeline::update... if (_pipeline._invalidProgram) { glUseProgram(_pipeline._program); - if (_pipeline._cameraCorrectionLocation != -1) { - gl::GLBuffer* cameraCorrectionBuffer = nullptr; - if (_transform._viewCorrectionEnabled) { - cameraCorrectionBuffer = syncGPUObject(*_pipeline._cameraCorrectionBuffer._buffer); - } else { - cameraCorrectionBuffer = syncGPUObject(*_pipeline._cameraCorrectionBufferIdentity._buffer); - } + if (_pipeline._cameraCorrection) { // Invalidate uniform buffer cache slot - _uniform._buffers[_pipeline._cameraCorrectionLocation].reset(); - glBindBufferRange(GL_UNIFORM_BUFFER, _pipeline._cameraCorrectionLocation, cameraCorrectionBuffer->_id, 0, sizeof(CameraCorrection)); + _uniform._buffers[gpu::slot::buffer::CameraCorrection] = {}; + auto& cameraCorrectionBuffer = _transform._viewCorrectionEnabled ? + _pipeline._cameraCorrectionBuffer._buffer : + _pipeline._cameraCorrectionBufferIdentity._buffer; + bindUniformBuffer(gpu::slot::buffer::CameraCorrection, cameraCorrectionBuffer, 0, sizeof(CameraCorrection)); } (void)CHECK_GL_ERROR(); _pipeline._invalidProgram = false; @@ -138,15 +136,18 @@ void GLBackend::resetPipelineStage() { glUseProgram(0); } +GLBackend::UniformStageState::BufferState::BufferState(const BufferPointer& buffer, GLintptr offset, GLsizeiptr size) + : buffer(buffer), offset(offset), size(size) {} + void GLBackend::releaseUniformBuffer(uint32_t slot) { auto& buf = _uniform._buffers[slot]; - if (buf) { - auto* object = Backend::getGPUObject(*buf); + if (buf.buffer) { + auto* object = Backend::getGPUObject(*buf.buffer); if (object) { glBindBufferBase(GL_UNIFORM_BUFFER, slot, 0); // RELEASE (void)CHECK_GL_ERROR(); } - buf.reset(); + buf = UniformStageState::BufferState(); } } @@ -156,6 +157,33 @@ void GLBackend::resetUniformStage() { } } +void GLBackend::bindUniformBuffer(uint32_t slot, const BufferPointer& buffer, GLintptr offset, GLsizeiptr size) { + if (!buffer) { + releaseUniformBuffer(slot); + return; + } + + UniformStageState::BufferState bufferState{ buffer, offset, size }; + + // check cache before thinking + if (_uniform._buffers[slot] == bufferState) { + return; + } + + // Sync BufferObject + auto* object = syncGPUObject(*bufferState.buffer); + if (object) { + glBindBufferRange(GL_UNIFORM_BUFFER, slot, object->_buffer, bufferState.offset, bufferState.size); + + _uniform._buffers[slot] = bufferState; + (void)CHECK_GL_ERROR(); + } else { + releaseUniformBuffer(slot); + return; + } + +} + void GLBackend::do_setUniformBuffer(const Batch& batch, size_t paramOffset) { GLuint slot = batch._params[paramOffset + 3]._uint; if (slot > (GLuint)MAX_NUM_UNIFORM_BUFFERS) { @@ -163,31 +191,12 @@ void GLBackend::do_setUniformBuffer(const Batch& batch, size_t paramOffset) { << " which doesn't exist. MaxNumUniformBuffers = " << getMaxNumUniformBuffers(); return; } + BufferPointer uniformBuffer = batch._buffers.get(batch._params[paramOffset + 2]._uint); GLintptr rangeStart = batch._params[paramOffset + 1]._uint; GLsizeiptr rangeSize = batch._params[paramOffset + 0]._uint; - if (!uniformBuffer) { - releaseUniformBuffer(slot); - return; - } - - // check cache before thinking - if (_uniform._buffers[slot] == uniformBuffer) { - return; - } - - // Sync BufferObject - auto* object = syncGPUObject(*uniformBuffer); - if (object) { - glBindBufferRange(GL_UNIFORM_BUFFER, slot, object->_buffer, rangeStart, rangeSize); - - _uniform._buffers[slot] = uniformBuffer; - (void)CHECK_GL_ERROR(); - } else { - releaseUniformBuffer(slot); - return; - } + bindUniformBuffer(slot, uniformBuffer, rangeStart, rangeSize); } void GLBackend::releaseResourceTexture(uint32_t slot) { diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackendShader.cpp b/libraries/gpu-gl-common/src/gpu/gl/GLBackendShader.cpp index af6a0df297..7379417574 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackendShader.cpp +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackendShader.cpp @@ -13,7 +13,6 @@ using namespace gpu; using namespace gpu::gl; using CachedShader = ::gl::CachedShader; - // Shader domain static const size_t NUM_SHADER_DOMAINS = 3; static_assert(Shader::Type::NUM_DOMAINS == NUM_SHADER_DOMAINS, "GL shader domains must equal defined GPU shader domains"); @@ -178,24 +177,22 @@ GLShader* GLBackend::compileBackendProgram(const Shader& program, const Shader:: } } - GLuint glprogram = 0; - // If we have a cached binary program, try to load it instead of compiling the individual shaders if (cachedBinary) { - glprogram = ::gl::compileProgram({}, compilationLogs[version].message, cachedBinary); + glprogram = ::gl::buildProgram(cachedBinary); if (0 != glprogram) { ++gpuBinaryShadersLoaded; - } - } - - // If we have no program, then either no cached binary, or the binary failed to load (perhaps a GPU driver update invalidated the cache) - if (0 == glprogram) { - cachedBinary = CachedShader(); - { + } else { + cachedBinary = CachedShader(); std::unique_lock shaderCacheLock{ _shaderBinaryCache._mutex }; _shaderBinaryCache._binaries.erase(hash); } + } + + // If we have no program, then either no cached binary, or the binary failed to load + // (perhaps a GPU driver update invalidated the cache) + if (0 == glprogram) { // Let's go through every shaders and make sure they are ready to go std::vector shaderGLObjects; shaderGLObjects.reserve(program.getShaders().size()); @@ -212,8 +209,16 @@ GLShader* GLBackend::compileBackendProgram(const Shader& program, const Shader:: } } - glprogram = ::gl::compileProgram(shaderGLObjects, compilationLogs[version].message, cachedBinary); - if (cachedBinary) { + glprogram = ::gl::buildProgram(shaderGLObjects); + + if (!::gl::linkProgram(glprogram, compilationLogs[version].message)) { + glDeleteProgram(glprogram); + glprogram = 0; + return nullptr; + } + + if (!cachedBinary) { + ::gl::getProgramBinary(glprogram, cachedBinary); cachedBinary.source = programSource; std::unique_lock shaderCacheLock{ _shaderBinaryCache._mutex }; _shaderBinaryCache._binaries[hash] = cachedBinary; @@ -228,7 +233,7 @@ GLShader* GLBackend::compileBackendProgram(const Shader& program, const Shader:: compilationLogs[version].compiled = true; programObject.glprogram = glprogram; - makeProgramBindings(programObject); + postLinkProgram(programObject, program); } // Compilation feedback program.setCompilationLogs(compilationLogs); @@ -236,7 +241,6 @@ GLShader* GLBackend::compileBackendProgram(const Shader& program, const Shader:: // So far so good, the program versions have all been created successfully GLShader* object = new GLShader(this->shared_from_this()); object->_shaderObjects = programObjects; - return object; } @@ -405,197 +409,8 @@ GLBackend::ElementResource GLBackend::getFormatFromGLUniform(GLenum gltype) { //{GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE uimage2DMS}, //{GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY uimage2DMSArray}, //{GL_UNSIGNED_INT_ATOMIC_COUNTER atomic_uint} - - }; -int GLBackend::makeUniformSlots(const ShaderObject& shaderProgram, const Shader::BindingSet& slotBindings, - Shader::SlotSet& uniforms, Shader::SlotSet& textures, Shader::SlotSet& samplers) { - auto& glprogram = shaderProgram.glprogram; - - for (const auto& uniform : shaderProgram.uniforms) { - const auto& type = uniform.type; - const auto& location = uniform.location; - const auto& size = uniform.size; - const auto& name = uniform.name; - const GLint INVALID_UNIFORM_LOCATION = -1; - - // Try to make sense of the gltype - auto elementResource = getFormatFromGLUniform(type); - - // The uniform as a standard var type - if (location != INVALID_UNIFORM_LOCATION) { - auto sname = uniform.name; - // Let's make sure the name doesn't contains an array element - auto foundBracket = sname.find_first_of('['); - if (foundBracket != std::string::npos) { - // std::string arrayname = sname.substr(0, foundBracket); - - if (sname[foundBracket + 1] == '0') { - sname = sname.substr(0, foundBracket); - } else { - // skip this uniform since it's not the first element of an array - continue; - } - } - - if (elementResource._resource == Resource::BUFFER) { - uniforms.insert(Shader::Slot(sname, location, elementResource._element, elementResource._resource)); - } else { - // For texture/Sampler, the location is the actual binding value - GLint binding = -1; - glGetUniformiv(glprogram, location, &binding); - - auto requestedBinding = slotBindings.find(std::string(sname)); - if (requestedBinding != slotBindings.end()) { - if (binding != (*requestedBinding)._location) { - binding = (*requestedBinding)._location; - for (auto i = 0; i < size; i++) { - // If we are working with an array of textures, reserve for each elemet - glProgramUniform1i(glprogram, location+i, binding+i); - } - } - } - - textures.insert(Shader::Slot(name, binding, elementResource._element, elementResource._resource)); - samplers.insert(Shader::Slot(name, binding, elementResource._element, elementResource._resource)); - } - } - } - - return static_cast(shaderProgram.uniforms.size()); -} - -int GLBackend::makeUniformBlockSlots(const ShaderObject& shaderProgram, const Shader::BindingSet& slotBindings, Shader::SlotSet& buffers) { - const auto& glprogram = shaderProgram.glprogram; - GLint buffersCount = 0; - - glGetProgramiv(glprogram, GL_ACTIVE_UNIFORM_BLOCKS, &buffersCount); - - // fast exit - if (buffersCount == 0) { - return 0; - } - - GLint maxNumUniformBufferSlots = 0; - glGetIntegerv(GL_MAX_UNIFORM_BUFFER_BINDINGS, &maxNumUniformBufferSlots); - std::vector uniformBufferSlotMap(maxNumUniformBufferSlots, -1); - - struct UniformBlockInfo { - using Vector = std::vector; - const GLuint index{ 0 }; - const std::string name; - GLint binding{ -1 }; - GLint size{ 0 }; - - static std::string getName(GLuint glprogram, GLuint i) { - static const GLint NAME_LENGTH = 256; - GLint length = 0; - GLchar nameBuffer[NAME_LENGTH]; - glGetActiveUniformBlockiv(glprogram, i, GL_UNIFORM_BLOCK_NAME_LENGTH, &length); - glGetActiveUniformBlockName(glprogram, i, NAME_LENGTH, &length, nameBuffer); - return std::string(nameBuffer); - } - - UniformBlockInfo(GLuint glprogram, GLuint i) : index(i), name(getName(glprogram, i)) { - glGetActiveUniformBlockiv(glprogram, index, GL_UNIFORM_BLOCK_BINDING, &binding); - glGetActiveUniformBlockiv(glprogram, index, GL_UNIFORM_BLOCK_DATA_SIZE, &size); - } - }; - - UniformBlockInfo::Vector uniformBlocks; - uniformBlocks.reserve(buffersCount); - for (int i = 0; i < buffersCount; i++) { - uniformBlocks.push_back(UniformBlockInfo(glprogram, i)); - } - - for (auto& info : uniformBlocks) { - auto requestedBinding = slotBindings.find(info.name); - if (requestedBinding != slotBindings.end()) { - info.binding = (*requestedBinding)._location; - glUniformBlockBinding(glprogram, info.index, info.binding); - uniformBufferSlotMap[info.binding] = info.index; - } - } - - for (auto& info : uniformBlocks) { - if (slotBindings.count(info.name)) { - continue; - } - - // If the binding is 0, or the binding maps to an already used binding - if (info.binding == 0 || !isUnusedSlot(uniformBufferSlotMap[info.binding])) { - // If no binding was assigned then just do it finding a free slot - auto slotIt = std::find_if(uniformBufferSlotMap.begin(), uniformBufferSlotMap.end(), GLBackend::isUnusedSlot); - if (slotIt != uniformBufferSlotMap.end()) { - info.binding = slotIt - uniformBufferSlotMap.begin(); - glUniformBlockBinding(glprogram, info.index, info.binding); - } else { - // This should neve happen, an active ubo cannot find an available slot among the max available?! - info.binding = -1; - } - } - - uniformBufferSlotMap[info.binding] = info.index; - } - - for (auto& info : uniformBlocks) { - static const Element element(SCALAR, gpu::UINT32, gpu::UNIFORM_BUFFER); - buffers.insert(Shader::Slot(info.name, info.binding, element, Resource::BUFFER, info.size)); - } - return buffersCount; -} - -int GLBackend::makeInputSlots(const ShaderObject& shaderProgram, const Shader::BindingSet& slotBindings, Shader::SlotSet& inputs) { - const auto& glprogram = shaderProgram.glprogram; - GLint inputsCount = 0; - - glGetProgramiv(glprogram, GL_ACTIVE_ATTRIBUTES, &inputsCount); - - for (int i = 0; i < inputsCount; i++) { - const GLint NAME_LENGTH = 256; - GLchar name[NAME_LENGTH]; - GLint length = 0; - GLint size = 0; - GLenum type = 0; - glGetActiveAttrib(glprogram, i, NAME_LENGTH, &length, &size, &type, name); - - GLint binding = glGetAttribLocation(glprogram, name); - - auto elementResource = getFormatFromGLUniform(type); - inputs.insert(Shader::Slot(name, binding, elementResource._element, -1)); - } - - return inputsCount; -} - -int GLBackend::makeOutputSlots(const ShaderObject& shaderProgram, const Shader::BindingSet& slotBindings, Shader::SlotSet& outputs) { - /* GLint outputsCount = 0; - - glGetProgramiv(glprogram, GL_ACTIVE_, &outputsCount); - - for (int i = 0; i < inputsCount; i++) { - const GLint NAME_LENGTH = 256; - GLchar name[NAME_LENGTH]; - GLint length = 0; - GLint size = 0; - GLenum type = 0; - glGetActiveAttrib(glprogram, i, NAME_LENGTH, &length, &size, &type, name); - - auto element = getFormatFromGLUniform(type); - outputs.insert(Shader::Slot(name, i, element)); - } - */ - return 0; //inputsCount; -} - -void GLBackend::makeProgramBindings(ShaderObject& shaderObject) { - if (!shaderObject.glprogram) { - return; - } -} - - void GLBackend::initShaderBinaryCache() { GLint numBinFormats = 0; glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &numBinFormats); diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackendTransform.cpp b/libraries/gpu-gl-common/src/gpu/gl/GLBackendTransform.cpp index ed356acf68..2c2a4e254c 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackendTransform.cpp +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackendTransform.cpp @@ -168,9 +168,8 @@ void GLBackend::TransformStageState::update(size_t commandIndex, const StereoSta void GLBackend::TransformStageState::bindCurrentCamera(int eye) const { if (_currentCameraOffset != INVALID_OFFSET) { - static_assert(TRANSFORM_CAMERA_SLOT >= MAX_NUM_UNIFORM_BUFFERS, "TransformCamera may overlap pipeline uniform buffer slots. Invalidate uniform buffer slot cache for safety (call _uniform._buffers[TRANSFORM_CAMERA_SLOT].reset())."); - glBindBufferRange(GL_UNIFORM_BUFFER, TRANSFORM_CAMERA_SLOT, _cameraBuffer, _currentCameraOffset + eye * _cameraUboSize, - sizeof(CameraBufferElement)); + static_assert(slot::buffer::Buffer::CameraTransform >= MAX_NUM_UNIFORM_BUFFERS, "TransformCamera may overlap pipeline uniform buffer slots. Invalidate uniform buffer slot cache for safety (call _uniform._buffers[TRANSFORM_CAMERA_SLOT].reset())."); + glBindBufferRange(GL_UNIFORM_BUFFER, slot::buffer::Buffer::CameraTransform, _cameraBuffer, _currentCameraOffset + eye * _cameraUboSize, sizeof(CameraBufferElement)); } } diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLPipeline.cpp b/libraries/gpu-gl-common/src/gpu/gl/GLPipeline.cpp index ebf1a55232..1b479dceb8 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLPipeline.cpp +++ b/libraries/gpu-gl-common/src/gpu/gl/GLPipeline.cpp @@ -10,6 +10,7 @@ #include "GLShader.h" #include "GLState.h" +#include "GLBackend.h" using namespace gpu; using namespace gpu::gl; @@ -51,7 +52,7 @@ GLPipeline* GLPipeline::sync(GLBackend& backend, const Pipeline& pipeline) { // Special case for view correction matrices, any pipeline that declares the correction buffer // uniform will automatically have it provided without any client code necessary. // Required for stable lighting in the HMD. - object->_cameraCorrection = shader->getUniformBuffers().findLocation("cameraCorrectionBuffer"); + object->_cameraCorrection = shader->getUniformBuffers().isValid(gpu::slot::buffer::CameraCorrection); object->_program = programObject; object->_state = stateObject; diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLPipeline.h b/libraries/gpu-gl-common/src/gpu/gl/GLPipeline.h index a298f149d9..a102e33b14 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLPipeline.h +++ b/libraries/gpu-gl-common/src/gpu/gl/GLPipeline.h @@ -20,7 +20,7 @@ public: GLState* _state { nullptr }; // Bit of a hack, any pipeline can need the camera correction buffer at execution time, so // we store whether a given pipeline has declared the uniform buffer for it. - int32 _cameraCorrection { -1 }; + bool _cameraCorrection{ false }; }; } } diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLShader.cpp b/libraries/gpu-gl-common/src/gpu/gl/GLShader.cpp index 0a527185ef..44d2bd6ca0 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLShader.cpp +++ b/libraries/gpu-gl-common/src/gpu/gl/GLShader.cpp @@ -56,52 +56,5 @@ GLShader* GLShader::sync(GLBackend& backend, const Shader& shader, const Shader: return object; } -bool GLShader::makeProgram(GLBackend& backend, Shader& shader, const Shader::BindingSet& slotBindings, const Shader::CompilationHandler& handler) { - - // First make sure the Shader has been compiled - GLShader* object = sync(backend, shader, handler); - if (!object) { - return false; - } - - // Apply bindings to all program versions and generate list of slots from default version - for (int version = 0; version < GLShader::NumVersions; version++) { - auto& shaderObject = object->_shaderObjects[version]; - if (shaderObject.glprogram) { - shaderObject.uniforms = ::gl::loadUniforms(shaderObject.glprogram); - Shader::SlotSet buffers; - backend.makeUniformBlockSlots(shaderObject, slotBindings, buffers); - - Shader::SlotSet uniforms; - Shader::SlotSet textures; - Shader::SlotSet samplers; - backend.makeUniformSlots(shaderObject, slotBindings, uniforms, textures, samplers); - - Shader::SlotSet resourceBuffers; - backend.makeResourceBufferSlots(shaderObject, slotBindings, resourceBuffers); - - Shader::SlotSet inputs; - backend.makeInputSlots(shaderObject, slotBindings, inputs); - - Shader::SlotSet outputs; - backend.makeOutputSlots(shaderObject, slotBindings, outputs); - - // Define the public slots only from the default version - if (version == 0) { - shader.defineSlots(uniforms, buffers, resourceBuffers, textures, samplers, inputs, outputs); - } // else - { - GLShader::UniformMapping mapping; - for (auto srcUniform : shader.getUniforms()) { - mapping[srcUniform._location] = uniforms.findLocation(srcUniform._name); - } - object->_uniformMappings.push_back(mapping); - } - } - } - - return true; -} - diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLShader.h b/libraries/gpu-gl-common/src/gpu/gl/GLShader.h index 0ba77e50c6..8e3eafcb0f 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLShader.h +++ b/libraries/gpu-gl-common/src/gpu/gl/GLShader.h @@ -14,18 +14,18 @@ namespace gpu { namespace gl { struct ShaderObject { - using Uniforms = ::gl::Uniforms; GLuint glshader { 0 }; GLuint glprogram { 0 }; - GLint transformCameraSlot { -1 }; - GLint transformObjectSlot { -1 }; - Uniforms uniforms; + +#if defined(Q_OS_MAC) + using LocationMap = std::unordered_map ; + LocationMap uniformRemap; +#endif }; class GLShader : public GPUObject { public: static GLShader* sync(GLBackend& backend, const Shader& shader, const Shader::CompilationHandler& handler = nullptr); - static bool makeProgram(GLBackend& backend, Shader& shader, const Shader::BindingSet& slotBindings, const Shader::CompilationHandler& handler); enum Version { Mono = 0, @@ -44,22 +44,11 @@ public: ~GLShader(); ShaderObjects _shaderObjects; - UniformMappingVersions _uniformMappings; GLuint getProgram(Version version = Mono) const { return _shaderObjects[version].glprogram; } - GLint getUniformLocation(GLint srcLoc, Version version = Mono) const { - // This check protect against potential invalid src location for this shader, if unknown then return -1. - const auto& mapping = _uniformMappings[version]; - auto found = mapping.find(srcLoc); - if (found == mapping.end()) { - return -1; - } - return found->second; - } - const std::weak_ptr _backend; }; diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLTextureTransfer.cpp b/libraries/gpu-gl-common/src/gpu/gl/GLTextureTransfer.cpp index 07cb5fa15f..eaee054b7d 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLTextureTransfer.cpp +++ b/libraries/gpu-gl-common/src/gpu/gl/GLTextureTransfer.cpp @@ -129,9 +129,10 @@ void GLBackend::killTextureManagementStage() { } std::vector GLTextureTransferEngine::getAllTextures() { - std::remove_if(_registeredTextures.begin(), _registeredTextures.end(), [&](const std::weak_ptr& weak) -> bool { - return weak.expired(); + auto expiredBegin = std::remove_if(_registeredTextures.begin(), _registeredTextures.end(), [&](const std::weak_ptr& weak) -> bool { + return weak.expired(); }); + _registeredTextures.erase(expiredBegin, _registeredTextures.end()); std::vector result; result.reserve(_registeredTextures.size()); diff --git a/libraries/gpu-gl/src/gpu/gl/GLDesktopBackend.cpp b/libraries/gpu-gl/src/gpu/gl/GLDesktopBackend.cpp index 72a76f8f90..be8b8cb082 100644 --- a/libraries/gpu-gl/src/gpu/gl/GLDesktopBackend.cpp +++ b/libraries/gpu-gl/src/gpu/gl/GLDesktopBackend.cpp @@ -57,7 +57,3 @@ GLBackend& getBackend() { } return *INSTANCE; } - -bool GLBackend::makeProgram(Shader& shader, const Shader::BindingSet& slotBindings, const Shader::CompilationHandler& handler) { - return GLShader::makeProgram(getBackend(), shader, slotBindings, handler); -} diff --git a/libraries/gpu-gl/src/gpu/gl41/GL41Backend.h b/libraries/gpu-gl/src/gpu/gl41/GL41Backend.h index e840b9fe78..1adb62c2d0 100644 --- a/libraries/gpu-gl/src/gpu/gl41/GL41Backend.h +++ b/libraries/gpu-gl/src/gpu/gl41/GL41Backend.h @@ -35,7 +35,6 @@ class GL41Backend : public GLBackend { friend class Context; public: - static const GLint TRANSFORM_OBJECT_SLOT { 31 }; static const GLint RESOURCE_TRANSFER_TEX_UNIT { 32 }; static const GLint RESOURCE_TRANSFER_EXTRA_TEX_UNIT { 33 }; static const GLint RESOURCE_BUFFER_TEXBUF_TEX_UNIT { 34 }; @@ -172,9 +171,9 @@ protected: void do_blit(const Batch& batch, size_t paramOffset) override; std::string getBackendShaderHeader() const override; - void makeProgramBindings(ShaderObject& shaderObject) override; - int makeResourceBufferSlots(const ShaderObject& shaderProgram, const Shader::BindingSet& slotBindings,Shader::SlotSet& resourceBuffers) override; + void postLinkProgram(ShaderObject& programObject, const Shader& program) const override; + GLint getRealUniformLocation(GLint location) const override; }; } } diff --git a/libraries/gpu-gl/src/gpu/gl41/GL41BackendShader.cpp b/libraries/gpu-gl/src/gpu/gl41/GL41BackendShader.cpp index 0fa1b1bf42..798da06b01 100644 --- a/libraries/gpu-gl/src/gpu/gl41/GL41BackendShader.cpp +++ b/libraries/gpu-gl/src/gpu/gl41/GL41BackendShader.cpp @@ -22,90 +22,98 @@ std::string GL41Backend::getBackendShaderHeader() const { return header; } -int GL41Backend::makeResourceBufferSlots(const ShaderObject& shaderProgram, const Shader::BindingSet& slotBindings,Shader::SlotSet& resourceBuffers) { - GLint ssboCount = 0; - const auto& glprogram = shaderProgram.glprogram; - for (const auto& uniform : shaderProgram.uniforms) { - const auto& name = uniform.name; - const auto& type = uniform.type; - const auto& location = uniform.location; - const GLint INVALID_UNIFORM_LOCATION = -1; +template +std::vector toCNames(const C& container, F lambda) { + std::vector result; + result.reserve(container.size()); + std::transform(container.begin(), container.end(), std::back_inserter(result), lambda); + return result; +} - // Try to make sense of the gltype - auto elementResource = getFormatFromGLUniform(type); - - // The uniform as a standard var type - if (location != INVALID_UNIFORM_LOCATION) { - - if (elementResource._resource == Resource::BUFFER) { - if (elementResource._element.getSemantic() == gpu::RESOURCE_BUFFER) { - // Let's make sure the name doesn't contains an array element - std::string sname(name); - auto foundBracket = sname.find_first_of('['); - if (foundBracket != std::string::npos) { - // std::string arrayname = sname.substr(0, foundBracket); +#if defined(Q_OS_MAC) +ShaderObject::LocationMap buildRemap(GLuint glprogram, const gpu::Shader::SlotSet& slotSet) { + static const GLint INVALID_INDEX = -1; + ShaderObject::LocationMap result; + const auto expectedNames = slotSet.getNames(); + const auto count = expectedNames.size(); + std::vector indices; + indices.resize(count); + glGetUniformIndices(glprogram, (GLsizei)count, + toCNames(expectedNames, [](const std::string& name) { return name.c_str(); }).data(), + (GLuint*)indices.data()); - if (sname[foundBracket + 1] == '0') { - sname = sname.substr(0, foundBracket); - } else { - // skip this uniform since it's not the first element of an array - continue; - } - } + const auto expectedLocationsByName = slotSet.getLocationsByName(); + for (size_t i = 0; i < count; ++i) { + const auto& index = indices[i]; + const auto& name = expectedNames[i]; + const auto& expectedLocation = expectedLocationsByName.at(name); + if (INVALID_INDEX == index) { + result[expectedLocation] = gpu::Shader::INVALID_LOCATION; + continue; + } - // For texture/Sampler, the location is the actual binding value - GLint binding = -1; - glGetUniformiv(glprogram, location, &binding); + ::gl::Uniform uniformInfo(glprogram, index); + if (expectedLocation != uniformInfo.binding) { + result[expectedLocation] = uniformInfo.binding; + } + } + return result; +} +#endif - if (binding == GL41Backend::TRANSFORM_OBJECT_SLOT) { - continue; - } - - auto requestedBinding = slotBindings.find(std::string(sname)); - if (requestedBinding != slotBindings.end()) { - GLint requestedLoc = (*requestedBinding)._location + GL41Backend::RESOURCE_BUFFER_SLOT0_TEX_UNIT; - if (binding != requestedLoc) { - binding = requestedLoc; - } - } else { - binding += GL41Backend::RESOURCE_BUFFER_SLOT0_TEX_UNIT; - } - glProgramUniform1i(glprogram, location, binding); - - ssboCount++; - resourceBuffers.insert(Shader::Slot(name, binding, elementResource._element, elementResource._resource)); - } +void GL41Backend::postLinkProgram(ShaderObject& programObject, const Shader& program) const { + const auto& glprogram = programObject.glprogram; + // For the UBOs, use glUniformBlockBinding to fixup the locations based on the reflection + { + const auto expectedUbos = program.getUniformBuffers().getLocationsByName(); + auto ubos = ::gl::UniformBlock::load(glprogram); + for (const auto& ubo : ubos) { + const auto& name = ubo.name; + if (0 == expectedUbos.count(name)) { + continue; + } + const auto& targetLocation = expectedUbos.at(name); + if (ubo.binding != targetLocation) { + glUniformBlockBinding(glprogram, ubo.index, targetLocation); } } } - return ssboCount; + // For the Textures, us glUniform1i to fixup the active texture slots based on the reflection + { + const auto expectedTextures = program.getTextures().getLocationsByName(); + const auto textureUniforms = ::gl::Uniform::loadByName(glprogram, program.getTextures().getNames()); + for (const auto& texture : textureUniforms) { + const auto& targetBinding = expectedTextures.at(texture.name); + glProgramUniform1i(glprogram, texture.binding, targetBinding); + } + } + + // For the resource buffers + { + const auto expectedTextures = program.getTextures().getLocationsByName(); + const auto textureUniforms = ::gl::Uniform::loadByName(glprogram, program.getTextures().getNames()); + for (const auto& texture : textureUniforms) { + const auto& targetBinding = expectedTextures.at(texture.name); + glProgramUniform1i(glprogram, texture.binding, targetBinding); + } + } + +#if defined(Q_OS_MAC) + // For the uniforms, we need to create a remapping layer + programObject.uniformRemap = buildRemap(glprogram, program.getUniforms()); +#endif } -void GL41Backend::makeProgramBindings(ShaderObject& shaderObject) { - if (!shaderObject.glprogram) { - return; + +GLint GL41Backend::getRealUniformLocation(GLint location) const { + GLint result = location; +#if defined(Q_OS_MAC) + auto& shader = _pipeline._programShader->_shaderObjects[(GLShader::Version)isStereo()]; + auto itr = shader.uniformRemap.find(location); + if (itr != shader.uniformRemap.end()) { + result = itr->second; } - GLuint glprogram = shaderObject.glprogram; - GLint loc = -1; - - GLBackend::makeProgramBindings(shaderObject); - - // now assign the ubo binding, then DON't relink! - - //Check for gpu specific uniform slotBindings - loc = glGetUniformLocation(glprogram, "transformObjectBuffer"); - if (loc >= 0) { - glProgramUniform1i(glprogram, loc, GL41Backend::TRANSFORM_OBJECT_SLOT); - shaderObject.transformObjectSlot = GL41Backend::TRANSFORM_OBJECT_SLOT; - } - - loc = glGetUniformBlockIndex(glprogram, "transformCameraBuffer"); - if (loc >= 0) { - glUniformBlockBinding(glprogram, loc, gpu::TRANSFORM_CAMERA_SLOT); - shaderObject.transformCameraSlot = gpu::TRANSFORM_CAMERA_SLOT; - } - - (void)CHECK_GL_ERROR(); +#endif + return result; } - diff --git a/libraries/gpu-gl/src/gpu/gl41/GL41BackendTransform.cpp b/libraries/gpu-gl/src/gpu/gl41/GL41BackendTransform.cpp index 41a3c5cf25..b11707eba2 100644 --- a/libraries/gpu-gl/src/gpu/gl41/GL41BackendTransform.cpp +++ b/libraries/gpu-gl/src/gpu/gl41/GL41BackendTransform.cpp @@ -20,7 +20,7 @@ void GL41Backend::initTransform() { glGenTextures(1, &_transform._objectBufferTexture); size_t cameraSize = sizeof(TransformStageState::CameraBufferElement); while (_transform._cameraUboSize < cameraSize) { - _transform._cameraUboSize += _uboAlignment; + _transform._cameraUboSize += UNIFORM_BUFFER_OFFSET_ALIGNMENT; } } @@ -58,7 +58,7 @@ void GL41Backend::transferTransformState(const Batch& batch) const { glBindBuffer(GL_ARRAY_BUFFER, 0); } - glActiveTexture(GL_TEXTURE0 + GL41Backend::TRANSFORM_OBJECT_SLOT); + glActiveTexture(GL_TEXTURE0 + slot::texture::ObjectTransforms); glBindTexture(GL_TEXTURE_BUFFER, _transform._objectBufferTexture); if (!batch._objects.empty()) { glTexBuffer(GL_TEXTURE_BUFFER, GL_RGBA32F, _transform._objectBuffer); diff --git a/libraries/gpu-gl/src/gpu/gl45/GL45Backend.cpp b/libraries/gpu-gl/src/gpu/gl45/GL45Backend.cpp index c119e27d5b..8f8e158334 100644 --- a/libraries/gpu-gl/src/gpu/gl45/GL45Backend.cpp +++ b/libraries/gpu-gl/src/gpu/gl45/GL45Backend.cpp @@ -18,8 +18,24 @@ Q_LOGGING_CATEGORY(gpugl45logging, "hifi.gpu.gl45") using namespace gpu; using namespace gpu::gl45; +GLint GL45Backend::MAX_COMBINED_SHADER_STORAGE_BLOCKS{ 0 }; + +static void staticInit() { + static std::once_flag once; + std::call_once(once, [&] { + glGetIntegerv(GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, &GL45Backend::MAX_COMBINED_SHADER_STORAGE_BLOCKS); + }); +} const std::string GL45Backend::GL45_VERSION { "GL45" }; +GL45Backend::GL45Backend(bool syncCache) : Parent(syncCache) { + staticInit(); +} + +GL45Backend::GL45Backend() : Parent() { + staticInit(); +} + void GL45Backend::recycle() const { Parent::recycle(); } diff --git a/libraries/gpu-gl/src/gpu/gl45/GL45Backend.h b/libraries/gpu-gl/src/gpu/gl45/GL45Backend.h index cb7ddce930..8694e15d97 100644 --- a/libraries/gpu-gl/src/gpu/gl45/GL45Backend.h +++ b/libraries/gpu-gl/src/gpu/gl45/GL45Backend.h @@ -33,18 +33,13 @@ class GL45Backend : public GLBackend { friend class Context; public: + static GLint MAX_COMBINED_SHADER_STORAGE_BLOCKS; #if GPU_BINDLESS_TEXTURES virtual bool supportsBindless() const override { return true; } #endif -#ifdef GPU_SSBO_TRANSFORM_OBJECT - static const GLint TRANSFORM_OBJECT_SLOT { 14 }; // SSBO binding slot -#else - static const GLint TRANSFORM_OBJECT_SLOT { 31 }; // TBO binding slot -#endif - - explicit GL45Backend(bool syncCache) : Parent(syncCache) {} - GL45Backend() : Parent() {} + explicit GL45Backend(bool syncCache); + GL45Backend(); virtual ~GL45Backend() { // call resetStages here rather than in ~GLBackend dtor because it will call releaseResourceBuffer // which is pure virtual from GLBackend's dtor. @@ -273,8 +268,6 @@ protected: // Shader Stage std::string getBackendShaderHeader() const override; - void makeProgramBindings(ShaderObject& shaderObject) override; - int makeResourceBufferSlots(const ShaderObject& shaderProgram, const Shader::BindingSet& slotBindings,Shader::SlotSet& resourceBuffers) override; // Texture Management Stage void initTextureManagementStage() override; diff --git a/libraries/gpu-gl/src/gpu/gl45/GL45BackendShader.cpp b/libraries/gpu-gl/src/gpu/gl45/GL45BackendShader.cpp index f1f388d501..6cc0d226d6 100644 --- a/libraries/gpu-gl/src/gpu/gl45/GL45BackendShader.cpp +++ b/libraries/gpu-gl/src/gpu/gl45/GL45BackendShader.cpp @@ -26,152 +26,3 @@ std::string GL45Backend::getBackendShaderHeader() const { ); return header; } - -int GL45Backend::makeResourceBufferSlots(const ShaderObject& shaderProgram, const Shader::BindingSet& slotBindings,Shader::SlotSet& resourceBuffers) { - const auto& glprogram = shaderProgram.glprogram; - GLint buffersCount = 0; - glGetProgramInterfaceiv(glprogram, GL_SHADER_STORAGE_BLOCK, GL_ACTIVE_RESOURCES, &buffersCount); - - // fast exit - if (buffersCount == 0) { - return 0; - } - - GLint maxNumResourceBufferSlots = 0; - glGetIntegerv(GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, &maxNumResourceBufferSlots); - std::vector resourceBufferSlotMap(maxNumResourceBufferSlots, -1); - - struct ResourceBlockInfo { - using Vector = std::vector; - const GLuint index{ 0 }; - const std::string name; - GLint binding{ -1 }; - GLint size{ 0 }; - - static std::string getName(GLuint glprogram, GLuint i) { - static const GLint NAME_LENGTH = 256; - GLint length = 0; - GLchar nameBuffer[NAME_LENGTH]; - glGetProgramResourceName(glprogram, GL_SHADER_STORAGE_BLOCK, i, NAME_LENGTH, &length, nameBuffer); - return std::string(nameBuffer); - } - - ResourceBlockInfo(GLuint glprogram, GLuint i) : index(i), name(getName(glprogram, i)) { - GLenum props[2] = { GL_BUFFER_BINDING, GL_BUFFER_DATA_SIZE}; - glGetProgramResourceiv(glprogram, GL_SHADER_STORAGE_BLOCK, i, 2, props, 2, nullptr, &binding); - } - }; - - ResourceBlockInfo::Vector resourceBlocks; - resourceBlocks.reserve(buffersCount); - for (int i = 0; i < buffersCount; i++) { - resourceBlocks.push_back(ResourceBlockInfo(glprogram, i)); - } - - for (auto& info : resourceBlocks) { - auto requestedBinding = slotBindings.find(info.name); - if (requestedBinding != slotBindings.end()) { - info.binding = (*requestedBinding)._location; - glShaderStorageBlockBinding(glprogram, info.index, info.binding); - resourceBufferSlotMap[info.binding] = info.index; - } - } - - for (auto& info : resourceBlocks) { - if (slotBindings.count(info.name)) { - continue; - } - - // If the binding is -1, or the binding maps to an already used binding - if (info.binding == -1 || !isUnusedSlot(resourceBufferSlotMap[info.binding])) { - // If no binding was assigned then just do it finding a free slot - auto slotIt = std::find_if(resourceBufferSlotMap.begin(), resourceBufferSlotMap.end(), GLBackend::isUnusedSlot); - if (slotIt != resourceBufferSlotMap.end()) { - info.binding = slotIt - resourceBufferSlotMap.begin(); - glShaderStorageBlockBinding(glprogram, info.index, info.binding); - } else { - // This should never happen, an active ssbo cannot find an available slot among the max available?! - info.binding = -1; - } - } - - resourceBufferSlotMap[info.binding] = info.index; - } - - for (auto& info : resourceBlocks) { - static const Element element(SCALAR, gpu::UINT32, gpu::RESOURCE_BUFFER); - resourceBuffers.insert(Shader::Slot(info.name, info.binding, element, Resource::BUFFER, info.size)); - } - return buffersCount; -/* - GLint ssboCount = 0; - glGetProgramInterfaceiv(glprogram, GL_SHADER_STORAGE_BLOCK, GL_ACTIVE_RESOURCES, &ssboCount); - if (ssboCount > 0) { - GLint maxNameLength = 0; - glGetProgramInterfaceiv(glprogram, GL_SHADER_STORAGE_BLOCK, GL_MAX_NAME_LENGTH, &maxNameLength); - std::vector nameBytes(maxNameLength); - - for (GLint b = 0; b < ssboCount; b++) { - GLint length; - glGetProgramResourceName(glprogram, GL_SHADER_STORAGE_BLOCK, b, maxNameLength, &length, nameBytes.data()); - std::string bufferName(nameBytes.data()); - - GLenum props = GL_BUFFER_BINDING; - GLint binding = -1; - glGetProgramResourceiv(glprogram, GL_SHADER_STORAGE_BLOCK, b, 1, &props, 1, nullptr, &binding); - - auto requestedBinding = slotBindings.find(std::string(bufferName)); - if (requestedBinding != slotBindings.end()) { - if (binding != (*requestedBinding)._location) { - binding = (*requestedBinding)._location; - glShaderStorageBlockBinding(glprogram, b, binding); - } - } - - static const Element element(SCALAR, gpu::UINT32, gpu::RESOURCE_BUFFER); - resourceBuffers.insert(Shader::Slot(bufferName, binding, element, -1)); - } - } - return ssboCount;*/ -} - -void GL45Backend::makeProgramBindings(ShaderObject& shaderObject) { - if (!shaderObject.glprogram) { - return; - } - GLuint glprogram = shaderObject.glprogram; - GLint loc = -1; - - GLBackend::makeProgramBindings(shaderObject); - - // now assign the ubo binding, then DON't relink! - - //Check for gpu specific uniform slotBindings -#ifdef GPU_SSBO_TRANSFORM_OBJECT - loc = glGetProgramResourceIndex(glprogram, GL_SHADER_STORAGE_BLOCK, "transformObjectBuffer"); - if (loc >= 0) { - glShaderStorageBlockBinding(glprogram, loc, GL45Backend::TRANSFORM_OBJECT_SLOT); - shaderObject.transformObjectSlot = GL45Backend::TRANSFORM_OBJECT_SLOT; - } -#else - loc = glGetUniformLocation(glprogram, "transformObjectBuffer"); - if (loc >= 0) { - glProgramUniform1i(glprogram, loc, GL45Backend::TRANSFORM_OBJECT_SLOT); - shaderObject.transformObjectSlot = GL45Backend::TRANSFORM_OBJECT_SLOT; - } -#endif - - loc = glGetUniformBlockIndex(glprogram, "transformCameraBuffer"); - if (loc >= 0) { - glUniformBlockBinding(glprogram, loc, gpu::TRANSFORM_CAMERA_SLOT); - shaderObject.transformCameraSlot = gpu::TRANSFORM_CAMERA_SLOT; - } - - loc = glGetUniformBlockIndex(glprogram, "gpu_resourceTextureTable0"); - if (loc >= 0) { - glUniformBlockBinding(glprogram, loc, RESOURCE_TABLE_TEXTURE_SLOT_OFFSET); - } - - (void)CHECK_GL_ERROR(); -} - diff --git a/libraries/gpu-gl/src/gpu/gl45/GL45BackendTransform.cpp b/libraries/gpu-gl/src/gpu/gl45/GL45BackendTransform.cpp index ae323612c4..f389c5f62c 100644 --- a/libraries/gpu-gl/src/gpu/gl45/GL45BackendTransform.cpp +++ b/libraries/gpu-gl/src/gpu/gl45/GL45BackendTransform.cpp @@ -25,7 +25,7 @@ void GL45Backend::initTransform() { #endif size_t cameraSize = sizeof(TransformStageState::CameraBufferElement); while (_transform._cameraUboSize < cameraSize) { - _transform._cameraUboSize += _uboAlignment; + _transform._cameraUboSize += UNIFORM_BUFFER_OFFSET_ALIGNMENT; } } @@ -57,9 +57,9 @@ void GL45Backend::transferTransformState(const Batch& batch) const { } #ifdef GPU_SSBO_TRANSFORM_OBJECT - glBindBufferBase(GL_SHADER_STORAGE_BUFFER, GL45Backend::TRANSFORM_OBJECT_SLOT, _transform._objectBuffer); + glBindBufferBase(GL_SHADER_STORAGE_BUFFER, slot::storage::ObjectTransforms, _transform._objectBuffer); #else - glActiveTexture(GL_TEXTURE0 + GL45Backend::TRANSFORM_OBJECT_SLOT); + glActiveTexture(GL_TEXTURE0 + slot::texture::ObjectTransforms); glBindTexture(GL_TEXTURE_BUFFER, _transform._objectBufferTexture); glTextureBuffer(_transform._objectBufferTexture, GL_RGBA32F, _transform._objectBuffer); #endif diff --git a/libraries/gpu-gles/src/gpu/gl/GLESBackend.cpp b/libraries/gpu-gles/src/gpu/gl/GLESBackend.cpp index 2e2c988e77..df963ee40c 100644 --- a/libraries/gpu-gles/src/gpu/gl/GLESBackend.cpp +++ b/libraries/gpu-gles/src/gpu/gl/GLESBackend.cpp @@ -50,7 +50,3 @@ GLBackend& getBackend() { } return *INSTANCE; } - -bool GLBackend::makeProgram(Shader& shader, const Shader::BindingSet& slotBindings, const Shader::CompilationHandler& handler) { - return GLShader::makeProgram(getBackend(), shader, slotBindings, handler); -} diff --git a/libraries/gpu-gles/src/gpu/gles/GLESBackend.h b/libraries/gpu-gles/src/gpu/gles/GLESBackend.h index 9656d29ac5..785f4c3ef9 100644 --- a/libraries/gpu-gles/src/gpu/gles/GLESBackend.h +++ b/libraries/gpu-gles/src/gpu/gles/GLESBackend.h @@ -163,9 +163,6 @@ protected: void do_blit(const Batch& batch, size_t paramOffset) override; std::string getBackendShaderHeader() const override; - void makeProgramBindings(ShaderObject& shaderObject) override; - int makeResourceBufferSlots(const ShaderObject& shaderObject, const Shader::BindingSet& slotBindings,Shader::SlotSet& resourceBuffers) override; - }; } } @@ -173,4 +170,4 @@ protected: Q_DECLARE_LOGGING_CATEGORY(gpugleslogging) -#endif \ No newline at end of file +#endif diff --git a/libraries/gpu-gles/src/gpu/gles/GLESBackendShader.cpp b/libraries/gpu-gles/src/gpu/gles/GLESBackendShader.cpp index 34caa97696..ee8408c533 100644 --- a/libraries/gpu-gles/src/gpu/gles/GLESBackendShader.cpp +++ b/libraries/gpu-gles/src/gpu/gles/GLESBackendShader.cpp @@ -24,93 +24,3 @@ std::string GLESBackend::getBackendShaderHeader() const { )SHADER"); return header; } - -int GLESBackend::makeResourceBufferSlots(const ShaderObject& shaderObject, const Shader::BindingSet& slotBindings,Shader::SlotSet& resourceBuffers) { - GLint ssboCount = 0; - GLint uniformsCount = 0; - const auto& glprogram = shaderObject.glprogram; - - for (const auto& uniform : shaderObject.uniforms) { - const auto& type = uniform.type; - const auto& location = uniform.location; - const auto& name = uniform.name; - const GLint INVALID_UNIFORM_LOCATION = -1; - - // Try to make sense of the gltype - auto elementResource = getFormatFromGLUniform(type); - - // The uniform as a standard var type - if (location != INVALID_UNIFORM_LOCATION) { - - if (elementResource._resource == Resource::BUFFER) { - if (elementResource._element.getSemantic() == gpu::RESOURCE_BUFFER) { - // Let's make sure the name doesn't contains an array element - std::string sname(name); - auto foundBracket = sname.find_first_of('['); - if (foundBracket != std::string::npos) { - // std::string arrayname = sname.substr(0, foundBracket); - - if (sname[foundBracket + 1] == '0') { - sname = sname.substr(0, foundBracket); - } else { - // skip this uniform since it's not the first element of an array - continue; - } - } - - // For texture/Sampler, the location is the actual binding value - GLint binding = -1; - glGetUniformiv(glprogram, location, &binding); - - if (binding == GLESBackend::TRANSFORM_OBJECT_SLOT) { - continue; - } - - auto requestedBinding = slotBindings.find(std::string(sname)); - if (requestedBinding != slotBindings.end()) { - GLint requestedLoc = (*requestedBinding)._location + GLESBackend::RESOURCE_BUFFER_SLOT0_TEX_UNIT; - if (binding != requestedLoc) { - binding = requestedLoc; - } - } else { - binding += GLESBackend::RESOURCE_BUFFER_SLOT0_TEX_UNIT; - } - glProgramUniform1i(glprogram, location, binding); - - ssboCount++; - resourceBuffers.insert(Shader::Slot(name, binding, elementResource._element, elementResource._resource)); - } - } - } - } - - return ssboCount; -} - -void GLESBackend::makeProgramBindings(ShaderObject& shaderObject) { - if (!shaderObject.glprogram) { - return; - } - GLuint glprogram = shaderObject.glprogram; - GLint loc = -1; - - GLBackend::makeProgramBindings(shaderObject); - - // now assign the ubo binding, then DON't relink! - - //Check for gpu specific uniform slotBindings - loc = glGetUniformLocation(glprogram, "transformObjectBuffer"); - if (loc >= 0) { - glProgramUniform1i(glprogram, loc, GLESBackend::TRANSFORM_OBJECT_SLOT); - shaderObject.transformObjectSlot = GLESBackend::TRANSFORM_OBJECT_SLOT; - } - - loc = glGetUniformBlockIndex(glprogram, "transformCameraBuffer"); - if (loc >= 0) { - glUniformBlockBinding(glprogram, loc, gpu::TRANSFORM_CAMERA_SLOT); - shaderObject.transformCameraSlot = gpu::TRANSFORM_CAMERA_SLOT; - } - - (void)CHECK_GL_ERROR(); -} - diff --git a/libraries/gpu-gles/src/gpu/gles/GLESBackendTransform.cpp b/libraries/gpu-gles/src/gpu/gles/GLESBackendTransform.cpp index 7d33ca822d..661eb0de99 100644 --- a/libraries/gpu-gles/src/gpu/gles/GLESBackendTransform.cpp +++ b/libraries/gpu-gles/src/gpu/gles/GLESBackendTransform.cpp @@ -19,8 +19,10 @@ void GLESBackend::initTransform() { glGenBuffers(1, &_transform._drawCallInfoBuffer); glGenTextures(1, &_transform._objectBufferTexture); size_t cameraSize = sizeof(TransformStageState::CameraBufferElement); - while (_transform._cameraUboSize < cameraSize) { - _transform._cameraUboSize += _uboAlignment; + if (UNIFORM_BUFFER_OFFSET_ALIGNMENT > 0) { + while (_transform._cameraUboSize < cameraSize) { + _transform._cameraUboSize += UNIFORM_BUFFER_OFFSET_ALIGNMENT; + } } } diff --git a/libraries/gpu/src/gpu/Batch.h b/libraries/gpu/src/gpu/Batch.h index 836d7ca5ff..bcbfe0616d 100644 --- a/libraries/gpu/src/gpu/Batch.h +++ b/libraries/gpu/src/gpu/Batch.h @@ -24,15 +24,12 @@ #include "Stream.h" #include "Texture.h" #include "Transform.h" +#include "ShaderConstants.h" class QDebug; #define BATCH_PREALLOCATE_MIN 128 namespace gpu { -enum ReservedSlot { - TRANSFORM_CAMERA_SLOT = 15, -}; - // The named batch data provides a mechanism for accumulating data into buffers over the course // of many independent calls. For instance, two objects in the scene might both want to render // a simple box, but are otherwise unaware of each other. The common code that they call to render @@ -170,10 +167,10 @@ public: void resetViewTransform() { setViewTransform(Transform(), false); } void setViewTransform(const Transform& view, bool camera = true); void setProjectionTransform(const Mat4& proj); - void setProjectionJitter(float jx = 0.0f, float jy = 0.0f); - // Very simple 1 level stack management of jitter. - void pushProjectionJitter(float jx = 0.0f, float jy = 0.0f); - void popProjectionJitter(); + void setProjectionJitter(float jx = 0.0f, float jy = 0.0f); + // Very simple 1 level stack management of jitter. + void pushProjectionJitter(float jx = 0.0f, float jy = 0.0f); + void popProjectionJitter(); // Viewport is xy = low left corner in framebuffer, zw = width height of the viewport, expressed in pixels void setViewportTransform(const Vec4i& viewport); void setDepthRangeTransform(float nearDepth, float farDepth); @@ -299,9 +296,9 @@ public: COMMAND_setModelTransform, COMMAND_setViewTransform, - COMMAND_setProjectionTransform, - COMMAND_setProjectionJitter, - COMMAND_setViewportTransform, + COMMAND_setProjectionTransform, + COMMAND_setProjectionJitter, + COMMAND_setViewportTransform, COMMAND_setDepthRangeTransform, COMMAND_setPipeline, @@ -504,7 +501,7 @@ public: NamedBatchDataMap _namedData; - glm::vec2 _projectionJitter{ 0.0f, 0.0f }; + glm::vec2 _projectionJitter{ 0.0f, 0.0f }; bool _enableStereo{ true }; bool _enableSkybox { false }; diff --git a/libraries/gpu/src/gpu/Context.cpp b/libraries/gpu/src/gpu/Context.cpp index bb6b27626a..5783b7f59e 100644 --- a/libraries/gpu/src/gpu/Context.cpp +++ b/libraries/gpu/src/gpu/Context.cpp @@ -34,7 +34,6 @@ void ContextStats::evalDelta(const ContextStats& begin, const ContextStats& end) Context::CreateBackend Context::_createBackendCallback = nullptr; -Context::MakeProgram Context::_makeProgramCallback = nullptr; std::once_flag Context::_initialized; Context::Context() { @@ -139,20 +138,6 @@ void Context::executeFrame(const FramePointer& frame) const { _frameStats.evalDelta(beginStats, endStats); } -bool Context::makeProgram(Shader& shader, const Shader::BindingSet& bindings, const Shader::CompilationHandler& handler) { - PROFILE_RANGE_EX(app, "makeProgram", 0xff4040c0, shader.getID()); - // If we're running in another DLL context, we need to fetch the program callback out of the application - // FIXME find a way to do this without reliance on Qt app properties - if (!_makeProgramCallback) { - void* rawCallback = qApp->property(hifi::properties::gl::MAKE_PROGRAM_CALLBACK).value(); - _makeProgramCallback = reinterpret_cast(rawCallback); - } - if (shader.isProgram() && _makeProgramCallback) { - return _makeProgramCallback(shader, bindings, handler); - } - return false; -} - void Context::enableStereo(bool enable) { _stereo._enable = enable; } diff --git a/libraries/gpu/src/gpu/Context.h b/libraries/gpu/src/gpu/Context.h index 4560ea5526..011f980957 100644 --- a/libraries/gpu/src/gpu/Context.h +++ b/libraries/gpu/src/gpu/Context.h @@ -115,7 +115,7 @@ public: static ContextMetricSize textureResourceIdealGPUMemSize; protected: - virtual bool isStereo() { + virtual bool isStereo() const { return _stereo.isStereo(); } @@ -140,14 +140,12 @@ class Context { public: using Size = Resource::Size; typedef BackendPointer (*CreateBackend)(); - typedef bool (*MakeProgram)(Shader& shader, const Shader::BindingSet& bindings, const Shader::CompilationHandler& handler); // This one call must happen before any context is created or used (Shader::MakeProgram) in order to setup the Backend and any singleton data needed template static void init() { std::call_once(_initialized, [] { _createBackendCallback = T::createBackend; - _makeProgramCallback = T::makeProgram; T::init(); }); } @@ -261,14 +259,7 @@ protected: // Sampled at the end of every frame, the stats of all the counters mutable ContextStats _frameStats; - // This function can only be called by "static Shader::makeProgram()" - // makeProgramShader(...) make a program shader ready to be used in a Batch. - // It compiles the sub shaders, link them and defines the Slots and their bindings. - // If the shader passed is not a program, nothing happens. - static bool makeProgram(Shader& shader, const Shader::BindingSet& bindings, const Shader::CompilationHandler& handler); - static CreateBackend _createBackendCallback; - static MakeProgram _makeProgramCallback; static std::once_flag _initialized; friend class Shader; diff --git a/libraries/gpu/src/gpu/DrawColor.slf b/libraries/gpu/src/gpu/DrawColor.slf index c24d69d29f..2540d56d69 100644 --- a/libraries/gpu/src/gpu/DrawColor.slf +++ b/libraries/gpu/src/gpu/DrawColor.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// DrawColor.frag +// // Draw with color uniform // // Created by Olivier Prat on 25/10/2017 @@ -10,9 +12,12 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -uniform vec4 color; -out vec4 outFragColor; +<@include gpu/ShaderConstants.h@> + +layout(location=GPU_UNIFORM_COLOR) uniform vec4 color; + +layout(location=0) out vec4 outFragColor; void main(void) { outFragColor = color; diff --git a/libraries/gpu/src/gpu/DrawColoredTexture.slf b/libraries/gpu/src/gpu/DrawColoredTexture.slf index 2a7f6aae36..632bf18391 100755 --- a/libraries/gpu/src/gpu/DrawColoredTexture.slf +++ b/libraries/gpu/src/gpu/DrawColoredTexture.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// DrawColoredTexture.frag +// // Draw texture 0 fetched at texcoord.xy, Blend with color uniform // // Created by Sam Gateau on 7/12/2015 @@ -11,12 +13,13 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include gpu/ShaderConstants.h@> -uniform sampler2D colorMap; -uniform vec4 color; +layout(binding=0) uniform sampler2D colorMap; +layout(location=GPU_UNIFORM_COLOR) uniform vec4 color; -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; void main(void) { outFragColor = texture(colorMap, varTexCoord0) * color; diff --git a/libraries/gpu/src/gpu/DrawTexcoordRectTransformUnitQuad.slv b/libraries/gpu/src/gpu/DrawTexcoordRectTransformUnitQuad.slv index 1f788051bc..d401fc40c2 100755 --- a/libraries/gpu/src/gpu/DrawTexcoordRectTransformUnitQuad.slv +++ b/libraries/gpu/src/gpu/DrawTexcoordRectTransformUnitQuad.slv @@ -1,6 +1,9 @@ <@include gpu/Config.slh@> <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> +// +// DrawTexcoordRectTransformUnitQuad.vert + // // Draw and transform the unit quad [-1,-1 -> 1,1] // Transform the normalized texcoords [0, 1] to be in the range [texcoordRect.xy, texcoordRect.xy + texcoordRect.zw] @@ -14,12 +17,13 @@ // <@include gpu/Transform.slh@> +<@include gpu/ShaderConstants.h@> <$declareStandardTransform()$> -uniform vec4 texcoordRect; +layout(location=GPU_UNIFORM_TEXCOORD_RECT) uniform vec4 texcoordRect; -out vec2 varTexCoord0; +layout(location=0) out vec2 varTexCoord0; void main(void) { const vec4 UNIT_QUAD[4] = vec4[4]( diff --git a/libraries/gpu/src/gpu/DrawTexture.slf b/libraries/gpu/src/gpu/DrawTexture.slf index 64389f02b3..4298729b8b 100755 --- a/libraries/gpu/src/gpu/DrawTexture.slf +++ b/libraries/gpu/src/gpu/DrawTexture.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// DrawTexture.frag +// // Draw texture 0 fetched at texcoord.xy // // Created by Sam Gateau on 6/22/2015 @@ -12,10 +14,10 @@ // -uniform sampler2D colorMap; +layout(binding=0) uniform sampler2D colorMap; -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; void main(void) { outFragColor = texture(colorMap, varTexCoord0); diff --git a/libraries/gpu/src/gpu/DrawTextureMirroredX.slf b/libraries/gpu/src/gpu/DrawTextureMirroredX.slf index aef4033496..ab6333f08d 100644 --- a/libraries/gpu/src/gpu/DrawTextureMirroredX.slf +++ b/libraries/gpu/src/gpu/DrawTextureMirroredX.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// DrawTextureMirroredX.frag +// // Draw texture 0 fetched at (1.0 - texcoord.x, texcoord.y) // // Created by Sam Gondelman on 10/24/2017 @@ -12,10 +14,10 @@ // -uniform sampler2D colorMap; +layout(binding=0) uniform sampler2D colorMap; -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; void main(void) { outFragColor = texture(colorMap, vec2(1.0 - varTexCoord0.x, varTexCoord0.y)); diff --git a/libraries/gpu/src/gpu/DrawTextureOpaque.slf b/libraries/gpu/src/gpu/DrawTextureOpaque.slf index 14d2072ff3..d98daa1c9a 100755 --- a/libraries/gpu/src/gpu/DrawTextureOpaque.slf +++ b/libraries/gpu/src/gpu/DrawTextureOpaque.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// DrawTextureOpaque.frag +// // Draw texture 0 fetched at texcoord.xy // Alpha is 1 // @@ -12,11 +14,13 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include gpu/ShaderConstants.h@> -uniform sampler2D colorMap; +layout(binding=0) uniform sampler2D colorMap; -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=GPU_ATTR_TEXCOORD0) in vec2 varTexCoord0; + +layout(location=0) out vec4 outFragColor; void main(void) { outFragColor = vec4(texture(colorMap, varTexCoord0).xyz, 1.0); diff --git a/libraries/gpu/src/gpu/DrawTransformUnitQuad.slv b/libraries/gpu/src/gpu/DrawTransformUnitQuad.slv index 845cf0326d..eed3c92245 100755 --- a/libraries/gpu/src/gpu/DrawTransformUnitQuad.slv +++ b/libraries/gpu/src/gpu/DrawTransformUnitQuad.slv @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// DrawTransformUnitQuad.vert +// // Draw and transform the unit quad [-1,-1 -> 1,1] // Simply draw a Triangle_strip of 2 triangles, no input buffers or index buffer needed // @@ -16,7 +18,7 @@ <$declareStandardTransform()$> -out vec2 varTexCoord0; +layout(location=0) out vec2 varTexCoord0; void main(void) { const vec4 UNIT_QUAD[4] = vec4[4]( diff --git a/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv b/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv index cf66a615f5..39771403d1 100644 --- a/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv +++ b/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// DrawTransformVertexPosition.vert +// // Draw and transform the fed vertex position with the standard MVP stack // Output the clip position // @@ -16,9 +18,9 @@ <$declareStandardTransform()$> -layout(location = 0) in vec4 inPosition; +layout(location=0) in vec4 inPosition; -out vec3 varWorldPos; +layout(location=0) out vec3 varWorldPos; void main(void) { // standard transform diff --git a/libraries/gpu/src/gpu/DrawUnitQuadTexcoord.slv b/libraries/gpu/src/gpu/DrawUnitQuadTexcoord.slv index 289d8f96b1..0378cd30e3 100644 --- a/libraries/gpu/src/gpu/DrawUnitQuadTexcoord.slv +++ b/libraries/gpu/src/gpu/DrawUnitQuadTexcoord.slv @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// DrawUnitQuadTexcoord.vert +// // Draw the unit quad [-1,-1 -> 1,1] amd pass along the unit texcoords [0, 0 -> 1, 1]. Not transform used. // Simply draw a Triangle_strip of 2 triangles, no input buffers or index buffer needed // @@ -11,7 +13,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -out vec2 varTexCoord0; +layout(location=0) out vec2 varTexCoord0; void main(void) { const float depth = 1.0; diff --git a/libraries/gpu/src/gpu/DrawVertexPosition.slv b/libraries/gpu/src/gpu/DrawVertexPosition.slv index b12280d577..e9961750ba 100644 --- a/libraries/gpu/src/gpu/DrawVertexPosition.slv +++ b/libraries/gpu/src/gpu/DrawVertexPosition.slv @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// DrawVertexPosition.vert +// // Draw the fed vertex position, pass straight as clip pos // Output the clip position // @@ -12,7 +14,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -layout(location = 0) in vec4 inPosition; +layout(location=0) in vec4 inPosition; void main(void) { gl_Position = inPosition; diff --git a/libraries/gpu/src/gpu/DrawViewportQuadTransformTexcoord.slv b/libraries/gpu/src/gpu/DrawViewportQuadTransformTexcoord.slv index 554728417b..ae252f73d2 100755 --- a/libraries/gpu/src/gpu/DrawViewportQuadTransformTexcoord.slv +++ b/libraries/gpu/src/gpu/DrawViewportQuadTransformTexcoord.slv @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// DrawViewportQuatTransformTexcoord.vert +// // Draw the unit quad [-1,-1 -> 1,1] filling in // Simply draw a Triangle_strip of 2 triangles, no input buffers or index buffer needed // @@ -16,7 +18,7 @@ <$declareStandardTransform()$> -out vec2 varTexCoord0; +layout(location=0) out vec2 varTexCoord0; void main(void) { const vec4 UNIT_QUAD[4] = vec4[4]( diff --git a/libraries/gpu/src/gpu/DrawWhite.slf b/libraries/gpu/src/gpu/DrawWhite.slf index bdecc0c5c5..1cdc047655 100644 --- a/libraries/gpu/src/gpu/DrawWhite.slf +++ b/libraries/gpu/src/gpu/DrawWhite.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// Draw white +// DrawWhite.frag // // Created by Sam Gateau on 5/30/2017 // Copyright 2017 High Fidelity, Inc. @@ -11,7 +11,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { outFragColor = vec4(1.0); diff --git a/libraries/gpu/src/gpu/Inputs.slh b/libraries/gpu/src/gpu/Inputs.slh index 109762136e..a121b46ed8 100644 --- a/libraries/gpu/src/gpu/Inputs.slh +++ b/libraries/gpu/src/gpu/Inputs.slh @@ -10,15 +10,18 @@ !> <@if not GPU_INPUTS_SLH@> <@def GPU_INPUTS_SLH@> -layout(location = 0) in vec4 inPosition; -layout(location = 1) in vec4 inNormal; -layout(location = 2) in vec4 inColor; -layout(location = 3) in vec4 inTexCoord0; -layout(location = 4) in vec4 inTangent; -layout(location = 5) in ivec4 inSkinClusterIndex; -layout(location = 6) in vec4 inSkinClusterWeight; -layout(location = 7) in vec4 inTexCoord1; -layout(location = 8) in vec4 inTexCoord2; -layout(location = 9) in vec4 inTexCoord3; -layout(location = 10) in vec4 inTexCoord4; + +<@include gpu/ShaderConstants.h@> + +layout(location=GPU_ATTR_POSITION) in vec4 inPosition; +layout(location=GPU_ATTR_NORMAL) in vec4 inNormal; +layout(location=GPU_ATTR_COLOR) in vec4 inColor; +layout(location=GPU_ATTR_TEXCOORD0) in vec4 inTexCoord0; +layout(location=GPU_ATTR_TANGENT) in vec4 inTangent; +layout(location=GPU_ATTR_SKIN_CLUSTER_INDEX) in ivec4 inSkinClusterIndex; +layout(location=GPU_ATTR_SKIN_CLUSTER_WEIGHT) in vec4 inSkinClusterWeight; +layout(location=GPU_ATTR_TEXCOORD1) in vec4 inTexCoord1; +layout(location=GPU_ATTR_TEXCOORD2) in vec4 inTexCoord2; +layout(location=GPU_ATTR_TEXCOORD3) in vec4 inTexCoord3; +layout(location=GPU_ATTR_TEXCOORD4) in vec4 inTexCoord4; <@endif@> diff --git a/libraries/gpu/src/gpu/Shader.cpp b/libraries/gpu/src/gpu/Shader.cpp index ca1613bd0b..1166e86cd1 100755 --- a/libraries/gpu/src/gpu/Shader.cpp +++ b/libraries/gpu/src/gpu/Shader.cpp @@ -12,6 +12,10 @@ #include "Shader.h" #include #include +#include + +#include +#include #include @@ -51,6 +55,14 @@ Shader::~Shader() { } +void populateSlotSet(Shader::SlotSet& slotSet, const Shader::LocationMap& map) { + for (const auto& entry : map) { + const auto& name = entry.first; + const auto& location = entry.second; + slotSet.insert({ name, location, Element() }); + } +} + Shader::Pointer Shader::createOrReuseDomainShader(Type type, const Source& source) { auto found = _domainShaderMaps[type].find(source); if (found != _domainShaderMaps[type].end()) { @@ -60,6 +72,28 @@ Shader::Pointer Shader::createOrReuseDomainShader(Type type, const Source& sourc } } auto shader = Pointer(new Shader(type, source)); + const auto& reflection = source.getReflection(); + if (0 != reflection.count(BindingType::INPUT)) { + populateSlotSet(shader->_inputs, reflection.find(BindingType::INPUT)->second); + } + if (0 != reflection.count(BindingType::OUTPUT)) { + populateSlotSet(shader->_outputs, reflection.find(BindingType::OUTPUT)->second); + } + if (0 != reflection.count(BindingType::UNIFORM_BUFFER)) { + populateSlotSet(shader->_uniformBuffers, reflection.find(BindingType::UNIFORM_BUFFER)->second); + } + if (0 != reflection.count(BindingType::STORAGE_BUFFER)) { + populateSlotSet(shader->_resourceBuffers, reflection.find(BindingType::STORAGE_BUFFER)->second); + } + if (0 != reflection.count(BindingType::TEXTURE)) { + populateSlotSet(shader->_textures, reflection.find(BindingType::TEXTURE)->second); + } + if (0 != reflection.count(BindingType::SAMPLER)) { + populateSlotSet(shader->_samplers, reflection.find(BindingType::SAMPLER)->second); + } + if (0 != reflection.count(BindingType::PUSH_CONSTANT)) { + populateSlotSet(shader->_uniforms, reflection.find(BindingType::PUSH_CONSTANT)->second); + } _domainShaderMaps[type].emplace(source, std::weak_ptr(shader)); return shader; } @@ -103,27 +137,32 @@ ShaderPointer Shader::createOrReuseProgramShader(Type type, const Pointer& verte // Program is a new one, let's create it auto program = Pointer(new Shader(type, vertexShader, geometryShader, pixelShader)); + + // Combine the slots from the sub-shaders + for (const auto& shader : program->_shaders) { + const auto& reflection = shader->_source.getReflection(); + if (0 != reflection.count(BindingType::UNIFORM_BUFFER)) { + populateSlotSet(program->_uniformBuffers, reflection.find(BindingType::UNIFORM_BUFFER)->second); + } + if (0 != reflection.count(BindingType::STORAGE_BUFFER)) { + populateSlotSet(program->_resourceBuffers, reflection.find(BindingType::STORAGE_BUFFER)->second); + } + if (0 != reflection.count(BindingType::TEXTURE)) { + populateSlotSet(program->_textures, reflection.find(BindingType::TEXTURE)->second); + } + if (0 != reflection.count(BindingType::SAMPLER)) { + populateSlotSet(program->_samplers, reflection.find(BindingType::SAMPLER)->second); + } + if (0 != reflection.count(BindingType::PUSH_CONSTANT)) { + populateSlotSet(program->_uniforms, reflection.find(BindingType::PUSH_CONSTANT)->second); + } + + } + _programMap.emplace(key, std::weak_ptr(program)); return program; } -void Shader::defineSlots(const SlotSet& uniforms, const SlotSet& uniformBuffers, const SlotSet& resourceBuffers, const SlotSet& textures, const SlotSet& samplers, const SlotSet& inputs, const SlotSet& outputs) { - _uniforms = uniforms; - _uniformBuffers = uniformBuffers; - _resourceBuffers = resourceBuffers; - _textures = textures; - _samplers = samplers; - _inputs = inputs; - _outputs = outputs; -} - -bool Shader::makeProgram(Shader& shader, const Shader::BindingSet& bindings, const CompilationHandler& handler) { - if (shader.isProgram()) { - return Context::makeProgram(shader, bindings, handler); - } - return false; -} - void Shader::setCompilationLogs(const CompilationLogs& logs) const { _compilationLogs.clear(); for (const auto& log : logs) { @@ -135,11 +174,6 @@ void Shader::incrementCompilationAttempt() const { _numCompilationAttempts++; } - -Shader::Source Shader::getShaderSource(Type type, int shaderId) { - return shader::loadShaderSource(shaderId); -} - Shader::Pointer Shader::createVertex(const Source& source) { return createOrReuseDomainShader(VERTEX, source); } @@ -148,26 +182,68 @@ Shader::Pointer Shader::createPixel(const Source& source) { return createOrReuseDomainShader(FRAGMENT, source); } -Shader::Pointer Shader::createVertex(int id) { - return createVertex(getShaderSource(VERTEX, id)); +Shader::Pointer Shader::createVertex(uint32_t id) { + return createVertex(getShaderSource(id)); } -Shader::Pointer Shader::createPixel(int id) { - return createPixel(getShaderSource(FRAGMENT, id)); +Shader::Pointer Shader::createPixel(uint32_t id) { + return createPixel(getShaderSource(id)); } Shader::Pointer Shader::createProgram(const Pointer& vertexShader, const Pointer& pixelShader) { return createOrReuseProgramShader(PROGRAM, vertexShader, nullptr, pixelShader); } -Shader::Pointer Shader::createProgram(int programId) { - int vertexId = (programId >> 16) & 0xFFFF; - int fragmentId = programId & 0xFFFF; - auto vertexShader = createVertex(vertexId); - auto fragmentShader = createPixel(fragmentId); +Shader::Pointer Shader::createProgram(uint32_t programId) { + auto vertexShader = createVertex(shader::getVertexId(programId)); + auto fragmentShader = createPixel(shader::getFragmentId(programId)); return createOrReuseProgramShader(PROGRAM, vertexShader, nullptr, fragmentShader); } -//Shader::Pointer Shader::createProgram(const Pointer& vertexShader, const Pointer& geometryShader, const Pointer& pixelShader) { -// return createOrReuseProgramShader(PROGRAM, vertexShader, geometryShader, pixelShader); -//} +Shader::Pointer Shader::createProgram(const Pointer& vertexShader, const Pointer& geometryShader, const Pointer& pixelShader) { + return createOrReuseProgramShader(PROGRAM, vertexShader, geometryShader, pixelShader); +} + +void updateBindingsFromJsonObject(Shader::LocationMap& inOutSet, const QJsonObject& json) { + for (const auto& key : json.keys()) { + inOutSet[key.toStdString()] = json[key].toInt(); + } +} + +Shader::ReflectionMap getShaderReflection(const std::string& reflectionJson) { + if (reflectionJson.empty() && reflectionJson != std::string("null")) { + return {}; + } + + auto doc = QJsonDocument::fromJson(reflectionJson.c_str()); + if (doc.isNull()) { + qWarning() << "Invalid shader reflection JSON" << reflectionJson.c_str(); + return {}; + } + + Shader::ReflectionMap result; + auto json = doc.object(); + if (json.contains("inputs")) { + updateBindingsFromJsonObject(result[Shader::BindingType::INPUT], json["inputs"].toObject()); + } + if (json.contains("outputs")) { + updateBindingsFromJsonObject(result[Shader::BindingType::OUTPUT], json["outputs"].toObject()); + } + if (json.contains("uniformBuffers")) { + updateBindingsFromJsonObject(result[Shader::BindingType::UNIFORM_BUFFER], json["uniformBuffers"].toObject()); + } + if (json.contains("textures")) { + updateBindingsFromJsonObject(result[Shader::BindingType::TEXTURE], json["textures"].toObject()); + } + if (json.contains("uniforms")) { + updateBindingsFromJsonObject(result[Shader::BindingType::PUSH_CONSTANT], json["uniforms"].toObject()); + } + return result; +} + +Shader::Source Shader::getShaderSource(uint32_t id) { + auto source = shader::loadShaderSource(id); + auto reflectionJson = shader::loadShaderReflection(id); + auto reflection = getShaderReflection(reflectionJson); + return { source, reflection }; +} diff --git a/libraries/gpu/src/gpu/Shader.h b/libraries/gpu/src/gpu/Shader.h index 64a2fc3f4f..d713433bd6 100755 --- a/libraries/gpu/src/gpu/Shader.h +++ b/libraries/gpu/src/gpu/Shader.h @@ -15,10 +15,12 @@ #include #include #include +#include +#include #include #include #include - + namespace gpu { class Shader { @@ -26,7 +28,8 @@ public: // unique identifier of a shader using ID = uint32_t; - enum Type { + enum Type + { VERTEX = 0, PIXEL, FRAGMENT = PIXEL, @@ -36,67 +39,102 @@ public: PROGRAM, }; - typedef std::shared_ptr< Shader > Pointer; - typedef std::vector< Pointer > Shaders; + typedef std::shared_ptr Pointer; + typedef std::vector Shaders; + // Needs to match values in shaders/Shaders.h + enum class BindingType + { + INVALID = -1, + INPUT = 0, + OUTPUT, + TEXTURE, + SAMPLER, + UNIFORM_BUFFER, + STORAGE_BUFFER, + PUSH_CONSTANT, // Equivalent to uniforms in GL + SPECIALIZATION_CONSTANT, + }; + using LocationMap = std::unordered_map; + using ReflectionMap = std::map; class Source { public: - enum Language { + enum Language + { + INVALID = -1, GLSL = 0, + SPIRV = 1, + MSL = 2, + HLSL = 3, }; Source() {} - Source(const std::string& code, Language lang = GLSL) : _code(code), _lang(lang) {} - Source(const Source& source) : _code(source._code), _lang(source._lang) {} + Source(const std::string& code, const ReflectionMap& reflection, Language lang = GLSL) : + _code(code), _reflection(reflection), _lang(lang) {} + Source(const Source& source) : _code(source._code), _reflection(source._reflection), _lang(source._lang) {} virtual ~Source() {} - + virtual const std::string& getCode() const { return _code; } + virtual const ReflectionMap& getReflection() const { return _reflection; } class Less { public: - bool operator() (const Source& x, const Source& y) const { if (x._lang == y._lang) { return x._code < y._code; } else { return (x._lang < y._lang); } } + bool operator()(const Source& x, const Source& y) const { + if (x._lang == y._lang) { + return x._code < y._code; + } else { + return (x._lang < y._lang); + } + } }; protected: std::string _code; - Language _lang = GLSL; + ReflectionMap _reflection; + Language _lang; }; - static Source getShaderSource(Type type, int shaderId); - static Source getVertexShaderSource(int shaderId) { return getShaderSource(VERTEX, shaderId); } - static Source getFragmentShaderSource(int shaderId) { return getShaderSource(FRAGMENT, shaderId); } - struct CompilationLog { std::string message; bool compiled{ false }; CompilationLog() {} - CompilationLog(const CompilationLog& src) : - message(src.message), - compiled(src.compiled) {} + CompilationLog(const CompilationLog& src) : message(src.message), compiled(src.compiled) {} }; using CompilationLogs = std::vector; static const int32 INVALID_LOCATION = -1; + template + class Less { + public: + bool operator()(const T& x, const T& y) const { return x._name < y._name; } + }; + class Slot { public: - std::string _name; - int32 _location{INVALID_LOCATION}; + int32 _location{ INVALID_LOCATION }; Element _element; - uint16 _resourceType{Resource::BUFFER}; - uint32 _size { 0 }; - - Slot(const Slot& s) : _name(s._name), _location(s._location), _element(s._element), _resourceType(s._resourceType), _size(s._size) {} - Slot(Slot&& s) : _name(s._name), _location(s._location), _element(s._element), _resourceType(s._resourceType), _size(s._size) {} - Slot(const std::string& name, int32 location, const Element& element, uint16 resourceType = Resource::BUFFER, uint32 size = 0) : - _name(name), _location(location), _element(element), _resourceType(resourceType), _size(size) {} + uint16 _resourceType{ Resource::BUFFER }; + uint32 _size{ 0 }; + + Slot(const Slot& s) : + _name(s._name), _location(s._location), _element(s._element), _resourceType(s._resourceType), _size(s._size) {} + Slot(Slot&& s) : + _name(s._name), _location(s._location), _element(s._element), _resourceType(s._resourceType), _size(s._size) {} + Slot(const std::string& name, + int32 location, + const Element& element, + uint16 resourceType = Resource::BUFFER, + uint32 size = 0) : + _name(name), + _location(location), _element(element), _resourceType(resourceType), _size(size) {} Slot(const std::string& name) : _name(name) {} - Slot& operator= (const Slot& s) { + Slot& operator=(const Slot& s) { _name = s._name; _location = s._location; _element = s._element; @@ -106,49 +144,61 @@ public: } }; - class Binding { - public: - std::string _name; - int32 _location; - Binding(const std::string& name, int32 loc = INVALID_LOCATION) : _name(name), _location(loc) {} - }; + class SlotSet : protected std::set> { + using Parent = std::set>; - template class Less { public: - bool operator() (const T& x, const T& y) const { return x._name < y._name; } - }; - - class SlotSet : public std::set> { - public: - Slot findSlot(const std::string& name) const { - auto key = Slot(name); - auto found = static_cast>*>(this)->find(key); - if (found != end()) { - return (*found); + void insert(const Parent::value_type& value) { + Parent::insert(value); + if (value._location != INVALID_LOCATION) { + _validSlots.insert(value._location); } - return key; } - int32 findLocation(const std::string& name) const { - return findSlot(name)._location; - } - protected: - }; - - typedef std::set> BindingSet; + using Parent::begin; + using Parent::empty; + using Parent::end; + using Parent::size; + + using LocationMap = std::unordered_map; + using NameVector = std::vector; + + NameVector getNames() const { + NameVector result; + for (const auto& entry : *this) { + result.push_back(entry._name); + } + return result; + } + + LocationMap getLocationsByName() const { + LocationMap result; + for (const auto& entry : *this) { + result.insert({ entry._name, entry._location }); + } + return result; + } + + bool isValid(int32 slot) const { return 0 != _validSlots.count(slot); } + + protected: + std::unordered_set _validSlots; + }; + + static Source getShaderSource(uint32_t id); + static Source getVertexShaderSource(uint32_t id) { return getShaderSource(id); } + static Source getFragmentShaderSource(uint32_t id) { return getShaderSource(id); } static Pointer createVertex(const Source& source); static Pointer createPixel(const Source& source); - //static Pointer createGeometry(const Source& source); - static Pointer createVertex(int shaderId); - static Pointer createPixel(int shaderId); - static Pointer createGeometry(int shaderId); + static Pointer createGeometry(const Source& source); + static Pointer createVertex(uint32_t shaderId); + static Pointer createPixel(uint32_t shaderId); + static Pointer createGeometry(uint32_t shaderId); - static Pointer createProgram(int programId); + static Pointer createProgram(uint32_t programId); static Pointer createProgram(const Pointer& vertexShader, const Pointer& pixelShader); - //static Pointer createProgram(int vertexId, int fragmentId); - //static Pointer createProgram(const Pointer& vertexShader, const Pointer& geometryShader, const Pointer& pixelShader); - + static Pointer createProgram(const Pointer& vertexShader, const Pointer& geometryShader, const Pointer& pixelShader); ~Shader(); @@ -168,22 +218,6 @@ public: const SlotSet& getResourceBuffers() const { return _resourceBuffers; } const SlotSet& getTextures() const { return _textures; } const SlotSet& getSamplers() const { return _samplers; } - - const SlotSet& getInputs() const { return _inputs; } - const SlotSet& getOutputs() const { return _outputs; } - - // Define the list of uniforms, inputs and outputs for the shader - // This call is intendend to build the list of exposed slots in order - // to correctly bind resource to the shader. - // These can be build "manually" from knowledge of the atual shader code - // or automatically by calling "makeShader()", this is the preferred way - void defineSlots(const SlotSet& uniforms, - const SlotSet& uniformBuffers, - const SlotSet& resourceBuffers, - const SlotSet& textures, - const SlotSet& samplers, - const SlotSet& inputs, - const SlotSet& outputs); // Compilation Handler can be passed while compiling a shader (in the makeProgram call) to be able to give the hand to // the caller thread if the comilation fails and to prvide a different version of the source for it @@ -192,22 +226,7 @@ public: // @param2 the compilation log containing the error message // @param3 a new string ready to be filled with the new version of the source that could be proposed from the handler functor // @return boolean true if the backend should keep trying to compile the shader with the new source returned or false to stop and fail that shader compilation - using CompilationHandler = std::function; - - // makeProgram(...) make a program shader ready to be used in a Batch. - // It compiles the sub shaders, link them and defines the Slots and their bindings. - // If the shader passed is not a program, nothing happens. - // - // It is possible to provide a set of slot bindings (from the name of the slot to a unit number) allowing - // to make sure slots with the same semantics can be always bound on the same location from shader to shader. - // For example, the "diffuseMap" can always be bound to texture unit #1 for different shaders by specifying a Binding("diffuseMap", 1) - // - // As of now (03/2015), the call to makeProgram is in fact calling gpu::Context::makeProgram and does rely - // on the underneath gpu::Context::Backend available. Since we only support glsl, this means that it relies - // on a gl Context and the driver to compile the glsl shader. - // Hoppefully in a few years the shader compilation will be completely abstracted in a separate shader compiler library - // independant of the graphics api in use underneath (looking at you opengl & vulkan). - static bool makeProgram(Shader& shader, const Shader::BindingSet& bindings = Shader::BindingSet(), const CompilationHandler& handler = nullptr); + using CompilationHandler = std::function; // Check the compilation state bool compilationHasFailed() const { return _compilationHasFailed; } @@ -219,16 +238,14 @@ public: void setCompilationLogs(const CompilationLogs& logs) const; void incrementCompilationAttempt() const; - - const GPUObjectPointer gpuObject {}; + const GPUObjectPointer gpuObject{}; protected: Shader(Type type, const Source& source); Shader(Type type, const Pointer& vertex, const Pointer& geometry, const Pointer& pixel); - Shader(const Shader& shader); // deep copy of the sysmem shader - Shader& operator=(const Shader& shader); // deep copy of the sysmem texture - + Shader(const Shader& shader); // deep copy of the sysmem shader + Shader& operator=(const Shader& shader); // deep copy of the sysmem texture // Source contains the actual source code or nothing if the shader is a program Source _source; @@ -257,32 +274,29 @@ protected: mutable CompilationLogs _compilationLogs; // Whether or not the shader compilation failed - bool _compilationHasFailed { false }; + bool _compilationHasFailed{ false }; - - // Global maps of the shaders + // Global maps of the shaders // Unique shader ID static std::atomic _nextShaderID; - using ShaderMap = std::map, Source::Less>; + using ShaderMap = std::map, Source::Less>; using DomainShaderMaps = std::array; static DomainShaderMaps _domainShaderMaps; static ShaderPointer createOrReuseDomainShader(Type type, const Source& source); - using ProgramMapKey = glm::uvec3; // The IDs of the shaders in a program make its key + using ProgramMapKey = glm::uvec3; // The IDs of the shaders in a program make its key class ProgramKeyLess { public: - bool operator() (const ProgramMapKey& l, const ProgramMapKey& r) const { + bool operator()(const ProgramMapKey& l, const ProgramMapKey& r) const { if (l.x == r.x) { if (l.y == r.y) { return (l.z < r.z); - } - else { + } else { return (l.y < r.y); } - } - else { + } else { return (l.x < r.x); } } @@ -290,13 +304,15 @@ protected: using ProgramMap = std::map, ProgramKeyLess>; static ProgramMap _programMap; - static ShaderPointer createOrReuseProgramShader(Type type, const Pointer& vertexShader, const Pointer& geometryShader, const Pointer& pixelShader); + static ShaderPointer createOrReuseProgramShader(Type type, + const Pointer& vertexShader, + const Pointer& geometryShader, + const Pointer& pixelShader); }; typedef Shader::Pointer ShaderPointer; -typedef std::vector< ShaderPointer > Shaders; - -}; +typedef std::vector Shaders; +}; // namespace gpu #endif diff --git a/libraries/gpu/src/gpu/ShaderConstants.h b/libraries/gpu/src/gpu/ShaderConstants.h new file mode 100644 index 0000000000..dd9b350a4e --- /dev/null +++ b/libraries/gpu/src/gpu/ShaderConstants.h @@ -0,0 +1,126 @@ +// + +// <@if not GPU_SHADER_CONSTANTS_H@> +// <@def GPU_SHADER_CONSTANTS_H@> + +// Hack comment to absorb the extra '//' scribe prepends + +#ifndef GPU_SHADER_CONSTANTS_H +#define GPU_SHADER_CONSTANTS_H + +#define GPU_BUFFER_TRANSFORM_CAMERA 15 +#define GPU_BUFFER_TEXTURE_TABLE0 16 +#define GPU_BUFFER_TEXTURE_TABLE1 17 +#define GPU_BUFFER_CAMERA_CORRECTION 18 + +#define GPU_TEXTURE_TRANSFORM_OBJECT 31 + +#define GPU_STORAGE_TRANSFORM_OBJECT 7 + +#define GPU_ATTR_POSITION 0 +#define GPU_ATTR_NORMAL 1 +#define GPU_ATTR_COLOR 2 +#define GPU_ATTR_TEXCOORD0 3 +#define GPU_ATTR_TANGENT 4 +#define GPU_ATTR_SKIN_CLUSTER_INDEX 5 +#define GPU_ATTR_SKIN_CLUSTER_WEIGHT 6 +#define GPU_ATTR_TEXCOORD1 7 +#define GPU_ATTR_TEXCOORD2 8 +#define GPU_ATTR_TEXCOORD3 9 +#define GPU_ATTR_TEXCOORD4 10 +#define GPU_ATTR_STEREO_SIDE 14 +#define GPU_ATTR_DRAW_CALL_INFO 15 + +#define GPU_UNIFORM_COLOR 101 +#define GPU_UNIFORM_TEXCOORD_RECT 102 +#define GPU_UNIFORM_EXTRA0 110 +#define GPU_UNIFORM_EXTRA1 111 +#define GPU_UNIFORM_EXTRA2 112 +#define GPU_UNIFORM_EXTRA3 113 +#define GPU_UNIFORM_EXTRA4 114 +#define GPU_UNIFORM_EXTRA5 115 +#define GPU_UNIFORM_EXTRA6 116 +#define GPU_UNIFORM_EXTRA7 117 +#define GPU_UNIFORM_EXTRA8 118 +#define GPU_UNIFORM_EXTRA9 119 + +// + +// Hack Comment +#endif // GPU_SHADER_CONSTANTS_H + +// <@if 1@> +// Trigger Scribe include +// <@endif@> + +// <@endif@> + +// Hack Comment diff --git a/libraries/gpu/src/gpu/Transform.slh b/libraries/gpu/src/gpu/Transform.slh index 864a106350..fd389e1d50 100644 --- a/libraries/gpu/src/gpu/Transform.slh +++ b/libraries/gpu/src/gpu/Transform.slh @@ -10,12 +10,13 @@ <@if not GPU_TRANSFORM_STATE_SLH@> <@def GPU_TRANSFORM_STATE_SLH@> +<@include gpu/ShaderConstants.h@> <@func declareStandardCameraTransform()@> <@include gpu/TransformCamera_shared.slh@> #define TransformCamera _TransformCamera -layout(std140) uniform transformCameraBuffer { +layout(std140, binding=GPU_BUFFER_TRANSFORM_CAMERA) uniform transformCameraBuffer { #ifdef GPU_TRANSFORM_IS_STEREO #ifdef GPU_TRANSFORM_STEREO_CAMERA TransformCamera _camera[2]; @@ -31,10 +32,10 @@ layout(std140) uniform transformCameraBuffer { #ifdef GPU_TRANSFORM_IS_STEREO #ifdef GPU_TRANSFORM_STEREO_CAMERA #ifdef GPU_TRANSFORM_STEREO_CAMERA_ATTRIBUTED -layout(location=14) in int _inStereoSide; +layout(location=GPU_ATTR_STEREO_SIDE) in int _inStereoSide; #endif -flat out int _stereoSide; +layout(location=GPU_ATTR_STEREO_SIDE) flat out int _stereoSide; // In stereo drawcall mode Instances are drawn twice (left then right) hence the true InstanceID is the gl_InstanceID / 2 int gpu_InstanceID() { @@ -59,7 +60,7 @@ int gpu_InstanceID() { #ifdef GPU_PIXEL_SHADER #ifdef GPU_TRANSFORM_STEREO_CAMERA -flat in int _stereoSide; +layout(location=GPU_ATTR_STEREO_SIDE) flat in int _stereoSide; #endif #endif @@ -116,10 +117,10 @@ struct TransformObject { mat4 _modelInverse; }; -layout(location=15) in ivec2 _drawCallInfo; +layout(location=GPU_ATTR_DRAW_CALL_INFO) in ivec2 _drawCallInfo; #if defined(GPU_SSBO_TRANSFORM_OBJECT) -layout(std140) buffer transformObjectBuffer { +layout(std140, binding=GPU_STORAGE_TRANSFORM_OBJECT) buffer transformObjectBuffer { TransformObject _object[]; }; TransformObject getTransformObject() { @@ -127,7 +128,7 @@ TransformObject getTransformObject() { return transformObject; } #else -uniform samplerBuffer transformObjectBuffer; +layout(binding=GPU_TEXTURE_TRANSFORM_OBJECT) uniform samplerBuffer transformObjectBuffer; TransformObject getTransformObject() { int offset = 8 * _drawCallInfo.x; diff --git a/libraries/gpu/src/gpu/null/NullBackend.h b/libraries/gpu/src/gpu/null/NullBackend.h index 57b8fbafbc..e227b631c7 100644 --- a/libraries/gpu/src/gpu/null/NullBackend.h +++ b/libraries/gpu/src/gpu/null/NullBackend.h @@ -28,7 +28,6 @@ class Backend : public gpu::Backend { friend class gpu::Context; static void init() {} static gpu::Backend* createBackend() { return new Backend(); } - static bool makeProgram(Shader& shader, const Shader::BindingSet& slotBindings, const Shader::CompilationHandler& handler) { return true; } protected: explicit Backend(bool syncCache) : Parent() { } diff --git a/libraries/graphics/src/graphics/Light.slh b/libraries/graphics/src/graphics/Light.slh index 53b840f5fb..d22da44c66 100644 --- a/libraries/graphics/src/graphics/Light.slh +++ b/libraries/graphics/src/graphics/Light.slh @@ -11,6 +11,7 @@ <@if not MODEL_LIGHT_SLH@> <@def MODEL_LIGHT_SLH@> +<@include graphics/ShaderConstants.h@> <@include graphics/LightVolume.shared.slh@> <@include graphics/LightIrradiance.shared.slh@> @@ -50,7 +51,7 @@ float getLightAmbientMapNumMips(LightAmbient l) { return l._ambient.y; } <@if N@> -uniform lightBuffer { +layout(binding=GRAPHICS_BUFFER_LIGHT) uniform lightBuffer { Light lightArray[<$N$>]; }; Light getLight(int index) { @@ -58,7 +59,7 @@ Light getLight(int index) { } <@else@> -uniform keyLightBuffer { +layout(binding=GRAPHICS_BUFFER_KEY_LIGHT) uniform keyLightBuffer { Light light; }; Light getKeyLight() { @@ -78,7 +79,7 @@ Light getKeyLight() { <@if N@> -uniform lightAmbientBuffer { +layout(binding=GRAPHICS_BUFFER_AMBIENT_LIGHT) uniform lightAmbientBuffer { LightAmbient lightAmbientArray[<$N$>]; }; @@ -87,7 +88,7 @@ LightAmbient getLightAmbient(int index) { } <@else@> -uniform lightAmbientBuffer { +layout(binding=GRAPHICS_BUFFER_AMBIENT_LIGHT) uniform lightAmbientBuffer { LightAmbient lightAmbient; }; diff --git a/libraries/graphics/src/graphics/Material.slh b/libraries/graphics/src/graphics/Material.slh index dd2985b4da..fe273ed2a9 100644 --- a/libraries/graphics/src/graphics/Material.slh +++ b/libraries/graphics/src/graphics/Material.slh @@ -11,6 +11,8 @@ <@if not MODEL_MATERIAL_SLH@> <@def MODEL_MATERIAL_SLH@> +<@include graphics/ShaderConstants.h@> + // The material values (at least the material key) must be precisely bitwise accurate // to what is provided by the uniform buffer, or the material key has the wrong bits @@ -21,7 +23,7 @@ struct Material { vec4 _scatteringSpare2Key; }; -uniform materialBuffer { +layout(binding=GRAPHICS_BUFFER_MATERIAL) uniform materialBuffer { Material _mat; }; diff --git a/libraries/render-utils/src/MaterialTextures.slh b/libraries/graphics/src/graphics/MaterialTextures.slh similarity index 90% rename from libraries/render-utils/src/MaterialTextures.slh rename to libraries/graphics/src/graphics/MaterialTextures.slh index 0b83fd1334..e19b429684 100644 --- a/libraries/render-utils/src/MaterialTextures.slh +++ b/libraries/graphics/src/graphics/MaterialTextures.slh @@ -11,6 +11,8 @@ <@if not MODEL_MATERIAL_TEXTURES_SLH@> <@def MODEL_MATERIAL_TEXTURES_SLH@> +<@include graphics/ShaderConstants.h@> + <@func declareMaterialTexMapArrayBuffer()@> const int MAX_TEXCOORDS = 2; @@ -22,7 +24,7 @@ struct TexMapArray { vec4 _lightmapParams; }; -uniform texMapArrayBuffer { +layout(binding=GRAPHICS_BUFFER_TEXMAPARRAY) uniform texMapArrayBuffer { TexMapArray _texMapArray; }; @@ -123,21 +125,21 @@ float fetchScatteringMap(vec2 uv) { #else <@if withAlbedo@> -uniform sampler2D albedoMap; +layout(binding=GRAPHICS_TEXTURE_MATERIAL_ALBEDO) uniform sampler2D albedoMap; vec4 fetchAlbedoMap(vec2 uv) { return texture(albedoMap, uv, TAA_TEXTURE_LOD_BIAS); } <@endif@> <@if withRoughness@> -uniform sampler2D roughnessMap; +layout(binding=GRAPHICS_TEXTURE_MATERIAL_ROUGHNESS) uniform sampler2D roughnessMap; float fetchRoughnessMap(vec2 uv) { return (texture(roughnessMap, uv, TAA_TEXTURE_LOD_BIAS).r); } <@endif@> <@if withNormal@> -uniform sampler2D normalMap; +layout(binding=GRAPHICS_TEXTURE_MATERIAL_NORMAL) uniform sampler2D normalMap; vec3 fetchNormalMap(vec2 uv) { // unpack normal, swizzle to get into hifi tangent space with Y axis pointing out vec2 t = 2.0 * (texture(normalMap, uv, TAA_TEXTURE_LOD_BIAS).rg - vec2(0.5, 0.5)); @@ -147,28 +149,28 @@ vec3 fetchNormalMap(vec2 uv) { <@endif@> <@if withMetallic@> -uniform sampler2D metallicMap; +layout(binding=GRAPHICS_TEXTURE_MATERIAL_METALLIC) uniform sampler2D metallicMap; float fetchMetallicMap(vec2 uv) { return (texture(metallicMap, uv, TAA_TEXTURE_LOD_BIAS).r); } <@endif@> <@if withEmissive@> -uniform sampler2D emissiveMap; +layout(binding=GRAPHICS_TEXTURE_MATERIAL_EMISSIVE_LIGHTMAP) uniform sampler2D emissiveMap; vec3 fetchEmissiveMap(vec2 uv) { return texture(emissiveMap, uv, TAA_TEXTURE_LOD_BIAS).rgb; } <@endif@> <@if withOcclusion@> -uniform sampler2D occlusionMap; +layout(binding=GRAPHICS_TEXTURE_MATERIAL_OCCLUSION) uniform sampler2D occlusionMap; float fetchOcclusionMap(vec2 uv) { return texture(occlusionMap, uv).r; } <@endif@> <@if withScattering@> -uniform sampler2D scatteringMap; +layout(binding=GRAPHICS_TEXTURE_MATERIAL_SCATTERING) uniform sampler2D scatteringMap; float fetchScatteringMap(vec2 uv) { float scattering = texture(scatteringMap, uv, TAA_TEXTURE_LOD_BIAS).r; // boolean scattering for now return max(((scattering - 0.1) / 0.9), 0.0); @@ -217,10 +219,10 @@ float fetchScatteringMap(vec2 uv) { <$declareMaterialTexMapArrayBuffer()$> -uniform sampler2D emissiveMap; +layout(binding=GRAPHICS_TEXTURE_MATERIAL_EMISSIVE_LIGHTMAP) uniform sampler2D emissiveMap; vec3 fetchLightmapMap(vec2 uv) { - vec2 emissiveParams = getTexMapArray()._lightmapParams.xy; - return (vec3(emissiveParams.x) + emissiveParams.y * texture(emissiveMap, uv).rgb); + vec2 lightmapParams = getTexMapArray()._lightmapParams.xy; + return (vec3(lightmapParams.x) + lightmapParams.y * texture(emissiveMap, uv).rgb); } <@endfunc@> diff --git a/libraries/graphics/src/graphics/ShaderConstants.h b/libraries/graphics/src/graphics/ShaderConstants.h new file mode 100644 index 0000000000..c902185d4f --- /dev/null +++ b/libraries/graphics/src/graphics/ShaderConstants.h @@ -0,0 +1,78 @@ +// + +// <@if not GRAPHICS_SHADER_CONSTANTS_H@> +// <@def GRAPHICS_SHADER_CONSTANTS_H@> + +// Hack comment to absorb the extra '//' scribe prepends + +#ifndef GRAPHICS_SHADER_CONSTANTS_H +#define GRAPHICS_SHADER_CONSTANTS_H + +#define GRAPHICS_BUFFER_SKINNING 0 +#define GRAPHICS_BUFFER_MATERIAL 1 +#define GRAPHICS_BUFFER_TEXMAPARRAY 2 +#define GRAPHICS_BUFFER_KEY_LIGHT 4 +#define GRAPHICS_BUFFER_LIGHT 5 +#define GRAPHICS_BUFFER_AMBIENT_LIGHT 6 + +#define GRAPHICS_TEXTURE_MATERIAL_ALBEDO 0 +#define GRAPHICS_TEXTURE_MATERIAL_NORMAL 1 +#define GRAPHICS_TEXTURE_MATERIAL_METALLIC 2 +#define GRAPHICS_TEXTURE_MATERIAL_EMISSIVE_LIGHTMAP 3 +#define GRAPHICS_TEXTURE_MATERIAL_ROUGHNESS 4 +#define GRAPHICS_TEXTURE_MATERIAL_OCCLUSION 5 +#define GRAPHICS_TEXTURE_MATERIAL_SCATTERING 6 + +// Make sure these match the ones in render-utils/ShaderConstants.h +#define GRAPHICS_TEXTURE_SKYBOX 11 +#define GRAPHICS_BUFFER_SKYBOX_PARAMS 5 + +// +// Hack Comment + +#endif // GRAPHICS_SHADER_CONSTANTS_H + +// <@if 1@> +// Trigger Scribe include +// <@endif@> + +// <@endif@> + +// Hack Comment diff --git a/libraries/graphics/src/graphics/Skybox.cpp b/libraries/graphics/src/graphics/Skybox.cpp index 6c044444f0..532b5f1706 100755 --- a/libraries/graphics/src/graphics/Skybox.cpp +++ b/libraries/graphics/src/graphics/Skybox.cpp @@ -14,8 +14,8 @@ #include #include #include - #include +#include "ShaderConstants.h" using namespace graphics; @@ -64,17 +64,12 @@ void Skybox::clear() { _empty = true; } -void Skybox::prepare(gpu::Batch& batch, int textureSlot, int bufferSlot) const { - if (bufferSlot > -1) { - batch.setUniformBuffer(bufferSlot, _schemaBuffer); - } - - if (textureSlot > -1) { - gpu::TexturePointer skymap = getCubemap(); - // FIXME: skymap->isDefined may not be threadsafe - if (skymap && skymap->isDefined()) { - batch.setResourceTexture(textureSlot, skymap); - } +void Skybox::prepare(gpu::Batch& batch) const { + batch.setUniformBuffer(graphics::slot::buffer::SkyboxParams, _schemaBuffer); + gpu::TexturePointer skymap = getCubemap(); + // FIXME: skymap->isDefined may not be threadsafe + if (skymap && skymap->isDefined()) { + batch.setResourceTexture(graphics::slot::texture::Skybox, skymap); } } @@ -91,16 +86,6 @@ void Skybox::render(gpu::Batch& batch, const ViewFrustum& viewFrustum, const Sky std::call_once(once, [&] { { auto skyShader = gpu::Shader::createProgram(shader::graphics::program::skybox); - - batch.runLambda([skyShader] { - gpu::Shader::BindingSet bindings; - bindings.insert(gpu::Shader::Binding(std::string("cubeMap"), SKYBOX_SKYMAP_SLOT)); - bindings.insert(gpu::Shader::Binding(std::string("skyboxBuffer"), SKYBOX_CONSTANTS_SLOT)); - if (!gpu::Shader::makeProgram(*skyShader, bindings)) { - - } - }); - auto skyState = std::make_shared(); // Must match PrepareStencil::STENCIL_BACKGROUND const int8_t STENCIL_BACKGROUND = 0; @@ -130,5 +115,5 @@ void Skybox::render(gpu::Batch& batch, const ViewFrustum& viewFrustum, const Sky skybox.prepare(batch); batch.draw(gpu::TRIANGLE_STRIP, 4); - batch.setResourceTexture(SKYBOX_SKYMAP_SLOT, nullptr); + batch.setResourceTexture(graphics::slot::texture::Skybox, nullptr); } diff --git a/libraries/graphics/src/graphics/Skybox.h b/libraries/graphics/src/graphics/Skybox.h index a739b9a745..50189f4c51 100755 --- a/libraries/graphics/src/graphics/Skybox.h +++ b/libraries/graphics/src/graphics/Skybox.h @@ -43,7 +43,7 @@ public: virtual bool empty() { return _empty; } virtual void clear(); - void prepare(gpu::Batch& batch, int textureSlot = SKYBOX_SKYMAP_SLOT, int bufferSlot = SKYBOX_CONSTANTS_SLOT) const; + void prepare(gpu::Batch& batch) const; virtual void render(gpu::Batch& batch, const ViewFrustum& frustum) const; static void render(gpu::Batch& batch, const ViewFrustum& frustum, const Skybox& skybox); @@ -51,9 +51,6 @@ public: const UniformBufferView& getSchemaBuffer() const { return _schemaBuffer; } protected: - static const int SKYBOX_SKYMAP_SLOT { 0 }; - static const int SKYBOX_CONSTANTS_SLOT { 0 }; - class Schema { public: glm::vec3 color { 0.0f, 0.0f, 0.0f }; diff --git a/libraries/graphics/src/graphics/skybox.slf b/libraries/graphics/src/graphics/skybox.slf index 153e73b9ef..2b81a433f1 100755 --- a/libraries/graphics/src/graphics/skybox.slf +++ b/libraries/graphics/src/graphics/skybox.slf @@ -10,42 +10,22 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include graphics/ShaderConstants.h@> -uniform samplerCube cubeMap; +layout(binding=GRAPHICS_TEXTURE_SKYBOX) uniform samplerCube cubeMap; struct Skybox { vec4 color; }; -uniform skyboxBuffer { +layout(binding=GRAPHICS_BUFFER_SKYBOX_PARAMS) uniform skyboxBuffer { Skybox skybox; }; -in vec3 _normal; -out vec4 _fragColor; +layout(location=0) in vec3 _normal; +layout(location=0) out vec4 _fragColor; -//PROCEDURAL_COMMON_BLOCK - -#line 1001 -//PROCEDURAL_BLOCK - -#line 2033 void main(void) { - -#ifdef PROCEDURAL - - vec3 color = getSkyboxColor(); - // Protect from NaNs and negative values - color = mix(color, vec3(0), isnan(color)); - color = max(color, vec3(0)); - // Procedural Shaders are expected to be Gamma corrected so let's bring back the RGB in linear space for the rest of the pipeline - color = pow(color, vec3(2.2)); - _fragColor = vec4(color, 0.0); - - // FIXME: scribe does not yet scrub out else statements - return; - -#else vec3 coord = normalize(_normal); vec3 color = skybox.color.rgb; @@ -57,7 +37,4 @@ void main(void) { } } _fragColor = vec4(color, 0.0); - -#endif - } diff --git a/libraries/graphics/src/graphics/skybox.slv b/libraries/graphics/src/graphics/skybox.slv index 6fd9532fa1..4b14872df2 100755 --- a/libraries/graphics/src/graphics/skybox.slv +++ b/libraries/graphics/src/graphics/skybox.slv @@ -15,7 +15,7 @@ <$declareStandardTransform()$> -out vec3 _normal; +layout(location=0) out vec3 _normal; void main(void) { const float depth = 0.0; diff --git a/libraries/procedural/src/procedural/Logging.h b/libraries/procedural/src/procedural/Logging.h index 3684d7c78f..77a25c305d 100644 --- a/libraries/procedural/src/procedural/Logging.h +++ b/libraries/procedural/src/procedural/Logging.h @@ -11,6 +11,6 @@ #include -Q_DECLARE_LOGGING_CATEGORY(procedural) +Q_DECLARE_LOGGING_CATEGORY(proceduralLog) #endif // hifi_octree_Logging_h diff --git a/libraries/procedural/src/procedural/Procedural.cpp b/libraries/procedural/src/procedural/Procedural.cpp index 8f0c9ab4f0..644212864e 100644 --- a/libraries/procedural/src/procedural/Procedural.cpp +++ b/libraries/procedural/src/procedural/Procedural.cpp @@ -22,10 +22,10 @@ #include #include +#include "ShaderConstants.h" #include "Logging.h" -Q_LOGGING_CATEGORY(procedural, "hifi.gpu.procedural") - +Q_LOGGING_CATEGORY(proceduralLog, "hifi.gpu.procedural") // Userdata parsing constants static const QString PROCEDURAL_USER_DATA_KEY = "ProceduralEntity"; @@ -36,20 +36,9 @@ static const QString CHANNELS_KEY = "channels"; // Shader replace strings static const std::string PROCEDURAL_BLOCK = "//PROCEDURAL_BLOCK"; -static const std::string PROCEDURAL_COMMON_BLOCK = "//PROCEDURAL_COMMON_BLOCK"; static const std::string PROCEDURAL_VERSION = "//PROCEDURAL_VERSION"; -static const std::string STANDARD_UNIFORM_NAMES[Procedural::NUM_STANDARD_UNIFORMS] = { - "iDate", - "iGlobalTime", - "iFrameCount", - "iWorldScale", - "iWorldPosition", - "iWorldOrientation", - "iChannelResolution" -}; - -bool operator ==(const ProceduralData& a, const ProceduralData& b) { +bool operator==(const ProceduralData& a, const ProceduralData& b) { return ( (a.version == b.version) && (a.shaderUrl == b.shaderUrl) && @@ -57,7 +46,6 @@ bool operator ==(const ProceduralData& a, const ProceduralData& b) { (a.channels == b.channels)); } - QJsonValue ProceduralData::getProceduralData(const QString& proceduralJson) { if (proceduralJson.isEmpty()) { return QJsonValue(); @@ -99,7 +87,7 @@ void ProceduralData::parse(const QJsonObject& proceduralData) { auto rawShaderUrl = proceduralData[URL_KEY].toString(); shaderUrl = DependencyManager::get()->normalizeURL(rawShaderUrl); - + // Empty shader URL isn't valid if (shaderUrl.isEmpty()) { return; @@ -119,10 +107,8 @@ void ProceduralData::parse(const QJsonObject& proceduralData) { Procedural::Procedural() { _transparentState->setCullMode(gpu::State::CULL_NONE); _transparentState->setDepthTest(true, true, gpu::LESS_EQUAL); - _transparentState->setBlendFunction(true, - gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, - gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); - + _transparentState->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, + gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); } void Procedural::setProceduralData(const ProceduralData& proceduralData) { @@ -168,13 +154,13 @@ void Procedural::setProceduralData(const ProceduralData& proceduralData) { } if (!shaderUrl.isValid()) { - qCWarning(procedural) << "Invalid shader URL: " << shaderUrl; + qCWarning(proceduralLog) << "Invalid shader URL: " << shaderUrl; return; } if (shaderUrl.isLocalFile()) { if (!QFileInfo(shaderUrl.toLocalFile()).exists()) { - qCWarning(procedural) << "Invalid shader URL, missing local file: " << shaderUrl; + qCWarning(proceduralLog) << "Invalid shader URL, missing local file: " << shaderUrl; return; } _shaderPath = shaderUrl.toLocalFile(); @@ -222,29 +208,27 @@ bool Procedural::isReady() const { } std::string Procedural::replaceProceduralBlock(const std::string& fragmentSource) { - std::string fragmentShaderSource = fragmentSource; - static const auto proceduralCommonSource = gpu::Shader::getFragmentShaderSource(shader::procedural::fragment::ProceduralCommon); - size_t replaceIndex = fragmentShaderSource.find(PROCEDURAL_COMMON_BLOCK); - if (replaceIndex != std::string::npos) { - fragmentShaderSource.replace(replaceIndex, PROCEDURAL_COMMON_BLOCK.size(), proceduralCommonSource.getCode()); - } - - replaceIndex = fragmentShaderSource.find(PROCEDURAL_VERSION); + std::string result = fragmentSource; + auto replaceIndex = result.find(PROCEDURAL_VERSION); if (replaceIndex != std::string::npos) { if (_data.version == 1) { - fragmentShaderSource.replace(replaceIndex, PROCEDURAL_VERSION.size(), "#define PROCEDURAL_V1 1"); + result.replace(replaceIndex, PROCEDURAL_VERSION.size(), "#define PROCEDURAL_V1 1"); } else if (_data.version == 2) { - fragmentShaderSource.replace(replaceIndex, PROCEDURAL_VERSION.size(), "#define PROCEDURAL_V2 1"); + result.replace(replaceIndex, PROCEDURAL_VERSION.size(), "#define PROCEDURAL_V2 1"); } } - replaceIndex = fragmentShaderSource.find(PROCEDURAL_BLOCK); + replaceIndex = result.find(PROCEDURAL_BLOCK); if (replaceIndex != std::string::npos) { - fragmentShaderSource.replace(replaceIndex, PROCEDURAL_BLOCK.size(), _shaderSource.toLocal8Bit().data()); + result.replace(replaceIndex, PROCEDURAL_BLOCK.size(), _shaderSource.toLocal8Bit().data()); } - return fragmentShaderSource; + return result; } -void Procedural::prepare(gpu::Batch& batch, const glm::vec3& position, const glm::vec3& size, const glm::quat& orientation, const glm::vec4& color) { +void Procedural::prepare(gpu::Batch& batch, + const glm::vec3& position, + const glm::vec3& size, + const glm::quat& orientation, + const glm::vec4& color) { _entityDimensions = size; _entityPosition = position; _entityOrientation = glm::mat3_cast(orientation); @@ -267,31 +251,31 @@ void Procedural::prepare(gpu::Batch& batch, const glm::vec3& position, const glm } // Build the fragment shader - std::string opaqueShaderSource = replaceProceduralBlock(_opaquefragmentSource); - std::string transparentShaderSource = replaceProceduralBlock(_transparentfragmentSource); + std::string opaqueShaderSource = replaceProceduralBlock(_opaquefragmentSource.getCode()); + auto opaqueReflection = _opaquefragmentSource.getReflection(); + auto& opaqueUniforms = opaqueReflection[gpu::Shader::BindingType::PUSH_CONSTANT]; + std::string transparentShaderSource = replaceProceduralBlock(_transparentfragmentSource.getCode()); + auto transparentReflection = _transparentfragmentSource.getReflection(); + auto& transparentUniforms = transparentReflection[gpu::Shader::BindingType::PUSH_CONSTANT]; + + // Set any userdata specified uniforms + int customSlot = procedural::slot::uniform::Custom; + for (const auto& key : _data.uniforms.keys()) { + std::string uniformName = key.toLocal8Bit().data(); + opaqueUniforms[uniformName] = customSlot; + transparentUniforms[uniformName] = customSlot; + ++customSlot; + } // Leave this here for debugging // qCDebug(procedural) << "FragmentShader:\n" << fragmentShaderSource.c_str(); - gpu::Shader::BindingSet slotBindings; - - slotBindings.insert(gpu::Shader::Binding(std::string("iChannel0"), 0)); - slotBindings.insert(gpu::Shader::Binding(std::string("iChannel1"), 1)); - slotBindings.insert(gpu::Shader::Binding(std::string("iChannel2"), 2)); - slotBindings.insert(gpu::Shader::Binding(std::string("iChannel3"), 3)); - // TODO: THis is a simple fix, we need a cleaner way to provide the "hosting" program for procedural custom shaders to be defined together with the required bindings. - const int PROCEDURAL_PROGRAM_LIGHTING_MODEL_SLOT = 3; - slotBindings.insert(gpu::Shader::Binding(std::string("lightingModelBuffer"), PROCEDURAL_PROGRAM_LIGHTING_MODEL_SLOT)); - - _opaqueFragmentShader = gpu::Shader::createPixel(opaqueShaderSource); + _opaqueFragmentShader = gpu::Shader::createPixel({ opaqueShaderSource, opaqueReflection }); _opaqueShader = gpu::Shader::createProgram(_vertexShader, _opaqueFragmentShader); - gpu::Shader::makeProgram(*_opaqueShader, slotBindings); - if (!transparentShaderSource.empty() && transparentShaderSource != opaqueShaderSource) { - _transparentFragmentShader = gpu::Shader::createPixel(transparentShaderSource); + _transparentFragmentShader = gpu::Shader::createPixel({ transparentShaderSource, transparentReflection }); _transparentShader = gpu::Shader::createProgram(_vertexShader, _transparentFragmentShader); - gpu::Shader::makeProgram(*_transparentShader, slotBindings); } else { _transparentFragmentShader = _opaqueFragmentShader; _transparentShader = _opaqueShader; @@ -299,11 +283,6 @@ void Procedural::prepare(gpu::Batch& batch, const glm::vec3& position, const glm _opaquePipeline = gpu::Pipeline::create(_opaqueShader, _opaqueState); _transparentPipeline = gpu::Pipeline::create(_transparentShader, _transparentState); - for (size_t i = 0; i < NUM_STANDARD_UNIFORMS; ++i) { - const std::string& name = STANDARD_UNIFORM_NAMES[i]; - _standardOpaqueUniformSlots[i] = _opaqueShader->getUniforms().findLocation(name); - _standardTransparentUniformSlots[i] = _transparentShader->getUniforms().findLocation(name); - } _start = usecTimestampNow(); _frameCount = 0; } @@ -347,19 +326,22 @@ void Procedural::prepare(gpu::Batch& batch, const glm::vec3& position, const glm void Procedural::setupUniforms(bool transparent) { _uniforms.clear(); - // Set any userdata specified uniforms - foreach(QString key, _data.uniforms.keys()) { - std::string uniformName = key.toLocal8Bit().data(); - int32_t slot = (transparent ? _transparentShader : _opaqueShader)->getUniforms().findLocation(uniformName); - if (gpu::Shader::INVALID_LOCATION == slot) { + auto& pipeline = transparent ? _transparentShader : _opaqueShader; + const auto& uniformSlots = pipeline->getUniforms(); + auto customUniformCount = _data.uniforms.keys().size(); + + // Set any userdata specified uniforms + for (int i = 0; i < customUniformCount; ++i) { + int slot = procedural::slot::uniform::Custom + i; + if (!uniformSlots.isValid(slot)) { continue; } + QString key = _data.uniforms.keys().at(i); + std::string uniformName = key.toLocal8Bit().data(); QJsonValue value = _data.uniforms[key]; if (value.isDouble()) { float v = value.toDouble(); - _uniforms.push_back([=](gpu::Batch& batch) { - batch._glUniform1f(slot, v); - }); + _uniforms.push_back([=](gpu::Batch& batch) { batch._glUniform1f(slot, v); }); } else if (value.isArray()) { auto valueArray = value.toArray(); switch (valueArray.size()) { @@ -368,17 +350,13 @@ void Procedural::setupUniforms(bool transparent) { case 1: { float v = valueArray[0].toDouble(); - _uniforms.push_back([=](gpu::Batch& batch) { - batch._glUniform1f(slot, v); - }); + _uniforms.push_back([=](gpu::Batch& batch) { batch._glUniform1f(slot, v); }); break; } case 2: { glm::vec2 v{ valueArray[0].toDouble(), valueArray[1].toDouble() }; - _uniforms.push_back([=](gpu::Batch& batch) { - batch._glUniform2f(slot, v.x, v.y); - }); + _uniforms.push_back([=](gpu::Batch& batch) { batch._glUniform2f(slot, v.x, v.y); }); break; } @@ -388,9 +366,7 @@ void Procedural::setupUniforms(bool transparent) { valueArray[1].toDouble(), valueArray[2].toDouble(), }; - _uniforms.push_back([=](gpu::Batch& batch) { - batch._glUniform3f(slot, v.x, v.y, v.z); - }); + _uniforms.push_back([=](gpu::Batch& batch) { batch._glUniform3f(slot, v.x, v.y, v.z); }); break; } @@ -402,26 +378,22 @@ void Procedural::setupUniforms(bool transparent) { valueArray[2].toDouble(), valueArray[3].toDouble(), }; - _uniforms.push_back([=](gpu::Batch& batch) { - batch._glUniform4f(slot, v.x, v.y, v.z, v.w); - }); + _uniforms.push_back([=](gpu::Batch& batch) { batch._glUniform4f(slot, v.x, v.y, v.z, v.w); }); break; } } } } - auto uniformSlots = transparent ? _standardTransparentUniformSlots : _standardOpaqueUniformSlots; - - if (gpu::Shader::INVALID_LOCATION != uniformSlots[TIME]) { + if (uniformSlots.isValid(procedural::slot::uniform::Time)) { _uniforms.push_back([=](gpu::Batch& batch) { // Minimize floating point error by doing an integer division to milliseconds, before the floating point division to seconds float time = (float)((usecTimestampNow() - _start) / USECS_PER_MSEC) / MSECS_PER_SECOND; - batch._glUniform(uniformSlots[TIME], time); + batch._glUniform(procedural::slot::uniform::Time, time); }); } - if (gpu::Shader::INVALID_LOCATION != uniformSlots[DATE]) { + if (uniformSlots.isValid(procedural::slot::uniform::Date)) { _uniforms.push_back([=](gpu::Batch& batch) { QDateTime now = QDateTime::currentDateTimeUtc(); QDate date = now.date(); @@ -434,41 +406,37 @@ void Procedural::setupUniforms(bool transparent) { v.z = date.day(); float fractSeconds = (time.msec() / 1000.0f); v.w = (time.hour() * 3600) + (time.minute() * 60) + time.second() + fractSeconds; - batch._glUniform(uniformSlots[DATE], v); + batch._glUniform(procedural::slot::uniform::Date, v); }); } - if (gpu::Shader::INVALID_LOCATION != uniformSlots[FRAME_COUNT]) { - _uniforms.push_back([=](gpu::Batch& batch) { - batch._glUniform(uniformSlots[FRAME_COUNT], ++_frameCount); - }); + if (uniformSlots.isValid(procedural::slot::uniform::FrameCount)) { + _uniforms.push_back([=](gpu::Batch& batch) { batch._glUniform(procedural::slot::uniform::FrameCount, ++_frameCount); }); } - if (gpu::Shader::INVALID_LOCATION != uniformSlots[SCALE]) { + if (uniformSlots.isValid(procedural::slot::uniform::Scale)) { // FIXME move into the 'set once' section, since this doesn't change over time - _uniforms.push_back([=](gpu::Batch& batch) { - batch._glUniform(uniformSlots[SCALE], _entityDimensions); - }); + _uniforms.push_back([=](gpu::Batch& batch) { batch._glUniform(procedural::slot::uniform::Scale, _entityDimensions); }); } - if (gpu::Shader::INVALID_LOCATION != uniformSlots[ORIENTATION]) { + if (uniformSlots.isValid(procedural::slot::uniform::Orientation)) { // FIXME move into the 'set once' section, since this doesn't change over time - _uniforms.push_back([=](gpu::Batch& batch) { - batch._glUniform(uniformSlots[ORIENTATION], _entityOrientation); - }); + _uniforms.push_back( + [=](gpu::Batch& batch) { batch._glUniform(procedural::slot::uniform::Orientation, _entityOrientation); }); } - if (gpu::Shader::INVALID_LOCATION != uniformSlots[POSITION]) { + if (uniformSlots.isValid(procedural::slot::uniform::Position)) { // FIXME move into the 'set once' section, since this doesn't change over time - _uniforms.push_back([=](gpu::Batch& batch) { - batch._glUniform(uniformSlots[POSITION], _entityPosition); - }); + _uniforms.push_back( + [=](gpu::Batch& batch) { batch._glUniform(procedural::slot::uniform::Orientation, _entityPosition); }); } } void Procedural::setupChannels(bool shouldCreate, bool transparent) { - auto uniformSlots = transparent ? _standardTransparentUniformSlots : _standardOpaqueUniformSlots; - if (gpu::Shader::INVALID_LOCATION != uniformSlots[CHANNEL_RESOLUTION]) { + auto& pipeline = transparent ? _transparentShader : _opaqueShader; + const auto& uniformSlots = pipeline->getUniforms(); + + if (uniformSlots.isValid(procedural::slot::uniform::ChannelResolution)) { if (!shouldCreate) { // Instead of modifying the last element, just remove and recreate it. _uniforms.pop_back(); @@ -480,7 +448,8 @@ void Procedural::setupChannels(bool shouldCreate, bool transparent) { channelSizes[i] = vec3(_channels[i]->getWidth(), _channels[i]->getHeight(), 1.0); } } - batch._glUniform3fv(uniformSlots[CHANNEL_RESOLUTION], MAX_PROCEDURAL_TEXTURE_CHANNELS, &channelSizes[0].x); + batch._glUniform3fv(procedural::slot::uniform::ChannelResolution, MAX_PROCEDURAL_TEXTURE_CHANNELS, + &channelSizes[0].x); }); } } diff --git a/libraries/procedural/src/procedural/Procedural.h b/libraries/procedural/src/procedural/Procedural.h index 1d3b0b3b5a..973b323f60 100644 --- a/libraries/procedural/src/procedural/Procedural.h +++ b/libraries/procedural/src/procedural/Procedural.h @@ -64,23 +64,13 @@ public: void setIsFading(bool isFading) { _isFading = isFading; } void setDoesFade(bool doesFade) { _doesFade = doesFade; } - std::string _vertexSource; - std::string _opaquefragmentSource; - std::string _transparentfragmentSource; + gpu::Shader::Source _vertexSource; + gpu::Shader::Source _opaquefragmentSource; + gpu::Shader::Source _transparentfragmentSource; gpu::StatePointer _opaqueState { std::make_shared() }; gpu::StatePointer _transparentState { std::make_shared() }; - enum StandardUniforms { - DATE, - TIME, - FRAME_COUNT, - SCALE, - POSITION, - ORIENTATION, - CHANNEL_RESOLUTION, - NUM_STANDARD_UNIFORMS - }; protected: // Procedural metadata @@ -102,8 +92,6 @@ protected: // Rendering objects UniformLambdas _uniforms; - int32_t _standardOpaqueUniformSlots[NUM_STANDARD_UNIFORMS]; - int32_t _standardTransparentUniformSlots[NUM_STANDARD_UNIFORMS]; NetworkTexturePointer _channels[MAX_PROCEDURAL_TEXTURE_CHANNELS]; gpu::PipelinePointer _opaquePipeline; gpu::PipelinePointer _transparentPipeline; diff --git a/libraries/procedural/src/procedural/ProceduralCommon.slf b/libraries/procedural/src/procedural/ProceduralCommon.slf deleted file mode 100644 index de226e6dae..0000000000 --- a/libraries/procedural/src/procedural/ProceduralCommon.slf +++ /dev/null @@ -1,52 +0,0 @@ -<@include gpu/Config.slh@> -// Generated on <$_SCRIBE_DATE$> -// -// Created by Bradley Austin Davis on 2015/09/05 -// Copyright 2013-2015 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -<@include gpu/Transform.slh@> -<@include gpu/Noise.slh@> - -<$declareStandardCameraTransform()$> - -#define PROCEDURAL 1 - -//PROCEDURAL_VERSION - -#ifdef PROCEDURAL_V1 - -// shader playback time (in seconds) -uniform float iGlobalTime; -// the dimensions of the object being rendered -uniform vec3 iWorldScale; - -#else - -// Unimplemented uniforms -// Resolution doesn't make sense in the VR context -const vec3 iResolution = vec3(1.0); -// Mouse functions not enabled currently -const vec4 iMouse = vec4(0.0); -// No support for audio input -const float iSampleRate = 1.0; -// No support for video input -const vec4 iChannelTime = vec4(0.0); - - -uniform float iGlobalTime; // shader playback time (in seconds) -uniform vec4 iDate; -uniform int iFrameCount; -uniform vec3 iWorldPosition; // the position of the object being rendered -uniform vec3 iWorldScale; // the dimensions of the object being rendered -uniform mat3 iWorldOrientation; // the orientation of the object being rendered -uniform vec3 iChannelResolution[4]; -uniform sampler2D iChannel0; -uniform sampler2D iChannel1; -uniform sampler2D iChannel2; -uniform sampler2D iChannel3; - -#endif \ No newline at end of file diff --git a/libraries/procedural/src/procedural/ProceduralCommon.slh b/libraries/procedural/src/procedural/ProceduralCommon.slh new file mode 100644 index 0000000000..c36f2da1d3 --- /dev/null +++ b/libraries/procedural/src/procedural/ProceduralCommon.slh @@ -0,0 +1,56 @@ +<@include gpu/Config.slh@> +// Generated on <$_SCRIBE_DATE$> +// +// Created by Bradley Austin Davis on 2015/09/05 +// Copyright 2013-2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +<@include gpu/Transform.slh@> +<@include gpu/Noise.slh@> +<@include procedural/ShaderConstants.h@> + +<$declareStandardCameraTransform()$> + +#define PROCEDURAL 1 + +//PROCEDURAL_VERSION + +#ifdef PROCEDURAL_V1 + +// shader playback time (in seconds) +layout(location=PROCEDURAL_UNIFORM_TIME) uniform float iGlobalTime; +// the dimensions of the object being rendered +layout(location=PROCEDURAL_UNIFORM_SCALE) uniform vec3 iWorldScale; + +#else + +// Unimplemented uniforms +// Resolution doesn't make sense in the VR context +const vec3 iResolution = vec3(1.0); +// Mouse functions not enabled currently +const vec4 iMouse = vec4(0.0); +// No support for audio input +const float iSampleRate = 1.0; +// No support for video input +const vec4 iChannelTime = vec4(0.0); + + +layout(location=PROCEDURAL_UNIFORM_TIME) uniform float iGlobalTime; // shader playback time (in seconds) +layout(location=PROCEDURAL_UNIFORM_DATE) uniform vec4 iDate; +layout(location=PROCEDURAL_UNIFORM_FRAME_COUNT) uniform int iFrameCount; +layout(location=PROCEDURAL_UNIFORM_POSITION) uniform vec3 iWorldPosition; // the position of the object being rendered +layout(location=PROCEDURAL_UNIFORM_SCALE) uniform vec3 iWorldScale; // the dimensions of the object being rendered +layout(location=PROCEDURAL_UNIFORM_ORIENTATION) uniform mat3 iWorldOrientation; // the orientation of the object being rendered +layout(location=PROCEDURAL_UNIFORM_CHANNEL_RESOLUTION) uniform vec3 iChannelResolution[4]; +layout(binding=PROCEDURAL_TEXTURE_CHANNEL0) uniform sampler2D iChannel0; +layout(binding=PROCEDURAL_TEXTURE_CHANNEL1) uniform sampler2D iChannel1; +layout(binding=PROCEDURAL_TEXTURE_CHANNEL2) uniform sampler2D iChannel2; +layout(binding=PROCEDURAL_TEXTURE_CHANNEL3) uniform sampler2D iChannel3; + +#endif + +// hack comment for extra whitespace + diff --git a/libraries/procedural/src/procedural/ProceduralSkybox.cpp b/libraries/procedural/src/procedural/ProceduralSkybox.cpp index 26a90e1894..0addb57fcf 100644 --- a/libraries/procedural/src/procedural/ProceduralSkybox.cpp +++ b/libraries/procedural/src/procedural/ProceduralSkybox.cpp @@ -18,8 +18,8 @@ #include ProceduralSkybox::ProceduralSkybox() : graphics::Skybox() { - _procedural._vertexSource = gpu::Shader::getVertexShaderSource(shader::graphics::vertex::skybox).getCode(); - _procedural._opaquefragmentSource = gpu::Shader::getFragmentShaderSource(shader::graphics::fragment::skybox).getCode(); + _procedural._vertexSource = gpu::Shader::createVertex(shader::graphics::vertex::skybox)->getSource(); + _procedural._opaquefragmentSource = gpu::Shader::createPixel(shader::procedural::fragment::proceduralSkybox)->getSource(); // Adjust the pipeline state for background using the stencil test _procedural.setDoesFade(false); // Must match PrepareStencil::STENCIL_BACKGROUND @@ -60,9 +60,7 @@ void ProceduralSkybox::render(gpu::Batch& batch, const ViewFrustum& viewFrustum, auto& procedural = skybox._procedural; procedural.prepare(batch, glm::vec3(0), glm::vec3(1), glm::quat()); - auto textureSlot = procedural.getOpaqueShader()->getTextures().findLocation("cubeMap"); - auto bufferSlot = procedural.getOpaqueShader()->getUniformBuffers().findLocation("skyboxBuffer"); - skybox.prepare(batch, textureSlot, bufferSlot); + skybox.prepare(batch); batch.draw(gpu::TRIANGLE_STRIP, 4); } diff --git a/libraries/procedural/src/procedural/ShaderConstants.h b/libraries/procedural/src/procedural/ShaderConstants.h new file mode 100644 index 0000000000..1995996c97 --- /dev/null +++ b/libraries/procedural/src/procedural/ShaderConstants.h @@ -0,0 +1,72 @@ +// + +// <@if not PROCEDURAL_SHADER_CONSTANTS_H@> +// <@def PROCEDURAL_SHADER_CONSTANTS_H@> + +// Hack comment to absorb the extra '//' scribe prepends + +#ifndef PROCEDURAL_SHADER_CONSTANTS_H +#define PROCEDURAL_SHADER_CONSTANTS_H + +// Polyvox +#define PROCEDURAL_UNIFORM_TIME 200 +#define PROCEDURAL_UNIFORM_DATE 201 +#define PROCEDURAL_UNIFORM_FRAME_COUNT 202 +#define PROCEDURAL_UNIFORM_POSITION 203 +#define PROCEDURAL_UNIFORM_SCALE 204 +#define PROCEDURAL_UNIFORM_ORIENTATION 205 +// Additional space because orientation will take up 3-4 locations, being a matrix +#define PROCEDURAL_UNIFORM_CHANNEL_RESOLUTION 209 +#define PROCEDURAL_UNIFORM_CUSTOM 220 + +#define PROCEDURAL_TEXTURE_CHANNEL0 0 +#define PROCEDURAL_TEXTURE_CHANNEL1 1 +#define PROCEDURAL_TEXTURE_CHANNEL2 2 +#define PROCEDURAL_TEXTURE_CHANNEL3 3 + +// +// Hack Comment + +#endif // PROCEDURAL_SHADER_CONSTANTS_H + +// <@if 1@> +// Trigger Scribe include +// <@endif@> + +// <@endif@> + +// Hack Comment diff --git a/libraries/procedural/src/procedural/proceduralSkybox.slf b/libraries/procedural/src/procedural/proceduralSkybox.slf new file mode 100644 index 0000000000..9960698ff0 --- /dev/null +++ b/libraries/procedural/src/procedural/proceduralSkybox.slf @@ -0,0 +1,45 @@ +<@include gpu/Config.slh@> +<$VERSION_HEADER$> +// Generated on <$_SCRIBE_DATE$> +// proceduralSkybox.frag +// fragment shader +// +// Created by Sam Gateau on 5/5/2015. +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +<@include graphics/ShaderConstants.h@> + +layout(binding=GRAPHICS_TEXTURE_SKYBOX) uniform samplerCube cubeMap; + +struct Skybox { + vec4 color; +}; + +layout(binding=GRAPHICS_BUFFER_SKYBOX_PARAMS) uniform skyboxBuffer { + Skybox skybox; +}; + +layout(location=0) in vec3 _normal; +layout(location=0) out vec4 _fragColor; + +<@include procedural/ProceduralCommon.slh@> + +#line 1001 +//PROCEDURAL_BLOCK + +#line 2033 +void main(void) { + vec3 color = getSkyboxColor(); + // Protect from NaNs and negative values + color = mix(color, vec3(0), isnan(color)); + color = max(color, vec3(0)); + // Procedural Shaders are expected to be Gamma corrected so let's bring back the RGB in linear space for the rest of the pipeline + color = pow(color, vec3(2.2)); + _fragColor = vec4(color, 0.0); + + // FIXME: scribe does not yet scrub out else statements + return; +} diff --git a/libraries/render-utils/src/AmbientOcclusionEffect.cpp b/libraries/render-utils/src/AmbientOcclusionEffect.cpp index aca71636ff..ced1570f37 100644 --- a/libraries/render-utils/src/AmbientOcclusionEffect.cpp +++ b/libraries/render-utils/src/AmbientOcclusionEffect.cpp @@ -19,9 +19,11 @@ #include #include #include +#include #include "RenderUtilsLogging.h" +#include "render-utils/ShaderConstants.h" #include "DeferredLightingEffect.h" #include "TextureCache.h" #include "FramebufferCache.h" @@ -162,12 +164,6 @@ public: } }; -const int AmbientOcclusionEffect_FrameTransformSlot = 0; -const int AmbientOcclusionEffect_ParamsSlot = 1; -const int AmbientOcclusionEffect_CameraCorrectionSlot = 2; -const int AmbientOcclusionEffect_LinearDepthMapSlot = 0; -const int AmbientOcclusionEffect_OcclusionMapSlot = 0; - AmbientOcclusionEffect::AmbientOcclusionEffect() { } @@ -258,15 +254,6 @@ void AmbientOcclusionEffect::configure(const Config& config) { const gpu::PipelinePointer& AmbientOcclusionEffect::getOcclusionPipeline() { if (!_occlusionPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::ssao_makeOcclusion); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), AmbientOcclusionEffect_FrameTransformSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("ambientOcclusionParamsBuffer"), AmbientOcclusionEffect_ParamsSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("cameraCorrectionBuffer"), AmbientOcclusionEffect_CameraCorrectionSlot)); - - slotBindings.insert(gpu::Shader::Binding(std::string("pyramidMap"), AmbientOcclusionEffect_LinearDepthMapSlot)); - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setColorWriteMask(true, true, true, false); @@ -281,14 +268,6 @@ const gpu::PipelinePointer& AmbientOcclusionEffect::getOcclusionPipeline() { const gpu::PipelinePointer& AmbientOcclusionEffect::getHBlurPipeline() { if (!_hBlurPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::ssao_makeHorizontalBlur); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("ambientOcclusionFrameTransformBuffer"), AmbientOcclusionEffect_FrameTransformSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("cameraCorrectionBuffer"), AmbientOcclusionEffect_CameraCorrectionSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("ambientOcclusionParamsBuffer"), AmbientOcclusionEffect_ParamsSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("occlusionMap"), AmbientOcclusionEffect_OcclusionMapSlot)); - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setColorWriteMask(true, true, true, false); @@ -302,15 +281,6 @@ const gpu::PipelinePointer& AmbientOcclusionEffect::getHBlurPipeline() { const gpu::PipelinePointer& AmbientOcclusionEffect::getVBlurPipeline() { if (!_vBlurPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::ssao_makeVerticalBlur); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("ambientOcclusionFrameTransformBuffer"), AmbientOcclusionEffect_FrameTransformSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("cameraCorrectionBuffer"), AmbientOcclusionEffect_CameraCorrectionSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("ambientOcclusionParamsBuffer"), AmbientOcclusionEffect_ParamsSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("occlusionMap"), AmbientOcclusionEffect_OcclusionMapSlot)); - - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); // Vertical blur write just the final result Occlusion value in the alpha channel @@ -388,8 +358,8 @@ void AmbientOcclusionEffect::run(const render::RenderContextPointer& renderConte model.setScale(glm::vec3(sWidth, tHeight, 1.0f)); batch.setModelTransform(model); - batch.setUniformBuffer(AmbientOcclusionEffect_FrameTransformSlot, frameTransform->getFrameTransformBuffer()); - batch.setUniformBuffer(AmbientOcclusionEffect_ParamsSlot, _parametersBuffer); + batch.setUniformBuffer(render_utils::slot::buffer::DeferredFrameTransform, frameTransform->getFrameTransformBuffer()); + batch.setUniformBuffer(render_utils::slot::buffer::SsaoParams, _parametersBuffer); // We need this with the mips levels @@ -399,7 +369,7 @@ void AmbientOcclusionEffect::run(const render::RenderContextPointer& renderConte batch.setFramebuffer(occlusionFBO); batch.clearColorFramebuffer(gpu::Framebuffer::BUFFER_COLOR0, glm::vec4(1.0f)); batch.setPipeline(occlusionPipeline); - batch.setResourceTexture(AmbientOcclusionEffect_LinearDepthMapSlot, _framebuffer->getLinearDepthTexture()); + batch.setResourceTexture(render_utils::slot::texture::SsaoPyramid, _framebuffer->getLinearDepthTexture()); batch.draw(gpu::TRIANGLE_STRIP, 4); @@ -407,19 +377,19 @@ void AmbientOcclusionEffect::run(const render::RenderContextPointer& renderConte // Blur 1st pass batch.setFramebuffer(occlusionBlurredFBO); batch.setPipeline(firstHBlurPipeline); - batch.setResourceTexture(AmbientOcclusionEffect_OcclusionMapSlot, occlusionFBO->getRenderBuffer(0)); + batch.setResourceTexture(render_utils::slot::texture::SsaoOcclusion, occlusionFBO->getRenderBuffer(0)); batch.draw(gpu::TRIANGLE_STRIP, 4); // Blur 2nd pass batch.setFramebuffer(occlusionFBO); batch.setPipeline(lastVBlurPipeline); - batch.setResourceTexture(AmbientOcclusionEffect_OcclusionMapSlot, occlusionBlurredFBO->getRenderBuffer(0)); + batch.setResourceTexture(render_utils::slot::texture::SsaoOcclusion, occlusionBlurredFBO->getRenderBuffer(0)); batch.draw(gpu::TRIANGLE_STRIP, 4); } - batch.setResourceTexture(AmbientOcclusionEffect_LinearDepthMapSlot, nullptr); - batch.setResourceTexture(AmbientOcclusionEffect_OcclusionMapSlot, nullptr); + batch.setResourceTexture(render_utils::slot::texture::SsaoPyramid, nullptr); + batch.setResourceTexture(render_utils::slot::texture::SsaoOcclusion, nullptr); _gpuTimer->end(batch); }); @@ -447,14 +417,6 @@ void DebugAmbientOcclusion::configure(const Config& config) { const gpu::PipelinePointer& DebugAmbientOcclusion::getDebugPipeline() { if (!_debugPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::ssao_debugOcclusion); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), AmbientOcclusionEffect_FrameTransformSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("ambientOcclusionParamsBuffer"), AmbientOcclusionEffect_ParamsSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("debugAmbientOcclusionBuffer"), 2)); - slotBindings.insert(gpu::Shader::Binding(std::string("pyramidMap"), AmbientOcclusionEffect_LinearDepthMapSlot)); - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setColorWriteMask(true, true, true, false); @@ -517,16 +479,16 @@ void DebugAmbientOcclusion::run(const render::RenderContextPointer& renderContex model.setScale(glm::vec3(sWidth, tHeight, 1.0f)); batch.setModelTransform(model); - batch.setUniformBuffer(AmbientOcclusionEffect_FrameTransformSlot, frameTransform->getFrameTransformBuffer()); - batch.setUniformBuffer(AmbientOcclusionEffect_ParamsSlot, ambientOcclusionUniforms); + batch.setUniformBuffer(render_utils::slot::buffer::DeferredFrameTransform, frameTransform->getFrameTransformBuffer()); + batch.setUniformBuffer(render_utils::slot::buffer::SsaoParams, ambientOcclusionUniforms); batch.setUniformBuffer(2, _parametersBuffer); batch.setPipeline(debugPipeline); - batch.setResourceTexture(AmbientOcclusionEffect_LinearDepthMapSlot, linearDepthTexture); + batch.setResourceTexture(render_utils::slot::texture::SsaoPyramid, linearDepthTexture); batch.draw(gpu::TRIANGLE_STRIP, 4); - batch.setResourceTexture(AmbientOcclusionEffect_LinearDepthMapSlot, nullptr); + batch.setResourceTexture(render_utils::slot::texture::SsaoPyramid, nullptr); }); } diff --git a/libraries/render-utils/src/AntialiasingEffect.cpp b/libraries/render-utils/src/AntialiasingEffect.cpp index 52105f1390..2b17ba3c01 100644 --- a/libraries/render-utils/src/AntialiasingEffect.cpp +++ b/libraries/render-utils/src/AntialiasingEffect.cpp @@ -17,7 +17,9 @@ #include #include #include +#include +#include "render-utils/ShaderConstants.h" #include "StencilMaskPass.h" #include "TextureCache.h" #include "DependencyManager.h" @@ -25,6 +27,18 @@ #include "GeometryCache.h" #include "FramebufferCache.h" + +namespace ru { + using render_utils::slot::uniform::Uniform; + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; +} + +namespace gr { + using graphics::slot::texture::Texture; + using graphics::slot::buffer::Buffer; +} + #define ANTIALIASING_USE_TAA 1 #if !ANTIALIASING_USE_TAA @@ -66,11 +80,6 @@ const gpu::PipelinePointer& Antialiasing::getAntialiasingPipeline(RenderArgs* ar auto ps = fxaa_frag::getShader(); gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("colorTexture"), 0)); - - gpu::Shader::makeProgram(*program, slotBindings); - _texcoordOffsetLoc = program->getUniforms().findLocation("texcoordOffset"); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); @@ -90,14 +99,7 @@ const gpu::PipelinePointer& Antialiasing::getBlendPipeline() { auto vs = fxaa_vert::getShader(); auto ps = fxaa_blend_frag::getShader(); gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("colorTexture"), 0)); - - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); - state->setDepthTest(false, false, gpu::LESS_EQUAL); PrepareStencil::testNoAA(*state); @@ -172,17 +174,6 @@ void Antialiasing::run(const render::RenderContextPointer& renderContext, const } #else -const int AntialiasingPass_ParamsSlot = 0; -const int AntialiasingPass_FrameTransformSlot = 1; - -const int AntialiasingPass_HistoryMapSlot = 0; -const int AntialiasingPass_SourceMapSlot = 1; -const int AntialiasingPass_VelocityMapSlot = 2; -const int AntialiasingPass_DepthMapSlot = 3; - -const int AntialiasingPass_NextMapSlot = 4; - - Antialiasing::Antialiasing(bool isSharpenEnabled) : _isSharpenEnabled{ isSharpenEnabled } { } @@ -197,30 +188,12 @@ const gpu::PipelinePointer& Antialiasing::getAntialiasingPipeline(const render:: if (!_antialiasingPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::taa); - - gpu::Shader::BindingSet slotBindings; - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); PrepareStencil::testNoAA(*state); // Good to go add the brand new pipeline _antialiasingPipeline = gpu::Pipeline::create(program, state); - - gpu::doInBatch("SurfaceGeometryPass::CurvaturePipeline", renderContext->args->_context, [program](gpu::Batch& batch) { - batch.runLambda([program]() { - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("taaParamsBuffer"), AntialiasingPass_ParamsSlot)); - - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), AntialiasingPass_FrameTransformSlot)); - - slotBindings.insert(gpu::Shader::Binding(std::string("historyMap"), AntialiasingPass_HistoryMapSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("sourceMap"), AntialiasingPass_SourceMapSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("velocityMap"), AntialiasingPass_VelocityMapSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("depthMap"), AntialiasingPass_DepthMapSlot)); - gpu::Shader::makeProgram(*program, slotBindings); - }); - }); } return _antialiasingPipeline; @@ -229,20 +202,10 @@ const gpu::PipelinePointer& Antialiasing::getAntialiasingPipeline(const render:: const gpu::PipelinePointer& Antialiasing::getBlendPipeline() { if (!_blendPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::fxaa_blend); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("colorTexture"), AntialiasingPass_NextMapSlot)); - - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); PrepareStencil::testNoAA(*state); - - // Good to go add the brand new pipeline _blendPipeline = gpu::Pipeline::create(program, state); - _sharpenLoc = program->getUniforms().findLocation("sharpenIntensity"); - } return _blendPipeline; } @@ -250,20 +213,6 @@ const gpu::PipelinePointer& Antialiasing::getBlendPipeline() { const gpu::PipelinePointer& Antialiasing::getDebugBlendPipeline() { if (!_debugBlendPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::taa_blend); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("taaParamsBuffer"), AntialiasingPass_ParamsSlot)); - - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), AntialiasingPass_FrameTransformSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("nextMap"), AntialiasingPass_NextMapSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("historyMap"), AntialiasingPass_HistoryMapSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("sourceMap"), AntialiasingPass_SourceMapSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("velocityMap"), AntialiasingPass_VelocityMapSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("depthMap"), AntialiasingPass_DepthMapSlot)); - - - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); PrepareStencil::testNoAA(*state); @@ -340,41 +289,43 @@ void Antialiasing::run(const render::RenderContextPointer& renderContext, const // TAA step getAntialiasingPipeline(renderContext); - batch.setResourceFramebufferSwapChainTexture(AntialiasingPass_HistoryMapSlot, _antialiasingBuffers, 0); - batch.setResourceTexture(AntialiasingPass_SourceMapSlot, sourceBuffer->getRenderBuffer(0)); - batch.setResourceTexture(AntialiasingPass_VelocityMapSlot, velocityBuffer->getVelocityTexture()); + batch.setResourceFramebufferSwapChainTexture(ru::Texture::TaaHistory, _antialiasingBuffers, 0); + batch.setResourceTexture(ru::Texture::TaaSource, sourceBuffer->getRenderBuffer(0)); + batch.setResourceTexture(ru::Texture::TaaVelocity, velocityBuffer->getVelocityTexture()); // This is only used during debug - batch.setResourceTexture(AntialiasingPass_DepthMapSlot, linearDepthBuffer->getLinearDepthTexture()); + batch.setResourceTexture(ru::Texture::TaaDepth, linearDepthBuffer->getLinearDepthTexture()); - batch.setUniformBuffer(AntialiasingPass_ParamsSlot, _params); - batch.setUniformBuffer(AntialiasingPass_FrameTransformSlot, deferredFrameTransform->getFrameTransformBuffer()); + batch.setUniformBuffer(ru::Buffer::TaaParams, _params); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, deferredFrameTransform->getFrameTransformBuffer()); batch.setFramebufferSwapChain(_antialiasingBuffers, 1); batch.setPipeline(getAntialiasingPipeline(renderContext)); batch.draw(gpu::TRIANGLE_STRIP, 4); // Blend step - batch.setResourceTexture(AntialiasingPass_SourceMapSlot, nullptr); + batch.setResourceTexture(ru::Texture::TaaSource, nullptr); batch.setFramebuffer(sourceBuffer); if (_params->isDebug()) { batch.setPipeline(getDebugBlendPipeline()); + batch.setResourceFramebufferSwapChainTexture(ru::Texture::TaaNext, _antialiasingBuffers, 1); } else { batch.setPipeline(getBlendPipeline()); + // Must match the bindg point in the fxaa_blend.slf shader + batch.setResourceFramebufferSwapChainTexture(0, _antialiasingBuffers, 1); // Disable sharpen if FXAA - batch._glUniform1f(_sharpenLoc, _sharpen * _params.get().regionInfo.z); + batch._glUniform1f(ru::Uniform::TaaSharpenIntensity, _sharpen * _params.get().regionInfo.z); } - batch.setResourceFramebufferSwapChainTexture(AntialiasingPass_NextMapSlot, _antialiasingBuffers, 1); batch.draw(gpu::TRIANGLE_STRIP, 4); batch.advance(_antialiasingBuffers); - batch.setUniformBuffer(AntialiasingPass_ParamsSlot, nullptr); - batch.setUniformBuffer(AntialiasingPass_FrameTransformSlot, nullptr); + batch.setUniformBuffer(ru::Buffer::TaaParams, nullptr); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, nullptr); - batch.setResourceTexture(AntialiasingPass_DepthMapSlot, nullptr); - batch.setResourceTexture(AntialiasingPass_HistoryMapSlot, nullptr); - batch.setResourceTexture(AntialiasingPass_VelocityMapSlot, nullptr); - batch.setResourceTexture(AntialiasingPass_NextMapSlot, nullptr); + batch.setResourceTexture(ru::Texture::TaaDepth, nullptr); + batch.setResourceTexture(ru::Texture::TaaHistory, nullptr); + batch.setResourceTexture(ru::Texture::TaaVelocity, nullptr); + batch.setResourceTexture(ru::Texture::TaaNext, nullptr); }); } @@ -504,5 +455,4 @@ void JitterSample::run(const render::RenderContextPointer& renderContext, Output } } - #endif diff --git a/libraries/render-utils/src/AntialiasingEffect.h b/libraries/render-utils/src/AntialiasingEffect.h index ffce84495e..61da352154 100644 --- a/libraries/render-utils/src/AntialiasingEffect.h +++ b/libraries/render-utils/src/AntialiasingEffect.h @@ -193,7 +193,6 @@ private: TAAParamsBuffer _params; float _sharpen{ 0.15f }; - int _sharpenLoc{ -1 }; bool _isSharpenEnabled{ true }; }; diff --git a/libraries/render-utils/src/BloomApply.slf b/libraries/render-utils/src/BloomApply.slf index 28415643a0..576a71c7c4 100644 --- a/libraries/render-utils/src/BloomApply.slf +++ b/libraries/render-utils/src/BloomApply.slf @@ -1,6 +1,6 @@ <@include gpu/Config.slh@> <$VERSION_HEADER$> -// BloomApply.slf +// BloomApply.frag // Mix the three gaussian blur textures. // // Created by Olivier Prat on 10/09/2017 @@ -11,16 +11,16 @@ // <@include BloomApply.shared.slh@> -uniform sampler2D blurMap0; -uniform sampler2D blurMap1; -uniform sampler2D blurMap2; +layout(binding=0) uniform sampler2D blurMap0; +layout(binding=1) uniform sampler2D blurMap1; +layout(binding=2) uniform sampler2D blurMap2; -layout(std140) uniform parametersBuffer { +layout(std140, location=0) uniform parametersBuffer { Parameters parameters; }; -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; void main(void) { vec4 blur0 = texture(blurMap0, varTexCoord0); diff --git a/libraries/render-utils/src/BloomEffect.cpp b/libraries/render-utils/src/BloomEffect.cpp index 604919ad2d..2a9a9b3850 100644 --- a/libraries/render-utils/src/BloomEffect.cpp +++ b/libraries/render-utils/src/BloomEffect.cpp @@ -16,6 +16,7 @@ #include #include +#include "render-utils/ShaderConstants.h" #define BLOOM_BLUR_LEVEL_COUNT 3 @@ -59,17 +60,8 @@ void BloomThreshold::run(const render::RenderContextPointer& renderContext, cons _parameters.edit()._deltaUV = { 1.0f / bufferSize.x, 1.0f / bufferSize.y }; } - static const int COLOR_MAP_SLOT = 0; - static const int PARAMETERS_SLOT = 1; - if (!_pipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::bloomThreshold); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding("colorMap", COLOR_MAP_SLOT)); - slotBindings.insert(gpu::Shader::Binding("parametersBuffer", PARAMETERS_SLOT)); - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); _pipeline = gpu::Pipeline::create(program, state); } @@ -86,8 +78,8 @@ void BloomThreshold::run(const render::RenderContextPointer& renderContext, cons batch.setPipeline(_pipeline); batch.setFramebuffer(_outputBuffer); - batch.setResourceTexture(COLOR_MAP_SLOT, inputBuffer); - batch.setUniformBuffer(PARAMETERS_SLOT, _parameters); + batch.setResourceTexture(render_utils::slot::texture::BloomColor, inputBuffer); + batch.setUniformBuffer(render_utils::slot::buffer::BloomParams, _parameters); batch.draw(gpu::TRIANGLE_STRIP, 4); }); @@ -121,14 +113,6 @@ void BloomApply::run(const render::RenderContextPointer& renderContext, const In if (!_pipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::bloomApply); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding("blurMap0", BLUR0_SLOT)); - slotBindings.insert(gpu::Shader::Binding("blurMap1", BLUR1_SLOT)); - slotBindings.insert(gpu::Shader::Binding("blurMap2", BLUR2_SLOT)); - slotBindings.insert(gpu::Shader::Binding("parametersBuffer", PARAMETERS_SLOT)); - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(gpu::State::DepthTest(false, false)); _pipeline = gpu::Pipeline::create(program, state); @@ -155,7 +139,7 @@ void BloomApply::run(const render::RenderContextPointer& renderContext, const In batch.setResourceTexture(BLUR0_SLOT, blur0FB->getRenderBuffer(0)); batch.setResourceTexture(BLUR1_SLOT, blur1FB->getRenderBuffer(0)); batch.setResourceTexture(BLUR2_SLOT, blur2FB->getRenderBuffer(0)); - batch.setUniformBuffer(PARAMETERS_SLOT, _parameters); + batch.setUniformBuffer(PARAMETERS_SLOT, _parameters); batch.draw(gpu::TRIANGLE_STRIP, 4); }); } @@ -173,9 +157,6 @@ void BloomDraw::run(const render::RenderContextPointer& renderContext, const Inp if (!_pipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::gpu::program::drawTransformUnitQuadTextureOpaque); - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(gpu::State::DepthTest(false, false)); state->setBlendFunction(true, gpu::State::ONE, gpu::State::BLEND_OP_ADD, gpu::State::ONE, @@ -229,11 +210,6 @@ void DebugBloom::run(const render::RenderContextPointer& renderContext, const In if (!_pipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::gpu::program::drawTextureOpaqueTexcoordRect); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("texcoordRect"), TEXCOORD_RECT_SLOT)); - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(gpu::State::DepthTest(false)); _pipeline = gpu::Pipeline::create(program, state); @@ -307,7 +283,7 @@ float BloomConfig::getIntensity() const { void BloomConfig::setSize(float value) { std::string blurName{ "BloomBlurN" }; auto sigma = 0.5f+value*3.5f; - auto task = static_cast(_task); + auto task = static_cast(_task); for (auto i = 0; i < BLOOM_BLUR_LEVEL_COUNT; i++) { blurName.back() = '0' + i; @@ -317,9 +293,9 @@ void BloomConfig::setSize(float value) { auto gaussianBlurParams = gaussianBlur.getParameters(); gaussianBlurParams->setFilterGaussianTaps(9, sigma); } - auto blurJobIt = task->getJob("BloomApply"); - assert(blurJobIt != task->_jobs.end()); - blurJobIt->getConfiguration()->setProperty("sigma", sigma); + auto blurJobIt = task->getJob("BloomApply"); + assert(blurJobIt != task->_jobs.end()); + blurJobIt->getConfiguration()->setProperty("sigma", sigma); } Bloom::Bloom() { diff --git a/libraries/render-utils/src/BloomThreshold.slf b/libraries/render-utils/src/BloomThreshold.slf index 6eb75fba6e..2756e7aa01 100644 --- a/libraries/render-utils/src/BloomThreshold.slf +++ b/libraries/render-utils/src/BloomThreshold.slf @@ -1,6 +1,6 @@ <@include gpu/Config.slh@> <$VERSION_HEADER$> -// BloomThreshold.slf +// BloomThreshold.frag // Perform a soft threshold on an input texture and downsample to half size in one go. // // Created by Olivier Prat on 09/26/2017 @@ -10,14 +10,15 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // <@include BloomThreshold.shared.slh@> +<@include render-utils/ShaderConstants.h@> -uniform sampler2D colorMap; -layout(std140) uniform parametersBuffer { +layout(binding=RENDER_UTILS_TEXTURE_BLOOM_COLOR) uniform sampler2D colorMap; +layout(std140, location=RENDER_UTILS_BUFFER_BLOOM_PARAMS) uniform parametersBuffer { Parameters parameters; }; -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; void main(void) { vec2 startUv = varTexCoord0; diff --git a/libraries/render-utils/src/CauterizedMeshPartPayload.cpp b/libraries/render-utils/src/CauterizedMeshPartPayload.cpp index a4dc56e696..a310c10136 100644 --- a/libraries/render-utils/src/CauterizedMeshPartPayload.cpp +++ b/libraries/render-utils/src/CauterizedMeshPartPayload.cpp @@ -12,6 +12,7 @@ #include "CauterizedMeshPartPayload.h" #include +#include #include "CauterizedModel.h" @@ -58,7 +59,7 @@ void CauterizedMeshPartPayload::bindTransform(gpu::Batch& batch, RenderArgs::Ren bool useCauterizedMesh = (renderMode != RenderArgs::RenderMode::SHADOW_RENDER_MODE && renderMode != RenderArgs::RenderMode::SECONDARY_CAMERA_RENDER_MODE) && _enableCauterization; if (useCauterizedMesh) { if (_cauterizedClusterBuffer) { - batch.setUniformBuffer(ShapePipeline::Slot::BUFFER::SKINNING, _cauterizedClusterBuffer); + batch.setUniformBuffer(graphics::slot::buffer::Skinning, _cauterizedClusterBuffer); } batch.setModelTransform(_cauterizedTransform); } else { diff --git a/libraries/render-utils/src/DebugDeferredBuffer.cpp b/libraries/render-utils/src/DebugDeferredBuffer.cpp index 4844c821e5..e7268f2799 100644 --- a/libraries/render-utils/src/DebugDeferredBuffer.cpp +++ b/libraries/render-utils/src/DebugDeferredBuffer.cpp @@ -19,6 +19,7 @@ #include #include #include +#include "render-utils/ShaderConstants.h" #include "GeometryCache.h" #include "TextureCache.h" @@ -37,6 +38,7 @@ void DebugDeferredBufferConfig::setMode(int newMode) { emit dirty(); } +#if 0 enum TextureSlot { Albedo = 0, Normal, @@ -61,29 +63,30 @@ enum ParamSlot { ShadowTransform, DebugParametersBuffer }; +#endif -static const std::string DEFAULT_ALBEDO_SHADER { +static const std::string DEFAULT_ALBEDO_SHADER{ "vec4 getFragmentColor() {" " DeferredFragment frag = unpackDeferredFragmentNoPosition(uv);" " return vec4(pow(frag.albedo, vec3(1.0 / 2.2)), 1.0);" " }" }; -static const std::string DEFAULT_METALLIC_SHADER { +static const std::string DEFAULT_METALLIC_SHADER{ "vec4 getFragmentColor() {" " DeferredFragment frag = unpackDeferredFragmentNoPosition(uv);" " return vec4(vec3(pow(frag.metallic, 1.0 / 2.2)), 1.0);" " }" }; -static const std::string DEFAULT_ROUGHNESS_SHADER { +static const std::string DEFAULT_ROUGHNESS_SHADER{ "vec4 getFragmentColor() {" " DeferredFragment frag = unpackDeferredFragmentNoPosition(uv);" " return vec4(vec3(pow(frag.roughness, 1.0 / 2.2)), 1.0);" - // " return vec4(vec3(pow(colorRamp(frag.roughness), vec3(1.0 / 2.2))), 1.0);" + // " return vec4(vec3(pow(colorRamp(frag.roughness), vec3(1.0 / 2.2))), 1.0);" " }" }; -static const std::string DEFAULT_NORMAL_SHADER { +static const std::string DEFAULT_NORMAL_SHADER{ "vec4 getFragmentColor() {" " DeferredFragment frag = unpackDeferredFragmentNoPosition(uv);" " return vec4(vec3(0.5) + (frag.normal * 0.5), 1.0);" @@ -92,8 +95,8 @@ static const std::string DEFAULT_NORMAL_SHADER { static const std::string DEFAULT_OCCLUSION_SHADER{ "vec4 getFragmentColor() {" - // " DeferredFragment frag = unpackDeferredFragmentNoPosition(uv);" - // " return vec4(vec3(pow(frag.obscurance, 1.0 / 2.2)), 1.0);" + // " DeferredFragment frag = unpackDeferredFragmentNoPosition(uv);" + // " return vec4(vec3(pow(frag.obscurance, 1.0 / 2.2)), 1.0);" " return vec4(vec3(pow(texture(specularMap, uv).a, 1.0 / 2.2)), 1.0);" " }" }; @@ -101,7 +104,8 @@ static const std::string DEFAULT_OCCLUSION_SHADER{ static const std::string DEFAULT_EMISSIVE_SHADER{ "vec4 getFragmentColor() {" " DeferredFragment frag = unpackDeferredFragmentNoPosition(uv);" - " return (frag.mode == FRAG_MODE_SHADED ? vec4(pow(texture(specularMap, uv).rgb, vec3(1.0 / 2.2)), 1.0) : vec4(vec3(0.0), 1.0));" + " return (frag.mode == FRAG_MODE_SHADED ? vec4(pow(texture(specularMap, uv).rgb, vec3(1.0 / 2.2)), 1.0) : " + "vec4(vec3(0.0), 1.0));" " }" }; @@ -115,7 +119,8 @@ static const std::string DEFAULT_UNLIT_SHADER{ static const std::string DEFAULT_LIGHTMAP_SHADER{ "vec4 getFragmentColor() {" " DeferredFragment frag = unpackDeferredFragmentNoPosition(uv);" - " return (frag.mode == FRAG_MODE_LIGHTMAPPED ? vec4(pow(texture(specularMap, uv).rgb, vec3(1.0 / 2.2)), 1.0) : vec4(vec3(0.0), 1.0));" + " return (frag.mode == FRAG_MODE_LIGHTMAPPED ? vec4(pow(texture(specularMap, uv).rgb, vec3(1.0 / 2.2)), 1.0) : " + "vec4(vec3(0.0), 1.0));" " }" }; @@ -126,13 +131,13 @@ static const std::string DEFAULT_SCATTERING_SHADER{ " }" }; -static const std::string DEFAULT_DEPTH_SHADER { +static const std::string DEFAULT_DEPTH_SHADER{ "vec4 getFragmentColor() {" " return vec4(vec3(texture(depthMap, uv).x), 1.0);" " }" }; -static const std::string DEFAULT_LIGHTING_SHADER { +static const std::string DEFAULT_LIGHTING_SHADER{ "vec4 getFragmentColor() {" " return vec4(pow(texture(lightingMap, uv).xyz, vec3(1.0 / 2.2)), 1.0);" " }" @@ -171,7 +176,7 @@ static const std::string DEFAULT_SHADOW_CASCADE_SHADER{ "}" }; -static const std::string DEFAULT_LINEAR_DEPTH_SHADER { +static const std::string DEFAULT_LINEAR_DEPTH_SHADER{ "vec4 getFragmentColor() {" " return vec4(vec3(1.0 - texture(linearDepthMap, uv).x * 0.01), 1.0);" "}" @@ -192,7 +197,7 @@ static const std::string DEFAULT_HALF_NORMAL_SHADER{ static const std::string DEFAULT_CURVATURE_SHADER{ "vec4 getFragmentColor() {" " return vec4(pow(vec3(texture(curvatureMap, uv).a), vec3(1.0 / 2.2)), 1.0);" - // " return vec4(pow(vec3(texture(curvatureMap, uv).xyz), vec3(1.0 / 2.2)), 1.0);" + // " return vec4(pow(vec3(texture(curvatureMap, uv).xyz), vec3(1.0 / 2.2)), 1.0);" //" return vec4(vec3(1.0 - textureLod(pyramidMap, uv, 3).x * 0.01), 1.0);" " }" }; @@ -200,7 +205,7 @@ static const std::string DEFAULT_CURVATURE_SHADER{ static const std::string DEFAULT_NORMAL_CURVATURE_SHADER{ "vec4 getFragmentColor() {" //" return vec4(pow(vec3(texture(curvatureMap, uv).a), vec3(1.0 / 2.2)), 1.0);" - " return vec4(vec3(texture(curvatureMap, uv).xyz), 1.0);" + " return vec4(vec3(texture(curvatureMap, uv).xyz), 1.0);" //" return vec4(vec3(1.0 - textureLod(pyramidMap, uv, 3).x * 0.01), 1.0);" " }" }; @@ -236,7 +241,7 @@ static const std::string DEFAULT_CURVATURE_OCCLUSION_SHADER{ static const std::string DEFAULT_DEBUG_SCATTERING_SHADER{ "vec4 getFragmentColor() {" " return vec4(pow(vec3(texture(scatteringMap, uv).xyz), vec3(1.0 / 2.2)), 1.0);" - // " return vec4(vec3(texture(scatteringMap, uv).xyz), 1.0);" + // " return vec4(vec3(texture(scatteringMap, uv).xyz), 1.0);" " }" }; @@ -259,7 +264,7 @@ static const std::string DEFAULT_VELOCITY_SHADER{ " }" }; -static const std::string DEFAULT_CUSTOM_SHADER { +static const std::string DEFAULT_CUSTOM_SHADER{ "vec4 getFragmentColor() {" " return vec4(1.0, 0.0, 0.0, 1.0);" " }" @@ -270,12 +275,11 @@ static std::string getFileContent(std::string fileName, std::string defaultConte if (customFile.open(QIODevice::ReadOnly)) { return customFile.readAll().toStdString(); } - qWarning() << "DebugDeferredBuffer::getFileContent(): Could not open" - << QString::fromStdString(fileName); + qWarning() << "DebugDeferredBuffer::getFileContent(): Could not open" << QString::fromStdString(fileName); return defaultContent; } -#include // TODO REMOVE: Temporary until UI +#include // TODO REMOVE: Temporary until UI DebugDeferredBuffer::DebugDeferredBuffer() { // TODO REMOVE: Temporary until UI static const auto DESKTOP_PATH = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); @@ -361,60 +365,35 @@ bool DebugDeferredBuffer::pipelineNeedsUpdate(Mode mode, std::string customFile) if (mode != CustomMode) { return !_pipelines[mode]; } - + auto it = _customPipelines.find(customFile); if (it != _customPipelines.end() && it->second.pipeline) { auto& info = it->second.info; - + auto lastModified = info.lastModified(); info.refresh(); return lastModified != info.lastModified(); } - + return true; } const gpu::PipelinePointer& DebugDeferredBuffer::getPipeline(Mode mode, std::string customFile) { if (pipelineNeedsUpdate(mode, customFile)) { - static const std::string FRAGMENT_SHADER { gpu::Shader::getFragmentShaderSource(shader::render_utils::fragment::debug_deferred_buffer).getCode() }; - static const std::string SOURCE_PLACEHOLDER { "//SOURCE_PLACEHOLDER" }; - static const auto SOURCE_PLACEHOLDER_INDEX = FRAGMENT_SHADER.find(SOURCE_PLACEHOLDER); - Q_ASSERT_X(SOURCE_PLACEHOLDER_INDEX != std::string::npos, Q_FUNC_INFO, - "Could not find source placeholder"); - - auto bakedFragmentShader = FRAGMENT_SHADER; - bakedFragmentShader.replace(SOURCE_PLACEHOLDER_INDEX, SOURCE_PLACEHOLDER.size(), - getShaderSourceCode(mode, customFile)); - - const auto vs = gpu::Shader::createVertex(shader::render_utils::vertex::debug_deferred_buffer); - const auto ps = gpu::Shader::createPixel(bakedFragmentShader); - const auto program = gpu::Shader::createProgram(vs, ps); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding("cameraCorrectionBuffer", CameraCorrection)); - slotBindings.insert(gpu::Shader::Binding("deferredFrameTransformBuffer", DeferredFrameTransform)); - slotBindings.insert(gpu::Shader::Binding("shadowTransformBuffer", ShadowTransform)); - slotBindings.insert(gpu::Shader::Binding("parametersBuffer", DebugParametersBuffer)); + static const auto FRAGMENT_SHADER_SOURCE = + gpu::Shader::createPixel(shader::render_utils::fragment::debug_deferred_buffer)->getSource(); + static const std::string SOURCE_PLACEHOLDER{ "//SOURCE_PLACEHOLDER" }; + static const auto SOURCE_PLACEHOLDER_INDEX = FRAGMENT_SHADER_SOURCE.getCode().find(SOURCE_PLACEHOLDER); + Q_ASSERT_X(SOURCE_PLACEHOLDER_INDEX != std::string::npos, Q_FUNC_INFO, "Could not find source placeholder"); - slotBindings.insert(gpu::Shader::Binding("albedoMap", Albedo)); - slotBindings.insert(gpu::Shader::Binding("normalMap", Normal)); - slotBindings.insert(gpu::Shader::Binding("specularMap", Specular)); - slotBindings.insert(gpu::Shader::Binding("depthMap", Depth)); - slotBindings.insert(gpu::Shader::Binding("obscuranceMap", AmbientOcclusion)); - slotBindings.insert(gpu::Shader::Binding("lightingMap", Lighting)); - slotBindings.insert(gpu::Shader::Binding("shadowMaps", Shadow)); - slotBindings.insert(gpu::Shader::Binding("linearDepthMap", LinearDepth)); - slotBindings.insert(gpu::Shader::Binding("halfLinearDepthMap", HalfLinearDepth)); - slotBindings.insert(gpu::Shader::Binding("halfNormalMap", HalfNormal)); - slotBindings.insert(gpu::Shader::Binding("curvatureMap", Curvature)); - slotBindings.insert(gpu::Shader::Binding("diffusedCurvatureMap", DiffusedCurvature)); - slotBindings.insert(gpu::Shader::Binding("scatteringMap", Scattering)); - slotBindings.insert(gpu::Shader::Binding("occlusionBlurredMap", AmbientOcclusionBlurred)); - slotBindings.insert(gpu::Shader::Binding("velocityMap", Velocity)); - gpu::Shader::makeProgram(*program, slotBindings); - + auto bakedFragmentShader = FRAGMENT_SHADER_SOURCE.getCode(); + bakedFragmentShader.replace(SOURCE_PLACEHOLDER_INDEX, SOURCE_PLACEHOLDER.size(), getShaderSourceCode(mode, customFile)); + + const auto vs = gpu::Shader::createVertex(shader::render_utils::vertex::debug_deferred_buffer); + const auto ps = gpu::Shader::createPixel({ bakedFragmentShader, FRAGMENT_SHADER_SOURCE.getReflection() }); + const auto program = gpu::Shader::createProgram(vs, ps); auto pipeline = gpu::Pipeline::create(program, std::make_shared()); - + // Good to go add the brand new pipeline if (mode != CustomMode) { _pipelines[mode] = pipeline; @@ -422,7 +401,7 @@ const gpu::PipelinePointer& DebugDeferredBuffer::getPipeline(Mode mode, std::str _customPipelines[customFile].pipeline = pipeline; } } - + if (mode != CustomMode) { return _pipelines[mode]; } else { @@ -443,6 +422,7 @@ void DebugDeferredBuffer::run(const RenderContextPointer& renderContext, const I return; } +#if 0 assert(renderContext->args); assert(renderContext->args->hasViewFrustum()); RenderArgs* args = renderContext->args; @@ -469,23 +449,26 @@ void DebugDeferredBuffer::run(const RenderContextPointer& renderContext, const I batch.setViewTransform(viewMat, true); batch.setModelTransform(Transform()); + using Textures = render_utils::slot::texture::Texture; + using UBOs = render_utils::slot::buffer::Buffer; + // TODO REMOVE: Temporary until UI auto first = _customPipelines.begin()->first; auto pipeline = getPipeline(_mode, first); batch.setPipeline(pipeline); if (deferredFramebuffer) { - batch.setResourceTexture(Albedo, deferredFramebuffer->getDeferredColorTexture()); - batch.setResourceTexture(Normal, deferredFramebuffer->getDeferredNormalTexture()); - batch.setResourceTexture(Specular, deferredFramebuffer->getDeferredSpecularTexture()); - batch.setResourceTexture(Depth, deferredFramebuffer->getPrimaryDepthTexture()); - batch.setResourceTexture(Lighting, deferredFramebuffer->getLightingTexture()); + batch.setResourceTexture(Textures::DeferredColor, deferredFramebuffer->getDeferredColorTexture()); + batch.setResourceTexture(Textures::DeferredNormal, deferredFramebuffer->getDeferredNormalTexture()); + batch.setResourceTexture(Textures::DeferredSpecular, deferredFramebuffer->getDeferredSpecularTexture()); + batch.setResourceTexture(Textures::DeferredDepth, deferredFramebuffer->getPrimaryDepthTexture()); + batch.setResourceTexture(Textures::DeferredLighting, deferredFramebuffer->getLightingTexture()); } if (velocityFramebuffer) { - batch.setResourceTexture(Velocity, velocityFramebuffer->getVelocityTexture()); + batch.setResourceTexture(Textures::TaaVelocity, velocityFramebuffer->getVelocityTexture()); } - batch.setUniformBuffer(DebugParametersBuffer, _parameters); + batch.setUniformBuffer(UBOs:: DebugParametersBuffer, _parameters); auto lightStage = renderContext->_scene->getStage(); assert(lightStage); @@ -493,13 +476,13 @@ void DebugDeferredBuffer::run(const RenderContextPointer& renderContext, const I auto lightAndShadow = lightStage->getCurrentKeyLightAndShadow(); const auto& globalShadow = lightAndShadow.second; if (globalShadow) { - batch.setResourceTexture(Shadow, globalShadow->map); - batch.setUniformBuffer(ShadowTransform, globalShadow->getBuffer()); - batch.setUniformBuffer(DeferredFrameTransform, frameTransform->getFrameTransformBuffer()); + batch.setResourceTexture(Textures::Shadow, globalShadow->map); + batch.setUniformBuffer(UBOs::ShadowParams, globalShadow->getBuffer()); + batch.setUniformBuffer(UBOs::DeferredFrameTransform, frameTransform->getFrameTransformBuffer()); } if (linearDepthTarget) { - batch.setResourceTexture(LinearDepth, linearDepthTarget->getLinearDepthTexture()); + batch.setResourceTexture(Textures::LLinearDepth, linearDepthTarget->getLinearDepthTexture()); batch.setResourceTexture(HalfLinearDepth, linearDepthTarget->getHalfLinearDepthTexture()); batch.setResourceTexture(HalfNormal, linearDepthTarget->getHalfNormalTexture()); } @@ -508,7 +491,7 @@ void DebugDeferredBuffer::run(const RenderContextPointer& renderContext, const I batch.setResourceTexture(DiffusedCurvature, surfaceGeometryFramebuffer->getLowCurvatureTexture()); } if (ambientOcclusionFramebuffer) { - batch.setResourceTexture(AmbientOcclusion, ambientOcclusionFramebuffer->getOcclusionTexture()); + batch.setResourceTexture(Textures::SsaoOcclusion, ambientOcclusionFramebuffer->getOcclusionTexture()); batch.setResourceTexture(AmbientOcclusionBlurred, ambientOcclusionFramebuffer->getOcclusionBlurredTexture()); } const glm::vec4 color(1.0f, 1.0f, 1.0f, 1.0f); @@ -535,4 +518,5 @@ void DebugDeferredBuffer::run(const RenderContextPointer& renderContext, const I batch.setResourceTexture(Velocity, nullptr); }); +#endif } diff --git a/libraries/render-utils/src/DeferredBufferRead.slh b/libraries/render-utils/src/DeferredBufferRead.slh index f7ab0957cc..8c6c76b24a 100644 --- a/libraries/render-utils/src/DeferredBufferRead.slh +++ b/libraries/render-utils/src/DeferredBufferRead.slh @@ -11,26 +11,29 @@ <@if not DEFERRED_BUFFER_READ_SLH@> <@def DEFERRED_BUFFER_READ_SLH@> +<@include render-utils/ShaderConstants.h@> <@include DeferredBuffer.slh@> +// See DeferredShader_MapSlot in DeferredLightingEffect.cpp for constants + // the albedo texture -uniform sampler2D albedoMap; +layout(binding=RENDER_UTILS_TEXTURE_DEFERRRED_COLOR) uniform sampler2D albedoMap; // the normal texture -uniform sampler2D normalMap; +layout(binding=RENDER_UTILS_TEXTURE_DEFERRRED_NORMAL) uniform sampler2D normalMap; // the specular texture -uniform sampler2D specularMap; +layout(binding=RENDER_UTILS_TEXTURE_DEFERRRED_SPECULAR) uniform sampler2D specularMap; // the depth texture -uniform sampler2D depthMap; -uniform sampler2D linearZeyeMap; +layout(binding=RENDER_UTILS_TEXTURE_DEFERRRED_DEPTH) uniform sampler2D depthMap; +layout(binding=RENDER_UTILS_TEXTURE_DEFERRRED_LINEAR_Z_EYE) uniform sampler2D linearZeyeMap; // the obscurance texture -uniform sampler2D obscuranceMap; +layout(binding=RENDER_UTILS_TEXTURE_DEFERRED_OBSCURANCE) uniform sampler2D obscuranceMap; // the lighting texture -uniform sampler2D lightingMap; +layout(binding=RENDER_UTILS_TEXTURE_DEFERRED_LIGHTING) uniform sampler2D lightingMap; struct DeferredFragment { @@ -167,14 +170,14 @@ DeferredFragment unpackDeferredFragment(DeferredFrameTransform deferredTransform <@func declareDeferredCurvature()@> // the curvature texture -uniform sampler2D curvatureMap; +layout(binding=RENDER_UTILS_TEXTURE_DEFERRED_CURVATURE) uniform sampler2D curvatureMap; vec4 fetchCurvature(vec2 texcoord) { return texture(curvatureMap, texcoord); } // the curvature texture -uniform sampler2D diffusedCurvatureMap; +layout(binding=RENDER_UTILS_TEXTURE_DEFERRED_DIFFUSED_CURVATURE) uniform sampler2D diffusedCurvatureMap; vec4 fetchDiffusedCurvature(vec2 texcoord) { return texture(diffusedCurvatureMap, texcoord); diff --git a/libraries/render-utils/src/DeferredBufferWrite.slh b/libraries/render-utils/src/DeferredBufferWrite.slh index ae8d6fa277..769e602dc5 100644 --- a/libraries/render-utils/src/DeferredBufferWrite.slh +++ b/libraries/render-utils/src/DeferredBufferWrite.slh @@ -14,11 +14,10 @@ <@include DeferredBuffer.slh@> -layout(location = 0) out vec4 _fragColor0; -layout(location = 1) out vec4 _fragColor1; -layout(location = 2) out vec4 _fragColor2; - -layout(location = 3) out vec4 _fragColor3; +layout(location=0) out vec4 _fragColor0; // albedo / metallic +layout(location=1) out vec4 _fragColor1; // Normal +layout(location=2) out vec4 _fragColor2; // scattering / emissive / occlusion +layout(location=3) out vec4 _fragColor3; // emissive // the alpha threshold const float alphaThreshold = 0.5; diff --git a/libraries/render-utils/src/DeferredFrameTransform.h b/libraries/render-utils/src/DeferredFrameTransform.h index f8181b6b8a..f7700cb2dc 100644 --- a/libraries/render-utils/src/DeferredFrameTransform.h +++ b/libraries/render-utils/src/DeferredFrameTransform.h @@ -43,20 +43,20 @@ protected: glm::vec4 depthInfo; // Stereo info is { isStereoFrame, halfWidth } glm::vec4 stereoInfo{ 0.0 }; - // Mono proj matrix or Left and Right proj matrix going from Mono Eye space to side clip space - glm::mat4 projection[2]; - // Inverse proj matrix or Left and Right proj matrix going from Mono Eye space to side clip space - glm::mat4 invProjection[2]; - // THe mono projection for sure + // Mono proj matrix or Left and Right proj matrix going from Mono Eye space to side clip space + glm::mat4 projection[2]; + // Inverse proj matrix or Left and Right proj matrix going from Mono Eye space to side clip space + glm::mat4 invProjection[2]; + // THe mono projection for sure glm::mat4 projectionMono; // Inv View matrix from eye space (mono) to world space glm::mat4 invView; // View matrix from world space to eye space (mono) glm::mat4 view; - // Mono proj matrix or Left and Right proj matrix going from Mono Eye space to side clip space without jittering - glm::mat4 projectionUnjittered[2]; - // Inverse proj matrix or Left and Right proj matrix going from Mono Eye space to side clip space without jittering - glm::mat4 invProjectionUnjittered[2]; + // Mono proj matrix or Left and Right proj matrix going from Mono Eye space to side clip space without jittering + glm::mat4 projectionUnjittered[2]; + // Inverse proj matrix or Left and Right proj matrix going from Mono Eye space to side clip space without jittering + glm::mat4 invProjectionUnjittered[2]; FrameTransform() {} }; diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 0d077b19d8..2995d17f03 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -10,7 +10,6 @@ // #include "DeferredLightingEffect.h" - #include #include @@ -21,54 +20,33 @@ #include #include +#include + +#include "render-utils/ShaderConstants.h" #include "StencilMaskPass.h" #include "AbstractViewStateInterface.h" #include "GeometryCache.h" #include "TextureCache.h" #include "FramebufferCache.h" +namespace ru { + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; + using render_utils::slot::uniform::Uniform; +} + +namespace gr { + using graphics::slot::texture::Texture; + using graphics::slot::buffer::Buffer; +} + using namespace render; struct LightLocations { - int radius{ -1 }; - int keyLightBufferUnit{ -1 }; - int lightBufferUnit{ -1 }; - int ambientBufferUnit { -1 }; - int lightIndexBufferUnit { -1 }; - int texcoordFrameTransform{ -1 }; - int deferredFrameTransformBuffer{ -1 }; - int subsurfaceScatteringParametersBuffer{ -1 }; - int shadowTransformBuffer{ -1 }; -}; - -enum DeferredShader_MapSlot { - DEFERRED_BUFFER_COLOR_UNIT = 0, - DEFERRED_BUFFER_NORMAL_UNIT = 1, - DEFERRED_BUFFER_EMISSIVE_UNIT = 2, - DEFERRED_BUFFER_DEPTH_UNIT = 3, - DEFERRED_BUFFER_OBSCURANCE_UNIT = 4, - DEFERRED_BUFFER_LINEAR_DEPTH_UNIT = 5, - DEFERRED_BUFFER_CURVATURE_UNIT = 6, - DEFERRED_BUFFER_DIFFUSED_CURVATURE_UNIT = 7, - SCATTERING_LUT_UNIT = 8, - SCATTERING_SPECULAR_UNIT = 9, - SKYBOX_MAP_UNIT = render::ShapePipeline::Slot::LIGHT_AMBIENT_MAP, // unit = 10 - SHADOW_MAP_UNIT = 11, - nextAvailableUnit = SHADOW_MAP_UNIT -}; -enum DeferredShader_BufferSlot { - DEFERRED_FRAME_TRANSFORM_BUFFER_SLOT = 0, - CAMERA_CORRECTION_BUFFER_SLOT, - SCATTERING_PARAMETERS_BUFFER_SLOT, - LIGHTING_MODEL_BUFFER_SLOT = render::ShapePipeline::Slot::LIGHTING_MODEL, - KEY_LIGHT_SLOT = render::ShapePipeline::Slot::KEY_LIGHT, - LIGHT_ARRAY_SLOT = render::ShapePipeline::Slot::LIGHT_ARRAY_BUFFER, - LIGHT_AMBIENT_SLOT = render::ShapePipeline::Slot::LIGHT_AMBIENT_BUFFER, - HAZE_MODEL_BUFFER_SLOT = render::ShapePipeline::Slot::HAZE_MODEL, - LIGHT_INDEX_GPU_SLOT, - LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT, - LIGHT_CLUSTER_GRID_CLUSTER_GRID_SLOT, - LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT, + bool shadowTransform{ false }; + void initialize(const gpu::ShaderPointer& program) { + shadowTransform = program->getUniformBuffers().isValid(ru::Buffer::ShadowParams); + } }; static void loadLightProgram(int programId, bool lightVolume, gpu::PipelinePointer& program, LightLocationsPtr& locations); @@ -93,7 +71,7 @@ void DeferredLightingEffect::init() { loadLightProgram(shader::render_utils::program::local_lights_drawOutline, true, _localLightOutline, _localLightOutlineLocations); } -void DeferredLightingEffect::setupKeyLightBatch(const RenderArgs* args, gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit) { +void DeferredLightingEffect::setupKeyLightBatch(const RenderArgs* args, gpu::Batch& batch) { PerformanceTimer perfTimer("DLE->setupBatch()"); graphics::LightPointer keySunLight; auto lightStage = args->_scene->getStage(); @@ -107,108 +85,43 @@ void DeferredLightingEffect::setupKeyLightBatch(const RenderArgs* args, gpu::Bat } if (keySunLight) { - if (lightBufferUnit >= 0) { - batch.setUniformBuffer(lightBufferUnit, keySunLight->getLightSchemaBuffer()); - } + batch.setUniformBuffer(gr::Buffer::KeyLight, keySunLight->getLightSchemaBuffer()); } if (keyAmbiLight) { - if (ambientBufferUnit >= 0) { - batch.setUniformBuffer(ambientBufferUnit, keyAmbiLight->getAmbientSchemaBuffer()); - } + batch.setUniformBuffer(gr::Buffer::AmbientLight, keyAmbiLight->getAmbientSchemaBuffer()); - if (keyAmbiLight->getAmbientMap() && (skyboxCubemapUnit >= 0)) { - batch.setResourceTexture(skyboxCubemapUnit, keyAmbiLight->getAmbientMap()); + if (keyAmbiLight->getAmbientMap() ) { + batch.setResourceTexture(ru::Texture::Skybox, keyAmbiLight->getAmbientMap()); } } } -void DeferredLightingEffect::unsetKeyLightBatch(gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit) { - if (lightBufferUnit >= 0) { - batch.setUniformBuffer(lightBufferUnit, nullptr); - } - if ((ambientBufferUnit >= 0)) { - batch.setUniformBuffer(ambientBufferUnit, nullptr); - } - - if ((skyboxCubemapUnit >= 0)) { - batch.setResourceTexture(skyboxCubemapUnit, nullptr); - } +void DeferredLightingEffect::unsetKeyLightBatch(gpu::Batch& batch) { + batch.setUniformBuffer(gr::Buffer::KeyLight, nullptr); + batch.setUniformBuffer(gr::Buffer::AmbientLight, nullptr); + batch.setResourceTexture(ru::Texture::Skybox, nullptr); } -void DeferredLightingEffect::setupLocalLightsBatch(gpu::Batch& batch, - int lightArrayBufferUnit, int clusterGridBufferUnit, int clusterContentBufferUnit, int frustumGridBufferUnit, - const LightClustersPointer& lightClusters) { +void DeferredLightingEffect::setupLocalLightsBatch(gpu::Batch& batch, const LightClustersPointer& lightClusters) { // Bind the global list of lights and the visible lights this frame - batch.setUniformBuffer(lightArrayBufferUnit, lightClusters->_lightStage->getLightArrayBuffer()); + batch.setUniformBuffer(gr::Buffer::Light, lightClusters->_lightStage->getLightArrayBuffer()); - batch.setUniformBuffer(frustumGridBufferUnit, lightClusters->_frustumGridBuffer); - batch.setUniformBuffer(clusterGridBufferUnit, lightClusters->_clusterGridBuffer); - batch.setUniformBuffer(clusterContentBufferUnit, lightClusters->_clusterContentBuffer); + batch.setUniformBuffer(ru::Buffer::LightClusterFrustumGrid, lightClusters->_frustumGridBuffer); + batch.setUniformBuffer(ru::Buffer::LightClusterGrid, lightClusters->_clusterGridBuffer); + batch.setUniformBuffer(ru::Buffer::LightClusterContent, lightClusters->_clusterContentBuffer); } -void DeferredLightingEffect::unsetLocalLightsBatch(gpu::Batch& batch, int lightArrayBufferUnit, int clusterGridBufferUnit, int clusterContentBufferUnit, int frustumGridBufferUnit) { - if (lightArrayBufferUnit >= 0) { - batch.setUniformBuffer(lightArrayBufferUnit, nullptr); - } - if (clusterGridBufferUnit >= 0) { - batch.setUniformBuffer(clusterGridBufferUnit, nullptr); - } - if (clusterContentBufferUnit >= 0) { - batch.setUniformBuffer(clusterContentBufferUnit, nullptr); - } - if (frustumGridBufferUnit >= 0) { - batch.setUniformBuffer(frustumGridBufferUnit, nullptr); - } +void DeferredLightingEffect::unsetLocalLightsBatch(gpu::Batch& batch) { + batch.setUniformBuffer(gr::Buffer::Light, nullptr); + batch.setUniformBuffer(ru::Buffer::LightClusterGrid, nullptr); + batch.setUniformBuffer(ru::Buffer::LightClusterContent, nullptr); + batch.setUniformBuffer(ru::Buffer::LightClusterFrustumGrid, nullptr); } static gpu::ShaderPointer makeLightProgram(int programId, LightLocationsPtr& locations) { gpu::ShaderPointer program = gpu::Shader::createProgram(programId); - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("colorMap"), DEFERRED_BUFFER_COLOR_UNIT)); - slotBindings.insert(gpu::Shader::Binding(std::string("normalMap"), DEFERRED_BUFFER_NORMAL_UNIT)); - slotBindings.insert(gpu::Shader::Binding(std::string("specularMap"), DEFERRED_BUFFER_EMISSIVE_UNIT)); - slotBindings.insert(gpu::Shader::Binding(std::string("depthMap"), DEFERRED_BUFFER_DEPTH_UNIT)); - slotBindings.insert(gpu::Shader::Binding(std::string("obscuranceMap"), DEFERRED_BUFFER_OBSCURANCE_UNIT)); - slotBindings.insert(gpu::Shader::Binding(std::string("shadowMaps"), SHADOW_MAP_UNIT)); - slotBindings.insert(gpu::Shader::Binding(std::string("skyboxMap"), SKYBOX_MAP_UNIT)); - - slotBindings.insert(gpu::Shader::Binding(std::string("linearZeyeMap"), DEFERRED_BUFFER_LINEAR_DEPTH_UNIT)); - slotBindings.insert(gpu::Shader::Binding(std::string("curvatureMap"), DEFERRED_BUFFER_CURVATURE_UNIT)); - slotBindings.insert(gpu::Shader::Binding(std::string("diffusedCurvatureMap"), DEFERRED_BUFFER_DIFFUSED_CURVATURE_UNIT)); - slotBindings.insert(gpu::Shader::Binding(std::string("scatteringLUT"), SCATTERING_LUT_UNIT)); - slotBindings.insert(gpu::Shader::Binding(std::string("scatteringSpecularBeckmann"), SCATTERING_SPECULAR_UNIT)); - - - slotBindings.insert(gpu::Shader::Binding(std::string("cameraCorrectionBuffer"), CAMERA_CORRECTION_BUFFER_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), DEFERRED_FRAME_TRANSFORM_BUFFER_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("lightingModelBuffer"), LIGHTING_MODEL_BUFFER_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("hazeBuffer"), HAZE_MODEL_BUFFER_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("subsurfaceScatteringParametersBuffer"), SCATTERING_PARAMETERS_BUFFER_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("keyLightBuffer"), KEY_LIGHT_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("lightBuffer"), LIGHT_ARRAY_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("lightAmbientBuffer"), LIGHT_AMBIENT_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("lightIndexBuffer"), LIGHT_INDEX_GPU_SLOT)); - - - slotBindings.insert(gpu::Shader::Binding(std::string("frustumGridBuffer"), LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("clusterGridBuffer"), LIGHT_CLUSTER_GRID_CLUSTER_GRID_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("clusterContentBuffer"), LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT)); - - gpu::Shader::makeProgram(*program, slotBindings); - - locations->radius = program->getUniforms().findLocation("radius"); - - locations->texcoordFrameTransform = program->getUniforms().findLocation("texcoordFrameTransform"); - - locations->keyLightBufferUnit = program->getUniformBuffers().findLocation("keyLightBuffer"); - locations->lightBufferUnit = program->getUniformBuffers().findLocation("lightBuffer"); - locations->ambientBufferUnit = program->getUniformBuffers().findLocation("lightAmbientBuffer"); - locations->lightIndexBufferUnit = program->getUniformBuffers().findLocation("lightIndexBuffer"); - locations->deferredFrameTransformBuffer = program->getUniformBuffers().findLocation("deferredFrameTransformBuffer"); - locations->subsurfaceScatteringParametersBuffer = program->getUniformBuffers().findLocation("subsurfaceScatteringParametersBuffer"); - locations->shadowTransformBuffer = program->getUniformBuffers().findLocation("shadowTransformBuffer"); - + locations->initialize(program); return program; } @@ -223,9 +136,8 @@ static void loadLightProgram(int programId, bool lightVolume, gpu::PipelinePoint PrepareStencil::testShape(*state); state->setCullMode(gpu::State::CULL_BACK); - // state->setCullMode(gpu::State::CULL_FRONT); - // state->setDepthTest(true, false, gpu::GREATER_EQUAL); - + //state->setCullMode(gpu::State::CULL_FRONT); + //state->setDepthTest(true, false, gpu::GREATER_EQUAL); //state->setDepthClampEnable(true); // TODO: We should use DepthClamp and avoid changing geometry for inside /outside cases // additive blending @@ -448,7 +360,7 @@ void PrepareDeferred::run(const RenderContextPointer& renderContext, const Input vec4(vec3(0), 0), 1.0, 0, true); // For the rest of the rendering, bind the lighting model - batch.setUniformBuffer(LIGHTING_MODEL_BUFFER_SLOT, lightingModel->getParametersBuffer()); + batch.setUniformBuffer(ru::Buffer::LightModel, lightingModel->getParametersBuffer()); }); @@ -487,35 +399,35 @@ void RenderDeferredSetup::run(const render::RenderContextPointer& renderContext, // Bind the G-Buffer surfaces - batch.setResourceTexture(DEFERRED_BUFFER_COLOR_UNIT, deferredFramebuffer->getDeferredColorTexture()); - batch.setResourceTexture(DEFERRED_BUFFER_NORMAL_UNIT, deferredFramebuffer->getDeferredNormalTexture()); - batch.setResourceTexture(DEFERRED_BUFFER_EMISSIVE_UNIT, deferredFramebuffer->getDeferredSpecularTexture()); - batch.setResourceTexture(DEFERRED_BUFFER_DEPTH_UNIT, deferredFramebuffer->getPrimaryDepthTexture()); + batch.setResourceTexture(ru::Texture::DeferredColor, deferredFramebuffer->getDeferredColorTexture()); + batch.setResourceTexture(ru::Texture::DeferredNormal, deferredFramebuffer->getDeferredNormalTexture()); + batch.setResourceTexture(ru::Texture::DeferredSpecular, deferredFramebuffer->getDeferredSpecularTexture()); + batch.setResourceTexture(ru::Texture::DeferredDepth, deferredFramebuffer->getPrimaryDepthTexture()); // FIXME: Different render modes should have different tasks if (args->_renderMode == RenderArgs::DEFAULT_RENDER_MODE && deferredLightingEffect->isAmbientOcclusionEnabled() && ambientOcclusionFramebuffer) { - batch.setResourceTexture(DEFERRED_BUFFER_OBSCURANCE_UNIT, ambientOcclusionFramebuffer->getOcclusionTexture()); + batch.setResourceTexture(ru::Texture::DeferredObscurance, ambientOcclusionFramebuffer->getOcclusionTexture()); } else { // need to assign the white texture if ao is off - batch.setResourceTexture(DEFERRED_BUFFER_OBSCURANCE_UNIT, textureCache->getWhiteTexture()); + batch.setResourceTexture(ru::Texture::DeferredObscurance, textureCache->getWhiteTexture()); } // The Deferred Frame Transform buffer - batch.setUniformBuffer(DEFERRED_FRAME_TRANSFORM_BUFFER_SLOT, frameTransform->getFrameTransformBuffer()); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, frameTransform->getFrameTransformBuffer()); // THe lighting model - batch.setUniformBuffer(LIGHTING_MODEL_BUFFER_SLOT, lightingModel->getParametersBuffer()); + batch.setUniformBuffer(ru::Buffer::LightModel, lightingModel->getParametersBuffer()); // Subsurface scattering specific if (surfaceGeometryFramebuffer) { - batch.setResourceTexture(DEFERRED_BUFFER_LINEAR_DEPTH_UNIT, surfaceGeometryFramebuffer->getLinearDepthTexture()); - batch.setResourceTexture(DEFERRED_BUFFER_CURVATURE_UNIT, surfaceGeometryFramebuffer->getCurvatureTexture()); - batch.setResourceTexture(DEFERRED_BUFFER_DIFFUSED_CURVATURE_UNIT, surfaceGeometryFramebuffer->getLowCurvatureTexture()); + batch.setResourceTexture(ru::Texture::DeferredLinearZEye, surfaceGeometryFramebuffer->getLinearDepthTexture()); + batch.setResourceTexture(ru::Texture::DeferredCurvature, surfaceGeometryFramebuffer->getCurvatureTexture()); + batch.setResourceTexture(ru::Texture::DeferredDiffusedCurvature, surfaceGeometryFramebuffer->getLowCurvatureTexture()); } if (subsurfaceScatteringResource) { - batch.setUniformBuffer(SCATTERING_PARAMETERS_BUFFER_SLOT, subsurfaceScatteringResource->getParametersBuffer()); - batch.setResourceTexture(SCATTERING_LUT_UNIT, subsurfaceScatteringResource->getScatteringTable()); - batch.setResourceTexture(SCATTERING_SPECULAR_UNIT, subsurfaceScatteringResource->getScatteringSpecular()); + batch.setUniformBuffer(ru::Buffer::SsscParams, subsurfaceScatteringResource->getParametersBuffer()); + batch.setResourceTexture(ru::Texture::SsscLut, subsurfaceScatteringResource->getScatteringTable()); + batch.setResourceTexture(ru::Texture::SsscSpecularBeckmann, subsurfaceScatteringResource->getScatteringSpecular()); } // Global directional light and ambient pass @@ -528,7 +440,7 @@ void RenderDeferredSetup::run(const render::RenderContextPointer& renderContext, // Bind the shadow buffers if (globalShadow) { - batch.setResourceTexture(SHADOW_MAP_UNIT, globalShadow->map); + batch.setResourceTexture(ru::Texture::Shadow, globalShadow->map); } auto program = deferredLightingEffect->_directionalSkyboxLight; @@ -577,10 +489,8 @@ void RenderDeferredSetup::run(const render::RenderContextPointer& renderContext, } } - if (locations->shadowTransformBuffer >= 0) { - if (globalShadow) { - batch.setUniformBuffer(locations->shadowTransformBuffer, globalShadow->getBuffer()); - } + if (locations->shadowTransform && globalShadow) { + batch.setUniformBuffer(ru::Buffer::ShadowParams, globalShadow->getBuffer()); } batch.setPipeline(program); @@ -588,22 +498,22 @@ void RenderDeferredSetup::run(const render::RenderContextPointer& renderContext, // Adjust the texcoordTransform in the case we are rendeirng a sub region(mini mirror) auto textureFrameTransform = gpu::Framebuffer::evalSubregionTexcoordTransformCoefficients(deferredFramebuffer->getFrameSize(), args->_viewport); - batch._glUniform4fv(locations->texcoordFrameTransform, 1, reinterpret_cast< const float* >(&textureFrameTransform)); + batch._glUniform4fv(ru::Uniform::TexcoordTransform, 1, reinterpret_cast< const float* >(&textureFrameTransform)); // Setup the global lighting - deferredLightingEffect->setupKeyLightBatch(args, batch, KEY_LIGHT_SLOT, LIGHT_AMBIENT_SLOT, SKYBOX_MAP_UNIT); + deferredLightingEffect->setupKeyLightBatch(args, batch); // Haze if (haze) { - batch.setUniformBuffer(HAZE_MODEL_BUFFER_SLOT, haze->getHazeParametersBuffer()); + batch.setUniformBuffer(ru::Buffer::HazeParams, haze->getHazeParametersBuffer()); } batch.draw(gpu::TRIANGLE_STRIP, 4); - deferredLightingEffect->unsetKeyLightBatch(batch, KEY_LIGHT_SLOT, LIGHT_AMBIENT_SLOT, SKYBOX_MAP_UNIT); + deferredLightingEffect->unsetKeyLightBatch(batch); for (auto i = 0; i < SHADOW_CASCADE_MAX_COUNT; i++) { - batch.setResourceTexture(SHADOW_MAP_UNIT+i, nullptr); + batch.setResourceTexture(ru::Texture::Shadow +i, nullptr); } } } @@ -655,20 +565,18 @@ void RenderDeferredLocals::run(const render::RenderContextPointer& renderContext auto& lightIndices = lightClusters->_visibleLightIndices; if (!lightIndices.empty() && lightIndices[0] > 0) { - deferredLightingEffect->setupLocalLightsBatch(batch, - LIGHT_ARRAY_SLOT, LIGHT_CLUSTER_GRID_CLUSTER_GRID_SLOT, LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT, LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT, - lightClusters); + deferredLightingEffect->setupLocalLightsBatch(batch, lightClusters); // Local light pipeline batch.setPipeline(deferredLightingEffect->_localLight); - batch._glUniform4fv(deferredLightingEffect->_localLightLocations->texcoordFrameTransform, 1, reinterpret_cast(&textureFrameTransform)); + batch._glUniform4fv(ru::Uniform::TexcoordTransform, 1, reinterpret_cast(&textureFrameTransform)); batch.draw(gpu::TRIANGLE_STRIP, 4); // Draw outline as well ? if (lightingModel->isShowLightContourEnabled()) { batch.setPipeline(deferredLightingEffect->_localLightOutline); - batch._glUniform4fv(deferredLightingEffect->_localLightOutlineLocations->texcoordFrameTransform, 1, reinterpret_cast(&textureFrameTransform)); + batch._glUniform4fv(ru::Uniform::TexcoordTransform, 1, reinterpret_cast(&textureFrameTransform)); batch.draw(gpu::TRIANGLE_STRIP, 4); } @@ -681,25 +589,25 @@ void RenderDeferredCleanup::run(const render::RenderContextPointer& renderContex auto& batch = (*args->_batch); { // Probably not necessary in the long run because the gpu layer would unbound this texture if used as render target - batch.setResourceTexture(DEFERRED_BUFFER_COLOR_UNIT, nullptr); - batch.setResourceTexture(DEFERRED_BUFFER_NORMAL_UNIT, nullptr); - batch.setResourceTexture(DEFERRED_BUFFER_EMISSIVE_UNIT, nullptr); - batch.setResourceTexture(DEFERRED_BUFFER_DEPTH_UNIT, nullptr); - batch.setResourceTexture(DEFERRED_BUFFER_OBSCURANCE_UNIT, nullptr); + batch.setResourceTexture(ru::Texture::DeferredColor, nullptr); + batch.setResourceTexture(ru::Texture::DeferredNormal, nullptr); + batch.setResourceTexture(ru::Texture::DeferredSpecular, nullptr); + batch.setResourceTexture(ru::Texture::DeferredDepth, nullptr); + batch.setResourceTexture(ru::Texture::DeferredObscurance, nullptr); - batch.setResourceTexture(DEFERRED_BUFFER_LINEAR_DEPTH_UNIT, nullptr); - batch.setResourceTexture(DEFERRED_BUFFER_CURVATURE_UNIT, nullptr); - batch.setResourceTexture(DEFERRED_BUFFER_DIFFUSED_CURVATURE_UNIT, nullptr); - batch.setResourceTexture(SCATTERING_LUT_UNIT, nullptr); - batch.setResourceTexture(SCATTERING_SPECULAR_UNIT, nullptr); + batch.setResourceTexture(ru::Texture::DeferredLinearZEye, nullptr); + batch.setResourceTexture(ru::Texture::DeferredCurvature, nullptr); + batch.setResourceTexture(ru::Texture::DeferredDiffusedCurvature, nullptr); + batch.setResourceTexture(ru::Texture::SsscLut, nullptr); + batch.setResourceTexture(ru::Texture::SsscSpecularBeckmann, nullptr); - batch.setUniformBuffer(SCATTERING_PARAMETERS_BUFFER_SLOT, nullptr); + batch.setUniformBuffer(ru::Buffer::SsscParams, nullptr); // batch.setUniformBuffer(LIGHTING_MODEL_BUFFER_SLOT, nullptr); - batch.setUniformBuffer(DEFERRED_FRAME_TRANSFORM_BUFFER_SLOT, nullptr); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, nullptr); - batch.setUniformBuffer(LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT, nullptr); - batch.setUniformBuffer(LIGHT_CLUSTER_GRID_CLUSTER_GRID_SLOT, nullptr); - batch.setUniformBuffer(LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT, nullptr); + batch.setUniformBuffer(ru::Buffer::LightClusterFrustumGrid, nullptr); + batch.setUniformBuffer(ru::Buffer::LightClusterGrid, nullptr); + batch.setUniformBuffer(ru::Buffer::LightClusterContent, nullptr); } } diff --git a/libraries/render-utils/src/DeferredLightingEffect.h b/libraries/render-utils/src/DeferredLightingEffect.h index 5da2eb22f7..70bfb65f38 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.h +++ b/libraries/render-utils/src/DeferredLightingEffect.h @@ -48,11 +48,11 @@ class DeferredLightingEffect : public Dependency { public: void init(); - void setupKeyLightBatch(const RenderArgs* args, gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit); - void unsetKeyLightBatch(gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit); + static void setupKeyLightBatch(const RenderArgs* args, gpu::Batch& batch); + static void unsetKeyLightBatch(gpu::Batch& batch); - void setupLocalLightsBatch(gpu::Batch& batch, int lightArrayBufferUnit, int clusterGridBufferUnit, int clusterContentBufferUnit, int frustumGridBufferUnit, const LightClustersPointer& lightClusters); - void unsetLocalLightsBatch(gpu::Batch& batch, int lightArrayBufferUnit, int clusterGridBufferUnit, int clusterContentBufferUnit, int frustumGridBufferUnit); + static void setupLocalLightsBatch(gpu::Batch& batch, const LightClustersPointer& lightClusters); + static void unsetLocalLightsBatch(gpu::Batch& batch); void setShadowMapEnabled(bool enable) { _shadowMapEnabled = enable; }; void setAmbientOcclusionEnabled(bool enable) { _ambientOcclusionEnabled = enable; } diff --git a/libraries/render-utils/src/DeferredTransform.slh b/libraries/render-utils/src/DeferredTransform.slh index 2f015b95fe..6dd92c651b 100644 --- a/libraries/render-utils/src/DeferredTransform.slh +++ b/libraries/render-utils/src/DeferredTransform.slh @@ -11,6 +11,9 @@ <@if not DEFERRED_TRANSFORM_SLH@> <@def DEFERRED_TRANSFORM_SLH@> +<@include gpu/ShaderConstants.h@> +<@include render-utils/ShaderConstants.h@> + <@func declareDeferredFrameTransform()@> struct CameraCorrection { @@ -21,7 +24,7 @@ struct CameraCorrection { mat4 _prevViewInverse; }; -uniform cameraCorrectionBuffer { +layout(binding=GPU_BUFFER_CAMERA_CORRECTION) uniform cameraCorrectionBuffer { CameraCorrection cameraCorrection; }; @@ -39,7 +42,7 @@ struct DeferredFrameTransform { mat4 _invProjectionUnJittered[2]; }; -uniform deferredFrameTransformBuffer { +layout(binding=RENDER_UTILS_BUFFER_DEFERRED_FRAME_TRANSFORM) uniform deferredFrameTransformBuffer { DeferredFrameTransform frameTransform; }; diff --git a/libraries/render-utils/src/DrawHaze.cpp b/libraries/render-utils/src/DrawHaze.cpp index 587f997887..538a916a06 100644 --- a/libraries/render-utils/src/DrawHaze.cpp +++ b/libraries/render-utils/src/DrawHaze.cpp @@ -14,11 +14,24 @@ #include #include +#include +#include "render-utils/ShaderConstants.h" + #include "StencilMaskPass.h" #include "FramebufferCache.h" #include "HazeStage.h" #include "LightStage.h" +namespace ru { + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; +} + +namespace gr { + using graphics::slot::texture::Texture; + using graphics::slot::buffer::Buffer; +} + void HazeConfig::setHazeColor(const glm::vec3 value) { hazeColor = value; } @@ -105,12 +118,6 @@ void MakeHaze::run(const render::RenderContextPointer& renderContext, graphics:: haze = _haze; } -// Buffer slots -const int HazeEffect_ParamsSlot = 0; -const int HazeEffect_TransformBufferSlot = 1; -// Texture slots -const int HazeEffect_LinearDepthMapSlot = 0; - void DrawHaze::configure(const Config& config) { } @@ -139,19 +146,7 @@ void DrawHaze::run(const render::RenderContextPointer& renderContext, const Inpu // Mask out haze on the tablet PrepareStencil::testMask(*state); - _hazePipeline = gpu::PipelinePointer(gpu::Pipeline::create(program, state)); - gpu::doInBatch("DrawHaze::build", args->_context, [program](gpu::Batch& batch) { - batch.runLambda([program]() { - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("hazeBuffer"), HazeEffect_ParamsSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), HazeEffect_TransformBufferSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("lightingModelBuffer"), render::ShapePipeline::Slot::LIGHTING_MODEL)); - slotBindings.insert(gpu::Shader::Binding(std::string("linearDepthMap"), HazeEffect_LinearDepthMapSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("keyLightBuffer"), render::ShapePipeline::Slot::KEY_LIGHT)); - gpu::Shader::makeProgram(*program, slotBindings); - }); - }); } auto outputFramebufferSize = glm::ivec2(outputBuffer->getSize()); @@ -171,26 +166,25 @@ void DrawHaze::run(const render::RenderContextPointer& renderContext, const Inpu if (hazeStage && hazeStage->_currentFrame._hazes.size() > 0) { graphics::HazePointer hazePointer = hazeStage->getHaze(hazeStage->_currentFrame._hazes.front()); if (hazePointer) { - batch.setUniformBuffer(HazeEffect_ParamsSlot, hazePointer->getHazeParametersBuffer()); + batch.setUniformBuffer(ru::Buffer::HazeParams, hazePointer->getHazeParametersBuffer()); } else { // Something is wrong, so just quit Haze return; } } - batch.setUniformBuffer(HazeEffect_TransformBufferSlot, transformBuffer->getFrameTransformBuffer()); - batch.setUniformBuffer(render::ShapePipeline::Slot::LIGHTING_MODEL, lightingModel->getParametersBuffer()); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, transformBuffer->getFrameTransformBuffer()); + batch.setUniformBuffer(ru::Buffer::LightModel, lightingModel->getParametersBuffer()); + batch.setResourceTexture(ru::Texture::HazeLinearDepth, depthBuffer); + auto lightStage = args->_scene->getStage(); + if (lightStage) { + graphics::LightPointer keyLight; + keyLight = lightStage->getCurrentKeyLight(); + if (keyLight) { + batch.setUniformBuffer(gr::Buffer::KeyLight, keyLight->getLightSchemaBuffer()); + } + } - auto lightStage = args->_scene->getStage(); - if (lightStage) { - graphics::LightPointer keyLight; - keyLight = lightStage->getCurrentKeyLight(); - if (keyLight) { - batch.setUniformBuffer(render::ShapePipeline::Slot::KEY_LIGHT, keyLight->getLightSchemaBuffer()); - } - } - - batch.setResourceTexture(HazeEffect_LinearDepthMapSlot, depthBuffer); batch.draw(gpu::TRIANGLE_STRIP, 4); }); diff --git a/libraries/render-utils/src/Fade.slh b/libraries/render-utils/src/Fade.slh index a4e8fdf1f4..47347ba135 100644 --- a/libraries/render-utils/src/Fade.slh +++ b/libraries/render-utils/src/Fade.slh @@ -9,18 +9,22 @@ <@if not FADE_SLH@> <@def FADE_SLH@> -<@func declareFadeFragmentCommon()@> +<@include render-utils/ShaderConstants.h@> +<@func declareFadeFragmentCommon()@> #define CATEGORY_COUNT 5 <@include Fade_shared.slh@> <@include FadeObjectParams.shared.slh@> -layout(std140) uniform fadeParametersBuffer { +// See ShapePipeline::Slot::BUFFER in ShapePipeline.h +layout(std140, binding=RENDER_UTILS_BUFFER_FADE_PARAMS) uniform fadeParametersBuffer { FadeParameters fadeParameters[CATEGORY_COUNT]; }; -uniform sampler2D fadeMaskMap; + +// See ShapePipeline::Slot::MAP in ShapePipeline.h +layout(binding=RENDER_UTILS_TEXTURE_FADE_MASK) uniform sampler2D fadeMaskMap; vec3 getNoiseInverseSize(int category) { return fadeParameters[category]._noiseInvSizeAndLevel.xyz; @@ -113,7 +117,7 @@ void applyFade(FadeObjectParams params, vec3 position, out vec3 emissive) { <@func declareFadeFragmentUniform()@> -layout(std140) uniform fadeObjectParametersBuffer { +layout(std140, binding=RENDER_UTILS_BUFFER_FADE_OBJECT_PARAMS) uniform fadeObjectParametersBuffer { FadeObjectParams fadeObjectParams; }; @@ -125,9 +129,9 @@ layout(std140) uniform fadeObjectParametersBuffer { <@func declareFadeFragmentVertexInput()@> -in vec4 _fadeData1; -in vec4 _fadeData2; -in vec4 _fadeData3; +layout(location=RENDER_UTILS_ATTR_FADE1) in vec4 _fadeData1; +layout(location=RENDER_UTILS_ATTR_FADE2) in vec4 _fadeData2; +layout(location=RENDER_UTILS_ATTR_FADE3) in vec4 _fadeData3; <@endfunc@> @@ -150,9 +154,9 @@ in vec4 _fadeData3; <@endfunc@> <@func declareFadeVertexInstanced()@> -out vec4 _fadeData1; -out vec4 _fadeData2; -out vec4 _fadeData3; +layout(location=RENDER_UTILS_ATTR_FADE1) out vec4 _fadeData1; +layout(location=RENDER_UTILS_ATTR_FADE2) out vec4 _fadeData2; +layout(location=RENDER_UTILS_ATTR_FADE3) out vec4 _fadeData3; <@endfunc@> <@func passThroughFadeObjectParams()@> diff --git a/libraries/render-utils/src/FadeEffect.cpp b/libraries/render-utils/src/FadeEffect.cpp index 12531d4c9d..402865da4c 100644 --- a/libraries/render-utils/src/FadeEffect.cpp +++ b/libraries/render-utils/src/FadeEffect.cpp @@ -14,7 +14,7 @@ #include "render/TransitionStage.h" #include "FadeObjectParams.shared.slh" - +#include "render-utils/ShaderConstants.h" #include FadeEffect::FadeEffect() { @@ -33,16 +33,16 @@ void FadeEffect::build(render::Task::TaskConcept& task, const task::Varying& edi render::ShapePipeline::BatchSetter FadeEffect::getBatchSetter() const { return [this](const render::ShapePipeline& shapePipeline, gpu::Batch& batch, render::Args*) { - batch.setResourceTexture(render::ShapePipeline::Slot::FADE_MASK, _maskMap); - batch.setUniformBuffer(render::ShapePipeline::Slot::FADE_PARAMETERS, _configurations); + batch.setResourceTexture(render_utils::slot::texture::FadeMask, _maskMap); + batch.setUniformBuffer(render_utils::slot::buffer::FadeParameters, _configurations); }; } render::ShapePipeline::ItemSetter FadeEffect::getItemUniformSetter() const { return [](const render::ShapePipeline& shapePipeline, render::Args* args, const render::Item& item) { if (!render::TransitionStage::isIndexInvalid(item.getTransitionId())) { - auto scene = args->_scene; - auto batch = args->_batch; + const auto& scene = args->_scene; + const auto& batch = args->_batch; auto transitionStage = scene->getStage(render::TransitionStage::getName()); auto& transitionState = transitionStage->getTransition(item.getTransitionId()); @@ -67,7 +67,7 @@ render::ShapePipeline::ItemSetter FadeEffect::getItemUniformSetter() const { params.noiseOffset = glm::vec4(transitionState.noiseOffset, 0.0f); params.baseOffset = glm::vec4(transitionState.baseOffset, 0.0f); } - batch->setUniformBuffer(render::ShapePipeline::Slot::FADE_OBJECT_PARAMETERS, transitionState.paramsBuffer); + batch->setUniformBuffer(render_utils::slot::buffer::FadeObjectParameters, transitionState.paramsBuffer); } }; } diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 60ac75619e..cbc9b40129 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -27,7 +27,9 @@ #include #include #include +#include +#include "render-utils/ShaderConstants.h" #include "TextureCache.h" #include "RenderUtilsLogging.h" #include "StencilMaskPass.h" @@ -37,6 +39,16 @@ #include "DeferredLightingEffect.h" +namespace gr { + using graphics::slot::texture::Texture; + using graphics::slot::buffer::Buffer; +} + +namespace ru { + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; +} + #if defined(USE_GLES) static bool DISABLE_DEFERRED = true; #else @@ -804,12 +816,9 @@ render::ShapePipelinePointer GeometryCache::getShapePipeline(bool textured, bool return std::make_shared(getSimplePipeline(textured, transparent, culled, unlit, depthBias, false, true), nullptr, [](const render::ShapePipeline& pipeline, gpu::Batch& batch, render::Args* args) { - batch.setResourceTexture(render::ShapePipeline::Slot::MAP::ALBEDO, DependencyManager::get()->getWhiteTexture()); - DependencyManager::get()->setupKeyLightBatch(args, batch, - pipeline.pipeline->getProgram()->getUniformBuffers().findLocation("keyLightBuffer"), - pipeline.pipeline->getProgram()->getUniformBuffers().findLocation("lightAmbientBuffer"), - pipeline.pipeline->getProgram()->getUniformBuffers().findLocation("skyboxMap")); - } + batch.setResourceTexture(gr::Texture::MaterialAlbedo, DependencyManager::get()->getWhiteTexture()); + DependencyManager::get()->setupKeyLightBatch(args, batch); + } ); } @@ -820,7 +829,7 @@ render::ShapePipelinePointer GeometryCache::getFadingShapePipeline(bool textured auto fadeItemSetter = fadeEffect->getItemStoredSetter(); return std::make_shared(getSimplePipeline(textured, transparent, culled, unlit, depthBias, true), nullptr, [fadeBatchSetter, fadeItemSetter](const render::ShapePipeline& shapePipeline, gpu::Batch& batch, render::Args* args) { - batch.setResourceTexture(render::ShapePipeline::Slot::MAP::ALBEDO, DependencyManager::get()->getWhiteTexture()); + batch.setResourceTexture(gr::Texture::MaterialAlbedo, DependencyManager::get()->getWhiteTexture()); fadeBatchSetter(shapePipeline, batch, args); }, fadeItemSetter @@ -2027,7 +2036,6 @@ void GeometryCache::renderGlowLine(gpu::Batch& batch, const glm::vec3& p1, const } // Compile the shaders - static const uint32_t LINE_DATA_SLOT = 1; static std::once_flag once; std::call_once(once, [&] { auto state = std::make_shared(); @@ -2039,10 +2047,6 @@ void GeometryCache::renderGlowLine(gpu::Batch& batch, const glm::vec3& p1, const gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); PrepareStencil::testMask(*state); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("lineData"), LINE_DATA_SLOT)); - gpu::Shader::makeProgram(*program, slotBindings); _glowLinePipeline = gpu::Pipeline::create(program, state); }); @@ -2079,7 +2083,7 @@ void GeometryCache::renderGlowLine(gpu::Batch& batch, const glm::vec3& p1, const } // The shader requires no vertices, only uniforms. - batch.setUniformBuffer(LINE_DATA_SLOT, details.uniformBuffer); + batch.setUniformBuffer(0, details.uniformBuffer); batch.draw(gpu::TRIANGLE_STRIP, NUM_VERTICES, 0); } @@ -2104,11 +2108,6 @@ void GeometryCache::useSimpleDrawPipeline(gpu::Batch& batch, bool noBlend) { auto programNoBlend = gpu::Shader::createProgram(shader::render_utils::program::standardDrawTextureNoBlend); _standardDrawPipelineNoBlend = gpu::Pipeline::create(programNoBlend, stateNoBlend); - - batch.runLambda([program, programNoBlend] { - gpu::Shader::makeProgram((*program)); - gpu::Shader::makeProgram((*programNoBlend)); - }); }); if (noBlend) { @@ -2121,9 +2120,7 @@ void GeometryCache::useSimpleDrawPipeline(gpu::Batch& batch, bool noBlend) { void GeometryCache::useGridPipeline(gpu::Batch& batch, GridBuffer gridBuffer, bool isLayered) { if (!_gridPipeline) { auto program = gpu::Shader::createProgram(shader::render_utils::program::grid); - gpu::Shader::makeProgram((*program)); - _gridSlot = program->getUniformBuffers().findLocation("gridBuffer"); - + _gridSlot = 0; auto stateLayered = std::make_shared(); stateLayered->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); PrepareStencil::testMask(*stateLayered); @@ -2205,9 +2202,6 @@ inline bool operator==(const SimpleProgramKey& a, const SimpleProgramKey& b) { static void buildWebShader(int programId, bool blendEnable, gpu::ShaderPointer& shaderPointerOut, gpu::PipelinePointer& pipelinePointerOut) { shaderPointerOut = gpu::Shader::createProgram(programId); - - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*shaderPointerOut, slotBindings); auto state = std::make_shared(); state->setCullMode(gpu::State::CULL_NONE); state->setDepthTest(true, true, gpu::LESS_EQUAL); @@ -2239,7 +2233,7 @@ void GeometryCache::bindSimpleProgram(gpu::Batch& batch, bool textured, bool tra // If not textured, set a default albedo map if (!textured) { - batch.setResourceTexture(render::ShapePipeline::Slot::MAP::ALBEDO, + batch.setResourceTexture(gr::Texture::MaterialAlbedo, DependencyManager::get()->getWhiteTexture()); } } @@ -2262,20 +2256,9 @@ gpu::PipelinePointer GeometryCache::getSimplePipeline(bool textured, bool transp // Use the forward pipeline for both here, otherwise transparents will be unlit auto PSTransparent = DISABLE_DEFERRED ? forward_simple_textured_transparent : forward_simple_textured_transparent; auto PSUnlit = DISABLE_DEFERRED ? forward_simple_textured_unlit : simple_textured_unlit; - _simpleShader = gpu::Shader::createProgram(PS); _transparentShader = gpu::Shader::createProgram(PSTransparent); _unlitShader = gpu::Shader::createProgram(PSUnlit); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("originalTexture"), render::ShapePipeline::Slot::MAP::ALBEDO)); - slotBindings.insert(gpu::Shader::Binding(std::string("lightingModelBuffer"), render::ShapePipeline::Slot::LIGHTING_MODEL)); - slotBindings.insert(gpu::Shader::Binding(std::string("keyLightBuffer"), render::ShapePipeline::Slot::KEY_LIGHT)); - slotBindings.insert(gpu::Shader::Binding(std::string("lightAmbientBuffer"), render::ShapePipeline::Slot::LIGHT_AMBIENT_BUFFER)); - slotBindings.insert(gpu::Shader::Binding(std::string("skyboxMap"), render::ShapePipeline::Slot::MAP::LIGHT_AMBIENT_MAP)); - gpu::Shader::makeProgram(*_simpleShader, slotBindings); - gpu::Shader::makeProgram(*_transparentShader, slotBindings); - gpu::Shader::makeProgram(*_unlitShader, slotBindings); }); } else { static std::once_flag once; @@ -2283,16 +2266,6 @@ gpu::PipelinePointer GeometryCache::getSimplePipeline(bool textured, bool transp using namespace shader::render_utils::program; _simpleFadeShader = gpu::Shader::createProgram(DISABLE_DEFERRED ? forward_simple_textured : simple_textured_fade); _unlitFadeShader = gpu::Shader::createProgram(DISABLE_DEFERRED ? forward_simple_textured_unlit : simple_textured_unlit_fade); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("originalTexture"), render::ShapePipeline::Slot::MAP::ALBEDO)); - slotBindings.insert(gpu::Shader::Binding(std::string("lightingModelBuffer"), render::ShapePipeline::Slot::LIGHTING_MODEL)); - slotBindings.insert(gpu::Shader::Binding(std::string("keyLightBuffer"), render::ShapePipeline::Slot::KEY_LIGHT)); - slotBindings.insert(gpu::Shader::Binding(std::string("lightAmbientBuffer"), render::ShapePipeline::Slot::LIGHT_AMBIENT_BUFFER)); - slotBindings.insert(gpu::Shader::Binding(std::string("skyboxMap"), render::ShapePipeline::Slot::MAP::LIGHT_AMBIENT_MAP)); - slotBindings.insert(gpu::Shader::Binding(std::string("fadeMaskMap"), render::ShapePipeline::Slot::MAP::FADE_MASK)); - gpu::Shader::makeProgram(*_simpleFadeShader, slotBindings); - gpu::Shader::makeProgram(*_unlitFadeShader, slotBindings); }); } diff --git a/libraries/render-utils/src/Haze.slf b/libraries/render-utils/src/Haze.slf index 93b66d99ed..ce5141d3c6 100644 --- a/libraries/render-utils/src/Haze.slf +++ b/libraries/render-utils/src/Haze.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// Haze.frag +// // Created by Nissim Hadar on 9/5/2107. // Copyright 2016 High Fidelity, Inc. // @@ -22,7 +24,7 @@ <@include Haze.slh@> -uniform sampler2D linearDepthMap; +layout(binding=RENDER_UTILS_TEXTURE_HAZE_LINEAR_DEPTH) uniform sampler2D linearDepthMap; vec4 unpackPositionFromZeye(vec2 texcoord) { float Zeye = -texture(linearDepthMap, texcoord).x; @@ -37,8 +39,8 @@ vec4 unpackPositionFromZeye(vec2 texcoord) { return vec4(evalEyePositionFromZeye(side, Zeye, texcoord), 1.0); } -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; void main(void) { if ((isHazeEnabled() == 0.0) || (hazeParams.hazeMode & HAZE_MODE_IS_ACTIVE) != HAZE_MODE_IS_ACTIVE) { diff --git a/libraries/render-utils/src/Haze.slh b/libraries/render-utils/src/Haze.slh index 7854ad08ca..b7bcfcefcd 100644 --- a/libraries/render-utils/src/Haze.slh +++ b/libraries/render-utils/src/Haze.slh @@ -10,6 +10,8 @@ <@if not HAZE_SLH@> <@def HAZE_SLH@> +<@include render-utils/ShaderConstants.h@> + const int HAZE_MODE_IS_ACTIVE = 1 << 0; const int HAZE_MODE_IS_ALTITUDE_BASED = 1 << 1; const int HAZE_MODE_IS_KEYLIGHT_ATTENUATED = 1 << 2; @@ -36,7 +38,8 @@ struct HazeParams { float hazeKeyLightAltitudeFactor; }; -layout(std140) uniform hazeBuffer { +// See ShapePipeline::Slot::BUFFER in ShapePipeline.h +layout(std140, binding=RENDER_UTILS_BUFFER_HAZE_PARAMS) uniform hazeBuffer { HazeParams hazeParams; }; diff --git a/libraries/render-utils/src/Highlight.slf b/libraries/render-utils/src/Highlight.slf index bf65f92613..676df52235 100644 --- a/libraries/render-utils/src/Highlight.slf +++ b/libraries/render-utils/src/Highlight.slf @@ -1,4 +1,4 @@ -// Highlight.slf +// Highlight.frag // Add highlight effect based on two zbuffers : one containing the total scene z and another // with the z of only the objects to be outlined. // This is the version without the fill effect inside the silhouette. diff --git a/libraries/render-utils/src/Highlight.slh b/libraries/render-utils/src/Highlight.slh index f4d4ad0e04..56a999f508 100644 --- a/libraries/render-utils/src/Highlight.slh +++ b/libraries/render-utils/src/Highlight.slh @@ -15,12 +15,12 @@ <@include Highlight_shared.slh@> -uniform highlightParamsBuffer { +layout(binding=RENDER_UTILS_BUFFER_HIGHLIGHT_PARAMS) uniform highlightParamsBuffer { HighlightParameters params; }; -uniform sampler2D sceneDepthMap; -uniform sampler2D highlightedDepthMap; +layout(binding=RENDER_UTILS_TEXTURE_HIGHLIGHT_SCENE_DEPTH) uniform sampler2D sceneDepthMap; +layout(binding=RENDER_UTILS_TEXTURE_HIGHLIGHT_DEPTH) uniform sampler2D highlightedDepthMap; in vec2 varTexCoord0; out vec4 outFragColor; diff --git a/libraries/render-utils/src/HighlightEffect.cpp b/libraries/render-utils/src/HighlightEffect.cpp index a07d24c106..7e2e55c768 100644 --- a/libraries/render-utils/src/HighlightEffect.cpp +++ b/libraries/render-utils/src/HighlightEffect.cpp @@ -12,6 +12,7 @@ #include +#include #include #include @@ -21,10 +22,19 @@ #include "GeometryCache.h" #include "CubeProjectedPolygon.h" - - +#include "render-utils/ShaderConstants.h" using namespace render; +namespace ru { + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; + using render_utils::slot::uniform::Uniform; +} + +namespace gr { + using graphics::slot::texture::Texture; + using graphics::slot::buffer::Buffer; +} #define OUTLINE_STENCIL_MASK 1 @@ -112,7 +122,7 @@ void DrawHighlightMask::run(const render::RenderContextPointer& renderContext, c auto& inShapes = inputs.get0(); const int BOUNDS_SLOT = 0; - const int PARAMETERS_SLOT = 1; + const int PARAMETERS_SLOT = 0; if (!_stencilMaskPipeline || !_stencilMaskFillPipeline) { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); @@ -128,12 +138,6 @@ void DrawHighlightMask::run(const render::RenderContextPointer& renderContext, c fillState->setCullMode(gpu::State::CULL_FRONT); gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::highlight_aabox); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("ssbo0Buffer"), BOUNDS_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("parametersBuffer"), PARAMETERS_SLOT)); - gpu::Shader::makeProgram(*program, slotBindings); - _stencilMaskPipeline = gpu::Pipeline::create(program, state); _stencilMaskFillPipeline = gpu::Pipeline::create(program, fillState); } @@ -298,10 +302,10 @@ void DrawHighlight::run(const render::RenderContextPointer& renderContext, const batch.setModelTransform(gpu::Framebuffer::evalSubregionTexcoordTransform(framebufferSize, args->_viewport)); batch.setPipeline(pipeline); - batch.setUniformBuffer(HIGHLIGHT_PARAMS_SLOT, _configuration); - batch.setUniformBuffer(FRAME_TRANSFORM_SLOT, frameTransform->getFrameTransformBuffer()); - batch.setResourceTexture(SCENE_DEPTH_MAP_SLOT, sceneDepthBuffer->getPrimaryDepthTexture()); - batch.setResourceTexture(HIGHLIGHTED_DEPTH_MAP_SLOT, highlightedDepthTexture); + batch.setUniformBuffer(ru::Buffer::HighlightParams, _configuration); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, frameTransform->getFrameTransformBuffer()); + batch.setResourceTexture(ru::Texture::HighlightSceneDepth, sceneDepthBuffer->getPrimaryDepthTexture()); + batch.setResourceTexture(ru::Texture::HighlightDepth, highlightedDepthTexture); batch.draw(gpu::TRIANGLE_STRIP, 4); // Reset the framebuffer for overlay drawing @@ -319,19 +323,10 @@ const gpu::PipelinePointer& DrawHighlight::getPipeline(const render::HighlightSt state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); state->setStencilTest(true, 0, gpu::State::StencilTest(OUTLINE_STENCIL_MASK, 0xFF, gpu::EQUAL)); - gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::highlight); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding("highlightParamsBuffer", HIGHLIGHT_PARAMS_SLOT)); - slotBindings.insert(gpu::Shader::Binding("deferredFrameTransformBuffer", FRAME_TRANSFORM_SLOT)); - slotBindings.insert(gpu::Shader::Binding("sceneDepthMap", SCENE_DEPTH_MAP_SLOT)); - slotBindings.insert(gpu::Shader::Binding("highlightedDepthMap", HIGHLIGHTED_DEPTH_MAP_SLOT)); - gpu::Shader::makeProgram(*program, slotBindings); - + auto program = gpu::Shader::createProgram(shader::render_utils::program::highlight); _pipeline = gpu::Pipeline::create(program, state); program = gpu::Shader::createProgram(shader::render_utils::program::highlight_filled); - gpu::Shader::makeProgram(*program, slotBindings); _pipelineFilled = gpu::Pipeline::create(program, state); } return style.isFilled() ? _pipelineFilled : _pipeline; @@ -395,9 +390,9 @@ void DebugHighlight::run(const render::RenderContextPointer& renderContext, cons } void DebugHighlight::initializePipelines() { - static const std::string FRAGMENT_SHADER{ gpu::Shader::getFragmentShaderSource(shader::render_utils::fragment::debug_deferred_buffer).getCode() }; + static const auto FRAGMENT_SHADER_SOURCE = gpu::Shader::createPixel(shader::render_utils::fragment::debug_deferred_buffer)->getSource(); static const std::string SOURCE_PLACEHOLDER{ "//SOURCE_PLACEHOLDER" }; - static const auto SOURCE_PLACEHOLDER_INDEX = FRAGMENT_SHADER.find(SOURCE_PLACEHOLDER); + static const auto SOURCE_PLACEHOLDER_INDEX = FRAGMENT_SHADER_SOURCE.getCode().find(SOURCE_PLACEHOLDER); Q_ASSERT_X(SOURCE_PLACEHOLDER_INDEX != std::string::npos, Q_FUNC_INFO, "Could not find source placeholder"); @@ -417,16 +412,11 @@ void DebugHighlight::initializePipelines() { } )SHADER" }; - auto fragmentShader = FRAGMENT_SHADER; + auto fragmentShader = FRAGMENT_SHADER_SOURCE.getCode(); fragmentShader.replace(SOURCE_PLACEHOLDER_INDEX, SOURCE_PLACEHOLDER.size(), DEPTH_SHADER); - const auto ps = gpu::Shader::createPixel(fragmentShader); + const auto ps = gpu::Shader::createPixel({ fragmentShader, FRAGMENT_SHADER_SOURCE.getReflection() }); const auto program = gpu::Shader::createProgram(vs, ps); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding("depthMap", 0)); - gpu::Shader::makeProgram(*program, slotBindings); - _depthPipeline = gpu::Pipeline::create(program, state); } } diff --git a/libraries/render-utils/src/HighlightEffect.h b/libraries/render-utils/src/HighlightEffect.h index eee1c29cb7..64a97a549e 100644 --- a/libraries/render-utils/src/HighlightEffect.h +++ b/libraries/render-utils/src/HighlightEffect.h @@ -148,14 +148,6 @@ private: #include "Highlight_shared.slh" - enum { - SCENE_DEPTH_MAP_SLOT = 0, - HIGHLIGHTED_DEPTH_MAP_SLOT, - - HIGHLIGHT_PARAMS_SLOT = 0, - FRAME_TRANSFORM_SLOT, - }; - using HighlightConfigurationBuffer = gpu::StructBuffer; static const gpu::PipelinePointer& getPipeline(const render::HighlightStyle& style); diff --git a/libraries/render-utils/src/Highlight_aabox.slv b/libraries/render-utils/src/Highlight_aabox.slv index 2a87e00f94..5130d5e7ff 100644 --- a/libraries/render-utils/src/Highlight_aabox.slv +++ b/libraries/render-utils/src/Highlight_aabox.slv @@ -12,6 +12,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include gpu/ShaderConstants.h@> <@include gpu/Transform.slh@> <$declareStandardTransform()$> @@ -22,7 +23,7 @@ struct ItemBound { }; #if defined(GPU_GL410) -uniform samplerBuffer ssbo0Buffer; +layout(binding=0) uniform samplerBuffer ssbo0Buffer; ItemBound getItemBound(int i) { int offset = 2 * i; ItemBound bound; @@ -31,7 +32,7 @@ ItemBound getItemBound(int i) { return bound; } #else -layout(std140) buffer ssbo0Buffer { +layout(std140, binding=0) buffer ssbo0Buffer { ItemBound bounds[]; }; ItemBound getItemBound(int i) { @@ -40,10 +41,14 @@ ItemBound getItemBound(int i) { } #endif -uniform parametersBuffer { +struct HighlightParameters { vec2 outlineWidth; }; +layout(binding=0) uniform parametersBuffer { + HighlightParameters _parameters; +}; + void main(void) { const vec3 UNIT_BOX_VERTICES[8] = vec3[8]( vec3(0.0, 1.0, 0.0), @@ -101,6 +106,6 @@ void main(void) { pos.xyz += UNIT_BOX_NORMALS[triangleIndex]; vec4 offsetPosition; <$transformModelToMonoClipPos(cam, obj, pos, offsetPosition)$> - gl_Position.xy += normalize(offsetPosition.xy-gl_Position.xy) * outlineWidth * gl_Position.w; + gl_Position.xy += normalize(offsetPosition.xy-gl_Position.xy) * _parameters.outlineWidth * gl_Position.w; <$transformStereoClipsSpace(cam, gl_Position)$> } diff --git a/libraries/render-utils/src/Highlight_filled.slf b/libraries/render-utils/src/Highlight_filled.slf index 53530746f0..8e4da681f9 100644 --- a/libraries/render-utils/src/Highlight_filled.slf +++ b/libraries/render-utils/src/Highlight_filled.slf @@ -1,4 +1,4 @@ -// Highlight_filled.slf +// Highlight_filled.frag // Add highlight effect based on two zbuffers : one containing the total scene z and another // with the z of only the objects to be outlined. // This is the version with the fill effect inside the silhouette. diff --git a/libraries/render-utils/src/LightAmbient.slh b/libraries/render-utils/src/LightAmbient.slh index b2377d1904..797595bf47 100644 --- a/libraries/render-utils/src/LightAmbient.slh +++ b/libraries/render-utils/src/LightAmbient.slh @@ -6,9 +6,10 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +<@include render-utils/ShaderConstants.h@> <@func declareSkyboxMap()@> // declareSkyboxMap -uniform samplerCube skyboxMap; +layout(binding=RENDER_UTILS_TEXTURE_SKYBOX) uniform samplerCube skyboxMap; vec4 evalSkyboxLight(vec3 direction, float lod) { // textureQueryLevels is not available until #430, so we require explicit lod diff --git a/libraries/render-utils/src/LightClusterGrid.slh b/libraries/render-utils/src/LightClusterGrid.slh index 709e8c0f70..8f57169ace 100644 --- a/libraries/render-utils/src/LightClusterGrid.slh +++ b/libraries/render-utils/src/LightClusterGrid.slh @@ -10,7 +10,7 @@ <@if not RENDER_LIGHT_CLUSTER_GRID_SLH@> <@def RENDER_LIGHT_CLUSTER_GRID_SLH@> - +<@include render-utils/ShaderConstants.h@> struct FrustumGrid { float frustumNear; @@ -24,7 +24,7 @@ struct FrustumGrid { mat4 eyeToWorldMat; }; -layout(std140) uniform frustumGridBuffer { +layout(std140, binding=RENDER_UTILS_BUFFER_LIGHT_CLUSTER_FRUSTUM_GRID) uniform frustumGridBuffer { FrustumGrid frustumGrid; }; @@ -60,11 +60,11 @@ float projection_getFar(mat4 projection) { #define GRID_FETCH_BUFFER(i) i!> <@endif@> -layout(std140) uniform clusterGridBuffer { +layout(std140, binding=RENDER_UTILS_BUFFER_LIGHT_CLUSTER_GRID) uniform clusterGridBuffer { GRID_INDEX_TYPE _clusterGridTable[GRID_NUM_ELEMENTS]; }; -layout(std140) uniform clusterContentBuffer { +layout(std140, binding=RENDER_UTILS_BUFFER_LIGHT_CLUSTER_CONTENT) uniform clusterContentBuffer { GRID_INDEX_TYPE _clusterGridContent[GRID_NUM_ELEMENTS]; }; diff --git a/libraries/render-utils/src/LightClusters.cpp b/libraries/render-utils/src/LightClusters.cpp index 87698cab44..ae484f868f 100644 --- a/libraries/render-utils/src/LightClusters.cpp +++ b/libraries/render-utils/src/LightClusters.cpp @@ -12,28 +12,22 @@ #include #include +#include #include "RenderUtilsLogging.h" +#include "render-utils/ShaderConstants.h" #include "StencilMaskPass.h" -enum LightClusterGridShader_MapSlot { - DEFERRED_BUFFER_LINEAR_DEPTH_UNIT = 0, - DEFERRED_BUFFER_COLOR_UNIT = 1, - DEFERRED_BUFFER_NORMAL_UNIT = 2, - DEFERRED_BUFFER_EMISSIVE_UNIT = 3, - DEFERRED_BUFFER_DEPTH_UNIT = 4, -}; +namespace ru { + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; +} -enum LightClusterGridShader_BufferSlot { - DEFERRED_FRAME_TRANSFORM_BUFFER_SLOT = 0, - CAMERA_CORRECTION_BUFFER_SLOT = 1, - LIGHT_GPU_SLOT = render::ShapePipeline::Slot::LIGHT_ARRAY_BUFFER, - LIGHT_INDEX_GPU_SLOT = 7, - LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT = 8, - LIGHT_CLUSTER_GRID_CLUSTER_GRID_SLOT = 9, - LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT = 10, -}; +namespace gr { + using graphics::slot::texture::Texture; + using graphics::slot::buffer::Buffer; +} FrustumGrid::FrustumGrid(const FrustumGrid& source) : frustumNear(source.frustumNear), @@ -595,16 +589,6 @@ void DebugLightClusters::configure(const Config& config) { const gpu::PipelinePointer DebugLightClusters::getDrawClusterGridPipeline() { if (!_drawClusterGrid) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::lightClusters_drawGrid); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("frustumGridBuffer"), LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("clusterGridBuffer"), LIGHT_CLUSTER_GRID_CLUSTER_GRID_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("clusterContentBuffer"), LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT)); - - - gpu::Shader::makeProgram(*program, slotBindings); - - auto state = std::make_shared(); state->setDepthTest(true, false, gpu::LESS_EQUAL); @@ -621,19 +605,6 @@ const gpu::PipelinePointer DebugLightClusters::getDrawClusterGridPipeline() { const gpu::PipelinePointer DebugLightClusters::getDrawClusterFromDepthPipeline() { if (!_drawClusterFromDepth) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::lightClusters_drawClusterFromDepth); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("frustumGridBuffer"), LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("clusterGridBuffer"), LIGHT_CLUSTER_GRID_CLUSTER_GRID_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("clusterContentBuffer"), LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("linearZeyeMap"), DEFERRED_BUFFER_LINEAR_DEPTH_UNIT)); - - slotBindings.insert(gpu::Shader::Binding(std::string("cameraCorrectionBuffer"), CAMERA_CORRECTION_BUFFER_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), DEFERRED_FRAME_TRANSFORM_BUFFER_SLOT)); - - gpu::Shader::makeProgram(*program, slotBindings); - - auto state = std::make_shared(); // Blend on transparent @@ -648,20 +619,6 @@ const gpu::PipelinePointer DebugLightClusters::getDrawClusterFromDepthPipeline() const gpu::PipelinePointer DebugLightClusters::getDrawClusterContentPipeline() { if (!_drawClusterContent) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::lightClusters_drawClusterContent); - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("lightBuffer"), LIGHT_GPU_SLOT)); - - slotBindings.insert(gpu::Shader::Binding(std::string("frustumGridBuffer"), LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("clusterGridBuffer"), LIGHT_CLUSTER_GRID_CLUSTER_GRID_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("clusterContentBuffer"), LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("linearZeyeMap"), DEFERRED_BUFFER_LINEAR_DEPTH_UNIT)); - - slotBindings.insert(gpu::Shader::Binding(std::string("cameraCorrectionBuffer"), CAMERA_CORRECTION_BUFFER_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), DEFERRED_FRAME_TRANSFORM_BUFFER_SLOT)); - - gpu::Shader::makeProgram(*program, slotBindings); - - auto state = std::make_shared(); // Blend on transparent @@ -705,41 +662,42 @@ void DebugLightClusters::run(const render::RenderContextPointer& renderContext, batch.setModelTransform(Transform()); // Bind the Light CLuster data strucutre - batch.setUniformBuffer(LIGHT_GPU_SLOT, lightClusters->_lightStage->getLightArrayBuffer()); - batch.setUniformBuffer(LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT, lightClusters->_frustumGridBuffer); - batch.setUniformBuffer(LIGHT_CLUSTER_GRID_CLUSTER_GRID_SLOT, lightClusters->_clusterGridBuffer); - batch.setUniformBuffer(LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT, lightClusters->_clusterContentBuffer); + // FIXME consolidate code with DeferredLightingEffect logic that does the same thing + batch.setUniformBuffer(gr::Buffer::Light, lightClusters->_lightStage->getLightArrayBuffer()); + batch.setUniformBuffer(ru::Buffer::LightClusterFrustumGrid, lightClusters->_frustumGridBuffer); + batch.setUniformBuffer(ru::Buffer::LightClusterGrid, lightClusters->_clusterGridBuffer); + batch.setUniformBuffer(ru::Buffer::LightClusterContent, lightClusters->_clusterContentBuffer); if (doDrawClusterFromDepth) { batch.setPipeline(getDrawClusterFromDepthPipeline()); - batch.setUniformBuffer(DEFERRED_FRAME_TRANSFORM_BUFFER_SLOT, deferredTransform->getFrameTransformBuffer()); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, deferredTransform->getFrameTransformBuffer()); if (linearDepthTarget) { - batch.setResourceTexture(DEFERRED_BUFFER_LINEAR_DEPTH_UNIT, linearDepthTarget->getLinearDepthTexture()); + batch.setResourceTexture(ru::Texture::DeferredLinearZEye, linearDepthTarget->getLinearDepthTexture()); } batch.draw(gpu::TRIANGLE_STRIP, 4, 0); - batch.setResourceTexture(DEFERRED_BUFFER_LINEAR_DEPTH_UNIT, nullptr); - batch.setUniformBuffer(DEFERRED_FRAME_TRANSFORM_BUFFER_SLOT, nullptr); + batch.setResourceTexture(ru::Texture::DeferredLinearZEye, nullptr); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, nullptr); } if (doDrawContent) { // bind the one gpu::Pipeline we need batch.setPipeline(getDrawClusterContentPipeline()); - batch.setUniformBuffer(DEFERRED_FRAME_TRANSFORM_BUFFER_SLOT, deferredTransform->getFrameTransformBuffer()); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, deferredTransform->getFrameTransformBuffer()); if (linearDepthTarget) { - batch.setResourceTexture(DEFERRED_BUFFER_LINEAR_DEPTH_UNIT, linearDepthTarget->getLinearDepthTexture()); + batch.setResourceTexture(ru::Texture::DeferredLinearZEye, linearDepthTarget->getLinearDepthTexture()); } batch.draw(gpu::TRIANGLE_STRIP, 4, 0); - batch.setResourceTexture(DEFERRED_BUFFER_LINEAR_DEPTH_UNIT, nullptr); - batch.setUniformBuffer(DEFERRED_FRAME_TRANSFORM_BUFFER_SLOT, nullptr); + batch.setResourceTexture(ru::Texture::DeferredLinearZEye, nullptr); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, nullptr); } }); @@ -756,14 +714,14 @@ void DebugLightClusters::run(const render::RenderContextPointer& renderContext, drawGridAndCleanBatch.drawInstanced(summedDims.x, gpu::LINES, 24, 0); } - drawGridAndCleanBatch.setUniformBuffer(LIGHT_GPU_SLOT, nullptr); - drawGridAndCleanBatch.setUniformBuffer(LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT, nullptr); - drawGridAndCleanBatch.setUniformBuffer(LIGHT_CLUSTER_GRID_CLUSTER_GRID_SLOT, nullptr); - drawGridAndCleanBatch.setUniformBuffer(LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT, nullptr); + drawGridAndCleanBatch.setUniformBuffer(gr::Buffer::Light, nullptr); + drawGridAndCleanBatch.setUniformBuffer(ru::Buffer::LightClusterFrustumGrid, nullptr); + drawGridAndCleanBatch.setUniformBuffer(ru::Buffer::LightClusterGrid, nullptr); + drawGridAndCleanBatch.setUniformBuffer(ru::Buffer::LightClusterContent, nullptr); - drawGridAndCleanBatch.setResourceTexture(DEFERRED_BUFFER_COLOR_UNIT, nullptr); - drawGridAndCleanBatch.setResourceTexture(DEFERRED_BUFFER_NORMAL_UNIT, nullptr); - drawGridAndCleanBatch.setResourceTexture(DEFERRED_BUFFER_EMISSIVE_UNIT, nullptr); - drawGridAndCleanBatch.setResourceTexture(DEFERRED_BUFFER_DEPTH_UNIT, nullptr); + drawGridAndCleanBatch.setResourceTexture(ru::Texture::DeferredColor, nullptr); + drawGridAndCleanBatch.setResourceTexture(ru::Texture::DeferredNormal, nullptr); + drawGridAndCleanBatch.setResourceTexture(ru::Texture::DeferredSpecular, nullptr); + drawGridAndCleanBatch.setResourceTexture(ru::Texture::DeferredLinearZEye, nullptr); }); -} \ No newline at end of file +} diff --git a/libraries/render-utils/src/LightDirectional.slh b/libraries/render-utils/src/LightDirectional.slh index b6e1720a2c..1490a2ff25 100644 --- a/libraries/render-utils/src/LightDirectional.slh +++ b/libraries/render-utils/src/LightDirectional.slh @@ -7,7 +7,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // - +<@include ShadingModel.slh@> <@func declareLightingDirectional(supportScattering)@> diff --git a/libraries/render-utils/src/LightLocal.slh b/libraries/render-utils/src/LightLocal.slh index 06f8871e24..91f0b4fd20 100644 --- a/libraries/render-utils/src/LightLocal.slh +++ b/libraries/render-utils/src/LightLocal.slh @@ -9,17 +9,15 @@ // Everything about light <@include graphics/Light.slh@> -<$declareLightBuffer(256)$> <@include LightingModel.slh@> - - <@include LightPoint.slh@> -<$declareLightingPoint(supportScattering)$> <@include LightSpot.slh@> -<$declareLightingSpot(supportScattering)$> - <@include LightClusterGrid.slh@> +<$declareLightBuffer(256)$> +<$declareLightingPoint(supportScattering)$> +<$declareLightingSpot(supportScattering)$> + vec4 evalLocalLighting(ivec3 cluster, int numLights, vec3 fragWorldPos, SurfaceData surface, float fragMetallic, vec3 fragFresnel, vec3 fragAlbedo, float fragScattering, vec4 midNormalCurvature, vec4 lowNormalCurvature, float opacity) { @@ -145,4 +143,5 @@ vec4 evalLocalLighting(ivec3 cluster, int numLights, vec3 fragWorldPos, SurfaceD fragColor.rgb += fragDiffuse; fragColor.rgb += evalSpecularWithOpacity(fragSpecular, opacity); return fragColor; -} \ No newline at end of file +} + diff --git a/libraries/render-utils/src/LightPoint.slh b/libraries/render-utils/src/LightPoint.slh index 91a1260fcc..1a361e3717 100644 --- a/libraries/render-utils/src/LightPoint.slh +++ b/libraries/render-utils/src/LightPoint.slh @@ -7,7 +7,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // - +<@include ShadingModel.slh@> <@func declareLightingPoint(supportScattering)@> diff --git a/libraries/render-utils/src/LightSpot.slh b/libraries/render-utils/src/LightSpot.slh index 73c5bd9559..2546c0225c 100644 --- a/libraries/render-utils/src/LightSpot.slh +++ b/libraries/render-utils/src/LightSpot.slh @@ -7,7 +7,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // - +<@include ShadingModel.slh@> <@func declareLightingSpot(supportScattering)@> diff --git a/libraries/render-utils/src/LightingModel.slh b/libraries/render-utils/src/LightingModel.slh index fe2d684c32..10a2afabef 100644 --- a/libraries/render-utils/src/LightingModel.slh +++ b/libraries/render-utils/src/LightingModel.slh @@ -11,6 +11,7 @@ <@if not LIGHTING_MODEL_SLH@> <@def LIGHTING_MODEL_SLH@> +<@include render-utils/ShaderConstants.h@> <@func declareLightingModel()@> struct LightingModel { @@ -21,7 +22,8 @@ struct LightingModel { vec4 _Haze_spareyzw; }; -uniform lightingModelBuffer{ +// See DeferredShader_BufferSlot in DeferredLightingEffect.cpp +layout(binding=RENDER_UTILS_BUFFER_LIGHT_MODEL) uniform lightingModelBuffer{ LightingModel lightingModel; }; @@ -106,225 +108,4 @@ vec3 getFresnelF0(float metallic, vec3 metalF0) { } <@endif@> -<@func declareBeckmannSpecular()@> - -uniform sampler2D scatteringSpecularBeckmann; - -float fetchSpecularBeckmann(float ndoth, float roughness) { - return pow(2.0 * texture(scatteringSpecularBeckmann, vec2(ndoth, roughness)).r, 10.0); -} - -vec2 skinSpecular(SurfaceData surface, float intensity) { - vec2 result = vec2(0.0, 1.0); - if (surface.ndotl > 0.0) { - float PH = fetchSpecularBeckmann(surface.ndoth, surface.roughness); - float F = fresnelSchlickScalar(0.028, surface); - float frSpec = max(PH * F / dot(surface.halfDir, surface.halfDir), 0.0); - result.x = surface.ndotl * intensity * frSpec; - result.y -= F; - } - - return result; -} -<@endfunc@> - -<@func declareEvalPBRShading()@> - -float evalSmithInvG1(float roughness4, float ndotd) { - return ndotd + sqrt(roughness4+ndotd*ndotd*(1.0-roughness4)); -} - -SurfaceData initSurfaceData(float roughness, vec3 normal, vec3 eyeDir) { - SurfaceData surface; - surface.eyeDir = eyeDir; - surface.normal = normal; - surface.roughness = mix(0.01, 1.0, roughness); - surface.roughness2 = surface.roughness * surface.roughness; - surface.roughness4 = surface.roughness2 * surface.roughness2; - surface.ndotv = clamp(dot(normal, eyeDir), 0.0, 1.0); - surface.smithInvG1NdotV = evalSmithInvG1(surface.roughness4, surface.ndotv); - - // These values will be set when we know the light direction, in updateSurfaceDataWithLight - surface.ndoth = 0.0; - surface.ndotl = 0.0; - surface.ldoth = 0.0; - surface.lightDir = vec3(0,0,1); - surface.halfDir = vec3(0,0,1); - - return surface; -} - -void updateSurfaceDataWithLight(inout SurfaceData surface, vec3 lightDir) { - surface.lightDir = lightDir; - surface.halfDir = normalize(surface.eyeDir + lightDir); - vec3 dots; - dots.x = dot(surface.normal, surface.halfDir); - dots.y = dot(surface.normal, surface.lightDir); - dots.z = dot(surface.halfDir, surface.lightDir); - dots = clamp(dots, vec3(0), vec3(1)); - surface.ndoth = dots.x; - surface.ndotl = dots.y; - surface.ldoth = dots.z; -} - -vec3 fresnelSchlickColor(vec3 fresnelColor, SurfaceData surface) { - float base = 1.0 - surface.ldoth; - //float exponential = pow(base, 5.0); - float base2 = base * base; - float exponential = base * base2 * base2; - return vec3(exponential) + fresnelColor * (1.0 - exponential); -} - -float fresnelSchlickScalar(float fresnelScalar, SurfaceData surface) { - float base = 1.0 - surface.ldoth; - //float exponential = pow(base, 5.0); - float base2 = base * base; - float exponential = base * base2 * base2; - return (exponential) + fresnelScalar * (1.0 - exponential); -} - -float specularDistribution(SurfaceData surface) { - // See https://www.khronos.org/assets/uploads/developers/library/2017-web3d/glTF-2.0-Launch_Jun17.pdf - // for details of equations, especially page 20 - float denom = (surface.ndoth*surface.ndoth * (surface.roughness4 - 1.0) + 1.0); - denom *= denom; - // Add geometric factors G1(n,l) and G1(n,v) - float smithInvG1NdotL = evalSmithInvG1(surface.roughness4, surface.ndotl); - denom *= surface.smithInvG1NdotV * smithInvG1NdotL; - // Don't divide by PI as this is part of the light normalization factor - float power = surface.roughness4 / denom; - return power; -} - -// Frag Shading returns the diffuse amount as W and the specular rgb as xyz -vec4 evalPBRShading(float metallic, vec3 fresnel, SurfaceData surface) { - // Incident angle attenuation - float angleAttenuation = surface.ndotl; - - // Specular Lighting - vec3 fresnelColor = fresnelSchlickColor(fresnel, surface); - float power = specularDistribution(surface); - vec3 specular = fresnelColor * power * angleAttenuation; - float diffuse = (1.0 - metallic) * angleAttenuation * (1.0 - fresnelColor.x); - - // We don't divided by PI, as the "normalized" equations state we should, because we decide, as Naty Hoffman, that - // we wish to have a similar color as raw albedo on a perfectly diffuse surface perpendicularly lit - // by a white light of intensity 1. But this is an arbitrary normalization of what light intensity "means". - // (see http://blog.selfshadow.com/publications/s2013-shading-course/hoffman/s2013_pbs_physics_math_notes.pdf - // page 23 paragraph "Punctual light sources") - return vec4(specular, diffuse); -} - -// Frag Shading returns the diffuse amount as W and the specular rgb as xyz -vec4 evalPBRShadingDielectric(SurfaceData surface, float fresnel) { - // Incident angle attenuation - float angleAttenuation = surface.ndotl; - - // Specular Lighting - float fresnelScalar = fresnelSchlickScalar(fresnel, surface); - float power = specularDistribution(surface); - vec3 specular = vec3(fresnelScalar) * power * angleAttenuation; - float diffuse = angleAttenuation * (1.0 - fresnelScalar); - - // We don't divided by PI, as the "normalized" equations state we should, because we decide, as Naty Hoffman, that - // we wish to have a similar color as raw albedo on a perfectly diffuse surface perpendicularly lit - // by a white light of intensity 1. But this is an arbitrary normalization of what light intensity "means". - // (see http://blog.selfshadow.com/publications/s2013-shading-course/hoffman/s2013_pbs_physics_math_notes.pdf - // page 23 paragraph "Punctual light sources") - return vec4(specular, diffuse); -} - -vec4 evalPBRShadingMetallic(SurfaceData surface, vec3 fresnel) { - // Incident angle attenuation - float angleAttenuation = surface.ndotl; - - // Specular Lighting - vec3 fresnelColor = fresnelSchlickColor(fresnel, surface); - float power = specularDistribution(surface); - vec3 specular = fresnelColor * power * angleAttenuation; - - // We don't divided by PI, as the "normalized" equations state we should, because we decide, as Naty Hoffman, that - // we wish to have a similar color as raw albedo on a perfectly diffuse surface perpendicularly lit - // by a white light of intensity 1. But this is an arbitrary normalization of what light intensity "means". - // (see http://blog.selfshadow.com/publications/s2013-shading-course/hoffman/s2013_pbs_physics_math_notes.pdf - // page 23 paragraph "Punctual light sources") - return vec4(specular, 0.f); -} - -<@endfunc@> - - - -<$declareEvalPBRShading()$> - -void evalFragShading(out vec3 diffuse, out vec3 specular, - float metallic, vec3 fresnel, SurfaceData surface, vec3 albedo) { - vec4 shading = evalPBRShading(metallic, fresnel, surface); - diffuse = vec3(shading.w); - diffuse *= mix(vec3(1.0), albedo, isAlbedoEnabled()); - specular = shading.xyz; -} - -<$declareBeckmannSpecular()$> -<@include SubsurfaceScattering.slh@> -<$declareSubsurfaceScatteringBRDF()$> - - -void evalFragShading(out vec3 diffuse, out vec3 specular, - float metallic, vec3 fresnel, SurfaceData surface, vec3 albedo, - float scattering, vec4 midNormalCurvature, vec4 lowNormalCurvature) { - if (scattering * isScatteringEnabled() > 0.0) { - vec3 brdf = evalSkinBRDF(surface.lightDir, surface.normal, midNormalCurvature.xyz, lowNormalCurvature.xyz, lowNormalCurvature.w); - diffuse = mix(vec3(surface.ndotl), brdf, scattering); - - // Specular Lighting - vec2 specularBrdf = skinSpecular(surface, 1.0); - - diffuse *= specularBrdf.y; - specular = vec3(specularBrdf.x); - } else { - vec4 shading = evalPBRShading(metallic, fresnel, surface); - diffuse = vec3(shading.w); - specular = shading.xyz; - } - diffuse *= mix(vec3(1.0), albedo, isAlbedoEnabled()); -} - - -void evalFragShadingScattering(out vec3 diffuse, out vec3 specular, - float metallic, vec3 fresnel, SurfaceData surface, vec3 albedo, - float scattering, vec4 midNormalCurvature, vec4 lowNormalCurvature) { - vec3 brdf = evalSkinBRDF(surface.lightDir, surface.normal, midNormalCurvature.xyz, lowNormalCurvature.xyz, lowNormalCurvature.w); - float NdotL = surface.ndotl; - diffuse = mix(vec3(NdotL), brdf, scattering); - - // Specular Lighting - vec2 specularBrdf = skinSpecular(surface, 1.0); - - diffuse *= specularBrdf.y; - specular = vec3(specularBrdf.x); - diffuse *= mix(vec3(1.0), albedo, isAlbedoEnabled()); -} - -void evalFragShadingGloss(out vec3 diffuse, out vec3 specular, - float metallic, vec3 fresnel, SurfaceData surface, vec3 albedo) { - vec4 shading = evalPBRShading(metallic, fresnel, surface); - diffuse = vec3(shading.w); - diffuse *= mix(vec3(1.0), albedo, isAlbedoEnabled()); - specular = shading.xyz; -} - -vec3 evalSpecularWithOpacity(vec3 specular, float opacity) { - return specular / opacity; -} - -<@if not GETFRESNEL0@> -<@def GETFRESNEL0@> -vec3 getFresnelF0(float metallic, vec3 metalF0) { - // Enable continuous metallness value by lerping between dielectric - // and metal fresnel F0 value based on the "metallic" parameter - return mix(vec3(0.03), metalF0, metallic); -} -<@endif@> - <@endif@> diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 7cf8bc8297..9e335c9213 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -13,7 +13,9 @@ #include #include +#include +#include "render-utils/ShaderConstants.h" #include "DeferredLightingEffect.h" #include "RenderPipelines.h" @@ -395,7 +397,7 @@ void ModelMeshPartPayload::bindMesh(gpu::Batch& batch) { void ModelMeshPartPayload::bindTransform(gpu::Batch& batch, RenderArgs::RenderMode renderMode) const { if (_clusterBuffer) { - batch.setUniformBuffer(ShapePipeline::Slot::BUFFER::SKINNING, _clusterBuffer); + batch.setUniformBuffer(graphics::slot::buffer::Skinning, _clusterBuffer); } batch.setModelTransform(_transform); } diff --git a/libraries/render-utils/src/RenderCommonTask.cpp b/libraries/render-utils/src/RenderCommonTask.cpp index c2181b7613..9aee0e57a4 100644 --- a/libraries/render-utils/src/RenderCommonTask.cpp +++ b/libraries/render-utils/src/RenderCommonTask.cpp @@ -9,10 +9,23 @@ #include "RenderCommonTask.h" #include +#include +#include "render-utils/ShaderConstants.h" #include "DeferredLightingEffect.h" #include "RenderUtilsLogging.h" +namespace ru { + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; +} + +namespace gr { + using graphics::slot::texture::Texture; + using graphics::slot::buffer::Buffer; +} + + using namespace render; extern void initForwardPipelines(ShapePlumber& plumber); @@ -46,7 +59,7 @@ void DrawOverlay3D::run(const RenderContextPointer& renderContext, const Inputs& const auto& inItems = inputs.get0(); const auto& lightingModel = inputs.get1(); - const auto jitter = inputs.get2(); + const auto jitter = inputs.get2(); config->setNumDrawn((int)inItems.size()); emit config->numDrawnChanged(); @@ -76,11 +89,11 @@ void DrawOverlay3D::run(const RenderContextPointer& renderContext, const Inputs& args->getViewFrustum().evalViewTransform(viewMat); batch.setProjectionTransform(projMat); - batch.setProjectionJitter(jitter.x, jitter.y); - batch.setViewTransform(viewMat); + batch.setProjectionJitter(jitter.x, jitter.y); + batch.setViewTransform(viewMat); // Setup lighting model for all items; - batch.setUniformBuffer(render::ShapePipeline::Slot::LIGHTING_MODEL, lightingModel->getParametersBuffer()); + batch.setUniformBuffer(ru::Buffer::LightModel, lightingModel->getParametersBuffer()); renderShapes(renderContext, _shapePlumber, inItems, _maxDrawn); args->_batch = nullptr; diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 0b05977265..ea9655d26d 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -29,6 +30,7 @@ #include #include "RenderHifi.h" +#include "render-utils/ShaderConstants.h" #include "RenderCommonTask.h" #include "LightingModel.h" #include "StencilMaskPass.h" @@ -56,6 +58,17 @@ using namespace render; extern void initDeferredPipelines(render::ShapePlumber& plumber, const render::ShapePipeline::BatchSetter& batchSetter, const render::ShapePipeline::ItemSetter& itemSetter); +namespace ru { + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; +} + +namespace gr { + using graphics::slot::texture::Texture; + using graphics::slot::buffer::Buffer; +} + + RenderDeferredTask::RenderDeferredTask() { } @@ -347,27 +360,18 @@ void DrawDeferred::run(const RenderContextPointer& renderContext, const Inputs& batch.setViewTransform(viewMat); // Setup lighting model for all items; - batch.setUniformBuffer(render::ShapePipeline::Slot::LIGHTING_MODEL, lightingModel->getParametersBuffer()); + batch.setUniformBuffer(ru::Buffer::LightModel, lightingModel->getParametersBuffer()); // Set the light - deferredLightingEffect->setupKeyLightBatch(args, batch, - render::ShapePipeline::Slot::KEY_LIGHT, - render::ShapePipeline::Slot::LIGHT_AMBIENT_BUFFER, - render::ShapePipeline::Slot::LIGHT_AMBIENT_MAP); - - deferredLightingEffect->setupLocalLightsBatch(batch, - render::ShapePipeline::Slot::LIGHT_ARRAY_BUFFER, - render::ShapePipeline::Slot::LIGHT_CLUSTER_GRID_CLUSTER_GRID_SLOT, - render::ShapePipeline::Slot::LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT, - render::ShapePipeline::Slot::LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT, - lightClusters); + deferredLightingEffect->setupKeyLightBatch(args, batch); + deferredLightingEffect->setupLocalLightsBatch(batch, lightClusters); // Setup haze if current zone has haze auto hazeStage = args->_scene->getStage(); if (hazeStage && hazeStage->_currentFrame._hazes.size() > 0) { graphics::HazePointer hazePointer = hazeStage->getHaze(hazeStage->_currentFrame._hazes.front()); if (hazePointer) { - batch.setUniformBuffer(render::ShapePipeline::Slot::HAZE_MODEL, hazePointer->getHazeParametersBuffer()); + batch.setUniformBuffer(ru::Buffer::HazeParams, hazePointer->getHazeParametersBuffer()); } } @@ -385,16 +389,8 @@ void DrawDeferred::run(const RenderContextPointer& renderContext, const Inputs& args->_batch = nullptr; args->_globalShapeKey = 0; - deferredLightingEffect->unsetLocalLightsBatch(batch, - render::ShapePipeline::Slot::LIGHT_ARRAY_BUFFER, - render::ShapePipeline::Slot::LIGHT_CLUSTER_GRID_CLUSTER_GRID_SLOT, - render::ShapePipeline::Slot::LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT, - render::ShapePipeline::Slot::LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT); - - deferredLightingEffect->unsetKeyLightBatch(batch, - render::ShapePipeline::Slot::KEY_LIGHT, - render::ShapePipeline::Slot::LIGHT_AMBIENT_BUFFER, - render::ShapePipeline::Slot::LIGHT_AMBIENT_MAP); + deferredLightingEffect->unsetLocalLightsBatch(batch); + deferredLightingEffect->unsetKeyLightBatch(batch); }); config->setNumDrawn((int)inItems.size()); @@ -429,7 +425,7 @@ void DrawStateSortDeferred::run(const RenderContextPointer& renderContext, const batch.setViewTransform(viewMat); // Setup lighting model for all items; - batch.setUniformBuffer(render::ShapePipeline::Slot::LIGHTING_MODEL, lightingModel->getParametersBuffer()); + batch.setUniformBuffer(ru::Buffer::LightModel, lightingModel->getParametersBuffer()); // From the lighting model define a global shapeKey ORED with individiual keys ShapeKey::Builder keyBuilder; diff --git a/libraries/render-utils/src/RenderForwardTask.cpp b/libraries/render-utils/src/RenderForwardTask.cpp index c6cc97f0b6..c2d39128ba 100755 --- a/libraries/render-utils/src/RenderForwardTask.cpp +++ b/libraries/render-utils/src/RenderForwardTask.cpp @@ -17,12 +17,13 @@ #include #include #include - +#include #include #include #include "RenderHifi.h" +#include "render-utils/ShaderConstants.h" #include "StencilMaskPass.h" #include "ZoneRenderer.h" #include "FadeEffect.h" @@ -33,7 +34,18 @@ #include "RenderCommonTask.h" #include "LightStage.h" +namespace ru { + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; +} + +namespace gr { + using graphics::slot::texture::Texture; + using graphics::slot::buffer::Buffer; +} + using namespace render; + extern void initForwardPipelines(ShapePlumber& plumber); void RenderForwardTask::build(JobModel& task, const render::Varying& input, render::Varying& output) { @@ -176,14 +188,14 @@ void PrepareForward::run(const RenderContextPointer& renderContext, const Inputs } if (keySunLight) { - batch.setUniformBuffer(render::ShapePipeline::Slot::KEY_LIGHT, keySunLight->getLightSchemaBuffer()); + batch.setUniformBuffer(gr::Buffer::KeyLight, keySunLight->getLightSchemaBuffer()); } if (keyAmbiLight) { - batch.setUniformBuffer(render::ShapePipeline::Slot::LIGHT_AMBIENT_BUFFER, keyAmbiLight->getAmbientSchemaBuffer()); + batch.setUniformBuffer(gr::Buffer::AmbientLight, keyAmbiLight->getAmbientSchemaBuffer()); if (keyAmbiLight->getAmbientMap()) { - batch.setResourceTexture(render::ShapePipeline::Slot::LIGHT_AMBIENT_MAP, keyAmbiLight->getAmbientMap()); + batch.setResourceTexture(ru::Texture::Skybox, keyAmbiLight->getAmbientMap()); } } }); @@ -209,7 +221,7 @@ void DrawForward::run(const RenderContextPointer& renderContext, const Inputs& i batch.setModelTransform(Transform()); // Setup lighting model for all items; - batch.setUniformBuffer(render::ShapePipeline::Slot::LIGHTING_MODEL, lightingModel->getParametersBuffer()); + batch.setUniformBuffer(ru::Buffer::LightModel, lightingModel->getParametersBuffer()); // From the lighting model define a global shapeKey ORED with individiual keys ShapeKey::Builder keyBuilder; diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index f44325d353..704b1d7663 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -18,7 +18,9 @@ #include #include #include +#include +#include "render-utils/ShaderConstants.h" #include "StencilMaskPass.h" #include "DeferredLightingEffect.h" #include "TextureCache.h" @@ -26,6 +28,16 @@ using namespace render; using namespace std::placeholders; +namespace ru { + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; +} + +namespace gr { + using graphics::slot::texture::Texture; + using graphics::slot::buffer::Buffer; +} + void initDeferredPipelines(ShapePlumber& plumber, const render::ShapePipeline::BatchSetter& batchSetter, const render::ShapePipeline::ItemSetter& itemSetter); void initForwardPipelines(ShapePlumber& plumber); void initZPassPipelines(ShapePlumber& plumber, gpu::StatePointer state); @@ -319,11 +331,11 @@ void addPlumberPipeline(ShapePlumber& plumber, void batchSetter(const ShapePipeline& pipeline, gpu::Batch& batch, RenderArgs* args) { // Set a default albedo map - batch.setResourceTexture(render::ShapePipeline::Slot::MAP::ALBEDO, + batch.setResourceTexture(gr::Texture::MaterialAlbedo, DependencyManager::get()->getWhiteTexture()); // Set a default material - if (pipeline.locations->materialBufferUnit >= 0) { + if (pipeline.locations->materialBufferUnit) { // Create a default schema static bool isMaterialSet = false; static graphics::Material material; @@ -336,7 +348,7 @@ void batchSetter(const ShapePipeline& pipeline, gpu::Batch& batch, RenderArgs* a } // Set a default schema - batch.setUniformBuffer(ShapePipeline::Slot::BUFFER::MATERIAL, material.getSchemaBuffer()); + batch.setUniformBuffer(gr::Buffer::Material, material.getSchemaBuffer()); } } @@ -345,11 +357,8 @@ void lightBatchSetter(const ShapePipeline& pipeline, gpu::Batch& batch, RenderAr batchSetter(pipeline, batch, args); // Set the light - if (pipeline.locations->keyLightBufferUnit >= 0) { - DependencyManager::get()->setupKeyLightBatch(args, batch, - pipeline.locations->keyLightBufferUnit, - pipeline.locations->lightAmbientBufferUnit, - pipeline.locations->lightAmbientMapUnit); + if (pipeline.locations->keyLightBufferUnit) { + DependencyManager::get()->setupKeyLightBatch(args, batch); } } @@ -394,8 +403,8 @@ void RenderPipelines::bindMaterial(const graphics::MaterialPointer& material, gp auto textureCache = DependencyManager::get(); - batch.setUniformBuffer(ShapePipeline::Slot::BUFFER::MATERIAL, material->getSchemaBuffer()); - batch.setUniformBuffer(ShapePipeline::Slot::BUFFER::TEXMAPARRAY, material->getTexMapArrayBuffer()); + batch.setUniformBuffer(gr::Buffer::Material, material->getSchemaBuffer()); + batch.setUniformBuffer(gr::Buffer::TexMapArray, material->getTexMapArrayBuffer()); const auto& materialKey = material->getKey(); const auto& textureMaps = material->getTextureMaps(); @@ -411,9 +420,9 @@ void RenderPipelines::bindMaterial(const graphics::MaterialPointer& material, gp if (materialKey.isAlbedoMap()) { auto itr = textureMaps.find(graphics::MaterialKey::ALBEDO_MAP); if (enableTextures && itr != textureMaps.end() && itr->second->isDefined()) { - drawMaterialTextures->setTexture(ShapePipeline::Slot::ALBEDO, itr->second->getTextureView()); + drawMaterialTextures->setTexture(gr::Texture::MaterialAlbedo, itr->second->getTextureView()); } else { - drawMaterialTextures->setTexture(ShapePipeline::Slot::ALBEDO, textureCache->getWhiteTexture()); + drawMaterialTextures->setTexture(gr::Texture::MaterialAlbedo, textureCache->getWhiteTexture()); } } @@ -421,9 +430,9 @@ void RenderPipelines::bindMaterial(const graphics::MaterialPointer& material, gp if (materialKey.isRoughnessMap()) { auto itr = textureMaps.find(graphics::MaterialKey::ROUGHNESS_MAP); if (enableTextures && itr != textureMaps.end() && itr->second->isDefined()) { - drawMaterialTextures->setTexture(ShapePipeline::Slot::ROUGHNESS, itr->second->getTextureView()); + drawMaterialTextures->setTexture(gr::Texture::MaterialRoughness, itr->second->getTextureView()); } else { - drawMaterialTextures->setTexture(ShapePipeline::Slot::ROUGHNESS, textureCache->getWhiteTexture()); + drawMaterialTextures->setTexture(gr::Texture::MaterialRoughness, textureCache->getWhiteTexture()); } } @@ -431,9 +440,9 @@ void RenderPipelines::bindMaterial(const graphics::MaterialPointer& material, gp if (materialKey.isNormalMap()) { auto itr = textureMaps.find(graphics::MaterialKey::NORMAL_MAP); if (enableTextures && itr != textureMaps.end() && itr->second->isDefined()) { - drawMaterialTextures->setTexture(ShapePipeline::Slot::NORMAL, itr->second->getTextureView()); + drawMaterialTextures->setTexture(gr::Texture::MaterialNormal, itr->second->getTextureView()); } else { - drawMaterialTextures->setTexture(ShapePipeline::Slot::NORMAL, textureCache->getBlueTexture()); + drawMaterialTextures->setTexture(gr::Texture::MaterialNormal, textureCache->getBlueTexture()); } } @@ -441,9 +450,9 @@ void RenderPipelines::bindMaterial(const graphics::MaterialPointer& material, gp if (materialKey.isMetallicMap()) { auto itr = textureMaps.find(graphics::MaterialKey::METALLIC_MAP); if (enableTextures && itr != textureMaps.end() && itr->second->isDefined()) { - drawMaterialTextures->setTexture(ShapePipeline::Slot::METALLIC, itr->second->getTextureView()); + drawMaterialTextures->setTexture(gr::Texture::MaterialMetallic, itr->second->getTextureView()); } else { - drawMaterialTextures->setTexture(ShapePipeline::Slot::METALLIC, textureCache->getBlackTexture()); + drawMaterialTextures->setTexture(gr::Texture::MaterialMetallic, textureCache->getBlackTexture()); } } @@ -451,9 +460,9 @@ void RenderPipelines::bindMaterial(const graphics::MaterialPointer& material, gp if (materialKey.isOcclusionMap()) { auto itr = textureMaps.find(graphics::MaterialKey::OCCLUSION_MAP); if (enableTextures && itr != textureMaps.end() && itr->second->isDefined()) { - drawMaterialTextures->setTexture(ShapePipeline::Slot::OCCLUSION, itr->second->getTextureView()); + drawMaterialTextures->setTexture(gr::Texture::MaterialOcclusion, itr->second->getTextureView()); } else { - drawMaterialTextures->setTexture(ShapePipeline::Slot::OCCLUSION, textureCache->getWhiteTexture()); + drawMaterialTextures->setTexture(gr::Texture::MaterialOcclusion, textureCache->getWhiteTexture()); } } @@ -461,9 +470,9 @@ void RenderPipelines::bindMaterial(const graphics::MaterialPointer& material, gp if (materialKey.isScatteringMap()) { auto itr = textureMaps.find(graphics::MaterialKey::SCATTERING_MAP); if (enableTextures && itr != textureMaps.end() && itr->second->isDefined()) { - drawMaterialTextures->setTexture(ShapePipeline::Slot::SCATTERING, itr->second->getTextureView()); + drawMaterialTextures->setTexture(gr::Texture::MaterialScattering, itr->second->getTextureView()); } else { - drawMaterialTextures->setTexture(ShapePipeline::Slot::SCATTERING, textureCache->getWhiteTexture()); + drawMaterialTextures->setTexture(gr::Texture::MaterialScattering, textureCache->getWhiteTexture()); } } @@ -472,16 +481,16 @@ void RenderPipelines::bindMaterial(const graphics::MaterialPointer& material, gp auto itr = textureMaps.find(graphics::MaterialKey::LIGHTMAP_MAP); if (enableTextures && itr != textureMaps.end() && itr->second->isDefined()) { - drawMaterialTextures->setTexture(ShapePipeline::Slot::EMISSIVE_LIGHTMAP, itr->second->getTextureView()); + drawMaterialTextures->setTexture(gr::Texture::MaterialEmissiveLightmap, itr->second->getTextureView()); } else { - drawMaterialTextures->setTexture(ShapePipeline::Slot::EMISSIVE_LIGHTMAP, textureCache->getGrayTexture()); + drawMaterialTextures->setTexture(gr::Texture::MaterialEmissiveLightmap, textureCache->getGrayTexture()); } } else if (materialKey.isEmissiveMap()) { auto itr = textureMaps.find(graphics::MaterialKey::EMISSIVE_MAP); if (enableTextures && itr != textureMaps.end() && itr->second->isDefined()) { - drawMaterialTextures->setTexture(ShapePipeline::Slot::EMISSIVE_LIGHTMAP, itr->second->getTextureView()); + drawMaterialTextures->setTexture(gr::Texture::MaterialEmissiveLightmap, itr->second->getTextureView()); } else { - drawMaterialTextures->setTexture(ShapePipeline::Slot::EMISSIVE_LIGHTMAP, textureCache->getBlackTexture()); + drawMaterialTextures->setTexture(gr::Texture::MaterialEmissiveLightmap, textureCache->getBlackTexture()); } } diff --git a/libraries/render-utils/src/ShadingModel.slh b/libraries/render-utils/src/ShadingModel.slh new file mode 100644 index 0000000000..6b0b7bca18 --- /dev/null +++ b/libraries/render-utils/src/ShadingModel.slh @@ -0,0 +1,237 @@ + +<@if not SHADING_MODEL_SLH@> +<@def SHADING_MODEL_SLH@> + +<@include LightingModel.slh@> + +<@func declareBeckmannSpecular()@> + +layout(binding=RENDER_UTILS_TEXTURE_SSSC_SPECULAR_BECKMANN) uniform sampler2D scatteringSpecularBeckmann; + +float fetchSpecularBeckmann(float ndoth, float roughness) { + return pow(2.0 * texture(scatteringSpecularBeckmann, vec2(ndoth, roughness)).r, 10.0); +} + +vec2 skinSpecular(SurfaceData surface, float intensity) { + vec2 result = vec2(0.0, 1.0); + if (surface.ndotl > 0.0) { + float PH = fetchSpecularBeckmann(surface.ndoth, surface.roughness); + float F = fresnelSchlickScalar(0.028, surface); + float frSpec = max(PH * F / dot(surface.halfDir, surface.halfDir), 0.0); + result.x = surface.ndotl * intensity * frSpec; + result.y -= F; + } + + return result; +} +<@endfunc@> + +<@func declareEvalPBRShading()@> + +float evalSmithInvG1(float roughness4, float ndotd) { + return ndotd + sqrt(roughness4+ndotd*ndotd*(1.0-roughness4)); +} + +SurfaceData initSurfaceData(float roughness, vec3 normal, vec3 eyeDir) { + SurfaceData surface; + surface.eyeDir = eyeDir; + surface.normal = normal; + surface.roughness = mix(0.01, 1.0, roughness); + surface.roughness2 = surface.roughness * surface.roughness; + surface.roughness4 = surface.roughness2 * surface.roughness2; + surface.ndotv = clamp(dot(normal, eyeDir), 0.0, 1.0); + surface.smithInvG1NdotV = evalSmithInvG1(surface.roughness4, surface.ndotv); + + // These values will be set when we know the light direction, in updateSurfaceDataWithLight + surface.ndoth = 0.0; + surface.ndotl = 0.0; + surface.ldoth = 0.0; + surface.lightDir = vec3(0,0,1); + surface.halfDir = vec3(0,0,1); + + return surface; +} + +void updateSurfaceDataWithLight(inout SurfaceData surface, vec3 lightDir) { + surface.lightDir = lightDir; + surface.halfDir = normalize(surface.eyeDir + lightDir); + vec3 dots; + dots.x = dot(surface.normal, surface.halfDir); + dots.y = dot(surface.normal, surface.lightDir); + dots.z = dot(surface.halfDir, surface.lightDir); + dots = clamp(dots, vec3(0), vec3(1)); + surface.ndoth = dots.x; + surface.ndotl = dots.y; + surface.ldoth = dots.z; +} + +vec3 fresnelSchlickColor(vec3 fresnelColor, SurfaceData surface) { + float base = 1.0 - surface.ldoth; + //float exponential = pow(base, 5.0); + float base2 = base * base; + float exponential = base * base2 * base2; + return vec3(exponential) + fresnelColor * (1.0 - exponential); +} + +float fresnelSchlickScalar(float fresnelScalar, SurfaceData surface) { + float base = 1.0 - surface.ldoth; + //float exponential = pow(base, 5.0); + float base2 = base * base; + float exponential = base * base2 * base2; + return (exponential) + fresnelScalar * (1.0 - exponential); +} + +float specularDistribution(SurfaceData surface) { + // See https://www.khronos.org/assets/uploads/developers/library/2017-web3d/glTF-2.0-Launch_Jun17.pdf + // for details of equations, especially page 20 + float denom = (surface.ndoth*surface.ndoth * (surface.roughness4 - 1.0) + 1.0); + denom *= denom; + // Add geometric factors G1(n,l) and G1(n,v) + float smithInvG1NdotL = evalSmithInvG1(surface.roughness4, surface.ndotl); + denom *= surface.smithInvG1NdotV * smithInvG1NdotL; + // Don't divide by PI as this is part of the light normalization factor + float power = surface.roughness4 / denom; + return power; +} + +// Frag Shading returns the diffuse amount as W and the specular rgb as xyz +vec4 evalPBRShading(float metallic, vec3 fresnel, SurfaceData surface) { + // Incident angle attenuation + float angleAttenuation = surface.ndotl; + + // Specular Lighting + vec3 fresnelColor = fresnelSchlickColor(fresnel, surface); + float power = specularDistribution(surface); + vec3 specular = fresnelColor * power * angleAttenuation; + float diffuse = (1.0 - metallic) * angleAttenuation * (1.0 - fresnelColor.x); + + // We don't divided by PI, as the "normalized" equations state we should, because we decide, as Naty Hoffman, that + // we wish to have a similar color as raw albedo on a perfectly diffuse surface perpendicularly lit + // by a white light of intensity 1. But this is an arbitrary normalization of what light intensity "means". + // (see http://blog.selfshadow.com/publications/s2013-shading-course/hoffman/s2013_pbs_physics_math_notes.pdf + // page 23 paragraph "Punctual light sources") + return vec4(specular, diffuse); +} + +// Frag Shading returns the diffuse amount as W and the specular rgb as xyz +vec4 evalPBRShadingDielectric(SurfaceData surface, float fresnel) { + // Incident angle attenuation + float angleAttenuation = surface.ndotl; + + // Specular Lighting + float fresnelScalar = fresnelSchlickScalar(fresnel, surface); + float power = specularDistribution(surface); + vec3 specular = vec3(fresnelScalar) * power * angleAttenuation; + float diffuse = angleAttenuation * (1.0 - fresnelScalar); + + // We don't divided by PI, as the "normalized" equations state we should, because we decide, as Naty Hoffman, that + // we wish to have a similar color as raw albedo on a perfectly diffuse surface perpendicularly lit + // by a white light of intensity 1. But this is an arbitrary normalization of what light intensity "means". + // (see http://blog.selfshadow.com/publications/s2013-shading-course/hoffman/s2013_pbs_physics_math_notes.pdf + // page 23 paragraph "Punctual light sources") + return vec4(specular, diffuse); +} + +vec4 evalPBRShadingMetallic(SurfaceData surface, vec3 fresnel) { + // Incident angle attenuation + float angleAttenuation = surface.ndotl; + + // Specular Lighting + vec3 fresnelColor = fresnelSchlickColor(fresnel, surface); + float power = specularDistribution(surface); + vec3 specular = fresnelColor * power * angleAttenuation; + + // We don't divided by PI, as the "normalized" equations state we should, because we decide, as Naty Hoffman, that + // we wish to have a similar color as raw albedo on a perfectly diffuse surface perpendicularly lit + // by a white light of intensity 1. But this is an arbitrary normalization of what light intensity "means". + // (see http://blog.selfshadow.com/publications/s2013-shading-course/hoffman/s2013_pbs_physics_math_notes.pdf + // page 23 paragraph "Punctual light sources") + return vec4(specular, 0.f); +} + +<@endfunc@> + + + +<$declareEvalPBRShading()$> + +void evalFragShading(out vec3 diffuse, out vec3 specular, + float metallic, vec3 fresnel, SurfaceData surface, vec3 albedo) { + vec4 shading = evalPBRShading(metallic, fresnel, surface); + diffuse = vec3(shading.w); + diffuse *= mix(vec3(1.0), albedo, isAlbedoEnabled()); + specular = shading.xyz; +} + +<$declareBeckmannSpecular()$> +<@include SubsurfaceScattering.slh@> +<$declareSubsurfaceScatteringBRDF()$> + + +void evalFragShading(out vec3 diffuse, out vec3 specular, + float metallic, vec3 fresnel, SurfaceData surface, vec3 albedo, + float scattering, vec4 midNormalCurvature, vec4 lowNormalCurvature) { + if (scattering * isScatteringEnabled() > 0.0) { + vec3 brdf = evalSkinBRDF(surface.lightDir, surface.normal, midNormalCurvature.xyz, lowNormalCurvature.xyz, lowNormalCurvature.w); + diffuse = mix(vec3(surface.ndotl), brdf, scattering); + + // Specular Lighting + vec2 specularBrdf = skinSpecular(surface, 1.0); + + diffuse *= specularBrdf.y; + specular = vec3(specularBrdf.x); + } else { + vec4 shading = evalPBRShading(metallic, fresnel, surface); + diffuse = vec3(shading.w); + specular = shading.xyz; + } + diffuse *= mix(vec3(1.0), albedo, isAlbedoEnabled()); +} + + +void evalFragShadingScattering(out vec3 diffuse, out vec3 specular, + float metallic, vec3 fresnel, SurfaceData surface, vec3 albedo, + float scattering, vec4 midNormalCurvature, vec4 lowNormalCurvature) { + vec3 brdf = evalSkinBRDF(surface.lightDir, surface.normal, midNormalCurvature.xyz, lowNormalCurvature.xyz, lowNormalCurvature.w); + float NdotL = surface.ndotl; + diffuse = mix(vec3(NdotL), brdf, scattering); + + // Specular Lighting + vec2 specularBrdf = skinSpecular(surface, 1.0); + + diffuse *= specularBrdf.y; + specular = vec3(specularBrdf.x); + diffuse *= mix(vec3(1.0), albedo, isAlbedoEnabled()); +} + +void evalFragShadingGloss(out vec3 diffuse, out vec3 specular, + float metallic, vec3 fresnel, SurfaceData surface, vec3 albedo) { + vec4 shading = evalPBRShading(metallic, fresnel, surface); + diffuse = vec3(shading.w); + diffuse *= mix(vec3(1.0), albedo, isAlbedoEnabled()); + specular = shading.xyz; +} + +vec3 evalSpecularWithOpacity(vec3 specular, float opacity) { + return specular / opacity; +} + +<@if not GETFRESNEL0@> +<@def GETFRESNEL0@> +vec3 getFresnelF0(float metallic, vec3 metalF0) { + // Enable continuous metallness value by lerping between dielectric + // and metal fresnel F0 value based on the "metallic" parameter + return mix(vec3(0.03), metalF0, metallic); +} +<@endif@> + +<@endif@> diff --git a/libraries/render-utils/src/Shadow.slh b/libraries/render-utils/src/Shadow.slh index 235ea519ab..76d08c2c22 100644 --- a/libraries/render-utils/src/Shadow.slh +++ b/libraries/render-utils/src/Shadow.slh @@ -11,13 +11,14 @@ <@if not SHADOW_SLH@> <@def SHADOW_SLH@> +<@include render-utils/ShaderConstants.h@> <@include ShadowCore.slh@> #define SHADOW_NOISE_ENABLED 0 #define SHADOW_SCREEN_SPACE_DITHER 1 // the shadow texture -uniform sampler2DArrayShadow shadowMaps; +layout(binding=RENDER_UTILS_TEXTURE_SHADOW) uniform sampler2DArrayShadow shadowMaps; // Sample the shadowMap with PCF (built-in) float fetchShadow(int cascadeIndex, vec3 shadowTexcoord) { diff --git a/libraries/render-utils/src/ShadowCore.slh b/libraries/render-utils/src/ShadowCore.slh index a787c54ca0..28ef9a4831 100644 --- a/libraries/render-utils/src/ShadowCore.slh +++ b/libraries/render-utils/src/ShadowCore.slh @@ -13,7 +13,7 @@ <@include Shadows_shared.slh@> -layout(std140) uniform shadowTransformBuffer { +layout(std140, binding=RENDER_UTILS_BUFFER_SHADOW_PARAMS) uniform shadowTransformBuffer { ShadowParameters shadow; }; diff --git a/libraries/render-utils/src/Skinning.slh b/libraries/render-utils/src/Skinning.slh index fbfe6b7185..a35948f026 100644 --- a/libraries/render-utils/src/Skinning.slh +++ b/libraries/render-utils/src/Skinning.slh @@ -11,12 +11,14 @@ <@if not SKINNING_SLH@> <@def SKINNING_SLH@> +<@include graphics/ShaderConstants.h@> + const int MAX_CLUSTERS = 128; const int INDICES_PER_VERTEX = 4; <@func declareUseDualQuaternionSkinning(USE_DUAL_QUATERNION_SKINNING)@> -layout(std140) uniform skinClusterBuffer { +layout(std140, binding=GRAPHICS_BUFFER_SKINNING) uniform skinClusterBuffer { mat4 clusterMatrices[MAX_CLUSTERS]; }; diff --git a/libraries/render-utils/src/StencilMaskPass.cpp b/libraries/render-utils/src/StencilMaskPass.cpp index 08fe1bf35a..556e305fac 100644 --- a/libraries/render-utils/src/StencilMaskPass.cpp +++ b/libraries/render-utils/src/StencilMaskPass.cpp @@ -40,8 +40,6 @@ graphics::MeshPointer PrepareStencil::getMesh() { gpu::PipelinePointer PrepareStencil::getMeshStencilPipeline() { if (!_meshStencilPipeline) { auto program = gpu::Shader::createProgram(shader::gpu::program::drawNothing); - gpu::Shader::makeProgram((*program)); - auto state = std::make_shared(); drawMask(*state); state->setColorWriteMask(0); @@ -54,8 +52,6 @@ gpu::PipelinePointer PrepareStencil::getMeshStencilPipeline() { gpu::PipelinePointer PrepareStencil::getPaintStencilPipeline() { if (!_paintStencilPipeline) { auto program = gpu::Shader::createProgram(shader::render_utils::program::stencil_drawMask); - gpu::Shader::makeProgram((*program)); - auto state = std::make_shared(); drawMask(*state); state->setColorWriteMask(0); @@ -143,4 +139,4 @@ void PrepareStencil::testMaskDrawShape(gpu::State& state) { void PrepareStencil::testMaskDrawShapeNoAA(gpu::State& state) { state.setStencilTest(true, STENCIL_SHAPE | STENCIL_NO_AA, gpu::State::StencilTest(STENCIL_MASK | STENCIL_SHAPE | STENCIL_NO_AA, STENCIL_MASK, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_REPLACE)); -} \ No newline at end of file +} diff --git a/libraries/render-utils/src/SubsurfaceScattering.cpp b/libraries/render-utils/src/SubsurfaceScattering.cpp index 2c27569269..84b51d626a 100644 --- a/libraries/render-utils/src/SubsurfaceScattering.cpp +++ b/libraries/render-utils/src/SubsurfaceScattering.cpp @@ -12,29 +12,26 @@ #include #include +#include +#include + +#include "render-utils/ShaderConstants.h" #include "FramebufferCache.h" #include "DeferredLightingEffect.h" -enum ScatteringShaderBufferSlots { - ScatteringTask_FrameTransformSlot = 0, - ScatteringTask_ParamSlot, - ScatteringTask_LightSlot, -}; -enum ScatteringShaderMapSlots { - ScatteringTask_ScatteringTableSlot = 0, - ScatteringTask_CurvatureMapSlot, - ScatteringTask_DiffusedCurvatureMapSlot, - ScatteringTask_NormalMapSlot, +namespace ru { + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; +} - ScatteringTask_AlbedoMapSlot, - ScatteringTask_LinearMapSlot, - - ScatteringTask_IBLMapSlot, +namespace gr { + using graphics::slot::texture::Texture; + using graphics::slot::buffer::Buffer; +} -}; SubsurfaceScatteringResource::SubsurfaceScatteringResource() { Parameters parameters; @@ -342,15 +339,7 @@ void diffuseScatterGPU(const gpu::TexturePointer& profileMap, gpu::TexturePointe gpu::doInBatch("SubsurfaceScattering::diffuseScatterGPU", args->_context, [=](gpu::Batch& batch) { batch.enableStereo(false); - - batch.runLambda([program] (){ - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("scatteringProfile"), 0)); - gpu::Shader::makeProgram(*program, slotBindings); - }); - batch.setViewportTransform(glm::ivec4(0, 0, width, height)); - batch.setFramebuffer(makeFramebuffer); batch.setPipeline(makePipeline); batch.setResourceTexture(0, profileMap); @@ -439,24 +428,6 @@ void DebugSubsurfaceScattering::configure(const Config& config) { gpu::PipelinePointer DebugSubsurfaceScattering::getScatteringPipeline() { if (!_scatteringPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::subsurfaceScattering_drawScattering); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ScatteringTask_FrameTransformSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("scatteringParamsBuffer"), ScatteringTask_ParamSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("keyLightBuffer"), ScatteringTask_LightSlot)); - - slotBindings.insert(gpu::Shader::Binding(std::string("scatteringLUT"), ScatteringTask_ScatteringTableSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("curvatureMap"), ScatteringTask_CurvatureMapSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("diffusedCurvatureMap"), ScatteringTask_DiffusedCurvatureMapSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("normalMap"), ScatteringTask_NormalMapSlot)); - - slotBindings.insert(gpu::Shader::Binding(std::string("albedoMap"), ScatteringTask_AlbedoMapSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("linearDepthMap"), ScatteringTask_LinearMapSlot)); - - slotBindings.insert(gpu::Shader::Binding(std::string("skyboxMap"), ScatteringTask_IBLMapSlot)); - - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); _scatteringPipeline = gpu::Pipeline::create(program, state); @@ -539,20 +510,20 @@ void DebugSubsurfaceScattering::run(const render::RenderContextPointer& renderCo model.setScale(glm::vec3(viewportSize / (float)args->_viewport.z, viewportSize / (float)args->_viewport.w, 1.0)); batch.setModelTransform(model); - batch.setUniformBuffer(ScatteringTask_FrameTransformSlot, frameTransform->getFrameTransformBuffer()); - batch.setUniformBuffer(ScatteringTask_ParamSlot, scatteringResource->getParametersBuffer()); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, frameTransform->getFrameTransformBuffer()); + batch.setUniformBuffer(ru::Buffer::SsscParams, scatteringResource->getParametersBuffer()); if (light) { - batch.setUniformBuffer(ScatteringTask_LightSlot, light->getLightSchemaBuffer()); + batch.setUniformBuffer(gr::Buffer::Light, light->getLightSchemaBuffer()); } - batch.setResourceTexture(ScatteringTask_ScatteringTableSlot, scatteringTable); - batch.setResourceTexture(ScatteringTask_CurvatureMapSlot, curvatureFramebuffer->getRenderBuffer(0)); - batch.setResourceTexture(ScatteringTask_DiffusedCurvatureMapSlot, diffusedFramebuffer->getRenderBuffer(0)); - batch.setResourceTexture(ScatteringTask_NormalMapSlot, deferredFramebuffer->getDeferredNormalTexture()); - batch.setResourceTexture(ScatteringTask_AlbedoMapSlot, deferredFramebuffer->getDeferredColorTexture()); - batch.setResourceTexture(ScatteringTask_LinearMapSlot, linearDepthTexture); + batch.setResourceTexture(ru::Texture::SsscLut, scatteringTable); + batch.setResourceTexture(ru::Texture::DeferredCurvature, curvatureFramebuffer->getRenderBuffer(0)); + batch.setResourceTexture(ru::Texture::DeferredDiffusedCurvature, diffusedFramebuffer->getRenderBuffer(0)); + batch.setResourceTexture(ru::Texture::DeferredNormal, deferredFramebuffer->getDeferredNormalTexture()); + batch.setResourceTexture(ru::Texture::DeferredColor, deferredFramebuffer->getDeferredColorTexture()); + batch.setResourceTexture(ru::Texture::DeferredDepth, linearDepthTexture); - batch._glUniform2f(debugScatteringPipeline->getProgram()->getUniforms().findLocation("uniformCursorTexcoord"), _debugCursorTexcoord.x, _debugCursorTexcoord.y); + batch._glUniform2f(gpu::slot::uniform::Extra0, _debugCursorTexcoord.x, _debugCursorTexcoord.y); batch.draw(gpu::TRIANGLE_STRIP, 4); } } diff --git a/libraries/render-utils/src/SubsurfaceScattering.slh b/libraries/render-utils/src/SubsurfaceScattering.slh index 233dfd7a0c..3d37f52e4d 100644 --- a/libraries/render-utils/src/SubsurfaceScattering.slh +++ b/libraries/render-utils/src/SubsurfaceScattering.slh @@ -9,6 +9,8 @@ <@if not SUBSURFACE_SCATTERING_SLH@> <@def SUBSURFACE_SCATTERING_SLH@> +<@include render-utils/ShaderConstants.h@> + <@func declareSubsurfaceScatteringProfileSource()@> float gaussian(float v, float r) { @@ -54,7 +56,7 @@ vec3 generateProfile(vec2 uv) { <@func declareSubsurfaceScatteringProfileMap()@> -uniform sampler2D scatteringProfile; +layout(binding=RENDER_UTILS_TEXTURE_SSSC_PROFILE) uniform sampler2D scatteringProfile; vec3 scatter(float r) { return texture(scatteringProfile, vec2(r * 0.5, 0.5)).rgb; @@ -102,7 +104,7 @@ vec3 integrate(float cosTheta, float skinRadius) { <@func declareSubsurfaceScatteringResource()@> -uniform sampler2D scatteringLUT; +layout(binding=RENDER_UTILS_TEXTURE_SSSC_LUT) uniform sampler2D scatteringLUT; vec3 fetchBRDF(float LdotN, float curvature) { return texture(scatteringLUT, vec2( clamp(LdotN * 0.5 + 0.5, 0.0, 1.0), clamp(2.0 * curvature, 0.0, 1.0))).xyz; @@ -122,7 +124,7 @@ struct ScatteringParameters { vec4 debugFlags; }; -uniform subsurfaceScatteringParametersBuffer { +layout(binding=RENDER_UTILS_BUFFER_SSSC_PARAMS) uniform subsurfaceScatteringParametersBuffer { ScatteringParameters parameters; }; diff --git a/libraries/render-utils/src/SurfaceGeometryPass.cpp b/libraries/render-utils/src/SurfaceGeometryPass.cpp index fd0200b369..d32cba43db 100644 --- a/libraries/render-utils/src/SurfaceGeometryPass.cpp +++ b/libraries/render-utils/src/SurfaceGeometryPass.cpp @@ -17,19 +17,17 @@ #include "StencilMaskPass.h" -const int DepthLinearPass_FrameTransformSlot = 0; -const int DepthLinearPass_DepthMapSlot = 0; -const int DepthLinearPass_NormalMapSlot = 1; +#include "render-utils/ShaderConstants.h" + +namespace ru { + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; +} -const int SurfaceGeometryPass_FrameTransformSlot = 0; -const int SurfaceGeometryPass_ParamsSlot = 1; -const int SurfaceGeometryPass_DepthMapSlot = 0; -const int SurfaceGeometryPass_NormalMapSlot = 1; LinearDepthFramebuffer::LinearDepthFramebuffer() { } - void LinearDepthFramebuffer::updatePrimaryDepth(const gpu::TexturePointer& depthBuffer) { //If the depth buffer or size changed, we need to delete our FBOs bool reset = false; @@ -177,21 +175,21 @@ void LinearDepthPass::run(const render::RenderContextPointer& renderContext, con batch.resetViewTransform(); batch.setModelTransform(gpu::Framebuffer::evalSubregionTexcoordTransform(_linearDepthFramebuffer->getDepthFrameSize(), depthViewport)); - batch.setUniformBuffer(DepthLinearPass_FrameTransformSlot, frameTransform->getFrameTransformBuffer()); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, frameTransform->getFrameTransformBuffer()); // LinearDepth batch.setFramebuffer(linearDepthFBO); batch.clearColorFramebuffer(gpu::Framebuffer::BUFFER_COLOR0, glm::vec4(clearLinearDepth, 0.0f, 0.0f, 0.0f)); batch.setPipeline(linearDepthPipeline); - batch.setResourceTexture(DepthLinearPass_DepthMapSlot, depthBuffer); + batch.setResourceTexture(ru::Texture::SurfaceGeometryDepth, depthBuffer); batch.draw(gpu::TRIANGLE_STRIP, 4); // Downsample batch.setViewportTransform(halfViewport); batch.setFramebuffer(downsampleFBO); - batch.setResourceTexture(DepthLinearPass_DepthMapSlot, linearDepthTexture); - batch.setResourceTexture(DepthLinearPass_NormalMapSlot, normalTexture); + batch.setResourceTexture(ru::Texture::SurfaceGeometryDepth, linearDepthTexture); + batch.setResourceTexture(ru::Texture::SurfaceGeometryNormal, normalTexture); batch.setPipeline(downsamplePipeline); batch.draw(gpu::TRIANGLE_STRIP, 4); @@ -217,15 +215,6 @@ const gpu::PipelinePointer& LinearDepthPass::getLinearDepthPipeline(const render // Good to go add the brand new pipeline _linearDepthPipeline = gpu::Pipeline::create(program, state); - - gpu::doInBatch("LinearDepthPass::run", renderContext->args->_context, [program](gpu::Batch& batch) { - batch.runLambda([program]() { - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), DepthLinearPass_FrameTransformSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("depthMap"), DepthLinearPass_DepthMapSlot)); - gpu::Shader::makeProgram(*program, slotBindings); - }); - }); } @@ -244,16 +233,6 @@ const gpu::PipelinePointer& LinearDepthPass::getDownsamplePipeline(const render: // Good to go add the brand new pipeline _downsamplePipeline = gpu::Pipeline::create(program, state); - - gpu::doInBatch("LinearDepthPass::run", renderContext->args->_context, [program](gpu::Batch& batch) { - batch.runLambda([program]() { - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding("deferredFrameTransformBuffer", DepthLinearPass_FrameTransformSlot)); - slotBindings.insert(gpu::Shader::Binding("linearDepthMap", DepthLinearPass_DepthMapSlot)); - slotBindings.insert(gpu::Shader::Binding("normalMap", DepthLinearPass_NormalMapSlot)); - gpu::Shader::makeProgram(*program, slotBindings); - }); - }); } return _downsamplePipeline; @@ -475,8 +454,8 @@ void SurfaceGeometryPass::run(const render::RenderContextPointer& renderContext, batch.setModelTransform(gpu::Framebuffer::evalSubregionTexcoordTransform(_surfaceGeometryFramebuffer->getSourceFrameSize(), curvatureViewport)); // Curvature pass - batch.setUniformBuffer(SurfaceGeometryPass_FrameTransformSlot, frameTransform->getFrameTransformBuffer()); - batch.setUniformBuffer(SurfaceGeometryPass_ParamsSlot, _parametersBuffer); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, frameTransform->getFrameTransformBuffer()); + batch.setUniformBuffer(ru::Buffer::SurfaceGeometryParams, _parametersBuffer); batch.setFramebuffer(curvatureFramebuffer); // We can avoid the clear by drawing the same clear vallue from the makeCurvature shader. same performances or no worse #ifdef USE_STENCIL_TEST @@ -484,47 +463,44 @@ void SurfaceGeometryPass::run(const render::RenderContextPointer& renderContext, batch.clearColorFramebuffer(gpu::Framebuffer::BUFFER_COLOR0, glm::vec4(0.0)); #endif batch.setPipeline(curvaturePipeline); - batch.setResourceTexture(SurfaceGeometryPass_DepthMapSlot, linearDepthTexture); - batch.setResourceTexture(SurfaceGeometryPass_NormalMapSlot, normalTexture); + batch.setResourceTexture(ru::Texture::SurfaceGeometryDepth, linearDepthTexture); + batch.setResourceTexture(ru::Texture::SurfaceGeometryNormal, normalTexture); batch.draw(gpu::TRIANGLE_STRIP, 4); - batch.setResourceTexture(SurfaceGeometryPass_DepthMapSlot, nullptr); - batch.setResourceTexture(SurfaceGeometryPass_NormalMapSlot, nullptr); - batch.setUniformBuffer(SurfaceGeometryPass_ParamsSlot, nullptr); - batch.setUniformBuffer(SurfaceGeometryPass_FrameTransformSlot, nullptr); + batch.setResourceTexture(ru::Texture::SurfaceGeometryDepth, nullptr); + batch.setResourceTexture(ru::Texture::SurfaceGeometryNormal, nullptr); + batch.setUniformBuffer(ru::Buffer::SurfaceGeometryParams, nullptr); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, nullptr); // Diffusion pass - const int BlurTask_ParamsSlot = 0; - const int BlurTask_SourceSlot = 0; - const int BlurTask_DepthSlot = 1; - batch.setUniformBuffer(BlurTask_ParamsSlot, _diffusePass.getParameters()->_parametersBuffer); + batch.setUniformBuffer(ru::Buffer::BlurParams, _diffusePass.getParameters()->_parametersBuffer); - batch.setResourceTexture(BlurTask_DepthSlot, linearDepthTexture); + batch.setResourceTexture(ru::Texture::BlurDepth, linearDepthTexture); batch.setFramebuffer(blurringFramebuffer); batch.setPipeline(diffuseVPipeline); - batch.setResourceTexture(BlurTask_SourceSlot, curvatureTexture); + batch.setResourceTexture(ru::Texture::BlurSource, curvatureTexture); batch.draw(gpu::TRIANGLE_STRIP, 4); batch.setFramebuffer(curvatureFramebuffer); batch.setPipeline(diffuseHPipeline); - batch.setResourceTexture(BlurTask_SourceSlot, blurringTexture); + batch.setResourceTexture(ru::Texture::BlurSource, blurringTexture); batch.draw(gpu::TRIANGLE_STRIP, 4); batch.setFramebuffer(blurringFramebuffer); batch.setPipeline(diffuseVPipeline); - batch.setResourceTexture(BlurTask_SourceSlot, curvatureTexture); + batch.setResourceTexture(ru::Texture::BlurSource, curvatureTexture); batch.draw(gpu::TRIANGLE_STRIP, 4); batch.setFramebuffer(lowCurvatureFramebuffer); batch.setPipeline(diffuseHPipeline); - batch.setResourceTexture(BlurTask_SourceSlot, blurringTexture); + batch.setResourceTexture(ru::Texture::BlurSource, blurringTexture); batch.draw(gpu::TRIANGLE_STRIP, 4); - batch.setResourceTexture(BlurTask_SourceSlot, nullptr); - batch.setResourceTexture(BlurTask_DepthSlot, nullptr); - batch.setUniformBuffer(BlurTask_ParamsSlot, nullptr); + batch.setResourceTexture(ru::Texture::BlurSource, nullptr); + batch.setResourceTexture(ru::Texture::BlurDepth, nullptr); + batch.setUniformBuffer(ru::Buffer::BlurParams, nullptr); _gpuTimer->end(batch); }); @@ -546,17 +522,6 @@ const gpu::PipelinePointer& SurfaceGeometryPass::getCurvaturePipeline(const rend #endif // Good to go add the brand new pipeline _curvaturePipeline = gpu::Pipeline::create(program, state); - - gpu::doInBatch("SurfaceGeometryPass::CurvaturePipeline", renderContext->args->_context, [program](gpu::Batch& batch) { - batch.runLambda([program]() { - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), SurfaceGeometryPass_FrameTransformSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("surfaceGeometryParamsBuffer"), SurfaceGeometryPass_ParamsSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("depthMap"), SurfaceGeometryPass_DepthMapSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("normalMap"), SurfaceGeometryPass_NormalMapSlot)); - gpu::Shader::makeProgram(*program, slotBindings); - }); - }); } return _curvaturePipeline; diff --git a/libraries/render-utils/src/ToneMappingEffect.cpp b/libraries/render-utils/src/ToneMappingEffect.cpp index 5403f3e2f8..d192266d7e 100644 --- a/libraries/render-utils/src/ToneMappingEffect.cpp +++ b/libraries/render-utils/src/ToneMappingEffect.cpp @@ -14,13 +14,11 @@ #include #include +#include "render-utils/ShaderConstants.h" #include "StencilMaskPass.h" #include "FramebufferCache.h" -const int ToneMappingEffect_ParamsSlot = 0; -const int ToneMappingEffect_LightingMapSlot = 0; - ToneMappingEffect::ToneMappingEffect() { Parameters parameters; _parametersBuffer = gpu::BufferView(std::make_shared(sizeof(Parameters), (const gpu::Byte*) ¶meters)); @@ -32,15 +30,6 @@ void ToneMappingEffect::init(RenderArgs* args) { auto blitState = std::make_shared(); blitState->setColorWriteMask(true, true, true, true); _blitLightBuffer = gpu::PipelinePointer(gpu::Pipeline::create(blitProgram, blitState)); - - gpu::doInBatch("ToneMappingEffect::toneMapping", args->_context, [blitProgram](gpu::Batch& batch) { - batch.runLambda([blitProgram]() { - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("toneMappingParamsBuffer"), ToneMappingEffect_ParamsSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("colorMap"), ToneMappingEffect_LightingMapSlot)); - gpu::Shader::makeProgram(*blitProgram, slotBindings); - }); - }); } void ToneMappingEffect::setExposure(float exposure) { @@ -82,8 +71,8 @@ void ToneMappingEffect::render(RenderArgs* args, const gpu::TexturePointer& ligh batch.setModelTransform(gpu::Framebuffer::evalSubregionTexcoordTransform(framebufferSize, args->_viewport)); batch.setPipeline(_blitLightBuffer); - batch.setUniformBuffer(ToneMappingEffect_ParamsSlot, _parametersBuffer); - batch.setResourceTexture(ToneMappingEffect_LightingMapSlot, lightingBuffer); + batch.setUniformBuffer(render_utils::slot::buffer::ToneMappingParams, _parametersBuffer); + batch.setResourceTexture(render_utils::slot::texture::ToneMappingColor, lightingBuffer); batch.draw(gpu::TRIANGLE_STRIP, 4); }); } diff --git a/libraries/render-utils/src/VelocityBufferPass.cpp b/libraries/render-utils/src/VelocityBufferPass.cpp index 1431316aed..5833089967 100644 --- a/libraries/render-utils/src/VelocityBufferPass.cpp +++ b/libraries/render-utils/src/VelocityBufferPass.cpp @@ -16,9 +16,12 @@ #include #include "StencilMaskPass.h" +#include "render-utils/ShaderConstants.h" -const int VelocityBufferPass_FrameTransformSlot = 0; -const int VelocityBufferPass_DepthMapSlot = 0; +namespace ru { + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; +} VelocityFramebuffer::VelocityFramebuffer() { } @@ -124,13 +127,13 @@ void VelocityBufferPass::run(const render::RenderContextPointer& renderContext, batch.resetViewTransform(); batch.setModelTransform(gpu::Framebuffer::evalSubregionTexcoordTransform(_velocityFramebuffer->getDepthFrameSize(), fullViewport)); - batch.setUniformBuffer(VelocityBufferPass_FrameTransformSlot, frameTransform->getFrameTransformBuffer()); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, frameTransform->getFrameTransformBuffer()); // Velocity buffer camera motion batch.setFramebuffer(velocityFBO); batch.clearColorFramebuffer(gpu::Framebuffer::BUFFER_COLOR0, glm::vec4(0.0f, 0.0f, 0.0f, 0.0f)); batch.setPipeline(cameraMotionPipeline); - batch.setResourceTexture(VelocityBufferPass_DepthMapSlot, depthBuffer); + batch.setResourceTexture(ru::Texture::TaaDepth, depthBuffer); batch.draw(gpu::TRIANGLE_STRIP, 4); _gpuTimer->end(batch); @@ -153,16 +156,6 @@ const gpu::PipelinePointer& VelocityBufferPass::getCameraMotionPipeline(const re // Good to go add the brand new pipeline _cameraMotionPipeline = gpu::Pipeline::create(program, state); - - gpu::doInBatch("VelocityBufferPass::CameraMotionPipeline", renderContext->args->_context, - [program](gpu::Batch& batch) { - batch.runLambda([program]() { - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), VelocityBufferPass_FrameTransformSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("depthMap"), VelocityBufferPass_DepthMapSlot)); - gpu::Shader::makeProgram(*program, slotBindings); - }); - }); } return _cameraMotionPipeline; diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index fc0cccd9e3..3299b0c41c 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -15,10 +15,27 @@ #include #include #include +#include +#include #include "StencilMaskPass.h" #include "DeferredLightingEffect.h" + +#include "render-utils/ShaderConstants.h" +#include "StencilMaskPass.h" +#include "DeferredLightingEffect.h" + +namespace ru { + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; +} + +namespace gr { + using graphics::slot::texture::Texture; + using graphics::slot::buffer::Buffer; +} + using namespace render; class SetupZones { @@ -72,13 +89,6 @@ void SetupZones::run(const RenderContextPointer& context, const Inputs& inputs) const gpu::PipelinePointer& DebugZoneLighting::getKeyLightPipeline() { if (!_keyLightPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::zone_drawKeyLight); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ZONE_DEFERRED_TRANSFORM_BUFFER)); - slotBindings.insert(gpu::Shader::Binding(std::string("keyLightBuffer"), ZONE_KEYLIGHT_BUFFER)); - - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); PrepareStencil::testMask(*state); @@ -91,14 +101,6 @@ const gpu::PipelinePointer& DebugZoneLighting::getKeyLightPipeline() { const gpu::PipelinePointer& DebugZoneLighting::getAmbientPipeline() { if (!_ambientPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::zone_drawAmbient); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ZONE_DEFERRED_TRANSFORM_BUFFER)); - slotBindings.insert(gpu::Shader::Binding(std::string("lightAmbientBuffer"), ZONE_AMBIENT_BUFFER)); - slotBindings.insert(gpu::Shader::Binding(std::string("skyboxMap"), ZONE_AMBIENT_MAP)); - - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); PrepareStencil::testMask(*state); @@ -110,14 +112,6 @@ const gpu::PipelinePointer& DebugZoneLighting::getAmbientPipeline() { const gpu::PipelinePointer& DebugZoneLighting::getBackgroundPipeline() { if (!_backgroundPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::zone_drawSkybox); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ZONE_DEFERRED_TRANSFORM_BUFFER)); - slotBindings.insert(gpu::Shader::Binding(std::string("skyboxMap"), ZONE_SKYBOX_MAP)); - slotBindings.insert(gpu::Shader::Binding(std::string("skyboxBuffer"), ZONE_SKYBOX_BUFFER)); - - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); PrepareStencil::testMask(*state); @@ -168,7 +162,7 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I Transform model; - batch.setUniformBuffer(ZONE_DEFERRED_TRANSFORM_BUFFER, deferredTransform->getFrameTransformBuffer()); + batch.setUniformBuffer(ru::Buffer::DeferredFrameTransform, deferredTransform->getFrameTransformBuffer()); batch.setPipeline(getKeyLightPipeline()); auto numKeys = (int) keyLightStack.size(); @@ -176,7 +170,7 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I model.setTranslation(glm::vec3(-4.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); batch.setModelTransform(model); if (keyLightStack[i]) { - batch.setUniformBuffer(ZONE_KEYLIGHT_BUFFER, keyLightStack[i]->getLightSchemaBuffer()); + batch.setUniformBuffer(gr::Buffer::KeyLight, keyLightStack[i]->getLightSchemaBuffer()); batch.draw(gpu::TRIANGLE_STRIP, 4); } } @@ -187,9 +181,9 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I model.setTranslation(glm::vec3(0.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); batch.setModelTransform(model); if (ambientLightStack[i]) { - batch.setUniformBuffer(ZONE_AMBIENT_BUFFER, ambientLightStack[i]->getAmbientSchemaBuffer()); + batch.setUniformBuffer(gr::Buffer::AmbientLight, ambientLightStack[i]->getAmbientSchemaBuffer()); if (ambientLightStack[i]->getAmbientMap()) { - batch.setResourceTexture(ZONE_AMBIENT_MAP, ambientLightStack[i]->getAmbientMap()); + batch.setResourceTexture(ru::Texture::Skybox, ambientLightStack[i]->getAmbientMap()); } batch.draw(gpu::TRIANGLE_STRIP, 4); } @@ -201,8 +195,8 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I model.setTranslation(glm::vec3(4.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); batch.setModelTransform(model); if (skyboxStack[i]) { - batch.setResourceTexture(ZONE_SKYBOX_MAP, skyboxStack[i]->getCubemap()); - batch.setUniformBuffer(ZONE_SKYBOX_BUFFER, skyboxStack[i]->getSchemaBuffer()); + batch.setResourceTexture(ru::Texture::Skybox, skyboxStack[i]->getCubemap()); + batch.setUniformBuffer(ru::Buffer::DebugSkyboxParams, skyboxStack[i]->getSchemaBuffer()); batch.draw(gpu::TRIANGLE_STRIP, 4); } } diff --git a/libraries/render-utils/src/ZoneRenderer.h b/libraries/render-utils/src/ZoneRenderer.h index 419db4ebe2..6e85243d1a 100644 --- a/libraries/render-utils/src/ZoneRenderer.h +++ b/libraries/render-utils/src/ZoneRenderer.h @@ -69,15 +69,6 @@ public: protected: - enum Slots { - ZONE_DEFERRED_TRANSFORM_BUFFER = 0, - ZONE_KEYLIGHT_BUFFER, - ZONE_AMBIENT_BUFFER, - ZONE_AMBIENT_MAP, - ZONE_SKYBOX_BUFFER, - ZONE_SKYBOX_MAP, - }; - gpu::PipelinePointer _keyLightPipeline; gpu::PipelinePointer _ambientPipeline; gpu::PipelinePointer _backgroundPipeline; diff --git a/libraries/render-utils/src/animdebugdraw.slf b/libraries/render-utils/src/animdebugdraw.slf index 8a3aca055e..1a4b8754b3 100644 --- a/libraries/render-utils/src/animdebugdraw.slf +++ b/libraries/render-utils/src/animdebugdraw.slf @@ -10,9 +10,11 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -in vec4 _color; +<@include render-utils/ShaderConstants.h@> -out vec4 _fragColor; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; + +layout(location=0) out vec4 _fragColor; void main(void) { _fragColor = _color; diff --git a/libraries/render-utils/src/animdebugdraw.slv b/libraries/render-utils/src/animdebugdraw.slv index 3255c6783c..ec4bdc9f52 100644 --- a/libraries/render-utils/src/animdebugdraw.slv +++ b/libraries/render-utils/src/animdebugdraw.slv @@ -13,7 +13,9 @@ <@include gpu/Transform.slh@> <$declareStandardTransform()$> -out vec4 _color; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; void main(void) { // pass along the color diff --git a/libraries/render-utils/src/debug_deferred_buffer.slf b/libraries/render-utils/src/debug_deferred_buffer.slf index 5f974acfeb..aee04cba90 100644 --- a/libraries/render-utils/src/debug_deferred_buffer.slf +++ b/libraries/render-utils/src/debug_deferred_buffer.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// debug_deferred_buffer.slf +// debug_deferred_buffer.frag // fragment shader // // Created by Clement on 12/3 @@ -16,14 +16,14 @@ <@include gpu/Color.slh@> <$declareColorWheel()$> -uniform sampler2D linearDepthMap; -uniform sampler2D halfLinearDepthMap; -uniform sampler2D halfNormalMap; -uniform sampler2D occlusionMap; -uniform sampler2D occlusionBlurredMap; -uniform sampler2D scatteringMap; -uniform sampler2D velocityMap; -uniform sampler2DArrayShadow shadowMaps; +layout(binding=RENDER_UTILS_TEXTURE_DEBUG_DEPTH) uniform sampler2D linearDepthMap; +layout(binding=RENDER_UTILS_TEXTURE_DEBUG_HALF_DEPTH) uniform sampler2D halfLinearDepthMap; +layout(binding=RENDER_UTILS_TEXTURE_DEBUG_HALF_NORMAL) uniform sampler2D halfNormalMap; +layout(binding=RENDER_UTILS_TEXTURE_DEBUG_OCCLUSION) uniform sampler2D occlusionMap; +layout(binding=RENDER_UTILS_TEXTURE_DEBUG_OCCLUSION_BLURRED) uniform sampler2D occlusionBlurredMap; +layout(binding=RENDER_UTILS_TEXTURE_DEBUG_SCATTERING) uniform sampler2D scatteringMap; +layout(binding=RENDER_UTILS_TEXTURE_DEBUG_VELOCITY) uniform sampler2D velocityMap; +layout(binding=RENDER_UTILS_TEXTURE_DEBUG_SHADOWS) uniform sampler2DArrayShadow shadowMaps; <@include ShadowCore.slh@> @@ -39,8 +39,8 @@ float curvatureAO(float k) { return 1.0f - (0.0022f * k * k) + (0.0776f * k) + 0.7369f; } -in vec2 uv; -out vec4 outFragColor; +layout(location=0) in vec2 uv; +layout(location=0) out vec4 outFragColor; //SOURCE_PLACEHOLDER diff --git a/libraries/render-utils/src/debug_deferred_buffer.slv b/libraries/render-utils/src/debug_deferred_buffer.slv index 85ff2b651d..c68f986905 100644 --- a/libraries/render-utils/src/debug_deferred_buffer.slv +++ b/libraries/render-utils/src/debug_deferred_buffer.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// debug_deferred_buffer.slv +// debug_deferred_buffer.vert // vertex shader // // Created by Clement on 12/3 @@ -14,7 +14,7 @@ <@include gpu/Inputs.slh@> -out vec2 uv; +layout(location=0) out vec2 uv; void main(void) { uv = (inPosition.xy + 1.0) * 0.5; diff --git a/libraries/render-utils/src/deferred_light.slv b/libraries/render-utils/src/deferred_light.slv index 74b3749181..3b8aee6aae 100644 --- a/libraries/render-utils/src/deferred_light.slv +++ b/libraries/render-utils/src/deferred_light.slv @@ -12,9 +12,11 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -out vec2 _texCoord0; +<@include render-utils/ShaderConstants.h@> -uniform vec4 texcoordFrameTransform; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; + +layout(location=RENDER_UTILS_UNIFORM_LIGHT_TEXCOORD_TRANSFORM) uniform vec4 texcoordFrameTransform; void main(void) { const float depth = 1.0; diff --git a/libraries/render-utils/src/deferred_light_limited.slv b/libraries/render-utils/src/deferred_light_limited.slv index 36e281ab5b..790c305204 100644 --- a/libraries/render-utils/src/deferred_light_limited.slv +++ b/libraries/render-utils/src/deferred_light_limited.slv @@ -13,14 +13,14 @@ // <@include gpu/Transform.slh@> - <@include gpu/Inputs.slh@> +<@include render-utils/ShaderConstants.h@> <$declareStandardTransform()$> uniform vec4 sphereParam; -out vec4 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec4 _texCoord0; void main(void) { if (sphereParam.w != 0.0) { diff --git a/libraries/render-utils/src/deferred_light_point.slv b/libraries/render-utils/src/deferred_light_point.slv index 2b75ee3915..85707b322d 100644 --- a/libraries/render-utils/src/deferred_light_point.slv +++ b/libraries/render-utils/src/deferred_light_point.slv @@ -12,21 +12,21 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -<@include gpu/Transform.slh@> +<@include gpu/Transform.slh@> <@include gpu/Inputs.slh@> +<@include graphics/Light.slh@> +<@include render-utils/ShaderConstants.h@> <$declareStandardTransform()$> -<@include graphics/Light.slh@> - <$declareLightBuffer(256)$> -uniform lightIndexBuffer { +layout(binding=RENDER_UTILS_BUFFER_LIGHT_INDEX) uniform lightIndexBuffer { int lightIndex[256]; }; -out vec4 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec4 _texCoord0; void main(void) { diff --git a/libraries/render-utils/src/deferred_light_spot.slv b/libraries/render-utils/src/deferred_light_spot.slv index 7e3e45b3b6..637df14175 100644 --- a/libraries/render-utils/src/deferred_light_spot.slv +++ b/libraries/render-utils/src/deferred_light_spot.slv @@ -13,18 +13,18 @@ // <@include gpu/Inputs.slh@> - <@include gpu/Transform.slh@> +<@include graphics/Light.slh@> +<@include render-utils/ShaderConstants.h@> <$declareStandardTransform()$> -<@include graphics/Light.slh@> <$declareLightBuffer(256)$> -uniform lightIndexBuffer { +layout(binding=RENDER_UTILS_BUFFER_LIGHT_INDEX) uniform lightIndexBuffer { int lightIndex[256]; }; -out vec4 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec4 _texCoord0; void main(void) { vec4 coneVertex = inPosition; diff --git a/libraries/render-utils/src/directional_ambient_light.slf b/libraries/render-utils/src/directional_ambient_light.slf index d7e0dcd08c..86adc744e2 100644 --- a/libraries/render-utils/src/directional_ambient_light.slf +++ b/libraries/render-utils/src/directional_ambient_light.slf @@ -16,14 +16,15 @@ <@include DeferredBufferRead.slh@> <@include DeferredGlobalLight.slh@> +<@include render-utils/ShaderConstants.h@> <$declareEvalLightmappedColor()$> <$declareEvalAmbientSphereGlobalColor(supportScattering)$> -in vec2 _texCoord0; -out vec4 _fragColor; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=0) out vec4 _fragColor; void main(void) { DeferredFrameTransform deferredTransform = getDeferredFrameTransform(); diff --git a/libraries/render-utils/src/directional_ambient_light_shadow.slf b/libraries/render-utils/src/directional_ambient_light_shadow.slf index fda0164b4d..f54f01c4af 100644 --- a/libraries/render-utils/src/directional_ambient_light_shadow.slf +++ b/libraries/render-utils/src/directional_ambient_light_shadow.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// directional_light_shadow.frag +// directional_ambient_light_shadow.frag // fragment shader // // Created by Zach Pomerantz on 1/18/2016. @@ -15,12 +15,13 @@ <@include Shadow.slh@> <@include DeferredBufferRead.slh@> <@include DeferredGlobalLight.slh@> +<@include render-utils/ShaderConstants.h@> <$declareEvalLightmappedColor()$> <$declareEvalAmbientSphereGlobalColor(isScattering)$> -in vec2 _texCoord0; -out vec4 _fragColor; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=0) out vec4 _fragColor; void main(void) { DeferredFrameTransform deferredTransform = getDeferredFrameTransform(); diff --git a/libraries/render-utils/src/directional_skybox_light.slf b/libraries/render-utils/src/directional_skybox_light.slf index 65b4b086e9..f9b7664d10 100644 --- a/libraries/render-utils/src/directional_skybox_light.slf +++ b/libraries/render-utils/src/directional_skybox_light.slf @@ -14,12 +14,13 @@ <@include DeferredBufferRead.slh@> <@include DeferredGlobalLight.slh@> +<@include render-utils/ShaderConstants.h@> <$declareEvalLightmappedColor()$> <$declareEvalSkyboxGlobalColor(isScattering)$> -in vec2 _texCoord0; -out vec4 _fragColor; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=0) out vec4 _fragColor; void main(void) { DeferredFrameTransform deferredTransform = getDeferredFrameTransform(); diff --git a/libraries/render-utils/src/directional_skybox_light_shadow.slf b/libraries/render-utils/src/directional_skybox_light_shadow.slf index e927f53a1f..34a836e5b0 100644 --- a/libraries/render-utils/src/directional_skybox_light_shadow.slf +++ b/libraries/render-utils/src/directional_skybox_light_shadow.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// directional_light_shadow.frag +// directional_skybox_light_shadow.frag // fragment shader // // Created by Zach Pomerantz on 1/18/2016. @@ -15,12 +15,13 @@ <@include Shadow.slh@> <@include DeferredBufferRead.slh@> <@include DeferredGlobalLight.slh@> +<@include render-utils/ShaderConstants.h@> <$declareEvalLightmappedColor()$> <$declareEvalSkyboxGlobalColor(isScattering)$> -in vec2 _texCoord0; -out vec4 _fragColor; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=0) out vec4 _fragColor; void main(void) { DeferredFrameTransform deferredTransform = getDeferredFrameTransform(); diff --git a/libraries/render-utils/src/drawWorkloadProxy.slv b/libraries/render-utils/src/drawWorkloadProxy.slv index 64fb335fd6..ec007e1a78 100644 --- a/libraries/render-utils/src/drawWorkloadProxy.slv +++ b/libraries/render-utils/src/drawWorkloadProxy.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// drawItemBounds.slv +// drawWorkloadProxy.vert // vertex shader // // Created by Sam Gateau on 6/29/2015. @@ -18,7 +18,7 @@ <@include gpu/Color.slh@> <$declareColorWheel()$> -uniform vec4 inColor; +layout(location=0) uniform vec4 inColor; struct WorkloadProxy { @@ -27,7 +27,7 @@ struct WorkloadProxy { }; #if defined(GPU_GL410) -uniform samplerBuffer workloadProxiesBuffer; +layout(binding=0) uniform samplerBuffer workloadProxiesBuffer; WorkloadProxy getWorkloadProxy(int i) { int offset = 2 * i; WorkloadProxy proxy; @@ -36,7 +36,7 @@ WorkloadProxy getWorkloadProxy(int i) { return proxy; } #else -layout(std140) buffer workloadProxiesBuffer { +layout(std140, binding=0) buffer workloadProxiesBuffer { WorkloadProxy _proxies[]; }; WorkloadProxy getWorkloadProxy(int i) { diff --git a/libraries/render-utils/src/drawWorkloadView.slf b/libraries/render-utils/src/drawWorkloadView.slf index 1304e68c7f..946b2ce6b7 100644 --- a/libraries/render-utils/src/drawWorkloadView.slf +++ b/libraries/render-utils/src/drawWorkloadView.slf @@ -1,7 +1,8 @@ <@include gpu/Config.slh@> <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> -// drawItemBounds.frag +// +// drawWorkloadView.frag // fragment shader // // Created by Sam Gateau on 6/29/15. diff --git a/libraries/render-utils/src/drawWorkloadView.slv b/libraries/render-utils/src/drawWorkloadView.slv index f5497d250c..2211bfb1ac 100644 --- a/libraries/render-utils/src/drawWorkloadView.slv +++ b/libraries/render-utils/src/drawWorkloadView.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// drawItemBounds.slv +// drawWorkloadView.vert // vertex shader // // Created by Sam Gateau on 6/29/2015. @@ -18,7 +18,7 @@ <@include gpu/Color.slh@> <$declareColorWheel()$> -uniform vec4 inColor; +layout(location=0) uniform vec4 inColor; struct WorkloadView { @@ -30,16 +30,16 @@ struct WorkloadView { }; #if defined(GPU_GL410) -uniform samplerBuffer workloadViewsBuffer; +layout(binding=1) uniform samplerBuffer workloadViewsBuffer; WorkloadView getWorkloadView(int i) { int offset = 2 * i; WorkloadView view; view.origin = texelFetch(workloadViewsBuffer, offset); - view.radiuses = texelFetch(workloadViewsBuffer, offset + 1); + //view.radiuses = texelFetch(workloadViewsBuffer, offset + 1); return view; } #else -layout(std140) buffer workloadViewsBuffer { +layout(std140,binding=1) buffer workloadViewsBuffer { WorkloadView _views[]; }; WorkloadView getWorkloadView(int i) { @@ -61,11 +61,14 @@ const int NUM_VERTICES_PER_VIEW_REGION = NUM_SEGMENT_PER_VIEW_REGION * NUM_VERTI const int NUM_REGIONS_PER_VIEW = 3; const int NUM_VERTICES_PER_VIEW = NUM_VERTICES_PER_VIEW_REGION * NUM_REGIONS_PER_VIEW; - -layout(std140) uniform drawMeshBuffer { +struct DrawMesh { vec4 verts[NUM_SEGMENT_PER_VIEW_REGION]; }; +layout(std140, location=0) uniform DrawMeshBuffer { + DrawMesh _drawMeshBuffer; +}; + void main(void) { int viewID = gl_VertexID / NUM_VERTICES_PER_VIEW; int viewVertexID = gl_VertexID - viewID * NUM_VERTICES_PER_VIEW; @@ -76,7 +79,7 @@ void main(void) { int segmentID = regionVertexID / NUM_VERTICES_PER_SEGMENT; int segmentVertexID = regionVertexID - segmentID * NUM_VERTICES_PER_SEGMENT; - vec4 segment = verts[segmentID]; + vec4 segment = _drawMeshBuffer.verts[segmentID]; vec4 spriteVert = vec4(segment.y, 0.0, segment.x, 1.0); vec3 spriteTan = vec3(segment.x, 0.0, -segment.y); diff --git a/libraries/render-utils/src/forward_model.slf b/libraries/render-utils/src/forward_model.slf index ea3a66d21c..6df5343c5c 100644 --- a/libraries/render-utils/src/forward_model.slf +++ b/libraries/render-utils/src/forward_model.slf @@ -11,24 +11,27 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -<@include ForwardGlobalLight.slh@> -<$declareEvalSkyboxGlobalColor()$> - -<@include graphics/Material.slh@> <@include gpu/Transform.slh@> +<@include graphics/Material.slh@> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> +<@include ForwardGlobalLight.slh@> + +<$declareEvalSkyboxGlobalColor()$> + + <$declareStandardCameraTransform()$> -<@include MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, METALLIC, EMISSIVE, OCCLUSION)$> -in vec4 _positionES; -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec3 _normalWS; -in vec3 _color; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; -layout(location = 0) out vec4 _fragColor0; +layout(location=0) out vec4 _fragColor0; void main(void) { Material mat = getMaterial(); diff --git a/libraries/render-utils/src/forward_model_normal_map.slf b/libraries/render-utils/src/forward_model_normal_map.slf index ac76e909e4..88f9df1ecf 100644 --- a/libraries/render-utils/src/forward_model_normal_map.slf +++ b/libraries/render-utils/src/forward_model_normal_map.slf @@ -12,25 +12,25 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -<@include ForwardGlobalLight.slh@> -<$declareEvalSkyboxGlobalColor()$> - -<@include graphics/Material.slh@> - <@include gpu/Transform.slh@> +<@include graphics/Material.slh@> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> +<@include ForwardGlobalLight.slh@> + +<$declareEvalSkyboxGlobalColor()$> <$declareStandardCameraTransform()$> -<@include MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, NORMAL, METALLIC, EMISSIVE, OCCLUSION)$> -in vec4 _positionES; -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec3 _normalWS; -in vec3 _tangentWS; -in vec3 _color; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; -layout(location = 0) out vec4 _fragColor0; +layout(location=0) out vec4 _fragColor0; void main(void) { Material mat = getMaterial(); diff --git a/libraries/render-utils/src/forward_model_translucent.slf b/libraries/render-utils/src/forward_model_translucent.slf index 70a3233737..5b69a6cb21 100644 --- a/libraries/render-utils/src/forward_model_translucent.slf +++ b/libraries/render-utils/src/forward_model_translucent.slf @@ -12,26 +12,25 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include gpu/Transform.slh@> <@include graphics/Material.slh@> - +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> <@include ForwardGlobalLight.slh@> <$declareEvalGlobalLightingAlphaBlended()$> - -<@include gpu/Transform.slh@> <$declareStandardCameraTransform()$> -<@include MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, METALLIC, EMISSIVE, OCCLUSION)$> -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec4 _positionES; -in vec3 _normalWS; -in vec3 _color; -in float _alpha; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; -layout(location = 0) out vec4 _fragColor0; +layout(location=0) out vec4 _fragColor0; void main(void) { Material mat = getMaterial(); diff --git a/libraries/render-utils/src/forward_model_unlit.slf b/libraries/render-utils/src/forward_model_unlit.slf index e693a79e53..d01bd70815 100644 --- a/libraries/render-utils/src/forward_model_unlit.slf +++ b/libraries/render-utils/src/forward_model_unlit.slf @@ -14,14 +14,15 @@ <@include LightingModel.slh@> <@include graphics/Material.slh@> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> -<@include MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO)$> -in vec2 _texCoord0; -in vec3 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; -layout(location = 0) out vec4 _fragColor0; +layout(location=0) out vec4 _fragColor0; void main(void) { diff --git a/libraries/render-utils/src/forward_simple.slf b/libraries/render-utils/src/forward_simple.slf index 1ac44750a7..d4cf85d802 100644 --- a/libraries/render-utils/src/forward_simple.slf +++ b/libraries/render-utils/src/forward_simple.slf @@ -18,12 +18,12 @@ // the interpolated normal -in vec3 _normalWS; -in vec3 _normalMS; -in vec4 _color; -in vec2 _texCoord0; -in vec4 _positionMS; -in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; // For retro-compatibility #define _normal _normalWS @@ -31,9 +31,9 @@ in vec4 _positionES; #define _position _positionMS #define _eyePosition _positionES -layout(location = 0) out vec4 _fragColor0; +layout(location=0) out vec4 _fragColor0; -//PROCEDURAL_COMMON_BLOCK +<@include procedural/ProceduralCommon.slh@> #line 1001 //PROCEDURAL_BLOCK diff --git a/libraries/render-utils/src/forward_simple_textured.slf b/libraries/render-utils/src/forward_simple_textured.slf index 9bdf236743..0c50b0b599 100644 --- a/libraries/render-utils/src/forward_simple_textured.slf +++ b/libraries/render-utils/src/forward_simple_textured.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// forward_simple_textured.slf +// forward_simple_textured.frag // fragment shader // // Created by Clément Brisset on 5/29/15. @@ -19,16 +19,18 @@ <@include gpu/Transform.slh@> <$declareStandardCameraTransform()$> +<@include render-utils/ShaderConstants.h@> + // the albedo texture -uniform sampler2D originalTexture; +layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal -in vec3 _normalWS; -in vec4 _color; -in vec2 _texCoord0; -in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; -layout(location = 0) out vec4 _fragColor0; +layout(location=0) out vec4 _fragColor0; void main(void) { vec4 texel = texture(originalTexture, _texCoord0); diff --git a/libraries/render-utils/src/forward_simple_textured_transparent.slf b/libraries/render-utils/src/forward_simple_textured_transparent.slf index 167d1cb87a..d1cd21b4cb 100644 --- a/libraries/render-utils/src/forward_simple_textured_transparent.slf +++ b/libraries/render-utils/src/forward_simple_textured_transparent.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// forward_simple_textured_transparent.slf +// forward_simple_textured_transparent.frag // fragment shader // // Created by Clément Brisset on 5/29/15. @@ -19,16 +19,18 @@ <@include gpu/Transform.slh@> <$declareStandardCameraTransform()$> +<@include render-utils/ShaderConstants.h@> + // the albedo texture -uniform sampler2D originalTexture; +layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal -in vec3 _normalWS; -in vec4 _color; -in vec2 _texCoord0; -in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; -layout(location = 0) out vec4 _fragColor0; +layout(location=0) out vec4 _fragColor0; void main(void) { vec4 texel = texture(originalTexture, _texCoord0); diff --git a/libraries/render-utils/src/forward_simple_textured_unlit.slf b/libraries/render-utils/src/forward_simple_textured_unlit.slf index 0cc241b75e..cca371a1ff 100644 --- a/libraries/render-utils/src/forward_simple_textured_unlit.slf +++ b/libraries/render-utils/src/forward_simple_textured_unlit.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// simple_textured_unlit.frag +// forward_simple_textured_unlit.frag // fragment shader // // Created by Clément Brisset on 5/29/15. @@ -15,13 +15,15 @@ <@include LightingModel.slh@> <@include gpu/Color.slh@> -layout(location = 0) out vec4 _fragColor0; +<@include render-utils/ShaderConstants.h@> + +layout(location=0) out vec4 _fragColor0; // the albedo texture -uniform sampler2D originalTexture; +layout(binding=0) uniform sampler2D originalTexture; -in vec4 _color; -in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; void main(void) { vec4 texel = texture(originalTexture, _texCoord0.st); diff --git a/libraries/render-utils/src/forward_simple_transparent.slf b/libraries/render-utils/src/forward_simple_transparent.slf index 8be2759571..46328b77b6 100644 --- a/libraries/render-utils/src/forward_simple_transparent.slf +++ b/libraries/render-utils/src/forward_simple_transparent.slf @@ -17,12 +17,12 @@ <$declareEvalGlobalLightingAlphaBlended()$> // the interpolated normal -in vec3 _normalWS; -in vec3 _normalMS; -in vec4 _color; -in vec2 _texCoord0; -in vec4 _positionMS; -in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; // For retro-compatibility #define _normal _normalWS @@ -30,7 +30,7 @@ in vec4 _positionES; #define _position _positionMS #define _eyePosition _positionES -layout(location = 0) out vec4 _fragColor0; +layout(location=0) out vec4 _fragColor0; //PROCEDURAL_COMMON_BLOCK diff --git a/libraries/render-utils/src/fxaa.slf b/libraries/render-utils/src/fxaa.slf index 94fa75c47f..2dddcc795b 100644 --- a/libraries/render-utils/src/fxaa.slf +++ b/libraries/render-utils/src/fxaa.slf @@ -22,13 +22,13 @@ precision mediump float; precision mediump int; #endif -uniform sampler2D colorTexture; +layout(binding=0) uniform sampler2D colorTexture; //uniform sampler2D historyTexture; -uniform vec2 texcoordOffset; +layout(location=0) uniform vec2 texcoordOffset; -in vec2 varTexCoord0; -layout(location = 0) out vec4 outFragColor; -//layout(location = 0) out vec4 outFragHistory; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; +//layout(location=0) out vec4 outFragHistory; void main() { outFragColor = vec4(texture(colorTexture, varTexCoord0).xyz, 1.0/8.0); diff --git a/libraries/render-utils/src/fxaa.slv b/libraries/render-utils/src/fxaa.slv index 35a96ceb24..037adc18bf 100644 --- a/libraries/render-utils/src/fxaa.slv +++ b/libraries/render-utils/src/fxaa.slv @@ -18,7 +18,7 @@ <$declareStandardTransform()$> -out vec2 varTexcoord; +layout(location=0) out vec2 varTexcoord; void main(void) { varTexcoord = inTexCoord0.xy; diff --git a/libraries/render-utils/src/fxaa_blend.slf b/libraries/render-utils/src/fxaa_blend.slf index 996344c881..aca050f047 100644 --- a/libraries/render-utils/src/fxaa_blend.slf +++ b/libraries/render-utils/src/fxaa_blend.slf @@ -12,13 +12,13 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -<@include DeferredBufferWrite.slh@> +<@include gpu/ShaderConstants.h@> -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; -uniform sampler2D colorTexture; -uniform float sharpenIntensity; +layout(binding=0) uniform sampler2D colorTexture; +layout(location=GPU_UNIFORM_EXTRA0) uniform float sharpenIntensity; void main(void) { vec4 pixels[9]; diff --git a/libraries/render-utils/src/glowLine.slf b/libraries/render-utils/src/glowLine.slf index 6a7a6157a4..69757ec92a 100644 --- a/libraries/render-utils/src/glowLine.slf +++ b/libraries/render-utils/src/glowLine.slf @@ -9,10 +9,12 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -in vec4 _color; +<@include render-utils/ShaderConstants.h@> -in float distanceFromCenter; -out vec4 _fragColor; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; + +layout(location=1) in float distanceFromCenter; +layout(location=0) out vec4 _fragColor; void main(void) { // The incoming value actually ranges from -1 to 1, so modify it diff --git a/libraries/render-utils/src/glowLine.slv b/libraries/render-utils/src/glowLine.slv index 4532ed7b9f..70947350a4 100644 --- a/libraries/render-utils/src/glowLine.slv +++ b/libraries/render-utils/src/glowLine.slv @@ -10,28 +10,34 @@ // <@include gpu/Transform.slh@> +<@include render-utils/ShaderConstants.h@> + <$declareStandardTransform()$> -layout(std140) uniform lineData { +struct LineData { vec4 p1; vec4 p2; vec4 color; float width; }; -out vec4 _color; +layout(std140, binding=0) uniform LineDataBuffer { + LineData _lineData; +}; + +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; // the distance from the center in 'quad space' -out float distanceFromCenter; +layout(location=1) out float distanceFromCenter; void main(void) { - _color = color; + _color = _lineData.color; TransformCamera cam = getTransformCamera(); TransformObject obj = getTransformObject(); vec4 p1eye, p2eye; - <$transformModelToEyePos(cam, obj, p1, p1eye)$> - <$transformModelToEyePos(cam, obj, p2, p2eye)$> + <$transformModelToEyePos(cam, obj, _lineData.p1, p1eye)$> + <$transformModelToEyePos(cam, obj, _lineData.p2, p2eye)$> p1eye /= p1eye.w; p2eye /= p2eye.w; @@ -40,7 +46,7 @@ void main(void) { // Find the vector from the eye to one of the points vec3 v2 = normalize(p1eye.xyz); // The orthogonal vector is the cross product of these two - vec3 orthogonal = cross(v1, v2) * width; + vec3 orthogonal = cross(v1, v2) * _lineData.width; // Deteremine which end to emit based on the vertex id (even / odd) vec4 eye = (0 == gl_VertexID % 2) ? p1eye : p2eye; diff --git a/libraries/render-utils/src/grid.slf b/libraries/render-utils/src/grid.slf index a680e7093b..c2380c980d 100644 --- a/libraries/render-utils/src/grid.slf +++ b/libraries/render-utils/src/grid.slf @@ -1,7 +1,7 @@ <@include gpu/Config.slh@> <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> -// grid.slf +// grid.frag // fragment shader // // Created by Zach Pomerantz on 2/16/2016. @@ -11,6 +11,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include gpu/ShaderConstants.h@> <@include gpu/Paint.slh@> struct Grid { @@ -19,13 +20,16 @@ struct Grid { vec4 edge; }; -uniform gridBuffer { Grid grid; }; +layout(binding=0) uniform gridBuffer { + Grid grid; +}; + Grid getGrid() { return grid; } -in vec2 varTexCoord0; -in vec4 varColor; +layout(location=GPU_ATTR_TEXCOORD0) in vec2 varTexCoord0; +layout(location=GPU_ATTR_COLOR) in vec4 varColor; -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { Grid grid = getGrid(); diff --git a/libraries/render-utils/src/hmd_ui.slf b/libraries/render-utils/src/hmd_ui.slf index 959e8d733c..d0e6798cec 100644 --- a/libraries/render-utils/src/hmd_ui.slf +++ b/libraries/render-utils/src/hmd_ui.slf @@ -11,20 +11,21 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include render-utils/ShaderConstants.h@> -uniform sampler2D hudTexture; +layout(binding=0) uniform sampler2D hudTexture; struct HUDData { float alpha; }; -layout(std140) uniform hudBuffer { +layout(std140, binding=0) uniform hudBuffer { HUDData hud; }; -in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -out vec4 fragColor0; +layout(location=0) out vec4 fragColor0; void main() { vec4 color = texture(hudTexture, _texCoord0); diff --git a/libraries/render-utils/src/hmd_ui.slv b/libraries/render-utils/src/hmd_ui.slv index d6e02ff4cb..5352a5ba68 100644 --- a/libraries/render-utils/src/hmd_ui.slv +++ b/libraries/render-utils/src/hmd_ui.slv @@ -14,17 +14,19 @@ <@include gpu/Inputs.slh@> <@include gpu/Transform.slh@> +<@include render-utils/ShaderConstants.h@> + <$declareStandardTransform()$> struct HUDData { float alpha; }; -layout(std140) uniform hudBuffer { +layout(std140, binding=0) uniform hudBuffer { HUDData hud; }; -out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; void main() { _texCoord0 = inTexCoord0.st; diff --git a/libraries/render-utils/src/lightClusters_drawClusterContent.slf b/libraries/render-utils/src/lightClusters_drawClusterContent.slf index d4d97c5b16..65ae8f423e 100644 --- a/libraries/render-utils/src/lightClusters_drawClusterContent.slf +++ b/libraries/render-utils/src/lightClusters_drawClusterContent.slf @@ -1,7 +1,7 @@ <@include gpu/Config.slh@> <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> -// lightClusters_drawClusterFro Depth.slf +// lightClusters_drawClusterContent.frag // // Created by Sam Gateau on 9/8/2016. // Copyright 2015 High Fidelity, Inc. @@ -24,8 +24,8 @@ <$declareColorWheel()$> -in vec2 varTexCoord0; -out vec4 _fragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/lightClusters_drawClusterContent.slv b/libraries/render-utils/src/lightClusters_drawClusterContent.slv index b88e2e9ee2..d7e4a66a6a 100644 --- a/libraries/render-utils/src/lightClusters_drawClusterContent.slv +++ b/libraries/render-utils/src/lightClusters_drawClusterContent.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// lightClusters_drawClusterContent.slv +// lightClusters_drawClusterContent.vert // Vertex shader // // Created by Sam Gateau on 9/8/2016 @@ -21,7 +21,7 @@ <$declareColorWheel()$> -out vec4 varColor; +layout(location=0) out vec4 varColor; void main(void) { diff --git a/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slf b/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slf index c51d45ed44..4efb60a259 100644 --- a/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slf +++ b/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slf @@ -1,7 +1,7 @@ <@include gpu/Config.slh@> <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> -// lightClusters_drawClusterFro Depth.slf +// lightClusters_drawClusterFromDepth.frag // // Created by Sam Gateau on 9/8/2016. // Copyright 2015 High Fidelity, Inc. @@ -21,8 +21,8 @@ <$declareColorWheel()$> -in vec2 varTexCoord0; -out vec4 _fragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slv b/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slv index 912c39f93c..d35c7cb20b 100644 --- a/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slv +++ b/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// lightClusters_drawClusterFrom Depth.slv +// lightClusters_drawClusterFrom Depth.vert // Vertex shader // // Created by Sam Gateau on 9/8/2016 @@ -23,7 +23,7 @@ -out vec4 varColor; +layout(location=0) out vec4 varColor; void main(void) { diff --git a/libraries/render-utils/src/lightClusters_drawGrid.slf b/libraries/render-utils/src/lightClusters_drawGrid.slf index 33c8cc56b8..47ed84eeec 100644 --- a/libraries/render-utils/src/lightClusters_drawGrid.slf +++ b/libraries/render-utils/src/lightClusters_drawGrid.slf @@ -1,7 +1,7 @@ <@include gpu/Config.slh@> <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> -// lightClusters_drawGrid.slf +// lightClusters_drawGrid.frag // // Created by Sam Gateau on 9/8/2016. // Copyright 2015 High Fidelity, Inc. @@ -10,8 +10,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -in vec4 varColor; -out vec4 outFragColor; +layout(location=0) in vec4 varColor; +layout(location=0) out vec4 outFragColor; void main(void) { diff --git a/libraries/render-utils/src/lightClusters_drawGrid.slv b/libraries/render-utils/src/lightClusters_drawGrid.slv index aac7fe59a5..c4aff45beb 100644 --- a/libraries/render-utils/src/lightClusters_drawGrid.slv +++ b/libraries/render-utils/src/lightClusters_drawGrid.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// lightClusters_drawGrid.slv +// lightClusters_drawGrid.vert // Vertex shader // // Created by Sam Gateau on 9/8/2016 @@ -23,7 +23,7 @@ -out vec4 varColor; +layout(location=0) out vec4 varColor; void main(void) { diff --git a/libraries/render-utils/src/local_lights_drawOutline.slf b/libraries/render-utils/src/local_lights_drawOutline.slf index f4a135ff0d..c2a53e0490 100644 --- a/libraries/render-utils/src/local_lights_drawOutline.slf +++ b/libraries/render-utils/src/local_lights_drawOutline.slf @@ -30,10 +30,11 @@ <@include LightClusterGrid.slh@> +<@include render-utils/ShaderConstants.h@> -in vec2 _texCoord0; -out vec4 _fragColor; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/local_lights_shading.slf b/libraries/render-utils/src/local_lights_shading.slf index b224fcb77d..60cd9c426d 100644 --- a/libraries/render-utils/src/local_lights_shading.slf +++ b/libraries/render-utils/src/local_lights_shading.slf @@ -19,8 +19,10 @@ <@include LightLocal.slh@> -in vec2 _texCoord0; -out vec4 _fragColor; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=0) out vec4 _fragColor; void main(void) { _fragColor = vec4(0.0); diff --git a/libraries/render-utils/src/model.slf b/libraries/render-utils/src/model.slf index e5c25c8bc1..20fa10f44c 100644 --- a/libraries/render-utils/src/model.slf +++ b/libraries/render-utils/src/model.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// model_specular_map.frag +// model.frag // fragment shader // // Created by Andrzej Kapolka on 5/6/14. @@ -13,17 +13,16 @@ // <@include DeferredBufferWrite.slh@> - <@include graphics/Material.slh@> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> -<@include MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, METALLIC, EMISSIVE, OCCLUSION, SCATTERING)$> -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec3 _normalWS; -in vec3 _color; - +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; void main(void) { Material mat = getMaterial(); diff --git a/libraries/render-utils/src/model.slv b/libraries/render-utils/src/model.slv index 7cfedfe877..1ec5cf83aa 100644 --- a/libraries/render-utils/src/model.slv +++ b/libraries/render-utils/src/model.slv @@ -1,7 +1,7 @@ <@include gpu/Config.slh@> <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> -// model.slv +// model.vert // vertex shader // // Created by Andrzej Kapolka on 10/14/13. @@ -14,17 +14,19 @@ <@include gpu/Inputs.slh@> <@include gpu/Color.slh@> <@include gpu/Transform.slh@> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> + <$declareStandardTransform()$> -<@include MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out vec3 _color; -out float _alpha; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec4 _positionES; -out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; void main(void) { _color = color_sRGBToLinear(inColor.xyz); diff --git a/libraries/render-utils/src/model_fade.slf b/libraries/render-utils/src/model_fade.slf index 323d1828a0..31a4f4db6e 100644 --- a/libraries/render-utils/src/model_fade.slf +++ b/libraries/render-utils/src/model_fade.slf @@ -16,17 +16,19 @@ <@include graphics/Material.slh@> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, METALLIC, EMISSIVE, OCCLUSION)$> <@include Fade.slh@> <$declareFadeFragment()$> -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec3 _normalWS; -in vec3 _color; -in vec4 _positionWS; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; void main(void) { vec3 fadeEmissive; diff --git a/libraries/render-utils/src/model_fade.slv b/libraries/render-utils/src/model_fade.slv index 6e3a8271ce..e3f7924bc2 100644 --- a/libraries/render-utils/src/model_fade.slv +++ b/libraries/render-utils/src/model_fade.slv @@ -1,7 +1,7 @@ <@include gpu/Config.slh@> <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> -// model_fade.slv +// model_fade.vert // vertex shader // // Created by Olivier Prat on 04/24/17. @@ -16,16 +16,18 @@ <@include gpu/Transform.slh@> <$declareStandardTransform()$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out float _alpha; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec4 _positionES; -out vec4 _positionWS; -out vec3 _normalWS; -out vec3 _color; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; void main(void) { _color = color_sRGBToLinear(inColor.xyz); diff --git a/libraries/render-utils/src/model_lightmap.slf b/libraries/render-utils/src/model_lightmap.slf index c4eed4185e..3cd20b1a35 100644 --- a/libraries/render-utils/src/model_lightmap.slf +++ b/libraries/render-utils/src/model_lightmap.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// model_lightmap_specular_map.frag +// model_lightmap.frag // fragment shader // // Created by Samuel Gateau on 11/19/14. @@ -13,17 +13,18 @@ // <@include DeferredBufferWrite.slh@> - <@include graphics/Material.slh@> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> -<@include MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, METALLIC)$> <$declareMaterialLightmap()$> -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec3 _normalWS; -in vec3 _color; + +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; void main(void) { Material mat = getMaterial(); diff --git a/libraries/render-utils/src/model_lightmap.slv b/libraries/render-utils/src/model_lightmap.slv index b3f20357cd..e82fcaf85b 100644 --- a/libraries/render-utils/src/model_lightmap.slv +++ b/libraries/render-utils/src/model_lightmap.slv @@ -15,16 +15,18 @@ <@include gpu/Inputs.slh@> <@include gpu/Color.slh@> <@include gpu/Transform.slh@> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> + <$declareStandardTransform()$> -<@include MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out vec4 _positionES; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec3 _normalWS; -out vec3 _color; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; void main(void) { // pass along the color in linear space diff --git a/libraries/render-utils/src/model_lightmap_fade.slf b/libraries/render-utils/src/model_lightmap_fade.slf index ba651711c3..c7852cfd3f 100644 --- a/libraries/render-utils/src/model_lightmap_fade.slf +++ b/libraries/render-utils/src/model_lightmap_fade.slf @@ -16,18 +16,20 @@ <@include graphics/Material.slh@> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, METALLIC)$> <$declareMaterialLightmap()$> <@include Fade.slh@> <$declareFadeFragment()$> -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec3 _normalWS; -in vec3 _color; -in vec4 _positionWS; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; void main(void) { vec3 fadeEmissive; diff --git a/libraries/render-utils/src/model_lightmap_fade.slv b/libraries/render-utils/src/model_lightmap_fade.slv index 31abb36c4b..5be90e2384 100644 --- a/libraries/render-utils/src/model_lightmap_fade.slv +++ b/libraries/render-utils/src/model_lightmap_fade.slv @@ -17,15 +17,17 @@ <@include gpu/Transform.slh@> <$declareStandardTransform()$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out vec4 _positionES; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec3 _normalWS; -out vec3 _color; -out vec4 _positionWS; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { // pass along the color in linear space diff --git a/libraries/render-utils/src/model_lightmap_normal_map.slf b/libraries/render-utils/src/model_lightmap_normal_map.slf index 57aaa3ed2e..9f26c3063d 100644 --- a/libraries/render-utils/src/model_lightmap_normal_map.slf +++ b/libraries/render-utils/src/model_lightmap_normal_map.slf @@ -13,19 +13,19 @@ // <@include DeferredBufferWrite.slh@> - <@include graphics/Material.slh@> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> -<@include MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, NORMAL, METALLIC)$> <$declareMaterialLightmap()$> -in vec4 _positionES; -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec3 _normalWS; -in vec3 _tangentWS; -in vec3 _color; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; void main(void) { Material mat = getMaterial(); diff --git a/libraries/render-utils/src/model_lightmap_normal_map.slv b/libraries/render-utils/src/model_lightmap_normal_map.slv index 15fc4099d5..02524268ec 100644 --- a/libraries/render-utils/src/model_lightmap_normal_map.slv +++ b/libraries/render-utils/src/model_lightmap_normal_map.slv @@ -15,17 +15,20 @@ <@include gpu/Inputs.slh@> <@include gpu/Color.slh@> <@include gpu/Transform.slh@> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> + <$declareStandardTransform()$> -<@include MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out vec4 _positionES; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec3 _normalWS; -out vec3 _tangentWS; -out vec3 _color; + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; void main(void) { // pass along the color in linear space diff --git a/libraries/render-utils/src/model_lightmap_normal_map_fade.slf b/libraries/render-utils/src/model_lightmap_normal_map_fade.slf index 2cd5ac433f..b1563a6ad9 100644 --- a/libraries/render-utils/src/model_lightmap_normal_map_fade.slf +++ b/libraries/render-utils/src/model_lightmap_normal_map_fade.slf @@ -16,20 +16,22 @@ <@include graphics/Material.slh@> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, NORMAL, METALLIC)$> <$declareMaterialLightmap()$> <@include Fade.slh@> <$declareFadeFragment()$> -in vec4 _positionES; -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec3 _normalWS; -in vec3 _tangentWS; -in vec3 _color; -in vec4 _positionWS; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; void main(void) { vec3 fadeEmissive; diff --git a/libraries/render-utils/src/model_lightmap_normal_map_fade.slv b/libraries/render-utils/src/model_lightmap_normal_map_fade.slv index 8fc3fa28d8..82f6d795d8 100644 --- a/libraries/render-utils/src/model_lightmap_normal_map_fade.slv +++ b/libraries/render-utils/src/model_lightmap_normal_map_fade.slv @@ -15,18 +15,20 @@ <@include gpu/Inputs.slh@> <@include gpu/Color.slh@> <@include gpu/Transform.slh@> -<$declareStandardTransform()$> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> -<@include MaterialTextures.slh@> +<$declareStandardTransform()$> <$declareMaterialTexMapArrayBuffer()$> -out vec4 _positionES; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec3 _normalWS; -out vec3 _tangentWS; -out vec3 _color; -out vec4 _positionWS; + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { // pass along the color in linear space diff --git a/libraries/render-utils/src/model_normal_map.slf b/libraries/render-utils/src/model_normal_map.slf index b13377af21..5d8ba00936 100644 --- a/libraries/render-utils/src/model_normal_map.slf +++ b/libraries/render-utils/src/model_normal_map.slf @@ -13,18 +13,18 @@ // <@include DeferredBufferWrite.slh@> - <@include graphics/Material.slh@> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> -<@include MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, NORMAL, METALLIC, EMISSIVE, OCCLUSION, SCATTERING)$> -in vec4 _positionES; -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec3 _normalWS; -in vec3 _tangentWS; -in vec3 _color; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; void main(void) { Material mat = getMaterial(); diff --git a/libraries/render-utils/src/model_normal_map.slv b/libraries/render-utils/src/model_normal_map.slv index cc99c6d22d..52386d6e4f 100644 --- a/libraries/render-utils/src/model_normal_map.slv +++ b/libraries/render-utils/src/model_normal_map.slv @@ -15,18 +15,21 @@ <@include gpu/Inputs.slh@> <@include gpu/Color.slh@> <@include gpu/Transform.slh@> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> + <$declareStandardTransform()$> -<@include MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out vec4 _positionES; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec3 _normalWS; -out vec3 _tangentWS; -out vec3 _color; -out float _alpha; + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; void main(void) { // pass along the color diff --git a/libraries/render-utils/src/model_normal_map_fade.slf b/libraries/render-utils/src/model_normal_map_fade.slf index 7ece8fea38..fb66fe167c 100644 --- a/libraries/render-utils/src/model_normal_map_fade.slf +++ b/libraries/render-utils/src/model_normal_map_fade.slf @@ -13,22 +13,22 @@ // <@include DeferredBufferWrite.slh@> - <@include graphics/Material.slh@> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> +<@include Fade.slh@> -<@include MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, NORMAL, METALLIC, EMISSIVE, OCCLUSION)$> -<@include Fade.slh@> <$declareFadeFragment()$> -in vec4 _positionES; -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec3 _normalWS; -in vec3 _tangentWS; -in vec3 _color; -in vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; void main(void) { vec3 fadeEmissive; diff --git a/libraries/render-utils/src/model_normal_map_fade.slv b/libraries/render-utils/src/model_normal_map_fade.slv index a75087f93d..74d23d6057 100644 --- a/libraries/render-utils/src/model_normal_map_fade.slv +++ b/libraries/render-utils/src/model_normal_map_fade.slv @@ -15,19 +15,21 @@ <@include gpu/Inputs.slh@> <@include gpu/Color.slh@> <@include gpu/Transform.slh@> -<$declareStandardTransform()$> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> -<@include MaterialTextures.slh@> +<$declareStandardTransform()$> <$declareMaterialTexMapArrayBuffer()$> -out vec4 _positionES; -out vec4 _positionWS; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec3 _normalWS; -out vec3 _tangentWS; -out vec3 _color; -out float _alpha; + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; void main(void) { // pass along the color diff --git a/libraries/render-utils/src/model_shadow.slf b/libraries/render-utils/src/model_shadow.slf index 178ea7b387..6426759ec7 100644 --- a/libraries/render-utils/src/model_shadow.slf +++ b/libraries/render-utils/src/model_shadow.slf @@ -12,7 +12,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -layout(location = 0) out vec4 _fragColor; +layout(location=0) out vec4 _fragColor; void main(void) { // pass-through to set z-buffer diff --git a/libraries/render-utils/src/model_shadow_fade.slf b/libraries/render-utils/src/model_shadow_fade.slf index 403f32c457..c6c8c23f65 100644 --- a/libraries/render-utils/src/model_shadow_fade.slf +++ b/libraries/render-utils/src/model_shadow_fade.slf @@ -13,11 +13,14 @@ // <@include Fade.slh@> +<@include render-utils/ShaderConstants.h@> + <$declareFadeFragment()$> -layout(location = 0) out vec4 _fragColor; -in vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; + +layout(location=0) out vec4 _fragColor; void main(void) { FadeObjectParams fadeParams; diff --git a/libraries/render-utils/src/model_shadow_fade.slv b/libraries/render-utils/src/model_shadow_fade.slv index 72e4a1a823..cf180c2dc8 100644 --- a/libraries/render-utils/src/model_shadow_fade.slv +++ b/libraries/render-utils/src/model_shadow_fade.slv @@ -13,12 +13,13 @@ // <@include gpu/Inputs.slh@> - <@include gpu/Transform.slh@> +<@include render-utils/ShaderConstants.h@> <$declareStandardTransform()$> -out vec4 _positionWS; + +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { // standard transform diff --git a/libraries/render-utils/src/model_translucent.slf b/libraries/render-utils/src/model_translucent.slf index b808ca4bab..cd170f29e7 100644 --- a/libraries/render-utils/src/model_translucent.slf +++ b/libraries/render-utils/src/model_translucent.slf @@ -12,29 +12,29 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include gpu/Transform.slh@> <@include graphics/Material.slh@> - +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> +<@include LightLocal.slh@> +<@include ShadingModel.slh@> <@include DeferredGlobalLight.slh@> <$declareEvalGlobalLightingAlphaBlendedWithHaze()$> -<@include LightLocal.slh@> - -<@include gpu/Transform.slh@> <$declareStandardCameraTransform()$> -<@include MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, _SCRIBE_NULL, EMISSIVE, OCCLUSION)$> -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec4 _positionES; -in vec4 _positionWS; -in vec3 _normalWS; -in vec3 _color; -in float _alpha; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; -out vec4 _fragColor; +layout(location=0) out vec4 _fragColor; void main(void) { Material mat = getMaterial(); @@ -83,7 +83,7 @@ void main(void) { 1.0, occlusionTex, fragPositionES, - fragPositionWS, + fragPositionWS, albedo, fresnel, metallic, diff --git a/libraries/render-utils/src/model_translucent.slv b/libraries/render-utils/src/model_translucent.slv index 61a1c96ce8..defdb87172 100644 --- a/libraries/render-utils/src/model_translucent.slv +++ b/libraries/render-utils/src/model_translucent.slv @@ -1,7 +1,7 @@ <@include gpu/Config.slh@> <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> -// model_translucent.slv +// model_translucent.vert // vertex shader // // Created by Olivier Prat on 15/01/18. @@ -16,16 +16,18 @@ <@include gpu/Transform.slh@> <$declareStandardTransform()$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out float _alpha; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec4 _positionES; -out vec4 _positionWS; -out vec3 _normalWS; -out vec3 _color; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; void main(void) { _color = color_sRGBToLinear(inColor.xyz); diff --git a/libraries/render-utils/src/model_translucent_fade.slf b/libraries/render-utils/src/model_translucent_fade.slf index a93adee96b..81b9faf82d 100644 --- a/libraries/render-utils/src/model_translucent_fade.slf +++ b/libraries/render-utils/src/model_translucent_fade.slf @@ -16,21 +16,23 @@ <@include gpu/Transform.slh@> <$declareStandardCameraTransform()$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, _SCRIBE_NULL, EMISSIVE, OCCLUSION)$> <@include Fade.slh@> <$declareFadeFragment()$> -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec4 _positionES; -in vec4 _positionWS; -in vec3 _normalWS; -in vec3 _color; -in float _alpha; +<@include render-utils/ShaderConstants.h@> -out vec4 _fragColor; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; + +layout(location=0) out vec4 _fragColor; void main(void) { vec3 fadeEmissive; diff --git a/libraries/render-utils/src/model_translucent_normal_map.slf b/libraries/render-utils/src/model_translucent_normal_map.slf index 750149dc1b..c813097dcf 100644 --- a/libraries/render-utils/src/model_translucent_normal_map.slf +++ b/libraries/render-utils/src/model_translucent_normal_map.slf @@ -23,19 +23,21 @@ <@include gpu/Transform.slh@> <$declareStandardCameraTransform()$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, NORMAL, _SCRIBE_NULL, EMISSIVE, OCCLUSION)$> -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec4 _positionES; -in vec4 _positionWS; -in vec3 _normalWS; -in vec3 _tangentWS; -in vec3 _color; -in float _alpha; +<@include render-utils/ShaderConstants.h@> -out vec4 _fragColor; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; + +layout(location=0) out vec4 _fragColor; void main(void) { Material mat = getMaterial(); diff --git a/libraries/render-utils/src/model_translucent_normal_map.slv b/libraries/render-utils/src/model_translucent_normal_map.slv index 21d56418c0..257711ac24 100644 --- a/libraries/render-utils/src/model_translucent_normal_map.slv +++ b/libraries/render-utils/src/model_translucent_normal_map.slv @@ -1,7 +1,7 @@ <@include gpu/Config.slh@> <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> -// model_translucent_normal_map.slv +// model_translucent_normal_map.vert // vertex shader // // Created by Olivier Prat on 23/01/18. @@ -16,17 +16,19 @@ <@include gpu/Transform.slh@> <$declareStandardTransform()$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out float _alpha; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec4 _positionES; -out vec4 _positionWS; -out vec3 _normalWS; -out vec3 _tangentWS; -out vec3 _color; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; void main(void) { _color = color_sRGBToLinear(inColor.xyz); diff --git a/libraries/render-utils/src/model_translucent_normal_map_fade.slf b/libraries/render-utils/src/model_translucent_normal_map_fade.slf index c7615626ce..d17c5105b1 100644 --- a/libraries/render-utils/src/model_translucent_normal_map_fade.slf +++ b/libraries/render-utils/src/model_translucent_normal_map_fade.slf @@ -12,6 +12,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include render-utils/ShaderConstants.h@> <@include graphics/Material.slh@> <@include DeferredGlobalLight.slh@> @@ -23,22 +24,24 @@ <@include gpu/Transform.slh@> <$declareStandardCameraTransform()$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, NORMAL, _SCRIBE_NULL, EMISSIVE, OCCLUSION)$> <@include Fade.slh@> <$declareFadeFragment()$> -in vec2 _texCoord0; -in vec2 _texCoord1; -in vec4 _positionES; -in vec3 _normalWS; -in vec3 _tangentWS; -in vec3 _color; -in float _alpha; -in vec4 _positionWS; +<@include render-utils/ShaderConstants.h@> -out vec4 _fragColor; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; + +layout(location=0) out vec4 _fragColor; void main(void) { vec3 fadeEmissive; diff --git a/libraries/render-utils/src/model_translucent_unlit.slf b/libraries/render-utils/src/model_translucent_unlit.slf index e5507dd2e0..eef3190d2b 100644 --- a/libraries/render-utils/src/model_translucent_unlit.slf +++ b/libraries/render-utils/src/model_translucent_unlit.slf @@ -14,15 +14,17 @@ <@include graphics/Material.slh@> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, _SCRIBE_NULL, EMISSIVE, OCCLUSION)$> <@include LightingModel.slh@> -in vec2 _texCoord0; -in vec3 _color; -in float _alpha; +<@include render-utils/ShaderConstants.h@> -out vec4 _fragColor; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; + +layout(location=0) out vec4 _fragColor; void main(void) { Material mat = getMaterial(); diff --git a/libraries/render-utils/src/model_translucent_unlit_fade.slf b/libraries/render-utils/src/model_translucent_unlit_fade.slf index 016db4639f..4efdd7f4e5 100644 --- a/libraries/render-utils/src/model_translucent_unlit_fade.slf +++ b/libraries/render-utils/src/model_translucent_unlit_fade.slf @@ -14,19 +14,21 @@ <@include graphics/Material.slh@> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, _SCRIBE_NULL, EMISSIVE, OCCLUSION)$> <@include LightingModel.slh@> <@include Fade.slh@> <$declareFadeFragment()$> -in vec2 _texCoord0; -in vec3 _color; -in float _alpha; -in vec4 _positionWS; +<@include render-utils/ShaderConstants.h@> -out vec4 _fragColor; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; + +layout(location=0) out vec4 _fragColor; void main(void) { vec3 fadeEmissive; diff --git a/libraries/render-utils/src/model_unlit.slf b/libraries/render-utils/src/model_unlit.slf index d4c1334e12..e920b3eb67 100644 --- a/libraries/render-utils/src/model_unlit.slf +++ b/libraries/render-utils/src/model_unlit.slf @@ -15,14 +15,15 @@ <@include DeferredBufferWrite.slh@> <@include LightingModel.slh@> <@include graphics/Material.slh@> +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> -<@include MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO)$> -in vec2 _texCoord0; -in vec3 _normalWS; -in vec3 _color; -in float _alpha; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; void main(void) { diff --git a/libraries/render-utils/src/model_unlit_fade.slf b/libraries/render-utils/src/model_unlit_fade.slf index d8f8cfce38..30d023da88 100644 --- a/libraries/render-utils/src/model_unlit_fade.slf +++ b/libraries/render-utils/src/model_unlit_fade.slf @@ -15,18 +15,19 @@ <@include DeferredBufferWrite.slh@> <@include LightingModel.slh@> <@include graphics/Material.slh@> - +<@include graphics/MaterialTextures.slh@> +<@include render-utils/ShaderConstants.h@> <@include Fade.slh@> + <$declareFadeFragment()$> -<@include MaterialTextures.slh@> <$declareMaterialTextures(ALBEDO)$> -in vec2 _texCoord0; -in vec3 _normalWS; -in vec3 _color; -in float _alpha; -in vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; void main(void) { vec3 fadeEmissive; diff --git a/libraries/render-utils/src/nop.slf b/libraries/render-utils/src/nop.slf index f87db4e138..dd54f839ea 100644 --- a/libraries/render-utils/src/nop.slf +++ b/libraries/render-utils/src/nop.slf @@ -12,5 +12,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +layout(location=0) out vec4 _fragColor; + void main(void) { } diff --git a/libraries/render-utils/src/render-utils/ShaderConstants.h b/libraries/render-utils/src/render-utils/ShaderConstants.h new file mode 100644 index 0000000000..443e75159d --- /dev/null +++ b/libraries/render-utils/src/render-utils/ShaderConstants.h @@ -0,0 +1,238 @@ +// + +// <@if not RENDER_UTILS_SHADER_CONSTANTS_H@> +// <@def RENDER_UTILS_SHADER_CONSTANTS_H@> + +// Hack comment to absorb the extra '//' scribe prepends + +#ifndef RENDER_UTILS_SHADER_CONSTANTS_H +#define RENDER_UTILS_SHADER_CONSTANTS_H + +#define RENDER_UTILS_ATTR_TEXCOORD0 0 +#define RENDER_UTILS_ATTR_TEXCOORD1 1 +#define RENDER_UTILS_ATTR_COLOR 2 +#define RENDER_UTILS_ATTR_ALPHA 3 + +// World space +#define RENDER_UTILS_ATTR_POSITION_WS 4 +#define RENDER_UTILS_ATTR_NORMAL_WS 5 +#define RENDER_UTILS_ATTR_TANGENT_WS 6 + +// Model space +#define RENDER_UTILS_ATTR_POSITION_MS 7 +#define RENDER_UTILS_ATTR_NORMAL_MS 8 + +// Eye space +#define RENDER_UTILS_ATTR_POSITION_ES 9 + +// Fade +#define RENDER_UTILS_ATTR_FADE1 10 +#define RENDER_UTILS_ATTR_FADE2 11 +#define RENDER_UTILS_ATTR_FADE3 12 + + +#define RENDER_UTILS_BUFFER_DEFERRED_FRAME_TRANSFORM 0 +#define RENDER_UTILS_BUFFER_LIGHT_MODEL 3 +#define RENDER_UTILS_BUFFER_AMBIENT_LIGHT 6 +#define RENDER_UTILS_BUFFER_LIGHT_INDEX 7 + +#define RENDER_UTILS_UNIFORM_LIGHT_RADIUS 0 +#define RENDER_UTILS_UNIFORM_LIGHT_TEXCOORD_TRANSFORM 1 + +// Deferred lighting resolution +#define RENDER_UTILS_TEXTURE_DEFERRRED_COLOR 0 +#define RENDER_UTILS_TEXTURE_DEFERRRED_NORMAL 1 +#define RENDER_UTILS_TEXTURE_DEFERRRED_SPECULAR 2 +#define RENDER_UTILS_TEXTURE_DEFERRRED_DEPTH 3 +#define RENDER_UTILS_TEXTURE_DEFERRED_OBSCURANCE 4 +#define RENDER_UTILS_TEXTURE_DEFERRRED_LINEAR_Z_EYE 5 +#define RENDER_UTILS_TEXTURE_DEFERRED_CURVATURE 6 +#define RENDER_UTILS_TEXTURE_DEFERRED_DIFFUSED_CURVATURE 7 +#define RENDER_UTILS_TEXTURE_DEFERRED_LIGHTING 10 +#define RENDER_UTILS_TEXTURE_SKYBOX 11 + +#define RENDER_UTILS_BUFFER_SHADOW_PARAMS 2 +#define RENDER_UTILS_TEXTURE_SHADOW 12 + +#define RENDER_UTILS_BUFFER_LIGHT_CLUSTER_FRUSTUM_GRID 10 +#define RENDER_UTILS_BUFFER_LIGHT_CLUSTER_GRID 11 +#define RENDER_UTILS_BUFFER_LIGHT_CLUSTER_CONTENT 12 + +// Haze +#define RENDER_UTILS_BUFFER_HAZE_PARAMS 7 +#define RENDER_UTILS_TEXTURE_HAZE_COLOR 0 +#define RENDER_UTILS_TEXTURE_HAZE_LINEAR_DEPTH 1 + +// Fading +#define RENDER_UTILS_BUFFER_FADE_PARAMS 8 +#define RENDER_UTILS_BUFFER_FADE_OBJECT_PARAMS 9 +#define RENDER_UTILS_TEXTURE_FADE_MASK 10 + +// Highlighting +#define RENDER_UTILS_BUFFER_HIGHLIGHT_PARAMS 2 +#define RENDER_UTILS_TEXTURE_HIGHLIGHT_SCENE_DEPTH 0 +#define RENDER_UTILS_TEXTURE_HIGHLIGHT_DEPTH 1 + +// Subsurface scattering +#define RENDER_UTILS_BUFFER_SSSC_PARAMS 13 +#define RENDER_UTILS_TEXTURE_SSSC_PROFILE 12 +#define RENDER_UTILS_TEXTURE_SSSC_LUT 8 +#define RENDER_UTILS_TEXTURE_SSSC_SPECULAR_BECKMANN 9 + +// Ambient occlusion +#define RENDER_UTILS_BUFFER_SSAO_PARAMS 2 +#define RENDER_UTILS_BUFFER_SSAO_DEBUG_PARAMS 3 +#define RENDER_UTILS_TEXTURE_SSAO_PYRAMID 1 +#define RENDER_UTILS_TEXTURE_SSAO_OCCLUSION 0 + +// Temporal anti-aliasing +#define RENDER_UTILS_BUFFER_TAA_PARAMS 2 +#define RENDER_UTILS_TEXTURE_TAA_HISTORY 0 +#define RENDER_UTILS_TEXTURE_TAA_SOURCE 1 +#define RENDER_UTILS_TEXTURE_TAA_VELOCITY 2 +#define RENDER_UTILS_TEXTURE_TAA_DEPTH 3 +#define RENDER_UTILS_TEXTURE_TAA_NEXT 4 + +// Surface Geometry +#define RENDER_UTILS_BUFFER_SG_PARAMS 1 +#define RENDER_UTILS_TEXTURE_SG_DEPTH 0 +#define RENDER_UTILS_TEXTURE_SG_NORMAL 1 + +// Blur +#define RENDER_UTILS_BUFFER_BLUR_PARAMS 0 +#define RENDER_UTILS_TEXTURE_BLUR_SOURCE 0 +#define RENDER_UTILS_TEXTURE_BLUR_DEPTH 1 + +// Tone Mapping +#define RENDER_UTILS_BUFFER_TM_PARAMS 0 +#define RENDER_UTILS_TEXTURE_TM_COLOR 0 + +// Bloom +#define RENDER_UTILS_BUFFER_BLOOM_PARAMS 1 +#define RENDER_UTILS_TEXTURE_BLOOM_COLOR 0 + +// SDF Text rendering +#define RENDER_UTILS_TEXTURE_TEXT_FONT 0 +#define RENDER_UTILS_UNIFORM_TEXT_COLOR 0 +#define RENDER_UTILS_UNIFORM_TEXT_OUTLINE 1 + + +// Debugging +#define RENDER_UTILS_BUFFER_DEBUG_SKYBOX 5 +#define RENDER_UTILS_TEXTURE_DEBUG_DEPTH 11 +#define RENDER_UTILS_TEXTURE_DEBUG_HALF_DEPTH 12 +#define RENDER_UTILS_TEXTURE_DEBUG_OCCLUSION 13 +#define RENDER_UTILS_TEXTURE_DEBUG_OCCLUSION_BLURRED 14 +#define RENDER_UTILS_TEXTURE_DEBUG_VELOCITY 15 +#define RENDER_UTILS_TEXTURE_DEBUG_SHADOWS 16 +#define RENDER_UTILS_TEXTURE_DEBUG_HALF_NORMAL 17 +#define RENDER_UTILS_TEXTURE_DEBUG_SCATTERING 18 + +// + +namespace render_utils { namespace slot { + +namespace uniform { +enum Uniform { + TextColor = RENDER_UTILS_UNIFORM_TEXT_COLOR, + TextOutline = RENDER_UTILS_UNIFORM_TEXT_OUTLINE, + TaaSharpenIntensity = GPU_UNIFORM_EXTRA0, + HighlightOutlineWidth = GPU_UNIFORM_EXTRA0, + LightRadius = RENDER_UTILS_UNIFORM_LIGHT_RADIUS, + TexcoordTransform = RENDER_UTILS_UNIFORM_LIGHT_TEXCOORD_TRANSFORM, +}; +} + +namespace buffer { +enum Buffer { + DeferredFrameTransform = RENDER_UTILS_BUFFER_DEFERRED_FRAME_TRANSFORM, + LightModel = RENDER_UTILS_BUFFER_LIGHT_MODEL, + AmbientLight = RENDER_UTILS_BUFFER_AMBIENT_LIGHT, + HazeParams = RENDER_UTILS_BUFFER_HAZE_PARAMS, + FadeParameters = RENDER_UTILS_BUFFER_FADE_PARAMS, + FadeObjectParameters = RENDER_UTILS_BUFFER_FADE_OBJECT_PARAMS, + LightClusterFrustumGrid = RENDER_UTILS_BUFFER_LIGHT_CLUSTER_FRUSTUM_GRID, + LightClusterGrid = RENDER_UTILS_BUFFER_LIGHT_CLUSTER_GRID, + LightClusterContent = RENDER_UTILS_BUFFER_LIGHT_CLUSTER_CONTENT, + SsscParams = RENDER_UTILS_BUFFER_SSSC_PARAMS, + SsaoParams = RENDER_UTILS_BUFFER_SSAO_PARAMS, + SsaoDebugParams = RENDER_UTILS_BUFFER_SSAO_DEBUG_PARAMS, + LightIndex = RENDER_UTILS_BUFFER_LIGHT_INDEX, + TaaParams = RENDER_UTILS_BUFFER_TAA_PARAMS, + HighlightParams = RENDER_UTILS_BUFFER_HIGHLIGHT_PARAMS, + DebugSkyboxParams = RENDER_UTILS_BUFFER_DEBUG_SKYBOX, + SurfaceGeometryParams = RENDER_UTILS_BUFFER_SG_PARAMS, + BlurParams = RENDER_UTILS_BUFFER_BLUR_PARAMS, + BloomParams = RENDER_UTILS_BUFFER_BLOOM_PARAMS, + ToneMappingParams = RENDER_UTILS_BUFFER_TM_PARAMS, + ShadowParams = RENDER_UTILS_BUFFER_SHADOW_PARAMS, +}; +} // namespace buffer + +namespace texture { +enum Texture { + DeferredColor = RENDER_UTILS_TEXTURE_DEFERRRED_COLOR, + DeferredNormal = RENDER_UTILS_TEXTURE_DEFERRRED_NORMAL, + DeferredSpecular = RENDER_UTILS_TEXTURE_DEFERRRED_SPECULAR, + DeferredDepth = RENDER_UTILS_TEXTURE_DEFERRRED_DEPTH, + DeferredLinearZEye = RENDER_UTILS_TEXTURE_DEFERRRED_LINEAR_Z_EYE, + DeferredObscurance = RENDER_UTILS_TEXTURE_DEFERRED_OBSCURANCE, + DeferredLighting = RENDER_UTILS_TEXTURE_DEFERRED_LIGHTING, + DeferredCurvature = RENDER_UTILS_TEXTURE_DEFERRED_CURVATURE, + DeferredDiffusedCurvature = RENDER_UTILS_TEXTURE_DEFERRED_DIFFUSED_CURVATURE, + SsscLut = RENDER_UTILS_TEXTURE_SSSC_LUT, + SsscSpecularBeckmann = RENDER_UTILS_TEXTURE_SSSC_SPECULAR_BECKMANN, + SsscProfile = RENDER_UTILS_TEXTURE_SSSC_PROFILE, + FadeMask = RENDER_UTILS_TEXTURE_FADE_MASK, + Skybox = RENDER_UTILS_TEXTURE_SKYBOX, + HazeColor = RENDER_UTILS_TEXTURE_HAZE_COLOR, + HazeLinearDepth = RENDER_UTILS_TEXTURE_HAZE_LINEAR_DEPTH, + Shadow = RENDER_UTILS_TEXTURE_SHADOW, + TaaHistory = RENDER_UTILS_TEXTURE_TAA_HISTORY, + TaaSource = RENDER_UTILS_TEXTURE_TAA_SOURCE, + TaaVelocity = RENDER_UTILS_TEXTURE_TAA_VELOCITY, + TaaDepth = RENDER_UTILS_TEXTURE_TAA_DEPTH, + TaaNext = RENDER_UTILS_TEXTURE_TAA_NEXT, + SsaoOcclusion = RENDER_UTILS_TEXTURE_SSAO_OCCLUSION, + SsaoPyramid = RENDER_UTILS_TEXTURE_SSAO_PYRAMID, + HighlightSceneDepth = RENDER_UTILS_TEXTURE_HIGHLIGHT_SCENE_DEPTH, + HighlightDepth = RENDER_UTILS_TEXTURE_HIGHLIGHT_DEPTH, + SurfaceGeometryDepth = RENDER_UTILS_TEXTURE_SG_DEPTH, + SurfaceGeometryNormal = RENDER_UTILS_TEXTURE_SG_NORMAL, + BlurSource = RENDER_UTILS_TEXTURE_BLUR_SOURCE, + BlurDepth = RENDER_UTILS_TEXTURE_BLUR_DEPTH, + BloomColor = RENDER_UTILS_TEXTURE_BLOOM_COLOR, + ToneMappingColor = RENDER_UTILS_TEXTURE_TM_COLOR, + TextFont = RENDER_UTILS_TEXTURE_TEXT_FONT, + DebugDepth = RENDER_UTILS_TEXTURE_DEBUG_DEPTH, + DebugHalfDepth = RENDER_UTILS_TEXTURE_DEBUG_HALF_DEPTH, + DebugOcclusion = RENDER_UTILS_TEXTURE_DEBUG_OCCLUSION, + DebugOcclusionBlurred = RENDER_UTILS_TEXTURE_DEBUG_OCCLUSION_BLURRED, + DebugVelocity = RENDER_UTILS_TEXTURE_DEBUG_VELOCITY, + DebugShadows = RENDER_UTILS_TEXTURE_DEBUG_SHADOWS, + DebugHalfNormal = RENDER_UTILS_TEXTURE_DEBUG_HALF_NORMAL, + DebugScattering = RENDER_UTILS_TEXTURE_DEBUG_SCATTERING, +}; +} // namespace texture + +} } // namespace render_utils::slot + +// !> +// Hack Comment + +#endif // RENDER_UTILS_SHADER_CONSTANTS_H + +// <@if 1@> +// Trigger Scribe include +// <@endif@> + +// <@endif@> + +// Hack Comment diff --git a/libraries/render-utils/src/sdf_text3D.slf b/libraries/render-utils/src/sdf_text3D.slf index 08e50ee8c5..b4be4d1d02 100644 --- a/libraries/render-utils/src/sdf_text3D.slf +++ b/libraries/render-utils/src/sdf_text3D.slf @@ -11,14 +11,15 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html <@include DeferredBufferWrite.slh@> +<@include render-utils/ShaderConstants.h@> -uniform sampler2D Font; -uniform bool Outline; -uniform vec4 Color; +layout(binding=0) uniform sampler2D Font; +layout(location=RENDER_UTILS_UNIFORM_TEXT_OUTLINE) uniform bool Outline; +layout(location=RENDER_UTILS_UNIFORM_TEXT_COLOR) uniform vec4 Color; // the interpolated normal -in vec3 _normalWS; -in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; #define TAA_TEXTURE_LOD_BIAS -3.0 diff --git a/libraries/render-utils/src/sdf_text3D.slv b/libraries/render-utils/src/sdf_text3D.slv index bcf42c3cff..fa7ee6d409 100644 --- a/libraries/render-utils/src/sdf_text3D.slv +++ b/libraries/render-utils/src/sdf_text3D.slv @@ -11,14 +11,14 @@ // <@include gpu/Inputs.slh@> - <@include gpu/Transform.slh@> +<@include render-utils/ShaderConstants.h@> <$declareStandardTransform()$> // the interpolated normal -out vec3 _normalWS; -out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; void main() { _texCoord0 = inTexCoord0.xy; diff --git a/libraries/render-utils/src/sdf_text3D_transparent.slf b/libraries/render-utils/src/sdf_text3D_transparent.slf index 10eb88b198..8e8a6db504 100644 --- a/libraries/render-utils/src/sdf_text3D_transparent.slf +++ b/libraries/render-utils/src/sdf_text3D_transparent.slf @@ -11,14 +11,15 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html <@include DeferredBufferWrite.slh@> +<@include render-utils/ShaderConstants.h@> -uniform sampler2D Font; -uniform bool Outline; -uniform vec4 Color; +layout(binding=0) uniform sampler2D Font; +layout(location=RENDER_UTILS_UNIFORM_TEXT_OUTLINE) uniform bool Outline; +layout(location=RENDER_UTILS_UNIFORM_TEXT_COLOR) uniform vec4 Color; // the interpolated normal -in vec3 _normalWS; -in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; const float gamma = 2.2; const float smoothing = 32.0; diff --git a/libraries/render-utils/src/simple.slf b/libraries/render-utils/src/simple.slf index 7591dc1882..ace0afc60d 100644 --- a/libraries/render-utils/src/simple.slf +++ b/libraries/render-utils/src/simple.slf @@ -14,13 +14,15 @@ <@include DeferredBufferWrite.slh@> +<@include render-utils/ShaderConstants.h@> + // the interpolated normal -in vec3 _normalWS; -in vec3 _normalMS; -in vec4 _color; -in vec2 _texCoord0; -in vec4 _positionMS; -in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; // For retro-compatibility #define _normal _normalWS @@ -28,7 +30,7 @@ in vec4 _positionES; #define _position _positionMS #define _eyePosition _positionES -//PROCEDURAL_COMMON_BLOCK +<@include procedural/ProceduralCommon.slh@> #line 1001 //PROCEDURAL_BLOCK diff --git a/libraries/render-utils/src/simple.slv b/libraries/render-utils/src/simple.slv index 01338be15f..f4bd6795e3 100644 --- a/libraries/render-utils/src/simple.slv +++ b/libraries/render-utils/src/simple.slv @@ -17,13 +17,15 @@ <@include gpu/Transform.slh@> <$declareStandardTransform()$> +<@include render-utils/ShaderConstants.h@> + // the interpolated normal -out vec3 _normalWS; -out vec3 _normalMS; -out vec4 _color; -out vec2 _texCoord0; -out vec4 _positionMS; -out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_MS) out vec3 _normalMS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_POSITION_MS) out vec4 _positionMS; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; void main(void) { _color = color_sRGBAToLinear(inColor); diff --git a/libraries/render-utils/src/simple_fade.slf b/libraries/render-utils/src/simple_fade.slf index 0710c3e10b..c07a608a99 100644 --- a/libraries/render-utils/src/simple_fade.slf +++ b/libraries/render-utils/src/simple_fade.slf @@ -17,14 +17,16 @@ <@include Fade.slh@> <$declareFadeFragmentInstanced()$> +<@include render-utils/ShaderConstants.h@> + // the interpolated normal -in vec3 _normalWS; -in vec3 _normalMS; -in vec4 _color; -in vec2 _texCoord0; -in vec4 _positionMS; -in vec4 _positionES; -in vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; // For retro-compatibility #define _normal _normalWS @@ -32,7 +34,7 @@ in vec4 _positionWS; #define _position _positionMS #define _eyePosition _positionES -//PROCEDURAL_COMMON_BLOCK +<@include procedural/ProceduralCommon.slh@> #line 1001 //PROCEDURAL_BLOCK diff --git a/libraries/render-utils/src/simple_fade.slv b/libraries/render-utils/src/simple_fade.slv index c7d7c5d1b3..24aada33b9 100644 --- a/libraries/render-utils/src/simple_fade.slv +++ b/libraries/render-utils/src/simple_fade.slv @@ -20,14 +20,16 @@ <@include Fade.slh@> <$declareFadeVertexInstanced()$> +<@include render-utils/ShaderConstants.h@> + // the interpolated normal -out vec3 _normalWS; -out vec3 _normalMS; -out vec4 _color; -out vec2 _texCoord0; -out vec4 _positionMS; -out vec4 _positionES; -out vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_MS) out vec3 _normalMS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_POSITION_MS) out vec4 _positionMS; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { _color = color_sRGBAToLinear(inColor); diff --git a/libraries/render-utils/src/simple_opaque_web_browser.slf b/libraries/render-utils/src/simple_opaque_web_browser.slf index 3492e0cc90..3b77fbf431 100644 --- a/libraries/render-utils/src/simple_opaque_web_browser.slf +++ b/libraries/render-utils/src/simple_opaque_web_browser.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// simple_opaque_web_browser.slf +// simple_opaque_web_browser.frag // fragment shader // // Created by Anthony Thibault on 7/25/16. @@ -15,13 +15,15 @@ <@include gpu/Color.slh@> <@include DeferredBufferWrite.slh@> +<@include render-utils/ShaderConstants.h@> + // the albedo texture -uniform sampler2D originalTexture; +layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal -in vec3 _normalWS; -in vec4 _color; -in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; void main(void) { vec4 texel = texture(originalTexture, _texCoord0.st); diff --git a/libraries/render-utils/src/simple_textured.slf b/libraries/render-utils/src/simple_textured.slf index 072e2e8e18..c123a9671f 100644 --- a/libraries/render-utils/src/simple_textured.slf +++ b/libraries/render-utils/src/simple_textured.slf @@ -2,10 +2,10 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// simple_textured.slf +// simple_textured.frag // fragment shader // -// Created by Clément Brisset on 5/29/15. +// Created by Clement Brisset on 5/29/15. // Copyright 2014 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. @@ -14,13 +14,15 @@ <@include DeferredBufferWrite.slh@> +<@include render-utils/ShaderConstants.h@> + // the albedo texture -uniform sampler2D originalTexture; +layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal -in vec3 _normalWS; -in vec4 _color; -in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; void main(void) { vec4 texel = texture(originalTexture, _texCoord0); diff --git a/libraries/render-utils/src/simple_textured_fade.slf b/libraries/render-utils/src/simple_textured_fade.slf index 9ec02798ef..850282d40f 100644 --- a/libraries/render-utils/src/simple_textured_fade.slf +++ b/libraries/render-utils/src/simple_textured_fade.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// simple_textured_fade.slf +// simple_textured_fade.frag // fragment shader // // Created by Olivier Prat on 06/05/17. @@ -17,14 +17,16 @@ <@include Fade.slh@> +<@include render-utils/ShaderConstants.h@> + // the albedo texture -uniform sampler2D originalTexture; +layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal -in vec3 _normalWS; -in vec4 _color; -in vec2 _texCoord0; -in vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; // Declare after all samplers to prevent sampler location mix up with originalTexture <$declareFadeFragmentInstanced()$> diff --git a/libraries/render-utils/src/simple_textured_unlit.slf b/libraries/render-utils/src/simple_textured_unlit.slf index c5cca9e0f8..78ef85ee21 100644 --- a/libraries/render-utils/src/simple_textured_unlit.slf +++ b/libraries/render-utils/src/simple_textured_unlit.slf @@ -5,7 +5,7 @@ // simple_textured_unlit.frag // fragment shader // -// Created by Clément Brisset on 5/29/15. +// Created by Clement Brisset on 5/29/15. // Copyright 2014 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. @@ -15,13 +15,15 @@ <@include gpu/Color.slh@> <@include DeferredBufferWrite.slh@> +<@include render-utils/ShaderConstants.h@> + // the albedo texture -uniform sampler2D originalTexture; +layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal -in vec3 _normalWS; -in vec4 _color; -in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; void main(void) { vec4 texel = texture(originalTexture, _texCoord0.st); diff --git a/libraries/render-utils/src/simple_textured_unlit_fade.slf b/libraries/render-utils/src/simple_textured_unlit_fade.slf index a8d0f3bffe..c5882c2173 100644 --- a/libraries/render-utils/src/simple_textured_unlit_fade.slf +++ b/libraries/render-utils/src/simple_textured_unlit_fade.slf @@ -17,14 +17,16 @@ <@include Fade.slh@> +<@include render-utils/ShaderConstants.h@> + // the albedo texture -uniform sampler2D originalTexture; +layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal -in vec3 _normalWS; -in vec4 _color; -in vec2 _texCoord0; -in vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; // Declare after all samplers to prevent sampler location mix up with originalTexture <$declareFadeFragmentInstanced()$> diff --git a/libraries/render-utils/src/simple_transparent.slf b/libraries/render-utils/src/simple_transparent.slf index ee79d2c0c4..b52c2a613e 100644 --- a/libraries/render-utils/src/simple_transparent.slf +++ b/libraries/render-utils/src/simple_transparent.slf @@ -14,13 +14,15 @@ <@include DeferredBufferWrite.slh@> +<@include render-utils/ShaderConstants.h@> + // the interpolated normal -in vec3 _normalWS; -in vec3 _normalMS; -in vec4 _color; -in vec2 _texCoord0; -in vec4 _positionMS; -in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; // For retro-compatibility #define _normal _normalWS @@ -28,7 +30,7 @@ in vec4 _positionES; #define _position _positionMS #define _eyePosition _positionES -//PROCEDURAL_COMMON_BLOCK +<@include procedural/ProceduralCommon.slh@> #line 1001 //PROCEDURAL_BLOCK diff --git a/libraries/render-utils/src/simple_transparent_textured.slf b/libraries/render-utils/src/simple_transparent_textured.slf index 96895f74f3..b7396c3d37 100644 --- a/libraries/render-utils/src/simple_transparent_textured.slf +++ b/libraries/render-utils/src/simple_transparent_textured.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// simple_transparent_textured.slf +// simple_transparent_textured.frag // fragment shader // // Created by Sam Gateau on 4/3/17. @@ -14,13 +14,15 @@ <@include DeferredBufferWrite.slh@> +<@include render-utils/ShaderConstants.h@> + // the albedo texture -uniform sampler2D originalTexture; +layout(location=0) uniform sampler2D originalTexture; // the interpolated normal -in vec3 _normalWS; -in vec4 _color; -in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; void main(void) { vec4 texel = texture(originalTexture, _texCoord0); diff --git a/libraries/render-utils/src/simple_transparent_textured_fade.slf b/libraries/render-utils/src/simple_transparent_textured_fade.slf index 947640687c..92c6fde0bd 100644 --- a/libraries/render-utils/src/simple_transparent_textured_fade.slf +++ b/libraries/render-utils/src/simple_transparent_textured_fade.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// simple_transparent_textured_fade.slf +// simple_transparent_textured_fade.frag // fragment shader // // Created by Olivier Prat on 06/05/17. @@ -23,14 +23,16 @@ <@include Fade.slh@> -// the albedo texture -uniform sampler2D originalTexture; +<@include render-utils/ShaderConstants.h@> -in vec4 _positionES; -in vec3 _normalWS; -in vec4 _color; -in vec2 _texCoord0; -in vec4 _positionWS; +// the albedo texture +layout(binding=0) uniform sampler2D originalTexture; + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; // Declare after all samplers to prevent sampler location mix up with originalTexture <$declareFadeFragmentInstanced()$> diff --git a/libraries/render-utils/src/simple_transparent_textured_unlit.slf b/libraries/render-utils/src/simple_transparent_textured_unlit.slf index 7582af59c6..a3e7c65cd1 100644 --- a/libraries/render-utils/src/simple_transparent_textured_unlit.slf +++ b/libraries/render-utils/src/simple_transparent_textured_unlit.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// simple_transparent_textured_unlit.slf +// simple_transparent_textured_unlit.frag // fragment shader // // Created by Sam Gateau on 4/3/17. @@ -14,13 +14,15 @@ <@include gpu/Color.slh@> +<@include render-utils/ShaderConstants.h@> + // the albedo texture -uniform sampler2D originalTexture; +layout(binding=0) uniform sampler2D originalTexture; -in vec4 _color; -in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location = 0) out vec4 _fragColor0; +layout(location=0) out vec4 _fragColor0; void main(void) { vec4 texel = texture(originalTexture, _texCoord0.st); diff --git a/libraries/render-utils/src/simple_transparent_textured_unlit_fade.slf b/libraries/render-utils/src/simple_transparent_textured_unlit_fade.slf index b4f95fc317..508ea9a68b 100644 --- a/libraries/render-utils/src/simple_transparent_textured_unlit_fade.slf +++ b/libraries/render-utils/src/simple_transparent_textured_unlit_fade.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// simple_transparent_textured_unlit_fade.slf +// simple_transparent_textured_unlit_fade.frag // fragment shader // // Created by Olivier Prat on 06/05/17. @@ -16,14 +16,16 @@ <@include Fade.slh@> +<@include render-utils/ShaderConstants.h@> + // the albedo texture -uniform sampler2D originalTexture; +layout(binding=0) uniform sampler2D originalTexture; -in vec4 _color; -in vec2 _texCoord0; -in vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; -layout(location = 0) out vec4 _fragColor0; +layout(location=0) out vec4 _fragColor0; // Declare after all samplers to prevent sampler location mix up with originalTexture <$declareFadeFragmentInstanced()$> diff --git a/libraries/render-utils/src/simple_transparent_web_browser.slf b/libraries/render-utils/src/simple_transparent_web_browser.slf index bb2a0846ed..3f05a8a480 100644 --- a/libraries/render-utils/src/simple_transparent_web_browser.slf +++ b/libraries/render-utils/src/simple_transparent_web_browser.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// simple_transparent_web_browser.slf +// simple_transparent_web_browser.frag // fragment shader // // Created by Anthony Thibault on 7/25/16. @@ -15,13 +15,15 @@ <@include gpu/Color.slh@> <@include DeferredBufferWrite.slh@> +<@include render-utils/ShaderConstants.h@> + // the albedo texture -uniform sampler2D originalTexture; +layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal -in vec3 _normalWS; -in vec4 _color; -in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; void main(void) { vec4 texel = texture(originalTexture, _texCoord0.st); diff --git a/libraries/render-utils/src/skin_model.slv b/libraries/render-utils/src/skin_model.slv index 1d5013e623..fb2f8a8e34 100644 --- a/libraries/render-utils/src/skin_model.slv +++ b/libraries/render-utils/src/skin_model.slv @@ -20,15 +20,17 @@ <@include Skinning.slh@> <$declareUseDualQuaternionSkinning()$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out vec4 _positionES; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec3 _normalWS; -out vec3 _color; -out float _alpha; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); diff --git a/libraries/render-utils/src/skin_model_dq.slv b/libraries/render-utils/src/skin_model_dq.slv index 21191e966d..db062087be 100644 --- a/libraries/render-utils/src/skin_model_dq.slv +++ b/libraries/render-utils/src/skin_model_dq.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// skin_model.vert +// skin_model_dq.vert // vertex shader // // Created by Andrzej Kapolka on 10/14/13. @@ -20,15 +20,17 @@ <@include Skinning.slh@> <$declareUseDualQuaternionSkinning(1)$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out vec4 _positionES; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec3 _normalWS; -out vec3 _color; -out float _alpha; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); diff --git a/libraries/render-utils/src/skin_model_fade.slv b/libraries/render-utils/src/skin_model_fade.slv index 6c3df7586d..30b3122334 100644 --- a/libraries/render-utils/src/skin_model_fade.slv +++ b/libraries/render-utils/src/skin_model_fade.slv @@ -20,16 +20,18 @@ <@include Skinning.slh@> <$declareUseDualQuaternionSkinning()$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out vec4 _positionES; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec3 _normalWS; -out vec3 _color; -out float _alpha; -out vec4 _positionWS; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); diff --git a/libraries/render-utils/src/skin_model_fade_dq.slv b/libraries/render-utils/src/skin_model_fade_dq.slv index 9d9ddaeaf8..fb23e283bc 100644 --- a/libraries/render-utils/src/skin_model_fade_dq.slv +++ b/libraries/render-utils/src/skin_model_fade_dq.slv @@ -20,16 +20,18 @@ <@include Skinning.slh@> <$declareUseDualQuaternionSkinning(1)$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out vec4 _positionES; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec3 _normalWS; -out vec3 _color; -out float _alpha; -out vec4 _positionWS; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); diff --git a/libraries/render-utils/src/skin_model_normal_map.slv b/libraries/render-utils/src/skin_model_normal_map.slv index fd3efd087e..288e338b10 100644 --- a/libraries/render-utils/src/skin_model_normal_map.slv +++ b/libraries/render-utils/src/skin_model_normal_map.slv @@ -20,16 +20,18 @@ <@include Skinning.slh@> <$declareUseDualQuaternionSkinning()$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out vec4 _positionES; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec3 _normalWS; -out vec3 _tangentWS; -out vec3 _color; -out float _alpha; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); diff --git a/libraries/render-utils/src/skin_model_normal_map_dq.slv b/libraries/render-utils/src/skin_model_normal_map_dq.slv index 4c56e0d64d..90e85f8a92 100644 --- a/libraries/render-utils/src/skin_model_normal_map_dq.slv +++ b/libraries/render-utils/src/skin_model_normal_map_dq.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// skin_model_normal_map.vert +// skin_model_normal_map_dq.vert // vertex shader // // Created by Andrzej Kapolka on 10/29/13. @@ -15,21 +15,22 @@ <@include gpu/Inputs.slh@> <@include gpu/Color.slh@> <@include gpu/Transform.slh@> +<@include render-utils/ShaderConstants.h@> <$declareStandardTransform()$> <@include Skinning.slh@> <$declareUseDualQuaternionSkinning(1)$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out vec4 _positionES; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec3 _normalWS; -out vec3 _tangentWS; -out vec3 _color; -out float _alpha; +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); diff --git a/libraries/render-utils/src/skin_model_normal_map_fade.slv b/libraries/render-utils/src/skin_model_normal_map_fade.slv index 47cc790f70..393a756e7e 100644 --- a/libraries/render-utils/src/skin_model_normal_map_fade.slv +++ b/libraries/render-utils/src/skin_model_normal_map_fade.slv @@ -20,17 +20,19 @@ <@include Skinning.slh@> <$declareUseDualQuaternionSkinning()$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out vec4 _positionES; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec3 _normalWS; -out vec3 _tangentWS; -out vec3 _color; -out float _alpha; -out vec4 _positionWS; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); diff --git a/libraries/render-utils/src/skin_model_normal_map_fade_dq.slv b/libraries/render-utils/src/skin_model_normal_map_fade_dq.slv index 092d7b214f..862c14297f 100644 --- a/libraries/render-utils/src/skin_model_normal_map_fade_dq.slv +++ b/libraries/render-utils/src/skin_model_normal_map_fade_dq.slv @@ -20,17 +20,19 @@ <@include Skinning.slh@> <$declareUseDualQuaternionSkinning(1)$> -<@include MaterialTextures.slh@> +<@include graphics/MaterialTextures.slh@> <$declareMaterialTexMapArrayBuffer()$> -out vec4 _positionES; -out vec2 _texCoord0; -out vec2 _texCoord1; -out vec3 _normalWS; -out vec3 _tangentWS; -out vec3 _color; -out float _alpha; -out vec4 _positionWS; +<@include render-utils/ShaderConstants.h@> + +layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; +layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; +layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); diff --git a/libraries/render-utils/src/skin_model_shadow_dq.slv b/libraries/render-utils/src/skin_model_shadow_dq.slv index 74cd4076bc..a60eed62d3 100644 --- a/libraries/render-utils/src/skin_model_shadow_dq.slv +++ b/libraries/render-utils/src/skin_model_shadow_dq.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// skin_model_shadow.vert +// skin_model_shadow_dq.vert // vertex shader // // Created by Andrzej Kapolka on 3/24/14. diff --git a/libraries/render-utils/src/skin_model_shadow_fade.slv b/libraries/render-utils/src/skin_model_shadow_fade.slv index e3ddd25e81..4881cb9f62 100644 --- a/libraries/render-utils/src/skin_model_shadow_fade.slv +++ b/libraries/render-utils/src/skin_model_shadow_fade.slv @@ -14,12 +14,14 @@ <@include gpu/Inputs.slh@> <@include gpu/Transform.slh@> +<@include render-utils/ShaderConstants.h@> + <$declareStandardTransform()$> <@include Skinning.slh@> <$declareUseDualQuaternionSkinning()$> -out vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); diff --git a/libraries/render-utils/src/skin_model_shadow_fade_dq.slv b/libraries/render-utils/src/skin_model_shadow_fade_dq.slv index dcb15c6e84..c45107b47c 100644 --- a/libraries/render-utils/src/skin_model_shadow_fade_dq.slv +++ b/libraries/render-utils/src/skin_model_shadow_fade_dq.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// skin_model_shadow_fade.vert +// skin_model_shadow_fade_dq.vert // vertex shader // // Created by Olivier Prat on 06/045/17. @@ -14,12 +14,14 @@ <@include gpu/Inputs.slh@> <@include gpu/Transform.slh@> +<@include render-utils/ShaderConstants.h@> +<@include Skinning.slh@> + <$declareStandardTransform()$> -<@include Skinning.slh@> <$declareUseDualQuaternionSkinning(1)$> -out vec4 _positionWS; +layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); diff --git a/libraries/render-utils/src/ssao.slh b/libraries/render-utils/src/ssao.slh index c9b27bc2c8..5341a1682a 100644 --- a/libraries/render-utils/src/ssao.slh +++ b/libraries/render-utils/src/ssao.slh @@ -11,6 +11,8 @@ <@if not SSAO_SLH@> <@def SSAO_SLH@> +<@include render-utils/ShaderConstants.h@> + <@func declarePackOcclusionDepth()@> const float FAR_PLANE_Z = -300.0; @@ -42,7 +44,7 @@ struct AmbientOcclusionParams { float _gaussianCoefs[8]; }; -uniform ambientOcclusionParamsBuffer { +layout(binding=RENDER_UTILS_BUFFER_SSAO_PARAMS) uniform ambientOcclusionParamsBuffer { AmbientOcclusionParams params; }; @@ -230,7 +232,7 @@ vec3 getTapLocationClamped(int sampleNumber, float spinAngle, float outerRadius, // the depth pyramid texture -uniform sampler2D pyramidMap; +layout(binding=RENDER_UTILS_TEXTURE_SSAO_PYRAMID) uniform sampler2D pyramidMap; float getZEye(ivec2 pixel, int level) { return -texelFetch(pyramidMap, pixel, level).x; @@ -311,7 +313,7 @@ float evalAO(in vec3 C, in vec3 n_C, in vec3 Q) { <$declareAmbientOcclusion()$> // the source occlusion texture -uniform sampler2D occlusionMap; +layout(binding=RENDER_UTILS_TEXTURE_SSAO_OCCLUSION) uniform sampler2D occlusionMap; vec2 fetchOcclusionDepthRaw(ivec2 coords, out vec3 raw) { raw = texelFetch(occlusionMap, coords, 0).xyz; diff --git a/libraries/render-utils/src/ssao_debugOcclusion.slf b/libraries/render-utils/src/ssao_debugOcclusion.slf index 6af457db67..007fd0cd7b 100644 --- a/libraries/render-utils/src/ssao_debugOcclusion.slf +++ b/libraries/render-utils/src/ssao_debugOcclusion.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// ssao_debugOcclusion.frag +// // Created by Sam Gateau on 1/1/16. // Copyright 2016 High Fidelity, Inc. // @@ -24,7 +26,7 @@ struct DebugParams{ vec4 pixelInfo; }; -uniform debugAmbientOcclusionBuffer { +layout(binding=RENDER_UTILS_BUFFER_SSAO_DEBUG_PARAMS) uniform debugAmbientOcclusionBuffer { DebugParams debugParams; }; @@ -32,7 +34,7 @@ vec2 getDebugCursorTexcoord(){ return debugParams.pixelInfo.xy; } -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { vec2 imageSize = getSideImageSize(getResolutionLevel()); diff --git a/libraries/render-utils/src/ssao_makeHorizontalBlur.slf b/libraries/render-utils/src/ssao_makeHorizontalBlur.slf index 7c10a2a208..94dbb2b00c 100644 --- a/libraries/render-utils/src/ssao_makeHorizontalBlur.slf +++ b/libraries/render-utils/src/ssao_makeHorizontalBlur.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// ssao_makeHorizontalBlur.frag +// // Created by Sam Gateau on 1/1/16. // Copyright 2016 High Fidelity, Inc. // @@ -15,7 +17,7 @@ const ivec2 horizontal = ivec2(1,0); <$declareBlurPass(horizontal)$> -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { outFragColor = vec4(getBlurredOcclusion(gl_FragCoord.xy), 1.0); diff --git a/libraries/render-utils/src/ssao_makeOcclusion.slf b/libraries/render-utils/src/ssao_makeOcclusion.slf index 4c808342c5..1b638d4270 100644 --- a/libraries/render-utils/src/ssao_makeOcclusion.slf +++ b/libraries/render-utils/src/ssao_makeOcclusion.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// ssao_makeOcclusion.frag +// // Created by Sam Gateau on 1/1/16. // Copyright 2016 High Fidelity, Inc. // @@ -17,7 +19,7 @@ <$declarePackOcclusionDepth()$> -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { vec2 imageSize = getSideImageSize(getResolutionLevel()); diff --git a/libraries/render-utils/src/ssao_makePyramid.slf b/libraries/render-utils/src/ssao_makePyramid.slf index 70d46fb432..c87fe1e682 100644 --- a/libraries/render-utils/src/ssao_makePyramid.slf +++ b/libraries/render-utils/src/ssao_makePyramid.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// ssao_makePyramid.frag +// // Created by Sam Gateau on 1/1/16. // Copyright 2016 High Fidelity, Inc. // @@ -12,9 +14,9 @@ <@include ssao.slh@> <$declareAmbientOcclusion()$> -uniform sampler2D depthMap; +layout(binding=0) uniform sampler2D depthMap; -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { float Zdb = texelFetch(depthMap, ivec2(gl_FragCoord.xy), 0).x; diff --git a/libraries/render-utils/src/ssao_makeVerticalBlur.slf b/libraries/render-utils/src/ssao_makeVerticalBlur.slf index 3325bfb79c..0b9b5c7eaf 100644 --- a/libraries/render-utils/src/ssao_makeVerticalBlur.slf +++ b/libraries/render-utils/src/ssao_makeVerticalBlur.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// ssao_makeVerticalBlur.frag +// // Created by Sam Gateau on 1/1/16. // Copyright 2016 High Fidelity, Inc. // @@ -13,7 +15,7 @@ const ivec2 vertical = ivec2(0,1); <$declareBlurPass(vertical)$> -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { float occlusion = getBlurredOcclusion(gl_FragCoord.xy).x; diff --git a/libraries/render-utils/src/standardDrawTexture.slf b/libraries/render-utils/src/standardDrawTexture.slf index 95ac82557c..1a8af0f71c 100644 --- a/libraries/render-utils/src/standardDrawTexture.slf +++ b/libraries/render-utils/src/standardDrawTexture.slf @@ -11,15 +11,17 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include gpu/ShaderConstants.h@> + // the texture -uniform sampler2D colorMap; +layout(binding=0) uniform sampler2D colorMap; -in vec3 varPosition; -in vec3 varNormal; -in vec2 varTexCoord0; -in vec4 varColor; +layout(location=GPU_ATTR_POSITION) in vec3 varPosition; +layout(location=GPU_ATTR_NORMAL) in vec3 varNormal; +layout(location=GPU_ATTR_TEXCOORD0) in vec2 varTexCoord0; +layout(location=GPU_ATTR_COLOR) in vec4 varColor; -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { vec4 color = texture(colorMap, varTexCoord0); diff --git a/libraries/render-utils/src/standardTransformPNTC.slv b/libraries/render-utils/src/standardTransformPNTC.slv index 8ec685cea0..5f933aa037 100644 --- a/libraries/render-utils/src/standardTransformPNTC.slv +++ b/libraries/render-utils/src/standardTransformPNTC.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// standardTransformPNTC.slv +// standardTransformPNTC.vert // vertex shader // // Created by Sam Gateau on 6/10/2015. @@ -17,10 +17,10 @@ <@include gpu/Transform.slh@> <$declareStandardTransform()$> -out vec3 varPosition; -out vec3 varNormal; -out vec2 varTexCoord0; -out vec4 varColor; +layout(location=GPU_ATTR_POSITION) out vec3 varPosition; +layout(location=GPU_ATTR_NORMAL) out vec3 varNormal; +layout(location=GPU_ATTR_TEXCOORD0) out vec2 varTexCoord0; +layout(location=GPU_ATTR_COLOR) out vec4 varColor; void main(void) { varTexCoord0 = inTexCoord0.st; diff --git a/libraries/render-utils/src/stencil_drawMask.slf b/libraries/render-utils/src/stencil_drawMask.slf index 3eedeecb82..5ba09a8264 100644 --- a/libraries/render-utils/src/stencil_drawMask.slf +++ b/libraries/render-utils/src/stencil_drawMask.slf @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// stencil_drawMask.slf +// stencil_drawMask.frag // fragment shader // // Created by Sam Gateau on 5/31/17. @@ -12,7 +12,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -in vec2 varTexCoord0; +layout(location=0) in vec2 varTexCoord0; float aspectRatio = 0.95; diff --git a/libraries/render-utils/src/subsurfaceScattering_drawScattering.slf b/libraries/render-utils/src/subsurfaceScattering_drawScattering.slf index e66d881e11..00b60d6fd4 100644 --- a/libraries/render-utils/src/subsurfaceScattering_drawScattering.slf +++ b/libraries/render-utils/src/subsurfaceScattering_drawScattering.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// subsurfaceScattering_drawScattering.frag +// // Created by Sam Gateau on 6/8/16. // Copyright 2016 High Fidelity, Inc. // @@ -10,6 +12,7 @@ // +<@include gpu/ShaderConstants.h@> <@include DeferredBufferRead.slh@> <@include graphics/Light.slh@> @@ -20,10 +23,10 @@ <@include SubsurfaceScattering.slh@> <$declareSubsurfaceScatteringBRDF()$> -in vec2 varTexCoord0; -out vec4 _fragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 _fragColor; -uniform vec2 uniformCursorTexcoord = vec2(0.5); +layout(location=GPU_UNIFORM_EXTRA0) uniform vec2 uniformCursorTexcoord = vec2(0.5); //uniform vec3 uniformLightVector = vec3(1.0); diff --git a/libraries/render-utils/src/subsurfaceScattering_makeLUT.slf b/libraries/render-utils/src/subsurfaceScattering_makeLUT.slf index 1cbf599558..6e10861875 100644 --- a/libraries/render-utils/src/subsurfaceScattering_makeLUT.slf +++ b/libraries/render-utils/src/subsurfaceScattering_makeLUT.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// subsurfaceScattering_makeLUT.frag +// // Created by Sam Gateau on 6/8/16. // Copyright 2016 High Fidelity, Inc. // @@ -13,8 +15,8 @@ <$declareSubsurfaceScatteringProfileSource()$> <$declareSubsurfaceScatteringIntegrate(2000)$> -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; void main(void) { diff --git a/libraries/render-utils/src/subsurfaceScattering_makeProfile.slf b/libraries/render-utils/src/subsurfaceScattering_makeProfile.slf index ea4a864448..31122dcb1f 100644 --- a/libraries/render-utils/src/subsurfaceScattering_makeProfile.slf +++ b/libraries/render-utils/src/subsurfaceScattering_makeProfile.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// subsurfaceScattering_makeProfile.frag +// // Created by Sam Gateau on 6/27/16. // Copyright 2016 High Fidelity, Inc. // @@ -12,8 +14,8 @@ <@include SubsurfaceScattering.slh@> <$declareSubsurfaceScatteringGenerateProfileMap()$> -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; void main(void) { outFragColor = vec4(generateProfile(varTexCoord0.xy), 1.0); diff --git a/libraries/render-utils/src/subsurfaceScattering_makeSpecularBeckmann.slf b/libraries/render-utils/src/subsurfaceScattering_makeSpecularBeckmann.slf index f10d287c35..59e73100dd 100644 --- a/libraries/render-utils/src/subsurfaceScattering_makeSpecularBeckmann.slf +++ b/libraries/render-utils/src/subsurfaceScattering_makeSpecularBeckmann.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// subsurfaceScattering_makeSpecularBeckmann.frag +// // Created by Sam Gateau on 6/30/16. // Copyright 2016 High Fidelity, Inc. // @@ -11,8 +13,8 @@ -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; float specularBeckmann(float ndoth, float roughness) { float alpha = acos(ndoth); diff --git a/libraries/render-utils/src/surfaceGeometry_copyDepth.slf b/libraries/render-utils/src/surfaceGeometry_copyDepth.slf index 9db8cdbb01..7eb097224e 100644 --- a/libraries/render-utils/src/surfaceGeometry_copyDepth.slf +++ b/libraries/render-utils/src/surfaceGeometry_copyDepth.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// surfaceGeometry_copyDepth.frag +// // Created by Olivier Prat on 08/08/17. // Copyright 2017 High Fidelity, Inc. // @@ -9,9 +11,9 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -uniform sampler2D depthMap; +layout(binding=0) uniform sampler2D depthMap; -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { float Zdb = texelFetch(depthMap, ivec2(gl_FragCoord.xy), 0).x; diff --git a/libraries/render-utils/src/surfaceGeometry_downsampleDepthNormal.slf b/libraries/render-utils/src/surfaceGeometry_downsampleDepthNormal.slf index 82895d4684..34e78ea4ff 100644 --- a/libraries/render-utils/src/surfaceGeometry_downsampleDepthNormal.slf +++ b/libraries/render-utils/src/surfaceGeometry_downsampleDepthNormal.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// surfaceGeometry_downsampleDepthNormal.frag +// // Created by Sam Gateau on 6/3/16. // Copyright 2016 High Fidelity, Inc. // @@ -11,14 +13,15 @@ <@include gpu/PackedNormal.slh@> +<@include render-utils/ShaderConstants.h@> -uniform sampler2D linearDepthMap; -uniform sampler2D normalMap; +layout(binding=RENDER_UTILS_TEXTURE_SG_DEPTH) uniform sampler2D linearDepthMap; +layout(binding=RENDER_UTILS_TEXTURE_SG_NORMAL) uniform sampler2D normalMap; -in vec2 varTexCoord0; +layout(location=0) in vec2 varTexCoord0; -layout(location = 0) out vec4 outLinearDepth; -layout(location = 1) out vec4 outNormal; +layout(location=0) out vec4 outLinearDepth; +layout(location=1) out vec4 outNormal; void main(void) { // Gather 2 by 2 quads from texture and downsample diff --git a/libraries/render-utils/src/surfaceGeometry_makeCurvature.slf b/libraries/render-utils/src/surfaceGeometry_makeCurvature.slf index ecbc60b648..b49bd618da 100644 --- a/libraries/render-utils/src/surfaceGeometry_makeCurvature.slf +++ b/libraries/render-utils/src/surfaceGeometry_makeCurvature.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// surfaceGeometry_makeCurvature.frag +// // Created by Sam Gateau on 6/3/16. // Copyright 2016 High Fidelity, Inc. // @@ -10,6 +12,8 @@ // <@include DeferredTransform.slh@> +<@include render-utils/ShaderConstants.h@> + <$declareDeferredFrameTransform()$> <@include gpu/PackedNormal.slh@> @@ -21,7 +25,7 @@ struct SurfaceGeometryParams { vec4 curvatureInfo; }; -uniform surfaceGeometryParamsBuffer { +layout(binding= RENDER_UTILS_BUFFER_SG_PARAMS) uniform surfaceGeometryParamsBuffer { SurfaceGeometryParams params; }; @@ -42,7 +46,8 @@ bool isFullResolution() { } -uniform sampler2D linearDepthMap; +layout(binding=RENDER_UTILS_TEXTURE_SG_DEPTH) uniform sampler2D linearDepthMap; + float getZEye(ivec2 pixel) { return -texelFetch(linearDepthMap, pixel, 0).x; } @@ -54,7 +59,7 @@ vec2 sideToFrameTexcoord(vec2 side, vec2 texcoordPos) { return vec2((texcoordPos.x + side.x) * side.y, texcoordPos.y); } -uniform sampler2D normalMap; +layout(binding=RENDER_UTILS_TEXTURE_SG_NORMAL) uniform sampler2D normalMap; vec3 getRawNormal(vec2 texcoord) { return texture(normalMap, texcoord).xyz; @@ -79,8 +84,8 @@ float getEyeDepthDiff(vec2 texcoord, vec2 delta) { -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; void main(void) { // Pixel being shaded diff --git a/libraries/render-utils/src/surfaceGeometry_makeLinearDepth.slf b/libraries/render-utils/src/surfaceGeometry_makeLinearDepth.slf index d512f613bc..116f3b7686 100644 --- a/libraries/render-utils/src/surfaceGeometry_makeLinearDepth.slf +++ b/libraries/render-utils/src/surfaceGeometry_makeLinearDepth.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// surfaceGeometry_makeLinearDepth.frag +// // Created by Sam Gateau on 6/3/16. // Copyright 2016 High Fidelity, Inc. // @@ -9,13 +11,14 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include render-utils/ShaderConstants.h@> + <@include DeferredTransform.slh@> <$declareDeferredFrameTransform()$> +layout(binding=RENDER_UTILS_TEXTURE_SG_DEPTH) uniform sampler2D depthMap; -uniform sampler2D depthMap; - -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { float Zdb = texelFetch(depthMap, ivec2(gl_FragCoord.xy), 0).x; diff --git a/libraries/render-utils/src/taa.slf b/libraries/render-utils/src/taa.slf index 8d172871d4..a2b58d3050 100644 --- a/libraries/render-utils/src/taa.slf +++ b/libraries/render-utils/src/taa.slf @@ -15,8 +15,8 @@ <@include taa.slh@> -in vec2 varTexCoord0; -layout(location = 0) out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; void main() { vec2 fragUV = varTexCoord0; diff --git a/libraries/render-utils/src/taa.slh b/libraries/render-utils/src/taa.slh index 3ca5b10d57..26ffe55263 100644 --- a/libraries/render-utils/src/taa.slh +++ b/libraries/render-utils/src/taa.slh @@ -13,13 +13,14 @@ <@include DeferredTransform.slh@> <$declareDeferredFrameTransform()$> +<@include render-utils/ShaderConstants.h@> <@include gpu/Color.slh@> -uniform sampler2D depthMap; -uniform sampler2D sourceMap; -uniform sampler2D historyMap; -uniform sampler2D velocityMap; -uniform sampler2D nextMap; +layout(binding=RENDER_UTILS_TEXTURE_TAA_HISTORY) uniform sampler2D historyMap; +layout(binding=RENDER_UTILS_TEXTURE_TAA_SOURCE) uniform sampler2D sourceMap; +layout(binding=RENDER_UTILS_TEXTURE_TAA_VELOCITY) uniform sampler2D velocityMap; +layout(binding=RENDER_UTILS_TEXTURE_TAA_DEPTH) uniform sampler2D depthMap; +layout(binding=RENDER_UTILS_TEXTURE_TAA_NEXT) uniform sampler2D nextMap; struct TAAParams { @@ -32,7 +33,7 @@ struct TAAParams vec4 regionInfo; }; -layout(std140) uniform taaParamsBuffer { +layout(std140, binding=RENDER_UTILS_BUFFER_TAA_PARAMS) uniform taaParamsBuffer { TAAParams params; }; @@ -518,4 +519,5 @@ vec3 taa_evalFXAA(vec2 fragUV) { } else { return rgbB; } -} \ No newline at end of file +} + diff --git a/libraries/render-utils/src/taa_blend.slf b/libraries/render-utils/src/taa_blend.slf index aca934ca71..d2e23b590f 100644 --- a/libraries/render-utils/src/taa_blend.slf +++ b/libraries/render-utils/src/taa_blend.slf @@ -14,8 +14,8 @@ <@include taa.slh@> -in vec2 varTexCoord0; -layout(location = 0) out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; void main(void) { vec3 nextColor = texture(nextMap, varTexCoord0).xyz; diff --git a/libraries/render-utils/src/text/Font.cpp b/libraries/render-utils/src/text/Font.cpp index 66f052e25f..aca6ddb79f 100644 --- a/libraries/render-utils/src/text/Font.cpp +++ b/libraries/render-utils/src/text/Font.cpp @@ -8,6 +8,7 @@ #include #include +#include "../render-utils/ShaderConstants.h" #include "../RenderUtilsLogging.h" #include "FontFamilies.h" #include "../StencilMaskPass.h" @@ -222,15 +223,6 @@ void Font::setupGPU() { { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::sdf_text3D); gpu::ShaderPointer programTransparent = gpu::Shader::createProgram(shader::render_utils::program::sdf_text3D_transparent); - - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); - gpu::Shader::makeProgram(*programTransparent, slotBindings); - - _fontLoc = program->getTextures().findLocation("Font"); - _outlineLoc = program->getUniforms().findLocation("Outline"); - _colorLoc = program->getUniforms().findLocation("Color"); - auto state = std::make_shared(); state->setCullMode(gpu::State::CULL_BACK); state->setDepthTest(true, true, gpu::LESS_EQUAL); @@ -362,19 +354,11 @@ void Font::drawString(gpu::Batch& batch, float x, float y, const QString& str, c setupGPU(); batch.setPipeline(((*color).a < 1.0f || layered) ? _transparentPipeline : _pipeline); - if (_fontLoc >= 0) { - batch.setResourceTexture(_fontLoc, _texture); - } - if (_outlineLoc >= 0) { - batch._glUniform1i(_outlineLoc, (effectType == OUTLINE_EFFECT)); - } - + batch.setResourceTexture(render_utils::slot::texture::TextFont, _texture); + batch._glUniform1i(render_utils::slot::uniform::TextOutline, (effectType == OUTLINE_EFFECT)); // need the gamma corrected color here glm::vec4 lrgba = ColorUtils::sRGBToLinearVec4(*color); - if (_colorLoc >= 0) { - batch._glUniform4fv(_colorLoc, 1, (const float*)&lrgba); - } - + batch._glUniform4fv(render_utils::slot::uniform::TextColor, 1, (const float*)&lrgba); batch.setInputFormat(_format); batch.setInputBuffer(0, _verticesBuffer, 0, _format->getChannels().at(0)._stride); batch.setIndexBuffer(gpu::UINT16, _indicesBuffer, 0); diff --git a/libraries/render-utils/src/text/Font.h b/libraries/render-utils/src/text/Font.h index a41f720f15..2fa2b65fa5 100644 --- a/libraries/render-utils/src/text/Font.h +++ b/libraries/render-utils/src/text/Font.h @@ -72,10 +72,6 @@ private: unsigned int _numVertices = 0; unsigned int _numIndices = 0; - int _fontLoc = -1; - int _outlineLoc = -1; - int _colorLoc = -1; - // last string render characteristics QString _lastStringRendered; glm::vec2 _lastBounds; diff --git a/libraries/render-utils/src/toneMapping.slf b/libraries/render-utils/src/toneMapping.slf index d6504b5bff..8d89e54a1b 100644 --- a/libraries/render-utils/src/toneMapping.slf +++ b/libraries/render-utils/src/toneMapping.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on Sat Oct 24 09:34:37 2015 // +// toneMapping.frag +// // Draw texture 0 fetched at texcoord.xy // // Created by Sam Gateau on 6/22/2015 @@ -11,6 +13,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include render-utils/ShaderConstants.h@> + struct ToneMappingParams { vec4 _exp_2powExp_s0_s1; ivec4 _toneCurve_s0_s1_s2; @@ -22,7 +26,7 @@ const int ToneCurveGamma22 = 1; const int ToneCurveReinhard = 2; const int ToneCurveFilmic = 3; -uniform toneMappingParamsBuffer { +layout(binding=RENDER_UTILS_BUFFER_TM_PARAMS) uniform toneMappingParamsBuffer { ToneMappingParams params; }; float getTwoPowExposure() { @@ -32,10 +36,10 @@ int getToneCurve() { return params._toneCurve_s0_s1_s2.x; } -uniform sampler2D colorMap; +layout(binding=RENDER_UTILS_TEXTURE_TM_COLOR) uniform sampler2D colorMap; -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; void main(void) { vec4 fragColorRaw = texture(colorMap, varTexCoord0); diff --git a/libraries/render-utils/src/velocityBuffer_cameraMotion.slf b/libraries/render-utils/src/velocityBuffer_cameraMotion.slf index 548feb87dc..6932766d63 100644 --- a/libraries/render-utils/src/velocityBuffer_cameraMotion.slf +++ b/libraries/render-utils/src/velocityBuffer_cameraMotion.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// velocityBuffer_cameraMotion.frag +// // Created by Sam Gateau on 6/3/16. // Copyright 2016 High Fidelity, Inc. // @@ -12,10 +14,10 @@ <@include DeferredTransform.slh@> <$declareDeferredFrameTransform()$> -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; -uniform sampler2D depthMap; +layout(binding=RENDER_UTILS_TEXTURE_TAA_DEPTH) uniform sampler2D depthMap; void main(void) { diff --git a/libraries/render-utils/src/zone_drawAmbient.slf b/libraries/render-utils/src/zone_drawAmbient.slf index 3407fe8467..e560d91308 100644 --- a/libraries/render-utils/src/zone_drawAmbient.slf +++ b/libraries/render-utils/src/zone_drawAmbient.slf @@ -19,8 +19,8 @@ <$declareLightingAmbient(_SCRIBE_NULL, 1, _SCRIBE_NULL, _SCRIBE_NULL)$> -in vec2 varTexCoord0; -out vec4 _fragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/zone_drawKeyLight.slf b/libraries/render-utils/src/zone_drawKeyLight.slf index 5f0f0265d3..99e9357cb0 100644 --- a/libraries/render-utils/src/zone_drawKeyLight.slf +++ b/libraries/render-utils/src/zone_drawKeyLight.slf @@ -18,8 +18,8 @@ <@include LightDirectional.slh@> <$declareLightingDirectional(_SCRIBE_NULL)$> -in vec2 varTexCoord0; -out vec4 _fragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/zone_drawSkybox.slf b/libraries/render-utils/src/zone_drawSkybox.slf index fd6976365e..77de75a305 100644 --- a/libraries/render-utils/src/zone_drawSkybox.slf +++ b/libraries/render-utils/src/zone_drawSkybox.slf @@ -9,19 +9,21 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // <@include zone_draw.slh@> +<@include render-utils/ShaderConstants.h@> -uniform samplerCube skyboxMap; +// FIXME use declareSkyboxMap from LightAmbient.slh? +layout(binding=RENDER_UTILS_TEXTURE_SKYBOX) uniform samplerCube skyboxMap; struct Skybox { vec4 color; }; -uniform skyboxBuffer { +layout(binding=RENDER_UTILS_BUFFER_DEBUG_SKYBOX) uniform skyboxBuffer { Skybox skybox; }; -in vec2 varTexCoord0; -out vec4 _fragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 _fragColor; void main(void) { <$evalGlobeWidget()$> diff --git a/libraries/render/src/render/BlurTask.cpp b/libraries/render/src/render/BlurTask.cpp index 3699922074..b76793ea2d 100644 --- a/libraries/render/src/render/BlurTask.cpp +++ b/libraries/render/src/render/BlurTask.cpp @@ -204,12 +204,6 @@ BlurGaussian::BlurGaussian(bool generateOutputFramebuffer, unsigned int downsamp gpu::PipelinePointer BlurGaussian::getBlurVPipeline() { if (!_blurVPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::blurGaussianV); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("blurParamsBuffer"), BlurTask_ParamsSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("sourceMap"), BlurTask_SourceSlot)); - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); // Stencil test the curvature pass for objects pixels only, not the background @@ -224,12 +218,6 @@ gpu::PipelinePointer BlurGaussian::getBlurVPipeline() { gpu::PipelinePointer BlurGaussian::getBlurHPipeline() { if (!_blurHPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::blurGaussianH); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("blurParamsBuffer"), BlurTask_ParamsSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("sourceMap"), BlurTask_SourceSlot)); - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); // Stencil test the curvature pass for objects pixels only, not the background @@ -314,13 +302,6 @@ BlurGaussianDepthAware::BlurGaussianDepthAware(bool generateOutputFramebuffer, c gpu::PipelinePointer BlurGaussianDepthAware::getBlurVPipeline() { if (!_blurVPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::blurGaussianDepthAwareV); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("blurParamsBuffer"), BlurTask_ParamsSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("sourceMap"), BlurTask_SourceSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("depthMap"), BlurTask_DepthSlot)); - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); // Stencil test the curvature pass for objects pixels only, not the background @@ -335,13 +316,6 @@ gpu::PipelinePointer BlurGaussianDepthAware::getBlurVPipeline() { gpu::PipelinePointer BlurGaussianDepthAware::getBlurHPipeline() { if (!_blurHPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::blurGaussianDepthAwareH); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("blurParamsBuffer"), BlurTask_ParamsSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("sourceMap"), BlurTask_SourceSlot)); - slotBindings.insert(gpu::Shader::Binding(std::string("depthMap"), BlurTask_DepthSlot)); - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); // Stencil test the curvature pass for objects pixels only, not the background diff --git a/libraries/render/src/render/BlurTask.slh b/libraries/render/src/render/BlurTask.slh index 37f29496bd..c07e71688a 100644 --- a/libraries/render/src/render/BlurTask.slh +++ b/libraries/render/src/render/BlurTask.slh @@ -21,7 +21,7 @@ struct BlurParameters { vec2 taps[BLUR_MAX_NUM_TAPS]; }; -uniform blurParamsBuffer { +layout(binding=0) uniform blurParamsBuffer { BlurParameters parameters; }; @@ -76,7 +76,7 @@ float getPosLinearDepthFar() { <$declareBlurUniforms()$> -uniform sampler2D sourceMap; +layout(binding=0) uniform sampler2D sourceMap; vec4 pixelShaderGaussian(vec2 texcoord, vec2 direction, vec2 pixelStep) { texcoord = evalTexcoordTransformed(texcoord); @@ -112,8 +112,8 @@ vec4 pixelShaderGaussian(vec2 texcoord, vec2 direction, vec2 pixelStep) { <$declareBlurUniforms()$> -uniform sampler2D sourceMap; -uniform sampler2D depthMap; +layout(binding=0) uniform sampler2D sourceMap; +layout(binding=1) uniform sampler2D depthMap; vec4 pixelShaderGaussianDepthAware(vec2 texcoord, vec2 direction, vec2 pixelStep) { texcoord = evalTexcoordTransformed(texcoord); diff --git a/libraries/render/src/render/DrawSceneOctree.cpp b/libraries/render/src/render/DrawSceneOctree.cpp index 5de538759a..b8014b4e4f 100644 --- a/libraries/render/src/render/DrawSceneOctree.cpp +++ b/libraries/render/src/render/DrawSceneOctree.cpp @@ -29,12 +29,6 @@ using namespace render; const gpu::PipelinePointer DrawSceneOctree::getDrawCellBoundsPipeline() { if (!_drawCellBoundsPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawCellBounds); - - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); - - _drawCellLocationLoc = program->getUniforms().findLocation("inCellLocation"); - auto state = std::make_shared(); state->setDepthTest(true, false, gpu::LESS_EQUAL); @@ -51,10 +45,6 @@ const gpu::PipelinePointer DrawSceneOctree::getDrawCellBoundsPipeline() { const gpu::PipelinePointer DrawSceneOctree::getDrawLODReticlePipeline() { if (!_drawLODReticlePipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawLODReticle); - gpu::Shader::makeProgram(*program); - - // _drawCellLocationLoc = program->getUniforms().findLocation("inCellLocation"); - auto state = std::make_shared(); // Blend on transparent @@ -111,7 +101,7 @@ void DrawSceneOctree::run(const RenderContextPointer& renderContext, const ItemS cellLocation.w *= -1; } if (doDraw) { - batch._glUniform4iv(_drawCellLocationLoc, 1, ((const int*)(&cellLocation))); + batch._glUniform4iv(gpu::slot::uniform::Extra0, 1, ((const int*)(&cellLocation))); batch.draw(gpu::LINES, 24, 0); } } @@ -129,7 +119,7 @@ void DrawSceneOctree::run(const RenderContextPointer& renderContext, const ItemS cellLocation.w *= -1; } if (doDraw) { - batch._glUniform4iv(_drawCellLocationLoc, 1, ((const int*)(&cellLocation))); + batch._glUniform4iv(gpu::slot::uniform::Extra0, 1, ((const int*)(&cellLocation))); batch.draw(gpu::LINES, 24, 0); } } @@ -152,13 +142,9 @@ const gpu::PipelinePointer DrawItemSelection::getDrawItemBoundPipeline() { if (!_drawItemBoundPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawItemBounds); - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); - - _drawItemBoundPosLoc = program->getUniforms().findLocation("inBoundPos"); - _drawItemBoundDimLoc = program->getUniforms().findLocation("inBoundDim"); - - _drawCellLocationLoc = program->getUniforms().findLocation("inCellLocation"); + //_drawItemBoundPosLoc = program->getUniforms().findLocation("inBoundPos"); + //_drawItemBoundDimLoc = program->getUniforms().findLocation("inBoundDim"); + //_drawCellLocationLoc = program->getUniforms().findLocation("inCellLocation"); auto state = std::make_shared(); @@ -208,9 +194,9 @@ void DrawItemSelection::run(const RenderContextPointer& renderContext, const Ite auto itemCell = scene->getSpatialTree().getCellLocation(item.getCell()); glm::ivec4 cellLocation(0, 0, 0, itemCell.depth); - batch._glUniform4iv(_drawCellLocationLoc, 1, ((const int*)(&cellLocation))); - batch._glUniform3fv(_drawItemBoundPosLoc, 1, (const float*)(&itemBound.getCorner())); - batch._glUniform3fv(_drawItemBoundDimLoc, 1, (const float*)(&itemBound.getScale())); + //batch._glUniform4iv(_drawCellLocationLoc, 1, ((const int*)(&cellLocation))); + //batch._glUniform3fv(_drawItemBoundPosLoc, 1, (const float*)(&itemBound.getCorner())); + //batch._glUniform3fv(_drawItemBoundDimLoc, 1, (const float*)(&itemBound.getScale())); batch.draw(gpu::LINES, 24, 0); } @@ -223,9 +209,9 @@ void DrawItemSelection::run(const RenderContextPointer& renderContext, const Ite auto itemCell = scene->getSpatialTree().getCellLocation(item.getCell()); glm::ivec4 cellLocation(0, 0, 1, itemCell.depth); - batch._glUniform4iv(_drawCellLocationLoc, 1, ((const int*)(&cellLocation))); - batch._glUniform3fv(_drawItemBoundPosLoc, 1, (const float*)(&itemBound.getCorner())); - batch._glUniform3fv(_drawItemBoundDimLoc, 1, (const float*)(&itemBound.getScale())); + //batch._glUniform4iv(_drawCellLocationLoc, 1, ((const int*)(&cellLocation))); + //batch._glUniform3fv(_drawItemBoundPosLoc, 1, (const float*)(&itemBound.getCorner())); + //batch._glUniform3fv(_drawItemBoundDimLoc, 1, (const float*)(&itemBound.getScale())); batch.draw(gpu::LINES, 24, 0); } @@ -238,9 +224,9 @@ void DrawItemSelection::run(const RenderContextPointer& renderContext, const Ite auto itemCell = scene->getSpatialTree().getCellLocation(item.getCell()); glm::ivec4 cellLocation(0, 0, 0, itemCell.depth); - batch._glUniform4iv(_drawCellLocationLoc, 1, ((const int*)(&cellLocation))); - batch._glUniform3fv(_drawItemBoundPosLoc, 1, (const float*)(&itemBound.getCorner())); - batch._glUniform3fv(_drawItemBoundDimLoc, 1, (const float*)(&itemBound.getScale())); + //batch._glUniform4iv(_drawCellLocationLoc, 1, ((const int*)(&cellLocation))); + //batch._glUniform3fv(_drawItemBoundPosLoc, 1, (const float*)(&itemBound.getCorner())); + //batch._glUniform3fv(_drawItemBoundDimLoc, 1, (const float*)(&itemBound.getScale())); batch.draw(gpu::LINES, 24, 0); } @@ -252,9 +238,9 @@ void DrawItemSelection::run(const RenderContextPointer& renderContext, const Ite auto itemBound = item.getBound(); auto itemCell = scene->getSpatialTree().getCellLocation(item.getCell()); glm::ivec4 cellLocation(0, 0, 1, itemCell.depth); - batch._glUniform4iv(_drawCellLocationLoc, 1, ((const int*)(&cellLocation))); - batch._glUniform3fv(_drawItemBoundPosLoc, 1, (const float*)(&itemBound.getCorner())); - batch._glUniform3fv(_drawItemBoundDimLoc, 1, (const float*)(&itemBound.getScale())); + //batch._glUniform4iv(_drawCellLocationLoc, 1, ((const int*)(&cellLocation))); + //batch._glUniform3fv(_drawItemBoundPosLoc, 1, (const float*)(&itemBound.getCorner())); + //batch._glUniform3fv(_drawItemBoundDimLoc, 1, (const float*)(&itemBound.getScale())); batch.draw(gpu::LINES, 24, 0); } diff --git a/libraries/render/src/render/DrawSceneOctree.h b/libraries/render/src/render/DrawSceneOctree.h index 9c416262ca..54c14e45f2 100644 --- a/libraries/render/src/render/DrawSceneOctree.h +++ b/libraries/render/src/render/DrawSceneOctree.h @@ -51,15 +51,9 @@ namespace render { }; class DrawSceneOctree { - - int _drawCellLocationLoc; gpu::PipelinePointer _drawCellBoundsPipeline; gpu::BufferPointer _cells; - gpu::PipelinePointer _drawLODReticlePipeline; - - int _drawItemBoundPosLoc = -1; - int _drawItemBoundDimLoc = -1; gpu::PipelinePointer _drawItemBoundPipeline; bool _showVisibleCells; // initialized by Config @@ -112,10 +106,6 @@ namespace render { }; class DrawItemSelection { - - int _drawItemBoundPosLoc = -1; - int _drawItemBoundDimLoc = -1; - int _drawCellLocationLoc = -1; gpu::PipelinePointer _drawItemBoundPipeline; bool _showInsideItems; // initialized by Config diff --git a/libraries/render/src/render/DrawStatus.cpp b/libraries/render/src/render/DrawStatus.cpp index b8fef0d987..2894a85a30 100644 --- a/libraries/render/src/render/DrawStatus.cpp +++ b/libraries/render/src/render/DrawStatus.cpp @@ -33,13 +33,9 @@ void DrawStatusConfig::dirtyHelper() { const gpu::PipelinePointer DrawStatus::getDrawItemBoundsPipeline() { if (!_drawItemBoundsPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawItemBounds); - - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); - - _drawItemBoundPosLoc = program->getUniforms().findLocation("inBoundPos"); - _drawItemBoundDimLoc = program->getUniforms().findLocation("inBoundDim"); - _drawItemCellLocLoc = program->getUniforms().findLocation("inCellLocation"); + //_drawItemBoundPosLoc = program->getUniforms().findLocation("inBoundPos"); + //_drawItemBoundDimLoc = program->getUniforms().findLocation("inBoundDim"); + //_drawItemCellLocLoc = program->getUniforms().findLocation("inCellLocation"); auto state = std::make_shared(); @@ -58,16 +54,11 @@ const gpu::PipelinePointer DrawStatus::getDrawItemBoundsPipeline() { const gpu::PipelinePointer DrawStatus::getDrawItemStatusPipeline() { if (!_drawItemStatusPipeline) { - gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawItemStatus); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("iconStatusMap"), 0)); - gpu::Shader::makeProgram(*program, slotBindings); - - _drawItemStatusPosLoc = program->getUniforms().findLocation("inBoundPos"); - _drawItemStatusDimLoc = program->getUniforms().findLocation("inBoundDim"); - _drawItemStatusValue0Loc = program->getUniforms().findLocation("inStatus0"); - _drawItemStatusValue1Loc = program->getUniforms().findLocation("inStatus1"); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::blurGaussianDepthAwareV); + //_drawItemStatusPosLoc = program->getUniforms().findLocation(""); + //_drawItemStatusDimLoc = program->getUniforms().findLocation(""); + //_drawItemStatusValue0Loc = program->getUniforms().findLocation(""); + //_drawItemStatusValue1Loc = program->getUniforms().findLocation(""); auto state = std::make_shared(); @@ -182,11 +173,10 @@ void DrawStatus::run(const RenderContextPointer& renderContext, const Input& inp if (_showDisplay) { for (int i = 0; i < nbItems; i++) { - batch._glUniform3fv(_drawItemBoundPosLoc, 1, (const float*)&(_itemBounds[i])); - batch._glUniform3fv(_drawItemBoundDimLoc, 1, ((const float*)&(_itemBounds[i])) + VEC3_ADRESS_OFFSET); - - glm::ivec4 cellLocation(_itemCells[i].pos, _itemCells[i].depth); - batch._glUniform4iv(_drawItemCellLocLoc, 1, ((const int*)(&cellLocation))); + //batch._glUniform3fv(gpu::slot::uniform::Extra0, 1, (const float*)&(_itemBounds[i])); + //batch._glUniform3fv(gpu::slot::uniform::Extra1, 1, ((const float*)&(_itemBounds[i])) + VEC3_ADRESS_OFFSET); + //glm::ivec4 cellLocation(_itemCells[i].pos, _itemCells[i].depth); + //batch._glUniform4iv(_drawItemCellLocLoc, 1, ((const int*)(&cellLocation))); batch.draw(gpu::LINES, 24, 0); } } @@ -197,10 +187,10 @@ void DrawStatus::run(const RenderContextPointer& renderContext, const Input& inp if (_showNetwork) { for (int i = 0; i < nbItems; i++) { - batch._glUniform3fv(_drawItemStatusPosLoc, 1, (const float*)&(_itemBounds[i])); - batch._glUniform3fv(_drawItemStatusDimLoc, 1, ((const float*)&(_itemBounds[i])) + VEC3_ADRESS_OFFSET); - batch._glUniform4iv(_drawItemStatusValue0Loc, 1, (const int*)&(_itemStatus[i].first)); - batch._glUniform4iv(_drawItemStatusValue1Loc, 1, (const int*)&(_itemStatus[i].second)); + batch._glUniform3fv(gpu::slot::uniform::Extra0, 1, (const float*)&(_itemBounds[i])); + batch._glUniform3fv(gpu::slot::uniform::Extra1, 1, ((const float*)&(_itemBounds[i])) + VEC3_ADRESS_OFFSET); + batch._glUniform4iv(gpu::slot::uniform::Extra2, 1, (const int*)&(_itemStatus[i].first)); + batch._glUniform4iv(gpu::slot::uniform::Extra3, 1, (const int*)&(_itemStatus[i].second)); batch.draw(gpu::TRIANGLES, 24 * NUM_STATUS_VEC4_PER_ITEM, 0); } } diff --git a/libraries/render/src/render/DrawStatus.h b/libraries/render/src/render/DrawStatus.h index 9e05471cd6..4228d1bd8d 100644 --- a/libraries/render/src/render/DrawStatus.h +++ b/libraries/render/src/render/DrawStatus.h @@ -58,14 +58,6 @@ namespace render { bool _showDisplay; // initialized by Config bool _showNetwork; // initialized by Config - int _drawItemBoundPosLoc = -1; - int _drawItemBoundDimLoc = -1; - int _drawItemCellLocLoc = -1; - int _drawItemStatusPosLoc = -1; - int _drawItemStatusDimLoc = -1; - int _drawItemStatusValue0Loc = -1; - int _drawItemStatusValue1Loc = -1; - gpu::Stream::FormatPointer _drawItemFormat; gpu::PipelinePointer _drawItemBoundsPipeline; gpu::PipelinePointer _drawItemStatusPipeline; diff --git a/libraries/render/src/render/DrawTask.cpp b/libraries/render/src/render/DrawTask.cpp index 08be053ddf..69fe870992 100755 --- a/libraries/render/src/render/DrawTask.cpp +++ b/libraries/render/src/render/DrawTask.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include "Logging.h" @@ -158,12 +159,6 @@ void DrawLight::run(const RenderContextPointer& renderContext, const ItemBounds& const gpu::PipelinePointer DrawBounds::getPipeline() { if (!_boundsPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawItemBounds); - - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); - - _colorLocation = program->getUniforms().findLocation("inColor"); - auto state = std::make_shared(); state->setDepthTest(true, false, gpu::LESS_EQUAL); state->setBlendFunction(true, @@ -207,7 +202,7 @@ void DrawBounds::run(const RenderContextPointer& renderContext, batch.setPipeline(getPipeline()); glm::vec4 color(glm::vec3(0.0f), -(float) numItems); - batch._glUniform4fv(_colorLocation, 1, (const float*)(&color)); + batch._glUniform4fv(gpu::slot::uniform::Color, 1, (const float*)(&color)); batch.setResourceBuffer(0, _drawBuffer); static const int NUM_VERTICES_PER_CUBE = 24; @@ -263,11 +258,6 @@ gpu::PipelinePointer DrawQuadVolume::getPipeline() { if (!pipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::gpu::program::drawColor); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding("color", 0)); - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(gpu::State::DepthTest(true, false)); pipeline = gpu::Pipeline::create(program, state); diff --git a/libraries/render/src/render/DrawTask.h b/libraries/render/src/render/DrawTask.h index 6f98e3bef1..b8ff5a2a42 100755 --- a/libraries/render/src/render/DrawTask.h +++ b/libraries/render/src/render/DrawTask.h @@ -66,8 +66,6 @@ private: const gpu::PipelinePointer getPipeline(); gpu::PipelinePointer _boundsPipeline; gpu::BufferPointer _drawBuffer; - - int _colorLocation { -1 }; }; class DrawQuadVolumeConfig : public render::JobConfig { diff --git a/libraries/render/src/render/ResampleTask.cpp b/libraries/render/src/render/ResampleTask.cpp index 880d13fde1..ed4d0ddfd0 100644 --- a/libraries/render/src/render/ResampleTask.cpp +++ b/libraries/render/src/render/ResampleTask.cpp @@ -52,10 +52,6 @@ void HalfDownsample::run(const RenderContextPointer& renderContext, const gpu::F if (!_pipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::gpu::program::drawTransformUnitQuadTextureOpaque); - - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(gpu::State::DepthTest(false, false)); _pipeline = gpu::Pipeline::create(program, state); @@ -111,13 +107,7 @@ void Upsample::run(const RenderContextPointer& renderContext, const gpu::Framebu resampledFrameBuffer = getResampledFrameBuffer(sourceFramebuffer); if (resampledFrameBuffer != sourceFramebuffer) { if (!_pipeline) { - auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); - auto ps = gpu::StandardShaderLib::getDrawTextureOpaquePS(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); - + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::gpu::program::drawTransformUnitQuadTextureOpaque); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(gpu::State::DepthTest(false, false)); _pipeline = gpu::Pipeline::create(program, state); diff --git a/libraries/render/src/render/ShapePipeline.cpp b/libraries/render/src/render/ShapePipeline.cpp index 8cd04f8067..2b2accde37 100644 --- a/libraries/render/src/render/ShapePipeline.cpp +++ b/libraries/render/src/render/ShapePipeline.cpp @@ -12,12 +12,26 @@ #include "ShapePipeline.h" #include +#include +#include +#include +#include <../render-utils/src/render-utils/ShaderConstants.h> -#include "DependencyManager.h" #include "Logging.h" + using namespace render; +namespace ru { + using render_utils::slot::texture::Texture; + using render_utils::slot::buffer::Buffer; +} + +namespace gr { + using graphics::slot::texture::Texture; + using graphics::slot::buffer::Buffer; +} + ShapePipeline::CustomFactoryMap ShapePipeline::_globalCustomFactoryMap; ShapePipeline::CustomKey ShapePipeline::registerCustomShapePipelineFactory(CustomFactory factory) { @@ -71,70 +85,30 @@ void ShapePlumber::addPipeline(const Key& key, const gpu::ShaderPointer& program void ShapePlumber::addPipeline(const Filter& filter, const gpu::ShaderPointer& program, const gpu::StatePointer& state, BatchSetter batchSetter, ItemSetter itemSetter) { - ShapeKey key{ filter._flags }; - - - // don't call makeProgram on shaders that are already made. - if (program->getNumCompilationAttempts() < 1) { - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("lightingModelBuffer"), Slot::BUFFER::LIGHTING_MODEL)); - slotBindings.insert(gpu::Shader::Binding(std::string("skinClusterBuffer"), Slot::BUFFER::SKINNING)); - slotBindings.insert(gpu::Shader::Binding(std::string("materialBuffer"), Slot::BUFFER::MATERIAL)); - slotBindings.insert(gpu::Shader::Binding(std::string("texMapArrayBuffer"), Slot::BUFFER::TEXMAPARRAY)); - slotBindings.insert(gpu::Shader::Binding(std::string("albedoMap"), Slot::MAP::ALBEDO)); - slotBindings.insert(gpu::Shader::Binding(std::string("roughnessMap"), Slot::MAP::ROUGHNESS)); - slotBindings.insert(gpu::Shader::Binding(std::string("normalMap"), Slot::MAP::NORMAL)); - slotBindings.insert(gpu::Shader::Binding(std::string("metallicMap"), Slot::MAP::METALLIC)); - slotBindings.insert(gpu::Shader::Binding(std::string("emissiveMap"), Slot::MAP::EMISSIVE_LIGHTMAP)); - slotBindings.insert(gpu::Shader::Binding(std::string("occlusionMap"), Slot::MAP::OCCLUSION)); - slotBindings.insert(gpu::Shader::Binding(std::string("scatteringMap"), Slot::MAP::SCATTERING)); - slotBindings.insert(gpu::Shader::Binding(std::string("keyLightBuffer"), Slot::BUFFER::KEY_LIGHT)); - slotBindings.insert(gpu::Shader::Binding(std::string("lightBuffer"), Slot::BUFFER::LIGHT_ARRAY_BUFFER)); - slotBindings.insert(gpu::Shader::Binding(std::string("lightAmbientBuffer"), Slot::BUFFER::LIGHT_AMBIENT_BUFFER)); - slotBindings.insert(gpu::Shader::Binding(std::string("skyboxMap"), Slot::MAP::LIGHT_AMBIENT_MAP)); - slotBindings.insert(gpu::Shader::Binding(std::string("fadeMaskMap"), Slot::MAP::FADE_MASK)); - slotBindings.insert(gpu::Shader::Binding(std::string("fadeParametersBuffer"), Slot::BUFFER::FADE_PARAMETERS)); - slotBindings.insert(gpu::Shader::Binding(std::string("fadeObjectParametersBuffer"), Slot::BUFFER::FADE_OBJECT_PARAMETERS)); - slotBindings.insert(gpu::Shader::Binding(std::string("hazeBuffer"), Slot::BUFFER::HAZE_MODEL)); - - if (key.isTranslucent()) { - slotBindings.insert(gpu::Shader::Binding(std::string("clusterGridBuffer"), Slot::BUFFER::LIGHT_CLUSTER_GRID_CLUSTER_GRID_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("clusterContentBuffer"), Slot::BUFFER::LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT)); - slotBindings.insert(gpu::Shader::Binding(std::string("frustumGridBuffer"), Slot::BUFFER::LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT)); - } - - gpu::Shader::makeProgram(*program, slotBindings); - } - auto locations = std::make_shared(); - - locations->albedoTextureUnit = program->getTextures().findLocation("albedoMap"); - locations->roughnessTextureUnit = program->getTextures().findLocation("roughnessMap"); - locations->normalTextureUnit = program->getTextures().findLocation("normalMap"); - locations->metallicTextureUnit = program->getTextures().findLocation("metallicMap"); - locations->emissiveTextureUnit = program->getTextures().findLocation("emissiveMap"); - locations->occlusionTextureUnit = program->getTextures().findLocation("occlusionMap"); - locations->lightingModelBufferUnit = program->getUniformBuffers().findLocation("lightingModelBuffer"); - locations->skinClusterBufferUnit = program->getUniformBuffers().findLocation("skinClusterBuffer"); - locations->materialBufferUnit = program->getUniformBuffers().findLocation("materialBuffer"); - locations->texMapArrayBufferUnit = program->getUniformBuffers().findLocation("texMapArrayBuffer"); - locations->keyLightBufferUnit = program->getUniformBuffers().findLocation("keyLightBuffer"); - locations->lightBufferUnit = program->getUniformBuffers().findLocation("lightBuffer"); - locations->lightAmbientBufferUnit = program->getUniformBuffers().findLocation("lightAmbientBuffer"); - locations->lightAmbientMapUnit = program->getTextures().findLocation("skyboxMap"); - locations->fadeMaskTextureUnit = program->getTextures().findLocation("fadeMaskMap"); - locations->fadeParameterBufferUnit = program->getUniformBuffers().findLocation("fadeParametersBuffer"); - locations->fadeObjectParameterBufferUnit = program->getUniformBuffers().findLocation("fadeObjectParametersBuffer"); - locations->hazeParameterBufferUnit = program->getUniformBuffers().findLocation("hazeBuffer"); + locations->albedoTextureUnit = program->getTextures().isValid(graphics::slot::texture::MaterialAlbedo); + locations->roughnessTextureUnit = program->getTextures().isValid(graphics::slot::texture::MaterialRoughness); + locations->normalTextureUnit = program->getTextures().isValid(graphics::slot::texture::MaterialNormal); + locations->metallicTextureUnit = program->getTextures().isValid(graphics::slot::texture::MaterialMetallic); + locations->emissiveTextureUnit = program->getTextures().isValid(graphics::slot::texture::MaterialEmissiveLightmap); + locations->occlusionTextureUnit = program->getTextures().isValid(graphics::slot::texture::MaterialOcclusion); + locations->lightingModelBufferUnit = program->getUniformBuffers().isValid(render_utils::slot::buffer::LightModel); + locations->skinClusterBufferUnit = program->getUniformBuffers().isValid(graphics::slot::buffer::Skinning); + locations->materialBufferUnit = program->getUniformBuffers().isValid(graphics::slot::buffer::Material); + locations->texMapArrayBufferUnit = program->getUniformBuffers().isValid(graphics::slot::buffer::TexMapArray); + locations->keyLightBufferUnit = program->getUniformBuffers().isValid(graphics::slot::buffer::KeyLight); + locations->lightBufferUnit = program->getUniformBuffers().isValid(graphics::slot::buffer::Light); + locations->lightAmbientBufferUnit = program->getUniformBuffers().isValid(graphics::slot::buffer::AmbientLight); + locations->lightAmbientMapUnit = program->getTextures().isValid(graphics::slot::texture::Skybox); + locations->fadeMaskTextureUnit = program->getTextures().isValid(render_utils::slot::texture::FadeMask); + locations->fadeParameterBufferUnit = program->getUniformBuffers().isValid(render_utils::slot::buffer::FadeParameters); + locations->fadeObjectParameterBufferUnit = program->getUniformBuffers().isValid(render_utils::slot::buffer::FadeObjectParameters); + locations->hazeParameterBufferUnit = program->getUniformBuffers().isValid(render_utils::slot::buffer::HazeParams); if (key.isTranslucent()) { - locations->lightClusterGridBufferUnit = program->getUniformBuffers().findLocation("clusterGridBuffer"); - locations->lightClusterContentBufferUnit = program->getUniformBuffers().findLocation("clusterContentBuffer"); - locations->lightClusterFrustumBufferUnit = program->getUniformBuffers().findLocation("frustumGridBuffer"); - } else { - locations->lightClusterGridBufferUnit = -1; - locations->lightClusterContentBufferUnit = -1; - locations->lightClusterFrustumBufferUnit = -1; + locations->lightClusterGridBufferUnit = program->getUniformBuffers().isValid(render_utils::slot::buffer::LightClusterGrid); + locations->lightClusterContentBufferUnit = program->getUniformBuffers().isValid(render_utils::slot::buffer::LightClusterContent); + locations->lightClusterFrustumBufferUnit = program->getUniformBuffers().isValid(render_utils::slot::buffer::LightClusterFrustumGrid); } { diff --git a/libraries/render/src/render/ShapePipeline.h b/libraries/render/src/render/ShapePipeline.h index 10f1b757cc..bac1076dd6 100644 --- a/libraries/render/src/render/ShapePipeline.h +++ b/libraries/render/src/render/ShapePipeline.h @@ -228,62 +228,29 @@ inline QDebug operator<<(QDebug debug, const ShapeKey& key) { // Meta-information (pipeline and locations) to render a shape class ShapePipeline { public: - class Slot { - public: - enum BUFFER { - SKINNING = 0, - MATERIAL, - TEXMAPARRAY, - LIGHTING_MODEL, - KEY_LIGHT, - LIGHT_ARRAY_BUFFER, - LIGHT_AMBIENT_BUFFER, - HAZE_MODEL, - FADE_PARAMETERS, - FADE_OBJECT_PARAMETERS, - LIGHT_CLUSTER_GRID_FRUSTUM_GRID_SLOT, - LIGHT_CLUSTER_GRID_CLUSTER_GRID_SLOT, - LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT, - - }; - - enum MAP { - ALBEDO = 0, - NORMAL, - METALLIC, - EMISSIVE_LIGHTMAP, - ROUGHNESS, - OCCLUSION, - SCATTERING, - - LIGHT_AMBIENT_MAP = 10, - FADE_MASK, - }; - }; - class Locations { public: - int albedoTextureUnit; - int normalTextureUnit; - int roughnessTextureUnit; - int metallicTextureUnit; - int emissiveTextureUnit; - int occlusionTextureUnit; - int lightingModelBufferUnit; - int skinClusterBufferUnit; - int materialBufferUnit; - int texMapArrayBufferUnit; - int keyLightBufferUnit; - int lightBufferUnit; - int lightAmbientBufferUnit; - int lightAmbientMapUnit; - int fadeMaskTextureUnit; - int fadeParameterBufferUnit; - int fadeObjectParameterBufferUnit; - int hazeParameterBufferUnit; - int lightClusterGridBufferUnit; - int lightClusterContentBufferUnit; - int lightClusterFrustumBufferUnit; + bool albedoTextureUnit{ false }; + bool normalTextureUnit{ false }; + bool roughnessTextureUnit{ false }; + bool metallicTextureUnit{ false }; + bool emissiveTextureUnit{ false }; + bool occlusionTextureUnit{ false }; + bool lightingModelBufferUnit{ false }; + bool skinClusterBufferUnit{ false }; + bool materialBufferUnit{ false }; + bool texMapArrayBufferUnit{ false }; + bool keyLightBufferUnit{ false }; + bool lightBufferUnit{ false }; + bool lightAmbientBufferUnit{ false }; + bool lightAmbientMapUnit{ false }; + bool fadeMaskTextureUnit{ false }; + bool fadeParameterBufferUnit{ false }; + bool fadeObjectParameterBufferUnit{ false }; + bool hazeParameterBufferUnit{ false }; + bool lightClusterGridBufferUnit{ false }; + bool lightClusterContentBufferUnit{ false }; + bool lightClusterFrustumBufferUnit{ false }; }; using LocationsPointer = std::shared_ptr; @@ -330,7 +297,7 @@ public: using Pipeline = ShapePipeline; using PipelinePointer = ShapePipelinePointer; using PipelineMap = std::unordered_map; - using Slot = Pipeline::Slot; + using Slot = int32_t; using Locations = Pipeline::Locations; using LocationsPointer = Pipeline::LocationsPointer; using BatchSetter = Pipeline::BatchSetter; diff --git a/libraries/render/src/render/blurGaussianDepthAwareH.slf b/libraries/render/src/render/blurGaussianDepthAwareH.slf index aab1fe2b02..09a92909ff 100644 --- a/libraries/render/src/render/blurGaussianDepthAwareH.slf +++ b/libraries/render/src/render/blurGaussianDepthAwareH.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// blurGaussianDepthAwareH.frag +// // Created by Sam Gateau on 6/7/16. // Copyright 2016 High Fidelity, Inc. // @@ -12,9 +14,9 @@ <@include BlurTask.slh@> <$declareBlurGaussianDepthAware()$> -in vec2 varTexCoord0; +layout(location=0) in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { outFragColor = pixelShaderGaussianDepthAware(varTexCoord0, vec2(1.0, 0.0), getViewportInvWidthHeight()); diff --git a/libraries/render/src/render/blurGaussianDepthAwareV.slf b/libraries/render/src/render/blurGaussianDepthAwareV.slf index 35f0d3a381..4f9bc86c01 100644 --- a/libraries/render/src/render/blurGaussianDepthAwareV.slf +++ b/libraries/render/src/render/blurGaussianDepthAwareV.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// blurGaussianDepthAwareV.frag +// // Created by Sam Gateau on 6/7/16. // Copyright 2016 High Fidelity, Inc. // @@ -12,9 +14,9 @@ <@include BlurTask.slh@> <$declareBlurGaussianDepthAware()$> -in vec2 varTexCoord0; +layout(location=0) in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { outFragColor = pixelShaderGaussianDepthAware(varTexCoord0, vec2(0.0, 1.0), getViewportInvWidthHeight()); diff --git a/libraries/render/src/render/blurGaussianH.slf b/libraries/render/src/render/blurGaussianH.slf index 02cc73fe13..1c13664907 100644 --- a/libraries/render/src/render/blurGaussianH.slf +++ b/libraries/render/src/render/blurGaussianH.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// blurGaussianH.frag +// // Created by Sam Gateau on 6/7/16. // Copyright 2016 High Fidelity, Inc. // @@ -13,9 +15,9 @@ <$declareBlurGaussian()$> -in vec2 varTexCoord0; +layout(location=0) in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { outFragColor = pixelShaderGaussian(varTexCoord0, vec2(1.0, 0.0), getViewportInvWidthHeight()); diff --git a/libraries/render/src/render/blurGaussianV.slf b/libraries/render/src/render/blurGaussianV.slf index 99beab6275..f8351f9670 100644 --- a/libraries/render/src/render/blurGaussianV.slf +++ b/libraries/render/src/render/blurGaussianV.slf @@ -2,6 +2,8 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // +// blurGaussianV.frag +// // Created by Sam Gateau on 6/7/16. // Copyright 2016 High Fidelity, Inc. // @@ -12,9 +14,9 @@ <$declareBlurGaussian()$> -in vec2 varTexCoord0; +layout(location=0) in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) out vec4 outFragColor; void main(void) { outFragColor = pixelShaderGaussian(varTexCoord0, vec2(0.0, 1.0), getViewportInvWidthHeight()); diff --git a/libraries/render/src/render/drawCellBounds.slf b/libraries/render/src/render/drawCellBounds.slf index 6b9f5b96bc..410f0f5d78 100644 --- a/libraries/render/src/render/drawCellBounds.slf +++ b/libraries/render/src/render/drawCellBounds.slf @@ -1,7 +1,7 @@ <@include gpu/Config.slh@> <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> -// drawCellBounds.slf +// drawCellBounds.frag // fragment shader // // Created by Sam Gateau on 1/25/2016. @@ -11,8 +11,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -in vec4 varColor; -out vec4 outFragColor; +layout(location=0) in vec4 varColor; +layout(location=0) out vec4 outFragColor; void main(void) { diff --git a/libraries/render/src/render/drawCellBounds.slv b/libraries/render/src/render/drawCellBounds.slv index f50331f15c..8336885365 100644 --- a/libraries/render/src/render/drawCellBounds.slv +++ b/libraries/render/src/render/drawCellBounds.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// drawCellBounds.slv +// drawCellBounds.vert // Vertex shader // // Created by Sam Gateau on 1/25/2016 @@ -20,9 +20,9 @@ <$declareColorWheel()$> <@include SceneOctree.slh@> -uniform ivec4 inCellLocation; +layout(location=GPU_UNIFORM_EXTRA0) uniform ivec4 inCellLocation; -out vec4 varColor; +layout(location=0) out vec4 varColor; void main(void) { diff --git a/libraries/render/src/render/drawItemBounds.slf b/libraries/render/src/render/drawItemBounds.slf index 84c47d0933..90faaff05c 100644 --- a/libraries/render/src/render/drawItemBounds.slf +++ b/libraries/render/src/render/drawItemBounds.slf @@ -11,9 +11,9 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -in vec4 varColor; -in vec2 varTexcoord; -out vec4 outFragColor; +layout(location=0) in vec4 varColor; +layout(location=1) in vec2 varTexcoord; +layout(location=0) out vec4 outFragColor; void main(void) { float var = step(fract(varTexcoord.x * varTexcoord.y * 1.0), 0.5); diff --git a/libraries/render/src/render/drawItemBounds.slv b/libraries/render/src/render/drawItemBounds.slv index 0bb2b795bd..059538de47 100644 --- a/libraries/render/src/render/drawItemBounds.slv +++ b/libraries/render/src/render/drawItemBounds.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// drawItemBounds.slv +// drawItemBounds.vert // vertex shader // // Created by Sam Gateau on 6/29/2015. @@ -12,13 +12,16 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include gpu/ShaderConstants.h@> + <@include gpu/Transform.slh@> <$declareStandardTransform()$> <@include gpu/Color.slh@> <$declareColorWheel()$> -uniform vec4 inColor; + +layout(location=GPU_UNIFORM_COLOR) uniform vec4 inColor; struct ItemBound { @@ -27,7 +30,7 @@ struct ItemBound { }; #if defined(GPU_GL410) -uniform samplerBuffer ssbo0Buffer; +layout(binding=0) uniform samplerBuffer ssbo0Buffer; ItemBound getItemBound(int i) { int offset = 2 * i; ItemBound bound; @@ -36,7 +39,7 @@ ItemBound getItemBound(int i) { return bound; } #else -layout(std140) buffer ssbo0Buffer { +layout(std140, binding=0) buffer ssbo0Buffer { ItemBound bounds[]; }; ItemBound getItemBound(int i) { @@ -47,8 +50,8 @@ ItemBound getItemBound(int i) { -out vec4 varColor; -out vec2 varTexcoord; +layout(location=0) out vec4 varColor; +layout(location=1) out vec2 varTexcoord; void main(void) { const vec4 UNIT_BOX[8] = vec4[8]( diff --git a/libraries/render/src/render/drawItemStatus.slf b/libraries/render/src/render/drawItemStatus.slf index 40cf450363..309a73ae15 100644 --- a/libraries/render/src/render/drawItemStatus.slf +++ b/libraries/render/src/render/drawItemStatus.slf @@ -11,11 +11,11 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -in vec4 varColor; -in vec3 varTexcoord; -out vec4 outFragColor; +layout(location=0) in vec4 varColor; +layout(location=1) in vec3 varTexcoord; +layout(location=0) out vec4 outFragColor; -uniform sampler2D _icons; +layout(binding=0) uniform sampler2D _icons; vec2 getIconTexcoord(float icon, vec2 uv) { const vec2 ICON_COORD_SIZE = vec2(0.0625, 1.0); return vec2((uv.x + icon) * ICON_COORD_SIZE.x, uv.y * ICON_COORD_SIZE.y); diff --git a/libraries/render/src/render/drawItemStatus.slv b/libraries/render/src/render/drawItemStatus.slv index 792f2733c5..e92bdda248 100644 --- a/libraries/render/src/render/drawItemStatus.slv +++ b/libraries/render/src/render/drawItemStatus.slv @@ -2,7 +2,7 @@ <$VERSION_HEADER$> // Generated on <$_SCRIBE_DATE$> // -// drawItemStatus.slv +// drawItemStatus.vert // vertex shader // // Created by Sam Gateau on 6/30/2015. @@ -13,16 +13,17 @@ // <@include gpu/Transform.slh@> +<@include gpu/ShaderConstants.h@> <$declareStandardTransform()$> -out vec4 varColor; -out vec3 varTexcoord; +layout(location=0) out vec4 varColor; +layout(location=1) out vec3 varTexcoord; -uniform vec3 inBoundPos; -uniform vec3 inBoundDim; -uniform ivec4 inStatus0; -uniform ivec4 inStatus1; +layout(location=GPU_UNIFORM_EXTRA0) uniform vec3 inBoundPos; +layout(location=GPU_UNIFORM_EXTRA1) uniform vec3 inBoundDim; +layout(location=GPU_UNIFORM_EXTRA2) uniform ivec4 inStatus0; +layout(location=GPU_UNIFORM_EXTRA3) uniform ivec4 inStatus1; vec3 paintRainbow(float normalizedHue) { float v = normalizedHue * 6.f; diff --git a/libraries/render/src/render/drawLODReticle.slf b/libraries/render/src/render/drawLODReticle.slf index 68eb27b775..61d0cf32fb 100644 --- a/libraries/render/src/render/drawLODReticle.slf +++ b/libraries/render/src/render/drawLODReticle.slf @@ -11,8 +11,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -in vec2 varTexCoord0; -out vec4 outFragColor; +layout(location=0) in vec2 varTexCoord0; +layout(location=0) out vec4 outFragColor; void main(void) { vec2 circlePos = 2.0 * ( varTexCoord0.xy * 2.0 - vec2(1.0) ); diff --git a/libraries/shaders/CMakeLists.txt b/libraries/shaders/CMakeLists.txt index de188089a6..1c4824ac02 100644 --- a/libraries/shaders/CMakeLists.txt +++ b/libraries/shaders/CMakeLists.txt @@ -3,6 +3,7 @@ set(TARGET_NAME gpu) AUTOSCRIBE_SHADER_LIB(gpu) AUTOSCRIBE_PROGRAM(NAME drawColor VERTEX DrawTransformVertexPosition FRAGMENT DrawColor) AUTOSCRIBE_PROGRAM(NAME drawTransformUnitQuadTextureOpaque VERTEX DrawTransformUnitQuad FRAGMENT DrawTextureOpaque) +AUTOSCRIBE_PROGRAM(NAME drawTexture VERTEX DrawUnitQuadTexcoord FRAGMENT DrawTexture) AUTOSCRIBE_PROGRAM(NAME drawUnitQuatTextureOpaque VERTEX DrawUnitQuadTexcoord FRAGMENT DrawTextureOpaque) AUTOSCRIBE_PROGRAM(NAME drawTextureOpaqueTexcoordRect VERTEX DrawTexcoordRectTransformUnitQuad FRAGMENT DrawTextureOpaque) AUTOSCRIBE_PROGRAM(NAME drawNothing VERTEX DrawVertexPosition FRAGMENT DrawNada) @@ -11,6 +12,11 @@ set(TARGET_NAME graphics) AUTOSCRIBE_SHADER_LIB(gpu) AUTOSCRIBE_PROGRAM(NAME skybox) +set(TARGET_NAME display-plugins) +AUTOSCRIBE_SHADER_LIB(display-plugins) +AUTOSCRIBE_PROGRAM(NAME InterleavedSrgbToLinear VERTEX gpu::vertex::DrawUnitQuadTexcoord) +AUTOSCRIBE_PROGRAM(NAME SrgbToLinear VERTEX gpu::vertex::DrawUnitQuadTexcoord) + set(TARGET_NAME procedural) AUTOSCRIBE_SHADER_LIB(gpu graphics) @@ -171,5 +177,15 @@ AUTOSCRIBE_PROGRAM(NAME textured_particle) set(TARGET_NAME shaders) autoscribe_shader_finish() setup_hifi_library(Gui) +add_dependencies(${TARGET_NAME} compiled_shaders reflected_shaders) + +# Despite the dependency above, the autogen logic will attempt to compile the QRC before +# the compiled_shaders project is built causing an error on a clean workspace because the +# QRC references files generated by the compiled_shaders target +# To fix that we need to explicitly add every shader as a dependnecy of the autogen process +foreach(COMPILED_SHADER ${COMPILED_SHADERS}) + set_property(TARGET ${TARGET_NAME} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS "${COMPILED_SHADER}") +endforeach() + link_hifi_libraries(shared) diff --git a/libraries/shaders/Shaders.cpp.in b/libraries/shaders/ShaderEnums.cpp.in similarity index 65% rename from libraries/shaders/Shaders.cpp.in rename to libraries/shaders/ShaderEnums.cpp.in index 795367cc4e..7f4751f116 100644 --- a/libraries/shaders/Shaders.cpp.in +++ b/libraries/shaders/ShaderEnums.cpp.in @@ -1,10 +1,10 @@ -#include "Shaders.h" +#include "ShaderEnums.h" namespace shader { uint32_t all_programs[] = { @SHADER_PROGRAMS_ARRAY@ - INVALID_SHADER + (uint32_t)-1 }; } diff --git a/libraries/shaders/ShaderEnums.h.in b/libraries/shaders/ShaderEnums.h.in new file mode 100644 index 0000000000..153f1d6fab --- /dev/null +++ b/libraries/shaders/ShaderEnums.h.in @@ -0,0 +1,9 @@ +#include +#include + +namespace shader { + +@SHADER_ENUMS@ + +} + diff --git a/libraries/shaders/Shaders.h.in b/libraries/shaders/Shaders.h.in deleted file mode 100644 index fd9b5c9ba9..0000000000 --- a/libraries/shaders/Shaders.h.in +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include - -namespace shader { - -@SHADER_ENUMS@ - -extern uint32_t all_programs[]; - -static const uint32_t INVALID_SHADER = (uint32_t)-1; - -std::string loadShaderSource(uint32_t shaderId); -} - diff --git a/libraries/shaders/src/shaders/Shaders.cpp b/libraries/shaders/src/shaders/Shaders.cpp new file mode 100644 index 0000000000..50a7d38a69 --- /dev/null +++ b/libraries/shaders/src/shaders/Shaders.cpp @@ -0,0 +1,95 @@ +// +// Created by Bradley Austin Davis on 2018/06/02 +// Copyright 2013-2018 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "Shaders.h" + +#include +#include +#include +#include +#include + +#include +#include +#include + +// Can't use the Q_INIT_RESOURCE macro inside a namespace on Mac, +// so this is done out of line +void initShaders() { + static std::once_flag once; + std::call_once(once, [] { + Q_INIT_RESOURCE(shaders); + }); +} + +static std::vector splitStringIntoLines(const std::string& s) { + std::stringstream ss(s); + std::vector result; + + std::string line; + while (std::getline(ss, line, '\n')) { + result.push_back(line); + } + return result; +} + +static std::string loadResource(const std::string& path) { + return FileUtils::readFile(path.c_str()).toStdString(); +} + +namespace shader { + +void cleanShaderSource(std::string& shaderSource) { + static const std::regex LAYOUT_REGEX{ R"REGEX(^layout\((\s*std140\s*,\s*)?(?:binding|location)\s*=\s*(?:\b\w+\b)\)\s*(?!(?:flat\s+)?(?:out|in|buffer))\b(.*)$)REGEX" }; + static const int GROUP_STD140 = 1; + static const int THE_REST_OF_THE_OWL = 2; + std::vector lines = splitStringIntoLines(shaderSource); + std::vector outLines; + std::unordered_map locationDefines; + for (const auto& line : lines) { + std::cmatch m; + if (std::regex_match(line.c_str(), m, LAYOUT_REGEX)) { + std::string outLine; + if (m[GROUP_STD140].matched) { + outLine = "layout(std140) "; + } + outLine += m[THE_REST_OF_THE_OWL].str(); + outLines.push_back(outLine); + continue; + // On mac we have to strip out all the explicit binding location layouts, + // because GL 4.1 doesn't support them + } + outLines.push_back(line); + } + std::ostringstream joined; + std::copy(outLines.begin(), outLines.end(), std::ostream_iterator(joined, "\n")); + shaderSource = joined.str(); +} + +std::string loadShaderSource(uint32_t shaderId) { + initShaders(); + auto shaderStr = loadResource(std::string(":/shaders/") + std::to_string(shaderId)); +#if defined(Q_OS_MAC) + // OSX only supports OpenGL 4.1 without ARB_shading_language_420pack or + // ARB_explicit_uniform_location or basically anything useful that's + // been released in the last 8 fucking years, so in that case we need to + // strip out all explicit locations and do a bunch of background magic to + // make the system seem like it is using the explicit locations + cleanShaderSource(shaderStr); +#endif + return shaderStr; +} + +std::string loadShaderReflection(uint32_t shaderId) { + initShaders(); + auto path = std::string(":/shaders/") + std::to_string(shaderId) + std::string("_reflection"); + auto json = loadResource(path); + return json; +} + +} diff --git a/libraries/shaders/src/shaders/Shaders.h b/libraries/shaders/src/shaders/Shaders.h new file mode 100644 index 0000000000..1335c1b49b --- /dev/null +++ b/libraries/shaders/src/shaders/Shaders.h @@ -0,0 +1,34 @@ +// +// Created by Bradley Austin Davis on 2018/07/09 +// Copyright 2013-2018 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#pragma once +#include +#include +#include +#include + +namespace shader { + +static const uint32_t INVALID_SHADER = (uint32_t)-1; +static const uint32_t INVALID_PROGRAM = (uint32_t)-1; + +extern uint32_t all_programs[]; + +std::string loadShaderSource(uint32_t shaderId); +std::string loadShaderReflection(uint32_t shaderId); + +inline uint32_t getVertexId(uint32_t programId) { + return (programId >> 16) & UINT16_MAX; +} + +inline uint32_t getFragmentId(uint32_t programId) { + return programId & UINT16_MAX; +} + +} + diff --git a/libraries/shaders/src/shaders/ShadersCommon.cpp b/libraries/shaders/src/shaders/ShadersCommon.cpp deleted file mode 100644 index 03c8bd2918..0000000000 --- a/libraries/shaders/src/shaders/ShadersCommon.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include -#include - -namespace shader { - -std::string loadShaderSource(uint32_t shaderId) { - static std::once_flag once; - std::call_once(once, [] { - Q_INIT_RESOURCE(shaders); - }); - auto shaderPath = std::string(":/shaders/") + std::to_string(shaderId); - auto shaderData = FileUtils::readFile(shaderPath.c_str()); - return shaderData.toStdString(); -} - -} diff --git a/libraries/shared/src/shared/GlobalAppProperties.cpp b/libraries/shared/src/shared/GlobalAppProperties.cpp index 6c9f3f9601..54e50da3ea 100644 --- a/libraries/shared/src/shared/GlobalAppProperties.cpp +++ b/libraries/shared/src/shared/GlobalAppProperties.cpp @@ -21,7 +21,6 @@ namespace hifi { namespace properties { namespace gl { const char* BACKEND = "com.highfidelity.gl.backend"; - const char* MAKE_PROGRAM_CALLBACK = "com.highfidelity.gl.makeProgram"; const char* PRIMARY_CONTEXT = "com.highfidelity.gl.primaryContext"; } diff --git a/libraries/test-utils/src/test-utils/Utils.cpp b/libraries/test-utils/src/test-utils/Utils.cpp new file mode 100644 index 0000000000..16df34bb8b --- /dev/null +++ b/libraries/test-utils/src/test-utils/Utils.cpp @@ -0,0 +1,40 @@ +// +// Created by Bradley Austin Davis on 2018/05/13 +// Copyright 2013-2018 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "Utils.h" + +#include +#include +#include + +#if defined(Q_OS_WIN) +#include +#endif + + +#include "FileDownloader.h" + +static QtMessageHandler originalHandler; + +static void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message) { +#if defined(Q_OS_WIN) + OutputDebugStringA(message.toStdString().c_str()); + OutputDebugStringA("\n"); +#endif + originalHandler(type, context, message); +} + + +void installTestMessageHandler() { + originalHandler = qInstallMessageHandler(messageHandler); +} + +bool downloadFile(const QString& file, const std::function handler) { + FileDownloader(file, handler).waitForDownload(); + return true; +} \ No newline at end of file diff --git a/libraries/test-utils/src/test-utils/Utils.h b/libraries/test-utils/src/test-utils/Utils.h new file mode 100644 index 0000000000..27ed1f8207 --- /dev/null +++ b/libraries/test-utils/src/test-utils/Utils.h @@ -0,0 +1,17 @@ +// +// Created by Bradley Austin Davis on 2018/05/13 +// Copyright 2013-2018 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#pragma once + +class QByteArray; +class QString; + +#include + +void installTestMessageHandler(); + +bool downloadFile(const QString& url, const std::function handler); \ No newline at end of file diff --git a/plugins/openvr/src/OpenVrDisplayPlugin.cpp b/plugins/openvr/src/OpenVrDisplayPlugin.cpp index cd56eeff39..fae2144caf 100644 --- a/plugins/openvr/src/OpenVrDisplayPlugin.cpp +++ b/plugins/openvr/src/OpenVrDisplayPlugin.cpp @@ -23,7 +23,6 @@ #include #include - #include #include #include @@ -36,7 +35,7 @@ Q_DECLARE_LOGGING_CATEGORY(displayplugins) -const char* OpenVrThreadedSubmit { "OpenVR Threaded Submit" }; // this probably shouldn't be hardcoded here +const char* OpenVrThreadedSubmit{ "OpenVR Threaded Submit" }; // this probably shouldn't be hardcoded here PoseData _nextRenderPoseData; PoseData _nextSimPoseData; @@ -44,8 +43,8 @@ PoseData _nextSimPoseData; #define MIN_CORES_FOR_NORMAL_RENDER 5 bool forceInterleavedReprojection = (QThread::idealThreadCount() < MIN_CORES_FOR_NORMAL_RENDER); -static std::array VR_EYES { { vr::Eye_Left, vr::Eye_Right } }; -bool _openVrDisplayActive { false }; +static std::array VR_EYES{ { vr::Eye_Left, vr::Eye_Right } }; +bool _openVrDisplayActive{ false }; // Flip y-axis since GL UV coords are backwards. static vr::VRTextureBounds_t OPENVR_TEXTURE_BOUNDS_LEFT{ 0, 0, 0.5f, 1 }; static vr::VRTextureBounds_t OPENVR_TEXTURE_BOUNDS_RIGHT{ 0.5f, 0, 1, 1 }; @@ -164,9 +163,7 @@ public: friend class OpenVrDisplayPlugin; std::shared_ptr _canvas; - OpenVrSubmitThread(OpenVrDisplayPlugin& plugin) : _plugin(plugin) { - setObjectName("OpenVR Submit Thread"); - } + OpenVrSubmitThread(OpenVrDisplayPlugin& plugin) : _plugin(plugin) { setObjectName("OpenVR Submit Thread"); } void updateSource() { _plugin.withNonPresentThreadLock([&] { @@ -190,18 +187,18 @@ public: }); } - GLuint _program { 0 }; + GLuint _program{ 0 }; void updateProgram() { if (!_program) { std::string vsSource = HMD_REPROJECTION_VERT; std::string fsSource = HMD_REPROJECTION_FRAG; - GLuint vertexShader { 0 }, fragmentShader { 0 }; + GLuint vertexShader{ 0 }, fragmentShader{ 0 }; std::string error; - ::gl::CachedShader binary; ::gl::compileShader(GL_VERTEX_SHADER, vsSource, vertexShader, error); ::gl::compileShader(GL_FRAGMENT_SHADER, fsSource, fragmentShader, error); - _program = ::gl::compileProgram({ { vertexShader, fragmentShader } }, error, binary); + _program = ::gl::buildProgram({ { vertexShader, fragmentShader } }); + ::gl::linkProgram(_program, error); glDeleteShader(vertexShader); glDeleteShader(fragmentShader); qDebug() << "Rebuild proigram"; @@ -211,14 +208,13 @@ public: #define COLOR_BUFFER_COUNT 4 void run() override { - - GLuint _framebuffer { 0 }; + GLuint _framebuffer{ 0 }; std::array _colors; - size_t currentColorBuffer { 0 }; - size_t globalColorBufferCount { 0 }; - GLuint _uniformBuffer { 0 }; - GLuint _vao { 0 }; - GLuint _depth { 0 }; + size_t currentColorBuffer{ 0 }; + size_t globalColorBufferCount{ 0 }; + GLuint _uniformBuffer{ 0 }; + GLuint _vao{ 0 }; + GLuint _depth{ 0 }; Reprojection _reprojection; QThread::currentThread()->setPriority(QThread::Priority::TimeCriticalPriority); @@ -229,7 +225,6 @@ public: glCreateVertexArrays(1, &_vao); glBindVertexArray(_vao); - glCreateFramebuffers(1, &_framebuffer); { glCreateRenderbuffers(1, &_depth); @@ -253,7 +248,6 @@ public: continue; } - updateProgram(); { auto presentRotation = glm::mat3(_nextRender.poses[0]); @@ -281,13 +275,15 @@ public: static const vr::VRTextureBounds_t leftBounds{ 0, 0, 0.5f, 1 }; static const vr::VRTextureBounds_t rightBounds{ 0.5f, 0, 1, 1 }; - vr::Texture_t texture{ (void*)(uintptr_t)_colors[currentColorBuffer], vr::TextureType_OpenGL, vr::ColorSpace_Auto }; + vr::Texture_t texture{ (void*)(uintptr_t)_colors[currentColorBuffer], vr::TextureType_OpenGL, + vr::ColorSpace_Auto }; vr::VRCompositor()->Submit(vr::Eye_Left, &texture, &leftBounds); vr::VRCompositor()->Submit(vr::Eye_Right, &texture, &rightBounds); _plugin._presentRate.increment(); PoseData nextRender, nextSim; nextRender.frameIndex = _plugin.presentCount(); - vr::VRCompositor()->WaitGetPoses(nextRender.vrPoses, vr::k_unMaxTrackedDeviceCount, nextSim.vrPoses, vr::k_unMaxTrackedDeviceCount); + vr::VRCompositor()->WaitGetPoses(nextRender.vrPoses, vr::k_unMaxTrackedDeviceCount, nextSim.vrPoses, + vr::k_unMaxTrackedDeviceCount); // Copy invalid poses in nextSim from nextRender for (uint32_t i = 0; i < vr::k_unMaxTrackedDeviceCount; ++i) { @@ -297,9 +293,7 @@ public: } mat4 sensorResetMat; - _plugin.withNonPresentThreadLock([&] { - sensorResetMat = _plugin._sensorResetMat; - }); + _plugin.withNonPresentThreadLock([&] { sensorResetMat = _plugin._sensorResetMat; }); nextRender.update(sensorResetMat); nextSim.update(sensorResetMat); @@ -327,16 +321,12 @@ public: _canvas->doneCurrent(); } - void update(const CompositeInfo& newCompositeInfo) { - _queue.push(newCompositeInfo); - } + void update(const CompositeInfo& newCompositeInfo) { _queue.push(newCompositeInfo); } void waitForPresent() { auto lastCount = _presentCount.load(); Lock lock(_plugin._presentMutex); - _presented.wait(lock, [&]()->bool { - return _presentCount.load() > lastCount; - }); + _presented.wait(lock, [&]() -> bool { return _presentCount.load() > lastCount; }); _nextSimPoseData = _nextSim; _nextRenderPoseData = _nextRender; } @@ -345,9 +335,9 @@ public: CompositeInfo::Queue _queue; PoseData _nextRender, _nextSim; - bool _quit { false }; - GLuint _currentTexture { 0 }; - std::atomic _presentCount { 0 }; + bool _quit{ false }; + GLuint _currentTexture{ 0 }; + std::atomic _presentCount{ 0 }; Condition _presented; OpenVrDisplayPlugin& _plugin; }; @@ -451,7 +441,7 @@ bool OpenVrDisplayPlugin::internalActivate() { _openVrDisplayActive = true; _system->GetRecommendedRenderTargetSize(&_renderTargetSize.x, &_renderTargetSize.y); - // Recommended render target size is per-eye, so double the X size for + // Recommended render target size is per-eye, so double the X size for // left + right eyes _renderTargetSize.x *= 2; @@ -468,7 +458,6 @@ bool OpenVrDisplayPlugin::internalActivate() { if (forceInterleavedReprojection) { vr::VRCompositor()->ForceInterleavedReprojectionOn(true); } - // set up default sensor space such that the UI overlay will align with the front of the room. auto chaperone = vr::VRChaperone(); @@ -482,9 +471,9 @@ bool OpenVrDisplayPlugin::internalActivate() { glm::vec3 uiPos(0.0f, UI_HEIGHT, UI_RADIUS - (0.5f * zSize) - UI_Z_OFFSET); _sensorResetMat = glm::inverse(createMatFromQuatAndPos(glm::quat(), uiPos)); } else { - #if DEV_BUILD - qDebug() << "OpenVR: error could not get chaperone pointer"; - #endif +#if DEV_BUILD + qDebug() << "OpenVR: error could not get chaperone pointer"; +#endif } if (_threadedSubmit) { @@ -523,7 +512,9 @@ void OpenVrDisplayPlugin::customizeContext() { _compositeInfos[0].texture = _compositeFramebuffer->getRenderBuffer(0); for (size_t i = 0; i < COMPOSITING_BUFFER_SIZE; ++i) { if (0 != i) { - _compositeInfos[i].texture = gpu::Texture::createRenderBuffer(gpu::Element::COLOR_RGBA_32, _renderTargetSize.x, _renderTargetSize.y, gpu::Texture::SINGLE_MIP, gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_POINT)); + _compositeInfos[i].texture = gpu::Texture::createRenderBuffer(gpu::Element::COLOR_RGBA_32, _renderTargetSize.x, + _renderTargetSize.y, gpu::Texture::SINGLE_MIP, + gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_POINT)); } _compositeInfos[i].textureID = getGLBackend()->getTextureID(_compositeInfos[i].texture); } @@ -544,9 +535,7 @@ void OpenVrDisplayPlugin::uncustomizeContext() { void OpenVrDisplayPlugin::resetSensors() { glm::mat4 m; - withNonPresentThreadLock([&] { - m = toGlm(_nextSimPoseData.vrPoses[0].mDeviceToAbsoluteTracking); - }); + withNonPresentThreadLock([&] { m = toGlm(_nextSimPoseData.vrPoses[0].mDeviceToAbsoluteTracking); }); _sensorResetMat = glm::inverse(cancelOutRollAndPitch(m)); } @@ -567,9 +556,7 @@ bool OpenVrDisplayPlugin::beginFrameRender(uint32_t frameIndex) { _currentRenderFrameInfo = FrameInfo(); PoseData nextSimPoseData; - withNonPresentThreadLock([&] { - nextSimPoseData = _nextSimPoseData; - }); + withNonPresentThreadLock([&] { nextSimPoseData = _nextSimPoseData; }); // HACK: when interface is launched and steam vr is NOT running, openvr will return bad HMD poses for a few frames // To workaround this, filter out any hmd poses that are obviously bad, i.e. beneath the floor. @@ -582,10 +569,11 @@ bool OpenVrDisplayPlugin::beginFrameRender(uint32_t frameIndex) { _lastGoodHMDPose = nextSimPoseData.vrPoses[vr::k_unTrackedDeviceIndex_Hmd].mDeviceToAbsoluteTracking; } - vr::TrackedDeviceIndex_t handIndices[2] { vr::k_unTrackedDeviceIndexInvalid, vr::k_unTrackedDeviceIndexInvalid }; + vr::TrackedDeviceIndex_t handIndices[2]{ vr::k_unTrackedDeviceIndexInvalid, vr::k_unTrackedDeviceIndexInvalid }; { - vr::TrackedDeviceIndex_t controllerIndices[2] ; - auto trackedCount = _system->GetSortedTrackedDeviceIndicesOfClass(vr::TrackedDeviceClass_Controller, controllerIndices, 2); + vr::TrackedDeviceIndex_t controllerIndices[2]; + auto trackedCount = + _system->GetSortedTrackedDeviceIndicesOfClass(vr::TrackedDeviceClass_Controller, controllerIndices, 2); // Find the left and right hand controllers, if they exist for (uint32_t i = 0; i < std::min(trackedCount, 2); ++i) { if (nextSimPoseData.vrPoses[i].bPoseIsValid) { @@ -614,13 +602,12 @@ bool OpenVrDisplayPlugin::beginFrameRender(uint32_t frameIndex) { const vec3& angularVelocity = nextSimPoseData.angularVelocities[deviceIndex]; auto correctedPose = openVrControllerPoseToHandPose(i == 0, mat, linearVelocity, angularVelocity); static const glm::quat HAND_TO_LASER_ROTATION = glm::rotation(Vectors::UNIT_Z, Vectors::UNIT_NEG_Y); - handPoses[i] = glm::translate(glm::mat4(), correctedPose.translation) * glm::mat4_cast(correctedPose.rotation * HAND_TO_LASER_ROTATION); + handPoses[i] = glm::translate(glm::mat4(), correctedPose.translation) * + glm::mat4_cast(correctedPose.rotation * HAND_TO_LASER_ROTATION); } } - withNonPresentThreadLock([&] { - _frameInfos[frameIndex] = _currentRenderFrameInfo; - }); + withNonPresentThreadLock([&] { _frameInfos[frameIndex] = _currentRenderFrameInfo; }); return Parent::beginFrameRender(frameIndex); } @@ -652,9 +639,7 @@ void OpenVrDisplayPlugin::compositeLayers() { if (!newComposite.textureID) { newComposite.textureID = getGLBackend()->getTextureID(newComposite.texture); } - withPresentThreadLock([&] { - _submitThread->update(newComposite); - }); + withPresentThreadLock([&] { _submitThread->update(newComposite); }); } } @@ -665,7 +650,7 @@ void OpenVrDisplayPlugin::hmdPresent() { _submitThread->waitForPresent(); } else { GLuint glTexId = getGLBackend()->getTextureID(_compositeFramebuffer->getRenderBuffer(0)); - vr::Texture_t vrTexture { (void*)(uintptr_t)glTexId, vr::TextureType_OpenGL, vr::ColorSpace_Auto }; + vr::Texture_t vrTexture{ (void*)(uintptr_t)glTexId, vr::TextureType_OpenGL, vr::ColorSpace_Auto }; vr::VRCompositor()->Submit(vr::Eye_Left, &vrTexture, &OPENVR_TEXTURE_BOUNDS_LEFT); vr::VRCompositor()->Submit(vr::Eye_Right, &vrTexture, &OPENVR_TEXTURE_BOUNDS_RIGHT); vr::VRCompositor()->PostPresentHandoff(); @@ -687,17 +672,14 @@ void OpenVrDisplayPlugin::postPreview() { _hmdActivityLevel = _system->GetTrackedDeviceActivityLevel(vr::k_unTrackedDeviceIndex_Hmd); if (!_threadedSubmit) { - vr::VRCompositor()->WaitGetPoses(nextRender.vrPoses, vr::k_unMaxTrackedDeviceCount, nextSim.vrPoses, vr::k_unMaxTrackedDeviceCount); + vr::VRCompositor()->WaitGetPoses(nextRender.vrPoses, vr::k_unMaxTrackedDeviceCount, nextSim.vrPoses, + vr::k_unMaxTrackedDeviceCount); glm::mat4 resetMat; - withPresentThreadLock([&] { - resetMat = _sensorResetMat; - }); + withPresentThreadLock([&] { resetMat = _sensorResetMat; }); nextRender.update(resetMat); nextSim.update(resetMat); - withPresentThreadLock([&] { - _nextSimPoseData = nextSim; - }); + withPresentThreadLock([&] { _nextSimPoseData = nextSim; }); _nextRenderPoseData = nextRender; } @@ -715,7 +697,7 @@ void OpenVrDisplayPlugin::updatePresentPose() { _currentPresentFrameInfo.presentPose = _nextRenderPoseData.poses[vr::k_unTrackedDeviceIndex_Hmd]; } -bool OpenVrDisplayPlugin::suppressKeyboard() { +bool OpenVrDisplayPlugin::suppressKeyboard() { if (isOpenVrKeyboardShown()) { return false; } @@ -736,10 +718,10 @@ void OpenVrDisplayPlugin::unsuppressKeyboard() { } bool OpenVrDisplayPlugin::isKeyboardVisible() { - return isOpenVrKeyboardShown(); + return isOpenVrKeyboardShown(); } -int OpenVrDisplayPlugin::getRequiredThreadCount() const { +int OpenVrDisplayPlugin::getRequiredThreadCount() const { return Parent::getRequiredThreadCount() + (_threadedSubmit ? 1 : 0); } @@ -768,4 +750,3 @@ QString OpenVrDisplayPlugin::getPreferredAudioOutDevice() const { } return device; } - diff --git a/tests-manual/gpu-textures/src/TestHelpers.cpp b/tests-manual/gpu-textures/src/TestHelpers.cpp index f952a4385f..f0fe31cec6 100644 --- a/tests-manual/gpu-textures/src/TestHelpers.cpp +++ b/tests-manual/gpu-textures/src/TestHelpers.cpp @@ -9,17 +9,6 @@ #include "TestHelpers.h" #include -gpu::ShaderPointer makeShader(const std::string & vertexShaderSrc, const std::string & fragmentShaderSrc, const gpu::Shader::BindingSet & bindings) { - auto vs = gpu::Shader::createVertex(vertexShaderSrc); - auto fs = gpu::Shader::createPixel(fragmentShaderSrc); - auto shader = gpu::Shader::createProgram(vs, fs); - if (!gpu::Shader::makeProgram(*shader, bindings)) { - printf("Could not compile shader\n"); - exit(-1); - } - return shader; -} - QString projectRootDir() { static QString projectRootPath = QFileInfo(QFileInfo(__FILE__).absolutePath() + "/..").absoluteFilePath(); return projectRootPath; diff --git a/tests-manual/gpu-textures/src/TestHelpers.h b/tests-manual/gpu-textures/src/TestHelpers.h index 17730c3642..e752df7bf7 100644 --- a/tests-manual/gpu-textures/src/TestHelpers.h +++ b/tests-manual/gpu-textures/src/TestHelpers.h @@ -36,5 +36,4 @@ public: }; uint32_t toCompactColor(const glm::vec4& color); -gpu::ShaderPointer makeShader(const std::string & vertexShaderSrc, const std::string & fragmentShaderSrc, const gpu::Shader::BindingSet & bindings); QString projectRootDir(); diff --git a/tests-manual/gpu-textures/src/TestTextures.cpp b/tests-manual/gpu-textures/src/TestTextures.cpp index 7aedb506da..701e60fab8 100644 --- a/tests-manual/gpu-textures/src/TestTextures.cpp +++ b/tests-manual/gpu-textures/src/TestTextures.cpp @@ -81,11 +81,9 @@ TexturesTest::TexturesTest() { connect(&stats, &TextureTestStats::prevTexture, this, &TexturesTest::onPrevTexture); connect(&stats, &TextureTestStats::maxTextureMemory, this, &TexturesTest::onMaxTextureMemory); { - auto VS = gpu::Shader::createVertex(vertexShaderSource); - auto PS = gpu::Shader::createPixel(fragmentShaderSource); + auto VS = gpu::Shader::createVertex({ vertexShaderSource, {} }); + auto PS = gpu::Shader::createPixel({ fragmentShaderSource, {} }); auto program = gpu::Shader::createProgram(VS, PS); - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); // If the pipeline did not exist, make it auto state = std::make_shared(); state->setCullMode(gpu::State::CULL_NONE); diff --git a/tests-manual/gpu/src/TestHelpers.cpp b/tests-manual/gpu/src/TestHelpers.cpp index 75586da904..f46e997567 100644 --- a/tests-manual/gpu/src/TestHelpers.cpp +++ b/tests-manual/gpu/src/TestHelpers.cpp @@ -7,14 +7,3 @@ // #include "TestHelpers.h" - -gpu::ShaderPointer makeShader(const std::string & vertexShaderSrc, const std::string & fragmentShaderSrc, const gpu::Shader::BindingSet & bindings) { - auto vs = gpu::Shader::createVertex(vertexShaderSrc); - auto fs = gpu::Shader::createPixel(fragmentShaderSrc); - auto shader = gpu::Shader::createProgram(vs, fs); - if (!gpu::Shader::makeProgram(*shader, bindings)) { - printf("Could not compile shader\n"); - exit(-1); - } - return shader; -} diff --git a/tests-manual/gpu/src/TestHelpers.h b/tests-manual/gpu/src/TestHelpers.h index fd8989f628..4f8137e641 100644 --- a/tests-manual/gpu/src/TestHelpers.h +++ b/tests-manual/gpu/src/TestHelpers.h @@ -29,5 +29,4 @@ public: }; uint32_t toCompactColor(const glm::vec4& color); -gpu::ShaderPointer makeShader(const std::string & vertexShaderSrc, const std::string & fragmentShaderSrc, const gpu::Shader::BindingSet & bindings); diff --git a/tests-manual/render-perf/CMakeLists.txt b/tests-manual/render-perf/CMakeLists.txt index 93ff325a98..0cc3f87bd9 100644 --- a/tests-manual/render-perf/CMakeLists.txt +++ b/tests-manual/render-perf/CMakeLists.txt @@ -14,7 +14,8 @@ set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") # link in the shared libraries link_hifi_libraries( shared task workload networking animation - ktx image octree gl gpu ${PLATFORM_GL_BACKEND} + ktx image octree + shaders gl gpu ${PLATFORM_GL_BACKEND} render render-utils graphics fbx model-networking graphics-scripting entities entities-renderer audio avatars script-engine diff --git a/tests-manual/render-perf/src/main.cpp b/tests-manual/render-perf/src/main.cpp index 7126b333f6..9238e0dc1c 100644 --- a/tests-manual/render-perf/src/main.cpp +++ b/tests-manual/render-perf/src/main.cpp @@ -42,13 +42,13 @@ #include #include #include +#include #include #include #include #include -#include #include @@ -120,18 +120,26 @@ public: class QWindowCamera : public SimpleCamera { Key forKey(int key) { switch (key) { - case Qt::Key_W: return FORWARD; - case Qt::Key_S: return BACK; - case Qt::Key_A: return LEFT; - case Qt::Key_D: return RIGHT; - case Qt::Key_E: return UP; - case Qt::Key_C: return DOWN; - default: break; + case Qt::Key_W: + return FORWARD; + case Qt::Key_S: + return BACK; + case Qt::Key_A: + return LEFT; + case Qt::Key_D: + return RIGHT; + case Qt::Key_E: + return UP; + case Qt::Key_C: + return DOWN; + default: + break; } return INVALID; } vec2 _lastMouse; + public: void onKeyPress(QKeyEvent* event) { Key k = forKey(event->key()); @@ -168,7 +176,7 @@ public: }; static QString toHumanSize(size_t size, size_t maxUnit = std::numeric_limits::max()) { - static const std::vector SUFFIXES { { "B", "KB", "MB", "GB", "TB", "PB" } }; + static const std::vector SUFFIXES{ { "B", "KB", "MB", "GB", "TB", "PB" } }; const size_t maxIndex = std::min(maxUnit, SUFFIXES.size() - 1); size_t suffixIndex = 0; @@ -180,40 +188,28 @@ static QString toHumanSize(size_t size, size_t maxUnit = std::numeric_limits _presentCount; QElapsedTimer _elapsed; - std::atomic _fps { 1 }; + std::atomic _fps{ 1 }; RateCounter<200> _fpsCounter; std::mutex _mutex; std::shared_ptr _backend; std::vector _frameTimes; - size_t _frameIndex { 0 }; + size_t _frameIndex{ 0 }; std::mutex _frameLock; std::queue _pendingFrames; gpu::FramePointer _activeFrame; QSize _size; - static const size_t FRAME_TIME_BUFFER_SIZE { 8192 }; + static const size_t FRAME_TIME_BUFFER_SIZE{ 8192 }; void submitFrame(const gpu::FramePointer& frame) { std::unique_lock lock(_frameLock); @@ -246,18 +242,12 @@ public: RENDER_THREAD = QThread::currentThread(); // Wait until the context has been moved to this thread - { - std::unique_lock lock(_mutex); - } + { std::unique_lock lock(_mutex); } _context.makeCurrent(); _frameTimes.resize(FRAME_TIME_BUFFER_SIZE, 0); { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = gpu::Shader::createPixel(std::string(SRGB_TO_LINEAR_FRAG)); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::display_plugins::program::SrgbToLinear); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); _presentPipeline = gpu::Pipeline::create(program, state); } @@ -287,7 +277,6 @@ public: _gpuContext->executeFrame(frame); { - auto geometryCache = DependencyManager::get(); gpu::Batch presentBatch; presentBatch.setViewportTransform({ 0, 0, _size.width(), _size.height() }); @@ -304,7 +293,7 @@ public: _context.makeCurrent(); _context.swapBuffers(); _fpsCounter.increment(); - static size_t _frameCount { 0 }; + static size_t _frameCount{ 0 }; ++_frameCount; if (_elapsed.elapsed() >= 500) { _fps = _fpsCounter.rate(); @@ -374,16 +363,13 @@ public: class TestActionFactory : public EntityDynamicFactoryInterface { public: virtual EntityDynamicPointer factory(EntityDynamicType type, - const QUuid& id, - EntityItemPointer ownerEntity, - QVariantMap arguments) override { + const QUuid& id, + EntityItemPointer ownerEntity, + QVariantMap arguments) override { return EntityDynamicPointer(); } - - virtual EntityDynamicPointer factoryBA(EntityItemPointer ownerEntity, QByteArray data) override { - return nullptr; - } + virtual EntityDynamicPointer factoryBA(EntityItemPointer ownerEntity, QByteArray data) override { return nullptr; } }; // Background Render Data & rendering functions @@ -391,96 +377,77 @@ class BackgroundRenderData { public: typedef render::Payload Payload; typedef Payload::DataPointer Pointer; - static render::ItemID _item; // unique WorldBoxRenderData + static render::ItemID _item; // unique WorldBoxRenderData }; render::ItemID BackgroundRenderData::_item = 0; QSharedPointer logger; namespace render { - template <> const ItemKey payloadGetKey(const BackgroundRenderData::Pointer& stuff) { - return ItemKey::Builder::background(); - } - - template <> const Item::Bound payloadGetBound(const BackgroundRenderData::Pointer& stuff) { - return Item::Bound(); - } - - template <> void payloadRender(const BackgroundRenderData::Pointer& background, RenderArgs* args) { - Q_ASSERT(args->_batch); - gpu::Batch& batch = *args->_batch; - - // Background rendering decision - auto skyStage = DependencyManager::get()->getSkyStage(); - auto backgroundMode = skyStage->getBackgroundMode(); - - switch (backgroundMode) { - case graphics::SunSkyStage::SKY_BOX: { - auto skybox = skyStage->getSkybox(); - if (skybox) { - PerformanceTimer perfTimer("skybox"); - skybox->render(batch, args->getViewFrustum()); - break; - } - } - default: - // this line intentionally left blank - break; - } - } +template <> +const ItemKey payloadGetKey(const BackgroundRenderData::Pointer& stuff) { + return ItemKey::Builder::background(); } -OffscreenGLCanvas* _chromiumShareContext{ nullptr }; -Q_GUI_EXPORT void qt_gl_set_global_share_context(QOpenGLContext *context); +template <> +const Item::Bound payloadGetBound(const BackgroundRenderData::Pointer& stuff) { + return Item::Bound(); +} +template <> +void payloadRender(const BackgroundRenderData::Pointer& background, RenderArgs* args) { + Q_ASSERT(args->_batch); + gpu::Batch& batch = *args->_batch; + + // Background rendering decision + auto skyStage = DependencyManager::get()->getSkyStage(); + auto backgroundMode = skyStage->getBackgroundMode(); + + switch (backgroundMode) { + case graphics::SunSkyStage::SKY_BOX: { + auto skybox = skyStage->getSkybox(); + if (skybox) { + PerformanceTimer perfTimer("skybox"); + skybox->render(batch, args->getViewFrustum()); + break; + } + } + default: + // this line intentionally left blank + break; + } +} +} // namespace render + +OffscreenGLCanvas* _chromiumShareContext{ nullptr }; +Q_GUI_EXPORT void qt_gl_set_global_share_context(QOpenGLContext* context); // Create a simple OpenGL window that renders text in various ways class QTestWindow : public QWindow, public AbstractViewStateInterface { - protected: - void copyCurrentViewFrustum(ViewFrustum& viewOut) const override { - viewOut = _viewFrustum; - } + void copyCurrentViewFrustum(ViewFrustum& viewOut) const override { viewOut = _viewFrustum; } - const ConicalViewFrustums& getConicalViews() const override { - return _view; - } + const ConicalViewFrustums& getConicalViews() const override { return _view; } - QThread* getMainThread() override { - return QThread::currentThread(); - } + QThread* getMainThread() override { return QThread::currentThread(); } - PickRay computePickRay(float x, float y) const override { - return PickRay(); - } + PickRay computePickRay(float x, float y) const override { return PickRay(); } - glm::vec3 getAvatarPosition() const override { - return vec3(); - } + glm::vec3 getAvatarPosition() const override { return vec3(); } void postLambdaEvent(const std::function& f) override {} void sendLambdaEvent(const std::function& f) override {} - qreal getDevicePixelRatio() override { - return 1.0f; - } + qreal getDevicePixelRatio() override { return 1.0f; } - render::ScenePointer getMain3DScene() override { - return _main3DScene; - } + render::ScenePointer getMain3DScene() override { return _main3DScene; } - render::EnginePointer getRenderEngine() override { - return _renderEngine; - } + render::EnginePointer getRenderEngine() override { return _renderEngine; } std::map> _postUpdateLambdas; - void pushPostUpdateLambda(void* key, const std::function& func) override { - _postUpdateLambdas[key] = func; - } + void pushPostUpdateLambda(void* key, const std::function& func) override { _postUpdateLambdas[key] = func; } - bool isHMDMode() const override { - return false; - } + bool isHMDMode() const override { return false; } public: //"/-17.2049,-8.08629,-19.4153/0,0.881994,0,-0.47126" @@ -521,7 +488,7 @@ public: nodeList->setPermissions(permissions); { - SimpleEntitySimulationPointer simpleSimulation { new SimpleEntitySimulation() }; + SimpleEntitySimulationPointer simpleSimulation{ new SimpleEntitySimulation() }; simpleSimulation->setEntityTree(_octree->getTree()); _octree->getTree()->setSimulation(simpleSimulation); _entitySimulation = simpleSimulation; @@ -556,7 +523,6 @@ public: _initContext.makeCurrent(); } - // FIXME use a wait condition QThread::msleep(1000); _renderThread.submitFrame(gpu::FramePointer()); @@ -575,16 +541,14 @@ public: restorePosition(); QTimer* timer = new QTimer(this); - timer->setInterval(0); // Qt::CoarseTimer acceptable - connect(timer, &QTimer::timeout, this, [this] { - draw(); - }); + timer->setInterval(0); // Qt::CoarseTimer acceptable + connect(timer, &QTimer::timeout, this, [this] { draw(); }); timer->start(); _ready = true; } virtual ~QTestWindow() { - getEntities()->shutdown(); // tell the entities system we're shutting down, so it will stop running scripts + getEntities()->shutdown(); // tell the entities system we're shutting down, so it will stop running scripts _renderEngine.reset(); _main3DScene.reset(); EntityTreePointer tree = getEntities()->getTree(); @@ -611,8 +575,7 @@ public: } protected: - - bool eventFilter(QObject *obj, QEvent *event) override { + bool eventFilter(QObject* obj, QEvent* event) override { if (event->type() == QEvent::Close) { _renderThread.terminate(); } @@ -668,22 +631,16 @@ protected: _camera.onKeyPress(event); } - void keyReleaseEvent(QKeyEvent* event) override { - _camera.onKeyRelease(event); - } + void keyReleaseEvent(QKeyEvent* event) override { _camera.onKeyRelease(event); } - void mouseMoveEvent(QMouseEvent* event) override { - _camera.onMouseMove(event); - } + void mouseMoveEvent(QMouseEvent* event) override { _camera.onMouseMove(event); } - void resizeEvent(QResizeEvent* ev) override { - resizeWindow(ev->size()); - } + void resizeEvent(QResizeEvent* ev) override { resizeWindow(ev->size()); } private: - static bool cull(const RenderArgs* args, const AABox& bounds) { - float renderAccuracy = calculateRenderAccuracy(args->getViewFrustum().getPosition(), bounds, args->_sizeScale, args->_boundaryLevelAdjust); + float renderAccuracy = + calculateRenderAccuracy(args->getViewFrustum().getPosition(), bounds, args->_sizeScale, args->_boundaryLevelAdjust); return (renderAccuracy > 0.0f); } @@ -702,10 +659,8 @@ private: update(); _initContext.makeCurrent(); - RenderArgs renderArgs(_renderThread._gpuContext, DEFAULT_OCTREE_SIZE_SCALE, - 0, RenderArgs::DEFAULT_RENDER_MODE, - RenderArgs::MONO, RenderArgs::RENDER_DEBUG_NONE); - + RenderArgs renderArgs(_renderThread._gpuContext, DEFAULT_OCTREE_SIZE_SCALE, 0, RenderArgs::DEFAULT_RENDER_MODE, + RenderArgs::MONO, RenderArgs::RENDER_DEBUG_NONE); QSize windowSize = _size; if (_renderMode == NORMAL) { @@ -719,16 +674,16 @@ private: eyeProjections[i] = _viewFrustum.getProjection(); } } else if (_renderMode == HMD) { - eyeOffsets[0][3] = vec4 { -0.0327499993, 0.0, 0.0149999997, 1.0 }; - eyeOffsets[1][3] = vec4 { 0.0327499993, 0.0, 0.0149999997, 1.0 }; - eyeProjections[0][0] = vec4 { 0.759056330, 0.000000000, 0.000000000, 0.000000000 }; - eyeProjections[0][1] = vec4 { 0.000000000, 0.682773232, 0.000000000, 0.000000000 }; - eyeProjections[0][2] = vec4 { -0.0580431037, -0.00619550655, -1.00000489, -1.00000000 }; - eyeProjections[0][3] = vec4 { 0.000000000, 0.000000000, -0.0800003856, 0.000000000 }; - eyeProjections[1][0] = vec4 { 0.752847493, 0.000000000, 0.000000000, 0.000000000 }; - eyeProjections[1][1] = vec4 { 0.000000000, 0.678060353, 0.000000000, 0.000000000 }; - eyeProjections[1][2] = vec4 { 0.0578232110, -0.00669418881, -1.00000489, -1.000000000 }; - eyeProjections[1][3] = vec4 { 0.000000000, 0.000000000, -0.0800003856, 0.000000000 }; + eyeOffsets[0][3] = vec4{ -0.0327499993, 0.0, 0.0149999997, 1.0 }; + eyeOffsets[1][3] = vec4{ 0.0327499993, 0.0, 0.0149999997, 1.0 }; + eyeProjections[0][0] = vec4{ 0.759056330, 0.000000000, 0.000000000, 0.000000000 }; + eyeProjections[0][1] = vec4{ 0.000000000, 0.682773232, 0.000000000, 0.000000000 }; + eyeProjections[0][2] = vec4{ -0.0580431037, -0.00619550655, -1.00000489, -1.00000000 }; + eyeProjections[0][3] = vec4{ 0.000000000, 0.000000000, -0.0800003856, 0.000000000 }; + eyeProjections[1][0] = vec4{ 0.752847493, 0.000000000, 0.000000000, 0.000000000 }; + eyeProjections[1][1] = vec4{ 0.000000000, 0.678060353, 0.000000000, 0.000000000 }; + eyeProjections[1][2] = vec4{ 0.0578232110, -0.00669418881, -1.00000489, -1.000000000 }; + eyeProjections[1][3] = vec4{ 0.000000000, 0.000000000, -0.0800003856, 0.000000000 }; windowSize = { 2048, 2048 }; } renderArgs._context->setStereoProjections(eyeProjections); @@ -774,10 +729,11 @@ private: void updateText() { QString title = QString("FPS %1 Culling %2 TextureMemory GPU %3 CPU %4 Max GPU %5") - .arg(_fps).arg(_cullingEnabled) - .arg(toHumanSize(gpu::Context::getTextureGPUMemSize(), 2)) - .arg(toHumanSize(gpu::Texture::getTextureCPUMemSize(), 2)) - .arg(toHumanSize(gpu::Texture::getAllowedGPUMemoryUsage(), 2)); + .arg(_fps) + .arg(_cullingEnabled) + .arg(toHumanSize(gpu::Context::getTextureGPUMemSize(), 2)) + .arg(toHumanSize(gpu::Texture::getTextureCPUMemSize(), 2)) + .arg(toHumanSize(gpu::Texture::getAllowedGPUMemoryUsage(), 2)); setTitle(title); #if 0 { @@ -818,34 +774,34 @@ private: if (commandParams.length() < 2) { qDebug() << "No wait time specified"; return; - } + } int seconds = commandParams[1].toInt(); _nextCommandTime = usecTimestampNow() + seconds * USECS_PER_SECOND; - } else if (verb == "load") { - if (commandParams.length() < 2) { - qDebug() << "No load file specified"; - return; - } - QString file = commandParams[1]; - if (QFileInfo(file).isRelative()) { - file = _commandPath + "/" + file; - } - if (!QFileInfo(file).exists()) { - qDebug() << "Cannot find scene file " + file; - return; - } + } else if (verb == "load") { + if (commandParams.length() < 2) { + qDebug() << "No load file specified"; + return; + } + QString file = commandParams[1]; + if (QFileInfo(file).isRelative()) { + file = _commandPath + "/" + file; + } + if (!QFileInfo(file).exists()) { + qDebug() << "Cannot find scene file " + file; + return; + } - importScene(file); - } else if (verb == "go") { - if (commandParams.length() < 2) { - qDebug() << "No destination specified for go command"; - return; + importScene(file); + } else if (verb == "go") { + if (commandParams.length() < 2) { + qDebug() << "No destination specified for go command"; + return; + } + parsePath(commandParams[1]); + } else { + qDebug() << "Unknown command " << command; } - parsePath(commandParams[1]); - } else { - qDebug() << "Unknown command " << command; } -} void runNextCommand(quint64 now) { if (_commands.empty()) { @@ -918,15 +874,12 @@ private: _main3DScene->processTransactionQueue(); } - } void render(RenderArgs* renderArgs) { auto& gpuContext = renderArgs->_context; gpuContext->beginFrame(); - gpu::doInBatch("QTestWindow::render", gpuContext, [&](gpu::Batch& batch) { - batch.resetStages(); - }); + gpu::doInBatch("QTestWindow::render", gpuContext, [&](gpu::Batch& batch) { batch.resetStages(); }); PROFILE_RANGE(render, __FUNCTION__); PerformanceTimer perfTimer("draw"); // The pending changes collecting the changes here @@ -953,8 +906,6 @@ private: if (!_renderThread.isThreaded()) { _renderThread.process(); } - - } void resizeWindow(const QSize& size) { @@ -972,31 +923,27 @@ private: static const QString FLOAT_REGEX_STRING = "([-+]?[0-9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?)"; static const QString SPACED_COMMA_REGEX_STRING = "\\s*,\\s*"; static const QString POSITION_REGEX_STRING = QString("\\/") + FLOAT_REGEX_STRING + SPACED_COMMA_REGEX_STRING + - FLOAT_REGEX_STRING + SPACED_COMMA_REGEX_STRING + FLOAT_REGEX_STRING + "\\s*(?:$|\\/)"; + FLOAT_REGEX_STRING + SPACED_COMMA_REGEX_STRING + FLOAT_REGEX_STRING + + "\\s*(?:$|\\/)"; static const QString QUAT_REGEX_STRING = QString("\\/") + FLOAT_REGEX_STRING + SPACED_COMMA_REGEX_STRING + - FLOAT_REGEX_STRING + SPACED_COMMA_REGEX_STRING + FLOAT_REGEX_STRING + SPACED_COMMA_REGEX_STRING + - FLOAT_REGEX_STRING + "\\s*$"; + FLOAT_REGEX_STRING + SPACED_COMMA_REGEX_STRING + FLOAT_REGEX_STRING + + SPACED_COMMA_REGEX_STRING + FLOAT_REGEX_STRING + "\\s*$"; static QRegExp orientationRegex(QUAT_REGEX_STRING); static QRegExp positionRegex(POSITION_REGEX_STRING); if (positionRegex.indexIn(viewpointString) != -1) { // we have at least a position, so emit our signal to say we need to change position - glm::vec3 newPosition(positionRegex.cap(1).toFloat(), - positionRegex.cap(2).toFloat(), - positionRegex.cap(3).toFloat()); + glm::vec3 newPosition(positionRegex.cap(1).toFloat(), positionRegex.cap(2).toFloat(), + positionRegex.cap(3).toFloat()); _camera.setPosition(newPosition); if (!glm::any(glm::isnan(newPosition))) { // we may also have an orientation - if (viewpointString[positionRegex.matchedLength() - 1] == QChar('/') - && orientationRegex.indexIn(viewpointString, positionRegex.matchedLength() - 1) != -1) { - - glm::vec4 v = glm::vec4( - orientationRegex.cap(1).toFloat(), - orientationRegex.cap(2).toFloat(), - orientationRegex.cap(3).toFloat(), - orientationRegex.cap(4).toFloat()); + if (viewpointString[positionRegex.matchedLength() - 1] == QChar('/') && + orientationRegex.indexIn(viewpointString, positionRegex.matchedLength() - 1) != -1) { + glm::vec4 v = glm::vec4(orientationRegex.cap(1).toFloat(), orientationRegex.cap(2).toFloat(), + orientationRegex.cap(3).toFloat(), orientationRegex.cap(4).toFloat()); if (!glm::any(glm::isnan(v))) { _camera.setRotation(glm::quat(v.w, v.x, v.y, v.z)); } @@ -1056,9 +1003,7 @@ private: // /-17.2049,-8.08629,-19.4153/0,-0.48551,0,0.874231 glm::quat q = _camera.getOrientation(); glm::vec3 v = _camera.position; - QString viewpoint = QString("/%1,%2,%3/%4,%5,%6,%7"). - arg(v.x).arg(v.y).arg(v.z). - arg(q.x).arg(q.y).arg(q.z).arg(q.w); + QString viewpoint = QString("/%1,%2,%3/%4,%5,%6,%7").arg(v.x).arg(v.y).arg(v.z).arg(q.x).arg(q.y).arg(q.z).arg(q.w); _settings.setValue(LAST_LOCATION_KEY, viewpoint); _camera.setRotation(q); } @@ -1076,30 +1021,26 @@ private: _camera.setPosition(vec3()); } - void toggleCulling() { - _cullingEnabled = !_cullingEnabled; - } + void toggleCulling() { _cullingEnabled = !_cullingEnabled; } void cycleMode() { static auto defaultProjection = SimpleCamera().matrices.perspective; _renderMode = (RenderMode)((_renderMode + 1) % RENDER_MODE_COUNT); if (_renderMode == HMD) { - _camera.matrices.perspective[0] = vec4 { 0.759056330, 0.000000000, 0.000000000, 0.000000000 }; - _camera.matrices.perspective[1] = vec4 { 0.000000000, 0.682773232, 0.000000000, 0.000000000 }; - _camera.matrices.perspective[2] = vec4 { -0.0580431037, -0.00619550655, -1.00000489, -1.00000000 }; - _camera.matrices.perspective[3] = vec4 { 0.000000000, 0.000000000, -0.0800003856, 0.000000000 }; + _camera.matrices.perspective[0] = vec4{ 0.759056330, 0.000000000, 0.000000000, 0.000000000 }; + _camera.matrices.perspective[1] = vec4{ 0.000000000, 0.682773232, 0.000000000, 0.000000000 }; + _camera.matrices.perspective[2] = vec4{ -0.0580431037, -0.00619550655, -1.00000489, -1.00000000 }; + _camera.matrices.perspective[3] = vec4{ 0.000000000, 0.000000000, -0.0800003856, 0.000000000 }; } else { _camera.matrices.perspective = defaultProjection; _camera.setAspectRatio((float)_size.width() / (float)_size.height()); } } - QSharedPointer getEntities() { - return _octree; - } + QSharedPointer getEntities() { return _octree; } private: - render::CullFunctor _cullFunctor { [&](const RenderArgs* args, const AABox& bounds)->bool { + render::CullFunctor _cullFunctor{ [&](const RenderArgs* args, const AABox& bounds) -> bool { if (_cullingEnabled) { return cull(args, bounds); } else { @@ -1107,8 +1048,8 @@ private: } } }; - render::EnginePointer _renderEngine { new render::RenderEngine() }; - render::ScenePointer _main3DScene { new render::Scene(glm::vec3(-0.5f * (float)TREE_SCALE), (float)TREE_SCALE) }; + render::EnginePointer _renderEngine{ new render::RenderEngine() }; + render::ScenePointer _main3DScene{ new render::Scene(glm::vec3(-0.5f * (float)TREE_SCALE), (float)TREE_SCALE) }; QSize _size; QSettings _settings; @@ -1116,39 +1057,39 @@ private: gl::OffscreenContext _initContext; RenderThread _renderThread; QWindowCamera _camera; - ViewFrustum _viewFrustum; // current state of view frustum, perspective, orientation, etc. + ViewFrustum _viewFrustum; // current state of view frustum, perspective, orientation, etc. graphics::SunSkyStage _sunSkyStage; - graphics::LightPointer _globalLight { std::make_shared() }; - bool _ready { false }; + graphics::LightPointer _globalLight{ std::make_shared() }; + bool _ready{ false }; EntitySimulationPointer _entitySimulation; ConicalViewFrustums _view; QStringList _commands; QString _commandPath; - int _commandLoops { 0 }; - int _commandIndex { -1 }; - uint64_t _nextCommandTime { 0 }; + int _commandLoops{ 0 }; + int _commandIndex{ -1 }; + uint64_t _nextCommandTime{ 0 }; //TextOverlay* _textOverlay; static bool _cullingEnabled; - enum RenderMode { + enum RenderMode + { NORMAL = 0, STEREO, HMD, RENDER_MODE_COUNT }; - RenderMode _renderMode { NORMAL }; + RenderMode _renderMode{ NORMAL }; QSharedPointer _octree; }; bool QTestWindow::_cullingEnabled = true; -const char * LOG_FILTER_RULES = R"V0G0N( +const char* LOG_FILTER_RULES = R"V0G0N( hifi.gpu=true )V0G0N"; - int main(int argc, char** argv) { setupHifiApplication("RenderPerf"); @@ -1164,4 +1105,3 @@ int main(int argc, char** argv) { } #include "main.moc" - diff --git a/tests-manual/render-texture-load/CMakeLists.txt b/tests-manual/render-texture-load/CMakeLists.txt index b3e49d830b..36526ecd42 100644 --- a/tests-manual/render-texture-load/CMakeLists.txt +++ b/tests-manual/render-texture-load/CMakeLists.txt @@ -14,7 +14,7 @@ set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") # link in the shared libraries link_hifi_libraries( shared task networking octree - gl gpu render ktx image animation + shaders gl gpu render ktx image animation graphics fbx model-networking render-utils entities entities-renderer audio avatars diff --git a/tests-manual/render-texture-load/src/main.cpp b/tests-manual/render-texture-load/src/main.cpp index ce666065e3..b6dca48979 100644 --- a/tests-manual/render-texture-load/src/main.cpp +++ b/tests-manual/render-texture-load/src/main.cpp @@ -44,11 +44,11 @@ #include #include #include +#include #include #include #include -#include #include #include @@ -154,11 +154,7 @@ public: //wglSwapIntervalEXT(0); _frameTimes.resize(FRAME_TIME_BUFFER_SIZE, 0); { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = gpu::StandardShaderLib::getDrawTexturePS(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::gpu::program::drawTransformUnitQuadTextureOpaque); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); _presentPipeline = gpu::Pipeline::create(program, state); } @@ -345,10 +341,7 @@ public: _renderThread.submitFrame(gpu::FramePointer()); _initContext.makeCurrent(); { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = gpu::StandardShaderLib::getDrawTexturePS(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::makeProgram(*program); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::gpu::program::drawTransformUnitQuadTextureOpaque); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(gpu::State::DepthTest(false)); state->setScissorEnable(true); diff --git a/tests-manual/render-utils/src/main.cpp b/tests-manual/render-utils/src/main.cpp index e30a80f3d9..b5bc5daebb 100644 --- a/tests-manual/render-utils/src/main.cpp +++ b/tests-manual/render-utils/src/main.cpp @@ -153,13 +153,6 @@ protected: //static const wchar_t* EXAMPLE_TEXT = L"Hello"; //static const wchar_t* EXAMPLE_TEXT = L"\xC1y Hello 1.0\ny\xC1 line 2\n\xC1y"; -void testShaderBuild(const char* vs_src, const char * fs_src) { - auto vs = gpu::Shader::createVertex(std::string(vs_src)); - auto fs = gpu::Shader::createPixel(std::string(fs_src)); - auto pr = gpu::Shader::createProgram(vs, fs); - gpu::Shader::makeProgram(*pr); -} - void QTestWindow::draw() { if (!isVisible()) { return; diff --git a/tests-manual/shaders/CMakeLists.txt b/tests-manual/shaders/CMakeLists.txt deleted file mode 100644 index 44394db6a0..0000000000 --- a/tests-manual/shaders/CMakeLists.txt +++ /dev/null @@ -1,27 +0,0 @@ - -set(TARGET_NAME shaders-test) - -# This is not a testcase -- just set it up as a regular hifi project -setup_hifi_project(Quick Gui) -set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") - -setup_memory_debugger() - -# link in the shared libraries -link_hifi_libraries( - shared octree gl gpu graphics render fbx networking entities - script-engine physics - render-utils entities-renderer - ${PLATFORM_GL_BACKEND} -) - -include_directories("${PROJECT_BINARY_DIR}/../../libraries/gpu/") -include_directories("${PROJECT_BINARY_DIR}/../../libraries/render-utils/") -include_directories("${PROJECT_BINARY_DIR}/../../libraries/entities-renderer/") -include_directories("${PROJECT_BINARY_DIR}/../../libraries/graphics/") - -if (WIN32) - add_dependency_external_projects(wasapi) -endif () - -package_libraries_for_deployment() diff --git a/tests-manual/shaders/src/main.cpp b/tests-manual/shaders/src/main.cpp deleted file mode 100644 index 6e117b33cb..0000000000 --- a/tests-manual/shaders/src/main.cpp +++ /dev/null @@ -1,222 +0,0 @@ -// -// Copyright 2014 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include - -// Create a simple OpenGL window that renders text in various ways -class QTestWindow : public QWindow { - Q_OBJECT - QOpenGLContextWrapper _context; - -protected: - void renderText(); - -public: - QTestWindow() { - setSurfaceType(QSurface::OpenGLSurface); - QSurfaceFormat format = getDefaultOpenGLSurfaceFormat(); - setFormat(format); - _context.setFormat(format); - _context.create(); - - show(); - makeCurrent(); - gl::initModuleGl(); - gpu::Context::init(); - makeCurrent(); - resize(QSize(800, 600)); - } - - virtual ~QTestWindow() { - } - - void draw(); - void makeCurrent() { - _context.makeCurrent(this); - } -}; - - - -const std::string VERTEX_SHADER_DEFINES{ R"GLSL( -#version 410 core -#define GPU_VERTEX_SHADER -#define GPU_TRANSFORM_IS_STEREO -#define GPU_TRANSFORM_STEREO_CAMERA -#define GPU_TRANSFORM_STEREO_CAMERA_INSTANCED -#define GPU_TRANSFORM_STEREO_SPLIT_SCREEN -)GLSL" }; - -const std::string PIXEL_SHADER_DEFINES{ R"GLSL( -#version 410 core -#define GPU_PIXEL_SHADER -#define GPU_TRANSFORM_IS_STEREO -#define GPU_TRANSFORM_STEREO_CAMERA -#define GPU_TRANSFORM_STEREO_CAMERA_INSTANCED -#define GPU_TRANSFORM_STEREO_SPLIT_SCREEN -)GLSL" }; - -void testShaderBuild(const std::string& vs_src, const std::string& fs_src) { - std::string error; - GLuint vs, fs; - if (!gl::compileShader(GL_VERTEX_SHADER, VERTEX_SHADER_DEFINES + vs_src, vs, error) || - !gl::compileShader(GL_FRAGMENT_SHADER, PIXEL_SHADER_DEFINES + fs_src, fs, error)) { - throw std::runtime_error("Failed to compile shader"); - } - gl::CachedShader binary; - auto pr = gl::compileProgram({ vs, fs }, error, binary); - if (!pr) { - throw std::runtime_error("Failed to link shader"); - } -} - -void QTestWindow::draw() { - if (!isVisible()) { - return; - } - - makeCurrent(); - glClearColor(0.2f, 0.2f, 0.2f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - static std::once_flag once; - std::call_once(once, [&]{ - testShaderBuild(sdf_text3D_vert::getSource(), sdf_text3D_frag::getSource()); - - testShaderBuild(DrawTransformUnitQuad_vert::getSource(), DrawTexture_frag::getSource()); - testShaderBuild(DrawTexcoordRectTransformUnitQuad_vert::getSource(), DrawTexture_frag::getSource()); - testShaderBuild(DrawViewportQuadTransformTexcoord_vert::getSource(), DrawTexture_frag::getSource()); - testShaderBuild(DrawTransformUnitQuad_vert::getSource(), DrawTextureOpaque_frag::getSource()); - testShaderBuild(DrawTransformUnitQuad_vert::getSource(), DrawColoredTexture_frag::getSource()); - - testShaderBuild(skybox_vert::getSource(), skybox_frag::getSource()); - testShaderBuild(simple_vert::getSource(), simple_frag::getSource()); - testShaderBuild(simple_vert::getSource(), simple_textured_frag::getSource()); - testShaderBuild(simple_vert::getSource(), simple_textured_unlit_frag::getSource()); - testShaderBuild(deferred_light_vert::getSource(), directional_ambient_light_frag::getSource()); - testShaderBuild(deferred_light_vert::getSource(), directional_skybox_light_frag::getSource()); - testShaderBuild(standardTransformPNTC_vert::getSource(), standardDrawTexture_frag::getSource()); - testShaderBuild(standardTransformPNTC_vert::getSource(), DrawTextureOpaque_frag::getSource()); - - testShaderBuild(model_vert::getSource(), model_frag::getSource()); - testShaderBuild(model_normal_map_vert::getSource(), model_normal_map_frag::getSource()); - testShaderBuild(model_vert::getSource(), model_translucent_frag::getSource()); - testShaderBuild(model_normal_map_vert::getSource(), model_translucent_frag::getSource()); - testShaderBuild(model_lightmap_vert::getSource(), model_lightmap_frag::getSource()); - testShaderBuild(model_lightmap_normal_map_vert::getSource(), model_lightmap_normal_map_frag::getSource()); - - testShaderBuild(skin_model_vert::getSource(), model_frag::getSource()); - testShaderBuild(skin_model_normal_map_vert::getSource(), model_normal_map_frag::getSource()); - testShaderBuild(skin_model_vert::getSource(), model_translucent_frag::getSource()); - testShaderBuild(skin_model_normal_map_vert::getSource(), model_translucent_frag::getSource()); - - testShaderBuild(model_shadow_vert::getSource(), model_shadow_frag::getSource()); - testShaderBuild(textured_particle_vert::getSource(), textured_particle_frag::getSource()); -/* FIXME: Bring back the ssao shader tests - testShaderBuild(gaussian_blur_vert::getSource()ical_vert::getSource(), gaussian_blur_frag::getSource()); - testShaderBuild(gaussian_blur_horizontal_vert::getSource(), gaussian_blur_frag::getSource()); - testShaderBuild(ambient_occlusion_vert::getSource(), ambient_occlusion_frag::getSource()); - testShaderBuild(ambient_occlusion_vert::getSource(), occlusion_blend_frag::getSource()); -*/ - - testShaderBuild(paintStroke_vert::getSource(),paintStroke_frag::getSource()); - testShaderBuild(polyvox_vert::getSource(), polyvox_frag::getSource()); - - }); - _context.swapBuffers(this); -} - -const char * LOG_FILTER_RULES = R"V0G0N( -hifi.gpu=true -)V0G0N"; - -int main(int argc, char** argv) { - setupHifiApplication("Shaders Test"); - - QGuiApplication app(argc, argv); - QLoggingCategory::setFilterRules(LOG_FILTER_RULES); - QTestWindow window; - QTimer timer; - timer.setInterval(1); - app.connect(&timer, &QTimer::timeout, &app, [&] { - window.draw(); - }); - timer.start(); - app.exec(); - return 0; -} - -#include "main.moc" diff --git a/tests/gpu/src/ShaderLoadTest.cpp b/tests/gpu/src/ShaderLoadTest.cpp index 09752dc385..ba738bbe9a 100644 --- a/tests/gpu/src/ShaderLoadTest.cpp +++ b/tests/gpu/src/ShaderLoadTest.cpp @@ -23,23 +23,14 @@ #include +#include + QTEST_MAIN(ShaderLoadTest) extern std::atomic gpuBinaryShadersLoaded; extern const QString& getShaderCacheFile(); - -QtMessageHandler originalHandler; - -void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message) { -#if defined(Q_OS_WIN) - OutputDebugStringA(message.toStdString().c_str()); - OutputDebugStringA("\n"); -#endif - originalHandler(type, context, message); -} - std::pair>> parseCachedShaderString(const QString& cachedShaderString) { std::pair>> result; @@ -194,7 +185,7 @@ bool ShaderLoadTest::buildProgram(const Program& programFiles) { } void ShaderLoadTest::initTestCase() { - originalHandler = qInstallMessageHandler(messageHandler); + installTestMessageHandler(); DependencyManager::set(); { const auto& shaderCacheFile = getShaderCacheFile(); @@ -237,9 +228,15 @@ void ShaderLoadTest::cleanupTestCase() { } void ShaderLoadTest::testShaderLoad() { - auto gpuContext = std::make_shared(); + _gpuContext = std::make_shared(); QVERIFY(gpuBinaryShadersLoaded == 0); + auto backend = std::static_pointer_cast(_gpuContext->getBackend()); + std::unordered_set shaderNames; + for (const auto& entry : _shaderSources) { + shaderNames.insert(entry.first); + } + QElapsedTimer timer; // Initial load of all the shaders @@ -252,7 +249,7 @@ void ShaderLoadTest::testShaderLoad() { qDebug() << "Uncached shader load took" << timer.elapsed() << "ms"; QVERIFY(gpuBinaryShadersLoaded == 0); } - gpuContext->recycle(); + _gpuContext->recycle(); glFinish(); // Reload the shaders within the same GPU context lifetime. @@ -270,10 +267,10 @@ void ShaderLoadTest::testShaderLoad() { // Shaders will use the cached binaries from disk { gpuBinaryShadersLoaded = 0; - gpuContext->recycle(); - gpuContext->shutdown(); - gpuContext.reset(); - gpuContext = std::make_shared(); + _gpuContext->recycle(); + _gpuContext->shutdown(); + _gpuContext.reset(); + _gpuContext = std::make_shared(); _canvas.makeCurrent(); timer.start(); for (const auto& program : _programs) { diff --git a/tests/gpu/src/ShaderLoadTest.h b/tests/gpu/src/ShaderLoadTest.h index cfb01501b2..8321d8e5e7 100644 --- a/tests/gpu/src/ShaderLoadTest.h +++ b/tests/gpu/src/ShaderLoadTest.h @@ -17,7 +17,7 @@ #include #include -#define USE_LOCAL_SHADERS 0 +#define USE_LOCAL_SHADERS 1 namespace std { template <> @@ -52,12 +52,11 @@ private slots: void cleanupTestCase(); void testShaderLoad(); - private: - ShadersByName _shaderSources; Programs _programs; QString _resourcesPath; OffscreenGLCanvas _canvas; + gpu::ContextPointer _gpuContext; const glm::uvec2 _size{ 640, 480 }; }; diff --git a/tests/gpu/src/TextureTest.cpp b/tests/gpu/src/TextureTest.cpp index 72fe1bfbfe..23e9c35dcc 100644 --- a/tests/gpu/src/TextureTest.cpp +++ b/tests/gpu/src/TextureTest.cpp @@ -16,12 +16,12 @@ #include #include #include -#include #include #include #include +#include QTEST_MAIN(TextureTest) @@ -86,7 +86,6 @@ void TextureTest::initTestCase() { gpu::Context::init(); _gpuContext = std::make_shared(); - if (QProcessEnvironment::systemEnvironment().contains(KTX_TEST_DIR_ENV)) { // For local testing with larger data sets _resourcesPath = QProcessEnvironment::systemEnvironment().value(KTX_TEST_DIR_ENV); @@ -94,16 +93,14 @@ void TextureTest::initTestCase() { _resourcesPath = QStandardPaths::writableLocation(QStandardPaths::TempLocation) + "/" + TEST_DIR_NAME; if (!QFileInfo(_resourcesPath).exists()) { QDir(_resourcesPath).mkpath("."); - FileDownloader(TEST_DATA, - [&](const QByteArray& data) { - QTemporaryFile zipFile; - if (zipFile.open()) { - zipFile.write(data); - zipFile.close(); - } - JlCompress::extractDir(zipFile.fileName(), _resourcesPath); - }) - .waitForDownload(); + downloadFile(TEST_DATA, [&](const QByteArray& data) { + QTemporaryFile zipFile; + if (zipFile.open()) { + zipFile.write(data); + zipFile.close(); + } + JlCompress::extractDir(zipFile.fileName(), _resourcesPath); + }); } } @@ -114,8 +111,6 @@ void TextureTest::initTestCase() { auto VS = gpu::Shader::createVertex(vertexShaderSource); auto PS = gpu::Shader::createPixel(fragmentShaderSource); auto program = gpu::Shader::createProgram(VS, PS); - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); // If the pipeline did not exist, make it auto state = std::make_shared(); state->setCullMode(gpu::State::CULL_NONE); @@ -180,7 +175,6 @@ void TextureTest::endFrame() { QThread::msleep(10); } - void TextureTest::renderFrame(const std::function& renderLambda) { beginFrame(); gpu::doInBatch("Test::body", _gpuContext, renderLambda); @@ -190,7 +184,7 @@ void TextureTest::renderFrame(const std::function& renderLamb extern QString getTextureMemoryPressureModeString(); void TextureTest::testTextureLoading() { - QBENCHMARK{ + QBENCHMARK { _frameCount = 0; auto textures = loadTestTextures(); QVERIFY(textures.size() > 0); diff --git a/tests/shaders/src/ShaderTests.cpp b/tests/shaders/src/ShaderTests.cpp index 3953c5042c..74ddc1f0eb 100644 --- a/tests/shaders/src/ShaderTests.cpp +++ b/tests/shaders/src/ShaderTests.cpp @@ -12,6 +12,10 @@ #include "ShaderTests.h" #include +#include +#include +#include + #include #include @@ -24,6 +28,7 @@ #include #include #include +#include QTEST_MAIN(ShaderTests) @@ -39,62 +44,162 @@ void ShaderTests::initTestCase() { } void ShaderTests::cleanupTestCase() { + qDebug() << "Done"; } - -QVariantList slotSetToVariantList(const gpu::Shader::SlotSet& slotSet) { - QVariantList result; - for (const auto slot : slotSet) { - QVariantMap inputMap; - inputMap["name"] = slot._name.c_str(); - inputMap["location"] = slot._location; - result.append(inputMap); +template +QStringList toStringList(const C& c, F f) { + QStringList result; + for (const auto& v : c) { + result << f(v); } return result; } -std::string reflect(const gpu::ShaderPointer& program) { - QVariantMap result; - if (!program->getInputs().empty()) { - result["inputs"] = slotSetToVariantList(program->getInputs()); +gpu::Shader::ReflectionMap mergeReflection(const std::initializer_list& list) { + gpu::Shader::ReflectionMap result; + std::unordered_map> usedLocationsByType; + for (const auto& source : list) { + const auto& reflection = source.getReflection(); + for (const auto& entry : reflection) { + const auto& type = entry.first; + if (entry.first == gpu::Shader::BindingType::INPUT || entry.first == gpu::Shader::BindingType::OUTPUT) { + continue; + } + auto& outLocationMap = result[type]; + auto& usedLocations = usedLocationsByType[type]; + const auto& locationMap = entry.second; + for (const auto& entry : locationMap) { + const auto& name = entry.first; + const auto& location = entry.second; + if (0 != usedLocations.count(location) && usedLocations[location] != name) { + qWarning() << QString("Location %1 used by both %2 and %3") + .arg(location) + .arg(name.c_str()) + .arg(usedLocations[location].c_str()); + throw std::runtime_error("Location collision"); + } + usedLocations[location] = name; + outLocationMap[name] = location; + } + } } - if (!program->getOutputs().empty()) { - result["outputs"] = slotSetToVariantList(program->getOutputs()); - } - if (!program->getResourceBuffers().empty()) { - result["storage_buffers"] = slotSetToVariantList(program->getResourceBuffers()); - } - if (!program->getSamplers().empty()) { - result["samplers"] = slotSetToVariantList(program->getSamplers()); - } - if (!program->getTextures().empty()) { - result["textures"] = slotSetToVariantList(program->getTextures()); - } - if (!program->getUniforms().empty()) { - result["uniforms"] = slotSetToVariantList(program->getUniforms()); - } - if (!program->getUniformBuffers().empty()) { - result["uniform_buffers"] = slotSetToVariantList(program->getUniformBuffers()); - } - - return QJsonDocument::fromVariant(result).toJson(QJsonDocument::Indented).toStdString(); + return result; } void ShaderTests::testShaderLoad() { - size_t index = 0; - uint32_t INVALID_SHADER_ID = (uint32_t)-1; - while (INVALID_SHADER_ID != shader::all_programs[index]) { - auto programId = shader::all_programs[index]; - uint32_t vertexId = programId >> 16; - uint32_t fragmentId = programId & 0xFF; - auto vertexSource = shader::loadShaderSource(vertexId); - QVERIFY(!vertexSource.empty()); - auto fragmentSource = shader::loadShaderSource(fragmentId); - QVERIFY(!fragmentSource.empty()); - auto program = gpu::Shader::createProgram(programId); - QVERIFY(gpu::Shader::makeProgram(*program, {})); - auto reflectionData = reflect(program); - std::ofstream(std::string("d:/reflection/") + std::to_string(index) + std::string(".json")) << reflectionData; - ++index; + std::set usedShaders; + uint32_t maxShader = 0; + try { + size_t index = 0; + while (shader::INVALID_PROGRAM != shader::all_programs[index]) { + auto programId = shader::all_programs[index]; + ++index; + + uint32_t vertexId = shader::getVertexId(programId); + //QVERIFY(0 != vertexId); + uint32_t fragmentId = shader::getFragmentId(programId); + QVERIFY(0 != fragmentId); + usedShaders.insert(vertexId); + usedShaders.insert(fragmentId); + maxShader = std::max(maxShader, std::max(fragmentId, vertexId)); + auto vertexSource = gpu::Shader::getShaderSource(vertexId); + QVERIFY(!vertexSource.getCode().empty()); + auto fragmentSource = gpu::Shader::getShaderSource(fragmentId); + QVERIFY(!fragmentSource.getCode().empty()); + + auto expectedBindings = mergeReflection({ vertexSource, fragmentSource }); + + auto program = gpu::Shader::createProgram(programId); + auto glBackend = std::static_pointer_cast(_gpuContext->getBackend()); + auto glshader = gpu::gl::GLShader::sync(*glBackend, *program); + if (!glshader) { + qDebug() << "Failed to compile or link vertex " << vertexId << " fragment " << fragmentId; + continue; + } + + QVERIFY(glshader != nullptr); + for (const auto& shaderObject : glshader->_shaderObjects) { + const auto& program = shaderObject.glprogram; + + // Uniforms + { + +#ifdef Q_OS_MAC + const auto& uniformRemap = shaderObject.uniformRemap; +#endif + auto uniforms = gl::Uniform::load(program); + auto expectedUniforms = expectedBindings[gpu::Shader::BindingType::PUSH_CONSTANT]; + if (uniforms.size() != expectedUniforms.size()) { + qDebug() << "Found" << toStringList(uniforms, [](const auto& v) { return v.name.c_str(); }); + qDebug() << "Expected" << toStringList(expectedUniforms, [](const auto& v) { return v.first.c_str(); }); + qDebug() << "Uniforms size mismatch"; + } + for (const auto& uniform : uniforms) { + if (0 != expectedUniforms.count(uniform.name)) { + auto expectedLocation = expectedUniforms[uniform.name]; +#ifdef Q_OS_MAC + if (0 != uniformRemap.count(expectedLocation)) { + expectedLocation = uniformRemap.at(expectedLocation); + } +#endif + QVERIFY(expectedLocation == uniform.binding); + } + } + } + + // Textures + { + const auto textures = gl::Uniform::loadTextures(program); + const auto expectedTextures = expectedBindings[gpu::Shader::BindingType::TEXTURE]; + if (textures.size() != expectedTextures.size()) { + qDebug() << "Found" << toStringList(textures, [](const auto& v) { return v.name.c_str(); }); + qDebug() << "Expected" << toStringList(expectedTextures, [](const auto& v) { return v.first.c_str(); }); + qDebug() << "Uniforms size mismatch"; + } + for (const auto& texture : textures) { + if (0 != expectedTextures.count(texture.name)) { + const auto& location = texture.binding; + const auto& expectedUnit = expectedTextures.at(texture.name); + GLint actualUnit = -1; + glGetUniformiv(program, location, &actualUnit); + QVERIFY(expectedUnit == actualUnit); + } + } + } + + // UBOs + { + auto ubos = gl::UniformBlock::load(program); + auto expectedUbos = expectedBindings[gpu::Shader::BindingType::UNIFORM_BUFFER]; + if (ubos.size() != expectedUbos.size()) { + qDebug() << "Found" << toStringList(ubos, [](const auto& v) { return v.name.c_str(); }); + qDebug() << "Expected" << toStringList(expectedUbos, [](const auto& v) { return v.first.c_str(); }); + qDebug() << "UBOs size mismatch"; + } + for (const auto& ubo : ubos) { + if (0 != expectedUbos.count(ubo.name)) { + QVERIFY(expectedUbos[ubo.name] == ubo.binding); + } + } + } + + // FIXME add storage buffer validation + } + } + } catch (const std::runtime_error& error) { + QFAIL(error.what()); } + + for (uint32_t i = 0; i <= maxShader; ++i) { + auto used = usedShaders.count(i); + if (0 != usedShaders.count(i)) { + continue; + } + auto reflectionJson = shader::loadShaderReflection(i); + auto name = QJsonDocument::fromJson(reflectionJson.c_str()).object()["name"].toString(); + qDebug() << "Unused shader" << name; + } + + qDebug() << "Completed all shaders"; } diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 1c36306410..9b36180bc2 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -2,6 +2,9 @@ add_subdirectory(scribe) set_target_properties(scribe PROPERTIES FOLDER "Tools") +add_subdirectory(shreflect) +set_target_properties(shreflect PROPERTIES FOLDER "Tools") + find_npm() if (NPM_EXECUTABLE) add_subdirectory(jsdoc) diff --git a/tools/shreflect/CMakeLists.txt b/tools/shreflect/CMakeLists.txt new file mode 100644 index 0000000000..0748f59d31 --- /dev/null +++ b/tools/shreflect/CMakeLists.txt @@ -0,0 +1,10 @@ +set(TARGET_NAME shreflect) + +# don't use the setup_hifi_project macro as we don't want Qt or GLM dependencies +file(GLOB TARGET_SRCS src/*) +add_executable(${TARGET_NAME} ${TARGET_SRCS}) +target_json() + +if (WIN32) + set_property(TARGET ${TARGET_NAME} APPEND_STRING PROPERTY LINK_FLAGS_DEBUG "/OPT:NOREF /OPT:NOICF") +endif() diff --git a/tools/shreflect/src/main.cpp b/tools/shreflect/src/main.cpp new file mode 100644 index 0000000000..b95b36fd94 --- /dev/null +++ b/tools/shreflect/src/main.cpp @@ -0,0 +1,196 @@ +// +// Bradley Austin Davis on 2018/05/24 +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using json = nlohmann::json; + +std::vector splitStringIntoLines(const std::string& s) { + std::stringstream ss(s); + std::vector result; + std::string line; + while (std::getline(ss, line, '\n')) { + result.push_back(line); + } + return result; +} + +std::string readFile(const std::string& file) { + std::ifstream t(file); + std::string str((std::istreambuf_iterator(t)), + std::istreambuf_iterator()); + return str; +} + +void writeFile(const std::string& file, const std::string& out) { + std::ofstream t(file, std::ios::trunc); + t << out; + t.close(); +} + +// Convert a Perl style multi-line commented regex into a C++ style regex +// All whitespace will be removed and lines with '#' comments will have the comments removed +std::string getUnformattedRegex(const std::string& formatted) { + static const std::regex WHITESPACE = std::regex("\\s+"); + static const std::string EMPTY; + std::string result; + result.reserve(formatted.size()); + auto lines = splitStringIntoLines(formatted); + for (auto line : lines) { + auto commentStart = line.find('#'); + if (std::string::npos != commentStart) { + line = line.substr(0, commentStart); + } + line = std::regex_replace(line, WHITESPACE, EMPTY); + result += line; + } + + return result; +} + +static std::string LAYOUT_REGEX_STRING{ R"REGEX( +^layout\( # BEGIN layout declaration block + (\s*std140\s*,\s*)? # Optional std140 marker + (binding|location) # binding / location + \s*=\s* + (?: + (\b\d+\b) # literal numeric binding like binding=1 + | + (\b[A-Z_0-9]+\b) # Preprocessor macro binding like binding=GPU_TEXTURE_FOO + ) +\)\s* # END layout declaration block +(?: + ( # Texture or simple uniform like `layout(binding=0) uniform sampler2D originalTexture;` + uniform\s+ + (\b\w+\b)\s+ + (\b\w+\b)\s* + (?:\[\d*\])? + (?:\s*=.*)? + \s*;.*$ + ) + | + ( # UBO or SSBO like `layout(std140, binding=GPU_STORAGE_TRANSFORM_OBJECT) buffer transformObjectBuffer {` + \b(uniform|buffer)\b\s+ + \b(\w+\b) + \s*\{.*$ + ) + | + ( # Input or output attribute like `layout(location=GPU_ATTR_POSITION) in vec4 inPosition;` + \b(in|out)\b\s+ + \b(\w+)\b\s+ + \b(\w+)\b\s*;\s*$ + ) +) +)REGEX" }; + +enum Groups { + STD140 = 1, + LOCATION_TYPE = 2, + LOCATION_LITERAL = 3, + LOCATION_DEFINE = 4, + DECL_SIMPLE = 5, + SIMPLE_TYPE = 6, + SIMPLE_NAME = 7, + DECL_STRUCT = 8, + STRUCT_TYPE = 9, + STRUCT_NAME = 10, + DECL_INOUT = 11, + INOUT_DIRECTION = 12, + INOUT_TYPE = 13, + INOUT_NAME = 14, +}; + +json reflectShader(const std::string& shaderPath) { + static const std::regex DEFINE("^#define\\s+([_A-Z0-9]+)\\s+(\\d+)\\s*$"); + static const std::regex LAYOUT_QUALIFIER{ getUnformattedRegex(LAYOUT_REGEX_STRING) }; + + + auto shaderSource = readFile(shaderPath); + std::vector lines = splitStringIntoLines(shaderSource); + using Map = std::unordered_map; + + json inputs; + json outputs; + json textures; + json uniforms; + json storageBuffers; + json uniformBuffers; + Map locationDefines; + for (const auto& line : lines) { + std::cmatch m; + if (std::regex_match(line.c_str(), m, DEFINE)) { + locationDefines[m[1].str()] = std::stoi(m[2].first); + } else if (std::regex_match(line.c_str(), m, LAYOUT_QUALIFIER)) { + int binding = -1; + if (m[LOCATION_LITERAL].matched) { + binding = std::stoi(m[LOCATION_LITERAL].str()); + } else { + binding = locationDefines[m[LOCATION_DEFINE].str()]; + } + if (m[DECL_SIMPLE].matched) { + auto name = m[SIMPLE_NAME].str(); + auto type = m[SIMPLE_TYPE].str(); + auto& map = 0 == type.find("sampler") ? textures : uniforms; + map[name] = binding; + } else if (m[DECL_STRUCT].matched) { + auto name = m[STRUCT_NAME].str(); + auto type = m[STRUCT_TYPE].str(); + auto& map = (type == "buffer") ? storageBuffers : uniformBuffers; + map[name] = binding; + } else if (m[DECL_INOUT].matched) { + auto name = m[INOUT_NAME].str(); + auto& map = (m[INOUT_DIRECTION].str() == "in") ? inputs : outputs; + map[name] = binding; + } + } + } + + json result; + if (!inputs.empty()) { + result["inputs"] = inputs; + } + if (!outputs.empty()) { + result["outputs"] = outputs; + } + if (!textures.empty()) { + result["textures"] = textures; + } + if (!uniforms.empty()) { + result["uniforms"] = uniforms; + } + if (!storageBuffers.empty()) { + result["storageBuffers"] = storageBuffers; + } + if (!uniformBuffers.empty()) { + result["uniformBuffers"] = uniformBuffers; + } + + result["name"] = shaderPath; + + return result; +} + +int main (int argc, char** argv) { + auto path = std::string(argv[1]); + auto shaderReflection = reflectShader(path); + writeFile(path + ".json", shaderReflection.dump(4)); + return 0; +} From a1a1a03bbc40bc2f96d289193c052ff82d7f2eb3 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Wed, 18 Jul 2018 12:28:00 -0700 Subject: [PATCH 135/332] Fixing crash on exit, deferred debugging tool --- .../gpu-gl-common/src/gpu/gl/GLBackend.h | 7 ++- .../render-utils/src/DebugDeferredBuffer.cpp | 51 ++++++++++--------- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h index ff3e94fd16..0d47d75ba4 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h @@ -425,8 +425,11 @@ protected: return offset == other.offset && size == other.size && buffer == other.buffer; } }; - std::array _buffers; - //Buffers _buffers { }; + + // MAX_NUM_UNIFORM_BUFFERS-1 is the max uniform index BATCHES are allowed to set, but + // MIN_REQUIRED_UNIFORM_BUFFER_BINDINGS is used here because the backend sets some + // internal UBOs for things like camera correction + std::array _buffers; } _uniform; // Helper function that provides common code diff --git a/libraries/render-utils/src/DebugDeferredBuffer.cpp b/libraries/render-utils/src/DebugDeferredBuffer.cpp index e7268f2799..cab95e50be 100644 --- a/libraries/render-utils/src/DebugDeferredBuffer.cpp +++ b/libraries/render-utils/src/DebugDeferredBuffer.cpp @@ -422,7 +422,6 @@ void DebugDeferredBuffer::run(const RenderContextPointer& renderContext, const I return; } -#if 0 assert(renderContext->args); assert(renderContext->args->hasViewFrustum()); RenderArgs* args = renderContext->args; @@ -465,10 +464,11 @@ void DebugDeferredBuffer::run(const RenderContextPointer& renderContext, const I batch.setResourceTexture(Textures::DeferredLighting, deferredFramebuffer->getLightingTexture()); } if (velocityFramebuffer) { - batch.setResourceTexture(Textures::TaaVelocity, velocityFramebuffer->getVelocityTexture()); + batch.setResourceTexture(Textures::DebugVelocity, velocityFramebuffer->getVelocityTexture()); } - batch.setUniformBuffer(UBOs:: DebugParametersBuffer, _parameters); + // FIXME can't find the corresponding buffer + // batch.setUniformBuffer(UBOs:: DebugParametersBuffer, _parameters); auto lightStage = renderContext->_scene->getStage(); assert(lightStage); @@ -482,41 +482,42 @@ void DebugDeferredBuffer::run(const RenderContextPointer& renderContext, const I } if (linearDepthTarget) { - batch.setResourceTexture(Textures::LLinearDepth, linearDepthTarget->getLinearDepthTexture()); - batch.setResourceTexture(HalfLinearDepth, linearDepthTarget->getHalfLinearDepthTexture()); - batch.setResourceTexture(HalfNormal, linearDepthTarget->getHalfNormalTexture()); + batch.setResourceTexture(Textures::DebugDepth, linearDepthTarget->getLinearDepthTexture()); + batch.setResourceTexture(Textures::DebugHalfDepth, linearDepthTarget->getHalfLinearDepthTexture()); + batch.setResourceTexture(Textures::DebugHalfNormal, linearDepthTarget->getHalfNormalTexture()); } if (surfaceGeometryFramebuffer) { - batch.setResourceTexture(Curvature, surfaceGeometryFramebuffer->getCurvatureTexture()); - batch.setResourceTexture(DiffusedCurvature, surfaceGeometryFramebuffer->getLowCurvatureTexture()); + batch.setResourceTexture(Textures::DeferredCurvature, surfaceGeometryFramebuffer->getCurvatureTexture()); + batch.setResourceTexture(Textures::DeferredDiffusedCurvature, + surfaceGeometryFramebuffer->getLowCurvatureTexture()); } if (ambientOcclusionFramebuffer) { - batch.setResourceTexture(Textures::SsaoOcclusion, ambientOcclusionFramebuffer->getOcclusionTexture()); - batch.setResourceTexture(AmbientOcclusionBlurred, ambientOcclusionFramebuffer->getOcclusionBlurredTexture()); + batch.setResourceTexture(Textures::DebugOcclusion, ambientOcclusionFramebuffer->getOcclusionTexture()); + batch.setResourceTexture(Textures::DebugOcclusionBlurred, + ambientOcclusionFramebuffer->getOcclusionBlurredTexture()); } const glm::vec4 color(1.0f, 1.0f, 1.0f, 1.0f); const glm::vec2 bottomLeft(_size.x, _size.y); const glm::vec2 topRight(_size.z, _size.w); geometryBuffer->renderQuad(batch, bottomLeft, topRight, color, _geometryId); - batch.setResourceTexture(Albedo, nullptr); - batch.setResourceTexture(Normal, nullptr); - batch.setResourceTexture(Specular, nullptr); - batch.setResourceTexture(Depth, nullptr); - batch.setResourceTexture(Lighting, nullptr); - batch.setResourceTexture(Shadow, nullptr); - batch.setResourceTexture(LinearDepth, nullptr); - batch.setResourceTexture(HalfLinearDepth, nullptr); - batch.setResourceTexture(HalfNormal, nullptr); + batch.setResourceTexture(Textures::DeferredColor, nullptr); + batch.setResourceTexture(Textures::DeferredNormal, nullptr); + batch.setResourceTexture(Textures::DeferredSpecular, nullptr); + batch.setResourceTexture(Textures::DeferredDepth, nullptr); + batch.setResourceTexture(Textures::DeferredLighting, nullptr); + batch.setResourceTexture(Textures::Shadow, nullptr); + batch.setResourceTexture(Textures::DebugDepth, nullptr); + batch.setResourceTexture(Textures::DebugHalfDepth, nullptr); + batch.setResourceTexture(Textures::DebugHalfNormal, nullptr); - batch.setResourceTexture(Curvature, nullptr); - batch.setResourceTexture(DiffusedCurvature, nullptr); + batch.setResourceTexture(Textures::DeferredCurvature, nullptr); + batch.setResourceTexture(Textures::DeferredDiffusedCurvature, nullptr); - batch.setResourceTexture(AmbientOcclusion, nullptr); - batch.setResourceTexture(AmbientOcclusionBlurred, nullptr); + batch.setResourceTexture(Textures::DebugOcclusion, nullptr); + batch.setResourceTexture(Textures::DebugOcclusionBlurred, nullptr); - batch.setResourceTexture(Velocity, nullptr); + batch.setResourceTexture(Textures::DebugVelocity, nullptr); }); -#endif } From 8eb97dc79c809e9978948a4f2729f0705ca03b1e Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Wed, 18 Jul 2018 19:35:28 -0700 Subject: [PATCH 136/332] PR feedback --- libraries/gpu/src/gpu/Shader.cpp | 48 ++++++++++++------- libraries/gpu/src/gpu/Shader.h | 5 +- .../procedural/src/procedural/Procedural.cpp | 4 +- tests/shaders/src/ShaderTests.cpp | 2 +- 4 files changed, 35 insertions(+), 24 deletions(-) diff --git a/libraries/gpu/src/gpu/Shader.cpp b/libraries/gpu/src/gpu/Shader.cpp index 1166e86cd1..cea7ec6e14 100755 --- a/libraries/gpu/src/gpu/Shader.cpp +++ b/libraries/gpu/src/gpu/Shader.cpp @@ -82,8 +82,8 @@ Shader::Pointer Shader::createOrReuseDomainShader(Type type, const Source& sourc if (0 != reflection.count(BindingType::UNIFORM_BUFFER)) { populateSlotSet(shader->_uniformBuffers, reflection.find(BindingType::UNIFORM_BUFFER)->second); } - if (0 != reflection.count(BindingType::STORAGE_BUFFER)) { - populateSlotSet(shader->_resourceBuffers, reflection.find(BindingType::STORAGE_BUFFER)->second); + if (0 != reflection.count(BindingType::RESOURCE_BUFFER)) { + populateSlotSet(shader->_resourceBuffers, reflection.find(BindingType::RESOURCE_BUFFER)->second); } if (0 != reflection.count(BindingType::TEXTURE)) { populateSlotSet(shader->_textures, reflection.find(BindingType::TEXTURE)->second); @@ -91,8 +91,8 @@ Shader::Pointer Shader::createOrReuseDomainShader(Type type, const Source& sourc if (0 != reflection.count(BindingType::SAMPLER)) { populateSlotSet(shader->_samplers, reflection.find(BindingType::SAMPLER)->second); } - if (0 != reflection.count(BindingType::PUSH_CONSTANT)) { - populateSlotSet(shader->_uniforms, reflection.find(BindingType::PUSH_CONSTANT)->second); + if (0 != reflection.count(BindingType::UNIFORM)) { + populateSlotSet(shader->_uniforms, reflection.find(BindingType::UNIFORM)->second); } _domainShaderMaps[type].emplace(source, std::weak_ptr(shader)); return shader; @@ -144,8 +144,8 @@ ShaderPointer Shader::createOrReuseProgramShader(Type type, const Pointer& verte if (0 != reflection.count(BindingType::UNIFORM_BUFFER)) { populateSlotSet(program->_uniformBuffers, reflection.find(BindingType::UNIFORM_BUFFER)->second); } - if (0 != reflection.count(BindingType::STORAGE_BUFFER)) { - populateSlotSet(program->_resourceBuffers, reflection.find(BindingType::STORAGE_BUFFER)->second); + if (0 != reflection.count(BindingType::RESOURCE_BUFFER)) { + populateSlotSet(program->_resourceBuffers, reflection.find(BindingType::RESOURCE_BUFFER)->second); } if (0 != reflection.count(BindingType::TEXTURE)) { populateSlotSet(program->_textures, reflection.find(BindingType::TEXTURE)->second); @@ -153,8 +153,8 @@ ShaderPointer Shader::createOrReuseProgramShader(Type type, const Pointer& verte if (0 != reflection.count(BindingType::SAMPLER)) { populateSlotSet(program->_samplers, reflection.find(BindingType::SAMPLER)->second); } - if (0 != reflection.count(BindingType::PUSH_CONSTANT)) { - populateSlotSet(program->_uniforms, reflection.find(BindingType::PUSH_CONSTANT)->second); + if (0 != reflection.count(BindingType::UNIFORM)) { + populateSlotSet(program->_uniforms, reflection.find(BindingType::UNIFORM)->second); } } @@ -215,6 +215,13 @@ Shader::ReflectionMap getShaderReflection(const std::string& reflectionJson) { return {}; } +#define REFLECT_KEY_INPUTS "inputs" +#define REFLECT_KEY_OUTPUTS "outputs" +#define REFLECT_KEY_UBOS "uniformBuffers" +#define REFLECT_KEY_SSBOS "storageBuffers" +#define REFLECT_KEY_UNIFORMS "uniforms" +#define REFLECT_KEY_TEXTURES "textures" + auto doc = QJsonDocument::fromJson(reflectionJson.c_str()); if (doc.isNull()) { qWarning() << "Invalid shader reflection JSON" << reflectionJson.c_str(); @@ -223,21 +230,26 @@ Shader::ReflectionMap getShaderReflection(const std::string& reflectionJson) { Shader::ReflectionMap result; auto json = doc.object(); - if (json.contains("inputs")) { - updateBindingsFromJsonObject(result[Shader::BindingType::INPUT], json["inputs"].toObject()); + if (json.contains(REFLECT_KEY_INPUTS)) { + updateBindingsFromJsonObject(result[Shader::BindingType::INPUT], json[REFLECT_KEY_INPUTS].toObject()); } - if (json.contains("outputs")) { - updateBindingsFromJsonObject(result[Shader::BindingType::OUTPUT], json["outputs"].toObject()); + if (json.contains(REFLECT_KEY_OUTPUTS)) { + updateBindingsFromJsonObject(result[Shader::BindingType::OUTPUT], json[REFLECT_KEY_OUTPUTS].toObject()); } - if (json.contains("uniformBuffers")) { - updateBindingsFromJsonObject(result[Shader::BindingType::UNIFORM_BUFFER], json["uniformBuffers"].toObject()); + if (json.contains(REFLECT_KEY_UBOS)) { + updateBindingsFromJsonObject(result[Shader::BindingType::UNIFORM_BUFFER], json[REFLECT_KEY_UBOS].toObject()); } - if (json.contains("textures")) { - updateBindingsFromJsonObject(result[Shader::BindingType::TEXTURE], json["textures"].toObject()); + if (json.contains(REFLECT_KEY_TEXTURES)) { + updateBindingsFromJsonObject(result[Shader::BindingType::TEXTURE], json[REFLECT_KEY_TEXTURES].toObject()); } - if (json.contains("uniforms")) { - updateBindingsFromJsonObject(result[Shader::BindingType::PUSH_CONSTANT], json["uniforms"].toObject()); + if (json.contains(REFLECT_KEY_UNIFORMS)) { + updateBindingsFromJsonObject(result[Shader::BindingType::UNIFORM], json[REFLECT_KEY_UNIFORMS].toObject()); } + if (json.contains(REFLECT_KEY_SSBOS)) { + updateBindingsFromJsonObject(result[Shader::BindingType::UNIFORM], json[REFLECT_KEY_SSBOS].toObject()); + } + + return result; } diff --git a/libraries/gpu/src/gpu/Shader.h b/libraries/gpu/src/gpu/Shader.h index d713433bd6..ad828a0cff 100755 --- a/libraries/gpu/src/gpu/Shader.h +++ b/libraries/gpu/src/gpu/Shader.h @@ -51,9 +51,8 @@ public: TEXTURE, SAMPLER, UNIFORM_BUFFER, - STORAGE_BUFFER, - PUSH_CONSTANT, // Equivalent to uniforms in GL - SPECIALIZATION_CONSTANT, + RESOURCE_BUFFER, + UNIFORM, }; using LocationMap = std::unordered_map; diff --git a/libraries/procedural/src/procedural/Procedural.cpp b/libraries/procedural/src/procedural/Procedural.cpp index 644212864e..09e30eab2e 100644 --- a/libraries/procedural/src/procedural/Procedural.cpp +++ b/libraries/procedural/src/procedural/Procedural.cpp @@ -253,10 +253,10 @@ void Procedural::prepare(gpu::Batch& batch, // Build the fragment shader std::string opaqueShaderSource = replaceProceduralBlock(_opaquefragmentSource.getCode()); auto opaqueReflection = _opaquefragmentSource.getReflection(); - auto& opaqueUniforms = opaqueReflection[gpu::Shader::BindingType::PUSH_CONSTANT]; + auto& opaqueUniforms = opaqueReflection[gpu::Shader::BindingType::UNIFORM]; std::string transparentShaderSource = replaceProceduralBlock(_transparentfragmentSource.getCode()); auto transparentReflection = _transparentfragmentSource.getReflection(); - auto& transparentUniforms = transparentReflection[gpu::Shader::BindingType::PUSH_CONSTANT]; + auto& transparentUniforms = transparentReflection[gpu::Shader::BindingType::UNIFORM]; // Set any userdata specified uniforms int customSlot = procedural::slot::uniform::Custom; diff --git a/tests/shaders/src/ShaderTests.cpp b/tests/shaders/src/ShaderTests.cpp index 74ddc1f0eb..dffd69054d 100644 --- a/tests/shaders/src/ShaderTests.cpp +++ b/tests/shaders/src/ShaderTests.cpp @@ -129,7 +129,7 @@ void ShaderTests::testShaderLoad() { const auto& uniformRemap = shaderObject.uniformRemap; #endif auto uniforms = gl::Uniform::load(program); - auto expectedUniforms = expectedBindings[gpu::Shader::BindingType::PUSH_CONSTANT]; + auto expectedUniforms = expectedBindings[gpu::Shader::BindingType::UNIFORM]; if (uniforms.size() != expectedUniforms.size()) { qDebug() << "Found" << toStringList(uniforms, [](const auto& v) { return v.name.c_str(); }); qDebug() << "Expected" << toStringList(expectedUniforms, [](const auto& v) { return v.first.c_str(); }); From eca803503c6024dbec447cf0ea164cce589c5c1b Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 30 Jul 2018 10:57:23 -0700 Subject: [PATCH 137/332] Fix resolution scaling --- libraries/gpu/src/gpu/DrawTextureOpaque.slf | 2 +- .../src/standardDrawTextureNoBlend.slf | 30 +++++++++++++++++++ libraries/shaders/CMakeLists.txt | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 libraries/render-utils/src/standardDrawTextureNoBlend.slf diff --git a/libraries/gpu/src/gpu/DrawTextureOpaque.slf b/libraries/gpu/src/gpu/DrawTextureOpaque.slf index d98daa1c9a..b3227325bf 100755 --- a/libraries/gpu/src/gpu/DrawTextureOpaque.slf +++ b/libraries/gpu/src/gpu/DrawTextureOpaque.slf @@ -18,7 +18,7 @@ layout(binding=0) uniform sampler2D colorMap; -layout(location=GPU_ATTR_TEXCOORD0) in vec2 varTexCoord0; +layout(location=0) in vec2 varTexCoord0; layout(location=0) out vec4 outFragColor; diff --git a/libraries/render-utils/src/standardDrawTextureNoBlend.slf b/libraries/render-utils/src/standardDrawTextureNoBlend.slf new file mode 100644 index 0000000000..95138d123f --- /dev/null +++ b/libraries/render-utils/src/standardDrawTextureNoBlend.slf @@ -0,0 +1,30 @@ +<@include gpu/Config.slh@> +<$VERSION_HEADER$> +// Generated on <$_SCRIBE_DATE$> +// standardDrawTexture.frag +// fragment shader +// +// Created by Sam Gateau on 6/10/15. +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +<@include gpu/ShaderConstants.h@> + +// the texture +layout(binding=0) uniform sampler2D colorMap; + +layout(location=GPU_ATTR_POSITION) in vec3 varPosition; +layout(location=GPU_ATTR_NORMAL) in vec3 varNormal; +layout(location=GPU_ATTR_TEXCOORD0) in vec2 varTexCoord0; +layout(location=GPU_ATTR_COLOR) in vec4 varColor; + +layout(location=0) out vec4 outFragColor; + +void main(void) { + vec4 color = texture(colorMap, varTexCoord0); + outFragColor = color * varColor; + outFragColor.a = 1.0; +} diff --git a/libraries/shaders/CMakeLists.txt b/libraries/shaders/CMakeLists.txt index 1c4824ac02..06998e3ef5 100644 --- a/libraries/shaders/CMakeLists.txt +++ b/libraries/shaders/CMakeLists.txt @@ -80,7 +80,7 @@ AUTOSCRIBE_PROGRAM(NAME ssao_debugOcclusion VERTEX gpu::vertex::DrawViewportQuad AUTOSCRIBE_PROGRAM(NAME stencil_drawMask VERTEX gpu::vertex::DrawUnitQuadTexcoord) AUTOSCRIBE_PROGRAM(NAME standardDrawTexture VERTEX standardTransformPNTC) -AUTOSCRIBE_PROGRAM(NAME standardDrawTextureNoBlend VERTEX standardTransformPNTC FRAGMENT gpu::fragment::DrawTextureOpaque) +AUTOSCRIBE_PROGRAM(NAME standardDrawTextureNoBlend VERTEX standardTransformPNTC) AUTOSCRIBE_PROGRAM(NAME subsurfaceScattering_makeProfile VERTEX gpu::vertex::DrawUnitQuadTexcoord) AUTOSCRIBE_PROGRAM(NAME subsurfaceScattering_makeLUT VERTEX gpu::vertex::DrawUnitQuadTexcoord) From df031b5d9321eb7d0235ba38ce7b48af2d9e7e36 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 30 Jul 2018 14:46:16 -0700 Subject: [PATCH 138/332] Fix procedural rendering with custom uniforms --- libraries/gl/src/gl/GLShaders.cpp | 14 +++++ libraries/gl/src/gl/GLShaders.h | 1 + .../gpu-gl-common/src/gpu/gl/GLBackend.h | 4 +- .../src/gpu/gl/GLBackendShader.cpp | 36 +++++++++++++ libraries/gpu-gl-common/src/gpu/gl/GLShader.h | 2 - libraries/gpu-gl/src/gpu/gl41/GL41Backend.h | 1 - .../gpu-gl/src/gpu/gl41/GL41BackendShader.cpp | 51 +------------------ 7 files changed, 54 insertions(+), 55 deletions(-) diff --git a/libraries/gl/src/gl/GLShaders.cpp b/libraries/gl/src/gl/GLShaders.cpp index f4a7dc1fa2..03b807fbbf 100644 --- a/libraries/gl/src/gl/GLShaders.cpp +++ b/libraries/gl/src/gl/GLShaders.cpp @@ -110,6 +110,20 @@ Uniforms Uniform::load(GLuint glprogram, const std::vector& cnames) return load(glprogram, indices); } + +template +std::vector toCNames(const C& container, F lambda) { + std::vector result; + result.reserve(container.size()); + std::transform(container.begin(), container.end(), std::back_inserter(result), lambda); + return result; +} + +Uniforms Uniform::load(GLuint glprogram, const std::vector& names) { + auto cnames = toCNames(names, [](const std::string& name) { return name.c_str(); }); + return load(glprogram, cnames); +} + void UniformBlock::load(GLuint glprogram, int index) { this->index = index; GLint length = 0; diff --git a/libraries/gl/src/gl/GLShaders.h b/libraries/gl/src/gl/GLShaders.h index 7666bba823..5d16bd443e 100644 --- a/libraries/gl/src/gl/GLShaders.h +++ b/libraries/gl/src/gl/GLShaders.h @@ -40,6 +40,7 @@ struct Uniform : public ShaderBinding { static Vector load(GLuint glprogram); static Vector load(GLuint glprogram, const std::vector& indices); static Vector load(GLuint glprogram, const std::vector& names); + static Vector load(GLuint glprogram, const std::vector& names); template static Vector loadByName(GLuint glprogram, const C& names) { diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h index 0d47d75ba4..2be13bbae4 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h @@ -260,7 +260,7 @@ public: bool isTextureManagementSparseEnabled() const override { return (_textureManagement._sparseCapable && Texture::getEnableSparseTextures()); } protected: - virtual GLint getRealUniformLocation(GLint location) const { return location; } + virtual GLint getRealUniformLocation(GLint location) const; void recycle() const override; @@ -494,7 +494,7 @@ protected: } _pipeline; // Backend dependant compilation of the shader - virtual void postLinkProgram(ShaderObject& programObject, const Shader& program) const {} + virtual void postLinkProgram(ShaderObject& programObject, const Shader& program) const; virtual GLShader* compileBackendProgram(const Shader& program, const Shader::CompilationHandler& handler); virtual GLShader* compileBackendShader(const Shader& shader, const Shader::CompilationHandler& handler); virtual std::string getBackendShaderHeader() const = 0; diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackendShader.cpp b/libraries/gpu-gl-common/src/gpu/gl/GLBackendShader.cpp index 7379417574..88d2e8609f 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackendShader.cpp +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackendShader.cpp @@ -244,6 +244,42 @@ GLShader* GLBackend::compileBackendProgram(const Shader& program, const Shader:: return object; } +static const GLint INVALID_UNIFORM_INDEX = -1; + +GLint GLBackend::getRealUniformLocation(GLint location) const { + auto& shader = _pipeline._programShader->_shaderObjects[(GLShader::Version)isStereo()]; + auto itr = shader.uniformRemap.find(location); + if (itr == shader.uniformRemap.end()) { + // This shouldn't happen, because we use reflection to determine all the possible + // uniforms. If someone is requesting a uniform that isn't in the remapping structure + // that's a bug from the calling code, because it means that location wasn't in the + // reflection + qWarning() << "Unexpected location requested for shader"; + return INVALID_UNIFORM_INDEX; + } + return itr->second; +} + +void GLBackend::postLinkProgram(ShaderObject& shaderObject, const Shader& program) const { + const auto& glprogram = shaderObject.glprogram; + const auto& expectedUniforms = program.getUniforms(); + const auto expectedLocationsByName = expectedUniforms.getLocationsByName(); + const auto uniforms = ::gl::Uniform::load(glprogram, expectedUniforms.getNames()); + auto& uniformRemap = shaderObject.uniformRemap; + + // Pre-initialize all the uniforms with an invalid location + for (const auto& entry : expectedLocationsByName) { + uniformRemap[entry.second] = INVALID_UNIFORM_INDEX; + } + + // Now load up all the actual found uniform location + for (const auto& uniform : uniforms) { + const auto& name = uniform.name; + const auto& expectedLocation = expectedLocationsByName.at(name); + const auto& location = uniform.binding; + uniformRemap[expectedLocation] = location; + } +} GLBackend::ElementResource GLBackend::getFormatFromGLUniform(GLenum gltype) { switch (gltype) { diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLShader.h b/libraries/gpu-gl-common/src/gpu/gl/GLShader.h index 8e3eafcb0f..5d5d8a4a3c 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLShader.h +++ b/libraries/gpu-gl-common/src/gpu/gl/GLShader.h @@ -17,10 +17,8 @@ struct ShaderObject { GLuint glshader { 0 }; GLuint glprogram { 0 }; -#if defined(Q_OS_MAC) using LocationMap = std::unordered_map ; LocationMap uniformRemap; -#endif }; class GLShader : public GPUObject { diff --git a/libraries/gpu-gl/src/gpu/gl41/GL41Backend.h b/libraries/gpu-gl/src/gpu/gl41/GL41Backend.h index 1adb62c2d0..8cf44a33d8 100644 --- a/libraries/gpu-gl/src/gpu/gl41/GL41Backend.h +++ b/libraries/gpu-gl/src/gpu/gl41/GL41Backend.h @@ -173,7 +173,6 @@ protected: std::string getBackendShaderHeader() const override; void postLinkProgram(ShaderObject& programObject, const Shader& program) const override; - GLint getRealUniformLocation(GLint location) const override; }; } } diff --git a/libraries/gpu-gl/src/gpu/gl41/GL41BackendShader.cpp b/libraries/gpu-gl/src/gpu/gl41/GL41BackendShader.cpp index 798da06b01..2c3010e0f5 100644 --- a/libraries/gpu-gl/src/gpu/gl41/GL41BackendShader.cpp +++ b/libraries/gpu-gl/src/gpu/gl41/GL41BackendShader.cpp @@ -22,46 +22,8 @@ std::string GL41Backend::getBackendShaderHeader() const { return header; } -template -std::vector toCNames(const C& container, F lambda) { - std::vector result; - result.reserve(container.size()); - std::transform(container.begin(), container.end(), std::back_inserter(result), lambda); - return result; -} - -#if defined(Q_OS_MAC) -ShaderObject::LocationMap buildRemap(GLuint glprogram, const gpu::Shader::SlotSet& slotSet) { - static const GLint INVALID_INDEX = -1; - ShaderObject::LocationMap result; - const auto expectedNames = slotSet.getNames(); - const auto count = expectedNames.size(); - std::vector indices; - indices.resize(count); - glGetUniformIndices(glprogram, (GLsizei)count, - toCNames(expectedNames, [](const std::string& name) { return name.c_str(); }).data(), - (GLuint*)indices.data()); - - const auto expectedLocationsByName = slotSet.getLocationsByName(); - for (size_t i = 0; i < count; ++i) { - const auto& index = indices[i]; - const auto& name = expectedNames[i]; - const auto& expectedLocation = expectedLocationsByName.at(name); - if (INVALID_INDEX == index) { - result[expectedLocation] = gpu::Shader::INVALID_LOCATION; - continue; - } - - ::gl::Uniform uniformInfo(glprogram, index); - if (expectedLocation != uniformInfo.binding) { - result[expectedLocation] = uniformInfo.binding; - } - } - return result; -} -#endif - void GL41Backend::postLinkProgram(ShaderObject& programObject, const Shader& program) const { + Parent::postLinkProgram(programObject, program); const auto& glprogram = programObject.glprogram; // For the UBOs, use glUniformBlockBinding to fixup the locations based on the reflection { @@ -106,14 +68,3 @@ void GL41Backend::postLinkProgram(ShaderObject& programObject, const Shader& pro } -GLint GL41Backend::getRealUniformLocation(GLint location) const { - GLint result = location; -#if defined(Q_OS_MAC) - auto& shader = _pipeline._programShader->_shaderObjects[(GLShader::Version)isStereo()]; - auto itr = shader.uniformRemap.find(location); - if (itr != shader.uniformRemap.end()) { - result = itr->second; - } -#endif - return result; -} From 6ed751211278d9512e8a7c38483c9102b0807434 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 30 Jul 2018 16:06:39 -0700 Subject: [PATCH 139/332] Fix build failures after parabola merge --- interface/src/raypick/ParabolaPointer.cpp | 14 +++----------- libraries/render-utils/src/parabola.slf | 4 ++-- libraries/render-utils/src/parabola.slv | 4 ++-- libraries/shaders/CMakeLists.txt | 2 ++ 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/interface/src/raypick/ParabolaPointer.cpp b/interface/src/raypick/ParabolaPointer.cpp index 9371995a2a..c7ef6582d1 100644 --- a/interface/src/raypick/ParabolaPointer.cpp +++ b/interface/src/raypick/ParabolaPointer.cpp @@ -12,11 +12,9 @@ #include #include +#include + #include "ParabolaPick.h" - -#include "render-utils/parabola_vert.h" -#include "render-utils/parabola_frag.h" - const glm::vec4 ParabolaPointer::RenderState::ParabolaRenderItem::DEFAULT_PARABOLA_COLOR { 1.0f }; const float ParabolaPointer::RenderState::ParabolaRenderItem::DEFAULT_PARABOLA_WIDTH { 0.01f }; const bool ParabolaPointer::RenderState::ParabolaRenderItem::DEFAULT_PARABOLA_ISVISIBLEINSECONDARYCAMERA { false }; @@ -326,13 +324,7 @@ void ParabolaPointer::RenderState::ParabolaRenderItem::updateKey() { const gpu::PipelinePointer ParabolaPointer::RenderState::ParabolaRenderItem::getParabolaPipeline() { if (!_parabolaPipeline || !_transparentParabolaPipeline) { - auto vs = parabola_vert::getShader(); - auto ps = parabola_frag::getShader(); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("parabolaData"), 0)); - gpu::Shader::makeProgram(*program, slotBindings); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render_utils::program::parabola); { auto state = std::make_shared(); diff --git a/libraries/render-utils/src/parabola.slf b/libraries/render-utils/src/parabola.slf index ae7a44ddd1..8863f37083 100644 --- a/libraries/render-utils/src/parabola.slf +++ b/libraries/render-utils/src/parabola.slf @@ -9,9 +9,9 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -in vec4 _color; +layout(location=0) in vec4 _color; -out vec4 _fragColor; +layout(location=0) out vec4 _fragColor; void main(void) { _fragColor = _color; diff --git a/libraries/render-utils/src/parabola.slv b/libraries/render-utils/src/parabola.slv index c40fc89302..46d6924191 100644 --- a/libraries/render-utils/src/parabola.slv +++ b/libraries/render-utils/src/parabola.slv @@ -12,7 +12,7 @@ <@include gpu/Transform.slh@> <$declareStandardTransform()$> -layout(std140) uniform parabolaData { +layout(std140, binding=0) uniform parabolaData { vec3 velocity; float parabolicDistance; vec3 acceleration; @@ -22,7 +22,7 @@ layout(std140) uniform parabolaData { ivec3 spare; }; -out vec4 _color; +layout(location=0) out vec4 _color; void main(void) { _color = color; diff --git a/libraries/shaders/CMakeLists.txt b/libraries/shaders/CMakeLists.txt index 06998e3ef5..d27dacc769 100644 --- a/libraries/shaders/CMakeLists.txt +++ b/libraries/shaders/CMakeLists.txt @@ -69,6 +69,8 @@ AUTOSCRIBE_PROGRAM(NAME simple_textured_unlit_fade VERTEX simple_fade) AUTOSCRIBE_PROGRAM(NAME simple_transparent_textured_fade VERTEX simple_fade) AUTOSCRIBE_PROGRAM(NAME simple_transparent_textured_unlit_fade VERTEX simple_fade) +AUTOSCRIBE_PROGRAM(NAME parabola) + AUTOSCRIBE_PROGRAM(NAME sdf_text3D) AUTOSCRIBE_PROGRAM(NAME sdf_text3D_transparent VERTEX sdf_text3D) From a1cd39f4c2d89a8b081ca6c447d5edcdaedbc3c9 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 30 Jul 2018 16:07:00 -0700 Subject: [PATCH 140/332] Fix some explicit bindings that should be binding, not location --- .../src/display-plugins/InterleavedSrgbToLinear.slf | 2 +- libraries/render-utils/src/BloomApply.slf | 2 +- libraries/render-utils/src/BloomThreshold.slf | 2 +- libraries/render-utils/src/drawWorkloadView.slv | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/display-plugins/src/display-plugins/InterleavedSrgbToLinear.slf b/libraries/display-plugins/src/display-plugins/InterleavedSrgbToLinear.slf index db94594fe9..5f7b3f3411 100644 --- a/libraries/display-plugins/src/display-plugins/InterleavedSrgbToLinear.slf +++ b/libraries/display-plugins/src/display-plugins/InterleavedSrgbToLinear.slf @@ -2,7 +2,7 @@ struct TextureData { ivec2 textureSize; }; -layout(std140, location=0) uniform textureDataBuffer { +layout(std140, binding=0) uniform textureDataBuffer { TextureData textureData; }; diff --git a/libraries/render-utils/src/BloomApply.slf b/libraries/render-utils/src/BloomApply.slf index 576a71c7c4..caee76b651 100644 --- a/libraries/render-utils/src/BloomApply.slf +++ b/libraries/render-utils/src/BloomApply.slf @@ -15,7 +15,7 @@ layout(binding=0) uniform sampler2D blurMap0; layout(binding=1) uniform sampler2D blurMap1; layout(binding=2) uniform sampler2D blurMap2; -layout(std140, location=0) uniform parametersBuffer { +layout(std140, binding=RENDER_UTILS_BUFFER_BLOOM_PARAMS) uniform parametersBuffer { Parameters parameters; }; diff --git a/libraries/render-utils/src/BloomThreshold.slf b/libraries/render-utils/src/BloomThreshold.slf index 2756e7aa01..621aa31622 100644 --- a/libraries/render-utils/src/BloomThreshold.slf +++ b/libraries/render-utils/src/BloomThreshold.slf @@ -13,7 +13,7 @@ <@include render-utils/ShaderConstants.h@> layout(binding=RENDER_UTILS_TEXTURE_BLOOM_COLOR) uniform sampler2D colorMap; -layout(std140, location=RENDER_UTILS_BUFFER_BLOOM_PARAMS) uniform parametersBuffer { +layout(std140, binding=RENDER_UTILS_BUFFER_BLOOM_PARAMS) uniform parametersBuffer { Parameters parameters; }; diff --git a/libraries/render-utils/src/drawWorkloadView.slv b/libraries/render-utils/src/drawWorkloadView.slv index 2211bfb1ac..294c3bfa99 100644 --- a/libraries/render-utils/src/drawWorkloadView.slv +++ b/libraries/render-utils/src/drawWorkloadView.slv @@ -65,7 +65,7 @@ struct DrawMesh { vec4 verts[NUM_SEGMENT_PER_VIEW_REGION]; }; -layout(std140, location=0) uniform DrawMeshBuffer { +layout(std140, binding=0) uniform DrawMeshBuffer { DrawMesh _drawMeshBuffer; }; From b3426f695bb4a8a371322c8834a13d6d6330cb4e Mon Sep 17 00:00:00 2001 From: Alexia Mandeville Date: Fri, 3 Aug 2018 15:12:18 -0700 Subject: [PATCH 141/332] Making icon bigger --- .../icons/tablet-icons/EmoteAppIcon.svg | 142 ++++-------------- 1 file changed, 31 insertions(+), 111 deletions(-) diff --git a/interface/resources/icons/tablet-icons/EmoteAppIcon.svg b/interface/resources/icons/tablet-icons/EmoteAppIcon.svg index 4882337358..cef6e8771b 100644 --- a/interface/resources/icons/tablet-icons/EmoteAppIcon.svg +++ b/interface/resources/icons/tablet-icons/EmoteAppIcon.svg @@ -5,115 +5,35 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + From f30b552e1953ec77efcd0544bb2dc54a2c16aba4 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Fri, 3 Aug 2018 15:50:11 -0700 Subject: [PATCH 142/332] fix-flying --- interface/src/avatar/MyAvatar.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 98fbd8fea2..3f738ea4cb 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1135,7 +1135,6 @@ void MyAvatar::saveData() { settings.setValue("collisionSoundURL", _collisionSoundURL); settings.setValue("useSnapTurn", _useSnapTurn); settings.setValue("userHeight", getUserHeight()); - settings.setValue("flyingDesktop", getFlyingDesktopPref()); settings.setValue("flyingHMD", getFlyingHMDPref()); settings.endGroup(); @@ -1289,7 +1288,6 @@ void MyAvatar::loadData() { // Flying preferences must be loaded before calling setFlyingEnabled() Setting::Handle firstRunVal { Settings::firstRun, true }; - setFlyingDesktopPref(firstRunVal.get() ? true : settings.value("flyingDesktop").toBool()); setFlyingHMDPref(firstRunVal.get() ? false : settings.value("flyingHMD").toBool()); setFlyingEnabled(getFlyingEnabled()); From f9d9324a14848cf2979654d35075859791ccb81f Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 4 Aug 2018 10:55:57 +1200 Subject: [PATCH 143/332] Improve text in Avatar app's pop-ups --- interface/resources/qml/hifi/avatarapp/MessageBoxes.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/hifi/avatarapp/MessageBoxes.qml b/interface/resources/qml/hifi/avatarapp/MessageBoxes.qml index 90f55fd8bb..bdb0462f42 100644 --- a/interface/resources/qml/hifi/avatarapp/MessageBoxes.qml +++ b/interface/resources/qml/hifi/avatarapp/MessageBoxes.qml @@ -41,8 +41,8 @@ MessageBox { popup.button1text = 'CANCEL' popup.titleText = 'Get Wearables' popup.bodyText = 'Buy wearables from Marketplace.' + '
' + - 'Wear wearables from My Purchases.' + '
' + '
' + - 'Visit “AvatarIsland” to get wearables' + 'Use wearables in My Purchases.' + '
' + '
' + + 'Visit “AvatarIsland” to get wearables.' popup.imageSource = getWearablesUrl; popup.onButton2Clicked = function() { @@ -102,7 +102,7 @@ MessageBox { popup.titleText = 'Get Avatars' popup.bodyText = 'Buy avatars from Marketplace.' + '
' + - 'Wear avatars from My Purchases.' + '
' + '
' + + 'Wear avatars in My Purchases.' + '
' + '
' + 'Visit “BodyMart” to get free avatars.' popup.imageSource = getAvatarsUrl; From fc51b9369105d92233a3cd3cfdca79342611be8d Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Mon, 30 Jul 2018 17:33:30 -0700 Subject: [PATCH 144/332] Fix OSX build --- libraries/gl/src/gl/Context.cpp | 4 +- libraries/gl/src/gl/GLHelpers.cpp | 25 +++- libraries/gl/src/gl/GLHelpers.h | 12 +- libraries/gl/src/gl/GLShaders.cpp | 93 +++++++------ libraries/gl/src/gl/GLShaders.h | 5 + .../gpu-gl-common/src/gpu/gl/GLBackend.cpp | 2 - .../gpu-gl-common/src/gpu/gl/GLBackend.h | 1 - .../gpu-gl/src/gpu/gl/GLDesktopBackend.cpp | 6 +- libraries/gpu-gl/src/gpu/gl41/GL41Backend.h | 4 - .../gpu-gl/src/gpu/gl41/GL41BackendShader.cpp | 43 +++--- libraries/gpu-gl/src/gpu/gl45/GL45Backend.cpp | 2 + libraries/gpu-gl/src/gpu/gl45/GL45Backend.h | 1 + libraries/gpu/src/gpu/Shader.cpp | 52 ++++++-- libraries/gpu/src/gpu/ShaderConstants.h | 3 + libraries/gpu/src/gpu/TextureTable.slh | 3 +- libraries/gpu/src/gpu/Transform.slh | 4 +- libraries/render-utils/src/BloomApply.slf | 1 + libraries/render-utils/src/Haze.slf | 3 - .../render-utils/src/RenderDeferredTask.cpp | 2 + libraries/render-utils/src/deferred_light.slv | 8 +- .../src/deferred_light_limited.slv | 8 +- .../render-utils/src/deferred_light_point.slv | 2 +- .../render-utils/src/deferred_light_spot.slv | 2 +- .../src/directional_ambient_light.slf | 5 +- .../src/directional_ambient_light_shadow.slf | 4 +- .../src/directional_skybox_light.slf | 4 +- .../src/directional_skybox_light_shadow.slf | 4 +- libraries/render-utils/src/forward_model.slf | 9 +- .../src/forward_model_normal_map.slf | 9 +- .../src/forward_model_translucent.slf | 12 +- .../render-utils/src/forward_model_unlit.slf | 8 +- libraries/render-utils/src/forward_simple.slf | 4 +- .../src/forward_simple_textured.slf | 4 +- .../forward_simple_textured_transparent.slf | 4 +- .../src/forward_simple_textured_unlit.slf | 4 +- .../src/forward_simple_transparent.slf | 4 +- libraries/render-utils/src/glowLine.slf | 3 +- libraries/render-utils/src/glowLine.slv | 2 +- libraries/render-utils/src/hmd_ui.slf | 4 +- libraries/render-utils/src/hmd_ui.slv | 4 +- .../src/local_lights_drawOutline.slf | 4 +- .../render-utils/src/local_lights_shading.slf | 4 +- libraries/render-utils/src/model.slf | 9 +- libraries/render-utils/src/model.slv | 14 +- libraries/render-utils/src/model_fade.slf | 9 +- libraries/render-utils/src/model_fade.slv | 14 +- libraries/render-utils/src/model_lightmap.slf | 9 +- libraries/render-utils/src/model_lightmap.slv | 11 +- .../render-utils/src/model_lightmap_fade.slf | 9 +- .../render-utils/src/model_lightmap_fade.slv | 12 +- .../src/model_lightmap_normal_map.slf | 9 +- .../src/model_lightmap_normal_map.slv | 12 +- .../src/model_lightmap_normal_map_fade.slf | 9 +- .../src/model_lightmap_normal_map_fade.slv | 12 +- .../render-utils/src/model_normal_map.slf | 9 +- .../render-utils/src/model_normal_map.slv | 14 +- .../src/model_normal_map_fade.slf | 9 +- .../src/model_normal_map_fade.slv | 14 +- .../render-utils/src/model_translucent.slf | 12 +- .../render-utils/src/model_translucent.slv | 14 +- .../src/model_translucent_fade.slf | 12 +- .../src/model_translucent_normal_map.slf | 12 +- .../src/model_translucent_normal_map.slv | 14 +- .../src/model_translucent_normal_map_fade.slf | 12 +- .../src/model_translucent_unlit.slf | 11 +- .../src/model_translucent_unlit_fade.slf | 11 +- libraries/render-utils/src/model_unlit.slf | 9 +- .../render-utils/src/model_unlit_fade.slf | 9 +- .../src/render-utils/ShaderConstants.h | 27 ++-- libraries/render-utils/src/sdf_text3D.slf | 4 +- libraries/render-utils/src/sdf_text3D.slv | 4 +- .../src/sdf_text3D_transparent.slf | 4 +- libraries/render-utils/src/simple.slf | 4 +- libraries/render-utils/src/simple.slv | 4 +- libraries/render-utils/src/simple_fade.slf | 4 +- libraries/render-utils/src/simple_fade.slv | 4 +- .../src/simple_opaque_web_browser.slf | 4 +- .../render-utils/src/simple_textured.slf | 4 +- .../render-utils/src/simple_textured_fade.slf | 4 +- .../src/simple_textured_unlit.slf | 4 +- .../src/simple_textured_unlit_fade.slf | 4 +- .../render-utils/src/simple_transparent.slf | 4 +- .../src/simple_transparent_textured.slf | 4 +- .../src/simple_transparent_textured_fade.slf | 4 +- .../src/simple_transparent_textured_unlit.slf | 4 +- ...simple_transparent_textured_unlit_fade.slf | 4 +- .../src/simple_transparent_web_browser.slf | 4 +- libraries/render-utils/src/skin_model.slv | 14 +- libraries/render-utils/src/skin_model_dq.slv | 14 +- .../render-utils/src/skin_model_fade.slv | 14 +- .../render-utils/src/skin_model_fade_dq.slv | 14 +- .../src/skin_model_normal_map.slv | 14 +- .../src/skin_model_normal_map_dq.slv | 14 +- .../src/skin_model_normal_map_fade.slv | 14 +- .../src/skin_model_normal_map_fade_dq.slv | 14 +- libraries/shaders/CMakeLists.txt | 2 +- libraries/shaders/src/shaders/Shaders.cpp | 29 ++-- libraries/ui/src/ui/OffscreenQmlSurface.cpp | 10 ++ tests-manual/render-utils/src/main.cpp | 9 +- tests/shaders/src/ShaderTests.cpp | 124 +++++++++++++++--- tools/shreflect/src/main.cpp | 10 +- 101 files changed, 637 insertions(+), 431 deletions(-) diff --git a/libraries/gl/src/gl/Context.cpp b/libraries/gl/src/gl/Context.cpp index 309839808e..ad7e51fbd3 100644 --- a/libraries/gl/src/gl/Context.cpp +++ b/libraries/gl/src/gl/Context.cpp @@ -269,7 +269,9 @@ void Context::create() { #if defined(USE_GLES) _version = 0x0200; #else - if (GLAD_GL_VERSION_4_5) { + if (gl::disableGl45()) { + _version = 0x0401; + } else if (GLAD_GL_VERSION_4_5) { _version = 0x0405; } else if (GLAD_GL_VERSION_4_3) { _version = 0x0403; diff --git a/libraries/gl/src/gl/GLHelpers.cpp b/libraries/gl/src/gl/GLHelpers.cpp index e3f85afa78..7ebba4f8d8 100644 --- a/libraries/gl/src/gl/GLHelpers.cpp +++ b/libraries/gl/src/gl/GLHelpers.cpp @@ -24,6 +24,26 @@ size_t evalGLFormatSwapchainPixelSize(const QSurfaceFormat& format) { return pixelSize; } +bool gl::disableGl45() { +#if defined(USE_GLES) + return false; +#else + static const QString DEBUG_FLAG("HIFI_DISABLE_OPENGL_45"); + static bool disableOpenGL45 = QProcessEnvironment::systemEnvironment().contains(DEBUG_FLAG); + return disableOpenGL45; +#endif +} + +void gl::getTargetVersion(int& major, int& minor) { +#if defined(USE_GLES) + major = 3; + minor = 2; +#else + major = 4; + minor = disableGl45() ? 1 : 5; +#endif +} + const QSurfaceFormat& getDefaultOpenGLSurfaceFormat() { static QSurfaceFormat format; static std::once_flag once; @@ -40,7 +60,10 @@ const QSurfaceFormat& getDefaultOpenGLSurfaceFormat() { // Qt Quick may need a depth and stencil buffer. Always make sure these are available. format.setDepthBufferSize(DEFAULT_GL_DEPTH_BUFFER_BITS); format.setStencilBufferSize(DEFAULT_GL_STENCIL_BUFFER_BITS); - setGLFormatVersion(format); + int major, minor; + ::gl::getTargetVersion(major, minor); + format.setMajorVersion(major); + format.setMinorVersion(minor); QSurfaceFormat::setDefaultFormat(format); }); return format; diff --git a/libraries/gl/src/gl/GLHelpers.h b/libraries/gl/src/gl/GLHelpers.h index dcbf5a9e77..6252eba2f0 100644 --- a/libraries/gl/src/gl/GLHelpers.h +++ b/libraries/gl/src/gl/GLHelpers.h @@ -26,15 +26,6 @@ class QOpenGLDebugMessage; class QSurfaceFormat; class QGLFormat; -template -// https://bugreports.qt.io/browse/QTBUG-64703 prevents us from using "defined(QT_OPENGL_ES_3_1)" -#if defined(USE_GLES) -void setGLFormatVersion(F& format, int major = 3, int minor = 2) -#else -void setGLFormatVersion(F& format, int major = 4, int minor = 5) -#endif - { format.setVersion(major, minor); } - size_t evalGLFormatSwapchainPixelSize(const QSurfaceFormat& format); const QSurfaceFormat& getDefaultOpenGLSurfaceFormat(); @@ -50,6 +41,9 @@ namespace gl { bool checkGLErrorDebug(const char* name); + bool disableGl45(); + + void getTargetVersion(int& major, int& minor); } // namespace gl #define CHECK_GL_ERROR() ::gl::checkGLErrorDebug(__FUNCTION__) diff --git a/libraries/gl/src/gl/GLShaders.cpp b/libraries/gl/src/gl/GLShaders.cpp index 03b807fbbf..a0d976d727 100644 --- a/libraries/gl/src/gl/GLShaders.cpp +++ b/libraries/gl/src/gl/GLShaders.cpp @@ -102,8 +102,23 @@ Uniforms Uniform::load(GLuint glprogram, const std::vector& indices) { return result; } +Uniform Uniform::loadByName(GLuint glprogram, const std::string& name) { + GLuint index; + const char* nameCStr = name.c_str(); + glGetUniformIndices(glprogram, 1, &nameCStr, &index); + Uniform result; + if (index != GL_INVALID_INDEX) { + result.load(glprogram, index); + } + return result; +} + + Uniforms Uniform::load(GLuint glprogram, const std::vector& cnames) { GLsizei count = static_cast(cnames.size()); + if (0 == count) { + return {}; + } std::vector indices; indices.resize(count); glGetUniformIndices(glprogram, count, cnames.data(), indices.data()); @@ -232,58 +247,28 @@ bool gl::compileShader(GLenum shaderDomain, GLint compiled = 0; glGetShaderiv(glshader, GL_COMPILE_STATUS, &compiled); - GLint infoLength = 0; - glGetShaderiv(glshader, GL_INFO_LOG_LENGTH, &infoLength); - - if ((infoLength > 0) || !compiled) { - char* temp = new char[infoLength]; - glGetShaderInfoLog(glshader, infoLength, NULL, temp); - - message = std::string(temp); - - // if compilation fails - if (!compiled) { - // save the source code to a temp file so we can debug easily - /* - std::ofstream filestream; - filestream.open("debugshader.glsl"); - if (filestream.is_open()) { - for (const auto& str : cstrs) { - filestream << str; - } - filestream.close(); + getShaderInfoLog(glshader, message); + // if compilation fails + if (!compiled) { + qCCritical(glLogging) << "GLShader::compileShader - failed to compile the gl shader object:"; + int lineNumber = 0; + for (const auto& s : cstrs) { + QString str(s); + QStringList lines = str.split("\n"); + for (auto& line : lines) { + qCCritical(glLogging).noquote() << QString("%1: %2").arg(lineNumber++, 5, 10, QChar('0')).arg(line); } - */ - - /* - filestream.open("debugshader.glsl.info.txt"); - if (filestream.is_open()) { - filestream << std::string(temp); - filestream.close(); - } - */ - - qCCritical(glLogging) << "GLShader::compileShader - failed to compile the gl shader object:"; - int lineNumber = 0; - for (const auto& s : cstrs) { - QString str(s); - QStringList lines = str.split("\n"); - for (auto& line : lines) { - qCCritical(glLogging).noquote() << QString("%1: %2").arg(lineNumber++, 5, 10, QChar('0')).arg(line); - } - } - qCCritical(glLogging) << "GLShader::compileShader - errors:"; - qCCritical(glLogging) << temp; - - delete[] temp; - glDeleteShader(glshader); - return false; } + qCCritical(glLogging) << "GLShader::compileShader - errors:"; + qCCritical(glLogging) << message.c_str(); + glDeleteShader(glshader); + return false; + } + if (!message.empty()) { // Compilation success qCWarning(glLogging) << "GLShader::compileShader - Success:"; - qCWarning(glLogging) << temp; - delete[] temp; + qCWarning(glLogging) << message.c_str(); } #ifdef SEPARATE_PROGRAM @@ -341,6 +326,20 @@ bool gl::compileShader(GLenum shaderDomain, return true; } +void gl::getShaderInfoLog(GLuint glshader, std::string& message) { + std::string result; + GLint infoLength = 0; + glGetShaderiv(glshader, GL_INFO_LOG_LENGTH, &infoLength); + if (infoLength > 0) { + char* temp = new char[infoLength]; + glGetShaderInfoLog(glshader, infoLength, NULL, temp); + message = std::string(temp); + delete[] temp; + } else { + message.clear(); + } +} + void gl::getProgramInfoLog(GLuint glprogram, std::string& message) { std::string result; GLint infoLength = 0; diff --git a/libraries/gl/src/gl/GLShaders.h b/libraries/gl/src/gl/GLShaders.h index 5d16bd443e..c12e9d2305 100644 --- a/libraries/gl/src/gl/GLShaders.h +++ b/libraries/gl/src/gl/GLShaders.h @@ -41,9 +41,13 @@ struct Uniform : public ShaderBinding { static Vector load(GLuint glprogram, const std::vector& indices); static Vector load(GLuint glprogram, const std::vector& names); static Vector load(GLuint glprogram, const std::vector& names); + static Uniform loadByName(GLuint glprogram, const std::string& names); template static Vector loadByName(GLuint glprogram, const C& names) { + if (names.empty()) { + return {}; + } std::vector cnames; cnames.reserve(names.size()); for (const auto& name : names) { @@ -113,6 +117,7 @@ bool compileShader(GLenum shaderDomain, GLuint buildProgram(const std::vector& glshaders); GLuint buildProgram(const CachedShader& binary); bool linkProgram(GLuint glprogram, std::string& message); +void getShaderInfoLog(GLuint glshader, std::string& message); void getProgramInfoLog(GLuint glprogram, std::string& message); void getProgramBinary(GLuint glprogram, CachedShader& cachedShader); } // namespace gl diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.cpp b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.cpp index 2d26b4b347..01424c2ac6 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.cpp +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.cpp @@ -108,7 +108,6 @@ GLint GLBackend::MAX_COMBINED_UNIFORM_BLOCKS{ 0 }; GLint GLBackend::MAX_COMBINED_TEXTURE_IMAGE_UNITS{ 0 }; GLint GLBackend::MAX_UNIFORM_BLOCK_SIZE{ 0 }; GLint GLBackend::UNIFORM_BUFFER_OFFSET_ALIGNMENT{ 1 }; -GLint GLBackend::MAX_UNIFORM_LOCATIONS{ 0 }; void GLBackend::init() { static std::once_flag once; @@ -127,7 +126,6 @@ void GLBackend::init() { GL_GET_INTEGER(MAX_COMBINED_UNIFORM_BLOCKS); GL_GET_INTEGER(MAX_UNIFORM_BLOCK_SIZE); GL_GET_INTEGER(UNIFORM_BUFFER_OFFSET_ALIGNMENT); - GL_GET_INTEGER(MAX_UNIFORM_LOCATIONS); qCDebug(gpugllogging) << "GL Version: " << QString((const char*) glGetString(GL_VERSION)); qCDebug(gpugllogging) << "GL Shader Language Version: " << QString((const char*) glGetString(GL_SHADING_LANGUAGE_VERSION)); diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h index 2be13bbae4..cadcec7a56 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h @@ -90,7 +90,6 @@ public: static GLint MAX_COMBINED_UNIFORM_BLOCKS; static GLint MAX_COMBINED_TEXTURE_IMAGE_UNITS; static GLint MAX_UNIFORM_BLOCK_SIZE; - static GLint MAX_UNIFORM_LOCATIONS; static GLint UNIFORM_BUFFER_OFFSET_ALIGNMENT; virtual ~GLBackend(); diff --git a/libraries/gpu-gl/src/gpu/gl/GLDesktopBackend.cpp b/libraries/gpu-gl/src/gpu/gl/GLDesktopBackend.cpp index be8b8cb082..bc7cbdff4a 100644 --- a/libraries/gpu-gl/src/gpu/gl/GLDesktopBackend.cpp +++ b/libraries/gpu-gl/src/gpu/gl/GLDesktopBackend.cpp @@ -16,6 +16,7 @@ #include #include +#include #include #include "../gl41/GL41Backend.h" @@ -24,9 +25,6 @@ using namespace gpu; using namespace gpu::gl; -static const QString DEBUG_FLAG("HIFI_DISABLE_OPENGL_45"); -static bool disableOpenGL45 = QProcessEnvironment::systemEnvironment().contains(DEBUG_FLAG); - static GLBackend* INSTANCE{ nullptr }; BackendPointer GLBackend::createBackend() { @@ -34,7 +32,7 @@ BackendPointer GLBackend::createBackend() { // Where the gpuContext is initialized and where the TRUE Backend is created and assigned auto version = QOpenGLContextWrapper::currentContextVersion(); std::shared_ptr result; - if (!disableOpenGL45 && version >= 0x0405) { + if (!::gl::disableGl45() && version >= 0x0405) { qCDebug(gpugllogging) << "Using OpenGL 4.5 backend"; result = std::make_shared(); } else { diff --git a/libraries/gpu-gl/src/gpu/gl41/GL41Backend.h b/libraries/gpu-gl/src/gpu/gl41/GL41Backend.h index 8cf44a33d8..c6fbc43ae5 100644 --- a/libraries/gpu-gl/src/gpu/gl41/GL41Backend.h +++ b/libraries/gpu-gl/src/gpu/gl41/GL41Backend.h @@ -19,11 +19,7 @@ #define GPU_CORE_41 410 #define GPU_CORE_43 430 -#ifdef Q_OS_MAC #define GPU_INPUT_PROFILE GPU_CORE_41 -#else -#define GPU_INPUT_PROFILE GPU_CORE_43 -#endif namespace gpu { namespace gl41 { diff --git a/libraries/gpu-gl/src/gpu/gl41/GL41BackendShader.cpp b/libraries/gpu-gl/src/gpu/gl41/GL41BackendShader.cpp index 2c3010e0f5..8a67ff9619 100644 --- a/libraries/gpu-gl/src/gpu/gl41/GL41BackendShader.cpp +++ b/libraries/gpu-gl/src/gpu/gl41/GL41BackendShader.cpp @@ -35,36 +35,41 @@ void GL41Backend::postLinkProgram(ShaderObject& programObject, const Shader& pro continue; } const auto& targetLocation = expectedUbos.at(name); - if (ubo.binding != targetLocation) { - glUniformBlockBinding(glprogram, ubo.index, targetLocation); + glUniformBlockBinding(glprogram, ubo.index, targetLocation); + } + } + + // For the Textures, use glUniform1i to fixup the active texture slots based on the reflection + { + const auto expectedTextures = program.getTextures().getLocationsByName(); + for (const auto& expectedTexture : expectedTextures) { + auto location = glGetUniformLocation(glprogram, expectedTexture.first.c_str()); + if (location < 0) { + continue; } + glProgramUniform1i(glprogram, location, expectedTexture.second); } } - // For the Textures, us glUniform1i to fixup the active texture slots based on the reflection + // For the resource buffers, do the same as for the textures, since in GL 4.1 that's how they're implemented { - const auto expectedTextures = program.getTextures().getLocationsByName(); - const auto textureUniforms = ::gl::Uniform::loadByName(glprogram, program.getTextures().getNames()); - for (const auto& texture : textureUniforms) { - const auto& targetBinding = expectedTextures.at(texture.name); - glProgramUniform1i(glprogram, texture.binding, targetBinding); + const auto expectedResourceBuffers = program.getResourceBuffers().getLocationsByName(); + const auto resourceBufferUniforms = ::gl::Uniform::loadByName(glprogram, program.getResourceBuffers().getNames()); + for (const auto& resourceBuffer : resourceBufferUniforms) { + const auto& targetBinding = expectedResourceBuffers.at(resourceBuffer.name); + glProgramUniform1i(glprogram, resourceBuffer.binding, targetBinding); } } - // For the resource buffers + // Special case for the transformObjectBuffer, which is filtered out of the reflection data at shader load time + // { - const auto expectedTextures = program.getTextures().getLocationsByName(); - const auto textureUniforms = ::gl::Uniform::loadByName(glprogram, program.getTextures().getNames()); - for (const auto& texture : textureUniforms) { - const auto& targetBinding = expectedTextures.at(texture.name); - glProgramUniform1i(glprogram, texture.binding, targetBinding); + static const std::string TRANSFORM_OBJECT_BUFFER = "transformObjectBuffer"; + const auto uniform = ::gl::Uniform::loadByName(glprogram, TRANSFORM_OBJECT_BUFFER); + if (-1 != uniform.binding) { + glProgramUniform1i(glprogram, uniform.binding, ::gpu::slot::texture::ObjectTransforms); } } - -#if defined(Q_OS_MAC) - // For the uniforms, we need to create a remapping layer - programObject.uniformRemap = buildRemap(glprogram, program.getUniforms()); -#endif } diff --git a/libraries/gpu-gl/src/gpu/gl45/GL45Backend.cpp b/libraries/gpu-gl/src/gpu/gl45/GL45Backend.cpp index 8f8e158334..bbe011d237 100644 --- a/libraries/gpu-gl/src/gpu/gl45/GL45Backend.cpp +++ b/libraries/gpu-gl/src/gpu/gl45/GL45Backend.cpp @@ -19,11 +19,13 @@ using namespace gpu; using namespace gpu::gl45; GLint GL45Backend::MAX_COMBINED_SHADER_STORAGE_BLOCKS{ 0 }; +GLint GL45Backend::MAX_UNIFORM_LOCATIONS{ 0 }; static void staticInit() { static std::once_flag once; std::call_once(once, [&] { glGetIntegerv(GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, &GL45Backend::MAX_COMBINED_SHADER_STORAGE_BLOCKS); + glGetIntegerv(GL_MAX_UNIFORM_LOCATIONS, &GL45Backend::MAX_UNIFORM_LOCATIONS); }); } const std::string GL45Backend::GL45_VERSION { "GL45" }; diff --git a/libraries/gpu-gl/src/gpu/gl45/GL45Backend.h b/libraries/gpu-gl/src/gpu/gl45/GL45Backend.h index 8694e15d97..658bea2a3e 100644 --- a/libraries/gpu-gl/src/gpu/gl45/GL45Backend.h +++ b/libraries/gpu-gl/src/gpu/gl45/GL45Backend.h @@ -34,6 +34,7 @@ class GL45Backend : public GLBackend { public: static GLint MAX_COMBINED_SHADER_STORAGE_BLOCKS; + static GLint MAX_UNIFORM_LOCATIONS; #if GPU_BINDLESS_TEXTURES virtual bool supportsBindless() const override { return true; } #endif diff --git a/libraries/gpu/src/gpu/Shader.cpp b/libraries/gpu/src/gpu/Shader.cpp index cea7ec6e14..0191d9d4f1 100755 --- a/libraries/gpu/src/gpu/Shader.cpp +++ b/libraries/gpu/src/gpu/Shader.cpp @@ -204,9 +204,33 @@ Shader::Pointer Shader::createProgram(const Pointer& vertexShader, const Pointer return createOrReuseProgramShader(PROGRAM, vertexShader, geometryShader, pixelShader); } +static const std::string IGNORED_BINDING = "transformObjectBuffer"; + void updateBindingsFromJsonObject(Shader::LocationMap& inOutSet, const QJsonObject& json) { for (const auto& key : json.keys()) { - inOutSet[key.toStdString()] = json[key].toInt(); + auto keyStr = key.toStdString(); + if (IGNORED_BINDING == keyStr) { + continue; + } + inOutSet[keyStr] = json[key].toInt(); + } +} + +void updateTextureAndResourceBuffersFromJsonObjects(Shader::LocationMap& inOutTextures, Shader::LocationMap& inOutResourceBuffers, + const QJsonObject& json, const QJsonObject& types) { + static const std::string RESOURCE_BUFFER_TEXTURE_TYPE = "samplerBuffer"; + for (const auto& key : json.keys()) { + auto keyStr = key.toStdString(); + if (keyStr == IGNORED_BINDING) { + continue; + } + auto location = json[key].toInt(); + auto type = types[key].toString().toStdString(); + if (type == RESOURCE_BUFFER_TEXTURE_TYPE) { + inOutResourceBuffers[keyStr] = location; + } else { + inOutTextures[key.toStdString()] = location; + } } } @@ -221,6 +245,7 @@ Shader::ReflectionMap getShaderReflection(const std::string& reflectionJson) { #define REFLECT_KEY_SSBOS "storageBuffers" #define REFLECT_KEY_UNIFORMS "uniforms" #define REFLECT_KEY_TEXTURES "textures" +#define REFLECT_KEY_TEXTURE_TYPES "textureTypes" auto doc = QJsonDocument::fromJson(reflectionJson.c_str()); if (doc.isNull()) { @@ -236,17 +261,28 @@ Shader::ReflectionMap getShaderReflection(const std::string& reflectionJson) { if (json.contains(REFLECT_KEY_OUTPUTS)) { updateBindingsFromJsonObject(result[Shader::BindingType::OUTPUT], json[REFLECT_KEY_OUTPUTS].toObject()); } - if (json.contains(REFLECT_KEY_UBOS)) { - updateBindingsFromJsonObject(result[Shader::BindingType::UNIFORM_BUFFER], json[REFLECT_KEY_UBOS].toObject()); - } - if (json.contains(REFLECT_KEY_TEXTURES)) { - updateBindingsFromJsonObject(result[Shader::BindingType::TEXTURE], json[REFLECT_KEY_TEXTURES].toObject()); - } + // FIXME eliminate the last of the uniforms if (json.contains(REFLECT_KEY_UNIFORMS)) { updateBindingsFromJsonObject(result[Shader::BindingType::UNIFORM], json[REFLECT_KEY_UNIFORMS].toObject()); } + if (json.contains(REFLECT_KEY_UBOS)) { + updateBindingsFromJsonObject(result[Shader::BindingType::UNIFORM_BUFFER], json[REFLECT_KEY_UBOS].toObject()); + } + + // SSBOs need to come BEFORE the textures. In GL 4.5 the reflection slots aren't really used, but in 4.1 the slots + // are used to explicitly setup bindings after shader linkage, so we want the resource buffer slots to contain the + // texture locations, not the SSBO locations if (json.contains(REFLECT_KEY_SSBOS)) { - updateBindingsFromJsonObject(result[Shader::BindingType::UNIFORM], json[REFLECT_KEY_SSBOS].toObject()); + updateBindingsFromJsonObject(result[Shader::BindingType::RESOURCE_BUFFER], json[REFLECT_KEY_SSBOS].toObject()); + } + + // samplerBuffer textures map to gpu ResourceBuffer, while all other textures map to regular gpu Texture + if (json.contains(REFLECT_KEY_TEXTURES)) { + updateTextureAndResourceBuffersFromJsonObjects( + result[Shader::BindingType::TEXTURE], + result[Shader::BindingType::RESOURCE_BUFFER], + json[REFLECT_KEY_TEXTURES].toObject(), + json[REFLECT_KEY_TEXTURE_TYPES].toObject()); } diff --git a/libraries/gpu/src/gpu/ShaderConstants.h b/libraries/gpu/src/gpu/ShaderConstants.h index dd9b350a4e..dc5879e7ad 100644 --- a/libraries/gpu/src/gpu/ShaderConstants.h +++ b/libraries/gpu/src/gpu/ShaderConstants.h @@ -37,6 +37,9 @@ #define GPU_ATTR_STEREO_SIDE 14 #define GPU_ATTR_DRAW_CALL_INFO 15 +// OSX seems to have an issue using 14 as an attribute location for passing from the vertex to the fragment shader +#define GPU_ATTR_V2F_STEREO_SIDE 8 + #define GPU_UNIFORM_COLOR 101 #define GPU_UNIFORM_TEXCOORD_RECT 102 #define GPU_UNIFORM_EXTRA0 110 diff --git a/libraries/gpu/src/gpu/TextureTable.slh b/libraries/gpu/src/gpu/TextureTable.slh index f2d89e753b..bedbff954b 100644 --- a/libraries/gpu/src/gpu/TextureTable.slh +++ b/libraries/gpu/src/gpu/TextureTable.slh @@ -22,8 +22,7 @@ struct GPUTextureTable { #define tableTex(name, slot) sampler2D(name._textures[slot].xy) #define tableTexMinLod(name, slot) float(name._textures[slot].z) -#define tableTexValue(name, slot, uv) \ - tableTexValueLod(tableTex(matTex, albedoMap), tableTexMinLod(matTex, albedoMap), uv) +#define tableTexValue(name, slot, uv) tableTexValueLod(tableTex(matTex, albedoMap), tableTexMinLod(matTex, albedoMap), uv) vec4 tableTexValueLod(sampler2D sampler, float minLod, vec2 uv) { float queryLod = textureQueryLod(sampler, uv).x; diff --git a/libraries/gpu/src/gpu/Transform.slh b/libraries/gpu/src/gpu/Transform.slh index fd389e1d50..d0b7587da6 100644 --- a/libraries/gpu/src/gpu/Transform.slh +++ b/libraries/gpu/src/gpu/Transform.slh @@ -35,7 +35,7 @@ layout(std140, binding=GPU_BUFFER_TRANSFORM_CAMERA) uniform transformCameraBuffe layout(location=GPU_ATTR_STEREO_SIDE) in int _inStereoSide; #endif -layout(location=GPU_ATTR_STEREO_SIDE) flat out int _stereoSide; +layout(location=GPU_ATTR_V2F_STEREO_SIDE) flat out int _stereoSide; // In stereo drawcall mode Instances are drawn twice (left then right) hence the true InstanceID is the gl_InstanceID / 2 int gpu_InstanceID() { @@ -60,7 +60,7 @@ int gpu_InstanceID() { #ifdef GPU_PIXEL_SHADER #ifdef GPU_TRANSFORM_STEREO_CAMERA -layout(location=GPU_ATTR_STEREO_SIDE) flat in int _stereoSide; +layout(location=GPU_ATTR_V2F_STEREO_SIDE) flat in int _stereoSide; #endif #endif diff --git a/libraries/render-utils/src/BloomApply.slf b/libraries/render-utils/src/BloomApply.slf index caee76b651..a53894de60 100644 --- a/libraries/render-utils/src/BloomApply.slf +++ b/libraries/render-utils/src/BloomApply.slf @@ -10,6 +10,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // <@include BloomApply.shared.slh@> +<@include render-utils/ShaderConstants.h@> layout(binding=0) uniform sampler2D blurMap0; layout(binding=1) uniform sampler2D blurMap1; diff --git a/libraries/render-utils/src/Haze.slf b/libraries/render-utils/src/Haze.slf index ce5141d3c6..bb3c0bc769 100644 --- a/libraries/render-utils/src/Haze.slf +++ b/libraries/render-utils/src/Haze.slf @@ -19,9 +19,6 @@ <@include LightingModel.slh@> <$declareLightBuffer()$> -<@include LightDirectional.slh@> -<$declareLightingDirectional(_SCRIBE_NULL)$> - <@include Haze.slh@> layout(binding=RENDER_UTILS_TEXTURE_HAZE_LINEAR_DEPTH) uniform sampler2D linearDepthMap; diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index ea9655d26d..59c86acd19 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -12,6 +12,8 @@ #include "RenderDeferredTask.h" +#include + #include #include diff --git a/libraries/render-utils/src/deferred_light.slv b/libraries/render-utils/src/deferred_light.slv index 3b8aee6aae..654e9a69b2 100644 --- a/libraries/render-utils/src/deferred_light.slv +++ b/libraries/render-utils/src/deferred_light.slv @@ -14,7 +14,7 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_UNIFORM_LIGHT_TEXCOORD_TRANSFORM) uniform vec4 texcoordFrameTransform; @@ -28,10 +28,10 @@ void main(void) { ); vec4 pos = UNIT_QUAD[gl_VertexID]; - _texCoord0 = (pos.xy + 1.0) * 0.5; + _texCoord01.xy = (pos.xy + 1.0) * 0.5; - _texCoord0 *= texcoordFrameTransform.zw; - _texCoord0 += texcoordFrameTransform.xy; + _texCoord01.xy *= texcoordFrameTransform.zw; + _texCoord01.xy += texcoordFrameTransform.xy; gl_Position = pos; } diff --git a/libraries/render-utils/src/deferred_light_limited.slv b/libraries/render-utils/src/deferred_light_limited.slv index 790c305204..fb59b8e78f 100644 --- a/libraries/render-utils/src/deferred_light_limited.slv +++ b/libraries/render-utils/src/deferred_light_limited.slv @@ -20,7 +20,7 @@ uniform vec4 sphereParam; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec4 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; void main(void) { if (sphereParam.w != 0.0) { @@ -41,7 +41,7 @@ void main(void) { } #endif #endif - _texCoord0 = vec4(projected.xy, 0.0, 1.0) * gl_Position.w; + _texCoord01.xy = vec4(projected.xy, 0.0, 1.0) * gl_Position.w; } else { const float depth = -1.0; //Draw at near plane const vec4 UNIT_QUAD[4] = vec4[4]( @@ -60,13 +60,13 @@ void main(void) { #endif #endif - _texCoord0 = vec4((pos.xy + 1.0) * 0.5, 0.0, 1.0); + _texCoord01.xy = vec4((pos.xy + 1.0) * 0.5, 0.0, 1.0); #ifdef GPU_TRANSFORM_IS_STEREO #ifdef GPU_TRANSFORM_STEREO_SPLIT_SCREEN #else if (cam_isStereo()) { - _texCoord0.x = 0.5 * (_texCoord0.x + cam_getStereoSide()); + _texCoord01.x = 0.5 * (_texCoord01.x + cam_getStereoSide()); } #endif #endif diff --git a/libraries/render-utils/src/deferred_light_point.slv b/libraries/render-utils/src/deferred_light_point.slv index 85707b322d..1f4c66b6e5 100644 --- a/libraries/render-utils/src/deferred_light_point.slv +++ b/libraries/render-utils/src/deferred_light_point.slv @@ -26,7 +26,7 @@ layout(binding=RENDER_UTILS_BUFFER_LIGHT_INDEX) uniform lightIndexBuffer { int lightIndex[256]; }; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec4 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord0; void main(void) { diff --git a/libraries/render-utils/src/deferred_light_spot.slv b/libraries/render-utils/src/deferred_light_spot.slv index 637df14175..c86551936b 100644 --- a/libraries/render-utils/src/deferred_light_spot.slv +++ b/libraries/render-utils/src/deferred_light_spot.slv @@ -24,7 +24,7 @@ layout(binding=RENDER_UTILS_BUFFER_LIGHT_INDEX) uniform lightIndexBuffer { int lightIndex[256]; }; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec4 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord0; void main(void) { vec4 coneVertex = inPosition; diff --git a/libraries/render-utils/src/directional_ambient_light.slf b/libraries/render-utils/src/directional_ambient_light.slf index 86adc744e2..3105b76bde 100644 --- a/libraries/render-utils/src/directional_ambient_light.slf +++ b/libraries/render-utils/src/directional_ambient_light.slf @@ -22,8 +22,9 @@ <$declareEvalAmbientSphereGlobalColor(supportScattering)$> - -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/directional_ambient_light_shadow.slf b/libraries/render-utils/src/directional_ambient_light_shadow.slf index f54f01c4af..88c0188048 100644 --- a/libraries/render-utils/src/directional_ambient_light_shadow.slf +++ b/libraries/render-utils/src/directional_ambient_light_shadow.slf @@ -20,7 +20,9 @@ <$declareEvalLightmappedColor()$> <$declareEvalAmbientSphereGlobalColor(isScattering)$> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/directional_skybox_light.slf b/libraries/render-utils/src/directional_skybox_light.slf index f9b7664d10..56a7cd1883 100644 --- a/libraries/render-utils/src/directional_skybox_light.slf +++ b/libraries/render-utils/src/directional_skybox_light.slf @@ -19,7 +19,9 @@ <$declareEvalLightmappedColor()$> <$declareEvalSkyboxGlobalColor(isScattering)$> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/directional_skybox_light_shadow.slf b/libraries/render-utils/src/directional_skybox_light_shadow.slf index 34a836e5b0..6eaa989c6b 100644 --- a/libraries/render-utils/src/directional_skybox_light_shadow.slf +++ b/libraries/render-utils/src/directional_skybox_light_shadow.slf @@ -20,7 +20,9 @@ <$declareEvalLightmappedColor()$> <$declareEvalSkyboxGlobalColor(isScattering)$> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/forward_model.slf b/libraries/render-utils/src/forward_model.slf index 6df5343c5c..82d776602f 100644 --- a/libraries/render-utils/src/forward_model.slf +++ b/libraries/render-utils/src/forward_model.slf @@ -26,10 +26,11 @@ <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, METALLIC, EMISSIVE, OCCLUSION)$> layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=0) out vec4 _fragColor0; @@ -45,7 +46,7 @@ void main(void) { vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; float roughness = getMaterialRoughness(mat); <$evalMaterialRoughness(roughnessTex, roughness, matKey, roughness)$>; diff --git a/libraries/render-utils/src/forward_model_normal_map.slf b/libraries/render-utils/src/forward_model_normal_map.slf index 88f9df1ecf..21ed0b9359 100644 --- a/libraries/render-utils/src/forward_model_normal_map.slf +++ b/libraries/render-utils/src/forward_model_normal_map.slf @@ -24,11 +24,12 @@ <$declareMaterialTextures(ALBEDO, ROUGHNESS, NORMAL, METALLIC, EMISSIVE, OCCLUSION)$> layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=0) out vec4 _fragColor0; @@ -44,7 +45,7 @@ void main(void) { vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; float roughness = getMaterialRoughness(mat); <$evalMaterialRoughness(roughnessTex, roughness, matKey, roughness)$>; diff --git a/libraries/render-utils/src/forward_model_translucent.slf b/libraries/render-utils/src/forward_model_translucent.slf index 5b69a6cb21..74d200542f 100644 --- a/libraries/render-utils/src/forward_model_translucent.slf +++ b/libraries/render-utils/src/forward_model_translucent.slf @@ -23,12 +23,12 @@ <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, METALLIC, EMISSIVE, OCCLUSION)$> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=0) out vec4 _fragColor0; @@ -38,13 +38,13 @@ void main(void) { <$fetchMaterialTexturesCoord0(matKey, _texCoord0, albedoTex, roughnessTex, _SCRIBE_NULL, metallicTex, emissiveTex)$> <$fetchMaterialTexturesCoord1(matKey, _texCoord1, occlusionTex)$> - float opacity = getMaterialOpacity(mat) * _alpha; + float opacity = getMaterialOpacity(mat) * _color.a; <$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; <$discardTransparent(opacity)$>; vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; float roughness = getMaterialRoughness(mat); <$evalMaterialRoughness(roughnessTex, roughness, matKey, roughness)$>; diff --git a/libraries/render-utils/src/forward_model_unlit.slf b/libraries/render-utils/src/forward_model_unlit.slf index d01bd70815..daad2ee6b9 100644 --- a/libraries/render-utils/src/forward_model_unlit.slf +++ b/libraries/render-utils/src/forward_model_unlit.slf @@ -19,8 +19,10 @@ <$declareMaterialTextures(ALBEDO)$> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=0) out vec4 _fragColor0; @@ -36,7 +38,7 @@ void main(void) { vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; if (opacity != 1.0) { discard; diff --git a/libraries/render-utils/src/forward_simple.slf b/libraries/render-utils/src/forward_simple.slf index d4cf85d802..09365635cf 100644 --- a/libraries/render-utils/src/forward_simple.slf +++ b/libraries/render-utils/src/forward_simple.slf @@ -21,7 +21,9 @@ layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; diff --git a/libraries/render-utils/src/forward_simple_textured.slf b/libraries/render-utils/src/forward_simple_textured.slf index 0c50b0b599..532d12dd17 100644 --- a/libraries/render-utils/src/forward_simple_textured.slf +++ b/libraries/render-utils/src/forward_simple_textured.slf @@ -27,7 +27,9 @@ layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=0) out vec4 _fragColor0; diff --git a/libraries/render-utils/src/forward_simple_textured_transparent.slf b/libraries/render-utils/src/forward_simple_textured_transparent.slf index d1cd21b4cb..98dc0bb368 100644 --- a/libraries/render-utils/src/forward_simple_textured_transparent.slf +++ b/libraries/render-utils/src/forward_simple_textured_transparent.slf @@ -27,7 +27,9 @@ layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=0) out vec4 _fragColor0; diff --git a/libraries/render-utils/src/forward_simple_textured_unlit.slf b/libraries/render-utils/src/forward_simple_textured_unlit.slf index cca371a1ff..7d3bf5912a 100644 --- a/libraries/render-utils/src/forward_simple_textured_unlit.slf +++ b/libraries/render-utils/src/forward_simple_textured_unlit.slf @@ -23,7 +23,9 @@ layout(location=0) out vec4 _fragColor0; layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; void main(void) { vec4 texel = texture(originalTexture, _texCoord0.st); diff --git a/libraries/render-utils/src/forward_simple_transparent.slf b/libraries/render-utils/src/forward_simple_transparent.slf index 46328b77b6..a47d5963a2 100644 --- a/libraries/render-utils/src/forward_simple_transparent.slf +++ b/libraries/render-utils/src/forward_simple_transparent.slf @@ -20,7 +20,9 @@ layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; diff --git a/libraries/render-utils/src/glowLine.slf b/libraries/render-utils/src/glowLine.slf index 69757ec92a..4e80b3358a 100644 --- a/libraries/render-utils/src/glowLine.slf +++ b/libraries/render-utils/src/glowLine.slf @@ -12,8 +12,7 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; - -layout(location=1) in float distanceFromCenter; +layout(location=0) in float distanceFromCenter; layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/glowLine.slv b/libraries/render-utils/src/glowLine.slv index 70947350a4..075b291589 100644 --- a/libraries/render-utils/src/glowLine.slv +++ b/libraries/render-utils/src/glowLine.slv @@ -27,7 +27,7 @@ layout(std140, binding=0) uniform LineDataBuffer { layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; // the distance from the center in 'quad space' -layout(location=1) out float distanceFromCenter; +layout(location=0) out float distanceFromCenter; void main(void) { _color = _lineData.color; diff --git a/libraries/render-utils/src/hmd_ui.slf b/libraries/render-utils/src/hmd_ui.slf index d0e6798cec..b8bca889bf 100644 --- a/libraries/render-utils/src/hmd_ui.slf +++ b/libraries/render-utils/src/hmd_ui.slf @@ -23,7 +23,9 @@ layout(std140, binding=0) uniform hudBuffer { HUDData hud; }; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=0) out vec4 fragColor0; diff --git a/libraries/render-utils/src/hmd_ui.slv b/libraries/render-utils/src/hmd_ui.slv index 5352a5ba68..ab0d77c42a 100644 --- a/libraries/render-utils/src/hmd_ui.slv +++ b/libraries/render-utils/src/hmd_ui.slv @@ -26,10 +26,10 @@ layout(std140, binding=0) uniform hudBuffer { HUDData hud; }; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; void main() { - _texCoord0 = inTexCoord0.st; + _texCoord01.xy = inTexCoord0.st; // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/local_lights_drawOutline.slf b/libraries/render-utils/src/local_lights_drawOutline.slf index c2a53e0490..ff6476e21c 100644 --- a/libraries/render-utils/src/local_lights_drawOutline.slf +++ b/libraries/render-utils/src/local_lights_drawOutline.slf @@ -33,7 +33,9 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/local_lights_shading.slf b/libraries/render-utils/src/local_lights_shading.slf index 60cd9c426d..14cecd1815 100644 --- a/libraries/render-utils/src/local_lights_shading.slf +++ b/libraries/render-utils/src/local_lights_shading.slf @@ -21,7 +21,9 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/model.slf b/libraries/render-utils/src/model.slf index 20fa10f44c..70b71e0d22 100644 --- a/libraries/render-utils/src/model.slf +++ b/libraries/render-utils/src/model.slf @@ -19,10 +19,11 @@ <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, METALLIC, EMISSIVE, OCCLUSION, SCATTERING)$> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; void main(void) { Material mat = getMaterial(); @@ -36,7 +37,7 @@ void main(void) { vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; float roughness = getMaterialRoughness(mat); <$evalMaterialRoughness(roughnessTex, roughness, matKey, roughness)$>; diff --git a/libraries/render-utils/src/model.slv b/libraries/render-utils/src/model.slv index 1ec5cf83aa..3763b8d2de 100644 --- a/libraries/render-utils/src/model.slv +++ b/libraries/render-utils/src/model.slv @@ -22,19 +22,17 @@ <$declareMaterialTexMapArrayBuffer()$> layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; void main(void) { - _color = color_sRGBToLinear(inColor.xyz); - _alpha = inColor.w; + _color.rgb = color_sRGBToLinear(inColor.rgb); + _color.a = inColor.a; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord01.zw)$> // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/model_fade.slf b/libraries/render-utils/src/model_fade.slf index 31a4f4db6e..23c629ddb0 100644 --- a/libraries/render-utils/src/model_fade.slf +++ b/libraries/render-utils/src/model_fade.slf @@ -25,10 +25,11 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; void main(void) { vec3 fadeEmissive; @@ -48,7 +49,7 @@ void main(void) { vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; float roughness = getMaterialRoughness(mat); <$evalMaterialRoughness(roughnessTex, roughness, matKey, roughness)$>; diff --git a/libraries/render-utils/src/model_fade.slv b/libraries/render-utils/src/model_fade.slv index e3f7924bc2..84f4f08fed 100644 --- a/libraries/render-utils/src/model_fade.slv +++ b/libraries/render-utils/src/model_fade.slv @@ -23,19 +23,17 @@ layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; void main(void) { - _color = color_sRGBToLinear(inColor.xyz); - _alpha = inColor.w; + _color.rgb = color_sRGBToLinear(inColor.rgb); + _color.a = inColor.w; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord01.zw)$> // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/model_lightmap.slf b/libraries/render-utils/src/model_lightmap.slf index 3cd20b1a35..34da0a8a05 100644 --- a/libraries/render-utils/src/model_lightmap.slf +++ b/libraries/render-utils/src/model_lightmap.slf @@ -21,10 +21,11 @@ <$declareMaterialLightmap()$> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; void main(void) { Material mat = getMaterial(); @@ -35,7 +36,7 @@ void main(void) { packDeferredFragmentLightmap( normalize(_normalWS), evalOpaqueFinalAlpha(getMaterialOpacity(mat), albedo.a), - getMaterialAlbedo(mat) * albedo.rgb * _color, + getMaterialAlbedo(mat) * albedo.rgb * _color.rgb, getMaterialRoughness(mat) * roughness, getMaterialMetallic(mat) * metallicTex, /*metallicTex, // no use of */getMaterialFresnel(mat), diff --git a/libraries/render-utils/src/model_lightmap.slv b/libraries/render-utils/src/model_lightmap.slv index e82fcaf85b..7306e2c831 100644 --- a/libraries/render-utils/src/model_lightmap.slv +++ b/libraries/render-utils/src/model_lightmap.slv @@ -23,19 +23,18 @@ <$declareMaterialTexMapArrayBuffer()$> layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; void main(void) { // pass along the color in linear space - _color = color_sRGBToLinear(inColor.xyz); + _color.rgb = color_sRGBToLinear(inColor.xyz); // and the texture coordinates TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord1, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord1, _texCoord01.zw)$> // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/model_lightmap_fade.slf b/libraries/render-utils/src/model_lightmap_fade.slf index c7852cfd3f..6f6dd9c413 100644 --- a/libraries/render-utils/src/model_lightmap_fade.slf +++ b/libraries/render-utils/src/model_lightmap_fade.slf @@ -25,10 +25,11 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; void main(void) { @@ -46,7 +47,7 @@ void main(void) { packDeferredFragmentLightmap( normalize(_normalWS), evalOpaqueFinalAlpha(getMaterialOpacity(mat), albedo.a), - getMaterialAlbedo(mat) * albedo.rgb * _color, + getMaterialAlbedo(mat) * albedo.rgb * _color.rgb, getMaterialRoughness(mat) * roughness, getMaterialMetallic(mat) * metallicTex, /*metallicTex, // no use of */getMaterialFresnel(mat), diff --git a/libraries/render-utils/src/model_lightmap_fade.slv b/libraries/render-utils/src/model_lightmap_fade.slv index 5be90e2384..d174d3c1d3 100644 --- a/libraries/render-utils/src/model_lightmap_fade.slv +++ b/libraries/render-utils/src/model_lightmap_fade.slv @@ -23,20 +23,20 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { // pass along the color in linear space - _color = color_sRGBToLinear(inColor.xyz); + _color.rgb = color_sRGBToLinear(inColor.xyz); + _color.a = 1.0; // and the texture coordinates TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord1, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord1, _texCoord01.zw)$> // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/model_lightmap_normal_map.slf b/libraries/render-utils/src/model_lightmap_normal_map.slf index 9f26c3063d..362c331f63 100644 --- a/libraries/render-utils/src/model_lightmap_normal_map.slf +++ b/libraries/render-utils/src/model_lightmap_normal_map.slf @@ -21,11 +21,12 @@ <$declareMaterialLightmap()$> layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; void main(void) { Material mat = getMaterial(); @@ -39,7 +40,7 @@ void main(void) { packDeferredFragmentLightmap( normalize(fragNormal.xyz), evalOpaqueFinalAlpha(getMaterialOpacity(mat), albedo.a), - getMaterialAlbedo(mat) * albedo.rgb * _color, + getMaterialAlbedo(mat) * albedo.rgb * _color.rgb, getMaterialRoughness(mat) * roughness, getMaterialMetallic(mat) * metallicTex, /*specular, // no use of */ getMaterialFresnel(mat), diff --git a/libraries/render-utils/src/model_lightmap_normal_map.slv b/libraries/render-utils/src/model_lightmap_normal_map.slv index 02524268ec..17794bce5f 100644 --- a/libraries/render-utils/src/model_lightmap_normal_map.slv +++ b/libraries/render-utils/src/model_lightmap_normal_map.slv @@ -24,19 +24,19 @@ layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; void main(void) { // pass along the color in linear space - _color = color_sRGBToLinear(inColor.xyz); + _color.rgb = color_sRGBToLinear(inColor.xyz); + _color.a = 1.0; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord1, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord1, _texCoord01.zw)$> // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/model_lightmap_normal_map_fade.slf b/libraries/render-utils/src/model_lightmap_normal_map_fade.slf index b1563a6ad9..bbeade488e 100644 --- a/libraries/render-utils/src/model_lightmap_normal_map_fade.slf +++ b/libraries/render-utils/src/model_lightmap_normal_map_fade.slf @@ -26,11 +26,12 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; void main(void) { @@ -51,7 +52,7 @@ void main(void) { packDeferredFragmentLightmap( normalize(fragNormal.xyz), evalOpaqueFinalAlpha(getMaterialOpacity(mat), albedo.a), - getMaterialAlbedo(mat) * albedo.rgb * _color, + getMaterialAlbedo(mat) * albedo.rgb * _color.rgb, getMaterialRoughness(mat) * roughness, getMaterialMetallic(mat) * metallicTex, /*specular, // no use of */ getMaterialFresnel(mat), diff --git a/libraries/render-utils/src/model_lightmap_normal_map_fade.slv b/libraries/render-utils/src/model_lightmap_normal_map_fade.slv index 82f6d795d8..50a2bc43c9 100644 --- a/libraries/render-utils/src/model_lightmap_normal_map_fade.slv +++ b/libraries/render-utils/src/model_lightmap_normal_map_fade.slv @@ -23,20 +23,20 @@ layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { // pass along the color in linear space - _color = color_sRGBToLinear(inColor.xyz); + _color.rgb = color_sRGBToLinear(inColor.xyz); + _color.a = 1.0; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord1, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord1, _texCoord01.zw)$> // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/model_normal_map.slf b/libraries/render-utils/src/model_normal_map.slf index 5d8ba00936..4e89dfb3e8 100644 --- a/libraries/render-utils/src/model_normal_map.slf +++ b/libraries/render-utils/src/model_normal_map.slf @@ -20,11 +20,12 @@ <$declareMaterialTextures(ALBEDO, ROUGHNESS, NORMAL, METALLIC, EMISSIVE, OCCLUSION, SCATTERING)$> layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; void main(void) { Material mat = getMaterial(); @@ -38,7 +39,7 @@ void main(void) { vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; float roughness = getMaterialRoughness(mat); <$evalMaterialRoughness(roughnessTex, roughness, matKey, roughness)$>; diff --git a/libraries/render-utils/src/model_normal_map.slv b/libraries/render-utils/src/model_normal_map.slv index 52386d6e4f..4a1a0c9264 100644 --- a/libraries/render-utils/src/model_normal_map.slv +++ b/libraries/render-utils/src/model_normal_map.slv @@ -24,21 +24,19 @@ layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; void main(void) { // pass along the color - _color = color_sRGBToLinear(inColor.rgb); - _alpha = inColor.a; + _color.rgb = color_sRGBToLinear(inColor.rgb); + _color.a = inColor.a; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord01.zw)$> // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/model_normal_map_fade.slf b/libraries/render-utils/src/model_normal_map_fade.slf index fb66fe167c..16b8138efe 100644 --- a/libraries/render-utils/src/model_normal_map_fade.slf +++ b/libraries/render-utils/src/model_normal_map_fade.slf @@ -24,11 +24,12 @@ layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; void main(void) { vec3 fadeEmissive; @@ -48,7 +49,7 @@ void main(void) { vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; float roughness = getMaterialRoughness(mat); <$evalMaterialRoughness(roughnessTex, roughness, matKey, roughness)$>; diff --git a/libraries/render-utils/src/model_normal_map_fade.slv b/libraries/render-utils/src/model_normal_map_fade.slv index 74d23d6057..090027ac79 100644 --- a/libraries/render-utils/src/model_normal_map_fade.slv +++ b/libraries/render-utils/src/model_normal_map_fade.slv @@ -24,21 +24,19 @@ layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; void main(void) { // pass along the color - _color = color_sRGBToLinear(inColor.rgb); - _alpha = inColor.a; + _color.rgb = color_sRGBToLinear(inColor.rgb); + _color.a = inColor.a; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord01.zw)$> // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/model_translucent.slf b/libraries/render-utils/src/model_translucent.slf index cd170f29e7..7fe81ab992 100644 --- a/libraries/render-utils/src/model_translucent.slf +++ b/libraries/render-utils/src/model_translucent.slf @@ -26,13 +26,13 @@ <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, _SCRIBE_NULL, EMISSIVE, OCCLUSION)$> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=0) out vec4 _fragColor; @@ -42,13 +42,13 @@ void main(void) { <$fetchMaterialTexturesCoord0(matKey, _texCoord0, albedoTex, roughnessTex, _SCRIBE_NULL, _SCRIBE_NULL, emissiveTex)$> <$fetchMaterialTexturesCoord1(matKey, _texCoord1, occlusionTex)$> - float opacity = getMaterialOpacity(mat) * _alpha; + float opacity = getMaterialOpacity(mat) * _color.a; <$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; <$discardTransparent(opacity)$>; vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; float roughness = getMaterialRoughness(mat); <$evalMaterialRoughness(roughnessTex, roughness, matKey, roughness)$>; diff --git a/libraries/render-utils/src/model_translucent.slv b/libraries/render-utils/src/model_translucent.slv index defdb87172..70e61cd788 100644 --- a/libraries/render-utils/src/model_translucent.slv +++ b/libraries/render-utils/src/model_translucent.slv @@ -21,21 +21,19 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; void main(void) { - _color = color_sRGBToLinear(inColor.xyz); - _alpha = inColor.w; + _color.rgb = color_sRGBToLinear(inColor.rgb); + _color.a = inColor.a; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord01.zw)$> // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/model_translucent_fade.slf b/libraries/render-utils/src/model_translucent_fade.slf index 81b9faf82d..b9df51fcb9 100644 --- a/libraries/render-utils/src/model_translucent_fade.slf +++ b/libraries/render-utils/src/model_translucent_fade.slf @@ -24,13 +24,13 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=0) out vec4 _fragColor; @@ -46,13 +46,13 @@ void main(void) { <$fetchMaterialTexturesCoord0(matKey, _texCoord0, albedoTex, roughnessTex, _SCRIBE_NULL, _SCRIBE_NULL, emissiveTex)$> <$fetchMaterialTexturesCoord1(matKey, _texCoord1, occlusionTex)$> - float opacity = getMaterialOpacity(mat) * _alpha; + float opacity = getMaterialOpacity(mat) * _color.a; <$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; <$discardTransparent(opacity)$>; vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; float roughness = getMaterialRoughness(mat); <$evalMaterialRoughness(roughnessTex, roughness, matKey, roughness)$>; diff --git a/libraries/render-utils/src/model_translucent_normal_map.slf b/libraries/render-utils/src/model_translucent_normal_map.slf index c813097dcf..c023f78e25 100644 --- a/libraries/render-utils/src/model_translucent_normal_map.slf +++ b/libraries/render-utils/src/model_translucent_normal_map.slf @@ -28,14 +28,14 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=0) out vec4 _fragColor; @@ -45,13 +45,13 @@ void main(void) { <$fetchMaterialTexturesCoord0(matKey, _texCoord0, albedoTex, roughnessTex, normalTex, _SCRIBE_NULL, emissiveTex)$> <$fetchMaterialTexturesCoord1(matKey, _texCoord1, occlusionTex)$> - float opacity = getMaterialOpacity(mat) * _alpha; + float opacity = getMaterialOpacity(mat) * _color.a; <$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; <$discardTransparent(opacity)$>; vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; float roughness = getMaterialRoughness(mat); <$evalMaterialRoughness(roughnessTex, roughness, matKey, roughness)$>; diff --git a/libraries/render-utils/src/model_translucent_normal_map.slv b/libraries/render-utils/src/model_translucent_normal_map.slv index 257711ac24..299e1f53e1 100644 --- a/libraries/render-utils/src/model_translucent_normal_map.slv +++ b/libraries/render-utils/src/model_translucent_normal_map.slv @@ -21,22 +21,20 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; void main(void) { - _color = color_sRGBToLinear(inColor.xyz); - _alpha = inColor.w; + _color.rgb = color_sRGBToLinear(inColor.rgb); + _color.a = inColor.a; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord01.zw)$> // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/model_translucent_normal_map_fade.slf b/libraries/render-utils/src/model_translucent_normal_map_fade.slf index d17c5105b1..992993edb3 100644 --- a/libraries/render-utils/src/model_translucent_normal_map_fade.slf +++ b/libraries/render-utils/src/model_translucent_normal_map_fade.slf @@ -32,13 +32,13 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) in vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; layout(location=0) out vec4 _fragColor; @@ -55,13 +55,13 @@ void main(void) { <$fetchMaterialTexturesCoord0(matKey, _texCoord0, albedoTex, roughnessTex, normalTex, _SCRIBE_NULL, emissiveTex)$> <$fetchMaterialTexturesCoord1(matKey, _texCoord1, occlusionTex)$> - float opacity = getMaterialOpacity(mat) * _alpha; + float opacity = getMaterialOpacity(mat) * _color.a; <$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; <$discardTransparent(opacity)$>; vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; float roughness = getMaterialRoughness(mat); <$evalMaterialRoughness(roughnessTex, roughness, matKey, roughness)$>; diff --git a/libraries/render-utils/src/model_translucent_unlit.slf b/libraries/render-utils/src/model_translucent_unlit.slf index eef3190d2b..8f823e010a 100644 --- a/libraries/render-utils/src/model_translucent_unlit.slf +++ b/libraries/render-utils/src/model_translucent_unlit.slf @@ -20,9 +20,10 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=0) out vec4 _fragColor; @@ -31,13 +32,13 @@ void main(void) { BITFIELD matKey = getMaterialKey(mat); <$fetchMaterialTexturesCoord0(matKey, _texCoord0, albedoTex)$> - float opacity = getMaterialOpacity(mat) * _alpha; + float opacity = getMaterialOpacity(mat) * _color.a; <$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; <$discardTransparent(opacity)$>; vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; _fragColor = vec4(albedo * isUnlitEnabled(), opacity); } diff --git a/libraries/render-utils/src/model_translucent_unlit_fade.slf b/libraries/render-utils/src/model_translucent_unlit_fade.slf index 4efdd7f4e5..2c72780976 100644 --- a/libraries/render-utils/src/model_translucent_unlit_fade.slf +++ b/libraries/render-utils/src/model_translucent_unlit_fade.slf @@ -23,9 +23,10 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; layout(location=0) out vec4 _fragColor; @@ -41,13 +42,13 @@ void main(void) { BITFIELD matKey = getMaterialKey(mat); <$fetchMaterialTexturesCoord0(matKey, _texCoord0, albedoTex)$> - float opacity = getMaterialOpacity(mat) * _alpha; + float opacity = getMaterialOpacity(mat) * _color.a; <$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; <$discardTransparent(opacity)$>; vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; albedo += fadeEmissive; _fragColor = vec4(albedo * isUnlitEnabled(), opacity); } diff --git a/libraries/render-utils/src/model_unlit.slf b/libraries/render-utils/src/model_unlit.slf index e920b3eb67..0e93022b83 100644 --- a/libraries/render-utils/src/model_unlit.slf +++ b/libraries/render-utils/src/model_unlit.slf @@ -20,10 +20,11 @@ <$declareMaterialTextures(ALBEDO)$> -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; void main(void) { @@ -37,7 +38,7 @@ void main(void) { vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; packDeferredFragmentUnlit( normalize(_normalWS), diff --git a/libraries/render-utils/src/model_unlit_fade.slf b/libraries/render-utils/src/model_unlit_fade.slf index 30d023da88..1172bd5556 100644 --- a/libraries/render-utils/src/model_unlit_fade.slf +++ b/libraries/render-utils/src/model_unlit_fade.slf @@ -24,10 +24,11 @@ <$declareMaterialTextures(ALBEDO)$> layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) in float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; void main(void) { vec3 fadeEmissive; @@ -46,7 +47,7 @@ void main(void) { vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; - albedo *= _color; + albedo *= _color.rgb; albedo += fadeEmissive; packDeferredFragmentUnlit( normalize(_normalWS), diff --git a/libraries/render-utils/src/render-utils/ShaderConstants.h b/libraries/render-utils/src/render-utils/ShaderConstants.h index 443e75159d..afb195c240 100644 --- a/libraries/render-utils/src/render-utils/ShaderConstants.h +++ b/libraries/render-utils/src/render-utils/ShaderConstants.h @@ -14,27 +14,28 @@ #ifndef RENDER_UTILS_SHADER_CONSTANTS_H #define RENDER_UTILS_SHADER_CONSTANTS_H -#define RENDER_UTILS_ATTR_TEXCOORD0 0 -#define RENDER_UTILS_ATTR_TEXCOORD1 1 -#define RENDER_UTILS_ATTR_COLOR 2 -#define RENDER_UTILS_ATTR_ALPHA 3 +#define RENDER_UTILS_ATTR_TEXCOORD01 0 +#define RENDER_UTILS_ATTR_COLOR 1 // World space -#define RENDER_UTILS_ATTR_POSITION_WS 4 -#define RENDER_UTILS_ATTR_NORMAL_WS 5 -#define RENDER_UTILS_ATTR_TANGENT_WS 6 +#define RENDER_UTILS_ATTR_POSITION_WS 2 +#define RENDER_UTILS_ATTR_NORMAL_WS 3 +#define RENDER_UTILS_ATTR_TANGENT_WS 4 // Model space -#define RENDER_UTILS_ATTR_POSITION_MS 7 -#define RENDER_UTILS_ATTR_NORMAL_MS 8 +#define RENDER_UTILS_ATTR_POSITION_MS 5 +#define RENDER_UTILS_ATTR_NORMAL_MS 6 // Eye space -#define RENDER_UTILS_ATTR_POSITION_ES 9 +#define RENDER_UTILS_ATTR_POSITION_ES 7 + +// don't conflict with GPU_ATTR_V2F_STEREO_SIDE in the GPU shader constants +#define RENDER_UTILS_ATTR_DO_NOT_USE 8 // Fade -#define RENDER_UTILS_ATTR_FADE1 10 -#define RENDER_UTILS_ATTR_FADE2 11 -#define RENDER_UTILS_ATTR_FADE3 12 +#define RENDER_UTILS_ATTR_FADE1 9 +#define RENDER_UTILS_ATTR_FADE2 10 +#define RENDER_UTILS_ATTR_FADE3 11 #define RENDER_UTILS_BUFFER_DEFERRED_FRAME_TRANSFORM 0 diff --git a/libraries/render-utils/src/sdf_text3D.slf b/libraries/render-utils/src/sdf_text3D.slf index b4be4d1d02..999fb9e1a9 100644 --- a/libraries/render-utils/src/sdf_text3D.slf +++ b/libraries/render-utils/src/sdf_text3D.slf @@ -19,7 +19,9 @@ layout(location=RENDER_UTILS_UNIFORM_TEXT_COLOR) uniform vec4 Color; // the interpolated normal layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; #define TAA_TEXTURE_LOD_BIAS -3.0 diff --git a/libraries/render-utils/src/sdf_text3D.slv b/libraries/render-utils/src/sdf_text3D.slv index fa7ee6d409..04ee44510a 100644 --- a/libraries/render-utils/src/sdf_text3D.slv +++ b/libraries/render-utils/src/sdf_text3D.slv @@ -18,10 +18,10 @@ // the interpolated normal layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; void main() { - _texCoord0 = inTexCoord0.xy; + _texCoord01.xy = inTexCoord0.xy; // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/sdf_text3D_transparent.slf b/libraries/render-utils/src/sdf_text3D_transparent.slf index 8e8a6db504..fbf4c4c372 100644 --- a/libraries/render-utils/src/sdf_text3D_transparent.slf +++ b/libraries/render-utils/src/sdf_text3D_transparent.slf @@ -19,7 +19,9 @@ layout(location=RENDER_UTILS_UNIFORM_TEXT_COLOR) uniform vec4 Color; // the interpolated normal layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; const float gamma = 2.2; const float smoothing = 32.0; diff --git a/libraries/render-utils/src/simple.slf b/libraries/render-utils/src/simple.slf index ace0afc60d..a699a10cad 100644 --- a/libraries/render-utils/src/simple.slf +++ b/libraries/render-utils/src/simple.slf @@ -20,7 +20,9 @@ layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; diff --git a/libraries/render-utils/src/simple.slv b/libraries/render-utils/src/simple.slv index f4bd6795e3..0dd4e55f26 100644 --- a/libraries/render-utils/src/simple.slv +++ b/libraries/render-utils/src/simple.slv @@ -23,13 +23,13 @@ layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_NORMAL_MS) out vec3 _normalMS; layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_POSITION_MS) out vec4 _positionMS; layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; void main(void) { _color = color_sRGBAToLinear(inColor); - _texCoord0 = inTexCoord0.st; + _texCoord01.xy = inTexCoord0.st; _positionMS = inPosition; _normalMS = inNormal.xyz; diff --git a/libraries/render-utils/src/simple_fade.slf b/libraries/render-utils/src/simple_fade.slf index c07a608a99..00d81cadc9 100644 --- a/libraries/render-utils/src/simple_fade.slf +++ b/libraries/render-utils/src/simple_fade.slf @@ -23,7 +23,9 @@ layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; diff --git a/libraries/render-utils/src/simple_fade.slv b/libraries/render-utils/src/simple_fade.slv index 24aada33b9..0bbd8eac39 100644 --- a/libraries/render-utils/src/simple_fade.slv +++ b/libraries/render-utils/src/simple_fade.slv @@ -26,14 +26,14 @@ layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_NORMAL_MS) out vec3 _normalMS; layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_POSITION_MS) out vec4 _positionMS; layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { _color = color_sRGBAToLinear(inColor); - _texCoord0 = inTexCoord0.st; + _texCoord01.xy = inTexCoord0.st; _positionMS = inPosition; _normalMS = inNormal.xyz; diff --git a/libraries/render-utils/src/simple_opaque_web_browser.slf b/libraries/render-utils/src/simple_opaque_web_browser.slf index 3b77fbf431..27a0781eef 100644 --- a/libraries/render-utils/src/simple_opaque_web_browser.slf +++ b/libraries/render-utils/src/simple_opaque_web_browser.slf @@ -23,7 +23,9 @@ layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; void main(void) { vec4 texel = texture(originalTexture, _texCoord0.st); diff --git a/libraries/render-utils/src/simple_textured.slf b/libraries/render-utils/src/simple_textured.slf index c123a9671f..f1a60bdc5a 100644 --- a/libraries/render-utils/src/simple_textured.slf +++ b/libraries/render-utils/src/simple_textured.slf @@ -22,7 +22,9 @@ layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; void main(void) { vec4 texel = texture(originalTexture, _texCoord0); diff --git a/libraries/render-utils/src/simple_textured_fade.slf b/libraries/render-utils/src/simple_textured_fade.slf index 850282d40f..a1476939d1 100644 --- a/libraries/render-utils/src/simple_textured_fade.slf +++ b/libraries/render-utils/src/simple_textured_fade.slf @@ -25,7 +25,9 @@ layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; // Declare after all samplers to prevent sampler location mix up with originalTexture diff --git a/libraries/render-utils/src/simple_textured_unlit.slf b/libraries/render-utils/src/simple_textured_unlit.slf index 78ef85ee21..fcdf118732 100644 --- a/libraries/render-utils/src/simple_textured_unlit.slf +++ b/libraries/render-utils/src/simple_textured_unlit.slf @@ -23,7 +23,9 @@ layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; void main(void) { vec4 texel = texture(originalTexture, _texCoord0.st); diff --git a/libraries/render-utils/src/simple_textured_unlit_fade.slf b/libraries/render-utils/src/simple_textured_unlit_fade.slf index c5882c2173..2007f0f684 100644 --- a/libraries/render-utils/src/simple_textured_unlit_fade.slf +++ b/libraries/render-utils/src/simple_textured_unlit_fade.slf @@ -25,7 +25,9 @@ layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; // Declare after all samplers to prevent sampler location mix up with originalTexture diff --git a/libraries/render-utils/src/simple_transparent.slf b/libraries/render-utils/src/simple_transparent.slf index b52c2a613e..d2ba332566 100644 --- a/libraries/render-utils/src/simple_transparent.slf +++ b/libraries/render-utils/src/simple_transparent.slf @@ -20,7 +20,9 @@ layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; diff --git a/libraries/render-utils/src/simple_transparent_textured.slf b/libraries/render-utils/src/simple_transparent_textured.slf index b7396c3d37..ffd715215a 100644 --- a/libraries/render-utils/src/simple_transparent_textured.slf +++ b/libraries/render-utils/src/simple_transparent_textured.slf @@ -22,7 +22,9 @@ layout(location=0) uniform sampler2D originalTexture; // the interpolated normal layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; void main(void) { vec4 texel = texture(originalTexture, _texCoord0); diff --git a/libraries/render-utils/src/simple_transparent_textured_fade.slf b/libraries/render-utils/src/simple_transparent_textured_fade.slf index 92c6fde0bd..8e530f41aa 100644 --- a/libraries/render-utils/src/simple_transparent_textured_fade.slf +++ b/libraries/render-utils/src/simple_transparent_textured_fade.slf @@ -31,7 +31,9 @@ layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; // Declare after all samplers to prevent sampler location mix up with originalTexture diff --git a/libraries/render-utils/src/simple_transparent_textured_unlit.slf b/libraries/render-utils/src/simple_transparent_textured_unlit.slf index a3e7c65cd1..d05ca02560 100644 --- a/libraries/render-utils/src/simple_transparent_textured_unlit.slf +++ b/libraries/render-utils/src/simple_transparent_textured_unlit.slf @@ -20,7 +20,9 @@ layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=0) out vec4 _fragColor0; diff --git a/libraries/render-utils/src/simple_transparent_textured_unlit_fade.slf b/libraries/render-utils/src/simple_transparent_textured_unlit_fade.slf index 508ea9a68b..53006b508d 100644 --- a/libraries/render-utils/src/simple_transparent_textured_unlit_fade.slf +++ b/libraries/render-utils/src/simple_transparent_textured_unlit_fade.slf @@ -22,7 +22,9 @@ layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; layout(location=0) out vec4 _fragColor0; diff --git a/libraries/render-utils/src/simple_transparent_web_browser.slf b/libraries/render-utils/src/simple_transparent_web_browser.slf index 3f05a8a480..156339b702 100644 --- a/libraries/render-utils/src/simple_transparent_web_browser.slf +++ b/libraries/render-utils/src/simple_transparent_web_browser.slf @@ -23,7 +23,9 @@ layout(binding=0) uniform sampler2D originalTexture; // the interpolated normal layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) in vec2 _texCoord0; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +vec2 _texCoord0 = _texCoord01.xy; +vec2 _texCoord1 = _texCoord01.zw; void main(void) { vec4 texel = texture(originalTexture, _texCoord0.st); diff --git a/libraries/render-utils/src/skin_model.slv b/libraries/render-utils/src/skin_model.slv index fb2f8a8e34..d44ca0ae3f 100644 --- a/libraries/render-utils/src/skin_model.slv +++ b/libraries/render-utils/src/skin_model.slv @@ -26,11 +26,9 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); @@ -39,12 +37,12 @@ void main(void) { skinPositionNormal(inSkinClusterIndex, inSkinClusterWeight, inPosition, inNormal.xyz, position, interpolatedNormal); // pass along the color - _color = color_sRGBToLinear(inColor.rgb); - _alpha = inColor.a; + _color.rgb = color_sRGBToLinear(inColor.rgb); + _color.a = inColor.a; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord01.zw)$> // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/skin_model_dq.slv b/libraries/render-utils/src/skin_model_dq.slv index db062087be..ff73c7a398 100644 --- a/libraries/render-utils/src/skin_model_dq.slv +++ b/libraries/render-utils/src/skin_model_dq.slv @@ -26,11 +26,9 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); @@ -39,12 +37,12 @@ void main(void) { skinPositionNormal(inSkinClusterIndex, inSkinClusterWeight, inPosition, inNormal.xyz, position, interpolatedNormal); // pass along the color - _color = color_sRGBToLinear(inColor.rgb); - _alpha = inColor.a; + _color.rgb = color_sRGBToLinear(inColor.rgb); + _color.a = inColor.a; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord01.zw)$> // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/skin_model_fade.slv b/libraries/render-utils/src/skin_model_fade.slv index 30b3122334..1689476d38 100644 --- a/libraries/render-utils/src/skin_model_fade.slv +++ b/libraries/render-utils/src/skin_model_fade.slv @@ -26,11 +26,9 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { @@ -40,12 +38,12 @@ void main(void) { skinPositionNormal(inSkinClusterIndex, inSkinClusterWeight, inPosition, inNormal.xyz, position, interpolatedNormal); // pass along the color - _color = color_sRGBToLinear(inColor.rgb); - _alpha = inColor.a; + _color.rgb = color_sRGBToLinear(inColor.rgb); + _color.a = inColor.a; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord01.zw)$> // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/skin_model_fade_dq.slv b/libraries/render-utils/src/skin_model_fade_dq.slv index fb23e283bc..6e64305de7 100644 --- a/libraries/render-utils/src/skin_model_fade_dq.slv +++ b/libraries/render-utils/src/skin_model_fade_dq.slv @@ -26,11 +26,9 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { @@ -40,12 +38,12 @@ void main(void) { skinPositionNormal(inSkinClusterIndex, inSkinClusterWeight, inPosition, inNormal.xyz, position, interpolatedNormal); // pass along the color - _color = color_sRGBToLinear(inColor.rgb); - _alpha = inColor.a; + _color.rgb = color_sRGBToLinear(inColor.rgb); + _color.a = inColor.a; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord01.zw)$> // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/skin_model_normal_map.slv b/libraries/render-utils/src/skin_model_normal_map.slv index 288e338b10..f67220c6bd 100644 --- a/libraries/render-utils/src/skin_model_normal_map.slv +++ b/libraries/render-utils/src/skin_model_normal_map.slv @@ -26,12 +26,10 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); @@ -41,12 +39,12 @@ void main(void) { skinPositionNormalTangent(inSkinClusterIndex, inSkinClusterWeight, inPosition, inNormal.xyz, inTangent.xyz, position, interpolatedNormal.xyz, interpolatedTangent.xyz); // pass along the color - _color = color_sRGBToLinear(inColor.rgb); - _alpha = inColor.a; + _color.rgb = color_sRGBToLinear(inColor.rgb); + _color.a = inColor.a; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord01.zw)$> interpolatedNormal = vec4(normalize(interpolatedNormal.xyz), 0.0); interpolatedTangent = vec4(normalize(interpolatedTangent.xyz), 0.0); diff --git a/libraries/render-utils/src/skin_model_normal_map_dq.slv b/libraries/render-utils/src/skin_model_normal_map_dq.slv index 90e85f8a92..b5ffbdc49d 100644 --- a/libraries/render-utils/src/skin_model_normal_map_dq.slv +++ b/libraries/render-utils/src/skin_model_normal_map_dq.slv @@ -25,12 +25,10 @@ <$declareMaterialTexMapArrayBuffer()$> layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); @@ -40,12 +38,12 @@ void main(void) { skinPositionNormalTangent(inSkinClusterIndex, inSkinClusterWeight, inPosition, inNormal.xyz, inTangent.xyz, position, interpolatedNormal.xyz, interpolatedTangent.xyz); // pass along the color - _color = color_sRGBToLinear(inColor.rgb); - _alpha = inColor.a; + _color.rgb = color_sRGBToLinear(inColor.rgb); + _color.a = inColor.a; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord01.zw)$> interpolatedNormal = vec4(normalize(interpolatedNormal.xyz), 0.0); interpolatedTangent = vec4(normalize(interpolatedTangent.xyz), 0.0); diff --git a/libraries/render-utils/src/skin_model_normal_map_fade.slv b/libraries/render-utils/src/skin_model_normal_map_fade.slv index 393a756e7e..5759416d44 100644 --- a/libraries/render-utils/src/skin_model_normal_map_fade.slv +++ b/libraries/render-utils/src/skin_model_normal_map_fade.slv @@ -26,12 +26,10 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { @@ -42,12 +40,12 @@ void main(void) { skinPositionNormalTangent(inSkinClusterIndex, inSkinClusterWeight, inPosition, inNormal.xyz, inTangent.xyz, position, interpolatedNormal.xyz, interpolatedTangent.xyz); // pass along the color - _color = color_sRGBToLinear(inColor.rgb); - _alpha = inColor.a; + _color.rgb = color_sRGBToLinear(inColor.rgb); + _color.a = inColor.a; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord01.zw)$> interpolatedNormal = vec4(normalize(interpolatedNormal.xyz), 0.0); interpolatedTangent = vec4(normalize(interpolatedTangent.xyz), 0.0); diff --git a/libraries/render-utils/src/skin_model_normal_map_fade_dq.slv b/libraries/render-utils/src/skin_model_normal_map_fade_dq.slv index 862c14297f..e48bf47758 100644 --- a/libraries/render-utils/src/skin_model_normal_map_fade_dq.slv +++ b/libraries/render-utils/src/skin_model_normal_map_fade_dq.slv @@ -26,12 +26,10 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_TEXCOORD0) out vec2 _texCoord0; -layout(location=RENDER_UTILS_ATTR_TEXCOORD1) out vec2 _texCoord1; +layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec3 _color; -layout(location=RENDER_UTILS_ATTR_ALPHA) out float _alpha; +layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; void main(void) { @@ -42,12 +40,12 @@ void main(void) { skinPositionNormalTangent(inSkinClusterIndex, inSkinClusterWeight, inPosition, inNormal.xyz, inTangent.xyz, position, interpolatedNormal.xyz, interpolatedTangent.xyz); // pass along the color - _color = color_sRGBToLinear(inColor.rgb); - _alpha = inColor.a; + _color.rgb = color_sRGBToLinear(inColor.rgb); + _color.a = inColor.a; TexMapArray texMapArray = getTexMapArray(); - <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord0)$> - <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord1)$> + <$evalTexMapArrayTexcoord0(texMapArray, inTexCoord0, _texCoord01.xy)$> + <$evalTexMapArrayTexcoord1(texMapArray, inTexCoord0, _texCoord01.zw)$> interpolatedNormal = vec4(normalize(interpolatedNormal.xyz), 0.0); interpolatedTangent = vec4(normalize(interpolatedTangent.xyz), 0.0); diff --git a/libraries/shaders/CMakeLists.txt b/libraries/shaders/CMakeLists.txt index d27dacc769..4f6db48c08 100644 --- a/libraries/shaders/CMakeLists.txt +++ b/libraries/shaders/CMakeLists.txt @@ -189,5 +189,5 @@ foreach(COMPILED_SHADER ${COMPILED_SHADERS}) set_property(TARGET ${TARGET_NAME} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS "${COMPILED_SHADER}") endforeach() -link_hifi_libraries(shared) +link_hifi_libraries(shared gl) diff --git a/libraries/shaders/src/shaders/Shaders.cpp b/libraries/shaders/src/shaders/Shaders.cpp index 50a7d38a69..ac4810a896 100644 --- a/libraries/shaders/src/shaders/Shaders.cpp +++ b/libraries/shaders/src/shaders/Shaders.cpp @@ -17,6 +17,19 @@ #include #include #include +#include + +#include + +static bool cleanShaders() { +#if defined(Q_OS_MAC) + static const bool CLEAN_SHADERS = true; +#else + static const bool CLEAN_SHADERS = ::gl::disableGl45(); + +#endif + return CLEAN_SHADERS; +} // Can't use the Q_INIT_RESOURCE macro inside a namespace on Mac, // so this is done out of line @@ -74,14 +87,14 @@ void cleanShaderSource(std::string& shaderSource) { std::string loadShaderSource(uint32_t shaderId) { initShaders(); auto shaderStr = loadResource(std::string(":/shaders/") + std::to_string(shaderId)); -#if defined(Q_OS_MAC) - // OSX only supports OpenGL 4.1 without ARB_shading_language_420pack or - // ARB_explicit_uniform_location or basically anything useful that's - // been released in the last 8 fucking years, so in that case we need to - // strip out all explicit locations and do a bunch of background magic to - // make the system seem like it is using the explicit locations - cleanShaderSource(shaderStr); -#endif + if (cleanShaders()) { + // OSX only supports OpenGL 4.1 without ARB_shading_language_420pack or + // ARB_explicit_uniform_location or basically anything useful that's + // been released in the last 8 fucking years, so in that case we need to + // strip out all explicit locations and do a bunch of background magic to + // make the system seem like it is using the explicit locations + cleanShaderSource(shaderStr); + } return shaderStr; } diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index 48e778c063..b242d90d0e 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -426,11 +426,17 @@ PointerEvent::EventType OffscreenQmlSurface::choosePointerEventType(QEvent::Type } void OffscreenQmlSurface::hoverBeginEvent(const PointerEvent& event, class QTouchDevice& device) { +#if defined(DISABLE_QML) + return; +#endif handlePointerEvent(event, device); _activeTouchPoints[event.getID()].hovering = true; } void OffscreenQmlSurface::hoverEndEvent(const PointerEvent& event, class QTouchDevice& device) { +#if defined(DISABLE_QML) + return; +#endif _activeTouchPoints[event.getID()].hovering = false; // Send a fake mouse move event if // - the event told us to @@ -444,6 +450,10 @@ void OffscreenQmlSurface::hoverEndEvent(const PointerEvent& event, class QTouchD } bool OffscreenQmlSurface::handlePointerEvent(const PointerEvent& event, class QTouchDevice& device, bool release) { +#if defined(DISABLE_QML) + return false; +#endif + // Ignore mouse interaction if we're paused if (!getRootItem() || isPaused()) { return false; diff --git a/tests-manual/render-utils/src/main.cpp b/tests-manual/render-utils/src/main.cpp index b5bc5daebb..63f56e77ed 100644 --- a/tests-manual/render-utils/src/main.cpp +++ b/tests-manual/render-utils/src/main.cpp @@ -94,16 +94,9 @@ public: QTestWindow() { setSurfaceType(QSurface::OpenGLSurface); - QSurfaceFormat format; - // Qt Quick may need a depth and stencil buffer. Always make sure these are available. - format.setDepthBufferSize(16); - format.setStencilBufferSize(8); - setGLFormatVersion(format); - format.setProfile(QSurfaceFormat::OpenGLContextProfile::CoreProfile); + QSurfaceFormat format = getDefaultOpenGLSurfaceFormat(); format.setOption(QSurfaceFormat::DebugContext); - setFormat(format); - _context.setFormat(format); _context.create(); diff --git a/tests/shaders/src/ShaderTests.cpp b/tests/shaders/src/ShaderTests.cpp index dffd69054d..f7d8222de1 100644 --- a/tests/shaders/src/ShaderTests.cpp +++ b/tests/shaders/src/ShaderTests.cpp @@ -47,15 +47,34 @@ void ShaderTests::cleanupTestCase() { qDebug() << "Done"; } -template -QStringList toStringList(const C& c, F f) { +template +QStringList toQStringList(const C& c) { QStringList result; for (const auto& v : c) { - result << f(v); + result << v.c_str(); } return result; } +template +std::unordered_set toStringSet(const C& c, F f) { + std::unordered_set result; + for (const auto& v : c) { + result.insert(f(v)); + } + return result; +} + +template +bool isSubset(const C& parent, const C& child) { + for (const auto& v : child) { + if (0 == parent.count(v)) { + return false; + } + } + return true; +} + gpu::Shader::ReflectionMap mergeReflection(const std::initializer_list& list) { gpu::Shader::ReflectionMap result; std::unordered_map> usedLocationsByType; @@ -87,6 +106,77 @@ gpu::Shader::ReflectionMap mergeReflection(const std::initializer_list +std::unordered_map invertMap(const std::unordered_map& map) { + std::unordered_map result; + for (const auto& entry : map) { + result[entry.second] = entry.first; + } + return result; +} + +static void verifyBindings(const gpu::Shader::Source& source) { + const auto reflection = source.getReflection(); + for (const auto& entry : reflection) { + const auto& map = entry.second; + const auto reverseMap = invertMap(map); + if (map.size() != reverseMap.size()) { + QFAIL("Bindings are not unique"); + } + } + +} + + +static void verifyInterface(const gpu::Shader::Source& vertexSource, const gpu::Shader::Source& fragmentSource) { + if (0 == fragmentSource.getReflection().count(gpu::Shader::BindingType::INPUT)) { + return; + } + auto fragIn = fragmentSource.getReflection().at(gpu::Shader::BindingType::INPUT); + if (0 == vertexSource.getReflection().count(gpu::Shader::BindingType::OUTPUT)) { + qDebug() << "No vertex output for fragment input"; + //QFAIL("No vertex output for fragment input"); + return; + } + auto vout = vertexSource.getReflection().at(gpu::Shader::BindingType::OUTPUT); + auto vrev = invertMap(vout); + static const std::string IN_STEREO_SIDE_STRING = "_inStereoSide"; + for (const auto entry : fragIn) { + const auto& name = entry.first; + // The presence of "_inStereoSide" in fragment shaders is a bug due to the way we do reflection + // and use preprocessor macros in the shaders + if (name == IN_STEREO_SIDE_STRING) { + continue; + } + if (0 == vout.count(name)) { + qDebug() << "Vertex output missing"; + //QFAIL("Vertex output missing"); + continue; + } + const auto& inLocation = entry.second; + const auto& outLocation = vout.at(name); + if (inLocation != outLocation) { + qDebug() << "Mismatch in vertex / fragment interface"; + //QFAIL("Mismatch in vertex / fragment interface"); + continue; + } + } +} + +template +bool compareBindings(const C& actual, const gpu::Shader::LocationMap& expected) { + if (actual.size() != expected.size()) { + auto actualNames = toStringSet(actual, [](const auto& v) { return v.name; }); + auto expectedNames = toStringSet(expected, [](const auto& v) { return v.first; }); + if (!isSubset(expectedNames, actualNames)) { + qDebug() << "Found" << toQStringList(actualNames); + qDebug() << "Expected" << toQStringList(expectedNames); + return false; + } + } + return true; +} + void ShaderTests::testShaderLoad() { std::set usedShaders; uint32_t maxShader = 0; @@ -97,16 +187,17 @@ void ShaderTests::testShaderLoad() { ++index; uint32_t vertexId = shader::getVertexId(programId); - //QVERIFY(0 != vertexId); uint32_t fragmentId = shader::getFragmentId(programId); - QVERIFY(0 != fragmentId); usedShaders.insert(vertexId); usedShaders.insert(fragmentId); maxShader = std::max(maxShader, std::max(fragmentId, vertexId)); auto vertexSource = gpu::Shader::getShaderSource(vertexId); QVERIFY(!vertexSource.getCode().empty()); + verifyBindings(vertexSource); auto fragmentSource = gpu::Shader::getShaderSource(fragmentId); QVERIFY(!fragmentSource.getCode().empty()); + verifyBindings(fragmentSource); + verifyInterface(vertexSource, fragmentSource); auto expectedBindings = mergeReflection({ vertexSource, fragmentSource }); @@ -124,16 +215,11 @@ void ShaderTests::testShaderLoad() { // Uniforms { - -#ifdef Q_OS_MAC - const auto& uniformRemap = shaderObject.uniformRemap; -#endif auto uniforms = gl::Uniform::load(program); + const auto& uniformRemap = shaderObject.uniformRemap; auto expectedUniforms = expectedBindings[gpu::Shader::BindingType::UNIFORM]; - if (uniforms.size() != expectedUniforms.size()) { - qDebug() << "Found" << toStringList(uniforms, [](const auto& v) { return v.name.c_str(); }); - qDebug() << "Expected" << toStringList(expectedUniforms, [](const auto& v) { return v.first.c_str(); }); - qDebug() << "Uniforms size mismatch"; + if (!compareBindings(uniforms, expectedUniforms)) { + qDebug() << "Uniforms mismatch"; } for (const auto& uniform : uniforms) { if (0 != expectedUniforms.count(uniform.name)) { @@ -152,10 +238,8 @@ void ShaderTests::testShaderLoad() { { const auto textures = gl::Uniform::loadTextures(program); const auto expectedTextures = expectedBindings[gpu::Shader::BindingType::TEXTURE]; - if (textures.size() != expectedTextures.size()) { - qDebug() << "Found" << toStringList(textures, [](const auto& v) { return v.name.c_str(); }); - qDebug() << "Expected" << toStringList(expectedTextures, [](const auto& v) { return v.first.c_str(); }); - qDebug() << "Uniforms size mismatch"; + if (!compareBindings(textures, expectedTextures)) { + qDebug() << "Textures mismatch"; } for (const auto& texture : textures) { if (0 != expectedTextures.count(texture.name)) { @@ -172,10 +256,8 @@ void ShaderTests::testShaderLoad() { { auto ubos = gl::UniformBlock::load(program); auto expectedUbos = expectedBindings[gpu::Shader::BindingType::UNIFORM_BUFFER]; - if (ubos.size() != expectedUbos.size()) { - qDebug() << "Found" << toStringList(ubos, [](const auto& v) { return v.name.c_str(); }); - qDebug() << "Expected" << toStringList(expectedUbos, [](const auto& v) { return v.first.c_str(); }); - qDebug() << "UBOs size mismatch"; + if (!compareBindings(ubos, expectedUbos)) { + qDebug() << "UBOs mismatch"; } for (const auto& ubo : ubos) { if (0 != expectedUbos.count(ubo.name)) { diff --git a/tools/shreflect/src/main.cpp b/tools/shreflect/src/main.cpp index b95b36fd94..e13f937102 100644 --- a/tools/shreflect/src/main.cpp +++ b/tools/shreflect/src/main.cpp @@ -130,6 +130,7 @@ json reflectShader(const std::string& shaderPath) { json inputs; json outputs; json textures; + json textureTypes; json uniforms; json storageBuffers; json uniformBuffers; @@ -148,8 +149,12 @@ json reflectShader(const std::string& shaderPath) { if (m[DECL_SIMPLE].matched) { auto name = m[SIMPLE_NAME].str(); auto type = m[SIMPLE_TYPE].str(); - auto& map = 0 == type.find("sampler") ? textures : uniforms; + bool isTexture = 0 == type.find("sampler"); + auto& map = isTexture ? textures : uniforms; map[name] = binding; + if (isTexture) { + textureTypes[name] = type; + } } else if (m[DECL_STRUCT].matched) { auto name = m[STRUCT_NAME].str(); auto type = m[STRUCT_TYPE].str(); @@ -173,6 +178,9 @@ json reflectShader(const std::string& shaderPath) { if (!textures.empty()) { result["textures"] = textures; } + if (!textureTypes.empty()) { + result["texturesTypes"] = textureTypes; + } if (!uniforms.empty()) { result["uniforms"] = uniforms; } From 375d7265358583a75069cc96968f2d36d8baa0e8 Mon Sep 17 00:00:00 2001 From: amantley Date: Fri, 3 Aug 2018 16:48:43 -0700 Subject: [PATCH 145/332] added the new animations for strafe and walk to the resource file and updated the avatar-animation.json file --- .../resources/avatar/animations/idle.fbx | Bin 702480 -> 2240928 bytes .../resources/avatar/animations/jog_fwd.fbx | Bin 0 -> 892208 bytes .../resources/avatar/animations/jog_left.fbx | Bin 0 -> 975504 bytes .../avatar/animations/settle_to_idle.fbx | Bin 0 -> 1379376 bytes .../avatar/animations/side_step_left.fbx | Bin 471952 -> 832496 bytes .../avatar/animations/side_step_left_fast.fbx | Bin 0 -> 820896 bytes .../animations/side_step_left_fast02.fbx | Bin 0 -> 778528 bytes .../animations/side_step_short_left.fbx | Bin 467856 -> 1058624 bytes .../avatar/animations/side_strafe_left.fbx | Bin 0 -> 908176 bytes .../avatar/animations/side_strafe_left02.fbx | Bin 0 -> 878912 bytes .../resources/avatar/animations/talk.fbx | Bin 2580272 -> 5211632 bytes .../resources/avatar/animations/turn_left.fbx | Bin 795872 -> 979312 bytes .../resources/avatar/animations/walk_bwd.fbx | Bin 312688 -> 1194352 bytes .../avatar/animations/walk_bwd_fast.fbx | Bin 0 -> 1042016 bytes .../resources/avatar/animations/walk_fwd.fbx | Bin 309024 -> 1158512 bytes .../avatar/animations/walk_fwd_fast.fbx | Bin 0 -> 990832 bytes .../avatar/animations/walk_fwd_fast02.fbx | Bin 0 -> 966368 bytes .../animations/walk_fwd_fast_armout.fbx | Bin 0 -> 982320 bytes .../resources/avatar/animations/walk_left.fbx | Bin 0 -> 1156656 bytes .../avatar/animations/walk_left_fast.fbx | Bin 0 -> 909040 bytes .../resources/avatar/avatar-animation.json | 2571 +++++++++-------- interface/resources/qml/Stats.qml | 2 - interface/src/ui/Stats.cpp | 1 - libraries/animation/src/AnimBlendLinear.cpp | 14 +- .../animation/src/AnimBlendLinearMove.cpp | 5 +- libraries/animation/src/AnimClip.cpp | 1 - libraries/animation/src/AnimDefaultPose.cpp | 1 - .../animation/src/AnimInverseKinematics.cpp | 1 - libraries/animation/src/AnimManipulator.cpp | 1 - libraries/animation/src/AnimNode.cpp | 1 - libraries/animation/src/AnimNode.h | 5 +- libraries/animation/src/AnimNodeLoader.cpp | 1 - libraries/animation/src/AnimOverlay.cpp | 1 - libraries/animation/src/AnimStateMachine.cpp | 12 +- libraries/animation/src/Rig.cpp | 39 +- 35 files changed, 1440 insertions(+), 1216 deletions(-) create mode 100644 interface/resources/avatar/animations/jog_fwd.fbx create mode 100644 interface/resources/avatar/animations/jog_left.fbx create mode 100644 interface/resources/avatar/animations/settle_to_idle.fbx create mode 100644 interface/resources/avatar/animations/side_step_left_fast.fbx create mode 100644 interface/resources/avatar/animations/side_step_left_fast02.fbx create mode 100644 interface/resources/avatar/animations/side_strafe_left.fbx create mode 100644 interface/resources/avatar/animations/side_strafe_left02.fbx create mode 100644 interface/resources/avatar/animations/walk_bwd_fast.fbx create mode 100644 interface/resources/avatar/animations/walk_fwd_fast.fbx create mode 100644 interface/resources/avatar/animations/walk_fwd_fast02.fbx create mode 100644 interface/resources/avatar/animations/walk_fwd_fast_armout.fbx create mode 100644 interface/resources/avatar/animations/walk_left.fbx create mode 100644 interface/resources/avatar/animations/walk_left_fast.fbx diff --git a/interface/resources/avatar/animations/idle.fbx b/interface/resources/avatar/animations/idle.fbx index 67e2be8735287e043102fa66ce4a6a9dcc5f398e..801237036f517bace469cd732c9613e7adc14549 100644 GIT binary patch literal 2240928 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 z zelFV`41*@YqC_`3?Z-ri-Gl|ga0_5xA}CtprNJ<_JY$J8|JgoLu*?P(;(Cx3VK5}1 z+0@D}{dkX=AJq1ElY?z3ACz}IMDEdKhv%|c9akvM|9o}ar)Fx|d;dqecI%4&ksY4a zLNzYy5kO?jsU%S*yF;KPL+O`;1q-i0y6JeFA22QVaAorvIL48+U~?WVWpp4gWajL3 z1x5je9Y3~dq45JRE^#@ za~L@eE)aiq*m5}jekIPs zP9w`)sd^=00h-gH%AQ$b+O+p2lh1&H=IkUkh@Ah!r_#7zHQB^c`cK}^DKC5ix9v_N zNS24Pw}Ud5dk04N^>urpFLaa{2ocw$LaW(pZ~Y6rz)$GxMum?gOLsKOyX2ZY(#*V0 z7_HkaK)e-Sg5S|Hn`Bg&cT$Vheo@#ts`%dhko(d{i`V{TO?lgCV`Atb=Ev#nCyE^z zzbML#$G|7kzGwr-V~QMp539d&GQG^yp!dqqKhdg?{6O>V!|7JBfcn?6!w;Y2y^B-z zKg0`$f2?4Mtmjgvq@hyl!73lAtfMessK;0HTn368E}Q4g9)tVoCw-G1%<}$fw*+n!CBUAcyfNYmw9L1cLg>RSX8) zmgmY?85eBtuS2?_GdrCxy*&hsm3OlC7xr%EN_*+jrvwcPIfRwyTV+q-6 zJ)9$;iVf!)#&~}KH3+RT`AIn^RwJjJ)z;Nv&hz%oUGtJot{OseRr{i=Q-#L?uhO{# zjvp=I25v>2Hw*+bUxyosuFgu5Ej#;CW=PX^L%(K6rZqUyK^1k%gk_~eMKtf9Z5f=}y8f+Q3^uG1Ba+22R+OS?Zt?;#!$3yu9 zhtCXyhcLIXN&^^dPMUqp3Z;3XrfjhRbC~`Y-&@TyvF8Tn$G{MwY_?%<(qR0k01_O3 zaAR@jxgY87*Vg-psqtp~g^CFH@+3!#m`|lrmgblA?uc1!z(%9zyn`Oba$PaTxt|;1 zc-8B-0~~q)3v+B!b4)g2BpL%BSJVW)dHAQ|`nBjhT?k9;qZYnH+!mJ+f|l|C3dxiv zs?|9M3{{r&tRv(#F~Gos-lUi^BGteAeaGb&P%>iMyQdGc!Ch14B$Oq%o0?F*0p)gP zBD&Eimbb$mGG=75E;QKIQ0984t=B7c>E+(7s1xW*OaZog(FK|Z%>)-2& z$`4%2)684X-s7@Bj~#-z)oPr|*y-Glt+KN8J!Wcg@+UqoNv+T5_73Df9>5 zxHoQrSiw+Eo-;O!Ql485SMI6lI-q;*v*K_W5Rc>A+Byq0v5A8Z%Y49f^?j@ycyN|_ zu1o4ZQxOG-J9Gu8InbMc#l}jq~8{7;<}sEZvo|bTk*4w+)9C2_4ZUDbt@u z&Wr^?Rt*vWuLo!^^lMoHcAtPtW&?!W6Ln||z0oHM7X_HJjuLRu0nt)PfxPmJgR=LpzG{tMcXV#3VpVKS8p;6l|K

Nt&h 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 a=;e!Os1p# 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

RR<3aD~?|t?1Pr39ux&H=1?z!sI9QSnv4Zl&sC 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 literal 702480 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 ZHY1Rt2`D=COtUk{la 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 sfZ|Hkv7jGy! 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 diff --git a/interface/resources/avatar/animations/jog_fwd.fbx b/interface/resources/avatar/animations/jog_fwd.fbx new file mode 100644 index 0000000000000000000000000000000000000000..3c3b8118ab9ecf2988df13b7534ddeac181d72ec GIT binary patch literal 892208 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%0DJX7ZYY{f7pFhF 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%0DLVFC)xWRv!_zc0ov9wvxfgWovn9g|St-43m%q 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 literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/jog_left.fbx b/interface/resources/avatar/animations/jog_left.fbx new file mode 100644 index 0000000000000000000000000000000000000000..88600005b9a21ae4ab8f695a74fa9a98a75c3f18 GIT binary patch literal 975504 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%0D;UcZ9!e{x?3EJ~7n$OjM9;J)j)$gRNq6>4yw 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�>N}gn*P zOb|DXAaV66Gm<|p&pWe;#O0$jZoER{VceN3pzo%%WvHP#Z)dIZC(e0is?c~ijT^g? zcyI&m`#RW}1tjh~ocFyVJhczexD$;V-_W=(jhl*;rJRup^ZecqK7P=Q#MNhP5+K|- zhQ$3+FlP{M3MFyLl_%`}z)0U4ByLVcu=V$Q zfxI&lNjz>FzaI&4V;G66RoR_dgq!Y=xO|TH-BMA=>Ut(y1!}0@zuEXpl6V%8_1##L z#HGJkXHe^=ek2~;jdg}Uc*mUyCUNK2?8Yv_ji*UmUdbi_!cAXE+_^P(hCP(VJ5$z` zawe`1>kPt;ZAn~O!<~Vxo2HStxfP!Tnc!jCOX6`2Y25gb#Le-1M#9!jlJ)0rx6~qZ zXyM;8U_eQ?)KW4@k}S`9rLHxofB%5q1DmIjB+0VXxk3fkQ&vDq%l`yh1KHLrk|d?6 z+r3vn6aT<~@6V}O&<+(UxRx8}-*diOYALxSNm(UHO53PUC;wh8x(5a{;$3N!##k&M zog_(`6_>GDK$n320lhl~(CklsK1FWGbm8d5?$Q0fPS5hOOh0ScgM8M}fBX4hn%?93 R+smV#Jj`%=(9DwQ{~zQqps@e| diff --git a/interface/resources/avatar/animations/side_step_left_fast.fbx b/interface/resources/avatar/animations/side_step_left_fast.fbx new file mode 100644 index 0000000000000000000000000000000000000000..af71a46bb521ad3b76c834d54e72f2aedac71203 GIT binary patch literal 820896 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

yNjLvG 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

7Z23N1;bt+)X}|@zL;!I3F?j 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

BW9}RPyhE7e#aa#WC+0j#a=FX%a(~Na- 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 X{#_R?`*qQ^->q%5;<9`9ZutKI^H@-0 literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/side_step_short_left.fbx b/interface/resources/avatar/animations/side_step_short_left.fbx index d5047181e4e8fe1814a35cf14cac165f4330de9b..f236f30c31000ca508fc744e0c77ecb3bb8155a8 100644 GIT binary patch literal 1058624 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 IqU6XkmAClZwP*6Pi* z-U{BjpLB={Z~YT}ppyU_dF^`#Hn zkEEAApGf4) zvU6cG_)ekS)-k|t=T-xcD%k^EJNg)KjU@bzVx4CAoyEtq&qMjSD^3G1WrWC+Qh*(n z>;%3&W;t;1;vv9-QH_9`R7`~SOZSg~#V<|%=5-o1*A--|*jr7km3XT^X`IP<-kf_$0=#NCYwunSz+~E+wbh?nqo89Ri}4= ztHI1Au5)}=y7H^8cCFSf!j)~m!nMbirLGBA=egF?o$i{~f21pA=k97(r<3crNoKA( zFAQCO-1*9TkadeUX?7~l{m@q4%rl`p;ki+~;*##Xwc}iPS4s6W&s%eB)bUn_S8?#} ztkpvd;oVxV8oC1Cnmr2m`7B@HjQ2jku5Mny)ed$5*6&prxJgnZ)JNJoB#XtmNAM1X zSmSZkA3(pvu}Y$5dU-)-`(}Gw;{yyi)sMhZ-D!s zcDn@fZ`gbqIA|??tF7WBY+rWJ7ihn9|4gy{uXyWKN5$UC7%K7B9MVL&-daq8vfldM zPV24UtsCsi<*oULhqANdhqAemL)l(ahO*=AhO&AkUaVV`7n@@1#adk*!d6~1gnij# z2;0?u2s@|q5VmZ<5cYl05Vq>RA#Bt9A?%q3UaapRFZSyiFLv}9FLvuEFSe!mPFX4SOZP!l( zuSs8q?-~o3%0m21w;RCx8+pLqdyuJkEZ?Qt87Mz8DFwJr!|lKYW=nwg+YSOAVBQk= zX6Y+v-`kHnftU1a4J_S1r^%7m{QFCVE^G-qML31?yJRA=FmW6r|+N1TNNQk;b~ zlAVQiNzTIj!_LAlhnH zoNyL8r#TD1ra23@r#lOq3Y>)t1kS=tfwNGOvwIircxm1_7v;j$tbF5wf-heGkG(U2 zis^m)e<7tvB`K0ZL?L8J&D>|kPRPE6vP(h|K9*0EB_CU44{0SLB)T=tNcJduwv>-0 zWZ(DyneTmm$GpcZ&F_ECulb%c_nbN3@9Xp2JI`~U`|9o9=RR{U%(INPz;}mvzcYln zQlw5(;K&kB;8)pQfn(wr;Hs^f0T+^AQ2*D3tAJ(y-IFe3d>_Dj310_}hIeOuaEk^m zxF`X>=5`zSLew+h=HuQ0?`rb_cz^X*zzxzL03V6C0_-Zt2G+}t2fiZ0cYzHWGziM= zy4D7MzBCs0U$%el(Ic<@=LOw5E6>)@Mk=zE@Hx2^X6rCoD4(rU7+tnPwi*$xL)2ue zsFMr1(aD8adAN|d9xmjQhYMNd=|WoZT*y_P3z^DyAa3NJZTu4zT7jn9j z3z60tOPi;C*%~d>BwM>1?}2%iL$1_;xj|b)1^_P`x)`{f=X&4`mRo_(jfet{eX#^M zZDUv9N*ixMdt|dix{ROH3g*p*ec1>6E%^;_PS4sf7i{fYC*XeD+5s<_<_TQy1`jx+ zraN%GIjw+ay>1A+dr&RlWSd{mz9NS!z>TNI1J|lI3D|AyH~5W)Z2!1-=8nAfXKQQ^ z<=Glzq#|3R=`JeF)-+lupRK35=&}{Eb$r)yWox`eBJ1CF4|{WB3OoE;8vCGAHfuZm zEc@5hD{NZaUG`(=M{FnSGS+_p)EB1at8JqE}lwI%skPUuT#2&J{ z#a8`tg&nvfk9F*En)RzCVUILnSodq2K;V5ue zr+vVa@8Z8b*UiJAytDp5V9O2oZ{2Ms3HD#Me>V2`Z^_oty_ILHucL}={Y-aJVYZs} zG}<=wsKrE?d~3l{X@Iz&s|O{C3J?`|<&Q*(D~^yRuhb9Zlet8ll4 z3U_DFDiylBf)>iVyS1OrU2wOfw^qA5mNrklyU}z_&D}jGQ-@}`+h&MzcZsPAcU}5( zy{^#RF0@eI-N6HN?t;7TX@{uE-Er}o1TNLK3O+yCDfkqYB#5#-ENJ~wB(SzSFBpF2 zx*)1qv0&3*rGi~|UI;D~zY=)0dnFk0yiAbk^HgBJ^`W5QlOjRV;zEIK)MY_Xuk(UQ z1v!G6(=r7ed1-~6sYj~xQ#v z`R*gkeLe@~p+0MU3wX7$8O&=vXzK(#&cqEk`EDEF`a>Ln`;h9u`vWgRee1rC0+zkr zkS@KJAA-42Uwm7^ywS|qdB9))jRv;yJqkSL-Wgyk&+EWD=iCFn__+u;ch_y;TvPX3W~(&&^fTJan3H6xX0YfKXr z*}8)6qQY#Ap@s6zO~;=yePSwxaw&lHh1z6d%SNaE(~lf9+1*PJpXia@x=#D;?<3u#LsB+v@cs9 zj?g4qA9pH%xkDE>wS#$@S?#9--y5+Kxc~0;z$xF?0_!af1D+b=1Kixs9(a4nK4_10 zk^K$#PrGU`x9f|+3gF`wIlv2=d;m^JGljWgV`ka`_Z!$8cpeYuo;l~bLHW34SUx7+ z1d<`-{8J4-l^%GfnJQYnu3N%>Z%JFn{s1Ig`at%_oY*GslT*AMh2&-W?_OHyBKQ^po3w#}36TbRV=B%D0Rk z1Drm!18~F6HGwmGorC=?dN3SVwtw!?Bd`7UXcNaN&sN{&D$ZMpA1AlMY#l}m<+F9l zSY5V4wi=D&Iz&yjR@8ljHne%_$FlgO9!w@ME~1)T7Gi9Es@Y|j<2^RY3prC>UvwUpMGcJdRr1t z>yg$c{jjuo+Lx_q(=^G}=QS6@9RIs39{|rgYz4m&=)BJrcu-9~@Wn$sV6h{v-}*Z~ zD?4rEU8rwEMj)_kc1V{VUBocwzUCNDn3JFUbt!P1;AYqE8N?iO1-FZa3g0w~@eIK2HIj(`^>;oyN0)ErVtN zUuiuFcz>T^z%$(iz-F%+0pD0(8Q6Jw7VMvGs~*6z{gXnEy!K~nNQm-m)$61pTg`$w zxfN!s6D^d_R`=Q5M!I>ibY5&B?GQERtraz%RVjo!Uh2oQJn5R6k7rGhsYA2ztTywM zyDJf@a5s-usnFerv{2sN4|8-yVVz!%iWgY*1`_Etc9yftc90_Ho`F0Mrc9m3bW7E6)x;k zPk1(`o={?MD-0WDD;yGRD?AxsD||Mv)dO~BndctED>Iyr~ zsVmHBR9Cp}ij6R8sf{p+ZzG(gZzGJoWG#$NvKIDPV=bJy)LNKGo2PwaT`{3t$CdAT z?1IHXm`l{o&jy|`7(B5zaH9ZxhGE_Ai=cd2)B@n!^QHh#uGvkF&4EWBkB0WhUT;X3 z(@FSDzuc{JVE)3=E~&sB*WClwudN63N@q8y0qhcC1spiu7C3Wuec+%`b%96svINdf z#%CN(%KilH2{*a|yfbJI@FQj>@Xtniz_R_rTg)AK?Y|yNT&6r*i&bT74BbVA*?OE7 z%4h4jCAw^dY@Hldu51msy<7a~<8CpJA1j`l5GxLLj1%uX5+|jZJUQKGn`UZQyMqXcn4W`fvkNrHGDKS8|pO}zN>&Umpy_jqy1i#W0S#yD|4 zKTf>yMXWe_cdYotm{_r>S**C8UaWZdqut`+cXo>_h5zH*Kl zd$%_Zc>Kvi;Od=!01voX73NwEzh?kkZ`&tWzpTz>;5YBK02`im1eVPX>GCNj%v1KB zYfU|Un9F22s}rz)cYol(>C1svq-+GfS+EOOza#;8*ttaDefIIdo15X>vQ=X?K)K_m zaNy(|U*PPaZGm|ndcf(|BVhk!`)BL2-%kE<9w|L7l`dNGn}bTLlxM3iU&VRrce;xT zv(<7rxBv3l>bQdY@4B%rI@Xm-J4DTRfqVND{+B!Z`LRFt@jZ?v^9>#L@;i@8;zvd# z@Nb=qcBFP6*&u6f)5Sh~n& zX-wik$d-nB*MV2^>p&KLufqr4RgCjWM~#~S<=u9K0x!RcS@?9wQYhaoS^~VV>wMrx z-7wqr^Sz-w{<14@$EK#hLnoex{Y!`+1T5P>ALxhGWxx2-!Rk+(@GuP`1-Swq~^6t*uqH`DAHQQP)cPr|Aw-aridUu2Anwq=2Tc!@p z-1U!E?yjVx3U{k)Q{k>HEtGe+#de*$;BFr65H;rv73Jqrv39V9L?iSKQd3T@g(76lluGqnkQxw|u7 zxx0G9ROD{QSgzLcwldyUl6y)Vn*LuBo}Zkur5?=I)3j{iU z4fRyvZYr%(p}S{kp}f1d_UPONcjxZqIz+9zp-e?wuf@{lsdx7-T~l*+t0i+?pt-w2 z2bH_)J5+_c0klem?uOGsd3QJN)42=oy6rEQyIV4RnOzya%;5}Q=0b)qQ<~w+RAGG? zTh^CxWqlbw>&x_DeHkyAPjC9)y0E?skM(8TSYM_Y>&w(yJ;sD>L-rcgS-RD*tX8g=}4Ss9f3FqNI$pEGZ*xOUg*6k}}f0 zq>KzJDIL;o zDI?QM%7|Y{85vYkMtYW%5dr&5-4lm^tF6oiz9%>e9B#A@_`O>rVA<@DE(Z;lLRRHJ z)r0pG2E1zx+%Ib|@VmE@f&Vp{4!mNOKX97MC}7{1?!bQaTL7 zx_RPso_HDU5H;6aP5K*VM-4X24)it59yG%+yEx1+J9evKcBNFq?BS;jvwIa9W>0=% znBDA+VfN+shS}TS8D@vPGR&^@)G&Kwv0?Vl>xS8b&KqX$6B%X?Of}5j9&4CwxY02C z!g9lG&-sSgNz)Cp6DAmD4;f{c{ceb1cK!gvY-yd#j%jPQhGuAzt)%$`c<*7=#IwMc z%BsM76#p&3_b%4|+Y!onuNwhd*TDBOZVCJa-(MWT0*`9h6IeDoq|1Pu7|7lSZ|&f{ zg`-xE1#Z1_4e;K!3BYTor2|_Tp9J3g?L4rnC=d7_%X7fvrk?=rRTJOK*!RV5D8Dx* z0$4EB2l)N#`oL@S4#57)_D_BGx08R2jY=>1rHfYl2Ip~>@@$Q9RgtZsbQcw7>lRul zpRIc{b=eB%tv#~14pEb>6)~12tuu%=PyKk-e!8aS<5{<4>iFYtMddv4Sg~?mI(Na{1-V>@sBzb3v9Tb0gQ#OgE=37AC9dF?@=tywgJBN!WuYwWewmKQ(nXOt@lU;9=wzfEL~*p zBg`4Q1)k?p5M~AMDO}fP2=K&J%Ya+Y+zwpQY#(szx#_?~J|f_23$uX-#j?Pcn;rq~ zG%g8v%e;-icKsIuyP5O`wis&;EHR3K{g>^Z6nf;ff2_;uqKa(op(0z&&T?`q%vL8_ zD4(tF=eUh@V_pCA{7>2;YO;0BOAF$6x(->rsS(+H*^M;4*OR2!`H}FOb4g&ra^esX zNp|~fB`c@yBoF$>kWGhok&=IQkd$`Yh#$L=EFQX!5Wz|^W@i|g)p8ygw#T0swf7-o z&HIwDC_%aWJ0M02|BN>*&2|iNw$8uIS-ztWp(Wq@QD>Q zA?qw0ngHKx?h2gZ*aEnRj~#G$WdmTBE+?SAf0}v&%Vvjkah{wA&$8+t*BG+q^D2Mf z)m5T^-&^kou68RM*!N=|@Yi8CfE#wd1>7zG%O`o{L;0R-Il!OZ9sn-=fbH9SY&w)T z80G>z>vcBlzij_hyZGD5KdynaYOE{hit=m??VuuC1L!U)%+_#PD4(qxFX^%s&RgB` zxeig2t#Jj@Bq6H;B;#96kt7+6m%Q#hN;0(nU`f|VFUjR2oh2Of zX(?%RtEHr~$W*OzKWgj5<<~2AuIXs`ouo4DWk9rp?p7^Mc}AT*sAfJZt+f5zGbp9OMFXhdeIN z1dd#^3HVgc{lH(RrUQ=-!?{XT&*1xUR(+iT>!&*z0L%WnCta?89s=`d+poO>T(G7V z%stCv+X2tK?FGES9N%Zt{IegFpYJ>txS0j6U*^~s%45FbyV9OcX%6L4!z_Rw^nV5I zKUtXtcDG#u+^SX$VA=jzc$+)&+CQH4_`dRNEpD&kyr7uwqQY$bObg|+wc1@>wnDb< zp&g>;n#;@IgpBhyA-nud$X9<85;WC>=m(gPm;e(Zm}Wu>r2Wb!lulkR$SlFpc$-RH?tnF+aVL+>OWsW`^?>QfsOy!0{o>f&g;!+`$Xx#J-6tQ z*Zyo3K2n~oq@Rjx^(^M(R+z1WXrX+zPAJi3D`abx2V94!$yOWlqioAX$Jo~aA~xFc zG|MCvur@>Pvc;s79lGot+dAk6o0(K8Gr5I9X4?i;Gh62yWOfl%$+WSkoZ0rOUST>cg_}iaca2wdWof*t?b$Z?e*iElB@a3m1fJ@%k0SAmX0Is(8 z1k~3^&l^}iTbq<7K=y|8Zw%S|@Qy$5_VH1`!7=-Rhb$8VM_;%Ie7XBg-~*j+0|(E< z^46XOP=5Ig&a=IE_8^oGjm3Y9R%g$Ea^5``;QA@}8xGn2Y4?ab^4g!RKc6Vi)|kF3 zvULmHMTOa#N(<$)^~7UcwnDc0J}FnWR@8XbO4>a2<5{_MP0h!%-pJJP$9*-G^J3X& z%H1s zqzZSt3dF7u+qR9irx(wxV*k(hKf*sdv|tuBo}ZQ)KGU%-t(*mAhL! zT7|oLv`U4!`;ZpOyZhm#&RuXf>J`@^YTOOzu|!~WB3v-LV5Q*pkqv^0@jC@03X=u@ zPCF*ZoO@F6to0?qsk1i(dPDCD+D$7G)XBOhC>ni7Fy!z}0ekw2;Mv1G!KI$31>G8o z1!>!l33~r~P~b1zBRF{@MsVfgR)OBY4T68z)q)9D5rW=JmkN08!URD*mIzwD=9;H{ z*JDm^xt5jhK0@_3f5Tj=UY&}8*B!Nld9AsTEr44*aR8d3(bK0x?F?$ zT6CQNEPK5nT^9KqgZuaU8n=UaqqUxe0{5*J3w*hMCUEqmOTbZW?*eD0J_PRX@fi41 zW(n|2MU-Z1q;)CA<*etg)`Z*MvA1Otybc(Ic<@*JCX|E6-M<>YUc; z9VfTKY$dc%K3n_0=Qh&Ki>32oU(*gzldXMh#LSizCzw+U&oKR36)>rnZZq>&J!Tx2 zzh(B``N1@JUYQKIZ%F*67?T!0Cghii332~ijl}gbBDIaGl1%T)WD8%9ST?x9loaGMUxuA$eqK1mwCR<@bf_$0^lZe;$`9I_t>K?E$yVFb z^I@*k!Q4B*MMY*Xx9Sqx6nNH?*1&f!w*+>-+yHoZld8byF62OcQ#$ttmdy_7a_n{@ z%w1aA-x20E`S%C_cImkhctdmwa7dH{xXQyzz%Em9u9d^YJ5auHF_y1!zYOL79Loh> zw;kWX+o$IyC?B4Q@3if{yakl+TP}wEm+c>i&%d4g<2+J&S}I+%;y2(ce<;t^m{BUu zTf^xtD$LesS}32bDPMHi3g@j}U%3uZldWwm`ZC5#`Y|0G2Qs~LhcStbeVNOjCo}Cb zf|#lM7BH@r!x*O*%b19W2xi%emCVt$D;aUE2*zl{a^}9}Ql>a?36ov>Z>E;PJm$r{ zASN|0fU&DSiHSPs#}r=nVV;K%V?5psViwdHz`T0jkGZm~FEh%#FY}l-Py5bWi@$4< zt(!V+;miJB>UxPWWLx+rA#i@JS-`F%{sCT^xdHfe&N|?%`=P+ovpWNSnNkStkuI|B zYbI(5*%DP{AMm2ASHPk*wIG{JT$%to9&QaR?Aif1rw?+y-nf2B8h&3re;e5T&fnF5 z1Fg!SeKuDmz#sEA0<#_Z1JB<7K6X$u{x}a&c^@IxK)JiVl~lMJO{-MsZW=9=clVS&w}-lGE_%&1z7p3VYTRAs z5W!pG5W)M)A%Zu}A%Zu`A%fT2A%f@b5W#Ee5W%bC5WzEch~QOnh~WLQkKpM!MDVIO zMDVIPMDWZUB6v0q5xhnY5xf?3n=TF!ynYT5yb%r&yz%rqLmVP_3mhVNiyb0(OC2J3 z(mH?A=4sz~!RIPm$CYn9Yw-PJ@ch+$p#waRwAgScu<7ghz+vgjflr=BPTsZv%3pNB z@9VpxK9uK7-v{lHKQ9ney(z>VrP0`{_V z0`8dC6gccbV_^1fec-GM7QjYUm4O$#-Gla3TAK=dbml_fCZsB`Z2xRD;EufZk7xZf zR-Uc)Z7t?9QIycZDCG)O_Tn>7R+qm%NF6l4?l(h$MwebTUq1xJrvu( z`a2dULVIMhL%MhkG=Seo)ZGvUyx|oK{4(Sj@U5nXFt2pUB1_=5|JDcgoYn|9{3CL+ zX7*5iXMhdx{`;oDJ%WEid)B(#1fJ}^ADH2V0C(7030Ss&-q0hj{n%}D4(qhtLw5AuDNV$a2=v1Tb~r~W;a!dWo!AwvVyy@?8|v^?CxgqY;sXN zd-R_KHpwxOEs9BG!(Jz{Q%sZC&?-snt_O+io0LR$?4(5YmqjAmA}xWP+$VwcD2Zp? zg5ud3RpQymt#NEyw>b9vjab%hSuESIb1a)!GnVcAayJ|GU^kmio2Px}t*JFN$<~MO zCc@wTP1p0lD}EZl9QdLxw!r^(XbL>&izD#)ZZ^R6pX&qPXps%|1x)M%ESnwDrDOYe z$X<&+4I!KPwI%^a2_u26_4fdW^D=-3oIC}5GV~(wk)M}%(?#OF@wp!Ivk*%dFvNe_NqQY!FOAF<*^_ICV zTOnKLT9hkWD{4F|mNrlQc-CFIrsm^W)oO8Fp!s;#mD#7RtNZzmCpb zaQ8Ls5H;tt6_vYnt-0f+-rYfTP0ih1EK`SO?mnxp+}%(;755Py(kd0Y`<)ibyIZ5K z&RuYKKkX1T?gmyd7XI77Sm-g%SoqW)A>cXUcHH1b7YY5r0 z8p4N_O@$r4*ARXzsUdXAs3Basq=wK|`uFYHBPzW?(GrR*ySg+IKxh>T@kC-&ogW@gcas|2efD z%&jV3)EC&V(oEni)5XAJ+T(M!^s7yS@-`MdffovD0Y9p@3)&-ly&+xn=l+EI?e4SZ z!~OfI?+ybWd|C{=_?JG+tNkIU34H3dHSnDicEB62;d8g^Qjku{B+S$#RyzXaAL>r7r?nh&?d4>t;_SuBA3$IQJs?{J~p*6_F`!&dJ zTT^nrttqMLVoK~ROiAF=8pP#D4bm*A2KnJsgY3RloxELIolJJEPEOo0A$1~5NI@qP z;{Vo|G)prk{X&h2?=WL>jBiZD?Tkq*ZJzdJYji_Rvh{40BRtuAmOUog!rZCJ)%yXz zpE478e4E9<1sy|yzYGch9^u&oc;{LR;CY@qp*^zMAzeaNeb16@@0fe@U@lX3mBYY6 zG53K7tkQ>UKK08KIQF(RaPtH^;LOzxfW7b90^cpM0{$te0laG7cW962yX(NFHv56+ zeVh&Ke@h=&wtw6kaYtVJvo+R9MYeuYk*(2m7Zqk}8ZDI1)>Dmj*$UY@-mzTSI$_je zo>4{^Z^Xt3-t&g*c^=23d2QG3;oZKH#+$G~!nIZ}Xgg z-sE+dc#Zd9T|RGN-Z@_2z>~cB1G0Et`bT-f*(tp9CW$=5J3D#KCR=zHb0c~F6ISu2 zJXy}WGAEojT(E@aIDawkCvBegW$Wjrnq=#tH6f5?UT%fJo0ryv?5peI1ibHz8}OV4 z$Obu0p#0dsHGsE1E`a)~2l@faW`}g~dzS{;`cSV8WX-Zm3xLb?cLAT>dJMQhlk>nv z1vh{Pe=GvtF}4_ZMzuS@{i|I8p4lfCxPSTq;On0^0AIK{4Y+W2GvK)$kHG%R_RmJA z|CVeW?W{ao^;G@l;4|Gth1qJ>jN57 z*qJ-BnvZAor(0@%AE9nb74AM$abA!{t5oQ29xar2_nwQ+T{tgT(1Pm_HSRvJ%uA|> zPa;cL%r8xeM;TryZgu zcOAx*Hm`_}U0d#Wsdsl6T~l*+m&(+knY(@4D|ff}tBTw$rBy0)SI>>xXL)zc+v(f| zcT;JHsByQV&UbIq=BanrvORZXHFsA)x77Tc!Ps57yLvxWxEoKaROoINEtGfnVh5eO z;BG)iu0yoc-A%N4>fJ4%YijQ951BeN%iYr+%H1WeRk-Wx&h@%NcjwYVd3Pf^>D&c( zojkPK-2t?D>fK#M*VNqI44FDKb9V_}xw|o{a@W>Vg}ZLFP~P3HJe|AX?nBxkYIC<@ z7E?ZVywtnfgRZH$yR&8L(9B)FK!v-NRm}M+q*W@+-Pg2G-d%m7a~Ir=p&g>7?w+U3 zQ}1pS0e56Icegd&Qd);*?tbm8++E*yD$W_AXq5`x-A@bU-4zLS?t;5Mow*LtQg@fp z=BamALf6#X-4`--Xy$HuH|6e1RLuwT?!xuDLU$+ALV0)Rb=A2G?pk*%r@Ns{MT|8F zY4g;(yMV5#xx0I1>d?&Huf3JKYp<{3oS}Mm749~sh4SvU>!EWO+`UFSL{09xN7@qU zr<2U5L!>Qf6KPAFBW+3JNLykXX-ljkZAq<2TVfe$OX@`0l6sN0#6HrNI7Zr%=8?9f zCEccdq%G+v_np%3m;N`|kAF|@crDb^lY1tDEjgSz+y`*jPL?iV~!+9K&9q0d=*e9aA>T{6LQAFy0{jcPBLgc)4j9aPK9x(q#Kz_WNGY zBQ5psk6e>gP=`UP#`D7m^p@ zh2&9qA-Nk~NUnqzl5=#M%%k8^$a&I^6`$HIL0f3Nc4>u>hqUy1eM#~$?I+lzeo-_HB+4;1?F zt33AM?|tjT@AuP(KiX&%|ESq0zFnPB{BHF|@uhW|4*Kn}c0IGpXb9J`@?~r8^9k^N z!;K5h0as1J_aj#QTo2xt==K`lzjz?g5z7B5wg&bN(gz;YT?F;%dw2oMW`}f%?idGI zoH*10-bc9M@dV(%lhy%WnwA9I_V{t&$-Pejce2IzFK$h~1m&MjoCj`sGY5Een{?nK zd9lC~^j0Ew9tC_b$PT#jyaTZRvi*}lkG%G0Yv6F@*=k=^#kIfDP)=@z*=kP<<+HW* zFm5B=d~iA+ynuFyn)B9*7_*Yr`IRX|S_1dM#)1?NJwb!6&xz-T>%_U0 zgtYVDN1mV9Om6O9O5QdNAcOl1Aa1kx8W}wk7bK zmSJUj@IJzk13CZ;jV1z5-X9K}dOH&My~lRoSvO;V2e01^e8*-d@ZqhSf$f*A29DaY z0J!hV!N3C3;EUqvgK&880X> z+aNi0cD;o88Y$^Gex1bp(Q3)_H7g|!iTFI1o>m+{b zA|63z;BPW>pp^aAlI_;owv4%sszs;tR1-)`2NTDzxM z=v%fu@S{ylfJbk01a7|zpNAOt)f~#V-^S-FK0S%gU!2-D3)*we3*TMaHEArAd)=)E z+;~GeJoBr0;}*cO{quqzdF?-MO`oYeTSE<0+(+=9&dIGXTPM>(`D~pxLzk^^-fBIQ z>ku{BT2c2AgtU3;$FmmDH8mg4+AC9sX5(2FbCkPVY^}oG>Om^pZA=U0-EB8Z=PtN= zjdq9{cYhsn=KV}{<^>&a<}FTk<_$=2=GpFY=6P;$=5>g4=0&e`=2{V1N`(p&TVS{ zvN_CkitgD3_~;mK;Mb$PfLqmW4_rLR82IAHEl|JgzkAZ9t<@)(yY#qlCd~C(9UB|(t&{04Dm*U;rG@g@8aY>& zt&pv*^SBOCldY#RtjLWFD^iKIBHdUkvWvAM#+g=Rai$gdnrTG>vaHC3EGuFnvLcN{ zR-~TDis*@~$c-#3vNOwyjLxzmb+W9;rA#XlmT5)YGp)!w)`}cvt;ihKigaeJh&5|P zK4e&tyBSvGLWUKQ)_I;bPy4bpcfKas+H(H{$dVREF9VO9T?^(8t!>;9xX0{)z?T>L z0{c1p0RM9A0({V*Hn2lpJk&2;Warl#S>im`9i5jzHaA_74$LML1AqVa9r$r`LzpY( z+RFsEDnWMIQWeUF7UTD2tS*J`uhgml`04D!z|(d|0_Rp63mlhUANc-boR=%xKYk1T zTe9{1V&&PInw6ydUADP&7ZqmfU0NugtuGepvK6v*)uM7`Ys2e{*eCIau@a0hr~m7l=hHdcjsuALmJ0C(u~2G&m+ zd>(i~?t0+;tLp>HW`}g?)@?py@75Qefh&J(4O!jbJ7&G<%Oy~*KP(b>mM|K4)S5Wp zIZqRSs}y4S!@!+T?pt{y@SST*fp0$<2b}BM0l02zW#DJsB4K}J`$t5Ny!MZ0Eeltk ztuc>O+$*qO!pW^LTRYN1`E2bO#%-j#S3vI-l+q4SbKY7}<5?Er-0@OBp5;Z?)OKd-&%6C1M_dFctPR;sW3fy9AU6|)8S?dNI7$E?Tm`;EEak6hWq@Sm%2l7Z#!WlBx zF^6pLn?-&K)5$W=RB~cqGTC(?p3D#0MG_xxBVyalWV>q=>DFsK8NED`Sgil;v38Ah zRgdCYR=#X~bG<*zof`8v9oS;uYv8}W7(@0=`)L9EZ&fp3eNq`X_ShZxzHv==0Z%^I z99T9xq|0)%6)?By`}L}jHQ7%IaG`ZDux*<)z}^Nsfmxem;D%if1GlVs6gaxd5#Tl6 zDZr*}Ohk_cJ7?Cz}z6o^?rH zm&PP(Qww50tQ`^l-HBw+_9SVSJP6tBPK;Z%Ct-(LljGA}$cU6Cj*BXCjHIzHQjRH0~y$<-B8NNsS`Yr*K|26kIv`02Oq{}u(7s!@J zNB02ND=P!O*$(H$PUhphSKAS-A-f(N?f~qP-VykCN?YJLUz!0I&#Mo-!psynZTtsl z-{1r1fNO>C06uOw3V15>TIsx4gKfW^{Noy3tLDF4idLSj-V;@1>two%3bQqo7RqO9 zTG9T-`UQ*j9_P;U9dB6w7N02kGbC5I7FUXmNb3bPgJugKxlIBg|o5Y4pPez>Tgq12#@;1uR_W3S4=G3$UG&BXB2!y1@P& zs{scrD24W!zsLZdvnCw4%oX=vwtwo!{&w<@tkbIVf@Mj{v(;CyC9a6YpoIG@=UoX?yH&SwgP^O={y`HcSTe8zls zK2vXYKGR@!K4UjKpRt*p&(xZo&lu0nXMP3eGw*`)na6aS^TGLyC^(-v7@W_<1?MxH zgY%iy!THS6;C$xq;C$w<;Cx0}=L6b2?aS7?iJD~V%AyDOx8A8c%yD;(4hP;dYddgg zza-%K=Ewmqxc)8={JyL{LfHQ2$Scqu+3b)mZ&o-#7K_{yf$crZfW18|;WrF5-!uo_ zTj&9N8oC#ZbQF;uTZ3CbDbV}?Y~#B^Puu< zeXVLdt78f$x58}oriJp^>UThwt&pvH2e}SWldTmsp4FT-PyKk-c)F(M<5`h1b^LLS zr*b@N#9`&`ruwQlFL+O@ROoK?RPK<-yIcQ|&RuXfi*|^Xy8D)3^@NQg>r%^VGY0m#(R~yVZ_z zU7)$UL97aQgH*U1K&w>fZa6KJcXwmD&RuZV?O3_o?bp{_xNeHMaKe6bp}(nxu-0-5 zVN8u$!l_$o2|Luc6wcdVDfE16DV*D?w(#$6wT1WjwS{?&YYTgQw-g$jwiGsAYANjL zX({x3QA_Bzt(K5_B42To{!&&i7Fj`#nQ&eehW08e+~ ze1SG8_#7^qt@U92Uvp{$zeqO$_Sydh+SBF0Rp7SA_5wGwnFaihi$1Vy|4d-HBd`6} zW0%Crvvu7t71?^0?xMnMEvAL?+4?3^m#vVk>$1v~tq&v;(ymlON_(6jM{b-T8R0qP zuWlzv71La@B`=pW3pquSf1Dzn2A?KxW}hZ)r=BK8-A{Dcu-znnuC6|;g z&n1Osxn#?xlVo!JlVpEV4msW-hwLagK{m`eK_<00L6*LkkZt)AlA0qS%|*XG)~>Ox z#$v8z<;&LO>VNZPpI>on(|zF6)hr?F{vGcE+-YP-V6UR~!1kA&fXC_81dg)54E4Dz z^#hj84(al1?-7w~d(9WOfvkPVUj&?)vkSQOljFd3YUKeN-?#<*xzhvS!j2DtoBy~E z{A18f;Fz7~fbAQl0k5sJ6<9BGHt_4BR=~sWvatWM{d0mIdF{{E=BHF-Ylw<$Z7kvB zR+z1xv`{`<`<&o5(#?yd^J2?rhp4&cvWYpzY_dGhOly0AnNXO=)Gofnm^of%1}wVD zxQVYb^K))8DZaND*MQs1kjuB3!v}9O19-QY;j3;jUb_mJ$6+^_!`*H$-mk7PJCb43@JPbKFWBlq*n_6z5jPg_2YjgE9^l;`yMc}7ZUS!Ccp30P zi*dkW%l5#H=2rr4>xBC++duVB{dV$?@g=RA|MK{Z@@y?oH6{>BcTr)sZlQ(p*}C_% zE?eQewZ|E*L)2tzMcqdTqRmr3p0%H@srh);Etxw0_*+qVA0hUzDX-Trh-&F>@BEl}?6 z>)9%DH;q=Q(A_**DDUpQOFDPK-39qvhp2H^zxDp+74b==%~S7gFk8fNLJQ^H9ehpaF1Y)ic8HqXttfZxu5-sry}QHcnwq=2RHhEi z-0fSa+}+e*6}ekVt5oQ&-VJV_<=r*EsdE?HO{E>8rS9IQ%~S8LWg&NDHFsA)x77Tc z!T64HcfF^oa5tV-snFdlS}5=C#alXe!QFt{T!*N2w_=t}w0Y{?Eud>^?(PqnIyB4O z)Ay9S>pDk;yS{h0URUVuTv{maZp2-kyWpAT~e&v z-Ga#~+_f!I;jSAkly|r5eVx1D?nBxkTAI72#oX~y?`{versnR>mZ?KCclrM+cXvjh z3U>=>l?rqBH7%5PSO0;|U2r#sc8FScLz#-WUOP{lr{3Kv|8hrGb9Y(X+$tEXossECh{Hc!2~3+S4fySrDW z4$a&Rdam5v0#(;))t{-Acz-3_75Q}1pnT~l*+ z@5$7m**QbvI~DHEQ{gUo!}YpCcZbnJd3UG0)wv7q8okqMciYhBsdqPkuBo}ZTV?9d z%-v_7mAgA*p$d1u(<&9ZYx$l#B=YV$e$crK?&i`CQFG2v$FKz>{kZOH$}D|Wm#KZu zgy~rLlV8LABi}jqC;$B;LuPui1ykcteJ12*6UH>!h4~iSlCinmk~y}o1;ab$%-o&R zjHy4fDf3`cW5$_h&m5ask6G2O4l`nrC6nCAlF@Hs!+aUjkg3(W`G4w?);HoKcf1zr z>B;?O(w5%no1v$tXXN*P`|0wTYt==4Jw3DD6XpqmgM+&G1^aainC=%mQQ9KuBKevHe=?s;Q5{MPw=gUi4cZkK?E+x`VC|9z7#GVq(9n4Rl@J!i!Mw+-0>Y;$T1@XGFw z;5R=<(--q(e?KW-|Gt`?;5RYLnl1o7)gctP@2K^_W2_2+m$j${``a(b5V$0~0M;)V zl?}f^l5byJt3j}TW{H0TXP<8XEW7wEU?&L(LYc z$WZcy6Io$~4x@$g89L>wE<+(hjlOXmq9#KN`t2ankL}DYB;wX865nzWX>w>18F_0A zdAf5F`P+65u^qmYgpOHD8eZE>*1U`+=BIa(FRylzNso4rSi5MFTWcE`?74*`#BU_t zsgWdT&}x$LR|MHwX*sEJY8kQP|3iFsZy>d^w*99rX?;6s^Rz2NSN!<@$Kf?1T zraJK9y=!fjdjKc={V%L9U1T$D)tm$HypAa=@ZC&fcU!`{n)YnNcRk(py8zo;kMIWW zbL=@}s(k&^&G7jc)(sy)=2;s*1>R&}0Q>XL7NKe);yr zmr7uNLj6jCFLaCqmfharCwHW^J41si8~rC(?ez5YOa*~cruhX=nI71Ac2LL!uT)hT z8cuglVTMN2Lir3$`K8NH$WSjmqyPN-sU}0cY#WHApD)?Y|#T%tQ^_ScxufsVgd6Q(x4iasyG$yau92VGTq*g$+cmd3K__PIjV42kMK? z-LVxtnO9HbdB#TMYi}*8^3zK6w%AIv^0BpOj*G1*!{6>dbxG@cK%1vs8Jbs#>$Lyf zd1%dN37)bU=z75c&hs`M?E#!*QUh4_Z(O?YNl}*U_vQ4qg7dPbf0+SKx_1}WpAr%d zys`e{Oxf={T5CKj%kuS$++93m%hwvr0q&H!6u56hJn)*SRiHm?E_Vc8_pJwTrDjcm zQwg&_a24OKR%e1$RTuxDHX{ZbhB%Ce!ArclRM(Q*(FC z&ABen+}+!?l)GzITZOy9v`U5UuA+tV?(VSAxeM-k*3xQsC(`DrcQ=NvskyrsW$MuE zoMDrda(BHesc_fTlIwMa?)IRC^6n0=t#cRL{Y*PVOLMoO6?eSUyX!;O)ZE<&nL0Fc z_jWzy?xw05XDFjpDs;C>9d4iH-K}k{a~IrAqaC8g-J5Gu80qJw!yd-Vb30S;`5(s6 z^l#?p*bt`Z%OWP!bOkfHbUo9?cqd~rD~TE2D218P`XJ-xdyvU&e}I|cv7ed$elO$j zB#HS@If0q9BZeu;-Of~Bw3(SDiDH}+!_EJ^vM@?NCzI|+GJ4RGid9U`>jx3me;=KG9uuloT%OJ6pCG5|IxDmjk4zC0rcw+_dvhV@G-^~fs zCwrejxc!nqF1!6jdZe}cK7*Zu@(lH^r|RE-TTWz!8QOyu%4g{C z`nn8-4E;}ltp#loY6~8vnhRJl@3^geWf%z;G?X!XJFUtfj_DHxr5Ph#CYm;b%%9(20`PXj zDZss}ECs$ZF&DV$_%Fcj-Ee+TpPE<+(hJsWWyq9#L419xUgKTl_; zXB{#t&DyozSk!M`9nqTnx}u!Lbwp9kYKq!2`l2r`MOiK*GP0(QiOE`DxG8J)_l;To zrf$!=v>-mqe%pbpJ=2e6HSs^0^(g6D){~Bpvl=XXpEbkaM^?nuA6ZXqUS_QvmY4O! zZ{L6FlGb;HHcz|GL$e(Je=_v7nK7I9woz`r7A!F(0jzj5iZFQX;QhiUUJ z5xC{r*T63tRfF@&>p4%L{MQ7WXT2b|F3c~HufN^WTQFb5=6+3RuWx-*;I`Jbz~>!D z0{36O1h}m@5V*?E=D^RMnnC^Y?c=S^fc?{J^A*^;)qY^v?FTpcZ^%%)W-2nYnu-iP zPIpgXh8EC5`3x;-s>@Kw&`_sxWoU(s|I_BFABTEK*VKF*%DfrZ1^+97J))oZ3#0iPn;JoWBcx8{zl=I(Z- zTWWsJVCtsaU2jJf?(U&gDs)#u3+3It+(zdvxI3dQ*CA@%t(fN-Zlldp@9s6arsnSI zyK!Bhxx44vD|dHY6BX``r&TI+cL6PwcXxF=ox9+!OM9($cL;5sdUw~+H8povBvXfG z=M2l-Rk&M6g}e40xL#N2Zbw=u?{3eII(Na{QraO}n!6V6-0@QHt`}WXb9d*-)S;QX z=lROrbyYP+c9&ME(B1d6P~Kew51qTLExJg`bKOZMhmN z3SJl|BE1qsWv`P&lbrU6{E`lc%o-mSeRMb`Iv6Pu9iN)>pSq;=b@Jqnmv-G}Xw2tY z^}n0%GNp$RjEiqK=>^=%s6DXkxVLn9I&+P??7hhE0r%lPz`PrH-(k#+fiRB#qHHwq zW*={0%d=g9dyO6eEa^K9IL+M`c>Tz>z~hcyg!akrPiX!I*k9Wf25=uC%*Yiu-LEI` z?S=h;{YNbV9vH9>c*20az{gTM1IxBgM31y~&v!BHq9Q}|1rSlXUN7EBcUqCuAuhWDi%QMQD@kMaUkqrMffr zUG|+wgb?9l_kWBzpTBuc_s;Epzu(`t`+Yp_JRbMKv-g>M-gD+PuY2y9bI)Xv2GQc7 zjag@wd)=tim0g(Ll}%u~vBlh6*jd9|*kKL3vEvh**xK%$*rN$FTduGJd*QSld)K=) zTV!E#HfynrZCb>N9l5v>TQ#B~`?`H2wrt5J?6iZ{Y|$KB_RORf?3P!p*{Do=wnMiL z?B^;@zw6@an@8)ThmPy;?|5j;-o-dSW5a3STc`E|3$JNz%U)jsJj(w35SX9x>*r43 z9iOfM9~%Au_+z)rzz1ue1a>Wb7r3|QYv32D>A=TICj!q&=?*MD9$8d*n7{I<=3?M; z(Fwpu51j>$@Vx@u>e3J3rmGvnd?B_>L*N=$SST;d=c{pIN!>dkzYUe205)U~LD zhq{x)Q|qC=Bq;XKrJW2O3La|JnQss+9vbv$i9Ppvnq%#|Js)QO`dokeJ{No0Z+_`& zKd5~#`<&Z-?QgXlY=7na2>V7QJ?vME^0psTW{&;+utoMAz6brTi>vP#Nl(A}p*x-a z9S;pTSQXYI`TA%yaO2n>z`|>q+d^M#JS^;ocDeZj)?-l>?gafhZ(}cDx5m?euQwhE zJTt8~aQB!oz#mLz0GG}k4LseyCGZ5NOOT)Vc&=wh!0`@SZUX(*#_gH|UtZS(c+S&7 zz#cUNfQ!T)0X}~+3AjVm!N9`&IywI@cxWjX%^qqlwa#!nIXtx<%8;PgL$7o-cqn+N zcei|bXhF?)SxwT@J`Q!Al+=A3%E*Opf`4KBzq@AbCRCOB{3lha)vhlIinY7+FN1bL zyH?%vrQIQ2$1(-+>POPkuH8^lQg`j92UAv}z_%o}!c3YA?b?-C$?5A0~-jsxP zqe+!&wVObKV(qeh4cZ0my7l85M2mI{s=pgd($lWp6Qrc>+I=UeLpR?|8mL*jX;Qx1 zr$687YPIV{f@1B?9bnKdXxCz(UTe2ANl&|Wm87KZ+TA6nLpSYCA0naMQWCyvK1f2l z4M|X}-L``b+6C?2CJmyezFTMrf4;P9*PfKrUArEFI&{-+(g@AkH8+yb?gdh%THk$2 zf@1A{9BR-mXg6{g-ymAFdvbR-ntRR2cA<@*^q@<5_NE68??=B{+n=7>r8gZj*@@mi z$d3NuXhqwNuSH)kU!C?ZU!8WYR-NwBqB{NAvpT)~Ty@%Pcnw<7!ICaptu8&vp%LAx zh>T7;-GWYg(3XywFQ-SI=tS>q-t~7~Tz!p)^Xci=eTMQQ_^kf5`7YNB`NF-+)I-OB zGxs2$c{K;(!f|kJ8y|#g7rcC%1otA354{Fl+!)tBn4F0FH|_91^1i_Crf=Y0v9-qv z_?_;??WeFVS*9=${ zg7JtMdm$fT`|cuVTEFMJ{2U|Up*1Bu)O;i_WVIgJkOajZ+IAGblVKfsvX1<1(jZzq zH0yH96z-MuxkJi=RqiRb_AW{(CW}Z(EwU{UW+OT_&`Bo#hkSceZZOzR|)h_BY~=B?WxipZxGz z)s&t6~vsyT4iA2HO_6# zN^AoUo7cq>JS*&6U*H}01_HO5RR;KbKX-V)6GK`8+YSx^_WXz(U8^m`#rZl>_>8#A z=bymw9gH`J`957H)&@57K)x`gIK)R6Plfk8ce?_xIG<7Hr@&`|F#e95Y5n$4M=#AD z>Rm*_L;H-C@K7%j6np60aRv{CeyD{9-ym8%)M8^0%e{`@4q_V*4rWdM4rZBIOW1V@ zOW5VkOW0dZ!ECP|f$XHj0Cvog#q8|9i`i+*7PF*DI$N7B=;e(2iq|Bi=-&BZmH zf@LN!XRSv+lp&!-eVGywInbp8uUIhTB`r$f+;`cvV?I?KE@Z2hp zZ~c`vz`--C0iUeP!v5m-H=h#+9_}bF2Kl8m#B~uDw=4qjQ$1I}{^Iv=ds zcr6si6XAlAu_-ZKoQv3);O+8bnLq z_3g(pbV0ld`S9mUyLRnKN!_*UA*e$)?KYdCS-Y-(Noe;1sZy=)J|#i1c0W!tXcx2_ zIh}71E!w3h#deCKwo{blc8XGNqbP>+Rr0rg{?0L1j*D@BaN{-GyYs3x@q^#EX~?YXd|KBKvJbz?Z%LxSi5^? z8ng@Ab)A(@?H0`XF0)B`+O?ZVO6soN$AUU^)9!X(&DwQsETP?wv-wt6tKA_aDAw+T zIR@>5c1!r`wRT&P^t5Z&o0QaDyXypX=%(E<^EGSNyPJe|sksu`txSSq?KYZc&@O2A z3~3OpeTIVZ-S;Ft?b@}P&!1V{wL6gP$z(QWiB+Q(-~XRi@sr+RQ2 z;1Lx9Ek|N4UWTAE)u z1MRWv;eFswZ+8F--|ql9^PDF0c%4v|+`0d6z6$+LQ?Qu?YxdUACKBFS*`F7;T5q)_ zL9w^ei}{@l^I*t4m~_%0TD)~(pHNle%LrA*+i+EnOY2m}5_hRG)~QteJg%r7u6U*z zrlgp*&ZU@`4ON-7$~uh4i~5XTo9fJ|U}L7i%Tubg=?hey>z7qktiCU`7aNg!aN4}o zGQCEp+BpqK-8Qy&>Y`n}Qs34&l6tdP1(pANg(}WOsp9IK9>AY3{kn(i7Q|=uugxV~ zcESmK;zs0L;6|DF9H7^=!XbWa#y()#)N{b&Umgb@QF8B21~wVC80OVfc;csV-U_!>+nWf- zH*V-r;AvaV0N?lv%M07%3pvwT@8NR3_TTc+JRaJ0xn>W|X)EEOLxLqd)Q1Gc9_qiu z;GxhztsBBOh!zh`OX$TcZRg4~cIe4G-{;IMS?a*dEYystzPuiDXh+zy@XA((IzdST<*}vnVJFG&W@8h@w=L5I#ISTRb zl`jI%pZX0r@OUZkunXnQfXi6m+E!kLp4)6&9X?@ZCgHts!}W^Aogo=@2Q!|X4yBAi`_n*JbCb;+drQv+_tgS zY*-u3^2`%p6Zb0c8TZmm2Hd``6Y!##Il$@LB7n2XMFJ;XoB_P6TUlUnz5%bT;CqWn zuQ1@D%Xa{qp5F=_86O0^s|2orJkNeK#7%GF{QiIe10lZcMIGRtZ}w|kyN%n12G@t< zOU@k&JnL?4;7P&08h?}4cO`%3^?!USb**M^HFuHl*2Clw)p~0h35vb-akRl(!CRH9 z^5w1P%RQwplzU1~Df5)}DE^eTEBurm`!$0e^FD*F^)iE=lb%6ex|u^>OZB|+dQQ&HhoIR zSUsiN)Ot$0ReDNu^>MGNtN-X&zsCN{ujMoQ*SvMI620&yeFLuT0d;=??;QUf_*u0N zzzxQl!1oXOr8)4AHAR7+y}1edr`_}c7JI9z%3ScW;HT-p&m+xY45_$LP2gIGssi7C zTp74XtTpicath$=u5Ey2%_{(x@X`DnSZdaky7KK|2ImGAerhvyz zN`&{b^p6JqUeOnLScE|WH zmXy?eJnO8Wjy%_j+cYPTZ^inZH!i$S}f-4CQe^i;bww({po zyLJbVlDccxUr>i`+U>qwvv$qfOK3NXRH;_GR6KvoV(pgMX3#EZH-R*Wo@)0lNl&|W z%Wvn;tnS*S$(~#tx@mX&9?jYfwUy9r9H~;Rc9Tg^tlf({4B7?ldhO&JM2mK3Qx(|7 z5#`wf=@r;@*DA9&uUfE)-D|OBiq~g9%B|Q+jxE@pr|enZ`5oB-7G2qWU0m3KIZo`a zcm=zoXe%~-Kod51VQqGD-RkU9MP;_t0dv;jDpM+ZTAkqZz;%(Nlpv&76SyOn(9Oi}PLJVgvWut6fNDcEACve1KO^Rss)q9}IkKe<5IT{!1o%!tp-(do8fnW^BL9yKoH=;rp#4XI}ru zy51ye_SPJ!-^@}8ytvhRYh@A?duyY;{7#0kE;812hBSy4Z>?m!g>JHBGd+EH9DTi5 zEd4oYEq!5bG+o?l1^s1O1idmjj6QB3O4l#EoNj5gj6QLHDLrBIQhMK{5c=q*C3ND> zCG;@6rSt})FnV>_D0=pZ)pVf~>*>yEvGktgP4tv;akOi69DUR`j+WbPri&+Srnx$Y z?c>jve$CNxO60T3-#pi0O*(;Z**7c-*R`tiXy92bl)$IugMp8{tO(qs<^y>D_;L8W zzJ=2_L43ur8Njwbive#OoCI^Ex>`1YxZn9+z(U{QwuonEVT^xaZcXsLfE|l~Z+oH- z*BtE!@rNUN12?W)0l4?}H8AIF>GO*)Pgb0tM+&al`Mqt5#`2HJnbtZ->;HO=t8gA| z-g&M`nmshMqeTC-;{gc|9YTU)51nw(;GxhzEpdo%5G@{B_|6D+-R=?WB;&E{n)N>H z=G6^y@Pr3lfMeI&0ngdg6xev26Y#0+!+7b_Iw^o_Jop61KdyFJ_#6?wU;8Bf%LB8@HOmN@%x{M89B2 z3g7B#wd+HIV(t2;8ng@At*gqPc18<+W=7gj%mN##uAdDx zz~6?73$~%^hS^ZcXd5bFgAKLzunpBG+lDf(B%_pVWYqWGGRkq3jB*<%qq=*_sAnEB z>cdzWHEy(wG8rYK4)&2zsjX#{Nln@B`b;azqDXoJ^ZY)$+;6X@D3|~6@3V6lzCqfn z9gpH_<2KuW?tzKswNkzh_6R>Osg_m=z`d-I+hk&S@%vr%mI?P)?k{Z%+;|A`v6;Zs zMt5Lke@kHMO*FiJp89?IVSe3fWBz@dk#Bs*@`B?T&GIeFoy$BPAv~SxzNeUI`HdcT zp^Nt`{QGbO+wPN^y~b7{;WcMS>T10vodm^R^X{0zYrtzlkLSy426a3~7sTr;Nv~%f zui-v9xvk@W$ZJ}h_*6f^0B1lxO0@pLxiWPs2V@u+EblR{No$K z@ryj(aqf&}?=ZKK@DAfs{K;199Tp@g_73aQ2JZmxxIh|2%lHN5dfb{)a<9YIlxvJN zrC4lDS&p)%(tBA`Oh0SNa=10+=4DM$^Q+I=UeLpSX@-qfsJ+olqIhCWyLR#&TCFA@}MckWe#c0s!q*Yc%ZQ^(UP z?scc_c~w)t>#E#lk5tNK&s9(VexaIt;E5{D{Hp5c!X(wzdFxemeU+-qPdceu2Gmdu z+E-q6=vz(I4~I6Y>(l$H`X8O7+UOXl+LRTe8s?a)a$@eQUY-A}dhJz|aT{gAnC*G1 zikg1)cU@e4`$&5FHK$_j4ZhLxH>ZNzgnjd|$43r?0&O+`ZQ$;KGrIfe%b;11zq8M2{kn@6M&THd@cJt`KiHeJF74 z7ps7c=HpsuJI19${NloU!0C^0Z7^|u83&VK&cueDcj0)>M6U!E?%(nzf2Iq3PQ^cC z6WqUf#v~Ts)9j%M%_TfEnjD^54^1FJv4^s^3?2#|>UKL{9!gyq!E&#@--ohZ*ZZ)A z?>VyvBNXhch4yT@V0-plrS|L+GY7VjLe2(6DcG1-G`qm53u|$!7rT4&2)5A)Z#KNs zTsEerAKSXmLe~HKLUzsNh3pcah3xA0er)^$>FK>&<`Xi_Rt~^ z3?2#|8b=yL%XcWdFZUVl)o%M^=FPWkCid7@W>Me5?276pZ1JfkY~)H4c3G4OyJC(B zd$6Yod##QMyCtYFJ9+(A=7{no<7ju6F>|=c9Qb*P={ENyQ+DVHCVSa&=3|lL%(DH* zn8S;YF>%JH8Oy3y80F8rQ*B*x7n13n106gi=k~rY*r51oEm70d@ z8M=1s2c9$R?G)e!KKPr44Gy^8;jpN2(C@4NWF6F}NFEEEcmtnJy(|7A!EE(Q0$@3PYfOk9-2iO zM2m+O*!X`2f4;PjL%EQWx{pK664asFIMlu@&Dzb8x_5P-RH;_GA4pKF-6EL=?SgjW zNP}q6ZrdaarXXIep7G~vR-XI1)qeXlMS1;~KmX0M_>5B2&K=>h;kJZ-?sKK?hbVq*oE@22Qb6S2BIUi&m{yT9TmHE1SMFcqMpc8fg$MUb%naZAC%6 zJYVtWOaFeuR#6x9_Xa+ryp9Gh}iAF&<`E*o^Pb3YWtpC z2Hd9Pt`D*a?|)Kp@31fCR|0+Hr3G^3Cdf{$k$vUJ@uGRnZtXGN$`0A3Ir6dk$TKS< zCmA7&eUEyK^QQL(qYt*ff}EL+Jo7Q~?G)tEOORh$APe%zBxj1#OCH}7N`{*g_pkUF zcP~=getA4@_eaeh=iOJL|LBy<3s0@bxsjmQ<0gMFcpP|~`Nw>DTtST!*^%_Lj}!Tj zlDdx*#R}@kb6x!7TWaTtdVbcd-So%X1LcJ%s&{ej8Z@FOdQ9jrZOZh~y*V`gB%xgk z5)^CK`fr1FLAw`7gJ}7DE-3AOBI#+@uI*?3%<8V)p=3|44&Ag{|C?s*#(a>_E<>tR z>$|r}P^{e-Ukus>?FN438$?gFyN{%&UAx(&r0&|S@{Ml--L>mS75m-U;2xY*igVTx zJ|2@M{rpkQmu9)Nl>ia&EE~$1?_hHkuUAqIQFN9$Oq8F*+KN)m|?WV zfl>5?8ync<7?yoq25+K=zKNp`MsKE9zm217ZjGg<)=^@YV&LfG?aF0(`vH1Yqu*2)~>4 zNSg=zA`|(@n&}V^GxY?XQFa*cf!aNQ2Zgr-9#OF#aMRw!fnPqq2gmO@0H04T{I0`o zoi}8|J@z5FD`3vTiJNbLXa2x-b;?kcVVxNIO$p!&*^goWzLx@kh51aQiv9j-r2p&2 zJS?KwTWt?Zco=0d8@p^^k1lA0)pe2or@!w2F?8#`2#Pe(v^{n zUEx1E#<@?zfz$uXc}|+%yG0Q`v;28$gOVvQUumd~4S2`kB5tX#I1 zjWX3&Zw)om#amC^Ed<^m^PC7A{dfy->Go;B8Hu^T_ri*T7etDlRsGk?iV)8}jO$-3 zlPW{J#D%iJ4<_KV!H3Sn^{$8CdI$NG--y4NvYwm@@&0c&08g1V2Y5nc6=0#4aogRE zi@CWu`d2clX=FMgdh3Z#{K`( z@jUktK9$t$t=@Yiyfu^@qFQf_Cqc2d9w}k)R`AvVCHV%?;;jWW7VAgS(>|V+OiJoL zp7ladN1kg%@;<`*vYNG3+m4#XO7cQ9&ZxLi2GdqcRs7N%^k?|x!t|8X73AS zCA`n6oP_tek)YW7CYLvOA9$a6g?xEmow$mMf_QBw>FM8Ceq1HK;qo`$MD6Q@UXhrH z9P|TuT@9R{*~bo8*~%69%W&jJp1@RqH?Y!M#52cXyg#lXOP$2}C{ITyPu-Fs$5usN zQwaIYMLgc}vylbf^?NJy2)%7j2zVnkI31XADYjR5FGE?XG_WGw7?>(?1NK*xRRRn1 zp)2!eUjN6NwpZ8et>#G*-Wo>^QEk66nFPh&da;VZTftkss^-gEson2vsPZ3dsK#Gy zs5?e7%Fa|q*_g|yxGFNLYh4*t$W}(h+RLa9&N3>nzl?h6E~AX5$fz^(WXjS0GUdx) z8Fg~GjJg&fqh3bIsMgUk>PeJL=^ZMgE-aK$#m360@J=#nQv(?lQCddX{Ia2TzOyl@ z_D9G1HI`3R=QGQvw~D>O@g?@dnlwOf`PL74jUV#WC}egkurlNzFtzd+u=2!NV5;Rg zVC9liz?2d0PrW(MT`!2`XuUTO5cmji&6Q8SQJ zCjcvay8=_z6@isO+p#`DKI_Pt*MDyvW2xC&U5`q5D^-IRw_0zlOoC!>ZB&!r$#9?a zpXa}k2GP^;ruQU0?c+^Wmi(F3eY|NP*;DuVQ?=`8)^37ILc7VNO10X(PJ&|XX4W!j z7y1Q@YV!@Er`p|3($lWpEK*W;?N+G6H-YZjeOOPkc3l|>?am}ss?}~N35vBFTi2jn z(5|AMUTfErq^DiGaipZ~+PxyEBhOgcKVzS2e=lIyM6-6ycSvZrMSZ^2)oRy;1jX7N z+Q6V)(C&BAAXrk|qcn4hO_?7Ku)+H-|&`Su!pH~l)@=fyR;MzhOw z$mWyun}oykfGOMQp9j{`9nOW)Kl=pIkJc@sqZ;z(OaI2YLL2j$F^82aE*n9_bI9`+fzm>UJ#fgmK$})7I?)ezP(GxY(v0z?R{gfNN*0K`x2U zdHsG7p95QSHO_nO9n~53w=Y*6_`o)t$1D8)!)-NYH-`K1%;y`x8D|>8JXB-K1=#d% zPvF&F_`E~qEu7bSZxzlL5awgu7ycN84fHmJBTD&!2#0;j}teMOp`5eYQa6Ust`Y~NT`!i=B1~D&dE@O6X3}+Vf zSjk)}xt1AzG=?ePXfqQ(WE(TN|1O64p1{PmPh_@~Jj6U4bcBhiaFj8#wVBW5t~NqYL{t=TeNymk7Iu`qA--id3# zs@U={cW81|JK(V6gMe)|`vCWty%6};*&yJbotFZC?TK7&RUpJ&r!D}_oj48n)G>G9 zrC+)O=X`Am+-gD<;QbHZ!SO$D8v)F1!utR#8x)4mCX1-ez_l_9gI6ycSqpeYL;Q`! zFvu(G539|iP@z(b(HG8Y;P6=<#CWoljTaBCY$1nEQ3eEVx8^*fG zSXUxx5G~&7<9AARy3uLX+M8!oV`iRL4KTW_8t#5g6~E@T%6-8@RqU^)sue$9sU8l? zRjtVWsv6qFh-q`lm&TKweigB4!h8dqyj`5#ffnjYcGWRA|U{2mG!?0;) zO#5R-4D&Web#-vM>TQW@s_|{lsa*U{sk%4+qhtNLkKojj&n$oa*2PDbz?!AITN#0u z{4i<@Tz%^V;9X{+z&-bG0gkzM1URGbIpCF%w}8LDdj$O4KOOkeU-yBVZ^r$NOfEyb z^&|$kuj4M@I>lB1k9|B5xSMG?V4;_B+wyXLutw?v@0#F+?`H+&jk7vaS>d5mQPjWo#eR~P*Zj{ijaa#%PT9BYvyViCF?SghM zkOtAB-N4KyDFyKw*^WP7`t_^{m-c*C|Jw6?WzihiW}-Q-qVHE!rRsQZf6*!A zdNpt^z$hAdFg`n+>2C*d$_Uq5rHuCD`wQ~PBxm}+woZC}=FaAw|Jp&bhuWT&@K7fQ z2@iE6L9vHUmK!`2Jk(slH;5Jwy)^Z*ydYlNNqYJ>ZWZUqH(dU{TTu^Jp|7}?!1~N)R(hR=_ZQ|vci_*w z{(rX$chc;wIeR6%HI5vj+V57$Bq;XQiyaN#3f}6~DPP`71twZkBa^JDb7!rot52+{ z`h{(%VpVOZv{p7$m4PTrOXeU#ir)A1B9c9#hT1Ne7CZk?dlu_APHq@}KHVo}{@6SFtvCku+kFO;Z|0t1aYBnahqbgKlB%s(=5T~6tg{n zl~sI!?+D#)Rb=U3>K^=KK zUUF>pl&gexlO?q4)}3#4wc4FYf@19k^)P4`wA;{CueIBYq^DiGA*7`4+C3tuLpSZ# z?x$J1<|ibyYtd6eyDdmitldt%4B7?lJ|zvJ#do*QoK1Um@TJd=Rnjim3+d#LK>9$v zW%Rl=k+jL4HMC8eP4xXTJLr^h`{_l-N9nn?GOr zH>NeSFP~Zd#1ZIn$2VP)x4>p?Z;bg_n{0r1wb;eL4ZimQ?)2UWSoqzC+pHUng?X)G zO5pmdrl;It9_yW!!NBKhEdws@;s>1iu{-d3`@f++VLlc5{n2C|uj8zf+w@|d>%765 zz18)kgtyKlhp4t+5K4k#Z;kD5@K*3v#Q?rRw0P^Vt~sj1b8}TASASEn=Eh8TmlDhb zn~KbyWwn^CxzWi3R{eqaFA4{1JR5;`A zw1RO?UCA6f8O^*uw34Z{G@KdzDS+`!n8NIT*^{ZpG-dp~Dlpfo8!<(@=BVzH^z_eL zuMg72TkR9J!Ca%M7plU%&x1_{0tY+{03Nhr18~zW_&nu~162_JtJxXgLs=JqJBJ`| zaXAU`fR#zWLuTOms%91AApWX;B=CiwI8Qe6B+k>#kXb?b5+kob`*53Zp6ip1b}(1U zxqmkBrV{PJn{Nb+1NQQt3M{*WztLFc)(YZXqj7C+VLp=w|F3xKT{q3%njp1a#&vRt zYP~g^1jXL^V~D|9!CTi3&6l@YPXFpK;NB;PZmVBA%=!G#p-$cN4!b(;bLccI(&1-M zcZb&1Dm$1o32slz*CaQ+^dRNF(mC~!Us&plB`K-Px;;;IxnrVIWmZzvYgAt~x^z?3 z>YXiBcDc5y#*S50y&Bz5J^Z3)#Qf2 z?uT&g>7(~Cp5R*_$~)c0_Z#M15#mqZVm|k8zJz=SA5I3oy?-3A(95{3!}^Ob?=(9XOKT$#5Tm+(-CK8bnLKwV>`J)E>p3FYV)5Lr6*8$FqV2b>#VuCpi|| zYm8>?Cd5i;H=9(cR=dXT{4tBQTVb?8yU;I4Bn_fPyOS%oh%boOLz13$?N%PcpIP0t z+llPS)uEeqOL=J4uJ>jM?Z%TT)oPa^L9uqPj5TN%wCg>NZxAioy}K`4UJ$R1sQzx* ziTwG}u3Z;WQg`jn64arab{!{6Xm_`S@7^a>s@3iX5)^B1o&QXHrsk z?bh@CbA9Nh-8b_zYu7tQLc4*aO10XJAwjWr_s%tF7qsg-FQ3{~$_rwwVKzxmyLJ;v zN!_*kSWt&<+U@11S-YW6CA8adKHutUwL63a#oC>qG-wyJTVg@Jw7a>{2vtG6dXe<3 z^E~&^lyqV&^YPrn@8n&UQWRz0ZS*YK$7f2%5k4b2drcbQGlqKyZc~zfxlK5aj@tQo zH*g^uf6rN8^!v`O6ER+X2(rQ!Sx{dmKmK%Z$D8Lm5*~5|iD&c`797a$ZFhj?Ys~zC z#5ERA(ouVjF(fFy#;zHFoALKs6Mjqb``8~3-l&Jicx=>!Z#R8Z*QwCUB#Tc0C zh56@MKcuy29VnCbaJ<|GzScG#eQ9hT_+7hlSUfOO|01yR<8@$a{|R7a>2=8C?16>( z#F8_w|8v^5hiLZJw3iazY8=RmTdlWRkf7LGt%LZT40GDZoVE+3L9~2tOuS=~S`e>( z!Tk9u_~$m8hwz#Fi_dL7^A*>;vl6YbaoYyH#oQ73Nl)bK!;w3VLmnV{ZgY3hntF}< zV);nXvsJyCVmuAkK%p9b#N!crp{+4`;gC(pBR&HwsZ!`=S4@%regWmFNxPAm&d7p% z){!%(^|{SlzfZW1hw%T})(_DZ=iV#Nx*%hgYxcf`+Y;VKEtT-T$|NZEzDCOo-Ut24 zGo(SZcwa$`IdFBpC+TS)cd%N{pIP0<9R`v;xjOQEUy_{9TRU8{c3m$^Xg8TusrGaG zIthxkn;B}*E@*dA7~ddzs@>frJ?+}fA|-X#ZiR5Z33S))!${5A4Na5K?o3jpTJ46C zpjf-H5eDsob`_C&tzA!&o_6iVk&?P=_llqn-F(+>wPx+Qo|DjSixqsUtJSUx35vBl zG|He|(C&BAAXTP; zagR9q(Cv8Iqv0;PR)@XxwMGZ%1FFOH%#TOuw<)Q#p9xD}NYY|7V0FE_Z0FT^*8;`8WI`vyXM$wg%616Y34Ong88#@?|1 z#8qy`PEc;j{>Sl8p?lCv<+}WWs*U22 zs@c$7RUIc|=2z9y%;k+$7?)>tm=BrOj6;vsOu6TBrpN3q%$JjYF%6gXVnS#2VR9Sy zViGgEFsh<0nAn+BnWHqtG*Dhql@HpXTHiKY^)4hp^`4}sf8LtCUKekD-QNj*n?2P9 zpQ$wbm@)kJ`@wGfEqQ6W2gK*p^#-nU*&n#{qA=jL*{gwn?2G{}))4vRhcyt7{(B{G z#RzA89HLrpHICtrU+k?FV)?%t z#`*tw{vBx$E#B&Wp#;0RPYJeNz2fY+p2b*;*CuRM31jvbOR-5qzcPKUy=S6IzG5b} z&R~KA?=jPzuQMK#FEZzTo?_x_u*{BUN12i14l$W2`D=dKtI1+3XD7+tcp`J*pc+Kk7xOilDdy)#R}@k^Bqs}KEl`S6572dpYrJ3yv+%H6uK{iW=@q=b5M2FG2IQlygVoT5{bX zaV?D_LGiUTYp3B_f@`VrF1|suTuVDWiYp4@wU4Byf8!TB_wWsuzdkk<-vj5StW5z{ zHYft~{FIaG15=wj04qxl2Buuc11kfk15;kUz)E)!%Y7hDbsCH8D5}p*^jx#>HduaW zZRB)QZB zl#HrgL`Ll>E~C=Q$teHoGHPl=88xScjG9TysOmjrRE?oB>Z+%V>M~QN+~+5w9tX;( z;AJu@FhZu-zf#6LTrE?!UMpknu9hj=M#_}!0%TO72{LL;R~ePjL`KQV$*4<(WYnp@ zZA$I`qhtLVzc4+(XO>TI6sg^r|m79+OQ!0Fx z88!4W#FZCCy#GALyW{@Ks`zX*Wz1eEPo3QW%y{CneU**z_>}XDLis%Hbz%~Dt6Sr8 z;C;+%_yFz11~K!dp!b^5RzO zt(GJx_SU9{_?--6!(?nYjWmdserrLEUwkF$X&=96ahN}|x{qIsAbaXQm#pzo&Dyn< zTC?E>sr#L0&te(&9G z;APYn;NcHf1OMz10^H}tbl}b{U4h%zt_$2F_cXMR(95_@QKK2m<@t6l9r)OeX5h`U zEd~KkJu(uw#?_v{Hn$o8pB{4--d~tc*qQ$oZ~b~v!dvf3cZ74vI|s*{VGYIeI(sv>(vtJW_ct135SoXR(N ztSV;HDAfY9A*#-vy;R*&om6A{DOBH1wN+&Ww^Us|-(1!2{2v|b*L?)ni+pDJ>$k3{ zx-dmJk77eoF0j9`EqKfQ8ScPI6+?jQo5lezuX6;rsM!VJ)VKG5Bg;PrF8T5W@c8){ zufF0b#5Yh6fUksJ0*)?x6nI*AEO6)h3xJ)LTLKHcjN2xzTk0Tezr^`g;C&5j766AG z4FxW|A^{`GTChdp%g!#NCXI}sNtq0RId#m>?32$}1#EV<4w~ix0vA52; zZ17g-w^mN$8$^q@7Sw$NN0OfQ@ho3bQupz!ZGt*<8_)8*p;^13=OwgT;);ZJ>yn^Y zyDhI8vegl!AEmy2hWc(Rt=Ua+3qOZGe_}kWzCbwZ-mV=WCx}q;3u+ zS2MS{{WD%GxCi}vGyaC_Kf0HId*qZ|W#ng;$T{_p?HV8#s)HPAf$UNNIlDM=;7`mi z=P|PQc(!%NIRIrhB5yf{{Q4Af*8|AwmLpdd&9M;FKlH{Q9pv#Bp%jcY%o*j*k){`C z5}IP%-}9_rbn32V&$5-8yUmcpQ2Tj%n*_z4_2Q<%v%s?gZ}APH#j~bfFRLhsSMA$; zdipm`WO0|zEPvl+sIFV^`aD(%=U-Oq3#?q=kNj>eFg0-xuyTJgFqL)^Sb6*$aw0Ny z^*F?-up`K8MD;D$gz-X=$VL2+vj!n6t&pEw!S)gO)$eVJ9n4u$cF9JLvxoVkOxv-* z%AS*fnP~VUpx9eG-RE~Q zj1!S@qNk)mw0NuSO%ogCdNUg)sJxAGNnIQ2xt)zNp}&o?^BfyyZ@7)}(smom<0oyh z8fMtU*D{hR?wHGzD=lTzKwB9#SuUgI{3WBx4w6wj-DT7jFBv8GmQl%GGV1zZ88y9~ zOgXZgjPkr=L(N`gqwLt%#`1%OjpZQ|o7oTe^TqwD1;>emzi83culrBO-5>E;T~ymo z^yb}wVz|Bp*@R;p2@gtxk1*%tz?Nes1IO$M1GXKx4Y=U~ocn3g`x?X()1Lr;UHB6C zdhRP=ONVS=#qj6A)cm`^%0r^LsBd>+JURrJT4#+c@=;~&RnTu$o@xU=mv%h>IDH$= z>vx^L2;zYUac=384J9C6-Z=v56Xx@SoM}#fdHSJ33Fc>AOsPJnF0s7*(4vmC&w5hJ!*F`Q zt#R}-FCThfrjk~+3Zw(5Q2M4tG`(y@3_U+0o}TNLK+j7%MBjdzN|*IGNv~3zr(=4h z(K~&w(=}sm(f03d)4|cV=&nVs(53esr?0KrOE2BCjy^LznBE^Wm9BMTFdgpMlm0}~ z)4wsToNT_~@;9bc==KSiTjP>0T7U8du4g&z;Ch&MS+~|v;4{=!;5{p!0GFKq2H0!Q zN8pFKpMbxclM* zV4i2B0@ughSOdCEw*yM!u2SH7MYP;? z^;-GJW-;;=_cqEWmW`9wZM8{0?#Vj2=f^O)eG{cTbZ}q!*rN^Q-{O8b)SGbJ;iyl% zL$91aI>s?A?(?79xJ6?B(_>coc|Vu;d}jIc)+*a`U@pznVdG$~&B9Nyz&5wf0G~H~ z0i4l*0EL)4|T$5BUq#D?1N#zu`Ut7D#tkB!Xt1!(Nc|YebSk; z>p*#7J}=0b*MD#A^;xsGrj?6cq{Z<%YWn>M2olXnAcanXHh?S_N;;O`5lMJOTBlOZ(BJ*zTa)8yznwVx$li2 zd2Vi){N$z8@?uru2|k_QhwDBnFuC9nATw0zgw%kmN?x8$-9_vN;;9?MN+8S;yV z)8#k!-jokBIUz6f_fEO#ktq3Qn?>@}TVC>ZMTW@Rj_51jP14i9erx>Sx_E2DjEUeK zgJ+|cd@Y9aB)uPv2Jg9<5(b>=mH=$N>jJRZmuJ8o)}VLRsb~t``hGHc?}ZGEkKBsh zU9p}q?Efn1Gt@Wr%46U)9gYK6QLP2;kZA`j^fGR{)%PfPYX`gj;C*X-*8&%MvJH6X z+i2iJj<~jR%dWVV^3%_Ipgv(foj&ttUjMzd)HluEnjke68&3{Vt+z5HDE8JXUku&~ z-s=4|U*1|!_Yqc;^t6v>T_+`VAI~!S#y5fP<5}l^Xx6T6S&4puJE>Bwc6~`utlg#G z4cZ0mTK&kEb{)QW#TUe@A4yNUc0)-?-L;z{s6)50*u|9D??o=Tn`5Q8Uh4=Sk4Y1M zcU@i5q_k`KlW%pk+HFIEV(mKrGH4gHn?)K#OP@9@x2mEbUS%n>-_rxMYuAO8)Lpx? z1a;`9UB|+jwHsPO!gueJD%EQD0||3hUlI*E_pW$Z_3GEh@&~7xTQmu9qNKmX@*4Ut3@Ljhee1mAwZb9{TgGqYY zwR?h;)Lpyp1a;`+wd?v_;vPdE6Ta2eYS)Vd#oC=))Sz9^u7#;yYqv8=PrG)N zq@?cJ-6g0)H|3fe zknG9Tp__J(Rnx59&_WX0O(s>U_1)_vDAsOfC4+WByNfFG4WdQ6^CBJOVCEBbKs>e)qrU>9o~PT z)d*nWd=YMIGIC`bVg0MVlxQpDdA~XVJ8$y={=O&}_|>;C;DKL4f&Er42426*9r*jy z3c%ug?^8qJcpc9aO%mo?re7oAneTo=dGY)GtosscDWOS|~(LGm@IVx8XH!@d2 zjmT9L8J??19g?eX9F(hw>7T23-X~X4r&q4Rvq!Gtrc173RM%WZS*KjZhfcW)^NzWS ziH^C7%5<)xk|I~JO`fYLugFz2am-cB=$xw<<&vu?+&fn>cVMo*9_p`O}l`dJnsNcU-S#O?$uJs!uKmOxe9QDBbLBVx77un zABw!QY)yz4Ppb&LE(`06txyEw+t%hlev#v@0dH!w5BT_`5a4=8n*a;FjN9G?tY{}Z z-d`K!_Ch|;eHHNMrpdrdlqY~Mx*r5Kwh9Nnu}%go%%@DPKbp+bkL0?g+{XQUL6`Lm z{u5>MtcftYzGiQAHJ9*KA99Fly)}dc#ooHEw!vGW-)dinZxAisx_FdX>K1pi)YW6n zQfGOYrB0Y?mb%l|EOl|9S?Z%Gv(%ki%~G!=nWb8$nWa8{W|qqQFiSmNzIf{WCdE^m zI~Gqh?_WIiv`6vOkXgl3H~SY)?H61;_2p!8^YuQ^k7AQw0-qSv6#88b)KuVe?bibj@I3*1H~Iyz z=M59^Dzp8Sfc=`)13pj{y=_}*D~SJ{g&Z`dF~qA-wSn7smIp4{#|U`lw=~Fi&ABdtA3Aw!0Qt;YMcISX+W#0gvz3m9FS?v(utgM#6PgWj;`h@vRsQt*shq z_SVoc65g6d4pFVQW|5%STfa0gcq@2obi;gkYe9@1iL&`c6vfKAzR65#I#5 zk7vDaBB9+}iTem4q)N5gjUz#^b`LZ*Xcx5Gr-@!`cOFSkyLJzglDca*Q&2~qKD6Xo zNxN+{Yd7tSgm#^*_*Pe|T{jXGYj?7>LA#(`a~r+Zt{q8FyLNp@N!_&@E2u*^?V7dF ztlb=``HIFe3GG^tpjf-swg&Bjb}x_y(ei!lM8qh%_7-<~->|WCm85`)iL7V6UUAEHaVz<*bf_Bk;v-i+d z5AUTf%-lz}-M^PMd%KH%=)8sQ_jnCmbWA8cz{Q`Q;4*{W741QviWo(YY0953{rf)V z)|}7mf!eh`xuFhjOC!GhefcQ(o$IZqmx0r)%ffmqJ(aD2Ge-;nj=w$yIOCfi@Wd-Y zz`mJFf!hZx15WIZ>%q*8TL|$X%Vq;F@bCmKb*B&T9#uPFMRE<`KDWQZ@xOi*4a{xA z?_VeCn!@@o!>x7zpB+;a){i-DRTp^T&_=-P*H;6sr2HG+?^#v^urQw= zHG6AlMTzfYZY?CdbtValy)~$%!CS#w8@A#bM2oljg%wuJcP*??ZY-o|?rWsTTJcLh z{@qvk>`Ncy^KD(f0MaH-gLlx`O97& z@^^>($vaMRl2czD<%JTv%7bh?A6$s2TjC07mkCU01@kRm#)u;Lg= zPyf6%xs5K~I;N}}JWJ}~LVWhskwuN+H~6ksyn$!!i3Ps**CpWPZ@vN#*j5hK0I+(| z5O~rQJKzJa9f4tq8g>suLk*p5$-Z`sO`z(OzMHsd1Y zz%X@ibI|Oq3GXDn zb0w2QRQsLlIthxsHPg=Et>CST+U3hzEn)}Dod=GSSNdy_d`8Q4@_v~q@`t@L<>h)8 zQ@k^+t+?67UXePmze0XziX!aGVuiz%2t_g#qj(#%Lt#_ppkmx2mE!f*(+caJmlS1t zUsH7PxuGy0bxpD5^BINN^8JdArK1!#tvnS`2O23Xdp?oRo)sqV8ar5C!~Tzs^=mD! z$_{*H`Rlh9-qH}R-HMM_0cU@`1zf9jQRwF_eu4eI23wj!eC-1V;6iV^00-T10dA{8 z-uk{1#8VDnzq82;tZ(R{dQg7Z%?iLPcjNQLm;HJG$Je;%9^h{l{eXpD#%)zfCV@BG z9-IjMN}E@yzAYu%zyc3{tIakE&bMlx{qK+^XE(ZcveSJQupz!$$~m`8_%-qs9C$- z#U#FST_;tl)owNkinaU0(V$)E7p(2TH;5MPPMBY&eL=iVk@U1{m+HtLi0<08CVO&q z=%(E$XU*C*|0LnNp`=Q++Knecv38GiGH4gHJD_vEwEMlSm7*YC?@4<4H(rqK#5Y|2 z`m|JFPkheM5`0b)Wn_ZScYD(SSUI;7Fm+@Ivh4)qoil-z$@74zKoPf^4soTG2QXzk z6#3&{$gS*`Xc|GS}2OZv2l zq(QXw3n+O}nR2eFj7lmlQ(iHbDc4n!DT`amlocDxD7Tg}>LM+p>h+LOEr-ge(D5>A z(=3_t$U+(A9V}BE50xpFM#-4%Yh={x4Km7llS~;BCu3@Fk}2HQ%9Q1o%al*%$dq9N zWXe}t}9qZS4fm3%rvwV81*eh;-u@T9Bq;XQ$*u-(g?_7fPrgC4d20dvj@FK(r~NyZ4=Jhpcdl4L z9lCwz^6aBoyRK5d0XOa?pSIw?Vt0-3z2a^i;c_NP60}YukrEv$|_{DA`l@ z@q+sOHETD4lIYViq)N5Edz%Es+I`X2pk2^zU_ZV=^i;e1NP60}n@vjUuH7pA`6kd^ zyM9A7Yu8*#yS}7Kwc3p&L9uo>4=`vKwA*oDzO-9p&*=Zh-g!Vpt+j1CAoi}{jG=N#U zFo+4LyOIh2u$FoHG?ZDB8pZ@pj9`M#L@}GP;+WULhnQT&G3NfbMCR#O1@nH-DQ0-+ zX{O@NQ_TJ+iHvRE1V++x5A){JM#j9sGNzfsJf@Vj7gKWoSmqu{PyfccZVuxru5kBb z3l1-b=aV+mjo^8wwNZQES5w9Sn?)@KURZAfa9TzDUAehoQ4l|MDGs>!;RC=vd!m82 z&kP6t7P|#FCUG^enfoH(-b*I|zZ;0ple>nQLwsLP1=J7!{ztWVR%ijwQ)^wy1iri+ z=M_#c?*;P;XSN*xyepFd?pU=paIxk`;rRS~X1H=KumAUB_uMsmYiCR;q(Zdx3vSkbC^=L4ktAy3V@Zwj&m}|BUQ2c@&y%<``6kJTrKElQ zO{62{l#*uomy-6+C@Y_s($Ibz^58Mj;z3DMvJKM{^jY`}HcKY%h*sBu$&R(q=$aQ}_h3&iM z-T|(joDQ6^_Z0AcX&mr`s+)lyZ}taf?0W;(Dfu1hhwo*orS+7NFmLmpQsrTu;+wf{ zz?WJF0S`!D0ettb0N`!s1^{1JmJj9e^SMG=UjMz-ZoFo1_5LL?*41_tCvLUg>P&({ zZyi3`;H}`TKS+gW@zy(Lw6wiFEoFjeX%!Pj`XZ8%PWZ=B+F-IwdU}zQbjyh@(oSW% zNe6g!m-^lQOM02 zSF7DIBq-GGj7bLVf_6EC!({=MDD>7V-Ue?4Z}py9C~uuI(~K^Pwam0XI@Yi8EE69tvqF076r5{C zO|A^ruH4QUn7TS2nC`Y7Sn+TVFx4{wSh4>ku)L`fn95NAE1Dk%rW(W{herU*D{n^5 zTLw&xnSmVI8#$)|a{5{DPQI7@UXpEKZWU#GA9;3boaefB7_cIHEU-Lt5b~iGz*J}& z9-rs+J4nmxzqgi|t=U`C%|yJ_WCka0wcct*fugQE^R%XVEw!dr?y#mzPg={vZdp@DzFJet@;21Tx;FAtHa7Bu zv<>yNuMPEeqzyI6%Z5_Sw4vhVHu6>eHdLJ4hH{x=L+y69p@Qn$P<7r~Q|0$sQ^O}( zQ;(WkQ&%cmkNZboz13}&PTtD9Hh(X3vtVAVqC^Am7W&y>;Os|>f!)^b0H*gH2M%Md z0@Dqj0*96V46LY{4@{T+1*|xVaYe`%jIVkDOx+XAv&}dLary0az|{Uu$b$NkkKP6S zS~{@{c%Ma12yms~?Z9zkRsnl&#(A`>PMbkoULpd@p4Ho-Wpd+#9Q5F zi+Jly5)^uC&>VxeLci70kE;-E-daTSV*8Wyw2x;6lPz^0&pO5{L$~oP|M{A=n_F8% zyJmAmwA+>hh1%^h&!AnI?MnPLYqwII$a937 zq)4@W+FTM8YS(CiLA#*cFj66Us@)Wlo_6h;_;W3*yLMZVJym7srrppbnzh?^c1)nu zn4$)hRrQCAn8_2oWHYAujvb)FwWLV3+Knbbp>`7&8ng@Abq(MuM2mKhPFlolAH0}3 zwl9!r(Y!7FS4UJ};CnPXVJ5Mr-lrzk^RhJmsAJ-V;3U`=o zArF}M6P_~1=DuRS?9FBTFXu69>wjc+pU-2gZC^95Z{26cB&RY1^NumjcOsbaz1K6_ zRxf2@CoN(=k@WQMIYRDYuHp(e)@6I<6wLc{{)pcR>eds#ce$v+R+u+>Z^SX+J(2T5l~C$eq8?TWbYz|85xTB4b@gNrhJ6Q1BV()K&z_aVQwJON(ZddY3zCVk%n zhrOe~o8Ip%4t&1{euHkM9ODbAUvRtwxo?2Y*4zg^H9Hk}=b$6NzihVyPe=^_&Wz{- zJZeKe)Q`|x=LI>#H{(**Rsip7(`FKIjrQw+*BuH2uJdyvuvN+|;Irv9fcg16CoQl4 z-r9e)W^a{$->13X>b#s2w_0xt!+A1x|Rx(22I~4 zP3?A2TIc0yX{-HLr5irpm5v|(P+I*^mh_nPjC6nH_0o6UI!RZqT`iH*k%=$PA4!^g ztt2~hR4q1^q^E!V*2oZDy!DDpL-3AE8#e*h+wuUo@w95-J@>-wftOP5z}?m_0QMdn z0$i;(dR@Jcy%2A;FdBH~vwgq|`r-B=QQ;7;elZkyj64{4V#(>iyL!ujTV8w#=g;>t z)v~_XDDYOdX(r%(rJWps7e@^QHk!l$54lqtxUa(vIR2#2alrh1x~%3}UjMzd!aB{~ zO2sHNdut>)MYZ0lAVHzGURh)CR`6EuwT1H5qI!-HO48Flo|Qqi)O|e5XdPDtx{qh2 zY|yOTuw5eB9Ycy#t6e`56l!<*dV_XByDc{qO1nR{^|UOCbudX!yLMNREp^v!BCibH z#$p$TYSwOcqKI}aHgdJDR=XWZP^jI%HW{=F+I>bUL`$Fc-cn1tDAp>WTzhHPt~1$E zckRyNm7$w<9k*)MuA4$cyIG`2wc7nafMDAqKRo_6h) z+RC-8?%Hif_SC)4kiT8CcIl%c+TBQsRIA-M5)^7zxy_(m(5~Bdu0phEx2XENOG$d# zwR?task?UH@ygK6caQJXtX&IMM7smSxLQ}MT~87eYIp7qgLXl?W;^v-yIo0o+O;bu zTk5Xe7+x8=Y1enRX6@3aM6_FJmxy*PNl>WWPT>aaf_86`3ei*FHQvp&mv-%TCR^&R z-3h!hbklC@NX^={*de0bOQcA(zMDgWLhXKxFlZOFyLJy(AzHOtG)odmPrG)%kS%rB zZsW*5*N1M}eX~!qb`?<~+6^Q{s?}~72@17)V6Q>DpxwUv^jf>KNqX9~n?SbIUAqr> zW$32eeKDG~D?crwU8g9n*41j)l>~*_^@=uV7qnY0Mz6Koo}{N;yWV6=-L<=wSB7rd z9T%rry9%*;H7Zs_yERErsNH7!4cZ0mCX))$+GmhUi(;(dJxNcyc3Z}AEvvhBhmbv0 zW$32e*@rZ1*X@Le@17(@s`cFr5)^9p@d1N&LAwD5xeC#uU3Nrcx+vBv@mzW{C`vGw zu{P;|dr%Zr%KiUl%}U_1i7}$6N2UFp7`}JR~Lr)-DH0E#v@#XXz|275!rN6 ztgVl7>FM7b#Fodo%nCQZo2pLX^(ps2K8(MKMJ>nQ)S@c9gYD&QOQIhLzB@y?2>c?^ z47VR;4lIwVfoxU@xnXHwY65=ifJ%A-`B5t_B2SG*Ua|yvV?$(~fBjzStwX;ZXoue( z7_$bLniY>c@HnzlH1gUYpua&|3$c zM}O0q<+Aw?`

    pnrtcM@|xaE2VWWj5ipL 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%0DbCwG{CZdZ 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 diff --git a/interface/resources/avatar/animations/side_strafe_left.fbx b/interface/resources/avatar/animations/side_strafe_left.fbx new file mode 100644 index 0000000000000000000000000000000000000000..61c3ba7b326f26d18fee3033cfd1a060402a7f1a GIT binary patch literal 908176 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

    q`8&D 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 z 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®nSV8Bnle|tq_SDH6AzSF59I*_F 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ⅅ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 literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/talk.fbx b/interface/resources/avatar/animations/talk.fbx index 3fd470befd35348ad0e124c019fc0f67e02f14ce..ba8f88589efa8e72e0f015de6bd1ab8f8605f9fa 100644 GIT binary patch literal 5211632 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 z

    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 }XVuDj5ODeR- znfq(knnax}=!E$FPpmkv5|my0#I-mxhx=;o$l;i^D_qH`@ku>&zBy=x)j=bo)%u^Q zMYm>c9X(5CipO{w6hk|X<@e&7SaG@kmlCmdZAIeqi>XUv12(REC$ioZG7iZP_Sm?} zcOP4lzj&EVb1YlG5HF=krDt(}_49XyA8(W`T;z4{UfkcHb@6i0iuTmNyclL?)qKJk zl@dKKhU%HP>`WRnm$T;NTAo=t!!#^w>;7O!(Z==OlvK4{PISfco8gG$BF1*P65Ubx z^eir`U>C_z=RUXQ?3Lc--R{+)i<0N*{D#qPYln)~KDzu^SpTwkzr%gCWDK26)9I!u zBuBEROlHA#)C9+Nj=G~~Xi4*M*A0!)l=K3_c5m0pBMi}WjA2XVsnbE~V!ffF=R1;g z)Y`)|UpJs}P`M|pcJplfF?9s(L2dnwHrsf4X0QYaivGWnnl*Iuyk|Wo_@ifb?t3Ge zeLU3Btj5`*UlSC<7Tq5f^?XS=nW;NgGiv6P>mI^6Ggh|pWq!>%spHGTmy~^$hLSEL zB%#c_=IcN1*qdu?G>|PiGA-TE-n6`nEb@QtSGg*~_p7Y$AnaEeZ=M)%zsh~{oBw;i zsz+jj#=rflfBRMc_N)HwSN+?s`nO;8Z@=o_e$~JIs(<@c|Msi??N|NVull!N^>4rG z-+tBq%YGGs?8X`cF&=ckYJFYe2F^(6k`{>r%BMVu#=F(K=iI&Xkzq0iMq z(U+qKMBV77PvxIKD4#%*I{T~BM%HJ=KKH3es(*K*22J}DRr)6~k2T1aZ;F#1^jeEi($qF%22_R_K`nTpPW zuGy*_gR424+8AGQu7BV~hoGQ&^M^%Zie+(ACc>AxFAi#&O%i;wEmUqVyz;H!RFN^mUm?z@?DCmyKz zC4V64a(N@QJa5BH@k+Y=YKS$Vrl0B6JZZ`I&Ne>{xW2gX{}jV~2&{CS;B2_!VBr1* z7yrXe3pO2ZeG4>!jSBKr@Ep7=S` zgP!wUWY_<@_mXvf08DxXxO`;?{n8a%!JtqzQ-{xD2+32>3U@$Rct_Yz3ypH+>@Uj z0(}^|0}S@WO?>sJBHC4P*40S?mtNO#;^D6Z)`__vBUcCJKd>C`c}Em}oW^K5lYDTF zIjBMKA=MGylLO&*E7jYvy^@T-Unq-%`=oyvODI&ssV!Yt&NZNOg`EZ@X$zz{kJ)GN$g_ zG}KDdy;R+K=aERv_Xxi4!af(@`W&4tx77Yv$1fGmFOIQoGfm-~WK+&i{6Tp#vvrSc zI#jYF25u1g*58rQ^i8Bj_vz1Y*1P4zYqw+cjVL27ImR~^oF=FWah8eze`7o-}U^j|!4UM#CW zrrJ&38}e$4LB*e;b56lUzK9bdSq{I()fQeJ@Wv{kH{?bb5QoH?f-6)@T@K(%9t0Ks zr20Ci>wuPWYW(@{p4ZXmEwrp(KU9qCSMRqBn0$M4!iGzGYH%_<)DV8$8!2|ir};pK zk?aTb<&!B|`O)t8GWoyFA^*Q^4ikqdC=$K3yI2flX7jOJ_u~DuVf}d}`Icmg zfl2J1tl&pYyrA{yVltf*=20p<2NOQ9x1Z%lS{}yK?W^wB!HLtT<5`h+-H&3h40M5v zPZ&=K7_}3vv5}?tVV1URr_xX(B_(={kuq#>B zPLgxy&=Naepc~~2abWQ^alarcjgO=63TfjHt^n-=QI{fX+C;|U}X4nV#*Unfo zeT|D_=BD5@Pk0Kl-DHA)wWZp>*nFI%pm=^~?}B>m&lAP6u>(6LhY9>h(gJRHAg)v2 zl-hB6E)tNqx=~DTkD7V2UHJY&?LhL*YECZ;Sa2HkTIg&;3;F5y^hAicJ0nA@MWS$~C8QyjiHV ziJh&|(bcUTwsI}y5+lAjNJaTu30+F(8#(;mEvq%trEv4?wqD#??;$SgY&y1=2Hlvy z41c~Ijpc!g<47##UGH0R1R%aDZ#&c4uIW!~C&#w=`nfP*!=hO77Ifwlx_0b|Z=K3?mEpxn4}K6}BFbn1 z?6jQ!ck!Pcf^qcXr zKYTn;6K_nsyp_v$CRkB44qPZQw;NG0?^@{6x`XpXiak+Wz_Uxwd0Q8>f>pt>P-j1t zWcd`d$&;)bleC{_9e`3u-=pMwA`2+!(dCkC2~3wTUHeXHQg5v8R6ry$J1af}t~C%` z5a4q~wXK|iX?KdU&_eGix|+L<8>jOI^L%|%Y}T;H*~3@OvJ~+&yBOR&xhN1n4K(Hf zUo{^PQc#>-g;>wnjbFP-86>7k6HHH{J{DiR%oAy?eTDA?9L5%sStZU>X#Q+7bBPC# z*)H0iC<GhY@`Tm1~<^6^$wZVChj58%p~+`J`HsX z=7a&t-&Ui?=hX2xWfaA7Zf(a>0&V7FoJ*M5i8Xhp%`mre3UNq{7CA&_+ax->lP0(% zj&903E<2!Mjs2Z{JyP9%!i;@7efE@rPE+&#J6Y_xV0j2*F~BRTis`;Q@@dFhQ=&u4hkO|iK`&bpi}LDWv?T6%8d#E%x= z2vM{-zIWwv6Jmg#>D~f~v?9GI1cxNzhg)anxpOP#Yypz9q!-c)yhmZJf?(V{H}m_O zcDk{?DiR}5o2+(V%DTBRNvDtYOQhfkv>o_*-5d}^(g}|c8i9Tyq{yq?!-;%}6kLgU z2!Fe7?x_0zUlKrLPzFk&k9_ZTuG4G*s?N$vIX8xs)5GO9%12IZvh^GiVd$!mpW&5b z#k*_p+#FPTBrOj7yan0Qam4T)AETs*d5*H3q1Hv#?-H5T!p)C!1R^j+outbV7y^CeWOM8j2GG~n^Bmn(5U`s?dB#!yJIvKWtanEJmvd)%ToU{ zKl`tpQ1+Lf9nJkm`&>#`%ZWA{)9pDCm)E-LX7_ahn<*$6ZZ=a;#zm=a;bRy(C@A?U ziMllJO8?+mZ`=R1YyA=PH?DQ~_lNvb*NXl<_(#`j2q3#wa`X^6dWal7M2;RJM-P#s zhse=GVidWgpU7vT8! zqlct_|K&f<@$W?sQTqQi!r6}h8-$bk`;>o*aLRrU{t@A@`jHV18R3u-4jJK)5e^yQ zkP!|U;gAsy8R3u-4jJK)5e^yQkP!|U;r!i)+${yl`F zl>65R=Yjv`!a_SsmDK+b5|$TqXLX!6o0 z(p5D<+_Va$9<=EyE`E-3xuGL>%hmJQ2V)ce0|nkKkjs+J3RAIm==;kwcnIsk;A0&*6d6W^liF6WDsbtl(e%NPzZ`6gnuR8t^p ziC^P&d)z2eU3$k2$##BtK!q(qBuzLyJ$SS2d81S>X#yoGrzvKG^2OCyA)6&8< z7c{QZqsQ(4-9Qr@BgpZ5nw!of{-IRi7od!~Kz&aOn~*0D51Tsbs>p~*DML@ZK(Ytw zNI(c_I5_Tuo7?a3lU2*9+86ZAm3x!Ecd8_E3i0w~cLM+W)+K)98~l8iZVDs{@VcF^ z%xBrr<4Vz{R5s_kRIYg2PyMM|;wj@Gs?~wB4;meA>W3Ro@cl$c+|N~&eSR2E^F~%F zV=#mA{&lSMw{b*2omxDU>BAQA^7G^HT9f(w`8;`1c)Rhfk+yLjxhNe@Mmx^b5w69- zAACdUd|xDm^#vDU@1kEa&FaCNjJ=j(OAe<$FHy zz_)(ZvT%@j#`-vN+g^Ek#L$9x^PYE72et3vh{jB4YR>;TDJzK&1wYE&x zZj+%mwZX2=l(nTm$5#7IS(oRfy)RL31qYL%(z|8HsSyzC@f_ZmwNHrwXPJ^*6f9E; zeF@Yl=Obpr`@}iCe2s2>@6R9cjy+oHsZU-+yz4>Netbr|FzwP){S>6=q?eoRMa+ z*%$dQtS9e!%uKJWC3Jd1GgI~X%m&cfO;9yC9YoE-#0?TBqRK)-j+UUgk3zQmeg;u6d~CTwJmS{ks0@?lSfBwz0h< z4iP<|oon^VC4?(#JWf`MX7YlhbOG4%MBN3qQv^0YVYln>GWh};xj!bXgz-#pXl0>~ z$Eh7uoWD{p!l)Scu@(0#R`rqUF1bp0h!CgYd(MK={+MZbz- zbP?rFcg*-0Q}<4Gq4`XDkK)~PsyzfW&_|jywPbU=APo;dDC|!MAR6~;wBKI6Av<_u zya22ZL7g0viZo=W1+MyIsG_Li=?g`+p^BV8L~B; zv%M>*|JkrmEP8p-q3ELH`7R;x+pwX8M zn1V2~cfdF;cr}P&KuosveIImAsvfs(!wCv`(o8WEM zQ6yn(XN)ULxP9lIGK_Cb9lpnSz`v-Z493nZMD3)enS;wUBl;&i<_9|1VcvV8@&fj> zz>harbJT7D+*{q`b;7I zMW&hXE-WNASWy%MUO@%rjYB?h^TOOkxB3ffIlh+9 z*)s8I9TT6ViTCrm05QxcPrMFDO{MLfqMwi*enGIow+Y5^Ht#O7ef?Uis>-AhUe~qX z(xKE3E32bS`j*#v$T%<`268L7vXGh)><9EZJT<;lb#|*nJl2qZWhcsA6DY>9Vx7 z7A=d&h^qb?NkA0~KX=C=tBL8EaJ$dZIC@Z2uvSp3+omn7ZjGzNuQw|He*6#qP|%fk zqckr`BBEtcCe>C>4I`x3wwIQJzRi_aYv=n!Yvl*%gZK_aCh0|ID2aB~)VhY|&65w+ zEFvRI%RLen4&B0MW0_ri8{@fAb~jStH7)#jab9Z9CyY_Oi&w++6($2x8GPTbGi+q| zF`Gf>2t4V1=oy8>YdwVrjj!-(*`J>;_Exuw^%~Fb5n8q_;ojTpop-j=oq;D!kxtYL z;GVB@Z==Pwm(x|Y3F$GgqcCA)K+k?w2udH!Tf9Va?`>yRj$L;J)%5^NF6K7S|# zvP-A6q>jht<-Nj47Ljc+9Q4J?Ql zVga3?(9J;2U*KjFRRfiRWM)s?#X%nDiLP`aQMh{TmR$lXE2y35Lpt{JgcIE@xQk+B zQbT>6ha-LpmDXrAtv=#K?yGL}q5x(LNFm0|Yx7~}zZt}F5~!P5_yglc%FTbkTP>PS zv~rx9Mi$i0bg3n%MlUWex`y?3Ur&MuXy4#*L>$^WTUg&n1%tvVZDzw&c`S0H@}Kk} zEIx)`;d|Q!RM)1%ilo}=4#EjbIk2OnTXsd4%Hb;!h4x5ucZV9=2DQ6Qu)8*sa+z55 znOBDbJ^=XYlf3aJOofg7)#WoKBz;6da}xYdevzlYu5Mc|M({``vOcv3I)VsumA( zmon20&GF3FiL~vwyAx{7B+;JZC~FI~6cXhLltlUKV08UkpRjVQ{w}b8)G6b8*LZ3{ zi%CHfGk4Z(j8B%M@>f6Eg>Q+|YQrQ}5P&bzQM3o+ZGWh~Pjg8e14rv4F8Lj+?%A@6 zT1}`GZSb?BV!nbNPN)eF#GQnltoEvXE^m?G}k{fCeJM^Yflge~Yom-@X6Pc8*p`9X)R_CHe^si~bWsYp^PH(UQ4Zo~VyIL@qi ztmp~vtH&Ou=i{$`e)54mMI-3aYl>4+w?AG;wLg7Y>*s?>wOnWepG3|WA|6E~DMQe0 z+0Vd+Y#wnj4$89}?6jQxWJA*Mhj`irAk6Fjh26fop%g{76zA@bCv?*X5 zlrl=W@0<8uraPmZOD0e;C&t;GFQ=E@cdAUt6Pn{tbXrRbCB1Tw@6K687wFKNrn}mh zN4&HFyWfq^`&Jab8Nujf&Deau4Px_9x>&nla@*Tc)s2O^uk@#hiwsPy_q%xF+5EiM z9|aB5XC@QMHg4Ro*0uO?sE~G7NB-y9MH9+Cy$A~)@dnKC7XffofHOd^NyWQ?vBBhgIy!rns&TXA2&S58l75i zyllSC4iEj_(dWqNSJ-3Px8uvEn^yNKgVLsbB_u=sTf1clG>+A~g3{)Um${>HdZ(Hkv7E^#t8n zJ>q=ySY*e}Oml7}O(VEu-mF#Rtp|F|bnm@G9#@78PK7x_aAES4kfc-j!-OhbO&nst z@lBlGy`#Sk4H2On`wB}XDU`0iJ}8Z{pZkr!ed-ngZha6gZf{gCdR@xcwLj3(`O=`}(u#8j#kOh`h--TOmy zg4ytgtc!*1#rN(IP;^UWbgY~=UXR?kNf4e`DR?xkKz&$qUPJkTe=z9usm!-$Duv#u zD6(T#ve$LjL@U1BFX?l1RuYRxc_<9p=~i2{eY(pSIW*G{O#jn9Mz&g5xxJ3c}pt{t`MKis%E_(8^KEbqnZM`DO=!D z%jpGM$F+nFgzk4FP8kml&tG-vyx)G%&Ge~sc0p>^z{^CXk#lTkB;EWI;pf7jl{QBc4 zJ$HS@24ME1#zXnIm(PEkqie^^FRL~JLWhgs;aylAR!VA^Bk~MS=YfhXhEiug**D9a zW-y|%l#m?sKV?b^jh=)E)oq4~1Jn#NWO??pITcKU&SKV#+Nrv>-3B4)Z!x|jhZ3H# z@^l8uALGDpKc-WOf4b@y;Y!C{`X$S<$nk-?;>9=a)usK8IA5{EvlGwY-MO9G+HjV` zz9&+1E7teiG$aXIg6%%nogp5Y^cBZ(eeUz7^ib9FcADC^PL4hX7Vr$ssa;Cj{0fXM z8w;qKzP)n)ijY%+-mc7$Sl{iV;C{YCr+E0WIf&5*-ORFPk1xCS_S$_7?+Shwj6drR zDgUyD5W94Aw&p~aRQYbSUVBX%{gh(eV`UM}!?a~bq+Oja@G@spKc6Bts$wM)0eFt3%Wed9G;loAxIeR>)d=Ff|MpY6_^__$rq?Etw2uTaXL7W# zkT_b!x!dL@L@4J}lvJO0Os>BoB zh8AxnaVbDXCR|y-VkOVfow&}hOxuf8W3!p`K0SufjE&~a``?7xf?`%$1~_NzO$IFX zv{gYhty>lyhhCc_6&jTt)BI(08%$}(gIr0zrCLp~Vw$kfmQxlo>FBP8`qMk=$I$ua zO{N3oOs_@<9M%pdj=enD+XW@&GA_g)g|#IW)3kZ8X|-wLF36j!oiF1#l#H+nQVSmw z@N3GHg1TwMX-{})23PMzZ~F5%ObJN*n051#R<>uvptOPkm4 z{HUgHj!-h4-Jr=2M?SrtF388?;R+km*moZ89E_L!#+b%p^| zifCuH*|GV&b#%SZG#4K?Nl2gy$ELmv@s{IpER1`bG_kzxjO9D%JJLJYy`hTqR~IZz zKUq6Rc)50A65|#4e0dS;?&a?;))sze;}J1Okw5S^r;BAzun^TZ3XBJ zl*~@#)sx2SD4FGkYh~d5%?7iBJPrgTPd%u0Vya?J-#V?OAWB)H8>FTP5W!#Z+vl_H zIMkD0HM<<9{)~y~%U*1;P(`F`WgQrJu@v7bfS*Pbz&~y#Z4RLbtZz=L4N^n2ktNF^TBwL;wN69V4^YW3w>PnEb4Miuu(B_Fi$}SPV7V|WP4{L9d)GeA+r9`ik1BRVH+aKcUV$UzpZ?A+3AIOXu z4t-Kc2WO1j_npUv988<39E~H+8bA@PC|&M%zBzC9_wNV5v}}-x5f%1uL{8hqvK*@& zLWnv;$*gyD+OlA?N?Kg&PVBsIvn^+cn;ySBJc;N5xyinue<-txX|HsYUoPg6ziC^o z1_80|@KvMcDh1OV_Q#xkL&Ol~G7f7my4=8R-&Cj7B+8lELKZfKn&0@;@sB~@CxnEb zwD|5Cmd=&P7VaGCknVp`dkJ^VKmPO+(vG_Xvb&BG%0Z+MhKZ&iDY31m*r&$eg)sAV zBOR5Zd{m4v*m&J&f$-oTuXSvgbyRe|Xum|?iEKK6kLBe6EaJj?d`v*kvqv|h3#+ZD z%o%y<5fhzo6o+`^Q-WT-91!$?(EihrG>B-0`yh)Lt6pKVO&^}w7sD7|?(BC3IxLfn zmr2Hc5!W$k!kDyI=sS@o$55n1%Dzx=nBZ1g(bSO&YW=VY$EoQu4a#ONi=%CrVbUc^ z&y~dmw}zqgVdm_}xclKanFT_jDok8AI{#J11u(E-=uOy932%ayWe2ABz*CI}KPOPK z8_-Dt^qt5B3k(eB|K6SK{>;MuYtJ+K=bq>E$ll(b=T5rY>%%9oy0}Rw$hyyC|no&fVQ)wsO#md}R0zi{T*_kP?Z5Cz2} zg+FN5)v3SMt~cNQjdnc)|FygRsdl~ed+?9i^%;V!UCFhsFMj@F4C_=B6pXsgp=J)APn@+peH;Q^ z1b(Z8ncuaphbBLtT|qoyVorU%J))J6)+_(8=B1{3 zPliGyJ!P@TxPRl@kpZuV$}JRC!eK_ZS!;Qt`({Pp2kS6+$xk*RAZ0O zp`(eQ6PYxA$s+;t1t2laNUNam|YDerJ9MC%1d({wyf6t_e2l% zTcJjmKkK)K>R&bx@Dm)rbGMd}-&R0{C_0S++*_v-k*FCzn3a}T%zF0GUPT*Zhj_K7 zsT^w2{&|aWiP@i3YFu+$LR?F;z786ArPN>g`cLeM)6A!pI)#c4&zg#L4}Vs^`LrbU zzASa;I8lmV-P>H8@TFL8Xy)N7cdHxhQ#!Tt)~&*InTE1;7g85BEXdjpel7=e45vJO?ygVI0mO%l3l2^^7IFo%cif@x!l&0=e;hc>?80?6{nduHiX%QEc1#E z{Sds2GYJrxSX4h&>@&pu90{LB-8-c|X5pJM^|{~5FsS-n<@X^w5D9#&ICevQmwojm z+lxN-7q%k4B4!^t7CXFDPjiMpN)A0copA{^arHI#CDdXh9brIEs6ipd!&O>=Eq`h1 zv$8wp)yX#maw<55cl!4l_`mB}x&Q5Y)|6oi3LZYKD*;o#*43~-)v2Dpb*k5Iof`2V z@gF+XTF3mJ%iGv0aVhsookc-o+bWjSvoTWLxN6Oy`oXfx(+yW8E5;}7f+i+6IHts9 z@+bZ4&*Ym0*|NW_zwoxEL7UNIABv4QUd3eN_RJxN*{B9(lrkbQL#Wr(JD>ZhYxl0V%#6T%+RppGnx1pS{o+|ELfWnsGf<9$Z zo9eJ^t9ZbI!_<&fE$)lVZg4B<|Hv<-ZV z>X?=H@EY>Vc`Uy6h)CF2G3Rw?fGtgl%3~S{1?wj^C58_Op6vmc{1zwg!Zv-8;I{4} zpScV5S74e&IR>8s^r>Hf8Jt3+sB>S`SmU1}#hYH?FXT*Ki3DW|*+@ZlDw~MDq}7yM z-|ynH@Yi2@UjsUEo4#d|r{G6s@ri!s+pZ5fw@dvBf_knFRJm|PDFk8Shse=>~=Zb8e=^{ z0OWS~s(WRX8TZ~PP*+8z=7QM)E*HsuX;etngR)0WQIr}NuP{%ci*`lZB%s;aN?+Td zk-W3RqugfRT=YtN%+DA{@*GTTqaK}cZT`di8oAR1dcS#lsw0G*+m=SuT&$$%Hf~9|k4=-EJhc^dT%#m2Dv$S<=c^f+e?W?A zCSXBSU9O9}6ScE9FLMke#zzU+Fh_GfVt)Fhe#j`NvhiBIcUK3om^-Yv_t=6bU*mYP zmK}EE@~I#lD@qR%uY=|RqhUGFjdUJ~C4PKTGaA1}xrKi&!F{OmxZM2mY)C(=8E^ny zHJHaTru^z@9)E!9gPnErc5}qZS+lXLEo&`rVCq=m5cdTx`7r;}M;i{Zp7LgAmAs2% zyg(>mxp$XAd*MV#a~)&M-1g)eY{Yi-E|A6r=Exbt?IXMRy@0_DA(w#P}Nee07b5j2w+EySP0Ad}u@vLIEiaV8Cl~Cae41RvFyE%O>u#pNSS*j7$Xl=h)&wYFv+b4 zqs#-I#OhvR-m9&a-N~S4fie2|R(``4p=-V>Caa;8ewo#?w@U7m5xH+0;0+3e%|gDu`vuxuupd$)#p z2lR8xKd7KzLr*icZVqVA@0NI9M@U}1Al^_xYX>!qR>@In9Xgf`Q4DDG&5^a`*%HKq zHcLWhKPJZGTgBws?45=8L5hV;cc&M0RWU+G*mG(7g-fIxehnSHM3WHJCDM%n&=ToJ zC`bng_)av*lITG(FJWmHumTXZ*9iU>i+5B(+b4>kOBlm$qR9eQ3}e{nN;G*(`cY}o zgk*S=YhmdA^{oSB-Pq!A`V6GHfzBhsr&Y{PrChC!a2C;JHHOdx4i=q}@5!hJTfR8h z6gY}7R)zLpX?H_S4;zXOj?)mu$2Evzoqg03$c}PG&^d&(dtYxYNFo%8R*kT|hKEmN zUO(c?<%3bm{zSy)!Y54jJK)5e^yQkP!|U;gAsy8R3u-4jJK) z5e^yQkP!|U;gAsy8R7ir2uFm1isBRn1x50yzkKjL?$ob-W7-B(cNjDcTW9X6#|ofs z`3iGPC!T1ibi0q->!*2Lz-cIM8cdx=5<{qtsRp%0$}?!sU+rsilcz@|#*Y{K&eXn4 znM%NL?UysFJ(HQ^+d$3cbWNm1g@*`<2ABByY%w4BPoGlT*}pVLw2P^En%yZHRA0_c zpUHa^ivx+GyXHc(`fY33f~Bt=*xMv9MnhAD(c%K6}*>0u-L;I{kdn~ewM@jAme)#l;R&8WZh77z&hN%H^xI8tgT&&>YeN)bD zTWKFn{16ZS@jc$jJYTd%k=7H#0FA!^YS3OOm1bWomJ0otN>YJ9eD| zJGOSxF1+Z8IMTSe*Jq=F6>)b(}gyU>y6aPvKl)^PJVOk}9}aOT&=KYNCP;@t24Ng57;4!;T?l<9s=c|`lq>;K;C0s9zl zr{TkGcFUVDb z*;#_O(+$1+{&n)}Jsjv{AAzB2aTDTvgQm3K>|^l7d_HSmk*5@mH^fkT z2r)g~oP@`usLfE+W1&xD4DnC%YA~mjp4ZuXRnP^ktVH2P!(dYTH|3{?PX+19^PvT* z_mTH;Nr1k3d3w<`!WW;z573ZP8$Y)wiqe9Q2 zIov%I$zn1a!L0t%apce`Teoi%)wDisk>DV}^DUn0 zmd*_tSfq=B#mp^6(Jf{EVfg3puDsbpWjt{<{R#Ev#l`%6oW#^%&dGgxp2%#BM}QT@ zw%Xci-s;Dga;ER?iPikHitmZc>}l^$vN zUVjrgb@(b$X|nwom$+ewpK>wFBGm};k~~~RnlC3I&HBe9r?Qf}@lBDpXAeDI9|g_A zn{GE6>A_2(>v5_s!uvk&mTF2(bd4mg!o8daed2mnYr+dF=LkRMykS!sa4|lBhDs8W ziC0WJqV`%fvbw^N=v8%HZ6O-~U#c0QcFMIz-lswfnY6S_ur==jgxv(FcL zag4hVKrJE{$z(=~rGqmGU+1LmMV@9zpg)-T1*2 zNMlIA#YlDD8V20)WdeLI3H`%7f@lD*QG+X;_0;3hh>+h_f{pg!Nn-rBnQ_CAmm)Ji zW(ME#&ur5K5|?CQ(xEaIYF#_-jmtk`;`gITJ}0q2NxC3aC(y#U)#~$jxp(z?zT3ts zyJZYd8qt1xkj z?{1@HHkz1<+q?F}OBw>PG<}MXeP390cIfB@#iVqF6UyyMvoi1ce5mUz0;}8Y&?IAg z0$27@Hd)8!&8w7%g{dBWg;^!@Kx zMjr%4eFo(PKp-9V>jdAkGCLjWUaVM=t5yTCA88*wQWh{*@TA+wCt^y)&Aw}&Wjzjb z(h3JNpBxJgqiof7!+4HKx(X|(Ogu5|0pZ>>oZ~&cnc4}9{5LpPNo4g!Pr;FBT1xBY zu;Np)5UaBs3fShJb&YK?w9ot%77U>>c=J?E3h=adk#6gut4Br4EdGSjG2u%&`0TH{ zgyBDXSo&Z09i9KY@8~z#q-(o$uEM%ziv$VbxpnTUO!l2|a5PRFkmFri<<+vUpujIs z)25~#Ij~h(#94PCtt9u0|A*9Vgndd{jXX+yqkmO$MKkOEF;#EmPp;rgBfcRrw9BZ0 zoMB<6C1arbaS>v3^A=!iYD|F=N^D|3DM3knFz;usV&~J&>WP29rUqX#YO0K_hYWPh zkMOuODwQs1is$F9Knc@1;mlW*UFUFT0%}sTWCp}=OWQBIj(M`oa3_kzBA|R6^+mlu zJhN>p_&37u)!zue-QQo@pLV*Uqx7QbWB72B};(ACjmXrGzxcG0jjzL}hHD|@yKa*4cY8_K>_LrOrfADbZRGiQGGfa-7 zk6AU_OFxdh_$IFN=IQk3GcUpCv=`lFyxI7<`D=|lKUXcvcSD2MV+@- zmm|xSB$XAF2|J(@A~Y1IJ?BJv)gqQ}-Evkev!#Gmq~&<^k#DLJ>&7ZSjhRn+%UM!q z%%U_Zsrpei$QeOGGWYdU`3w?hh#bZI<^4EPk;G?e82 z)fe;$32rADIk~>=1yJ_BY3!ERqpf%U2vgPB*SB{?ncDju`3EMkFLHLGPv%u^)Kp}s z(I)zq#XXwp(YMxeTS4jp(6?3O%HYO%s- z+M_1C?GFL`2|vNwHvGisxOB+E>z;)5UY3X-O+!vJ8PEZ5(?vxG#Y({0Y83oL0Z9Z*Qn2um#FQ_ea!%%t|#* z1QkZ+T6SEU1yi_NhGGQlvClH*tgHpbBXNQ-c~!)#d}qSpm*<$Lwn$ytVrJInp*$!f z3d6a;%dci}C#Qo6$b&&rCq*)NI#Aqgmis?A6T0-^ik(7qJp5`Y=+*I8O!)8Ov z`G%0jgODTIEj8U`)nrpO9y-Jt+VST2qG+3g~T& zwr|u1(IO3_YPGMMj|Nl66Gun_2;KE-BBO0V>slF+s&*Zx%`RVQZff=4eot)tVHe4| zKOCjEC8SHL`0Qf_p)^l<({Xs7E)f@jQPK8UX&mk74D~raz0#;CfO%3SiMbJ+h|L*I3q_ppVeNuo z^!OOJJil3Np(KXA#C0~{Y^X$Nw%_bKtzFK3*Qas3^mm6ZVk!WIuHAKL}eKgSxGzQYxh-b(xLz$f!k8>9c^{- zT|zg&Cnya+Oh2(_9)|~sS^!o1PSV{+_W3QAXsoT=o87VBH6lnarqrlGU$dGjdge7k zw>$~ala4utT+>s75baW`u~`zeMHbk+M|2pBP=-@^VmD7`RvOutH+rIFikljZ+O9dM zVw$R%Z1&a=EpY^I%6g~ixd5j~8oq{Cn{g9|#|++^@dSKwps(|E@7%_M1q}EcrRLXE z@cE(z^NHz}(3JL*>*jWeqGM1nmOTfKN*+pE>B1gmJvrjFL1GhebMx_Z%{diya|OD? z&DCv-EsQvmmI?Tw>bRdjtA*_VHZSZM9NO(s2U0HmV!^?~aBl4o-}lPr%s{4?7J$Kv*M8+a42y0SIFo z30o<=X;A;T`IklYgQAf=(+LBDaQs}cax_%x#AuuPjuT)xb3_%e3@`xX*VUe6ISrLV z8cX}S-UnVp#D~CBt~vn(0oW9KrgX8935;w7?1;2xoOQzZ&_ZA~;D{t77i!G4T6{Vh`t?lH&*0>y9@R&3qY~i` zOcrP7i<71IOotBfhr+HL5vDKaid(4wDPx;bqrG1tO+}7!5hHvp=K35!)6Hr0V`yWO zFy>Z7ibN`AN{2hb6eu2%67&X@AEOJ$YuAes$jy0NV5sYL(Jj3J87+mMMyB1bN zlLe~qoAdCE>T|rzD@zkTDXa)7v!`Av5+pO9D3A6tKhzz=j53eoqFM^M!pai3H;Srm z>>TL6)7dDpCo_L17YBoVvOd(64Jk7cIuV4Yd}}GZzo$z{X0D5=s3_~DUn-Kf#=pig z7UM1zC%w3`_OOplTn~#H-$f&U56K>F7cEYZUUuE@Yi!-! z({Nq*cGtBVSrq98mTNI*JndV)Qv@C2fR^c5Lp*_yUI-Xh1~F&EMhVn$AUi6L%T93w@>L)zE?&marrxE{IbLq|>x1Kvm z;&eoJ$Xa{xfWUpCc!Rm&HjxSHs~O44ys(=2CDu^;OQv;wZMyu{2PH+dA7N~6?lDTjeiz+qEZBbM@Z}u5_^Qi9wD(uNbC_3 zdxXRuA+bkD>=6=sgv1^pu}4Vk5fXcZ#NL0N*b6&j4F99Ro4w)D;|%BLqzxVUrR)Bj z0~1T5SWluL;*3Y@PMvjn`~L`*F`v!-ApDEWjEd6|5uNWS&&rj>U8lAxi@oq_?x7(4 z6^kHZinAY!b{3uZd*F#XzgWo9Z~dLg+0+l?XZ|kmS@aLi?qxx*FZZo-={hvry8Ars zpI!I(Y*KkQ_lw=z6+KC9vr$ZZ%Cn~h%U7egK92U~kCljcNveM27I&xIi0P+^FUr-X zwSF<50?C3SW3z1P9p)QNa0o+4b9QsKN7ivAB)hV@s;Vk$hc$m#YFO$72F7DW_sjr$ zUw?91bm?=nRssi!Vv8P-<4WBW_u%aP!H^qf=Yi|m)UF?&E0rtXy|9N^XtZBC#d|T_ zm11$=W^gweyKmtP;i@@b%IxYO^ES^~igkM9y;OPT1ajD1w2^vxxx;g@q41`~L<((d zctUniqVUaDd2ph_s$M&0)qmub|GK$^okYJ9d{HOg1CMkbtYI=!(x{~Jz4tS+)wD~; zru`V$d{liYANfdC zNo4L6iPo$ur-9p^SoxB@zD3@5NQW=Q0#ECp4{HzrhvHZV+e57uX|4&h##q+3<~m0P z)t;!4GV8Tao|YiQ-)1-9Mam(amuEy{&J%%7$&~ObuR@;;WyF&eKMf#>^y?=w)4jzc zQ-ERWkIc?Xs|FN=4;kCdS}s1O6t%##>a4aO>oN2Nh2|y?D{>Fep0u9&wI1}}? z5zX$5Q)aQw(=Vf@Zj$sdqe&02r3SKN8Z!6|2W(J%;Lige%Tw6adBHF&;CoVQgz;t& zpje4szILBvFKXpYt9oBr(6R|@P~+MJQTK}!(t}fu=lVA7s2bZ0k`{fXUL%8{uhB#} zOY4h!*xj-q(x!(&nh26$<2Q1aOihZ$zX3vjmX!MSP z6q0=}>CHrIbmP8X9A^v3(F@vLrArgFA2@F^XV(t!jXzP+)h05j7oj&OZO8QB9eBqX z-?OythX({RHUtDI+}vpO__9MLVy{h9Gyn_&$7=*X9H4JU-l_<=R!m=#T=4|5VMxnv zUr4c=6-S%lm`uX%eSV4tw15_Ff8Gx3s<)sMtA#$sq;JarapNgN?I+RhCgv#r$VVm? z@&`fBEligel&3n-;cjAC^4;eZwK(CKrz4Z?7>=pUbMiW}oF|WcWczKmxLC@EOhgw` z{Ohs;6JoaJTZ8+C7fR`%Q*5>UVf#k`u2_tOD!JE0-1)_2-p1fuV;|zYMqX0IR81A(*y~(q1|fN}l$%?+?^`bp%HUl#YwtEoLIKnE zN5I8vN?N2X%(uvWCmSBLMhsd99hu~|2J<{_Z8M%C5`C#&DwL=)-){hr89Aq<1TqT{ zfI58u)+Qk`0jqLay*^S&@ELw+pd96aDa~plu-Att3EmPzUw8o**!60qF-ANUKBtP9 z$0Wg@@dKJSy@ zh5S%2?G~LUEe~^mwXYGG+^dZfN$^jqh)iCxgL#Q~AX0+pV1CU<9BLQc4b)dgl_nre zo7vVHRU=a2xA~#()ht^)$~u73kFG;A54(WO3=+OAV^~I{gT4S%Hk&^3=$6AM$ihwu zT?%x@cay zayOtQi47>K1Gv&Xl{! z*NI(*9}t09AQyc#GwJsv{2?NcSjFoFm%AOn@f27%e4f;iBMMkddY~3hhD2&LBkzI@ znQO|by0E9gW^)kuOI9kZuC*H&mjcqt=PMF}-c#edYbxz3wMTrT-!^$A2gD0FdIcPJ zLTJ;j12yM5OoK3Sab@Ig6nd?7u z^x|TT?kWmK1IJkq+RNW^VxK0&y2I}Rc;1I77RCa{NiG6zDMu+5a?>NFn>Z_D5zPDA zmPy^t39%AR$^b^8pE+6av4#8U03K>{lKDqlV(&1VpTNng?dxZ87dRYA^F4q1kfQJvDdq=U*NdTQ+w35?gHlj|; z1DJTAxJix5e}vGsS;_H^k1b@_*Jj~T6ifm>Bl%;0biS+8X53X;xv!|f^)qMg)_RWn zcXbXPfY)o_cVr2DRL2W7Ic>qT6~a)cfcqsg3#sAKmJEJ!0oOtk& z*MU>OVl~U-R#mf_)>{|9wdSU4bsYIMm$1Y_;1tnDUzl3Vz3(ldYOU2H^v-QD8cnuV zr-=sHZg)fZ^vC=rQe$U7G`oWEL`$;JE;Z#}cYnISvwi=(r@a5`p7NbIHPO}couxSZ z$j@PI*GJ-^p0xEr?>>KUQLfK#;dQOIyX$iYmOhM%)~=nyf06d!mfmCnH67z8Az8aw zG3m568-KEXOgevK{R02S`W2jQ_HV6U+ganEtsl=*g7qUD?gt9HNp`~`5T1ecsAs35l+}yU9690I~2ARGe1As`$A!XY3W0>U9690I~2 zARGe1As`$A!XY4>{~Y1q&KSdg5#jKA|H2mkGs3YtTk_vWII;gS#=nPfy5j#D;S5Lr z4Z=a34f$JyL+$fxpZ|<-oFfSchk$Sh2#0`h2ndIOa0m#8fN%&1hk$Sh2#0`h2ndIO za0m#8fN=hEg!3%w7h~ur`OEpwAS8dxDK`1TL0A0>k*g{#*8{-4(0dFiPfgH^qgM@R z6li%vj?eAt=Db!j;$js2BDmJ}fIp9pvVhO6;s|P&^2`^Hhk--n8&sgkCzu zEeaE(E@&&326(BSUTJN?V+eRKkRc1ryr<0`sM;ykz|=Lu!n9{)$H@YR*$F*ZKeuNc-p8YN)3(SRbECtpn!fa033!XFHi`JY z!^;=7obO(dk%gLjyk`&*Mta-&=pRT}Mox}_e z`9hsNHx7c7P|^M|<)P(D44vn5`+SABbHXlG_2s7Bd%DR1^jTU(~4=VCs&7q27dsk(2wq0 zQLipzMhzMk9Bj>Inj2^8%k@0SGQ3e$Eq{G>=CLj5QB}OUnxl{PEtI33#Sy z$lkhtxW^wpY@Oef@T6yMeZjKxy2>YsXT=-J_vux>8;pOr_V$WjOu91XYwG5*XSMgj z!z13lzw|=Bx7S);f+=mv920z!5W_+ zc+tgAMU4|NmxXuW2%1%LE8rG-o^`}cGTj189%0+*`?!#bJ#B<>cRG)9d&!wfDa(OI z$xxE@`1@gK?alCZzR?%$gE;5C!XV4N!vR5=&2N`|EeFV^u@U5s;%|l^J3j!!N(~+- zO<|2>*UXsw*s#t0H+i+TwKh&J)0elM=-FmDaXrH-SCr z(u_xvW0eQSjo{{;ZZ~j!?Tw`(0PAA@vgEs;N6%i=E_N`I>RJJNefC{HIJ0g`a*?)_ zf}=p1lumN5eebE>p7RJhpx3Q20?w`0RCyTDG$9oLWd*dmCu^7ADk{Beek=y`W$l52?;`P4y-Om%#W;wc; z@5f<2(sHe(aOk3cqOQGxKZG_1`ANYa6~VfX)LfIlV`7Al31s@IN*?$`38<}gg6+S- z4|T7-s3!^tM{Giq+cGKk0-J7F(f=G9a9`YSVB9MoKG<{ZllQe2hYktfGAUzc=Y9g3 z`10Bnl3!8o^@(lnf)#zbgYZ&PVw0IILyJqYmarPCjMBjZq6Wgx?PtFA9Xe+#Qz~=C z?Doc$)8RrUGswX;pjZj}f^H2X9b4PcydoF7TlURlrKJ+JCgdehw(K`og}6cWlDh?$ zVerM;^d<2czrEIxXxCLMm12Fv#J7upSVTbKArhGnmdTawg%+`q51Fmg(aWx$i+!I* zpDvftdX%YG-{IV=UuqRli(+bDSjJR0w3rnObREESjVWMABU-*k;-T5i-l0c~_P!J8 zz&bH*db-Ut8uf|!5GCLAmz~Eb@X(R$%#hk ze5y)$T#5lA+3K0|(ifGG2+oY@&>^iRQQ^!X1Sn?feN*-_ni~#V!DiGc_G0R5nzPxO z+}K;_?|#Z$qD-9Wkml9n??PQPHYLL|KB0kv4yoyC){yZ-A4oc3#b%T)FO_Ixwk*^g z;0;m8<;HdS)A2HnULv~YW#K8MPud4XPB|g#w=VCm z#K*f0NR&f z>h5IF4=L0uKJ1$XyzV%1k1P#KS@*Lz{d|NuKh_0*u#75<&KHGcubd{zD6O6*W`Hlj zLNmY#2U%BqzH>kMK+7HX zz=VF*2q(~#fGQfL4~UC(lM^FJUNbf^QdC!5vx7PU%_;KIvo2zWt|!CBKD|)A2D;79 zG`Ph=sxMa(!N`GZqfH;`h>E3eMWCLdfCVyu)q`9F>ZzOJDReMJV`}zEk6+$mAf{YV zU2PA}GDNq^1zOY=ca&HrQ3y9{sAJy`!1OKhdf=Kz(DQbklH2rc?<;*;F@VzG+Hg!; z+6u1RXZ6+!(uJk2brfgx14Xi+Wp(PZHOTg??(E`Z@VlJ(KQDO?|0p+T{oKOBf}JAO z?#fB<%>JDRsZTzo%;2s(UZc%(<#-HYIdA9qIh>CNmwOLx@oGz3dbnj?JWVa1?OV>$ z1ApI`Dlt+NGm$CBpDGU8m;SXVyO8uZqKqx!*Jbs$qD=Cv@z0_xWPp5kwh5lo3Q3L6i|h89|g0MA?5X%GSR8Vhp#){!*0jll=kvlkpzk zz1X{7&q+M%v}(x|ExKj1pjAVqaA4D@{cJoz)Tw2#R>pSeI`nHaho<#gmb(vDHye5j zN{c*U&n{0Oc%CPUI;g6mB=RD+l-BvCb|PWTirL88sVyuT0feY&#y^x?9b|FGS;+2) z*N>?nXB;zFNfL(dT3_rTCo=O*B%#HJ6Gb3)o6rPpBB82Ci-gIzAL5Q^Wy z{;T(JAR>qk(PSWdgQ69+0y#1dl7bnJk&!<6zv&Y}`}E{V=WX;s~Pp zi~CKF+*8Ov%W?+NN!{;e!;4P`m(ktcwhG>{pwvo03Z)_s{7Te($LgGCz3XS7_uD4F zri|N$ATL&_p(JkGKH4>lJ`-8nmL|K8@}P<)Uh|e`{7~Kg=BXYZh!DP78|0AK#Ng*l zYB0pPLbrD53Wnl632Vq~t4qHVnZSpH>b_PYF%}ajTgQpnV9Xu$B1Xh}9z?sNV|$j@ z*lJrRzf(q2V3R}fmpN5lEG7E669?o8C1}BVO3XWBNc>hb zWTOtYKHhMzl*cp5($y1TcDo~_AIiM(D@ktjfTs1W)XagoVVdd6@+0wb$#ToxMWHLh zT3KT{3sbtg>W>{8C^?)~%U)~hG1Q;xZMUfI>b@~)V3psua$U=Adte({`-}p9%HvC( zPcAq_mMza=0@#*inOlM_jx)6BUQNN*>9l#p*{rq=^o2wM=tW4Uo%1}e${YL`Xsb_FrslI!))r8)akVDb+FHSJLi2>51ad1b+xa>@ zw{$?F&#mucJSF>v0rgxlP04e0=}pzl)g$_fVs{?1zoPGHOu8xidajS1cj`fRWT!}M z>e1C0a)yHUwkulu8~j!Q922*Em&YyW5fD%dFzXbaND64V>XJ?~rNF1q}_^054|L@%bVZ*EB-==s#>(xSBqp&;Xsst?&(git*NF z(;e^hK799-0bsdYz={Zv?qiAHTiiK`NaO#=+3@5byaFNQ3u5zGxTA1giGOMhdw*RN z&>=mMafDwkwr?q1D`E>TLo9y3d?G+>79Cy)&Sy}*4l0iRV`Ve`RR!#e;~(f8F!wKui0 zdIOBavvD9P>oNRJAddLKMMpQ;yk8$D|3xFYQu3?In7=iW!T-CF`C@{5rvhyQC@l%Z;ieaVtNqsT)J7U#^$E?z~(pkJ#kWk&K87Z!@rdmSsJ6T~$+j zV7UydP?@Y`J6Y_7E*hGNg(|{!Jq8yb9{v6O{TVblZ}q(OyummO5^9aK+jFjrwH!;h z=DKz~==wZ1o2C;d_$F})SEAR!vukS!gQk6i$aWjI%kEQ*;~j>rns6PStRoDO@SqgI zl-7gW8`v)ND6W*<`L%EDtatDh#6D;=Q+E(+ORfuEjUUt4f0r4!z9nlJ+D^ z-;Zq8MRUZNCh1myf#@xfq((0}${{6B(wMi7L2?2a7r=h;G);@z+?)E@y_t(o@FlOT%ettGHwlij9PcuJ{(#KuHUiT08+J-30;7}2CB2l zt3dX>!u@46vkxuouuaT5Zq4C5g%;JAbq1@`q8nuymv$I^ML`8Vo?ADv9gU!*ahfwDv$~n0$MKsdkgc{^6 zN4a3@#U?UX5~_J^UhGOBV+_EFx;Qpxw3rB5C258A9t12DKU4O^1=8{sw- z*sGz`Tm#S@8l_U0XQYtV-Ud>&94y{; z^qixK^`;FXoiPQ%P7{zm2;AeQmRuyWAGrJILlYzs>GSgl0fs`OHC|d@j_u}#FrP}b zGAwv}yQFxWw51L8=;vc(4>Y`bj9-5*IRhWSUl5U^i)1TqU)0v_SX`7gGGH8K&>P3J zv&FiC6Ix885i>F_GPV>`Q1kA&&i&^=ZQ}GO`C-Kt2|B&i(%`91-qv(cH*ksZr+a=& z9k5sWC6B^#kuFfGYWw}uhkf%!KSx06$NWI|X$pgxmi*70TQt=%TY+|gq09%(&3Y4` z@T;r=?C@9F+l!8gR7VO@Zc3O~UsdHR*;T;NV&`?2(W(R2<~+uqJ_0Vp0hl>e?0mK> z_Dl1-V#+y>*&CRCg&|{jmEngr| zN`4n`87=VZC+>`0sSAS;N%EFwGE6OQb(BJ|oE2b_FSZxOFALxqq?85lz;ZfKS7A9P zAhSXB9u)sRIciubeg@Lr0AS`!p2T2>??t(A`M z7T7`Ey@*mEc+2$#QLoBRl;YIHDCKIs-B zcR0#kGykpuS0tc*NrqJ+N4;Q`MR?Rh-w%HYY)>Z7!U`Bci)F?~km$E&ZLMLvtSjNIlAz%Jf;uBAD{72dxJLv3Q{Vy)tc4Wu#DK}k~Sjg5;r319s6_N&ra`)Zu1$U zJ9-X)S@J_j6mZZFVh+{OEBgG7KbR(Iz4o1QNzxSf;^6Lu7cb7C62n8e!-MWGZF#rn z%*GUx#vHM6urbMi($}vrEngWKyEywz+k2K9p5NW&9_tPD%@ErEUbdII7_b6@SM0@6 zD*06@EsGy&#YV@<^HzI3L%N5>x;Z}d?jQ8LDd1Tw;6;}0T2)dlen$qI{KOJI#{ckK zA9KSB6=gD2VluVBkGr0wxJ!X`@ap?snk`#-DG_=64z&&VDqR&D&Ng?Zi26NhcXHVMO?E z6eW=dBuRz$+V(kVMT`cNx_c%_fHJ;Xedg*&nz`27wAA}!q?gG!`^EAdW6||I`B%?4 zBluT^llB_hPdx6P5L*s$E`rMGQ zV%Q;O^_uc`PQgd7m^jUOHo~Kjk@@qY}APKy0J{E#?Z1RsYn3HRNR;w|EI2bvw(q(>Av<(+Z!n zNK>l|ysH5hRpibw_!l#;t(|ii4dajuE9>|0P(PR1?<09B+FVjIrC_Zu{O+RT0rKUw zFX>_{NQKAUg6<}gSldzgkf#b!qY8tozK_h|+D6;) zI;;CAo7i&L+krA!`=1=?DRPRpz|{>a`C@RXZF^+11Ka|1;uY;WBqKTG*|h!&HE}c3 zd!{LH;nZE{zVm1KiG>r}w3Zk31-13j5fPq4#x3?1RNmKzb@yvM!-kj2BZ*{xmbvV|M{Mw!Cq47l?jYA86173RC-0SgojpQb4IHmfY ze7Y?=aCo1FD5qyC^m18w6F52falkbP%A(_xOpVmlymvn@Ep?QBdl6m!@J zg*QWsa&mGG1bOb4xO{dwgh9Y~ax|vx&5hcn&2NyaLZ6H)X-jD0d%Je1V>a=A8MZG{=`%i40O6VrXuT;(+WE2Wg z@o5X!zqR+whSLNZPpniXPYIivkD#Q$lIb@nhV4Y2_h#(NHn>F{bIeIJBtFo2G~i66`J43S$;F{MTc0G?bjck)6m-&6n#4wKfX5>Xj_tXP?*n9>w z_egr8$^GK2^uziKkjNh_HRXr?O3eYbom;hlm4hvt50_RO8EWZUTs2E8`K+ zC?fBKQ^hY-c+{d%^pZuN8Uu3$R-yT%>2MzuRQD|wE|=bS(lnEJATWC47!g?9(#W|# z{oVd#Ed#qZ#qHDXbN6wFnrVrvZHVGpqcJ*k@si76N@h4uomqYNrR172{g;=~wYS%Z zG8oWgrN^#1uXoa$#V;MN8_-cw$aQGqCd+ja`L>%R8M7R{F2vy5*;nHy`AQEW-WVvV z(nIx|7i8Z0hAq9>utLwc4%$9&23!k77TnmIm76w?&N%@s%s&l3j6U|X9aHVhJ&KOQk!R|Q^4W7AsjOt<3Eq6 ze!$!5GlVSqe0Kq4wA5;#N`L*1Y*n5P543P-?$O30$9sVfnfw}Gt-k3sJ7;^lmaF-u z5@gtOZfGrzc+(@#mt@X=oY73ljT0DnsU$D!)k*UGz>`l}!n=^4AdYQW1Lh6-RQj-~ zFz6k0YC?T^Rm;P1YUYaOj7ZVojv4Q^2MXk_d;8QUhPRNSqzUN8C=|qRltk*b40#Q$ zM_6o)L7QDPwTw-$NE1jHsidXE8RF|qi^TM9pWu8!>P(xJ&GO7EN;^K<}E& zc?JOp&^w@_GCMs2MHc;LniGK{Ljgl%I9Cp+bSe~4wb@#6$f6aj;673qu8)Nr7x{Z% zUh-3Fkzmks@Uq6_(= z{1A9qgc*Pvq#OyeTRkWmS=U0H76L)KrwTnVeH3;hTM;6d>GE)SZ5dgl%iF;hg;-j5 z8SHQ>kY3t1W?M4VHadB&&tS6XOT%epM&)3})Lz8u-GSZ$E?sDhQG`ev7$O2T4tA>r z-I`dZGeTXMXX^rnV`O!k*wVN#U@7@<9%rVf-mQNJZYuD9 z_xxX5&$#5jv7R+&oBLbqIe6CiXX`03_iG;s)>GNEV1lSi+qP-`{92)$*PlgX?f6Tb7$N3uzy@koWFLCdfTcrcNt8Iwe{SZ3&a&la)=0xyub6QQ~iu z_qC!)n2&X1VHH_$-c{DX6sOY~!ql1WD3saRYCUz|9ntu{U0=z*IrxgQ>U!6Flh566 z1^QC?tDGFGs!@+0P2COPgG4w!P23l!qn3Ma8eY?J&}vA(&e0A5;Sj285vpqus%sIdYZ0nz5vpqus%sIdYZ0nz5vpqus%sId zYZ0nz5vpqus%!n{)wO~Te=!DkiodL`W%KKwIFlWo=;>aL7)YuTC%=0yvN`!ZFH=Hu zYU*;h5bec_jF+D@aeeqnD@weucS$1u8gs$3ry~{b@7Z2@_HFp1d(ydqn-!1VT&Ci< z^(gdd)q;!6+w93Q&`}4#;TUx+3zfwbS7*Vt6D+z8r7t5tOz&lUa$!^b8L0e2vrT#; zB!pVI(p~vjyKNMxJSf%n!BH9ZNEt`b7Eez`BTdBxWtRC&b6vHZ@4>K7#Rn;ESI>A0 znb=TYle!=njQW!;%@>b3Y4Z!M`L9>Od{j@n&oxA^-MSb8%ORhYfq14_Ox;uV%5PP= zw>QpD96_T-&-mztFBz4yEAIM`emIp{49x3P3)pm3z|fUTv;5Y>J+i4fo9Z0peU+P#tK~20CCip4n~^L%eui) zlNnoBUUl=XC0ze3kt#*(jVm?cDf>rTQJ8)gz=HLGF}0FXSDDIXVc+aSvGB(_mwEZu znsQ!gXgj_yILG?2ZfW3FmF{&n(~nS^C`B8ynscSaD;Qyh6N#sj6;h4l3@r>~(mL#$ zpYHFLxUNYCqMDjj7{$36iLDt2a_Y1Es4MU7t0!>9RCpKs{AtxytV&&Wuj_efhiKL^ zP&JPwN?`di53rlAOu*Zh-?>)b#JLLtwQd%rzC=$w_a2IVU+huW`rhlu&HKZFL>@o1 z#6oi3l(oL=wrieN5%m}l-Jg5YlvR?AK7=97=1t2ph6IjZC><@aQhuF^I9E!`&{?kE z!Y=Ugw%P^GYx!?ijOx9SwLc>J9Txn9jp+g`^FC~GwnYKk3P>|x0lUv}u*+^cT_FXz zr%E26MvdXML1SC~6O&;{WTocQ&)#&Z!h^)PD)X53saQ2Eo3Pxy=lw! zJ}NZg=;+JT52y4=M9*sk2n^*Jdxe;Li*E?SXM?(^FYTod;e!ejxHn%bKxY|F|cVK=Q6w`jlM zorlqB%BSR^=%=AyNhzegS;HJ}?tK@_H@04E>iuwa;i_YV@~SUs*@e(D657YKx26FW zV$NZ~5A&6^!`k+#D5#p&wq-)CVqQtyf4!`b%qG*~5SQY#*T);0VG_EnK+!?RmLcbS z;V@L$k`Zod{lvJt&Sh~Xqqt@zpoZ(sW0E1d=Xo?x#<#eY*Ff5<`sybjZ5{INo@Wx6 zV%OJ;g7t+jPDb=eS$ejn`x?oYdtwI+Rg){(4ReT#_xZdB-9J>;j2c?Oil52Z`i&au zT)K?&)VrQJ@qRF>%45>I&rsJhdAXT#P{NLO@V1(5eR-_(S6;K^$`F~Fqg9|%+if}9 zolixMgBs6o-tHS2G+Z5|9Yi?tt+!1-wyj<<$*G)6tz|6s5rYBe$XJTO;+bCk?s}Ip zkLrCwD=!JzngS*lizU`-MhsIngtXSC){5_}c`;|Mrg7JGWF35{Oorjd4E?%_A8wG^ z%Fcg+3E3Wft~}i+7T?}r?K9-)i5M_kO|BF%7>ug%m|Rxqz}pU49Owr0>1&PYGsd12 zCRCT?m4UtnJhK8gF@|`TlUY`{Q8bWT zMzRC+3Xho)dfpw$PPu2y*@hKh`H{+RP?-jiB+orP&IpL@->XaOmtTP3YOzI<^NX!6 zuJjVkyrC1jg;l#8u^zsM8$KC{CIPs7SS8SCAkt}BbSX^JbJZqC5i`_I0E zPBO;R24q8sHSK1WmXCj3iyn~tIj0ay^y^EWgox;zCE=TJ4F12J1N$ex&ai#r-_0HN zkF$%Ih=^!~_#ZWaR+As{-_yR*trRPsP!KP4v-ijMB9_mO3?K1XTdHtM`Y}rDecJva zFQ=pT^in(`H6fZj_x|U{KkhR<^&XF2sYt76RWmC(P}(#wXedG*1;R2g^BDYm#H&~8 z3sM{+ky{5aBoAG@jrUBl5o}AK)e}gy1(DLms9vW+?^K_+XwKH3KN&yrH}y>4O5l0B zRZ>qOV_s83TzQYVyn2+>u{*xLJEY;f4^ibYuSFoIk+851%q#Lskev^0YNKsXm+}Pz zsJWwj8|HQOXXgS~d}0vlC+Xo9re^`To`=1*=(}`D43J8Z9BgFa7HBIUix!Us8e7w^ zN!GkZt;nqbN3X7p8A-qr3kOgP(U5VEe$?l80lu8YX6bp;R6|;3O)3yv%Ql1bVP!m# zShH`ulJt{TMD zPBqBjF>a07DaV}aE$GL_IYD z&K|FvJ(B**GJjtGpTGarG7P_2m*h9E{j(pfzi9iv*-o0@to!Hf`qzH`Ip#lvFdp8Su^Bt!rR5rCz4 zRQ1AUVuAO^CPS&745rx!We8_B1wOD&MACe8Tz-G)yLTe0mWOsDQ0k7rfjZ;!l0K@n zIRCs=%8%ED*O{M7xklNmZ|bpDen_pTco2|KVYPiezr+PZ8I`QK>Unhsax4^{rkXhL z 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

    eYF#G{K|qh0iEeeo;m2?a?W>(xpaTPZMDGr@PmZ z@w(q{-Yu`zN|jpWp=mR#tI^EQTea~k26QTz*Uc6^Rn;|CJ}FiX0$m#=5!-ci;%k>W z#OdysTvIA{e1v_W_w9w=hZ36YG7;7aV{ra#{ZschUsvx(7l^Z$Jn;54i>NH2g!2alw2raci)G>ZjcdCX21l+O4>3QHyh>5$jj@Z?TAYw5 z9y2h-@hjH~q}P+ohDYk<)yxa74{lQaO-D_aIQRo<9O2EnGQZkqakTIw$P%_vl@Nw-v zoBmn}g zQ@Kxzp2n18JAOEa<{MJRjdA_FNTIO5cl4J}{y*EnT<8wSV`OtPvFH z_K8OX&3KL_4M53_Q;YvG?fqYNHe$N>$2k#y85Q_fXQS1BMFsTZw#oW@-uPUv`LXp= zt>n!;j}noME4MW_ZmY88Gix(b`XVp}vRWxq9C5xlEny=_&gy z-BgmYO~L>Etx@RH=gtBg2}5+9S0A3&>0S(3JANM06tq`XS@sTR>dQi2TG~zW_B`Ni zN*;l{P#IYQd%awhh7LIzN9MIU?mb)%qVsPD)8&vXn0=!@tz7hKx1e(9@*PW+h42~1 z<(W;XTxdnhpjzm% z@xGL|EWmM0+BM;D=ZsnkSzdRggXtUg%fm*x%dX8nr02rvLkA!qQkZP9`10KK!+o-BAyqB|Rf+8YU?*ch0nBI(0^p;%~bV49v! zKINEgEx06$*?4J5z9G6iT;SF2ZNd;-v_C}Vt$?6*DsTxf@omN6p>EI%P*}t!=}+?k zjLLH3H-=#FyO)tC3lL*-(!iy1`!}Yvusd$}7s9X;37Ds4%h%lE_N&jemPZ9=Q1`hP zPxY_qx<9Ag)cdwYpK=tqFYNybgec^-tf+K3W!(Ze^tf9l^yakpyyncr`yWdqI2 z?=@Y*IT{L(2m#(w8T6ZXo|OVQNH#XSR@wm~Ye%}@byzkVK2xGur=&%nE>%RI$Fagi z^9YpB5<=cC8IYK2x{xN62$OgRJ z5OVTV8Gy>A6!f4lLhkv}ys}?q2r~EfMyt+XKu!w!p)lgdm4Sf06m(kjdaKP~fFiG- z>nE-kb?ehW;)Z}dIV-1_=v ztI=QpX9_w(Z^=~M4?(}ts+fYlDU2x3Z!uK%ll*|p4MmzOY_!S_28i!xppn7|=fW1) z6F}bcZm6DY1U;ppqkeYG0ZU>&{uw^HXLz&SCh}JrRA!T zBmY_JTJ&Y%nb%o#989}(f#(!w-?pZ<$SeKss^Fv@GBh|B^{qflqK4EirK((0Sgw@F zUpr)ufeMVWl1xX%&kvY|K|e!q;7kLGqZf0(D9pSZZhk|@63AwEqs6K;8k7$5DTbN+ zIpKMP%nLc@NA0(ukPe`XyNk#-f=9hztPlV7nFgx^y06?~P_n?M^Q5xol9y)}0Nkf= zrxs9?X`CfC)MWkDy%qxZ-W&t&@VwH|m1KHH)pkxG+nZtaD!56h<`DbvdD5XAvXJJ_MVv`-`dT?Pq)=qzT-{7tNUQ6piqwvxCalE5^=@ets+U%{3_O996jkia^FxN{}_!HIbH@Jpg!3UB~HP#1!9P z1W1QsQ)03DWSC;fe%*~ku!$*JG{RlhI|q@H}gE~g-1;{k9m37aB-DOOxB z;vLXML1#V+1h!q$^rvr$!0Jw6_#T?NmcCRU8J7wfUfi9L%o0j-Hqr|5qYFu zX}|7|8vp@a4ZsG^YLUa_n64rXC(S4XzFxFDpsUCauzdvFxrQn3TQ4e10*mqjP|;X@ zW{ijmBf$0nup|+ypZ*^FoDWbJi=8A#>NWK17E|Vdk$eCa9iRgnrg(e3=y*VPPXJ)6 z2^5XMrqE-GmDh_n26Pws0W9LHMQ0;?%b0gif3A-ASbeBp_!3SZ>PIn5`wGUmnFwAz zx{x)Xi(4AyGvftFf5b9_HNG+*>IK0Vf9m3{Ypp=o z57?Ar{*y7q$*M`alOdg_!D?e7x*{^JE@1%D_$>J0?tst zA!@+ENNfrxM#K=Q=hLtIg9qSs{s;klTyyOoAHRs}KmYm$iQtP@4)xOeb%P!QMbohQ z^q69Oq#kTQ_j=4}@pGi!J}*!-1)IWxDfUF_>F@$~$dP(O{kr1(0Iv+}q%Bg8W;VrL}SVt%5Vw)&7 z5(8R8exWgFbSNU({o2{HcU>2RVJ8ImQAyCb3bqwT2r{qJUPli>&;6zVXZV8zp!rnY z4-Oz;1!lUh&U%X5Xs z`1r3v4gYEsruffLgSCyNr6osCzSV=iyX~qP%~XzaTy$ZHFZW}63CjtDFaU4u%G(!6fQNs|CTME@`)tDHzbg@5`2Al0GMjMxd+^WM1fxg9YyvTx zK+Gl(vkAm(0x_FF%q9@C3B+syF`GclCJ?g;#B2gFn?TGa5VHyYeKw)=H)Hre>=HKh z`;`BCmoNs+KLE#n-X%=o_iz5^UBWJz{(FS;H1luDOTfP``IiW%;rHO55e~Zv5#bOK z4iVuH5e^aI5D^X$;SdoH5#bOK4iVuH5e^aI5D^X$;Sdqde~)lnelv#uLxhv@`;`AX z!WsX4;JD{zrp{e{A6YkH!4)|{n&MVVDXv|+C9RJ^g ze?~YhB}}bA;3R|6JogLpZKc{~qCd$od)aL7adU<{A`{U)#S zzc+b3_Zju#=*!|s7pa-6q2asT#O(1)ZqzFxcBB3>Z|3DB=W^Pp>YMU>j(s$7x4#?p zZJ((W-Ot&XJeOPXObxg`Vf!QTJmPcY8emJPsFvFtc8+TSAV$w|-xbV9(ehT&D4cKU z=xg|{n`6&qcsq&Xr?PLrX}tL~wPKlegQ+Cc&eo^u`J9Q$TKTGxqs6xumG4r24rl(% zsHTclGm2sjdpt@VS4kr(&#CWqTbOo8f#nz#x%Wi* zxW<9A40N~y^2E`!-b<N5*=n%6-zMO~1fA1EV8uvSRw>Xo&029wAlBZU12 z)+Nr)r7XK3)#02dxmRgZtIv9)0xme(Fa@|@m0|+Ttr^hQ=Majn0fw_LZ8GF^u$Ac@ zUT&)a3Z3`|T=L_zt>dy&OFrTwFF)}~p5PZlNbKrN@7ReWoYcI76HWUMe@s8w$+*Zm zk!1|MD_BHVKC@#izrvgQ9oC^1)Yvb_<+<|uC%)uUA%t36;mWs-r%xw4K6z1xsw1rN zxt}Hglxm1eJ4oxNJku$#otMhsgNkrDp^pK%u7jdsBh@3UWgmf|?kBVT=H-^v0|4dP zifZ8da8m4>@%4)hZ+?^)i$|>qI?}dDI&1IEcRbK=q`=1QIs{RNRd>(jr%$CfvZCwG z62nwGu3-AvEni-<5r0${PhaPsSb56Wt&p@(U<&BkHum^KuCo_}7c$E}G_;T23y|B=Vec|<*5); zZg`EK#TH>)!3fo}eCFu}{FQH{F&m(S=ua1W9eu%A)1U0apb$g^j>VJeM=Q$gCx^c) z&o0^u0?RK`bAt-bWwKi@Cg@6?8q8Dm9(qab8jejkS`l<#iG*NeS7QW6-iX|ygJZ(V z;g+pfbGWPt2Q3_IU6)_BnLh@p-jZo5nJ6QG?WVS0l5th~XYnbS+t zZsV#>|LB0-0^8~Jz>$v%Bk5*KijIq2esg;?aMY81wS|G^ClC)bhPCWKl;8084D&zt zQ|12Mc=eBFu4|8MESInSeKXg%2@;Yx7mYrOs6S?{4^)5EdNuHO>(wx-f3{wo^E1-+ zVQ|;vXXu;Uloei{s4LPonknK(`VVP8KFU*-Ptw-*_MkYGt zk)mF#&BsF{!FR^^`v`mn1olx5HwDLFM-!kZ#IBMMLt40fdk$5#n^T{G>?_bMr*k*O-51v=O8uNd)4}xNi+2n<^gPo$ z?cwPi;>|59pE^?y#w=vp^rmS2W=;j%9?p^Z)>JZ;72ad>zO_dwW`y`agYL7CS9?8` z0ElHWk~9W)*lXB!($T9` z4Q!cK6|LQo_2X+WbSk83gYp3I_=Y75ULUSEln95rVKZ$TCsAUnFzEhH+#wVW>O`A* ze&w1T1yGd^Uy7V?Fk2R9JaG$LRyZ}T7RsJ;CU0nSy(Xpr2*@2pH>1-p90Bi9<+9xG z=AqWf251TnYjme{;Lqj?Iu)uWNr5g9Dz0e`(!TxJNF3An%4Z+BD(fk!)BTSMzE%Q9 z{(vQb-G;ptmc^@LRNs*snLA(Ua1HGf(;BLOdcLRRWeGa26%G>;bqx!f84j1f=hx0I zxc_d?RBZW8g|1cC2cd&bM%I;7G=00s;MhU4J{P#6Zlqtu(2UTx2Cs3idD5s@AxGbS zQWoG!UGz;iOn&5Jmq~?sm0A@Yhv*va+qs`C616eE5`AHsyfWH|Av zo3lsO8esop@Zs6xw=2boJO`cM9vQLqVC^!Pkj#5lRW>n#3-|RH>mLInaT`053D}Bo zRH^|TJjzu!q20HYguGEF4wY6}ErZ;!c-`@9yG-NZV)FrR`bTBNs8;j}g~k%Ypt*uN zUidu(s#(b}UD^1UCf)=qmR5M>WLk`_ltZp`e1`)Z6MG&M3rDh+D zMHdLvCA7-{Dmopx@;dGQ-r0nvYk`q1#vyC>WZkeUZ_NnhpDx`5sD~Y?9o-w~4-$X1 zMUxGB-RPoXe#e`3p~jxEWwwv3&1&#$cD(1RUnl?c`ACe>s20i?1b&LSI5fI%gMXZe z0wrr)=mo^hllo-sMSyc)fjwXN$^2F>0dv<$VOsP#=GP$dqoiC8-53?m3Ac4?ldUzB zV1N4eYn|oQnQs1WwNHE%3cvMqP&YK>S&Y{%4V-W#ob`W_W>tEAey7ZF|?QB9Gv%{Az9d}AhsWL#`0L!@)~2I6LXABC#B22tSYvF<`vZ!cV)Ju(MZ1nxn%c0pSc)b z5q2O`khx3c4myDCZ;w9aNx_5?^D@U6=hQGLXez_hSGz&9vS=5l#KF@=8 zmqmMR=!2=BtZ#NM`wW{lW)wu^5$x1&%zJ*7Ms8 zRs9UR!Sz*acSuMHL;pc=@M|9>WU% zy`Ox_`!{~F=l6U3%ZT~n@4-L&N##tUpCtN8qMs!CNur-5`bnanB>G9BpCtN8qMs!C zNur-5`bnanB>Kt!-cMcz|G^mQ{=J|4`rA)#yBer5M`}5$hNnGDY`tkKwfnW4Y$Gp} zwBSZR?KO(WU$4^ImIwD=m9e$xWJ@eBBYkENb2GGNhJ;Q_B#oDslz9m~lG8Nb((~DT z4YVxu>TD%Y?ycQzA(#RL8+}LNifiMsu9paC!OHWq%Ak+Ti^#dJ6j=*bVq#;i4!jk= zdbc6t`KPV#n(l#3ul(Y9H{Y+e`>7=`MQ5X;p}nHJF456Hm>EjMvR|tO`l(rqyStpa zKS-)FA9oL1pY$FmmriOf02WMXx&R*(~WVJgRy0%Sx&uDQ;rMZrn5LZK-qbetnZqN8z(C zU1h;tZ7TE(@FtGj-P?zaTFO6dpV%fGdvnza`u8g&yzkA7J!G@5EJRjjK7EogrD^qf z=~At{+>=UwD+i5tA8i~>0F(M6)BLbE_ctAQ>m3I{6;0puCmh-Yz3c5xJhkhtXAaOx z`^Y$y085QmW)cA9A}@>HAU_KpIwsIME2QnejRFl6j3`HL?s0?)Ie#XT(H(bQ`tj}8 z!AI>uzm{4~ zd*xlfsw3VLO`9ZehkvY6GycAyhKKfdom<-rz5MruUsq}TbS%6P5WZZr5{j)3<;$m# zrlN`dexc2Y$LP7dYGrO_rfx@YKr>zszraiC=yvM3uvRt?c_7x1IV9uc76q zl*%4upEScQe<7&i_SwGRtUk;={(1l9WhsrPK2105%a?a0I`Wf4y?R19O%C3YCl9D- zk27T6jY>NXu&8lPfW*|>pv9tdjH7KpGg*62TXIXkf{Ym%-?)oUJzO^`^AvX|nzb1{ zMh}B^O;WnnCFn!8=|@lBmU_=vDaQ`gNJyk^HtxzHYGlXPo@*tD7jyL}fe5PC!*m(K zs>uUgtnYeN`tQzdkJ;t*3FRx6oF1{6O<0@ejjr>ii*dfJp^MyubJicbWt2KEnb_(z z)&IEXDE|10c!{G074*Qh!|Td}CX(UH>tdrlB$7}1pTHWz)Y z06BX7=FJ-vYD{E&YGUdf4k2LS3hydBx89!~eBOLm9e6MQ`K$nd%*CNF3b;Bp4C=(PG=t9Qtx6LW`>br-8oS#)hQs&AMyH+dCO1bNfGj9o32XULe1YxC#nQEjl|p1#)%Yvw z7T71ImMP1dEw`3weQUJ@_7gnuElO!$ufVjHmqi=T6II+&BNbbo-674DdVR;Nd^3<< zkAko5@aWxv&P<-$K%IIE1J|%f2osbmykMqia<>POf77iz)wi{&zHiy8LZs?j>wQDr zSl8|St%udEB0CyxKa=g<-hU_6!4%U}{DNN4@SE&9V)i=7jq$PC_I0#iTk~fIRD{XL zfvv>j3E^vUvlYtZFxRmh{xk-~K=wm+AM8qIaMo7k;~_2}>s3m78OMC!>HUDyE~K^_ zt|X_*;y|>q-+(%837o$vn(C`qD*u`#+WQQ}vf4Ka2+aYvyekD{d}_=07gv~5B6q=j zXO5RB4;Dv`bkVVUEYC{WFGu1eIyUCA6W$ip@wPcrF5Wp-T75C%cTo5h=a!(C=!X1q zOLj0Eo){5K_nzTtWf)TmY1KyJgGQZ>Gq`pkj}rDG*rNSsGiLQDMF~{&zQPx{_maN- zCBnAr<3O=nzf&9J%bscGaP^gQsA)P4E9fA+043x#_zrCjx`btLYp z!K$wvTVY3C*42*jGqhy)=O9THA0rd|@X`MCE0D{m)ADBRV_$=@>&FCqipT;yPC#K= zn6%!%EVQ=X;+@tM=TD2k4Dzyu*Y~o`vZz>J+qb8;URhS~sQ^)x9jdgn`O{=?IMa{f zk&L}?7v_rrH}8`;0@nPyCWGP4PINPpUH+U8K}1i+e9Q5=eO+;Fw9ESgE#Rm#rT39SAUZ>O!lgFX!$Z`E7U&xO=@Me# zT=5VmjzF*Da%H)d>Tu>w@Z*PvXI*g*Ee&hMtMc3ET2vQll<;lp0`;)()z{UM3)vmlw##JOs z2QES!Z@+Ski~*_9FWdn^vRllni4wV0h1%?C6}oUSx)0nRdR?b(aVKtU#-EG_HF1lY zwV%(|&e3g%YoLNrouJ+$Z>bqIg@VzBDp;y)V~nOmwu9$YgV^OG@Ete))p2-E;36A* z==lUo)i-R5%%%_9cS1beuVOjS!tW!7|4l&9gm`%mG)!0TO5pYijjz_NnRzXyh#PIZ zMPzG)J(eTdAs4y)mJmUTksU@Fu>eHa(5iR4qE_x&%Ej`Ky4hAVS)3!VEZ0y z@@VaCf*9By=bB@m^YQ7)*il*jTf|Dh)WF2PFL=K}^WBSQJqH;94VFD09DKj9u4zZX zF3*UsV2mK}7{+^h-b`!BZQ#CKg1SH(GzQp2g?8jL67F4_$F%<3eNM4DlYQDcR6nZH z-Ge7k2tHyE@czA4{blpJe=UK3*ZgkG!@jEU$1@+E@y*vtYT-Svzh9$^`KJ>V)+GOg zWG0EP{*x0u==}Fiv$m^|3esyLO>`?d=i zP3(}J31>gI-|ShED>Xbhrp)|KS@jL@p_*r4CwjpXjwCmD+vc?l6bl5W-s||zN6y}7 zav0e4>E4>k_O$)-)!sYC@}x>s13t!ly{2-;1{co>gLU`^hPQtCD~&!DU0x8Gemha- zm2L6#6+Q8 zSzm%ZW?HxW8QZQbyK5Gpw9BWy&)#qByx-Pq(l}gVPJxh~j_W_R0}0jlygJ%-&z2hW z_i21Vu`^y}y9znkty~^C6=@EU|Ae>+T!^Tc_+c>cIC#Ipz;RD+npM32wl2l_^@bYn z`TK!QT-*TX)+QRA_H*{~%Z}-@KAzHORb6=Uw3KIr?Apb{Tfy=pSvKXJ@s<142BF+F z<+6v8+!D*yH_VQeC9a#1y;*p}HhVFBsGa736h6OP&Oy(2n#T>5{Xkdw^3-0sKQfX5 zWB7h#v_m=YL-0PmXI%LF>8}O&vk}P#vyhhu=b|!g&*S#{%Di8l^2^FF;Jl_2Xv>EE z;ij^tqd_~%H@%DN*gYky=Q4z3tlsiHC}cjiYRReVaGPfUPj&UtU#7h$<@W7jg?g9q zRfSxr)81S(=co}**_!>Z`)s9dTE0JG7TRfS$oQiJE<~+25J_pt&{Rzc$?XJeoGQBH z)debfy)$~uTW@#SmHI0!#os| zSM5qq@milYEU7bmWq!`|zx(y}yVy_LlY5@j4*N7IOe#0gbuyouPXys{Sp)ArykOFZ zyY|RMz{FJ`@q89Jez{krSgq@8^{h};3#o zx^>c@A-l*<<9voN4VnJgOuxAZk3EnWcg!jNbg$&|{>)Fw2~*oileO*g=Ue3!2j*NQ zMTQ%D3Qs^&YS2j)T@+*M3n^EJ^SUJ%cWOaZ-{kMP;ywup$t5jYKV?r(4|OLi`?qhd z{1%Sl|ExUO8<(OZA-U95m0KW(=a066BwT*Kpe4$1%`%vj>i3UjE6X63haRq-e@s8X zzx0ide)~rEfB8oJQTu=R#)YKRuTG-;Q^Hb@d!9T>oTumQ@+gW(+7ApWD^ zwT-<5>Ku2bDbd7_j{d1W_GRO_jzp=mz5V%`9{^Sc@;N^nf(Pcpj?CJ0p$N1e&_b~l zfWOYh&PKpkv}$oiII2RGd?}Rh-jYtYUBv_KKwKPzg=b=$?4H&lfq~=RMj*?JWg}6c zOlj~g2-rn(pwx-+&CfhP;}-Xe0qP zWG%dUo_wVuVgspiYSkU1w#Xf2Rj1v)S9}8>9y%F9qd#N`3_q~IOIWJ)g zP?b;pY;Kmyr3F#pOVg4LwDt=*@qrskF+Xz^AhfZ2irps{z2=w4e?_ib9Fjg@Un_J| zwNuFDuIpLJ0NKOI-w)xUGQV_UhumvR{Y|PNZ@K8hO>;|JJzEM_iYs0P$q~wHC7(f? ze<>MBfPNV=tm!&+pk#(#iS&ZR=Sb`KK~zfD`(SZ~2~XF-Y|Qix+_%^&IIYR+-=xdT`_W^o{%w$Z6fWw(y|Cx9op9@QEzboCc7??Y_6r#oeQryI zISO&B;J1(@jSi)EIINmEj>Ie~b)y@>77nARXZX!|bu?Ij(_zf~OUE7A0VhR;+l$wf z>{!Wtyzlh*3N?tR`{PBPYbYQY7SrR$q`rQT>@W-;iO?6JgOLA}wUDd&1+Cd^~$ zOZL4e_zDELq@QM6z}P1S&`muO+Q1f9qw=x=?vVUI$)5}eI1;CdF<%DbT7y0CU$OyF z=ztCEHo*&@(&)^v4?Qdzw9-b}`r3S9TSAGlcuzS6=VZ%*t(yJJuX^y1Y~%!73imP{ za>F0_NrOf$^v75a=exMOO1|n&He7X5+ z2u_;s%-w6#l_5T{ITVO{4H1#JPq-nd3XuH6RA&0x@1@D;uSzZdwcu&}QEK_h($bP6 zBIC`qvo~LRnCfNQ1!X3&Y83&-5pOa%2HYRJm|UB>SB0XlzZ;|N#NRXFh9bD3W*$Ax z>guTMlIFZkJ}*t8EBzTye-HjyHg--BWg}5G5@jP% zHWFncQ8p4~BT+UIWg}5G5@jP%HWFncQ8p4~BT+W~_p*^?@(;%Ff7s&(@cWeidygN# z-$(xEJ$?%RpKJVQJ$@#T{~qDodiXa8hi2+;5Dw4p!9OFMcN;{6Lqs@4ghNC)M1(^` zI7Ea)L^wo*Lqs@4ghNC)M1(^`I7Ea)L^%IF!jazkgE6F$k&w`7+4>n+IeFQtJGokU z+VT7jfku)2vsK3QubB8}*GSy7VsonPHPthzv{j8iUw_`X8p@dXB}JgdruiDpyBZte zJbvpRS8DF^*?oD_f9bZhZhfYzN^*@&EL5)&)Si0$66?Q&J|78agSEi2Ve%UZ<1z6y ziB0QC%IrI(6EQnq^D^19*KeH5wp+z}gyVK??qJHS=}L_|UTsRrOKD{H*mztY5f)6+ z_?9)GU&z0DKiBxdack7xuAqnLm-qb*X;da`TJrbDl5eWti4$;o#SkgmLHW3NlN|L8 zm~B28*LLYfR>*Na>*Drfjk&QTySsUebZ4ij$1J!W`yWyDIZV#ox@`gNYP?0Ms<~a; z%CSY&v*8BEJdqeDo?f@4iR`u8QfUD#h4K9b#n9-})X^3g-RReKws%efOJknBw}Vdt z(=-I^MQ&^cFy6^f9bUWPKaqAOYQ4r;dBwH+AW2B!OH#9D*%k0%cHaU_ra?F_i(Aa*)H>A4ms^i=JRUtJM{N>q#W4{=*X`B~kvy|wIBg_-x&kPR{MmV|wq zD@S)j6gC+VF5+2Hm{=b+cxgsfiqP|b1L&`?Y5)M4Bq}Prc3;XzV^&RxHmX%Bx1;<1 zsf)HkLAa6RGj5;i*soq){h!1*ujF*ce>v=#i&bQVpHUggjY^%=~Syrxy1k149*xKKVuc{(t?SnGdAGCWKzj&u!UI4Yd#5>ivmztON{7wJhhY}joo<1Z zKr`;f8p>XIwgt+OTTNucYYbld16NNVt<_Yg@yZu(CCuC}ro!3FTqij?)M*H{QncIm z{t0;zaa7=GsQhxik!==kDOz>hMqBkVkMUqCgS5Q}Al%b_D;EJ2)?!#rsOIgyJIaAcTUcD4B_9|*1mjhkdUOA`#0P#Kiqoh2$EK!(%K85zRpUQYmrJ~Uv~LFp&RvAnx_gsJn8V1N-YBxmHviy|1=1o}OX#0k z$hpW>E!?_hqc9QOM#EPReF0&Mv%Z|(u1re6U&5P?qH!4 zMe=D8XG*1?f!BSPj!^AbKU4MB9q0u3+_N{+oujaHZ@MiXe=4BG#hZti-4pAkI5!2f z#oQFlkzt{+4Q&GW#Y<{0E=V;UqAzVO*9{n98{b}Y#@N14`ST(Dk?je!1fJouR57EeNT|smNRSuf%D(~d8U&pS6J9*SXDMSUgOO0?K~P5uAykBr z^9c)6$GDPhKkyMcP<#rZtpGctjzP!|f_hU3Co$`ghl3#c z6vBxf{^;re2qr@4iC%}ywq_7U^zie}?=hp3>_--akh~2@$K62lwgPPWt#0f+*r8gZ zg_*%FDgB2!a*JDoWFxz&WHT~&O5Z_>V`F>Au?Fd-vfwqxyGtaMTQ6!^mOxWW4rI`p z2~r?)B*)6#t2^FPdcg%@TESihd4%J}U`)Q85o`QtdRi9-=(s?gy_|qQZsgizofjUS znV6Ge*w}Rr0gm8L6;@$EKGv)9M{Rk}$y=bki(Poo1>EInRzzrq+x;@_Jtfq41hHBU#~nHu!y7SYcbZs?}%eci`FZZctI>r@H;;yFE?^w z&u6vp4t$tWZ=@mg17z+AelQ#Rf)Z1jyk1$D3=!o8Nx#ER$srA+)+;~vTLkIg9qwUD z&E?KYyVfhO3|OdrfZW%{KTgG_-ocdetyiA)Tl^3L*=pb)Cu67VkcQys)6x$Id6-fv zMvzwocFKkkR3N!pNgs7uTB(XnWxw8Fv z5U4;K??8fj8ShNa)ywY+b1=lOvZh*Yvu~W)O zL#=*`96r$01AK{Ux5b+ekTVN}#pydN3&LWSXSFf{Ex8PgTfx!3I8eIV0yOj~&K_R#oS23ld0~RbFAcI1n7pi!N1M*|T zruE9X0gD$OASNQKl_difQ^}BvLLgf?RnUgWYUShp|Bt=%j%s3C8#hu!x`^}=8-i33 zkxmXGpdw&HkQRyvNDI9al&UBwDkxP!MWqC#*H8qcMnrlE5FkK+gc3sfZ=EA|efOU4 zoO6F?-MhZOX4YbbnLXKiX2@bso@d_og+!XuA|{)K+$QzAmH;V!)^ zjyh;Q2hTI44$7Y(7go%{tveyQGB80Cx?DW6rWTfpPk3tp$^?75kv3>XU?*E|1QXtn}CKe_pCMhN+CSHAScQ3~P zcOP$qK))cDOW*#=51-il3qP#C+xUAw{FY@e(;g-!rpx=8nAlBRLa)1fxp@BLTbsfD zUvF2{MnY}5cz4+Gf`bReE*iM3b@uOHNEEyS(G+?vc;_Hbo8PUq!wQ%Qe?G@#tK>_` z@uf#hU%$4Jz2-Le;%F2SL!i)dU{gp85(CE&bhz6YX+fmb`-|rY9?Axk)F+A(=X>GD z{a-=*^O@Z!pYqF&elQb+-@E7IWq%f1Z^lYZf;6nzB0)Wo9o+IoxhYZHTi;le!x;t-)uh7Tj`BTW51ScIBi<(miZMP$JBUB zH1Vu^(QxorIhfQ`;tzA37aY>a0>BRgei-n>fFB0@FyMy)KMeR`zz+j{81Tb@9|rs| z;D-S}{9o|H5xVny{JwjPqw-Du0}Dh~sB} z$96Lg`Cj_rBGIva?TR^@OPAT@_7?*SLSa?yS>Hb>_$VeV`&|-Mi4Qt+=X!b_{zhy@ z!GXi}i~9vRB?q9XQX*s?_#yoSWw)QTw_FxZ|hMqo_h+0QXtz(Ou`<~x|ste_{ocV$ohg_V;6&?&YQzu z)qPyb)OMd_iGf{+G8t+7uJhv;d0N?_)k;~m;=*H{|n@cV z*HbY0nPFppJK{V!Tuu~5IXXsS_R2KFQq?X*?Yx;wAfvXfDfnv(K}hZm#V?mNSD?Te`2u4;tA>{2p7$6ZM(s4(g! zdGsW%pZ8NF8~T254R~>9Z)eJB$mu{|onGNwU1SK#ru?u`<6=YaCRaBpcnuxWmZ}_I zCpsMAyUfuZ*!Z#Mp|OkJM@|u(-nq7;0s4e=SuC31U zW4u##J{J2#a%)3rKo!gm4kO=$?vsRp3*R=D`@&;eXH0uun zOVX0fB;VM51_zyQ^e35Annxt$)TDbSej`dlx}HSXZo(hW$&_eHnCGUH+dX86ya|Mr zJm0QG-DzCDgbtayYK<8mYYu4~ktf0<)yA=e)y$R<=<(uJ77toTqh;1>WQ6%R??CU3 zG0iW8gJ!NeOOdry)v(tq=C6;p2d@<?N!*{4Ci~LFWVs_(ww0OdS4!FI4Bx^P z#FL2jq(|j?NJH2L-4OP+BGUUKh=|HG?)V5^-5?E={>W7t%{?Wq(KwWAIVM8Pc~e1O zc}%`Gj95UDNpJcR)=-<3n>(w1dcoGBINCkB!3N@cim3UNX~##fzsaaxsyT6N5uX%L zw*|A?Mi;!HXXUoi+eHYN5u(8DBALj>_Qu@l%{PRF5u!j=E`v-IU<)cq|0)%BZYq69 z?IA{bpq&zda;N7JZnxL1_&g6AkRvRNp*>OGE?Js1yqt5@fh_kH>9>2lnJRitZI>au z(_fxnr)cCTp0zZIx_+4OZo$UqVuL7_V%ZD1b5AEKE<(ymfmqekvYn9|c1<+6W>M~? zPqF%>q$gvVb=A%kOP|zyvR-@4dR%*mw65p&Jk0;tmz^6Q(o=7or_$XYT1pdcTP^p# zG1|tZlRa;8BFwoO&!HmkRf4BOvQgjHuYwkaRM(z`8G-riv>vSn>K#?>siuEDq6JOD zLMSP;#^_D$Z3=T=2ZKgr<0t8uz;I78n@G!Q-wi&4m&kS1-yRY&tM2nkyTjE=S zJz@xp)fnZuas8Z4s{bfS&_5=p!rvyRL5ptQ=#%@#Bc$!O7>uFE=f6M3LsOS{rJ_fL zy2{h8F1NZ0VpMVrO`Uv#BmMe1iKmwT6-Fub|~$HRo@zpk}r zet2hcr(>jbPWMM?_7f~|Y^ z%KTvxBJ^(K?+t~q1YjtD2sR*s4TxX^BG`ZkHXwoxh+qRE*nkK&Ac75uU;`r9fCx4q zf(?jZ`_CiT1f_m5hVngsYA6c!{1&>C=4$rkp6n=pg_zR{Pjh{?N!t2P9$UuaA$u2MY3sS0-}d^)lsQBC zwvUMfJ2`qjn!gc{>3FnAc<9Ku)g${GA3teH`+J>4{m3sQe&2iS%${vWnHtxr!5TyR zm#B*yTqrE{&Vrx{x~B(zJK48U&5kFk4~6=uf2TEL(UrUXLB?mL#1req9x*zv^srGE zrbYxZEA;7uR`PSjr1~rsg}AoT{R=IgFG%;6dYZ34DVonFF{Ac0c2}PG9IneD@DDR4%4(wq3G(C?$fD)eiLj>(A6y&(FL^&`8azKs@}a!Fst}<_bT9o=OcRVCd4J`riTmzf^S>G2bw&2)C#3r?jwFftf z2@UcghHg_Fr7xt;Jq#bzr4Uw#a|i|rv-za(`&u4-y;um^`#cP~O6_$R9y;bXxDPtB z1B%v-8*h5sT-CHaj&177H;zJ68IcE!Dz`=zVvwF}Nvngiep{B>z4z8_P2yu%6eUpL zAmwDDlo-d*^9QZ%BsX=%_vsHySmhC9_L_MKt1LtSQmbTIW16ye%LM-fn2D+v^KByoK*KRCK=`)cU;IcG-YTGT_(kY>&%-SZ*bG=zVJ z0Tr=Y^Jk`MW^6}i4}|46oYDbBti=WsfY_pito}Lvk7yrbiVE2K2IHzJZ z#AaCz+V`ZY>4Z&kG|LBz>33K|hsbe-(uOb0LGU@kH~PzH^1L;VM13tw(bUM^Z3V^& zjqmCE`nt>SzV$GVp+V?E!^ZWn7WrVxBVvke7^mlWORaU&PB95xJUnsLAN!ILdnn1U-jcwL<0 zU!=|BJCdaWQ2JmKZVYBvccMDf|zZfcC= zgZ5yuKeAT2JbwE<|2?t6pR-77ys0L~X8Hiu)!{=MpIJSGc{^p2i8s5Go!!aS!F50f zO2P1!QVow+``$UDv5}C}lx!*RwdOEYZx&Y^sNBAJXy`3uj2BG|k5naZCeP7k?Pv6L ze<%x5E9lqCZaFig4Jl0zg7vI)?2|`g=mrgD_nwP(G?B*w9X^2-znPxtGZw8E@U*Gk zry%8X)8Y$VRp?2sgu@B~AAQjE7Ufk)DW+Gpbi!{xy0EZ4x?vREL>6<@^#z@^)9NDF z!Na0!b&rdp+3nzW2kfV#ydtY42raRS)A)yK4jB2D(=SqP-(wNZ-BSndR{`T5UnHNMQq1iwX5?S1gu6&nI)drh^$a1PeHx1xQaZMroUZ_U~ElhJq$y) zU2&jxUT@6)KFIpIIRA#;x+f3l5xSN!*_1Q)oVy-04e?b*Z#L3Apzqgs zpy$ejbzH8qXcXsAARF!GSCBqaoV+)BS*zON%-|w4{iS+3sZD)WXI$Olo_K<5G)pFE zlgx>Q2LwD`!WFX%P45^9Q-X73TSMq_c)zYdJpb)~G^hurdrp z@)TV5>(_^tz83K;OJ+-=ysZkZ_pC=$xRy0Lh1&!OEhwAT?z@4;MN7iQIfW?KIy%}! zI}l|w)6!Gn$|Duwx*DgSQSPoT=iYLLmGnrtL1dA8I*MSDI=5Z ztTNKMZ^+5qZ76)&G^R^_xedAXTFM#8QsC;tgaIQ-a*ujsR_8PO^_*rs9EPVrF_Kl-ZU!Zpp_~GU!mo>=B`>7WB({Njg+3U!Y ze$rN^GnAA?xF`CBy5jtnWwRz#S3o$EQka^%8O0&GA^C=0#-5& zPcs^T#F=CABQ-MUT~QhIF5lPw^e$Sy;UZ+qa!OEgr*OdV9p&lVD+H&{D}-shxS}Cj($=34I)*phh|Z&PJ3R5x`0@Z^4AIGE}F}r$kY7&VbU%NEn!F2lxJ+o z@@m}^kP8+I^seJO@)a-XU6o@KkhmNEy6f;f1m}+p+K<_M1gD`t%vS*urbL!6n1;W> z`N8(nEMybtUGh7H-{M?nA0i4C;b&PE;R;HPDOlA-_k+}NnhT>>? zSMDc~z?*nWzj`i0lh&H$%=rb^ap4KR=ig){;4lN&yb#sm(6ZPXCYfq6Oyt@^+M$$> zT^G+a_tjk?M;!(seSY0)X@^q&2B9Hfh(n-Ph^}jXrFwIL-y!b8OYk|P1ump5S$??p z`a{f;%Nl&FGLup$V6X@;!VRSS;G}=_ep7?s44#HhurI=YbZ%MR#|@*YceL=9k!&!* z^6$#-J^|D4&+M5CEd3BoR+z=uUBrVs1&GhM*NCgg42pae27!e~v}$4C_2?ejbM-WO zmyij};?#Zm#X5&I_z~yX(%eM)$4VBMVDjhLoj!6Qf|K55X9jvUj6O`RN(QCi!Ve7O zGOLr!@)}m3qoNDA^UOJ=@i@t`*4$SO1&4W7kRHvH;+?1?kLvG6yf+K49ox|p$gxbQ z4XNKDnwbm}ORDYdP<7vlfswc_oMLTb@T0cP4KQOW@Y=c~I!va-=jx`zsFkG?ggqf< z>w@*H%zOF47SuS>R^LwhYwgw0R6@s=-4x$Y{+it>CTazV5%~h80qd@pE8Sexv%;;G z2sgc@EcquPNtexY4l;>%Focu6dNbg=_j&&ZfnG4JKi8-yb^k)69ysyyUi1$&s@!hl z?=@<&CZJIPjS6T~K%)X070{@FMg=q~piu#h3TRY7qXHTg(5Qe$1vKh^u2E-p8N+|E zmJ65GPi*n;Yq=Qi?)mp?x%mCl7=N#p%h^kRfpC=m0^tnq4*7=&XLYyn_Xy{T34m|_ zgaaTP0O0@#2S7Lg!T}HtfN%hW10Wm#;Q$B+KsW%x0T9lAj&R=WGKT*m!s*-X^4}wz zeV2X$j=zs^)OO$b>ll9z;jr2NIl}pN>@N_`i`^mr5aE>WHvS&r9JB)v4uEg~gaaTP z0O0@#2S7Lg!T}HtfN%hW10Wm#;Q$B+KsW%x`OguK>n>yXFCv^LyIuZ!gwwsd=if&- zJO4Ds-$OWkL4S^LF3bD{!m+XcNn`#H;rQ=1{vP2BdjkjuKsW%x0T2#=Z~%k@ARGYU z00;*_H~_){5DtKF0E7b|901|`=LpBn=O<(E{PT)gklzZ3XfLLDz#gBEV0!QU-oc4> z`eX9Wjxk^1>r^4Pd9yA2EB4$QQLp1_w)Ukod$KFG1iXKtX@z!q9}6m;xPS|J{T%G( zsMOGUyL8kz>7=CE)A}=;4kqH|0enoH^XBy>yGNn%ze;SOc1vu@|GN@fcl%GD%-HLe zvzMv8Mlpdc=;vu^{b8N02(F)XwiI{kY`I^ya1m)*=kmLGOZc3TilLBi=e;D;ePW#V zXPITi-oB7^w~m(ePER$}H{|v+7E<-Z{h|oStJ?`e3CXSMI^l9g<#;HzeziTy1I0l_mbtLOX5ajMoMRglKnS`FU z;~9dQ%==cHWTXzn;q6f3(5}0d-=eOi=tJG^@>2r_E|xQ#WnyWf?bdZ1kt?Z^3R8_O z1EQpOE!XBGlu~p;@hwJk8T(W@n%Rul9~_oO#cCYSalRl&vd4w52d=9^XW#T;C8B2`X+)}zTBrORhw zR&^RIYvrTA9G*Za^-n>A;VRHjALD9RQ|KHeG~l#E5t`Z9@L^1EVQ>>BGw=z-<)pS`s9v$8xQH(sL|{v<~9qg6w?(p;oj8dM)ktS$b3KH ztnmyEkjTjcLJ(ye3)+vC&F2wExV^z&cAV3nwzaIbk$Bm4j3!RK7{=|KW|@O6M{XR1G6w0=^V)PO zp$%vUvQSktwYo@u3E z9*4}Vgb~Kp!UfZt~O!sNKQMe zsUhpZZcd>c^fshIz)$1QI9xbP>{!noTNG&1s}D_Qa*tarC};2qi!?a z4c8ul*i%+r*Wi9X?#v;y^SOhp_b{_WSFFE3bJ> zhxt@02a^TY4F^q2`(Iq$$?;am8V_exXv}#-;2AdfPByYe?ZYJ~kCSh2!XhFE)|G8g z)E(hrb(JdK_i@ANp1$l^x&?wIc&gZquTN*TB>G@SZumzjQXUgTU5VD^xnm`kMj(0 zkT^rNtCC|LNAb;vIm8$xQ9FgL5C_0u=YUKVM&ZCrg!cETJ+um(E3KsX*(R~@lTAO2 z^!z5i|IPIszaYsh(H=D8!Y6jJa-sw?adUBRdi=qoxgoH08NGJuB?+AN&Yt81I$d_I zZ22i`-P-4vHc}&Ad-iy}o}h}Z;8~fyWqJW_?^R~+z9qSVjkcvcN7Q*5%gLO!r>72* zZg<^;X!&^EucqJBocJI!JUqjn1?$M7?4>qux8TZW##V_mzhn2FvLVO zDq$uzuQ})Xv^NcYT%e2 z$};`fyx0*dPPKQMMZfN}Yv;4=a^G4qCU(gmDb_#^x3g653YZ;s`s9W@LM$ z_;BG?!&En+VJa!d{3ct*Y*dBkM`4{YM==Q}9Z)5zfi+0gX+lly;QBi@s{PxIa+TRx z%4D++Uj?4DELOok1x?14omMAB4t{8FmTuX$@G(n>qtW&{T~~={-knxn{n5jp|Cp+t z{x(&urkVU&aO>O$F&ymH02@ar*VtI=nFy6=b?oUQHxSka->s>pjxX2ANofkuep&HN%<9H!3)E3iJzKX{6Wfb=OG39v z?+e->x{#v1g~MA~pN4Vw?a9dW7nE!QhweE~|C*?ng0B}o6&TD%?x89FuCSK&(?1s( zP`SSl8OMVELS*RdHvV2@yh;E>1|Tv3kpYMdKx6jaD??w3u_6o{w%CTF(0;&Xy=mN-{oPSuIsAUJLDx_Tof@OR`?^& z$VRlrw#{?M`nJ44>yNbRto(q9gZnRCJ8ycC|G?XmSI&`BRgQHkymK>ksLl|Ics2;6tNGMER{OI*UeYabphO+BAJfTP|W>8WY?;u)KlFGsB?yz^BdD! zi_?Af&EarP`$_ekON?m`_Px1c2kYITQ1i#_5%|Go0e045eAFS4e&wB@Z7@nEBp5e+ z!htCf+Q)gBC2gyxf_ix-D#{7*zB zKXQpOgo3u;*$QQGDku9c9B{h+hzC90p7}*7S>p!(_(EcYv7+sv?F(}h7QgRiQ$mjs z!=31^M}9LM8>-l^gJPt13%`KZ5@lB#_bTl5iFv?Wooe2*`E{OCle34Ft;gdgsD*N_ z{mhWPof0^e3*tAow=@N_StPxwl(f#a(9o2vBfLTL%0jhglMIXeVUik@!x3L{W>cnx zDkWRnMXJ@s>rA@l3*88335@neHGTN0gj;v zw|2+5jYgafQ_7$Sq2649=omNYoXjBk`%hCmNhdDnK6v+es)i}5Ab$|&sEygOZ_(@X zw0Z!Vc-oQ8!S>@Q;Z&g7_O+vYPL|x;ybRWca|P(`xiroxuXK;bTgqw&Ao2_g86w5n z{-8b|o^fN@nU|5`-AiV;->9+=#16jAvm`8Dr|+d#Q4tAwChLn=V;iBTY1606iR$I< zBzv-K`-L9Y*OrqsEDQ@#C8<~5JrdU8M;@kc!E3fkoEPsB2e{1N$tX#-ApG3$RL3o~ zLoA+-Q7l;g?OUHEv}+(k zuba6`G_4O`y?M&uyvA9V`_E*rTf1FP6ndDEcgpD@f8L78&AiL0wB8qo@1J}1)2Pt^sq)E9}M}jhQ6VRa77@)agkAWac5sw?~LeP%TF>&N6;xq zFeH+%I`fIRt?!S!B};rA_8%(Z$C!S{C$IqVrmBX?cCndGT_~;5(XGSL@mOG+XHdCguCVRkBA6R$#4D$@sQZhmh&g zzV|4~m(v=a-6B?6^jZU(_6M{JXgJI9yr?@7r*xWU_bU`b1WpZH^aNkk7VYDmlc~wsNn8h&G>@#e=MZEwd*H&*y}mL9H_>Q7%CsWt{# z)uOWG$3J|*s>*b6PpzlF?q%4Ty+rxTJzo%F%;5wT1Q!2Y-59p+T3VHAd(AkeZKQ zR2^y50wF-;b z2!U=-M+Ex<^uZX@8FkF&LSh)tY=x32zB-soSSsGE62?!pB(S^(^X%PYRoFnHOJ7Pd~LEa_cE8EIWv)k8+!RMcs{$ zY7|4@E3h++Xc%`1c`&Io@@Z$9+#hM%M#kd&f#XcGPc3ya*vzc7( zQ)xt5smsl&|sBRSx7}Ba`w{kfd42HCAydb)Q*g-+Ha_ z>BIECJl?6Hrnv31SKZPWI&<}`s=&yxi!4Fw?+xj?7eS>8=?^BROSc~QyoBsq4@Q7}_C3|4!L9EY~dR!Zw!MgsKnW*&i=lt}4P<~3kb{l^$8+qRRJh99BnV8s3TtctAd%1WXX8Aea8tnh|D}dTas4W-o4m)0O@Sxa5 z1DCbV{{0Jyf_EUALeB;79OP;9yR~*$0W;yx=a_7jd?`7;^oZ%}*H*IE+~!^!jY47w z6j}~!3W-5t;244qcRM33h_rft@f^WJ*?^MzL{Z{=FZ{UwD`S;QWHR5lJe8`ZUi{C0IbFu>rdCM92JLvLA3>&e2+P3g;5CK+OLeLJi3 zmola%U$D;)SPJT!%_n**y-{iG*OCpVO{?89zry2~8gGdvo^>x84*n_!lbTBWVXpIn zLmF8C$VNam0a_|vTsp6#no% z*O@Pu*zk>K2AU_*4K6oY`ic|R_oehF3Wp@6EZ!qaC21UUI`ZzY zK#gpZmgkq-td|`>J+$HmpJ_@uQlx+Qh7((w0rKYUE5sWHUXeyPtJs^DdAmN0Z$y}S zMw9)Abq?tnaA{5FHIN_2-g?+^?7i~R*Y*Rl!t-xmus8VY`8|$1{l(Zls88@%` z*!B&vJ|~deE7B14PUFH67Vk?&M~se&#hh$9cR-pMX6K0Xp|+SO*`1rjwSxj?*&An) zNM8GWY23EeE}GmOCBHA(DJP z;1ps^9QTd8I41LbtBOSQovTdNmLDCL&Ns8V(H)W;=F>;2QCZxOM--y%WuX zKV~HEtZo|4veoIC>fA+ZuvHXy=<4Vn&A@XiehV*82zy04kQ5?|IPv1{=w;CLj^TXn z!I7j^jr*z^e5)x~=$#>kWm#6({15rTBKl>x(Gz32&rkTW)dH1@V(-B3;Pn@a^00EO zit#HsbaWsj&>BH#Wrz2xW^ZBPDaFbHD`F&38XWxIaGA)Yj>%Ifu#OW+j z2e=A1GLX^*KR?6&P3bjM{Ikzze<{5ZcBL1^CdE~vX=YMLz7-}A)EDz2)9)xuP$CZ1dlsuvpTP7sXbt;(>+7!YmgM!ebTob6hNEeZkw@Ne z+dE!ix2g4~UQ9XkWxNde>;c+R%`~18n$~)h+29*^mV9RC(YThC79-uFBEN0@&AJo9 za|;Cfg=_d4IzZUhouS&WY1c+Q;ao9s4%<*4qBZ^DLhE;$|A>2@^+fJ*#S{4E{q5aT0n?Z( zn)Uojs;Bi~9@50J&r$nkUp9ob_}oi51Zg6(j%e#KNoBaOn+#W-)|h0&Vnt@;!W_Sx z+6n4Thgz;3+DczgH!B-RBvl$0-#vPL3Eyy36n}z+-dJ6xA+YYOJlv{BxjJK>|I~4b z+Ex2hg(3QsbH?axWu^wBwn@VZoX0d}^%>+Hn#F7>+cRCdR}XxTSm{7TwLfYhR920! z`JD1jcwWo$n6Z7`BgCb0k3@u@JlOK zVW)-;oE*{V<j>(3&*c!47G!?o{yHRO5qBu!l!{?ORy|=4R^NEKb_C~5Y8-{}QsL10h z9)VJux*1S5UhO7K=c60jmM-{E97#1-ozO2SfyXNDlY`;eR9yyWKBD*28ukjV&5 z=IGANQ1$j}Raw!Ny$iVfs(}#jJs#t{hL<<^b^0tp=vCA#x3cEO9#0DuPP0LAR*wyG zlL0rS)x4m8y|-aM+$kLK?O%go*sz`QwKLW3Ya&(|$|@U`g&Ov5i3OR90WSM(E5?Pq z?Qh1=udo$P+f{MSm_9EWJ|o6!(Aev5#m9X~?C#E4)ka*MgsZL-lpiUanKt=l=Y)V2 z4r<|k6jlXS(NShdjtseI*y4ZidshVCO}TlB-f=xAxTl-^I?`7jHJoo_g}b4Sr;#W6 zlB{y)<#X8Ig{)JZ2ll6I`_V3zK<OC6G>nyf64GL4L?%jw}dIutlU|EoV2+ z{!c?ql=K>VO_cO7{0j{aDTJ5~bs9v3 zvKC$=BT=TyMF6?$;%%Lht?NOx6>m#n%}1=pAoQu{xL@s85nnf|?sKCe3`fS1r_>Y& zYOY7nFXZ}6UNBxKX544P&4gx%sdDjZq_Gyf+YHBc%bz)-C;w=@dUOSz)q*Qt5%cVa zHFl=F$PJ)RO{rNy-Z)oV+rs6@>{di>2EE2y&Gu-ec?n&l^4rC`ZR-qH$JjpP>5`ul z*8hP8V{Q6#3x+rR3k#OMdyIc*!Qi`%zqeolh@U40STKFN4}(l?S6u5S&$mC-^m{Lf z!l)b+gb{r%jTvf+zk263sx2!aaJq=YJ^UMf|Mdh>n7)2<{QGxrEHt)tu1|VQ{m7n6 z(8=DT7#hCz%Y13)s?{-^kgMovuBnXIM~LTsQBBppmByJ-LZC9u$27*Ck|60*Oi(wiRHdT_VQzG zll8%8+do*Ic|R{DIdAyD?9%Yra2Z6r=hdg{D!iQ9x9s97TQ?i5pWNYvNgb3R)An0O z`q8YPexwx+osG(TJpAo*LI2}3Z&K~5**Ag;8vzRjSTMkX0Tv9fV1NY!EEr(H01F0K zFu;NV77VapfCc++Sg_l>jN!jn{^9X%m;b)}L)Y$}f4}?#@t?-{d*vUX1Al>V{;K?g zb<Z@2OH2xsUUfN+4UNkG;lAZrqkH3`U?1Y}JDvL*pplYp#AK-MH6YZ8z( z3CNlRWK9CHCjIAGlVU|2ZkMw_#t1vu&(NA@y<&47@gN`xRZvXq+S5WWA3(NEtHe7TR>t?;% zoa4XAWV$}fAN|-;Go4j;w9mgM%VTzASiLdSIDhBmwHYh(-r6wGXN@)*pI%SicatEa z%BqmdEVUKl1aMu7e^YBkbwb5@Gnw{wD=XbqSY@H`G|phgJlrCxEt52Br=OL}_M+k= zJfcU1x$tJnwgsj5N3oyRi4woHoEODCOhhT%wP6Z{KzrBWnYP%a8?wi<{xkRK??11_ zuQ-d_#3fWeAi&Sa)6v!6or~$`qQJz&w9oPX|A%+rXO9g`OicTCdpzeD;ArIO;}~%J z*WP|zN_Ss>UD$Zoc>b{(J&acR=XEC0g@0ZD-Tq7mR!jb6|9!-NUFTf**Y)4M|L=_F zynAN9UaSAb(Ej;y@iF}jyx+sb#ALDOe}4aU{l-77JN)CU|FNje{{?G1^B0dxweKF< zAF{To-NxUuwzG2pYXevtz}f)T2Cz1OwE?URU~K?v16Uit+5pxDur`3T0jv#RZT~rI zOW$P-zXn|Mn7D-AaP$mx`H6!5k)BZLH`W$T{MfQSDJ#Vj^IJ_*qk$$jF%eUie0PV_ zJP&sZoi0Ax%fwu|Pp)~l(|`ZK6lHhMzyH9L?EFtS^6MD?3-LWrLZ*ylE>dhq!t!72AJ)Ste1OubmQ{k30YNDaID+Fy(`WQhkaP4*+=`%#=W z#KUOmHDJam@?{78`tzrtrv|@4;71*zPs@-x(#x3WeB4e4M-l*!^(P*p6s@q!Vb4Vq(`4 z(Jz0|FE+?O`-OY}Bvh?uvqXfht$fj^Xj0vwbiI;iajzVMD$rH z$dsj?P|LQiaeK?#lrybyAMfJRu{tx?CwcIR{wMI|V8N#4B{lp!yXCawYi&pDiRIFr zom-iapQKV}*ziwjmX1f0x}g?Car~*2I=m>#dL*BqlNF%KpX`7CUbv?nFJw44Iv1f5 zUo5vZ^OebT#|UpzM4WfGoKD|3X9cT0DskeavTz9^L~l~kJR?ZZr`*j@x4@OBSFjS4 zeTGd*MS`7Aa^x<3c3r(ELs4*H+^bP^t*#PmJN42{$rGgG!!+9=IWTj09MTLI5cG|T zyLsN>sY&oRJ>|8NSvMVclTu{X)rPV6FUc5N`P|hv4{74ysh;rHDca1zqLIbl-?> zBMg_{#O%X<+A517EWc|Wjk(zhs^cf%Spvc-FC9=x9 zcx?Wukf*8ASy$e38ViHlsS$pTG734!dtD|PxnQ?PU#R9gZR{lxO_a^ymo)!4?5D9d z7H?D*^RS}q-QZ(qn)xzvTfitX{~12H=s-?lbNtiR8ER(P%nMEdjiN@W4w;Tb&;WKlY1cRD3%U6nby0RqDam;(s1x|<*|Yr$#*N(0umbT43tjYaXDVP zv!kQ;#(`!NZyyiYE{w&tfA?A^C3XaP-fcshVy9YdHDHys*qQfw;xk{T?(#2<;nWGv)gc?dV|J_M@c6e zjT40@K0559C}-Ux9l)4NKqb&JvCmtGX^?w?3qg?#?|^+@LeQ;MucKPk1{{5LX?DxK zahr9wLM0Wv!B>_9=4|pkS#$XoS;kl84I)pl%t77w(P3vy6FX$oTCe2Pqe6~_9r2zF zV;L@_%{?j&4lysU>P~H*MN2-n_EgFO#gN#pzBW}({=A=zd3gn&-xY~J+!}+gSfe&v zCSr}gu-vkTKH9!CvNq>t6`mzV^)``QUUjYqNev%l0&k=?V~Z5075norL@&b^pkbGe znGnn{exms46QoI~Kty>PyAZsC?QNiD3rR2i{bTv9sl+GHP8xEiOhEh_*q~KlD*MVa z#U7&lIv?HyV~8KNj*#NE(7snaFkM`V$fCsT>}W*{_Qavp8*{npQfzs<6OajBs}CLS z6D%ftw1<{jpL8Sy*C5{M-AuvCtfm@NmNt5X^EIjQ6ikQYYE-|mVCT&SB~jP-%$p4j zG*Dt#&}$fUQ?>|oHn;@SEBz#~pyo@H__N?GvABPQg-}1pXeMtUF{Nc@G z>siXZUHC0VzU=xF^N9KjKFLmc5s-iu-PJ(hVtl>pXC>j7e^d{#d&(8#}1$H z@mxrl{(-Dhs(YqH#o04;r&tR=dPfUCOp4Cl*wOhsATQ#(s$i}$EyG?tPHu+Y8j9>m zH~6frkc0CV*m~1Kinu(*3eMC*o)rO$J!1p=h4a9$KVZ*FBRj6^YN+e8m~EsrseG54 zE4-k?YAIfFkIVGoOq6lP6~t2aBfMILkiTQ(hmr`!_m@>7zT(9!r59%GtKZw4T1%fL zt!7<`r##nC65Z%KXO%Lk8ad~4!hR2*RTigDib7mI>Uv8DIVa|M$7j0gkY@zaJp1RW{99~cLo+OdXr73ki=ULFB4r0FP6Mf61AsF$0H`Y09s#= zUwKGs`76fsXvNhc*K;j$|d@vn$22OuO8FDj_BAqBiXP& zMe5X^8|721DV$t)uc=a>m`Bj(gCBMa<-p|SR~?>LQGDq_hAWzio^VicV)e$gH5_QQ z*e`a~XVg1R{7uKq1989VYjTBp_9L~TSf-E#t`K=CfF3 z<(25`AyIq1YB*p{)_eHEQn@JeInk1XCes(63PXv)4T`a73wJzmhPDp+Hf0Y#aKmks zt9#+ny`+-ypisn{QQosp>Om&K2q=S2ZM@O(6%B`X=ZDRHu!vUxWVH zMrMY7VjX`GWM`Gdcy$UVqatPE7l(e?z7oxst;5rD z3o9yTcVx`OZyzpFmP4{OKKZ~CzMy9SGbM0`yo7_PUhUi()LZ+go@-aEh}=lH{t_QQ zqhv{Gq7kvL(mrH=i8^nL>gw^9cJ;k2wbql4$mCNixi^!?rz7C*P@5!8&$0=oZ7BYp zjNKE5`r0u?{8N7dzNaNvfqs6@F+04uuH5~i8W#B8kKx*}%TxxN8)~L(&y)+AyL)B4t{yf~qormXLRVUCrY*GeXeSm*zV&D& zMYe=$5)0blPW=d-FvXQxJyt1-0aLwSt$dNFavWo4p~};dw&ZfN6jeckx{|$i>Q~Rt z)zw7mD2QK)Lpje0LnSML>%5-g}iUy%RzU5FmsAA%u`K_Wrxa z*=L=#)*fr@bxAIA^UadGIe*XhzE3Xv%S(IEtJUFyZlMSP8#~GaS$#(8cxxRZv?t#!E4HHv0BtJ5ZJ%afQ^2K#s=+5!tTG?RPA}*XtPPa-) zneC)CJjB~q`dxB4rxgL*=}QeB2j#i>unIe^04Ev6zdVl$NW_aij9pgAE@*ScOZ#-RSqlj zsfr0UTn)x+k~pW8 zHmA*`qYU*w>RkeBLdEJjT{3}uZcd$JOCVqOxHd)R^~# z`IXe1Cx7Op0PW^bSYnf=s{S&e4>0`la+%CK^6 zqVZgTsDY<~;0qBN)O9J(eC-Ila;|Ut9vbuo0qBwlosBTnG9W8*Fd~kIs^~DWQ0-v- zVP;~y7xwxqpk_OthN{jV{Pde?*Zg$oRlWhGbs!R1mZ)e9oLGY9TxFjf0~e5GtJnRY z+H4FKS+*dHUGA_BK#&Daq+?~zrR~#iV*|}T3O_`;r&SQ^N{v8zw-Tc7S1wmk&Z(Q= zao|tY@GZy)yR$685?$K%Sp@Gl9y;Qyl<^@ z`YR4mm`xALhPHVLe6uF3sRHqn3o`K5n% z6Mgs3;@@tft5W?nXx)foZ^W_SZv@ReCj0@fr{{tRG{@8JK4tP`wFSJfNJ0|jI&7wq z|ME&gHL{cJ1&F+OhESriEFU4*`Qlf!ji39NXP3rO#3jm3X%Bs1uqK z#}spkq~yiun%tAk^&R8aCgc_(LVBR_@TiAS3D-9jo?FT`>1%Zi!(7bp*2K(^EXnWi z`UN~I?KUM;g2PBD#qaxoIyup|?`5P(Yo4HtLoXrBhF%=(lLqcA(^6QL8AUk8@5=^9 z=lqLT3Qo8))HmYT8*%K7IQB*ydn1m$5y#$$V{gQ7XKFE zOo`nfoEwC5gK%yT&JDu3K{z)E=LX^2Ae z;opdGH2z%je?~Zwe~$du5l+K@yT`wVa4yaMF~Z@0_D@nc4<-Hy!V&nh__qk>oAM39 zxj{HL2Hwfnj;oKmc8-#O%aBdLJ{~qD|e)kt+U?Kd6 zHd0E$|5Re8pbWpwQV$A@5h&hQu=Ja_W$ix!_zGs&%Ip=lQ!f1SCDBEVIGnis<8zx= zd6why&-?@rKdNut-}zFYX9b+0tfbmkR8>*D!=^a%T+O`+266#*$R1c9S|4H#+H+v< z0l>Kmdc(&J0XmP5>a%#Sv(A(CtG+9oMrHDtmqPAU=d1pZ$zpvnHcZ~0xMDv3HnzBV zO1G^7Rk8njnyjP(@U3Ja;;L5*TJttN-nPw{bGXf$4+xe{_M6OjBn?*=o1V4aT^MO( z(cUce*Mhlc&Y_00Uw3R2fjdA)_~>yjI8u5DfpFBYJ*W0ZmWy6}C=hkOcL%X<+o^CklyojwOoD7;-vlnn$rHv1N-#8U`=%2!7eL2z_p_ol*vU%^D#P^J-@GE z%71ds_{mj8IXOFU`I!V)k%EnKl8^9aZj<{D#!$3GwWS|T1Di$IjcT&p~^kgYG zd11*zi}Z8F$ zmO%7kN(}2L=xMSrecv%<{yjzqa@;4;5l>V4LnjhL_p-Xpy$@ec7JSIFiAiNC%=FjG zR5s-1O)0zI|HfXSE2mUZf79;4gOh}d(^C#}b+gc?mDext(lAoqPSJ=sldI1wtTtg- zTjcyo#vJ`S_Rv5`^ph!@{2m39;)VD-{Pt6Vv^PUHSHhKHaanC8=ZdNQC@OV?fW$0(cXjIr_o3(liS@9*q9#c~r4{ zr&()~1cGv+R3-f(A{-IYcf>7%x5*Lyfp#X?VEU!2!{Jb37(eN&Foc!g-MpuX>G65L zb7BkCn!*a$>MXB}mCPEl!;@*5u;jhL->SEsJS=wRKL*>e72%~8W5*N@1q8YFc|6=l zzN*#2gSB(dghRvhs5spzPm?J9ou3J*>!NG+WgXev+G3rZhC@`7e6RY3()njV%~?GCsL9@9RFtZ@-LK;D|wT$x?Pd znQu1JO7foRVUZXi|I+c&%xBdX5StUXyoVl=QF9adPfh3*9d#&`B$X%<>BrDilR`$3 zPoAr?dZsG8P3R-*Cyz^EXA)yS{s|vWDF$&*dZ@Cty=BeSG`G*|bG}WkBS*fOo$?y1 zY_5?Uw$Ah(Z_d_Nzhraqmb5km>U-Ln{V?C6xRq8OoT*P|Dsb$cn?TZ|kUHBF=c~K+ zo^O-RjxE3IRX|y65to%y-TOVkab@I-*|i4#=GmSdLuwQI>f^1?q403-t+M*x_AQ|# zY19&D4fpAtz)m40^@}|%x2exbtB(USLwU(Y89+{jc0bZ8aYh&T()Hc@`o7swSkSBa z&-AO7t&ToTN%J24=(HlJRhaF(=|w>?o_68z<>7X68c_FrlXPE{S?IS=@e&<($=%3E zs&c%jfj-U5@_t|TD6feyZIJX=MZp$Cpq8lDZp-s$Am;eO+7d+$8H9)VY@+%*|KDlH zuYiG!%iof`@Aw>hJ(`#BC_3EvkS7S>hiE-5N(mK!yYijK#;m7Jutl~}D0-3Uz;2PC z180w+ay)7XPlcAVAKAYVY9EN%S1nv-_nJ%AnyuVDx!a4atg4f*ec$gx>}?$@EmpM{ zWe=y^ee{S6)vCF(oz~q;6X1ifD@+a>Nth?R3h5}@m4l{;Qww>A8s| z9Y1<^q$PH$W(LkHgmp#&ps_2=4qMEQvBao>uF+7u^l6eZVj)dG)?`r8K#iza@~r8A zizHjvL%mb(iAnd>&#xZ8UDrYHIp^)fg$zdW6?jgJNvaKn+XR$@b2Gv|OOt1` zk#mtLl)6S18i(6Bi6~Ti8&d+MBe!yakMk+mj_bn^I!<@xm03|c4wSVs{*2^#Eah){ z>!0%kXVm#K7WRt199)`~pqqy_HwlJqdz&}6jr{uVL6nu@ph^^Dp%fFm5*}b{bI#A3 zFN0)&cXxZ^=!M>L^O*qCj%tLpZxS$NCInXraYHfA0vuwc4@NKL{Ks=;!=;KH! zpM}Ol^-7E0h17(B<1QMX0(nkZn`}0Rce3ZE%DMFeV;pQoGpcGI6TYf8$_-^ol&YD>qoZEq;)Jr56Ke;_#0Z7)sn zFd?yPR32V87F!g~lIaQ`z}&^L*)!jg_x z>{+?$*4C6y;>hLivrk!5lZ28_mVXNm8C@&C+I}4C?&vS3XtwVlSvcFC*3?E8Z5q$k zX(}}h;5hboW1W@37yii6iDI9`xRGbWE))Iu)6}DlRQa21pSn*2f-_1HD+f{To6FFR zkEuk)ay7%S4m&Bd8(S_P0QLmFH1N0qko0>-(x7d4Xh%SO&0S0!2HCn4!RJe3ydWfx zOwa0Srr8)mHTtp&TpFugMNzT z{MOx^;-H{Yda(3?t+sEV-c{t}#33fb(jum0GsJ`5lSM>%-}0mL*N3u(uaY>l_mc>w zO530;Y>yuT<5gc&j24SOmlqvs^Due^&?;PSQ#~h0%fPqnc=hqqK3Cu)MDoC^i`Vo@ zjSCmk8ejwqA?96SV3TI9RZ!1w147Wx(O6}@ri?rnU~$j!ThF%lav@7vCe^h+SH{bM zi?-U<*85bF`FxAb@mX>1hqRQE_JNwk#`#|gE6!9Rdywu_%6iZG4z+g|^IWDKAk)N> zz%~a6Rb`fvnccMq|AqmB+W4a8u*q&%c`i;xw1(np^D^tyRX)E0!-GRR&X8Q&geH`A z^07bN(`(btYv(g4x3%*FO&Y$f%B+oF4^wPN&mz^FWjXE~$?&yM7Dl!=K3C`h)hMhq zFiake+Q29Bee*2fcN0+4Q1g?sA=b_-k^}@MgVpR!kd5~b&6%Irc-_cV z`2S1Vng4Z3`}D0_u}(^Z@n(NrQ~mEs+Wr4X+U5R8+6|22ZRxw{1kocnM1X2%O0W{Vw zFY&!!P(^A?Wk`w zQNu_iS=MN;LwVU)U=+$DitzJ}nBk$ED;4=b>+oIrj!d>VQ{dOFd#wxOL4#=CFuv83 zU~4F0}KPgpu&B1qWeFSonHdP%h{_g{3C|4ZJtS) zY&6AeBHH3M0*4J<+o={y42hOSAIAh236FlJhXH!0!ihdWJcurG$Mr@<>$%%|uO?(k zzYrp-D~CeKVy_sf=b5iDPj|S6GQ<35l8=IyEj7C0TD^Nj5K3Ka-gIVH`m4}lj>4^-&l1C@-#p75hQILFYbrSI;VCxlLrXTdPPX za=>E%&76auul1$Y`Z#HR@?)iziCj(t17%-1uZA}Hv^^Hg?p)IL?ZCr#co`7smjT|h zlX2PkdE2G=DuERGQ>8QZN>_bum}ag~{}s-7a+^H5_r$8|hqSAYB7_Ll4&C!EX^>MUFqyY==jIT zOLYz1#pIiChch}Uc0E55sMDc5&=sMep1>jsgT#Q;rZZm&q26g1jIOTOM#oNztIrHF z@j{t()iP)v;SXoeDko*70FvC<8uN{esMPvOr4G?Bhv48H+TIN~={Vt_KZY|3Opn*u zy>b1p)^Cewo=cI7oOD>4)UbT}j7Hc|WMczv#q_!?bW=3*T{q&XH_Bl_I0mgJQi|$u z5G}rU*q$RBGAK0POC)a(HV6WC*VsiK?*(6(_&l_ZYFdHu6ho9(^!1H^Q=i%Nb66hu zW3%?enqD-?gyj!*X(Wz;H^8S6y~z=cm#Ux0-ej)(xl8KL$Djetg2WG)9fWSpjm`z( ze4bq&iC@x!eJv+5JFK&>YU`$I!rX&FR{0L(uE;c$7W7(0D>&en8KW+B)D@L!2s3@J zK>?r0alZvm$sFqq_;$M=glMqxx`SwK9>#gKa}R_~@|tB^lg&V)=Zd2vMgq2wzvMP; z`h+R{*ELcu+KP)ek$KsD#D^4@v^_ALbjddC!fa+W8fxM8QH#Hhr*HYJmh! z-K*%*|18k7&4o7B2c*9ik3%F24iwGbe&}#nKvyAcNTeiVA0GX-j^DK3`Bl|{>zp^& zH`GH@ua^L1Sb>Wl=KVr`r|cEyIN`Ow+ymX|);NEaft=8SqJk=S?>Xpdx!^!jtxl-D z^y~);Y=?__8Kb|`z;iKBj)=$hWxLaaTp++m<-=InBJD&AD^2q2quzXwLiYw#$4f)K zLP|e>14lG^|L8#x`G>IvN?zRZ=M6;* z8$&4*G^}W0pxd(<_eHM)3Fe-a1#ip02bWk?nhiQTbecT|<}B6*cX~Ud_JS;k3)=^M zVu9>k8=Hcd(vDb{0CGzl@Xz6^Yzib_2JpdVqq2UE|C({1vn6kE|0YjjT+bEsEvn-_ z<1jK(ak0RLZ+eqX3bkS-rprSyrz?9K@{aj)DW=)MHu!;xvpF8dtLQYn_T7+m04ck@6hvIc3d{U!F6>FP?l!~`+-({L`?Nz3F`jL z{B40W@FqrbeW^gjJ?#~~jNxYBrf>zZt1Grg7e5B8-gxT>Rjv}m4^pk|IA)ah`&lTp z5kFfau;$_35zk%jGH@Az05l|^iTIB8^obA#jKj$K?2;AP)?9Ci~~=Uuw*F5WT2;7c^JG8K-&;=h_YJ<4|SBn!+~x(8+6^vPg=-Ut2ch6-D5s`a%} z>2%@8Tu8~*By?&xBp2plh*GSMZL?ZPD`})>C7aejVd_=X6%!P(ubZSeZ#Rr=AXxiH zY2YX(9B_Q(3g6HfH0om0feH51Gkc;Oip~va?V;at#%Mn|Ncf67GUM?Qh_n6XI0qXQ z4j6wLM5Q~j;g6AQBwKlAbx+D0{b=Ddh|b@%nP5|;ay5uY8YR_AamnNwt>xeGFjVJ} zlSj@Vm$eUbU;q4cXuH8%Fg&HWb%%)2P5gn3;}FtfR*B|83YiR{C~)zPwc5#NV-DJ0 zB0wE$&W_lTcO=5pMesH#CCadaeoC3*X9v4sz&xBbbSM9A=w>$Ixl3EXd!vGkLE` zPZN*9vz_Efww-T$o&?{oSKZL=w~XfxKJIat>y9!J_>!F$72?M^k@}usvt8A%djp=$ zZ5WC20{Iav*A+hk8S*MuWxZuv(vTWDSv;+_rEIPLLe z^Qi~v3A2RosILCRhgBVyO;6^F;>(v!&m0Jh&ODzv%9CiEaq#OVGjeq^dzYfsKch(dv)ZEe_B+{||&cpqAh;0_vgh2Bc6m4YF?p>wE z_m=9pC(9OS@7*1q-ZkWb8mDuX0hzB{4X4fcA;n7gJ7SdUEw@U@RY;-S2pi68Uv*9D zEn*kDsT3g-5#`)6(16sh4x!}fc%f6@;|%h|IVdsv(C(2S!tq|t zjOR2{(1v#H^~+a!*wou0=Y1(Enls|9i!Y|KtDio!leoJh4}S2fNbW~$QqiY zF3}j-)Vd?*7MzkL%K4YqYguMNKSCJ;?r?eoL}_21ynk<=>pM8fP;8U1;P!NAbw`vY zT|b8~*Iz~V#=m~!U%&CM-}u*W{OdRV^&9{Cjeq^dzkcIizwxi%_}BkE{&g?^zZk<8 zf`1qr3?}%`*q|N?pf*pp1}LvZ%AgMf?`IF(uPr4J_)0koi@ob8|1x@Nz(`&})BXPE zQYJyQ%GZ@ozUI}r{?wgS#MQ`nqHGb-EKK(7C;5XRaSm$`?3xG(LHD9F+vhJ1o!g-S zok<1H^t+n&-tkYAf0s-BJgiF?H>#=m{by?6i~g{VI}~nrKO5qnk5SubD}8rLjC$ip z)nsn}6!}(|ovGx9p!2)m9kJVW8xRf;7@A}2p}zVmM7Ch=QmZ=~cY&T(y7l z$<m?UPets1HJFj9nl zj6`cMf=)S-aB67$_P$S#h6?A^k0#p?q8web zx7F!Lx246OD*zcPU9Y7V35C_zYJ{n|n>)NmizyU&hZT=y-uI+s&RZB_DamHeYd2uA zb9<~n)l*0WTdw=DP$*_1@2evBRIU4n8#hvtO4X?F`?fx=pEs@{^qEcIa^Yw0jJ1I2 zC%{JvdL1NM5Kop8v{Hl@V~y>c5ALA{RVU*+_?&W3sse$vJH9Rv2?S=ppkKV1uR$_O zzpvn(6IqQ`J7r#fiNWX1WHRdpjK2IfO=3+i`u2T`863gk%}se!uPHeCaz~s-qSd(R zXIfPhF?Z^Zd~IWrF(>8GHukEb?5;1ioa9bV^#v8XN#i7WgF0>FKXc&dSPHM#mfolJ zQa4|e!GBdb=fa^ixQ{Qv6vJO7Ht}MK9Y=$iu4QaKqW=KaY&0n(dO5P`wdwOn{eCfaXOXtj;P-bUX=s@3heje!2dMh{syL3F?-QbrCgBTD4Je zGV-x8TO}td@+1POx|;D1QvOUAL)TDH;L}%G?>A+ZvtXKVB5z09ezAe)c4e|s<=d71 zV)*GIpp~CV$7ydQuab>B1S`vBnznl?_EZ6GRmSG1lPUd--!B6vM}6M4J(=Rc zv&@t;HbQf3eGyv-y(7 zK9^u|PNCFRJ;YS#cmQ2S6Ub<-x38ZIZ4x!@)lro1B_aKBl66Isvs!}V-#Ep7J$J`2wR&x8~gqpf9KfP7P)EyS) z@V>&|_0sxOp?+_wr{t01SaI&>6FR^602bj$>BpG?_8p(gY7bgHb!PSoHXZ|3OTe6X zr@Gbo1yO@kgwK&&3;ox}<(gj_y9@F4(p03#Y&m5toYz*BH%9p*@6Lt%;trZ2r$UcV z838P(QLVy4uSllmr~;P~Ox4CjbhW*BWSdJdr?2sB-S}Tu;|jl%eym_NxX`*HqDWS~ zH}0BoN<(FoQ@XxZNoW}orNpqzm&U2?8oAe26`lim$s>*uX{Hp=~yqM<}lj5=c{yX zWVXAS-_5M5!xF58>cq>sJHHOL73OOH#36BG{KdTg;w=}xdA5p!`BkkX+)yfqHfP%OTd?j-MjYZU;W7W1UqXM+3=22oB5QD?D-Paupgq9^ z?2bm|J*l=Qzq6KUQi!h3V%&$$F!{rKbk!VceK5lnTWE2YF9{o{V5XL8HfSx&of8MpMuNpE9!>X1dSAS zt2G_PHta#yM6&42w8x1voOo(&KgOw@c`w(Ag9^zjJZVg7Z7=0BrZ}6E>mB`iE_IGR zv~OaWu(zd(LXL+2ys7>FDLtltIi*K3ee0If4<(bAk$=7Y8UEdrp3k3@-hX8Hd~P2u z*&4;|F?G4VDWz7e8L9g<_hfoTyMa(X`WNj$2ML98vBNW!WIr1gMQwv6o27RpMa9)t zYL;9zTndZG?M#F?r2nkd^z^cA{TmDdT*YGRSB#NoD-+Xs{Xpzbn^GGrtdl3~m2n+a zz>@K_`e|ZF((%LgJ887>9S}3VCI1)P{)jGhvG4v23@Dd-Czv8rbD3xhyZ$`2Cyt+T zwpPO1iynT9IAj)+=#Deovp-aO5O3=j?a#rd)SE-cLunpp3uLx&@fYt!E<_)KVxI<; zlSHo%NB*qp?^9Utu@hm)@?;FWFj$l;gVa>=NO|Pat@sYSF{=E!aYtnkIsTkrQ-eg4 zml`U4U3j}xytHScz8>72#<o~2W>4Y$K zw{SfkD1Q8$Zg4x~9d+a;Hob-_(CC5j(}4oSp7F^kWM?CPlURV6M0=;Fc19jtB|FzO zM<;D&i-~H`dR`rvX3KK*dKrh8uc9yT_pHyI4V7A^Zb4FH0}W!?*z=RKn0~j4UtM_C z;L58Gdmy@d3ckAn_B%UA>9EW(H_eeUG412g$C!}Kw+?})6$RJvFpc`ow!jr@db5rl znKitkmd>znX0Mb;Ojf-c2ZON*AvV{8$)x>|`C>DMvgxre&kCf2hx@Qo%j3(-gNbrB zdNV{ZPgOcMxh_w{=V*^zv*6wbKqv#D?5S&50R|1vdU8bLJH*|D*wkDoU_(xC75evi z0^EQdGwqbFi&F>}<8G@3l!W8kKx+8rd@2y$t=b3ZhlP$%_jjq|uzl#y{dU~+CEI)n^xx=K9KfRvUxj( z;Mz^Dbw$#Ybuz*M$OHtF;`}w_d`IQ8neXZ?AA{9^GVcsZ(&07R;Es^Apa>;`+f6Z%Xk{@BW^Ce0hCU9CESO6|LnZ!ZqfUX zJrwpuJ)G^QX0q7x<3no9dP_<7F_9@v(;&BmuKUxC!lP`L${GbRQ*9!Ic)uU3QSl%m z?jV48W4@#blx&h7?Sq6DR@vnfuDED3o=X=ILB6`l6hOhof{IVB+lhUc@j%5$XD?|S zT~BW6O4&tzVy3NWvId(NMeGmEq=Zh`<#c|qnJqfaaqJ8Bq}te}=EUhj9=3Sg0?nw- zp1PWSe^%^VW3p<(P}x6{?2>1IK>IH4znh7MbM^b5PA(9tpxvE|WiB`A=b4flkhPZt zs11&>V3i5dAXtk{mziAUZ&0l}Epiz8`Mh$rr59Iy#n~YMg+%bG(WB51=04PwOFrWU zRosIrkG9*Q?<_YiGZ%AX&cp%s;%(hhWK7?EsdP0;gOnsruD)o0iN4rYlA6d&K=@bn z$3TKvcJf^?d)(QL@gXMtK2wfw!989NT$YJ$yPPJmR9VrCYs_r;NxF8l8KJ*pz8|Yq zm3qoBWVYfbR}AhIs)nWlKUO$a@5ypRLh-y^QR+ z`Z$4~98d#CZZ4^qJU)jF;bb#kbqKL$zt_c+t*0ZycjlD4HhZt;lF9}#WdDZlMyqo* z1;!a^WYmjCpwlUPMK8bgmZ~}R^5rykVJMu&kTkQ-fJfK$!2%9NC3jTj0nilP=dLp7 zkj3R_Cs%0(6H8h=zJ;T^paw8vBY#A5tMfZOPUB=%*BOzwQ)s6I!>9SNH=kr3v+v5< zNRy)qHe;8MHCf^`3h;9vom=sI)SE*^s16H&CHDsPw>_8RD)Wni%V!Jz#_R_!N31J+ z2yQ9tn}-J?sQW8Rg7mx@nFJcATacuPAD9S^3yvOZ#;xO?nY}7Qb8E2xO@UQ44$f%lBpH57vuvQ>1+gQj7f^`$+5&$2*HjKWnpZ#GjP z`WC=gQ&}pMyDTiUR(-CgXltK#BAwX-?C6{GTc)#+kZHN(4zFi3nQSEX9-xnt1v{6T zeB3r(;f~` z@XQ0}D2=fBx{ra;svX#shI7#wjRPmb_=uJWfA#R>o&u(wp!my^%_O+_XW z+@|SM2N-eKVmd24P`0R@z)Qx5WWum?H0n-u`>QCN4QPun_)>!ihsqpHG)UH~GzJAf z$IiQqX1}^4`+ztbn5}+Y&NcrmPC=~Em^d7em|l9_ zUu$cm*zbSm(;FO2zK#IYtRH||&Bg$wX4^vE7j1K|ef)T2fq1s~tR~WPWY> z5jQfz zu6Oi#=<+_G=Z%FJkmU)9zB3M#@?zrHZb;hb)@Oje6 ztL|5FIA9CGuV9LV#b4eW{B$M;HpD70>&;pJPRG-|(3eIz9m0P7dExc;WY$+>5S_k< zGC5DUdF5n4OT<39Xb+!`hZFdLy#62~co*|wZyxu$$TPmEzU!9JCOoc>(A;*nVzM^# zYrl(6<-8Rsp+AxI;Fe1^ddm(LmAUPs;{`a zq;_mQy~}0+OO8ZajvNuXN*NQOFmogEjV=KL!+XaMV{vw2Rmlcb!Efm6M1@;#9 zc^S<(&Iemr2(uv@cq*0gPbU91owG0ure7GMplyfsQ|O=)k6do;DwUx7pWUWLRJfN zU|k>}=n{i0-@qU-$Z`-6#JNU>g>^bRHl~40RZo^fAVVl5_*6SkhB&>I2yTnm1k09^ ze<$7(XejB^$+h ztE^XeKV+oy76$^hnD=MyQ22Y1z5g0#ME_1?ugivxRt+cL_Ja^fOkt2&5?<3su_qWSp+j{G1n!<)6_e)rkss;zV#pPwm#@VTHI%MX{_gIje0Py|H@1RHUW z9oJJ_!bZ(tP5*U?gWTI+Ih$Ycd6;7zv25So(5JjG8C!U3lRcR?@%pVL#>z6WY58?cId-ZbExEp}m{X-c4xlCbV}G+Pewu{hLC2k-2{{h9kUx7}^8l{pX(T z++GrOKjWP^#)-LGYq#AG#3_7dytV0!F5u%mnJT=6@l^3FS+1!<3E-@Uu zBNUT1YK{j>(h(*Yi#60(iJw<~36Fi#^iGn1&3E_=D*onIeqZf~`N3O30;F+Hh{RIe zq*ts=#|+k4zb`2eR-ora&gpZ_Ls5y&z0O~%`|)IX6*^Ls&8Lerb~Kp`{GJM;0OBQ$ z7PZ&Z05a0{QIF1+e&*z_GRgcN^sTT?v3|IZ(Uys`ery(H6r0p)I5EJ#t3aI7M_a)Z zW45$Ld)*-zmL+NKbG}Tw?-UE(7@)mwkqHBX`o5q%i5cex_&-He=+!J@yrr3&o`t@AZP=u4z^JH;$D)1L74YuY)6=_lpRS+p)RMq0DVj};V3yY(O-vxd2WXW9ZW z;&i>my#jRF+$hyU6a$g;W4a$tOIp35N!&YHTGM3mIA=h~Jhh8q30?z;o;B!tGhd%Xn=SE# zdC=k_&A(1d7YQgusp*YN+cM3ufC95W@Bx46+iQ=&yti2AYn`n7`cx{W0coJYDlK2p zf+OkNwo&wv-t^JKWY_S(C)#p3#weUU^z#HAqry}NbvtyJKwNa?j8u9W>|wK`l`Q2^ zgjq1=_*ewvpf&%VxslIpw}B-rbgq+!W^U*i)lUo4ueGu*W%VL;=YT8;iaO)sc#88m z`^yZK+nx=BzjN3#^UC0PZqIsAxZ;^Q$XkGgfWwwHbUgpJX`$cex0j|<`u9BLh(&3J z+nZ-z?u8`D3#}tHZZIqEoM?f4>Klmjf)r( zsAStoO{qLer;YmRoPp-{y=Z1Q69qX4SkgDn^EL~Pd!X|VwIJWl_@wB2{h&f1fcO#` zWeD5jS&KDWgD{PUn2mpP&XniL5-`X-0hFOv+vXM5vH)4Y2|sJy{o0CVBkE`h^@Uh;>M7%-g6hK~uG|-lB>Wi9b-?3y( zT0Lu6_(FqJSdsV%vo+4cQIt2a{GO81cpz_QnLf2VMFV#%SlR?KU-u|@BAGTtG;M%) z3T^N%mw+g>ES}`Dby}Y-rd^A{cY})(_R+oh5&pwDtC~#i8j;RMr}?2tI!?nuz*bo+ zX4+hdSa#Lcd6~i<+3zwVW5d&El^9o zSR4BpMdrpkzum~F8*CA2tSBvmVrG+mPrk2!V^a43&*#0Z!~w>#;MV8Mq6G;M_Bp?{ z7W~Xj+$A;lxz6n?qYZ|`+)k6Z&R@;%Ul`6C99j9!@nCiyLSF%XGa@0rT@6t%|Lul4sxGB2o5{Fc>xHV4$PFK$P9=>xFJBNZ+WwPk4%nfwjW7 zL$ozEq0&(lt|p)!)bT#jsuDhzf%e774k$PKWU6*_aK^X2#DBiW-9T~TrEWyDRW~6H z(8wMc_V)ILd90v4xx;`0pXBHA1#u&t>7;GDG-$^dCYWY+5*sW|wcI4aPUgyD0w>;@ zABxafCmIPo-w})YRUeqcugZP4RrJ6D!>bDn4?Kq=#UYls*8Tu1@#?L8w0yvs9+C|q zY1?7=Q}xo+rUiAjMM|0m5p%NsdWjkk&%-Veiw1I~PlX1>fGu_sj;c=?fQd$&uF6+{ z#bF7N+W6^A@GV8kq_xsQHPY>;Z~z5rzD$>w72`#mOOv(dq6VS+vK?Y`Z3FE>pUobQwsMxCTr!IR!K7 zx_pry-Bi58xZMsE*E2GtLJ}R7Pt`0hty`VqM6ZUqcnEkcW>1RnXvij#a`0tEFeXRKF+3N65 zBT=S*B2m^x6ZXtqaLWSiMFxrY0|GTl80@41&NoYK7CK#zn8%h3Q|ehwNt6$BDPw`B zdT&F9=lBy3JfBY_#GySqkI>y`DCu1|=0&_;XUF`7$^4n&JPfI)g@T!?j3uXI(R$lf zb}kLOPg5B5ov-H@1f0kZOYbwHUr6hnMn-zMR9q`ulr%hXC_d*{!fKe91EeplhZL5} z=y++euurK)n%@xsY=5RlY&)OjbC3W&os44{K5;NJl0mIOLe$GiJIk`Mn`j+?Uxj`L z{93|CXV=b0se;Jioh&ZXw_OsBhWJlPm1@D#Zwc2&(u=@cR)*`n$>nBy7nXw77Sg)H z8o?u&S}?*waQ%n6^}66S`|8Fy!LMjrx-DZf ziKmWw7k(C4lyV#DfA8}qw^FZ?h5>yflrL)nsJu~|9!0;P`zWX8!pW`ricpR1A{}!} z%*;l3Uj;4u#k}DDvb%97p_8u>V@DBvCR;LyX@(R|^1#(4s)l-P13|)sITKzHJ!bXa zQ6|0;X%^*X)Oh8_vjbdnAW2JgKK-l_VehXeZ&c}akK3L`x{!-EQLh33f1CzJS}YjUe?*E3aVzP@XseyK@eU1(2PLoNWr3@dU09AUeGOK zYoCgc@NbCAtApQoefZK#w{u1bLd%DDb3>OO$Wp_|Br}mAFsAg|BX$npMEFkC)p6x< zyIJ`9N3N*y*xg;Mvy{b_*=B*gK&CIc2>2i0a>`2G~ z*~H*ME|*CePCzp#5%zGvOjkfys-!mwNPdMbF6h}TSN3MH;1sK638G12Z_u`7~* zFmo;+J8sW=(`(S=By1g=>>t}o4AK7@u$tvBz& z(oLR9HMWXM@i$SFEn>-!K!O8CA&tv2K~x4Ha690AzO8key_PUqat=iw9hoVmqruM1e&~vd1U7)3Jy2ZxR*?RqK3EDZs zgt1@N2sM_tCN>=twQ~#P?10H(2T0P6%c|a87^f6gLiXn>c44jXS6e{$C0c!nwO9(i z?Fd9h)d4Fv4>SF{_-h&2bvRYc8(a*kar6}`gCg<6Y)4EbDW8)6(j4573_&Y@# za@-&@r_^d>{j!Ab_z}Q;CM6CDKZ#**4dnGJFbinGMGjGIs)Sv1A>zZjS5H{M%Ca)D zbusVbE;6sR!Ba{8GW_Q|h;Gas8Rnijqgy9V(yY`#;CRIy3QlygtMc%7h8k{1U?lhB!gG?oJEN<^eL6#*3l z6)Dn-NbkKR^de0~L8&SrC?z1h1_(_ALJ>kwLJK`WfDqE|@aP%$y!-5Ze)k>kd+$Ft zYmAU&&6PQmm9-dIpYJoDClS?rTK_OAj!`9WAvExS&*2bzgEMd*k%KCoxYlos=VUZd zLWC$+8^&W5i$C(aR}1EecUS3S;xa&GF*3Acu=pix-!zm1_XFAE1%62B61kX-6FxPk z?$63E^ocH`v^9cAx}E`TnVaq7!17ry;@!mf~|mD<;FXA z$s%3k!X=2Z?=1pj&tNnth@Bp=_4Xvf_%iAxH!GAZatn1f<>q!?JE$$HQ7}?~DFrH= zV}OdhrN;KI<(pRXS{7}s&`U-b@d2|-$z1g47^YplaICFM<_l6|ebQ>KR5o7O&>Qlu zLYZ@Y@^c_-U(;Z5Gy>orxA1-AJgjJHo>3yN4_D;Tgu5Nu^4(|8gZt=g3L)fjALHZF zaCPTKD65~(L#yECoO5zRCMtqq%PG;?7ANFSFK9DGY9(xK!D)odzOwBzg&p;E?&gq9 z*)SzDbRhGb<8fBgj2W;QHnX=5?a2*qDxBK559^KSR79ed1bikSZraAL^~J`bM6=f0 zxKuORRqug2Ku+6u0}KlyRnv0&RU+12=_TRY$|5kH5nU63D5?G!;7$3QHp0Erv!#l{ z&IW?~YJ+2lFmZgS0q@J_hcInUn>fFR+n$Mr+jCr@5VE8OpH~o*&*8+>ox?^H%i&^x zY*G<=&eHSi0nfz8bOJ6&&^#5?ci4Khql|4Wwazd`$4>uzUT}$%f=~h4s!^}tmN~}2 z5WijUrOMOs?ll!)yJh|SqSN8SI^O!S*n8y@h7KtC$qjh>p)8iw(GgPuJ8pi1{;cZlCzyb(7-C)gLXCE84p^{%XK;9PJpmG<$sFvxbW6%7L=Ey2tVC1{HRa4mMHcLBfvm zI^~u4vV2{Un(M9+9nfI_-<0`%!A)PhRmgF{IhLHx1qfH~pJl15eb8YiQVtC}4S)*s zjiSPXbJgLexh_}=sWESHwh{K%GCaIH@ppE6BXR1}G}DdAv3WowN!iiIxHDrv_Y_+1 z83^QRnMgdfWf2J&lkI4anz9ayy*QG#nJGe6jYU}H0rYN#&@Fob`vKcQ@*ZC$ck4DE z(q!$sCLh$s%3f$K{(ko`S{#93`&z3Ns_W~Q22btAU3*t=ndf#I6??I3dn{}$ zkpqGSN%s=ava9=T&mdAMsR1!rHZ>JIhp>+{^*Y8|=)z6?`aaT%j>Z<)3Xcs&huEi@ zXR`&U3Yh?EWhFK}Chl%|TxUx$h~HEMED(qbF3-I?19KWgv;70P%q`kT4`a^Z%+P-z zV54CnA1Q!O{i5V>f%%7~B;+QG{R*VFE&m(#rrUT}Xd!Ywi+vUqpS=amtG69YGGU14YFf5x$6nzg^x%xP6yY)< z6BaS|ZT?TdRpH+F< zDN;Wo##*jSVBg$_Nw?uhINnb=)E66D-hol673SX5=?`Ea*Mh>Cf@D;>| z-ml*dB42rYP&KrQ;aFbxJxL7lV$QCu;%s)yWt$3VF5oS%or~UW^&(nUH~UD>_YCI5 zBKTCI7){Oi67h2az3XB98bC;VYQo;A9S}M+`fhM?MZPnG_XDStl||SP0D? zaVgrix?Cwk-mDw5b|M{m}7vQ@j*oHmSj;`dAAG2dfAJ^LrKgPgg{m(zS%>0-@ z!`2IJzpw=d4Gj&mj(yNgUte!6R~rW(r(?h8n;oa2p*dkgLu3AXO92`h8us5?-nQ|z z(Q@^$@qPAltDg(|@B5z%Jqta{&-;Xb8H4TjD<9cE)9~$tJkGb5z)5= zbvIa~EZtF$&YoS>6pL&*cEI2d2jsrd)pHLTiUS>Fzf+ZQ!A#1aJD|!&fPRHMj}-`y zR9pab%+u|bnL4Bnn&5f8H0DhOe>y`bI5rCP07)?mluQWtTp`@;3 zJ;Er{iTgW$bjRSmz&v~EMCajs zc8?v^UBgz7I9OCwGuMo?U-0$%?|_)14o(~6iF1N%sWIB3)%)ibs+2cQ>NEJ{F#%$Y zJ8o?sNW{FU;7U1;`KUavRvfagG3wAhIeaB0H%FmsMkY<$0jqr|Lp)1nofgDr5Nzw> z2v9mswr=-MjdKLBYqdWPyabmEd!OMi9j~d&j=J{Sl507+fQLKOeUh8QSQu zl|r;+naj{Yg}xw+w(~7XH1~)`%J<`oPoiu158^VQOsL82y(EWS7CRB=V=zXau^3(h zz7UOdJ83srTkx1Q0*VTJpQuNnt?|AXAG2Q;3!_&Ph4RFioR-zX>&qp6M4dX=J;-d7-7yLI~oaSA;c=dM(ASv?f?pT^<4h~y1ElovddbFBYb^aiG z?zGn-<4ZvuWufxzs+P*f@*D#>4}^dmt;J{BhM7i?`P%8w7|aB!ui$1yQ7)T6Rt#Qg zswR52<-1p?Y9nBNyrhUD1776|eD%Z}GE??u8-I~S(pII#SX?1cSEv3deQJ?WH5)#O zPR>MCka;@Kg~3HRvtw;0PS{rUsKCBrS5J6@^a71rVFqO9CA@4wKJkL0^5!*==hpRY zTX%zl)f}?`Mn1$mPmOeDP=0j7PD(nj%!OvzWt}3guO~c$io`vzQF)<9^VatsZC*(!gk@}F)YJ&9&MZ8i8Hsp@4>g>jnvJYT* z<~fQSpdb;TavK!q&B&_X%4GcMO0STcty-DZ{Z6|?6RW2>%P#1B@mt6 zI+Xl*WIsJ8x_&)|rGj+xTIqfkZOLpV^r-UWp~@?mcK-XyCn|YAoD7h!K7U8{>MwVs z$jsWHkxYT)tK^FI-9zU&k75|!B_zWn6?>1g8=(ka#7!ps;(5D!%CByB?$9-VPDHH|s&Rtv~VRj{ zZ`CE@@&-*3xXG-|JA^dvS(@tglvkoooyHM`xd{15P@U?o%GbFE42Po z2urB;ERBa+C6}729X;{9$2HeAI1{Vx0yYK&_bG-2CBag=oZ#$WXG3oMmpFV!gjX}j zh*c$le84=1xfd*dW5&cXd|v{85Y+i5r^H(1?Kt)BvOk6C)qEg6m21~sdHV73r#>UoeM?pCP)$TY%*o1EGMPC8>w)ZK#ov- zVP(a`;*ypNB&~|iX@YMmQAnOsb=S2YAclFugI+u9Nc_; z3zAEd1p|jCb3Cb-4>?_n2sx3Z?rhDG>VfhCOw2B^Ppu2=UR4hwyF<35r1L~QnO(0F z6R~AtxO_vb!~0y)lIC{OLhA&K5QK~7CdqLbr7gE@=2|ht-PeuQm>N16x4^;1BhR81 zV1JdLvjgWumtv(&>WZ00?jfw=miEU0pqHZMm_vZ>1{Zi!QX1+~t}p3XTh28`yhS zFG%-YxvgbH_Ar?9X!e23ya>?!l=f@Y&OlWzq39O6dJxJF>x~#`1qclu;t{6wndPo&=JH@^e zsO@X{WF)tBoxb9f`b&_XZtjHDJ4k%`xXvUpj;MuHQ5b0!IH-ouW+@$+b?$6Dkwg{? zAFF7=>aPfmd!5|~jv{EHU#N6Kr^au$Rsh{l23Bz$tTn3Uz%I6N9grqadn~M;_-4yd zT_j8~l%hV3%G$@Z-}P!jN*8@a4!Jpb-tBs1k|T3^j$*_!(~FawxE>-)+`gY8zx#k; zUfpkjP{NpwW4K$na=CK23j}$g7_5$Z;|aN(CGxCA%~>x$9!OriAPg&6X6xQ+ z0?Y0UR4^Vzy_dJMcA1#=+()ZWzK9=^$G-fy5w?58Q~NAlwE6AHtV<23dB8h_c{h&j zrFH`-t%nbLpjo9rd4F(|Yq(H4gFS;Fz7Nt?ty7s}6k7shUrFj5Rijd0fLU zc5M1Z>x{pYTSGqUyS<1D_P!|3bYmuv{rI~4mI#7#A!i|UjAZr@yq|%6mD=7tzPinc z$Kd)jNOzNM8d~J)1$UjMpN+1g+wOUtC4a=3v@5v>5ifS8|;=J)qDa4AIK-PSxJ1cZ6Jj%C`4bE0SQQk~AeS%K>t z_xv%Vx9!G<0IhIpaKJy}2_*vtJRU_=pyz4$O@t3|_S15&kU}O7W6h0&H-x#{w&rG} zws${m)!$7rOR8`2<1=|8vkC$VlDYkOeL-(gzkZm%_$#O0fBxE!`X!`ze3Lc&JTsjv znet65?c#ldo6M1Mg1r+A;?)(|kNO0c+dPoLbWA&Ks_QS+_190ui3R_f!7$*f#0&M%cI1f>??iBH-+Ohx7Y@Awe0MYBO4V4-!Zpl4 z-r2H-2RinNH6L4|tF6tw;l0Q4d1xZlg4sU9a*sW2BV1#3$P?&%@%6zP|C#$=eK9zV zFqp3L>!*DeZ0|h7(Fpv=IYP<3JQL88dEy+U?yx2&YFh8(Wu@in<5S9u>M@xjd?EUm zVm5DQeb{`E=v;gtDZrs~igiPkxy;RW{e!bd(~80?#FyO*)f?kq|0wus|LFAM=AQg5 zpTtI1gF9Wd8)sikyY4VKPMw|rT@mwGs}S&(TMCQRl3(f#d{nEpq3~4RJ3#k5%ldOs z4XW!e)%BO^`b%~FrMmu7U4N;rzf{*>s_QS+_4j|v^>^YoW6=Kl87)fx05L9^7gi^( zKi7u-N=X{Ne&Z_3bvkJLX%*9PR?JcC+iK}dhS&gJo@B)Ep}>8*&Z1*9G^3zy3G6S3 z@$Ytu0{`uV+2j!#nukEG{bb6oK5ze}oucpWgjxCDc8Ve9{i}j)J7UACng!JoeBzKeAxMp@}{!gY&Zvj*&QRPT!W z9%MsuVHh?_E@;mf1IGom!Zzh02yDo+r`O);Zav6%^_ZO7#egWd4BuzjSt~!RZrOP7 zDIY@Kbnfn+B_!TPFn<;23hR<$n%fIwnGs#(%I2`7aj_FT52+?Gj%x|phNQmw)FJxH z2nu?Asbhy@9m$lVfl@H$Rv_*A1yr^Sq_lgMf_9YA;;N$-{;1 z_JZ|_4-lt>x0uA^7dIfjw5|$pPI3!~ZNlr7@QnSSNHrS24)Yw(3{_Z=?csEJ8WUL8 z_B6=~?#?fv-arf78}l@2B!7sx?>>JRrWd*_HANY^r!cf7ez@BERH4cEa_C_^KkJIu zu}#Gqx5%0|E~puMU#&igPD6UgJa#2(l5S0CI>B?0`QoXI&`N*c_!&AWpjOu zF2puWNEMp&do+FsOK|K`@KN} zHvH*q_MbWg?z}%%VJMBMt8HYB|K7*4Y9WAnTnF4flx#wYuetKb~`Leu_q&1x32wsAfNiXh>Y&IqGs&D4XC0WU=t?7)%YAphqgO=lSrKe)KuY}oT7?>kg!|`7!N1a^9bA@qZ zp7LAfN>-oW(M>VAs?qSJB*e=5ojW1QGL^b>4=qw>b!AznsO~ZsdSN@hvO-7aI)CdWPSzCh zXuiii$Yxna6w{k?o)*ven>XftCwjd8AYKLXxbApg=Xbe!Ei#6Y&M4O_$T&ql>rJa7L<7abIvsh*5(HDdVm-Fc5NN(( zcx29%{ZjqZxKV~3=mJTlc*JcO^4{2B-xg%qvjcP)eidH7{6%q12RnTLz6s*bzy)w) z;pW5>mT#Qsbg-YH*~6{+*Dw@2+=OjQ!M+A$ne1)S>s5_wfO6EYcP3O^&#SpBbCg!& zz&xdI{xO>I$u6+U7H9M$V_E-HVi!?!JcUou28piXr?{Z#$wY_q2_fS z?4#j~x_~l?WxQmrlVIYMc zT=c<1^n7dQRc8089sR&X;jL8Kx!s_TSqHZPDc~;(v_?b%oq~J}E{cYb5pTSO1ma*f zFRi5dswSs<1aM9pdpJe8oVsV@L`rH_b41j=#^hzX;A3ooPNes=28&?Bq_~n;?e?`7 zS4|A;X>_mzCBL!6&2`?_o`w^u=HQW|@tVndl|a&ari$i3)zZ%@QLy|=?@vpGK+zg_ zRmCGrOAWV#xM~9Nt4l<$gM~p{{n}7QF?c91LfhXx#?R_pQ{uw+po>vUX}KSXSOTa` z&tBjm@Yav36Sh9*o0k($)Vq^z)lX&+bnauDV58pm16I4p>lad?-UOQp->@>^&Mg9i zYKcvd46MpGB)_B&LEIdGk{g?KxCr%#9lJP z!9B|Hxz81m3*vaPaE{O>Fr*)Ws!@TMwDfe6+-O1ytrm2cNuxx?L???%ULOw zffyEBr?l|Rc(khpqk2^)9h<=Bafe!$+Z2a_%~-n7@wOUG7t|g)RQ;4k0L{*F*2V3Q zi7Hm4fQ^%#3xeG3Pg0aokwb5`hf4A~<WPlXV34PNt5-)|Y|L%dPr$H5o%b0MqFZ zqDGxd$fNPaiMHLZWX<{g3m8Q%Is8|;zPNO~*mapO)NZ++=MV#(Le09_Vu15TbYLCh zvgg=mi^~8Ku`jjeau=DAe!4LsJstiUjtnZZn2aW7E@@ahk&=!r_kw*k7(?=|Mn`Em zd;sm9)}CrRA=Sh|=Mq*A;sL%x^vno$keWuVJ*oklkdD?*cd~^L#Y!fot#dCiObwIr z?+|^17X8NL4!-iCt`0KgUaZgk>)UB&`N*T`0Y@;Ftx>mI|lfuI-H zXpI%xvZBxECbZLYIzYwF^~)>brRN!Sn}Xx9oU>DWg_oXky>~C&BCJv@ zLSM@sS}7}vIvN1Ae`Az*NkPfl9TN3ZACO~QE^ah8)20Y{o=aKt+{3;6;Nd66z}v^)ZYH%>Di~c94M66Nv+dkp{Jjx=eIP+;?u_R%Gg# zLlZ%S=zXgVjnK{!{`x>9tHMX9+~FO8mRS)dFYq1))%7j_xfs!MuXAUAMvdvf_X(4> zyjyrk083)+{_c-1ltNSHUe}Ei(1DJOyDQPUiLt3B<~m!3sy{bx->q zh6%??mT`FPOLSc~;4sX4u2lRoM*T?5d<4xk8VT^ozhD^658aIf>gV!w2ABhWq z+SdHyJzQk9fwNLT2>SH^ak3}KvVb=&CUoQgSS`3IRSxn_y=`(%g)4nL;O%-G*>BiO z-Nk?P{JfCpw#uDMkM^82cUzDvXJG5dLYq^kpHr31eph(~IEdRszF>0}o+kra*xh7U z>muJqR7Vz)jBzjxV9v&62}yu*fRX5OM)!BFcONJpoL*LR1hWx~k1k}-eJlVe%T_b~c&H-9WLM z!)mTD?aA9s-kBimSewXJ*4*I-+b+wQSgJA@%~r?BlASQwsb4!$_oN}N%ii^_0V@1^ z91#5zyDVDGb1wZ9VY7s-7$c1`L!8#_LSO1+6UpNYR&% zMW5Tf1k8H~tPxcMwDOrffJnSp7j@Gw1l$Jo9W_VDG6_MyFlE^|sXeLYg=hFj`@B@h zJyHUhEKg>Tl|PtRk~yah5Yip{@6QQG6_Osx#$15x5wx7}k7aTmxq^ZfAeiX@=qXr6 zRK&B2m_mBjz)l7=GaDA;@#~e85c!W`PL#!AqS}Dzn+FmHb=S``q>pEOD^WZ19o@4V zMkHaL1htaMxKeSimR5@DIssAj9LKgwTB49b#=C2G>M4rRx7%mu;q3za^6gXZP8D`n zVQDGn94@pPbz_Tj7tZNBJtch#>G!~NU@JJ^tiMD6ye?+XxE%}q2D+d^s$xUw1SoZk zyAxYJ^*PEMu$eB%1X?~{CkQoQS`nN7yukRY0`)(yTmC&tmcfnJniu6IGeS}~RZAUz zs3FXfv^+ZOt8`{$wV01lDkrk<1WlsYpNh&?xKGghoOdrsLqo%Q)7{C<#@ETiUBl1Y z-(J@f@E?lG4`@#OLl^s(MP$hxZb_ddvv7UW@%7;+H_2 zKeFUo<6fQo$RYLz)+rJCfcxPQ<8z&Z=jc~SUX|P*#($*9rk+VI%ckFqnF@IzbLBHM z^id!JL|;uZ#_@kio+NR-h#cyge!s7W6fNf6x_a%+B4UtQRHhb{sYPXKQJGp)rWTc{ zMP+JHnOao-Un?pLbNpfqKWn}$I`%1t%PaMdqH>zrkPATdUy92A zKBxDXQsFV0moDO?GMv9U#UK0g{NRw^riB~FeiW}@^{O+Ge z!_OnFnb5p zA*^{up6^?}`%71o-dkd+x93h*KCrB;rzp$HrEjf~l@I}g_(9Uz^H6pFqFFrl$|K{_ ztg_v8M-Y2@nN~13(*NRUUQ9oJX}Ob}ptJSSW$X5rV)6X%d_TlV!Sc-vR!h)9KI$C%pHlLBv{~~HN^a@> zFxaoDsGVTptI4le%PC47x3&x8OlJ)yy3_A$z?~G{%ADY1WU27CpwXGP+Y3^e@evd_ zsfGS$cYw885_W!#qli=jH~yFfQ+ONPy>d}f1D{}$WXSz^h>P$ zq>gCUXgc||=y)8Ko>;L~)sHPm*lD+o508vQoTd%JneB+;|MzMBZ(gPUdZx3|{Q7=>e#d{l{UoA)Uib4k@87Ja z{g?F`|MK|HeW?F#`{_jRv+bv9=Fi*wKYjkwu=W3qZFT>mUxt5K_jmi|=X?3P{qwW! zuio!JKY#GQ^#50%>F>t;yYc?@`}n!9|I4y@`R{o-`+u5*75@9s`b%E^_IKl-c{x$^ z*YQZ@gdfPUYoPUQXrZv5i&{%j;c&-jAdMGnl=>TI%7Sj;YOP7MOcHVNoQ> zSl(PH?7W$H_sNaA*%x7`QEtZ-KVbjqM_*zfqpFbPK2phjqS4qAu zJ6jO3d;g>Qi_r;<=Gg1yfEF72z! z8uNBr@R<3PR{Gx4nBslf&76r*M9Y3~cKPEGLF#tt$I+AzUb&A6>3TyvJ=MkBy zJ)`MnsB`j*?9_-3Ukw<$DobKoM&nVfgF$&{m1$BoE*pEkOU$=*)a?BzZIK6;a*p}x z9?7WaOP+GeVYk@!=TX9vszvdV({p>*EwS2~B3|L#TWZ_BaP((aH+|(RA&o{qMn&oM zjLQ`_Raeh6BfizaR!ds+L;{rEW>(Ks%&vO8)6*Qy`NFd(N##Io@?dV^I8I zj+_#U<>sDJkU;L%Yq`GFo3BTQ^z`UDzSWeCPP*$6UP#7!eUXo>U&v0^^>>yVSe;`o z>XylQHsEz7Iu-jv>GI_2gJuJarJjCdwv@5gl}F#iKBxs9_^nm`SRLmOg(&O2yQmVz zjTCEsSp?`%IlF~ibuKP48Z>yxn|tkf;FrMJRj=AnNVn3Gyx+Zct8JZ8!IKv+33-HJ)djYyn4Q;oYB=%G$34ACVvfYZQmCx zPl=I0Y4CVmrrF?HB5nRGI_ch~Ok=wJ>rD68t%H|?S{`;W=eOP03V9(k`)tp%)tc4c7K?^kJv3E0f*f=h^JnA{pq7^Q1J=3f0G8c(v?LKEiBq+QN$GeYk z+gsJk4>>H&8>sJEIkyi$IG$k~lmXnhG!MTa#K6rh&m*fNn^`sGs2*A>0#ElGd0ILA z;*9UMSCCSWzKvwffPM3~0Mt7z$j9%wF1~qwj3_XlKYVA{`OPrz&^hyEWts*JP;l!* z!ED#|gNwwySaif8KWpA96d$`#!IS@>f^mbP)iIR$dgfdn@ncf$f$T1wfyhf-1lv#y zz8R?1!)T`ixi_5uVB3#h4bR$*W3~O`Wyr~S2GL=ItLKLuMQfVxvtp92I^RnQo=tWY zbzbcNuG;&)nXstD@i|mGsSs?d9}zYvFL6@ZRwtz#hJoa_s3Z_w=;IQES%-63-to zX5<@)T<7*oW7594v#l0k+A|_^ZN@oEckDGHmWqCI+?gLF^zQRZ~rU+xUmPLZ6`t?Zl1;`O+I7 zViw^*_K;-1VF@JHV4&;G(o=Zr%&xGPqrOM_4eprAP0wE zU1l7Tg<8qEfUAV8Zu1ygW6ZW7;}KMoiiOjS$BgI7K#j1_(| z+ByFUFBDnk9Cf`_{ZvikRp7DthimyUnqc*(?_--uY zo6)}Llik`zRhpDw=uP7iwrSHcH#b?8PG=*&lGvQGwS&rFx!x~<5(m&S=alNTYo`Qo zniC2o%L`>+&q49PXtH6_*b4B+(CC$8ggD5oSd#jFhdl7ehT#0wu<~|^NBe5(OPh75 z6ky~^jLP#^(@kk3A7|4yl>D(D##)9#UYBNMcn#asztyh_qoZaeqj`IuKLxW9^52ELXt zX%umHad7IMHC(sEj;YMj%wddGj}bGUGI$Y@^W$qwYrDth;}RhmlQbv$x_0r2EH^(# znVAb#l?+*hM%wXMu~tC4hKDmKuQ`QTIMvaXwc2?&qj~k4Z9QNXaYc@y90|dnC^6g4 zQ{|oOHl^1+k4`X(D>4aFOP;&bCJnT67^d5W9n*hHNt*!+tDl&X0iB+eTeo+;+nZu%|PQ~)$Af#;)x zB)-y#tlzzt9=7*osZmxkY=iE%Q1)rbq7kUg6 zqmpK)qNb0aRBp$)4CHJ1thxi0xryd3w(U!xwnL$JJ)$p3zkg%=d!VJ@fAKb5xbxH+ z$3wH@}A{Q zcu@_gX5YE$Xz;oE^TScw>{>Cm*n7Os3s}ThF5Qdi8@YrEddhHCK&v1|&df<)^U9mG zZ0vGqIU-C=2nV+I#^K_gjCwZ%IeGZG#wuYxBGo8+7+F z+62Zwq6;h|>x$&tjK5A#$4`s5z{3HX9}P1~E~u5esP5wB`-X)!i*jrHgsP6Dg}W!24dWNGq_3XX;*w=lQwXEYE^wg3t>m+o zbWtvHV>9Xt+GmAS!pqDbS3s&MO5SWlHMmQ+X(C=^fzhtDaCVM1AWu6BJefo)+`Ne1 z`gR&Cscvwe|; zrj~9&E%mbX;m=w%XR5bYW{~gLV2x`3U<=|>M|Wx;YR=4~ zjq&?wEgZXQ-FypQR-QgWHRhXmA+hjBXW~d$UTCs5ZwW@2cvXzxaxgRW$qQr6<@Fl#nMk~v$Ehm&U?xA}>yprpXN5?u$mDc+hh zj=hf-Jruv=ozu*d1A*Rx5(KH!b3Znigi`#XAzXmlgpniS16d8J1Gqz)GQVpftqzWI z=1uYeGp%oFSEwl03KVPWTuBn`Ia~2AK`s;~#%}pF4#uVd*w-Y_p=v84HfaK(eLlUS z07gZ#FHSuXSNZPt5RESaROZ(U8+ivH5#Bem3vc zt$MAjLBqE;z`o5cMOn%03)eR7CnzW=d*IEX;J^U#`M{4b`yb$b$uqTAW*FlX!I6a| z@!H+ji6n!(PQ0DRkdAP7(;46JeeQ2EUG>)~wtQsE0N_KaGqPf&EF;oZ4Ym1^thTQPJ3 z&DNNl(zxpoe}HzimCb3^Jfmq=(eDbNLcFOsKl25tk+i2Vm88)tLe+pxtCjMHWrNyKUCY!YS}S1?aXYwPJ58Oa zzG*1%DzQiYg9H6W^D=F-wF!+1ie?JY)$r*t|-a67^CQQ&u>!Q(PjpO(Jz|-=-*6Ot)SO1ezb? zH?cep&NVqT-S`a^k)Ht_3BI_cn0Um@*NYwQm8?8fnakVo#uLx8FCh&iMsUomYUodF zzrVy^U(SGk?Jg8f7YmE=$?Uhm$kcjPDr3N9dHpv+M;vt~Hoo$zEcG7ypGz+0DmsJOwGts*avhQ?v**WA_enG#! zwR9A|g! zTE}lc5l%4{Zo=Wd)hsK6*Fo*~2+mQRlBV zBX4$Wy?P*;q;b#sdo;RYt_JS8QT-^;TX3D^7j=4m=}D>y>r<~JF+)`*YIE1Cyku&H zf&Lkcu9dGaoD5IBTl}#%%Hf&#fe!LOfG=|6r1nEd()Kul`*wjx4+i`x9h2vNj^RDf zVw4YoD^}A)><90w7{th~r7%!*Rcz+tlM_t> zI?;9aQz8keCt}5?8aqz9R3m@9e6s>FC(?9+8qb~tzw0DSZttG%1i=?boeSxH@g*Sx zF+~kKz?v`ar{<>_%x_W(_Up{9KN21fSjAh{SN?H4r5Sw+^0x34ys4}w^y}2@IpB;H z1H8U0lGM+WaS-sd{GILw*w{okRO$)BGzk`;d0f8c*X`!NO-{>$>8D3PlIi?h1mbgip>cox0VA>+BXhAflOZ^oGj-S8^Z2d-q zW@|~++McmjvGU*zpe3w(yq-bm-RanQk)jhc{8&5WpCL34n28AwQ&)Ob+6?)Ui5v zzd{!;B_V*JH7nP)Xy`>a+-6q=e=(5~%?p^%aU9h?-DQqk$GzJeqOw;P~&GDs=V=V-+>MJIh!s9xP zVF(=jrH5Yj7u^})wstuyi?VnCMQnn45Or{X;YLrL2 z$PHPl9fwK;(T)+4MJ+#+!2Z3&-V;n~uVNMOLxpbLRsJ?buOw8ZA?uTwABMqW#k|w2;HCmuYJqpq4|1yyjMw}H39DbGRiP^I} zU;zqQ@1-#ui3lJ(wiJzQLrBw}s&i1xgAxo>E9suH=$5+F z;ko5eJt2c?u)QgB$<|lsp}0kdjn3Izz^MgR5%(24R-K-@aiypqw*I0hMTMlP?j`8n9o- zl?toFSOif>n<2(PA@XJjoC3yJRB@T2LQCS82{;>JqM(J#U7lL`yl!;eT#9sjKo&O> zY%b)4l;pD+om9-ax4)JRK_KT)wQVLplpOYYF>zDhOd|Hp6};Lb5qp|>GU!WNk@9yh z64QDwO_%_Ds{~*QL^5YR@cwH~v|B z)*eOGo>8@DRP7m6dq&lsQMG4O?HN^jM%A8CwP#fA8C82m)t*tcXH@MOReSb7*PcC$ z{lyskY5!Jx=0y8bdp4GC?Ed&ByJkk0DBt-L(Y?drC*>wDX;*O?^{I|1j~F^V<7p>u zd;LHe`WdffDk|)+@3jjl^y3^*L4lQR*`y+r*9035+Tt02($n%v#e^K2WIU$2mv?+) zrRhiwlOu91JZwd-gxF!ZHDbBZDBv!6)qzb}^ys~QZ>@V?d#m@_enaPbVZrW2n`HrR z*R2WU!WG18>DXo0?j8HREaNBoM7`$ZvIgL5Ro6d2Q?spm=6Ns10DBS5Ss~uEGan$+ zhxs{fl=bZ4=5N8Al1=XAY6x{HG%ly#ETg9ONmY5#+@~5P$~9*`HU79d)NBVKN$6B) zls;3Qj9%+gkCAIxtu-@J%Tuexq@<&m)FHJdbg%rp_nBT1#e8zHf%DtCP!aQ!867d6 zYS}Cfr^eB=h!+h!FChFwEnMYsSrI^+ybAe4%leFfwrMDrYloaq(d?1qV3L^PA#dwh zgiM@J*WKmmZ5eM6RL%jM=A>NN6xJ@^ZcNJcyAc|H)+_&D0N~LfuNg{^k8b7+IpQEC zm=C3XAk0~g|6lCgc{G&$|3C1N8`)K4r&7tDWXW2oR753NvL?yCGuBD=7LqKLB}pn` zB>TQsVnTLi?2~ndG0Yfdey7`fzTf-Xr{(8#|M{Ljbj<60yS9Z7pfCyhFs7{vspiQ zab-vKjEIAM!fIyfD}O&33K42uGq7`o&^Az@mw|@yAo~Ltkj2hlq-ReSk5ohjp7GDW zLq5vBWpdUEeL{GNv9EhhuGdgk4bcd*wiK8Z?d=M@O3o{=cxO>fGqAO`F_ZfL@xOBl zyqnG`#CJd-a~dZvY>%Tl+7ELI*QhxK&Hv;SOk<4sYZe|JKhb@5duG#J`;PtB-na2w zN_akNw>9i|*z-d-(nC28?LR5j&vpCZ8_q7Hc*?ggO6Ij;0@P!Q5&V_Yq|&z1 zT#qz=B5I}7g^rFc%s;=NBfjfl7kM26qXZP2hQtq{>drB+*HEVRE>qCNn4Qlg9N3L+ zlkaD_?DK0bFvgPY4WVJ#bOI^moWzM$eD@W(#x)M{cg>%^Y`SNSz)fb`N()TZGVcV>1ht;gm|buQG_N$#Lh)qXa(x zh=v(xGh>T8@6`BsLi%cd>5y@v8T&l%;{1a^%`QGJ_v?y@!@8B@lJEp+H>D za-vUkq)aOx+wL#|UkQGLO~ho3Antv@mP}XiP-0`Num@A_!7Xe!l5yGx*L+Uz5_mep zo^|cb%?R~J%q=8a?8O2dH&_5q4ok64b9yY^aN=L~wyPwDP=3uI;`yi?lDbaR0Wg zy)A=$-Up{y*;_9K_pD?e3&c2|#6Cr$EzyaIR%4%^z>7}Fo4SQW>#s2{RC2{w4aFcv ztcgp69fgtHX=ThlUFGcDoT|5Esz>pK_JjHj?A>ZN(Wzw&)%lfl?7j#hk+>|>K=LwT z)XEtqUdOcwFZjA>jt~ojU2nZoQ!NSMGZmJnuhv>zAjF)@W?6vt4_mVL7)eJY^0eOC zaSuO|5_D1t)p~f=vNUMCuyXS1dZItZvVva`8{n(-sxY$`=@j_aY74RQWBsAVWvjk& zS@Y8MR}U|B=Y2d{X_M)1RSH|mxHztus=ftp@G!hiLQ3MZd0XOmJ`KLfyLyWR-*^q8 zU#pJD#RpGDxn*4pSJJ4uGEndCPm=3S5{_usw<=wK76r?^Lri>9fRqg@h-7bdpluy@Q|5G%!%WoNXI;!~@haJUe7m>k%~aa}J$4I-}y7Kiv4^VGGI&++JuEHJyS=Q~3C zb7$a)rXE*qviHU&nj}h*ZVs0~PbI^tlKttF;s@9 z%`t^ftc``Nm_!mqZ8!DHUk2)`b=9nQH%*YEq8eWo zAGmtzMK7{ljJ4{E77c>360sB!_Og$0sWnmBi!T{p-X_V2CH zE~2mh$lz(^^hCsN6w0mM``42OiKpuWvgz>4a~>t_&z-`PFutC$ql<)U8Mk*F1EkhR z>@9OzNW-IK(b|F$ubGv)u6$D&RyX@tvF?^sq)@KlM|?aMNB5pv$xg6hB#hZn&0VA7 z(5TpK9+DM5sv&3W8wRdlO1Q0wgb;$tX=ah6FznjncA{Ij5hio4)3be%khAQeR_7)kqa|U3WGAGu)i3Nrlb)*)v+?xJ zrY9&nTf!~LsvhY2csf&dxDPS}8pVr(DJkNMw->L}9tvVVIETF0Ah9YL${l{BPNpd) zYzBs2P%M{Pp$Mdi_Nw~^Es9){4f5g6ZBBVN=107xoGXmMKn2$0{if>O)!q!>;T;WV zSiX@c=9e*L&@e&X;qdxCYVG~5Pt7alm$7tD+}|bQx)fuMSGE?_!nMbEdQ16Hw&+h| zILw2{KqX{%(qhorTnlU`d#^_27QGrGpNdr}MP5tfi$Cf*k7Tih_oS_yTh#>NboJa< z7m5fbO_~?q7%=!cb&E?oTUcvKca3|cO(%h5wR*EhubBBszDDc3V@Ou6PgpivW#L-? z@|^ZuyjYWyW_LZmfMP9!-lx#GENqY-QfP=t@Qb1SI{%unzp~^CtY;4+F0I!-AY2K# zBw2+y*xq^4bRyu;Y76ns{u$#)B47Waf1L9b*v*;tkkGmTsGZ$yMeGDSpq>RCDY^;u!Xj0tlZ2g8a?5S-J8L1L#D?k z=o7J3cAOM1EkX>+E7`@5i|z2{lSC_G0+{fuX?#}$&b%?Hb*D_uV>%n=p1>O(;Rj8J z6&RJ_%S8iUHELD`DrD_tBzt5SouU@-IV`sZW*X|P?a4Rw;$15Mg zxX12wA9MApRIDh`Gc;;jL09ZIb#a`&c)Yg@p zm;02=$)n6}{u6#oG7P(5q`81<#U5wTT-4Bsi8wAdZTA)Gl&o0y_4lLe;&r2 z>lvXPa5%t@zpA88@QKm^X^88w?=lKuWk1g-d{+BKMq!Hjlm9TIK=W|p8tVIug3WV~ zQ2-eQkWl~`1&~ny83mA002u|4Q2-eQkWl~`1&~ny83mA002zfp&nOtY*)WFgpYMgLC97^AbKg@qv;;C5_dHjPy(c5!84%Uux#&22n>s-&> z_pq$w74-a~&hsnxVx1&CG2l<*iWC8IH!RMjg>F>HRO zkovqd^}$?fP=wkOU4QpBC|}wVK^5^{Dz&Obb)wnd95ZWY(&aH4DdLtsX5`bHP7?4x zD0%QksjBbYTew`x4-H zMf#2eNzE9UeAt#fN_hQv?C#aMp-=7B$z#Eq(b0mcEk1tk5?Xr?-|M}gv8Po_=K*FN ziIX%LkGe9;a9hV*DwK$!WfvBp3X%&^ya=f-!2H?rN19IMqd;K9dQ%{9ZX3vm#NyDxp_+n$)HF)O}8B+75nirB%u%l`mda zac|BRN)aeGxHG0GwT~{LsYfbqRIu=29>I@o<-WC!RM*oA>k)bF*Nf*DR3@wPn)UPPx#(w$FLZAj%MmYyYq}TS6C8Fwg25f#61rqtGL>2w>ii#QJSBSfXsTBW95VYV5_l%o z=A&6c{mPZs>aPP7;A`gx4wbx}4;vRXyu>Q>R$$t3O5@8#*gMZ?ILow?UH2JZO2NL2 z*sBj5BbpM5A76ImHax(Gh2FID#LovDFNV7drb`!F%#9r@%&&mDwh2oA^`ALswo!YJcI%3US z;ko}SD})Tah2??jp3jyA=^bY^;~T?Yd$1A<+gY zIS?Xf`<}4j}3Doc;kyDn)a+J(E`9{ISpzGNZ%l*vr4to5@I z);Zq$djjhc-xgYsxHEaLe>!~aV+3nmdS7^hZ@AHmV1X%97wC$JW@$=zO!Xm8wHqZ~ zA3x72)*s;S$TfLC9HH5!z*yRG_?rIl_Yq#2(cO%XEL5H!MfIe0`0@z4J6}1SVDGOj zpm@wDhY+ZBa^b|}NkqbtZSk)gUsfGHwN}W}d8N5sRz5o3VT`9lExK)Bln`VifNN^J z@I^eDUp?A{bam-tWbBtCO-OgyTNROY`?itjPqG9_KC=mn>|s{3OM@;p%1@Ygn7tl- z^iF>z`-#ZNyZJez1=L(wM)~o@tWeL{?QaW?oyNT0U0#3RnwvGAo#&%CL*K^_qu1(7 z(U*!}gfq&sCVu3tl40f1=REHzK3u#`v#!B@pikg_zO<#AZq0}dO?@K$rR}R#ya!#a zYMM%e-KC#1TzazYGt|DO@8M0|xGg(%SzeM%YJ$JqG|ZxV$H}xLn1`2<7ye2TY#lny z4251l>OUpMsnE)nL^*ZzSKqBE9oQy;Vvlp94#bqr77`Z3G=)ZI_~~ z?DJ!n-^-ywO)Fo^U1(lB$&Y_WPRJEYD9rXmEMGCdfH}>ThU{yUb$Tcw)frpW<+ie| z`H6-Ka(l#_0cusJ(it_A`f-{rUO1BA>3E_bM&x!-ejjDF zxunJzdF^ikhe`v@s#PO=&iP=O!r_jIwlC^?r;z9*bhTf3Fvls-n3iw?GJY(xu+9@gcyfbDvuKoan391sqg zRk}ZBlrYNkdFVnxu%Cf(vo^P6T0lnXZqgHE;TLFghxyot!UXXn3H!_RTn-=#8}tiE z#?rT$2wad+c|$b)5V-Jc_UwxCoUyd3Omc@`WpF~mXmg&H@&1pe7A0E(@b~p`*9={5 z8yQYz+w}Q~J---q`a|(<#V*n5`1UIqsf3cOr5Pciq+H6YgvGJv+N<4XTvAJxJ6v1V zAD7D;uXu)!o+*Al(|XAE@q|ZXikf-gu0Hpy&*r4d)2tp>pSg<+@Q1GUcb<3~!{jw? z;V_q{cq&lk%n<>rKCyL%_;SAEuV$UQjdDt}PMIj!>(MnD7zAFwhlP))#;2?=D(d>} z+{zz%r>^p?zy6qJUG=-F%cNC1*sF2dX(zZr*?fDFxSHBHnuSPt`dz2#kvE8kI?o)7RAp7RK4P2xPW}QS1&{;^|q91DJBb(M*1M^BlGY9AswOT|sTHsDJPL zcLq*y(;2vX9T3Qcpi_9BvW>r?F8(kB=Sj`Lo&28+T-&z{Tv55%yQkq|dtW`2IwyWx zC+u**!Gze`R}YSK9<=5cH<2`c#v>Q(*wI0iErl_6xZ%Md{q(p?o zMi8#es|{94p?IL|?d|RH9#@$;=Q!ucI1Gh69l|%#UHIaxEZNO>_b6p7f|fP>RJZPo*HA7p4usy;@b6`%XK@M zrL24_`ScEt1#$Y%-@j;z(nk1JA8uv49JNr<&k4;Mvr+o^Y-bQ(dN`@8s`6Z7Ix1x3b$(4K?WIkB}Woc0JvKTX-$N-ZCRQ_ma7LrY$tXwNjr}z-z&Q-A(PVB1;4! zkSSa~uQd$OOIIh%&Jw~d?-Q{y*cI*}f_$2~G;R+a@Tm}9U$`i^EsV&;VWGk z*40Tb3glzH&}@>fxY(Qkqe9QW9p359uObHl1F1N&&q?uxUoNXo;&^ zwEN;26pE?YE;phuZ|>IETlP9-hK`ZKQ?c+5+6+n^7~24$59ka(W4%mhkeK71k>1BA zjBGsxQqZ);*D4zEw! zyVPYHR^0OFP6?d|u&uyYs`->Gl3fIzxpU7Xl2oc(j*(0AN5u03OQvF6T}$~S(VehH zoXtuFJC8<|Etg;lL;1e4I(Kp|>*cfg>fA0`M$Q&Hx$olhb)#-gEc3|*q^{f3H1m5= zc-w@F#fsp`c?468{?*D#&-fcI%Kf}}pRLRxUOfyoCgj4eGBG~>D-6l7iEhEch6U7Q z0K=27%Wm9b{ssX-egR%v=M}Xru)h1Tj`X9!2)4S{n71Rfws9lRFT`STQW+yc4ulH# ztHW2mI3zaU?5tn#t;YCS)6Z0m<8pOjI~rJ%Ep}DU6ZiJM{IX>}uk0@Vo$;O__M)t( z>qW%k;jiPG@Bmfx7k}}_u`#o12J=#!sL_12wYk`IHav)tJLOR%?&Q2n{-SHJQdO7< ze@#zn-;Eka#cxDs>wy(&P6;Jv`&XD%5@#S>k z*pmAaNlwO$dE3|}@**^4JSb9VqGp4ZpNB@QylV#eyeE zCsCK`;uCekBXK>C#+kB@H`Q6lWMmC3od}5Xb}{nErwQ=8aij@z_&UG9Xybb1HI*t1 zp?W%OncJB?1hMm6ctl<@9k;|}C*o@zvmA%;WA!cM*7w_;J8snC%RVL|5~sB#w#6*J z3AT2(OA#-MDJTnF&M)Y&T4%Smyweb;gxV1#S�yj-xNJ{Yvvrk+tKf`dE+&{EgL- z{sCp1It3GdOO?beB|b-m1Wd-5TY4~sU%qTvSd*N4d23>M|Fm0Dnsck}IN~zwZpmP^ z(m`&bL553BVzfY+rP-T!{(;bUTTb~HIgx$+2f7P&{0Bc-dmQq*aK#|s@R#zfV z2N!TTSZQTn?X9q87=MzZ#v@%l!t5gM5rW5HNi@}cObuT9r|MV3J{5bP*gncXho}kJ zl3P2#+*U7~AQ0gp@peSw+>>F9VOXs`Whq3$M>5pGKeLu!K`>-RMc~%@)#5r*-Lv67 za;$3(#@?vfPBv#~l(w0S4DOqr_@E2nL|!`fs-Ygitfd$p zw|cnOx0YUslDJ)I?iG?FpX^lcSIaiGT60Y5I`%Ci`o2uwsT~P1J`df^qKb4ebzpfo3Uv>RbC`7v$T&V(;}A$x&;OE|hH2O^$Q|!%0PSl3Cl15lxeSoW)$7$O7ic1mKs5_aVMNKxXaOIF?9BVs#5N6-!l>>Xjyb>`T z{pR9re2+H|J&J4^PIf2PG>Z&2kmJ5VB`a7E&~@69t7J5H=Hp0d8Tt(b^Ayoi4p9eVGROl>QzRC~2m zxxDEPAKJM>ah3YH3U|HR_!khvVbEzH@gSyyPRe)ZTn0EyGW} zkd};rO>OO2sjt+h8-=o-@xp2~pDmg5=9EM$-py+W(AlF^8b!oA8`rzTtSQm&^Ad$= zXI7g#%u`(l{LdL}TYJzfagniQ%+O+Xa(_1|U1deiK0a|9?3v*flzBW;mhR|6Tr+NQ zs~AVKTyh#)vGV@fdxdTAWSP+mwmB5r6cxCgaH?=fnVFVpTb4!h!d=_BdcyUY(xa&=+;#F;Z{OvcI)z3 zRm1UvJQ7SnwrItmGINRm)V{P6Tx&q6#jL_{HYs zefxH$o`OLYuysB}iaHVfZ`BnSl~gh7uXeJ9OdXz=;R@twf@-+*cDg84d`u)=2wQfJ z^snTFaPRM{H6N0)Dhy?FZ4Ycye7&OSvp~*OKa#dQhLM-=O5T>1TD~9Mpfmz35o!Sik+NLOt@^40h^~7j3R< zx_CKz{+}_sY5#Hbw-+n&=Y(_r+Ajzvl{)f=gi}N*^WwSvj-}K`fx=8;`IQq#K z-H*C)#)Q}Y{p_g>JIlkYcmL;MyBiOr@;plmk?veIctmabd&KFauG~E0K#&_avU$Ym z!2AMn41R$)*3^+dL>zx=@q5HU%>%>%hyxG@APztrfH(kg0OA0|0f++-2OthW9Dq0g zaRB1{IpQ3~Y#76D5vTmTZ~sW$0U_3q_QMDN_d(+S2XnqYq=#tOo>4caHvK)~BvDsx z9&sA~F=KN{oJ1N%$hUNk5Cj5YJLYWXWaVk+;;iZA?ro!U-{cpFa{#+>u6~F(N2$f{ z5$8FC@ox${&jEojXxsQ+vU9R={Ev@ma(sL6n0&9VDKi^^0n63J$#+)MX8uDv$7Cdz zy~UB8@m%(ttc~v1=66e?2R+!WqK%?;qQl{P&ZVat9nilqo+J{4K;ud4sW2o0jX>w2 z@v1CMlmu_$T-4VScn29x(t}tjfzz#d`#qkzwr6a)LCVi45P7A`m3Qlwi<9~BnF>Q% zzWc9bw7ic8eOy9(zBu6Jsd@1TDP!lN`ZS+%?4&Vn-}wte6u$8`!rX+;W8_d0!$hYc z*D>9RNN4HivQ_QM2mIHE<*(^oV6}P>ZaB7b+%Bib=e;;g2pRcBPc?~gA0i7N4nQ1$ zH~?_~;sC?}hyxG@APztrfH(kg0OA0|0f_T2AP$jg48KJj|3?y&1oz)3ake+8KN6wY zfQ#QFjv003<`L)iKW1zWaZGmn9C5Ihet|f1)R8|#9J(zVzw`HqW49e34oKpFBo0X8 zfFuq`;(#O$NaBDb4oKpFBo0X8fFuq`;(#O$NaFl?5~qS{4FBSeIFr67zb72Yy?}54;Q+z`gaZf%5Dp+5KsbPK z0O0__0fYkx2M`V*96&gKPB<{CG5m{!^NQN?_k=S>UAcL};n=r9Bbz6jVTE51&gEYa zjt6z*4+-ZEwfH^ZVB`Ve0Kx%;0|*BY4j>#rIDl{f;Q+z`gaZf%5Dp+5KsbPK{+w`* zD{L6UzeqTa)Rw;|oEOxUnW74*OD%p+IB&H8 z;Q+z`gaZf%5Dp+5KsbPK0O0__0fYkx2M`V*96&gLaQ>WdC{$yR`}uRJ_HR5|{Il%0 zhg8))#p^jS%S0Zvs<}x+OV7e{(6Z)cFscT^5(=RaJG}uGzsDPE>dMXI&HaDO*c{%N znEV`XICOu3H#q9ZAL0%3nT_B1d%STm26zMT2H*|A8-O=`yg5fba`QJ&aXbDTZ_eNN1>V4^BY%iD z@2SP_@kY`C;0?eVfHwed0Nwz+0eA!O2H*|A8-OM>hi{InTQ~4hC(UsUH%~X=?F%!pVsSgaZf%5Dp+5KsbPK0O0__0fYkx2M`V* z96&gLZ~)-|!ufN;p^4cr29=-hd?Wq$&NrmpX46<}&Y1Ap8+<(HXfy0A53}BV5!`3NnGqS6z`DM4-ed&IG!uG~E0Jov|q%^}XU^q(Wn=U?S;@YIn%L>$)p z8z=I6#BqBH5C2SZ)CdBhPY*uas^BhGBY&k=`1{}+e@qmKL` z;v`aw-y;sG9v}`t9Dq0gaRA}~!~uu{5C z9dV%4mcJ*Qx73xJCmhs2W^C?es=V%>6Ao7I7ld=XapO$=kZ??>#qSBHstXVfARItA zfN%ie0Kx%;0|*BY4j>#rIDl{f;Q+z`gaZiY&k1K+_rFd!D%6(0Cmb*8%FPqbvwzIk z9O1Zs{W;;>*Zu|J(DnR+a0IEv?+GUu4G0Gi4j>#rIDl{f;Q+z`gaZf%5Dp+5KsbPK z0O0__0fh7Cg!6@J4F6&ZhfHnxd%{urx&a)UCmb82nP@jARItAfN%ie0K)lm!il9CgWS)b zOSS*+=TgmmmZgC}AazgidQQwTkw>j+Zqm@wv+x|WthpJCs)4YCLTJjV&3=zJcgZ;E_+VaM)zy;yCugx%-gN!EWL9CR(>DIjc9#37{Gq&6ys&?fA{_Df?*Yqy1T0ICi99ubVm(%0(UK}QbjQpafn#8ydkp=Ju z;0?eVfHwed0Nwz+0eA!O2H*|A8-O@pDD!i? z;jsNh@`gek`9r+n7TP$0-{XzHG{75xHvn${-T=G-cmwbT;0?eVfHwed0Nwz+0eA!O z2H?$~<4qgY82-hbZwSyU^&(?Sx#;Fd&0p}S8kqg_8i-wk&gWlk zUK~ap`9s12nP@jARItAfN%ie0Kx%;0|*BY4j>#rIDbw! zm#M~}^7GA$rT^Z%cpyI?;nsXWh&81B@WIFQr#fqH@bR3Z&9JjP%zF1l@ZWEKeMk>k zo>_>yNp1Rj#3`e$+&to-|1o28w^9{f`#Iup82uuLb5?)DV}6J@SEE4-(@c}_(;QCe?el_~ z)Rw;|oIvWz%@fY+f6Uk%;rMy~oN(@2{DN>;ZGJ&G`>4h52`9=65Dp+5KsbPK0O0__ z0fYkx2M`V*96&gLZ~)-|!U2Q>2`Y9O0-%{+w`J&;5dMK2t~jFopA#TKt}HbRq!Z0Kx%;0|*BY4j>#r zIDl{f;Q+z`gaZf%5Dp+5KsbPK{+w{qsK)Rw63z!|%ij|YZR7@UY@ToqQjh#LV{?Q9 zdHi$2f$RT*aN?*Ve@Hml)Z+Jq!~O^m4j>#rIDl{f;Q+z`gaZf%5Dp+5KsbPK0O0__ z0fYkx=g$e}D%BYNMZ&pDZTWk`X`-&&JmKK}F=KOtQ#rIDl{f;Q+$F1r+7UlW|_#NRy8+iXz5va4qDdS3`W&JSVAE*XQ<77k2fLIm7B*K z_&;WB4sZM_e~ve<*MEUGJ92)3Hxkt1_jnUi0q_Rk4Zs_KHvn${-T=G-cmwbT;0?eV zfHwed0Nwz+0eJK0cr!>fhJOWb=qoqC;`exSl)7^Bc;obs8Joi!Ma0kX=CjT(@a8jh z#rIDl{f;Q+z`gaZf%5Dp+5KsbPK0O0__0fh7CgrkGsFox^25D2TbjqhbE zM=zUGjxJW7*LTxGAm28-F{Xt;pfqy{XJQgga-NEMdy`dv*C(d_JvfeA?Pe4P0{gm5 z(jIG`!=9RQh+QE}2X@81V`X~x`S3gVeO9XxdIiVFH}|^hE~=lIXzlsz);ce-)*l>^Ij zQ~Z}y_)gsniZD=$hB@7>h3-Xv)lO^5q4?=~rFg7-wU&fVa`60>x3l{$^pI)gG>ZMb$QgIAX=)L&aWXjYbLhxxN zX)sTCeQLmCf`g}d+rjxm<0 zX}^@u8_zG?^{|wz?Y-Nn%wJAS$}V*YYlRD4u4OW!*On+15SzBy7r@#d-gUR9M)@;> zzV|QGEw5tH^4fmCB6*#4U0Jqn{X>e^F%d>%mg+7UpUU6eL9RaMeq}uQ%AzuS-oWtU zssuhW@6_1R5r@8PjWKyW4+V5En}kBTAvAUPs!Jc8Y^d%wP}G z+;HG$Ti+G6tZ3B9s@8xzeb%rU)NND|PqC6NrPBj*JyMr9W!e4hv-wUHt~FhLE7RRG zeLG&6^W#ngzx}~cNR~G~v+L_sh z^Xz9;$NcYNj@wTfnK=p_+Bw(dkf^L>0`s>@nLF1fjNi8`LV7rr@;0~U^2c>rUjF8R z+0kN+M@g$!Wbj9t8aw9T3Qz#>op)G|Yd0a3xtF5Dse36IPy98z1XyEE^wdVV1u? z*8O%ytph?e3(pQPr923|zxV9E)`!-qJF-r6w4c$9OHck7b?sxU*qIY2&ptfi-G7BQ zdbfZ+?Y=~Z)7L)f?D0w?4U$GFW-@*-jE7$rn)n8PrMi$jqcK+*|B#H!dj0A(5e189 z6B_cqG);0jckLoOlu~hYdfAC@B$F2LK64=!4ZD2$O}oTSUFJvh5oTXP6>ntM?}*k5 zvo+HVS(%l(#XROyKT}!#tO|y>Vqy_WPV>IVZEILBS1c4-{)kX>-9l<)yn_bYycp$* z3bn!7*~l2>AZqgqkDH_|el>Q*U(_P3&nSN??jPowO`Z!|u9aXKxjSvroBn*e_s0Py z?(ju|S>TPxg$81YkxpS;TQgzNxA#qj09z}PF5<9qUHl#4zOy*ukmM~h^{%>)r&hme zOg{CfMYVJx6l~M_fX?Fxjc4(~gZS z_N2n6c~YxwNw6Bc{wEFHgy{8lY_8}ctA-<8Vi*O2n%b)cldZPXd9riGb~dbItb?d_ zsGKE_NaW1HX-luU%}V#awO}zt4e__FDsA04Bbcv9gL`73N;l{4OM%FU-9Ad1_Wt1d z0j<<4Ey7XNOEOdvKeVmrbTuSGKq|yQ0t&mG$bKx~wJvQmqQb0l8*EOVJ6eAvs6)HQ zQuSFy0BWIX&%qL z8A2YRFYmkbR45;LPgm=paE!i}>k59_yJLMewP#0k(p6RmyCXFNA*=OHLoCA|?^eOH zDV9pbQR_nv7U@+;v&(gP`f8Sa$;S!sT>8aC1)rPMy0DPt3(+zoG{g$Zk-+3=avo(H zYxdzcp-&`2tR~*eVqaegw2T`u8%|#y8d;Ix)l>K8$KP)Dud_E74w)1ed*0mRZ~VyA zJ|8x7ddK)mT0YIP+Y@?*H$%ZQ6U}t&Ihn-7H0N853%4JvxdzcYv4=D+E0|~>Br6!R zCKE2w&2W>R^DUgzwjQ=Y`kb%Ma#VEO`GoxrKKXyt|!R${Q!k{Pho? zc8w3*Phocm)UP2aI0qNj@2|^aS{ixCf88~(QZPWBpw>o-)p}8XwencdhZ5w;Y@4T* zSI0b{y@Mop5~eZPg8BIjSLf$r(q4AYSlsff15dJlLOZ?WmgKJ#lK$Kp?BFt9o9f`Z z&ec3qJ|;cgH~UgFvD-h-LT%LLcyxWUhe~>24ZAwFPEi^g*k@XSiNasnd!z4cv*AM& zJl4b!L)&<-niV1Y7#*O%yjc0d>ETyMOjW7v5lQn#q5FVctEJvdvJeG>Vw4B)em0OwW>vtyAWVKDUjn zsMl13udDlM4uNGg4)v^eZ06Sz*nM>T=>5IyY-9vwBuCUnV>;w78+qofj>q2&1b;C2ftXnP`EK`fTai%4N~ot5pvc3LG=X=)6df#L5X$ zdw)=XFx0FO(Q`}L!AgxKq{|W&fsVDvX|8zZa|i#}OuXJNK6#kbUsW$6i%j|?DizJ` zb%b-wH}gpS)xfaZT>r!=b8*girhQ2k>Sy6FxO=%wZS|u`C{9wMY1X(6A=9oE?Uk~3-R$Y=QQ4S{g)-^~+lKA**?|42N znQ*v5e@zQ-Bv&V|o|86<5m{vzVR>^B z-iy)=V#K$uB3XM9P2;?=chC9WfEgwta2~e)d*)}&A$j@~ww~zj6G0K>Z-y1}a?{u6 zv!k#p{N=;7oqSg4uCZ85Q8ym}-t4Uex7hCZoW!8|epnRhvvmg6fjQ75T$o5oS4dug z&E?~72n#eLwEK&E@0Ixa(#?vDk%ddsSr$$vtdT|EC8crWS7&c8A0hSB7!)SJOJG9h z3JgxKShydob}6Ym_}9V_=H{A~IJM!S?o!wGQH<+Re{~E|5MGNjQ&H3JRm&AL?a$>Q zj^k9V+=6ub24fsDE)SeRKe=BlM3(K^x)b*X>o14tGgx)uC&FWaCDz zoL#XDig8~Re?Eh*@Y$X`>cAMI3;R5}%68{*FrMHmn}-grpWju5y>>{l`w3Kpb}Tcm z`=pvb>|$^uS@{Wcou%Z-z$ld17?8$p?_5KWZhFk)a_SsIiQx?2JMNj-xv2cO+?C21 z)hh8Utud&cx+8ncz=bIC)gb<^2p*XCfEm0OSx=-L#or4`LNHsvjAki*EvCuruMDLw zSXev~ojpInEWwS%)i|}`p=sRB4wctLril+8F}fs;vc_D*`W~?ipkJ=0v?-U^9Y`xy zb9uSP0`0Pjjf%q?Y2=&VL7p;7%W8S+l-Ue>Z1R`nGNOMnc(nmqJ>|Ys{Ayz5*igj` z2RA7zDLPSm=7T@amOFD=Cl|?G`(rWLS4qB@EwPAN4d!`tEWM&~SZ(SUF^K!Zg(&<% ze**}NH<8JOahCB8eqC;~;+`iN_2O0E*%T+k+ak zb*Cb-uTor{26m!FFbgciJU-q%l<{|*4UKEX`XN}~<4gRxF;NC=t9cmxo>8L7mnun% zvea|^*_JZRMNn9W5jQJZ@53#hREL{GGpp8WS6$xRT({{NNj3Cx4X9FDT*oIctz_Sp zMXCVUW>FqLtuci(p2H)zTAj2Zh}#zgT2iYDBsr%AgKYXwK5urFovUD-R&Lv5qv1oC7#iw;GGTPRJ|SvhEr9L<`6 zXU_hkSkB2|oO+$tJlyc-$YQui>~q(Sbq{D z#-(v(uCSJ`hu9L3>|{F8!8czFw`^QUT>Q~f zp8s=wa`Nx%6YFc1mX-pIhgoU&i-*d{f8x1^Zhsdo!+Q5ce*03eOd!k7(sobffR3pf zriTvR4X?$XL4;)9-PLiB3bVW4aTO&eG3itJ;+h_^%JkU(>t5YV{!8aBStcT~3eBdvTZ$ zGV+U_Y7*l5R|fTRUTT7aYlNLqlT1xQ+eqyrHIo-Fmayb$4aL&nk(;^^INVA_9tEHsxE z`ZSl1KJx1}u-9@PKhqXiDcluzVYRBNtI{cNf9sr0+PmtED$$ud_rdidcBdSLX1AHb zZsj5wycDi-JrzmWs^L%IN?B_&B40DTfG}S_c#2XSvYxXoapmFK%gp7N{6MVwm*jP| zm(_FxtR#=MR%OF*V3Dq4zFe-t$9_Z4AjM>1pPu3vm#xs5&?7Uw!)ZnhnZ;4H9!aYwRQC-qPpW)x{ z=KtGUVE(tg1%}CM*XCa-|Ea$B*I$VIKlK*g{p~G?{HM2I8oR^Ud7Lt|IK?lfQyB90 zN1dWGiNup=i7!KmyebqKyUMJS+7BN*r0P4muVnqwKk{XY;L8zaZsnv%I_}M+nk-L6 zcv}+~9R=U=D=-KI;2kj*bKb6VfdF-NJXSZU_$3ZqnV8tKZG8kGQi3ize&9Pz8BNg1 zW7-Yr*4=!41iqk4L9-<4-S=v)s5AVt9SxlS{e&JDfENZ%<~Uc?Y{j`XyuATGKYWT` zzp|>l!;SyKZ%t|$)Yq!o9k}G*!zkdWZE+7q9(8%?T_<+J;uv^C@xbHeSvj7BvC;Pw zl;182Tg{+xoBn;z#M0Cha{rM|1^*#%ON5=qW^tsT`y{AF;pk)G@2b8c!Fjkgr~H@@ z*C9s(*C9EcSn`*~Ckm0t!{0mMA^=tjz7of-bdr-(=(Nt_0b@1c4}N#)zQaC2Q$(5>_OnjG#NjB++-`HkZZ2K zQmg*&<`fx^i#%)A-V?Dbclh2A%!xaRpOVHCg$jKoht~?(@tOWfxfTc2898Xl=Uu6w4(2ws&nE-VCA<14fRJD57`b&hDT7Wj=d~|yp?BU3{?_YIu1@3ok+^~tvyg`84M+}bC z{K6fF;B=1Q=PI*#uEw4~fuv|hX`MUcO^#C0F>he=OScs_r%4YFaU7^%jj2@>+@;%p z_IfecaX7F^t%h-2O3RtyTr-Skk-l=k)p$l{4VarF@=*YFvLE8^j-^^yumgB)U0c@b z-AXnn%5V2J_WvWocfi;5GzkvR{z=&zWpmkWBaoXP=#Ed{w&x4kC@~wkgcUqs*IKoz zK%D+UsdQghHz3cW6OJ$VU#=YoUPf^3Mj=~~V(b{HwB#-gFx)0+MZn9fo~{c%ic;u;5Z#0TK`R^ zm~eRX2I}SGUu^E}{)%y#yCnAxjqQj7S~+_`D*mybVWkJ35zQ!NtWXQ@(Fg@7Cuqux z1?6lizMAmc6!PnhZynQgFSd6_s%<5;*d6=^d6yXl09AeA+idMt6~DJC)nMs1_cW(+ z9kn+Y5l=CvfqKQVFYEh2umbQ#hyi(g|2YwsFPnv`)z$s;h7NPw^0(k~*HGVI9ZmSW z3GsM~nUAtfPkylY{F3_EcVISb<|vXylX<9D)pXS+>0Kw~RxThYY{AABb;i5r-KkhE zuZT4<=jnK~Pkz?SS| zUS~T~ez=d{v+cLDkd?kRKEixG3NBTTC)&)t{dmAU&EoqbxTCHz`#O)Le|H#Ve-HGx zRF7{c^8Bsq{-+Ief4AgU*dAZ-)P+hUe_#zm^()6%)p1yZcp)BAX)Bc#5@*xpsl^|tGBr>rJ0Tnph8EMPY34)|Gu z%(HO*NM+F5N!N&7JNJ%tODK^w)%NAUI!f7eseu@KBAOK}k1s&#kE)p})a;3KQ!jkY zzmji+z-3qakkjm6+!6OWD&;mh(L4|GKwOhOqpYY_T-C>Vo+p-J=w+=my$o)y<8yMy znyM9_1JH_j0FHb8VKD0&ajHcZM=4OA^}-F}Q`JX{RCsuKZ8r)@A;%SWmD}d}34xmH zKNoM@>2aN<{0LA1D`5u*4Ay>zN}tD`kOZtze8|HN1x{pnd+>&+xPs(jT^g=nx?h4;xr?w2oDKEh^w#vItTGt9n-3e9Fb z?@n!RTO~F}uI9@mt>u|CTeL26Kkrya7Fbp!yamdWVk(2_ZHl@J5e=Qj?jSDlKbOqC zY*9q3TtfXlQXg8}j6Foo8|RjxoQj}H^R!B5qDoSx51=5)C6lO=4B};)vy*xyQ+WW= zSF!twCB?ftnd$jEcPu?G2v-MGpxel_cB0x#h3Tfnp@CZaus&>hz2LLJ0}j-Yh6vlK z!9p^ng_%CF*5jQ}DR}An#qVq!=dozHBrxBFsLkmv0-EcO4A9*0_2I`qLyMjuP8vUI z@gn`E$|2;t1I@7^JV}M!+v?9PgGmm#7Oeo^A#0gWv=yhnakwA*7aKdQ`+t!AG&hw( zF{{$O;TIk#36jWTS3JE-$%t-5Yl@U0#Gv$w03tC>i3j>SfmwC{W`-Y@m#D0-%8j*a=)Gub$)U+DKflH$s@;XI*%o>b&SfG?63d(=$S{sxpj^pKT|fqY zk9Cz8jzU7F);=A}HZb*ML)R_cu?ZhQL1`-!^q78wW6&$A4{b9Q&(=`-+wfpq<3pCt zr00^BfjJdZ%FA|`XTbd>m-*kywT9BUrKt`*tdFh&U#d^@Ok3Dz--?14J&|A<7@!pi zjFu{#VNWqS!2%10*-JzrN+aw|uqNxOUU_y#IQ^b;EavurS}7wmSWsa%;XHS;uiC%NAU_X8ea@HYY1R4+v`;AK{0*mq$0QAImB@^njWWpnFW?2F}WmdwBr^M?j1AoXZ%U z{HI@YE#j%Awz)n63^%)nW|r2Fr3Re?p~q-qhYpK-D=a@K;}+dWs9*gFP?zR}xVKw2 z$}=v@OGq*O(~Z4A)fpU>(ElukXjG8pzU3s@dttUpWY1X@e03fL^Xhh>-x45fBPdXiRwJg!+yt6~< zh&zc|+H&3T{KqgwlNS!=w$Mv5f3`~n-0IPAQ*z*T@(f16rahAAz-3%F!@yhD0Jm`A zm+t;rK_YZ3P&~1lP&tH;=dXi>@jvqz{`0)@>i_TlCRHvrw{O^5LRozmX8hoKnR3}Vt?~Hp9DWHB8DZuF#p=&kwbdMNAcFiv0AAE-U zs{h(&h{yjIK11Z+_x?|PhVOqb{-e)8@`T_s5XupRas;6qK`2KM$`OQe1fd*3C`S;= z5rlFCp&UUdM-a*pgmMI-9P!^TM{G&|#Tfc-{!5>s>E?fon9uoDrRcJg9)%_rC@sZ5 zN%?iR&RwIN)Ng1c6<)K@}Q*ekd`m54J|h{fbSQ-biIEIN{na0pDzA9wer; zdcTskln2wI>F$(p9bp?vq+w5PT|)(r!XL9g zr5vNTT-Lc$ki2{IgL6(>B0h|2vvD=BESrK8IJ9tb#QIK{CUee?Fn!@703>WcT&`7*&g zcD?$|LEU@uW5LU>ccoLbqYHa){!H(EYZKq1(3w=WO|iSsNY&2VFPKuD5{LOJ&&GBh zA2;92*s;adao>A9i-vp$tXeU19LSB)doLdVdbJ%mzWp7mp6Lf*sOj*i6gjQkRtwq? zX{b%Qn6YJIJ$z??9W<=?@Om3({VFHM0+Y@)s373J6~vItoD{H|Agg>aq|mIon=IQt zklEH-JM96GSnhLP?ta4SNkre2;%?gWrsAD63-roQ&`L%GNrI@#>D4Z=a4?EM1!6}7 zJ`D^aFuWCf=wSr#CWfPkE>`7c_o;i;j%vr4T8ataxoyq=pfTq9zUnWp&!;+R1Io; zq9oYPzqVO7x_>-Ira?(q?GkhXZRt9ghz?)ZEb6a zzbM3J21awK&|G+4PZi6Wh_<|+>d9>@9)JCPkd<^qPS%U{9aY;!PkvGcoyOifJ4GoB z=}FQiztVm$1oQ5{s^z$!IvRB2Zp!T0@Q^aotfX3l|hs(bS7+)g_B_@DcODl_R@OD=z#qB);Pu-+$=*VI@NiUG zA8%DS$*J5-*h|l>=NR(LK#0NAEG|5$y+@DO>wQ#>H4SVFB`Dp3{4+hX3M6$rDjaq} z^`G(3O8mi}?2w!2^YcxMS>6k3- z$h9rERdB@OF9BukGt;=sxwl0n<9M8&XM<+L?edO;hU`DxejVf!sT|~MisFk)QO6v{ zyGP)Dx((x0*AivKtoIw zsERSbbvR}`bPI>3yx_s-2<)w{vI-a;<~qq4a?b*aeD1aBLLLgD(UPY5cP`af-u8@D zTJ)WVz3re=o`vGAVU)8mRjkTqDNv zaJM#|y~<7myK5&h(6xI{;m|DrchIl*iIymR2Ri0O=lF0kK1B*I?io&(CR#Jn+#a)t?1;gLo{H!k=RjHSS!_5 zjJYq(??Tz8PzjK?Y~XCW@?_};{~5i^Tnn}94I@$R661BWELsJ33f-uD*S?8#cQd6= z26kYid%IJ(lih$xoC{W$xT(-i8W+Fr+3Wf5GRw%0rbVXKY=-Tt);sS5y`xHwwjO$} zT`wZCgeZ8XrlZVqLN0+&kP{%;_&!RSnOH1$d7bVAzYS z9-g>$ypsoycl8}LF{uvn3t}?IW}D)b<_X%nkL(8+bYgIu!}r zy*`4nv%fPRvElgY@Czn6r}5)JD5hs`7I{(U+YsEI=9+e4bN=T?u$%3SB@mTjc9h@c zegq)8x4ND-<7N=&ca*5rmg5(8_8jy*<)Nv};I$6f z0OpeRnCd2OV;Dr1x;^mm6l8-Co?Iw}ehdb)V|z?|um#Gt-QBpL-O?$#1E>FC6Xx#` zhYT#m8hT9(Ie7YdjFX)tEo3!k)>8i>CNQ&t`92eiF8*fdUR;+!I>+)o?3^b;lmf0d$({J60Mfp2GTv~D z6&Rq`Z$Uq3A8ZQ6LTY%{H>yL+w(v44C01LtS7^KOTG7W`566Wz4rkP=Ip9v|c;| zeT3XLuZ`gp3r1*>Hu~ka8|Cq`TlsUKPBt2E4G8Ez-nQ(V{>B=j7-6o_Shn5 z`#5d7QEJ!E{a9#mWKT}sDOp`!v4o+(?P|Qg32b=N6JNz2azN9>rHbDKmwjsQIL6tt ziIX2cTH$v zYe{8vza)zKrPwS1h1hDGx0M3WWV?F??OZ8v^ya*6fiw=|x1skPc>^3g7Hsw|TM`7x zEXJMiPPFy6GbxH*_qDQbJ)MuUNJ1@4u0Ztlg3>x_RIrEL+3|T zF;~IR^9y3KCTuuvkkEhWi);nuoL;>txdXShP9U*h@gke$TG4pW0D0m<+}16{TJexN zbnAkgy1-Jwz?|P89AjO15_oDdB-Q&WCZ*FO2x_RPwdZOS>0cN(}lvA_X@rN&fU>K^)zY(O}U7*Wad z^BBp;Hgw6%k zhHM>!Ld_)|nPT0{ zdmGtzXhseoh^QWn?DPoZ21Ae;$&z$PXGov*YTt)t2=-c1_-Kf`EV552=evz&jeOq~;-_=1ppvl(c*NWZGL{XCYpV!<2HLJS1pb&&GUVx_6IS>@;)>cK3$XDH0aUIdBqSLg zCyQsqCtN4vA3bl(So-n=O8?s9UUt^u8ntb$AQ7Ci zeydw~dyi&$Jzi+hjuy;yJ8z2dxDK+ChaXyus?s{6o>z32aatWhH_tn3vC6~r9gZ=( zZw?tl3@cA~Ab?zlcb|dXD@NyS7#Q{o{F97U~g&H34jHzwbF^&6CAXJ_Eps^A>i2b&yW=ys1`*Tzc zYvz!xjS#wgcyxr6x7a#H*V8DsKiG@y%9&DHgY_$p--e^x9cWFNB`JcO?+}e_m;@R- z@@!8bS6l>S7vnB1$();Uwp5r7bds}185Ei_e)Pj2=cu$L&#jAU@m??@)dMSDFU8;I z4_TQqh!_u8zYbNDVXdh34MEfF(xh&R;=0@@*GueIs*Ep?UKH!4(A^2wW_c%kJXO~swuiU}j zXHg0dW-~n%S#gp8b{DofYL_Gkr}>1x#ImIm?K19w95sN@>)TtyU!s313O#Yd`Xe7x&be;1?pZ?K z9KwG;T#9aTai&~`s|uEhMb5^q2NmrkzOsX~384|Sfd)K5wgdO1;m1#;t#X)_?aGLp zX!|acl`JTZyWtO-V23QD*c8VS|L~|>1emBF+quf5`q!D`^*?i8{_`mF>@WAl>OUGD zZ^?*wSwncrM>%596LnhrRFuheQg4@E^0%pNsUbJ*SegCp-_>2Q_`6FcB3are1qL~< z`78W`?*cdY*S^aeBJO|P@9_Woe*dZOlKA)HKl(0b`hWe9gnq{}vyz!>ecHBdzhCqx z$#@iVz~Ewc7{F*(%|#U%wr_=Y3v&GI^iRsj>;rxs(Y_610Y7`z6QLr?ll{_Sta zmFeuwF!}83LVf{s+bXJHjyaXEaZep!}DWdv7ae5z1sZ>y!_aX6tqxZhmMzB?XH zT6e$icbl(Le~E!)@fIh?mP+Jn%{iq2K1isOPSUX$HM!h-vyg@!WV>;K12vfQ4*La` z);Q1uYn=2GTRN*0lo>zwtEOloUh+qxSrh4rPiY6C-$Cei5c(a2eg~o7LFji7`W=LR z2ch3V=ywqM9fW=dq2EF1cl=NEJ6;<6#TfnvA9m~c_m=o@gJ5su#9i~opln(YV(hcL247+E5WED=VQ2qQ~`ktM>& z5@BSCFtS7#St5)q5k{5>BTIylCBn$ke}80&(*A!O;Yj|y<^LPuxc&Xge;?sw{~y=* z_YjVAz`sT~@u>d-;aqe0FAxs%-;4io&W0^{~p2- z$p6;}hxW#QF-X<(_a*u< znZ0U+@)JdMb>74m<5$$_<9^Whj0JX%WyN-5k>rmgbl=8EynP#!T>P*XxX1eW&Ghu; z3V00%0vkdX5w*Fti27M{YX@Rc%ht}$pm6QeE}~>s$qb%7eN-wGZ+7sxDu&w1{w*!N zup=;?sWY1vd_%bYfm4E17`pNE9%r5G??j?@<3v%&gIWc7nd26Q;FN&l!w;^*4vSR= zd%?8ZJyHwKRp{e>+ejv@nl@&Mv8bjn^U=edvEa9^uYFK9?;TwWea?9O@}wHeoSP&% zNzL{erp;VOOw^X#zfCgD@dJJU!HKL_%^mFuIC?qJGP7%ei8qR=sqc#OeT)u|{qo)} zytSn3GM?n2MbF+b>u{sjdrR$WxnnNS&yN8?fA%y|W>R+su+qR{1vW|IH!_+%GD_Z zsiasuW|Da6e?cHWhD4YScU#lH)w#E;jhHQN1n5uV@v+c!R|76YLA2YksJAD7glvD`0@6}TN#`MG1 zJU2x)W3ng~dXJh@;N6i*L~WGv&q@kI`kPsKHs5!nM=Pb`?IeE1JKhZ}`J}j`n$jSp zUEANAh~k~?%P_QX-fR_6UG$YoFtS;nzClm+Q)u4V$`>pST_Vo{^Sr^l{qem-^Ml*< zjB};oC5CEeExKf}zPhY8n)?QQe=hITHkaMPMk<-_i`@O`eVs-zVF%sXYo`@);grA$ zxz+TFE^UjJ|NO-&3TE@jCL^8RvcGnvxBn5n;>fF}4;i;`rek@vpLhklqm6!iIA9kd zD%_E7P={`Uh%9}G7|2Kp>z;@%O?5^KlgO*F^7~t@j`H$Af?V#&O=uRqvf;IOqU*V! zIYcbpK{|TMZfk?3ps!4NrTi!QYl$tYd|FrbDO6D#+F#%wYBuHB+We_bndn0M@S!+!=F;;a=j3TIknu`KGOCV-hq2Am_A86 zQS}p*i?fwFNkc!PaSj7@q#$KZOcc5J93pb_3M_L|7~<*;YrVf<^YhW-3c7mirIM^< zv0~MZAraB{#ra$_F->n*gN1H<5FpmqxUq&HlRu-IUr~8?%Ku5v`vwYgk0&n5G(45r zLb!VKqwE7DdeSKc__uCpyGD={iE#>%F1{dY_R4+9r&Gg}vhqy|wS3wS~ha5~v_i zPZsV@+GM;~u}dh6xF;5+(t^8pd-?9kpw_)-F}3C~c`(6qw`W>aN0!ZaYtO

    SO8K5Id7V1l3;eL=gcZFb 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

    T|4t$KGyYP@zZCK>h5Sn)|5C`m6!I^H{7WJK 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�PGw)uxkIJS4kj*Ef97l}(-0r^@4up>V%*iJof$oP8r; z(pLpyTda99LA1NK;OhZmv&B6+T(Gsh-FDQTpBMEJiYL(0xBXcquGqQ{zF2lBU)vGt zVBP%H`Ip^20We^-fB;c+`WfrA{=4R@oJ_fQ9oYh$5R3UdHWM`Y$@t=`pY`}ZPF+>RB0dSE*Hd7f+vrLG9R-y9z#El zva%e#h*L4z7KGlHLo>i*Ki01u>}yW|4u&2X<+|x?+3cmS_71?;FI_0Lx@p+UaGx&2 z^08&Qm-1YfahIlj`wF_~3BfO82Yr0E0y;&303)lNsC1E~Gx3#$jiy1zEzp}hUXqtIbA;RlOPERU zZ3s;BfXij|eGRh52O^$MZ(MfXsG73uF!9r8W%iGR)QQ55+r8SS!p_(f+YgZf-V1!^ z4zpMR@_chB8Zqr9!l9KFB7aTEtLgOUE4%wr*oq*JONpT z9bviF2146co<`yb8L0pHuCxb$stw*b@L3SwqX3iu5_v4z4w*T~$F_KT7ia96;41)9 zf*2*;#IhHtj;(dqzVAFnrW1XQS4%OV3M}U1Lj@EFx9?w*8QI+w-J}>BNzu4OmmIf$ zxxaq#Wmt+}oNp5~J7cPHc^v$_S+nT6>+Cvwrz;9lqPYU^bIo2hUS4yZk3iD4; z3^(dp?t~V}ek#eExGF9Hi8!4Q2BQVY_A5ht^kB9pc}x~pBlQM)!B08+su6jYd#4?R zc{z&Nvhm*HD59`>JK;Ip>2|$Y&wmAJDQES z@A>vu)`G9_*QCBc*BQ%QKZ;{vzSSkuX)OsPBf0DQ+RqTpgP(@rvDNJNK>=98?Y^h= zZFjVEebM$o<{C>7?{6OIa@N1g)rhen^yrY9QR#6LU<%PtJ%|MGF5y7zYeSOt+PVo@ zIw8gfO%$h}PW`&d$0&Ds_IyPwUPR_z${ii7D)n14I;}luaGaM-0*Y&`@~B)w&V>*4 zXVlO2iSqDy4j5^oPIGGXyVGhpYA&kHKpFBM6VX0JxV+Wll}15;mgJye6{fDNT_PVF zXLi#UpK#Nl_%FP^&_eZ><3sJ-Vj>%O=DI_@9J^`ad*-$Kj+^p2P^HyxL%<#8(s3^R zeqLk5uMln3!JBXEOxs5biaQMsAf?XP`L(O=W zbjGj1?p3IoY(MTFcU}!f4bn@xuRj}8%>`Jy-kF^WDhpOL9Z&a@?`F)J>ou;8sBzdP zXRPg#SvA@ZG z`L<-&TyW3X!p0rPRg5@Nnp804%fpmJZDzMdw(+JFW9pLxQVU|R78v?cQx!rO_K5p)+>ClmUz zX0|eY*nY0ZH>g$7v?|1~YFx`$705)Ir8$qy_&OiVVuNN+r~KNvg1X~eD@vJLHUi<{ zq6c5EUNR-I$m~1nybL-Wffx=zk(;n`i=Zy<+(KOmbEZ6)E7z8PRSxLD z7C3MxLAiGllLnX(XvavAn6Sv;B}}VF0P6?4*(!S1UN>SjgYRgcqeM8*k;>N1igmQk zr$|bfJijsRNDX~6kdB=8^L`{v9xaMwW|bl+>DN_<=I?2U|Gb#F_g@+!(|^C1QMyfX zmxSCqezvk;pUAP~itd!$hn)}GtHJeInJ7BZ*y8|Vbs{V;_-~X$@W3A{hp({zL^(YD zwY$Ho9FpYzyn_0za_CWoQ4TT6Ax1gGD2Ev35ThJoltYYih*1tP${|KM#3+Xtkj6vv+l|%Mlw=aatQ=h|zR-E|sp0n!}zxiDMCgZ`UPBWn@^&(sQ zDKDNdN96)#Rt}$vqq?`K0&cumjKs1CNt|J;unu zGR)xYIpZc=bv53!#3>KxUKL`7ICZT)F&NRaQd|@Nm*CXv4Pl(0-FAvMPnIRhtPe|$Gt?SUpsGYq7KQ{ zD?O?u>bEQJn4+F6(@nF5@nG4yF@$|Nh=q|4#zDQM2n2jukIjFIay9K#zd z1txH}QyPksW;6S@G}QT7%z6rn*&m9=-<)@2J`kp@x#e~(>;2PagfDBkVPU?vT1S-;jJM8tHV**w8j)L3i&y30#lL}Z_WdQ3-=e)HxNz#OHWc;gIjd0AO> zBY%aYSMfUzi)YgnTFYj2RskwsR+pC2)@~&^z>04>x-rO&&yeZmZ!Gp%R@dO+MG( zu$V+>Qu!+uyj@`W($a6E$8V-(d`ZX+t19HNrd}O+>LYF=N`Iq#*q{nD6eB9LZyK68 z^@P`C?$~BQ$~0-tQ}OZe`&9M*LlQc;>$4QzG)u5gk{QLF3(-XB1+{5|+xcyr(QDc@7%w`CBY|KPU zT3TZ;2%@7>ZP8)k>l&I&zA-YCVZ^;zOGOqluo*c0F){ zK6H~mdqFyDN7rz*(o?l$3_ChiTthwJ98^KZkGEQA3VT;Nl(UV7D3Xe zEF$mHj2SGT^DTj&-GfkU+0qP9_W*LOttL<@ZkX`YJ$9#vDLM(xWW|E$T$#2*JYLvWtq5l!lRskjEG65>=~#fT#`=)C1<8Ncbc`4GZ0PXaJQ%nb z%2gijkZ7FAl4G;TMQ>;w!x>bH4ULl*61* ze^KLV=Es-bw!p*8Z)u`uua=h2@tR81D7^2-=leh1vG?AME?Ai&AzlvMKzn%ZaeGo` zb-wWTZtvCKu&c}jtR_%3=|hX!kII?@G;*@WE6z2kAzE4b6)sB(gS~+-1SCJtet#V1 zDqy?Z^R)iGc5?M1S!<4Jv!#DjOg{cw7r>kI0R((e&akK?(^Es&_^?l9utf!w!>FZu z4~t#PH9*W0Z=BNkd$RHK#ieX0zKTc90##RW;)xqeFre~v*>$$PPI1umM6EMfea{Mz zIW%9ZKF-Tv^HP}kWYH5@b_0Eut<@ZjeaspE;#^9Iw=Z5ilhW8tFjKS#Z(hWajVt|_ zL!)uE~PJy_)V^q61ZSCVIc}4(6?+gs zlunNPOGe%U zNo=RfpzoAEA2D2`-<>&ssoM3R{QQoqYQS|skPoNW4lE`XxBC7^{J#nqMw-)mZS^x19JuXGXO|K5hUESg5lEij&NRdxXXALXcx>Hv_PaI_)%lJ zsGVZ!po4q>eG+}_`0~tzM3K{%z*CXfLBjU+{x#vV!mNUZv8zZrr}p^8!|7)XvhoY% zj+Pu3fprgz*9LPmnPs4796Z2ui>|W*o9=YUg|gg$yOBKDOBOiWc?{Z^Bsj+3AZAsPlrb2e)+tXTiK+v`O^rD0gGw%tXwENEUjf8a<9^ zP`*$p%=2SY?lze?KC3j+S>|b_?V!w5feiF7K?a}|Wb5W%RTCxZwMX6dD3g##MZTx^ zUXbZncj?B(;E9gz-QJt$%wI1Gb16e_ps`}_XEu?y{QNHY?{*>MU$zTVr?9Y?m{r(3 z2Y!xu|99;|=U;ZA#Q$p-CKxkzAJOQjaH-v~c~*W)`N@M=`_D;y6Hj=BwLT(cGlW>#@>787*w*hsA^|P z4Uv(MwR!fT27r9;(_HOIS+O?P_HaHZ$6I#Y_sO-x$xPhCQLg8QfLPX1!?~l-maiPb zL6HF66|x~Qw~(v@y1ty~zO{}Ix`&}rySBYY9~TpP15r}Mv^=Z9B&HE;zydZ6&|vCV z&5NX4?YAqg!uwBscADFiCA!QaRINM^d0i2#d3gyqgC;4}#4yBt(pksO*C?RDMF!yz zZ9>!jDB-A`YYpe6jOsNSSb`5vHf=EGzK!*% zYI6PH-od9iv=(KN+tblnbmV&oW55EYv*18pq=m0+3FVC>iG(Tk}|Ktub?CId9>V zx7b4YHk(Jm+9Y{;OpRFPYA0zF89Tnd0@CetAGmCQI`AkhIoVu{%6;$3bi=R*wavVV z(?~^yDaTZ0&`wpHH7v=2?4QH-Da)E!B2$KL<}OLm7_9dD_)WR@yM^89-cM@pG-Doz zvV)i6p?7itYU{WaJG>vC2(*fiZwX zy~rR7&>pwVk3?{_o0lyf!fRGU36S_Hb8iX2oVkGUx3~97 zp15FNeyL{6HF$(8FC;-Wl(`pXVY1V0?3dsnPkDaxs(FVDmE83VqON#{VCpKhTj-J- zD^Ye#0eITwZNx0GDC}HQD%>HSqreBfaohps6*uI%{Vm$wp~Jg`K$qH^HID;iDq6;` z800{R{5wh`$oR5DP9xP_gAq1}ZgE=P5cyH~71EX(2KWHjMt#&w22d|m+`WF5`Bt)2 zTWg5m8(Ko0#ehpJ!iM8}_hflBYo1Sg$yj`GFBB!ZM;}mOH1Uv5epiUjRd#_f9@hFA z_2Gu_&2kWr8npPrv^pPI7so5~3=_54xI&fDn;s~3x!4kEO zOk3@NUY2roDmQnXp8C3{Sdq8CV`(AAR`~=bS6_8K~gQ@b(kG8DKJVp zaFrl-&b#Le_M98zhdA5b(+^F4eUoQpH4=G=B-MEwY6f&@wJOGT&=Rx6;G5G1@3m7v z9n(rl>Nq+PTJcu<81@w8*AFETl?+1yQ^>JR@}?sPkV<~H6Xh2JsbucFJ$ec-uYSKg z850H-cBKnJ$x#-7I1}AK1M1vH5G{>Wi<$n}_Z>bcyrk#Fy+<9ifUqGGr>tumWsPhg zi>0D99?hfg0?gwzEY;N>eam;da-FPdBCDiLH^s4N!0C-+eWyzTo4W&5FZwQ4Uwf~v!$N%my!)UMEVe7PMu5}}tLE}? z#b(ziyox|8sep5ONF>v2;mxY5{>#U! zV`+@AN)LlOkC$4>X>x&TY&Y2F1>T%ej$5eM&~H(`pTZHpb9}++!W)UKB=QS88@k91 zX{(Ott%dZirR~~T!o_9Wn7vk_1f&g#7-bi5W9MjVZ7pkSg4WN|v8<=j?lw%vGkjzb z14y?;YBs=^nF;pZqwG_>-gOk`4WF)?wYw5KCX~sfs{Cdou~3&fgCQSw$04igPdta3 z9g02&AN3@hE{r7_B9J!t?aG(RFNxau_eGacs<<+$Yz#EjoSiZw4~?`>RRfqGqArbKqA}a6D)51 zbc8;r7k-T9)#s>)45S7oEOGm?p+0uWXG41_J8P$K59oGqfM?zj((8a=P9w-Gi*mf~ z{npOIFW9a%E1Lf2_gk)1JQ;(HEL8KS5YBZ~@e!Po&q3UC1;$i|-@BiGoKbAH-*w6s z_vi$?)KWq8+-SFe96PE6wB%QWyLZ~AaEbzKRAf@ynA&eBP>YA08+L$d6K%SR=gCfr@~Pxt{jS3_>8V z_z6sOE^+L?b&N1u28?_RJ(r=bn(g;7dpy_O zxTLfe#1VaHpA+DtGVOAH(M{|ADV)J4ej#wa6pmBjT8$Swmn`L3^47g;k;b-{Y=#ZQ zdC<;64j!5BJ<@%>t0UlnNT@_6${Tx8?0KPY9?172c^Yg}2*8k_zN-eQ#J$M;W0hL<#Nn%WGvZM(92KD~Exi0!E#tq%`0u68-_GZ>WO&wB08> z&3QF>9Ifbt$X(8a@PUoMYx7TTS5!-^^25qM++8h!Gn%3j5g%q=XA`_qx`sxt;biyT|*(Dnu(G6 z?Vy2-Z(5qmGwAuq*KLey2wTZE6)lIeL=5&l??~(3j>PZN);xY#)Vn40;=RLx4)f86w4bl%sLi1Zx)ka~uSL0!q_V0hyC zRur|Pg(OWXwIdbD!1HGZw|K$Jo@7?>M)42hBWhSR^Ye}FJhuOq!4@Lj3qNJ`{mdhn&1!}Fc{M8Q>iL~TJG+XpS`>W~mO7jwnk zc0+82H)R5uAq$`OipgES?VUSAPGKR80(pf<>d>cF8-+Y+4x{`sv zIb}$#ptTw0%3mnhIU#k&AGs#_Ok0P8^F98HLWd^agBYv1mh86 zJVJ~|i17$99wEjf#CU`lj}YS#Vmv~OM~LwVF&-htBgA-w{|g==@!U_wAc^&d(;)Ny zgQ5JKwT_^>MzW7#(xYd_8ZT{D>-fKBtb26@FPE4J;-lXw_G?J;f4f=D4{q_}frEvG zMPP-6<^HSZ4Xodr-tI@QACK$5o_{=WNpMMiJm>t&Hpnz=d=*~2c&=+>tK|05^~HbN z%nw}h-yUiwe~fVMA^!y7V9oyt!lC=s_*;Y%@EwD2Fi}uU6ciH$#Y90dQBX`26cYu- zL_sl8P)rmQ69vUYK`~KKOcWFo1^xR`(1~A+;fKCYqG97}VCDSMM#b69>V@q;Ws#qE z2d-OY_w0U7l@QVMdp8FDdAHyf>eyHWN2Q3my`SJ>7#j9RlIKVTqo1~Lvc$xN4~8lLa3!EYhF+;iAgPkfxhteSRB0CuwlS=tw3X&nrQno zj-RIx@@BNFu_}u+QClual`@jip+>UkI_ZbuP_t7FOA9><#q9f* zh_0D;*XqAlyTuI#T;$HXwFG+^Yt!y^U;24d@6|lF^7q2x1=s2JPPjH5gx$y@>t;8E z^`12p)ku-!?#A3Snl-YLEk*;chrVl)_siK^aJ97Ak=FA{!)JmUz!@PftoHdKFSUL^GjZ^4*O31rk^4h;?N>Uupa+NjpTJ zr%N@J<6!B~h6$4Spi94ACT|^!Yz#bu*Xm84GlI}F>*zfLC4A?Ege^H}NIW_rYac<4 zQCw)r@WDzD4D%LeQms399Xw$WSV&?$pM49gZHxX^s}xcJe~qKa!7Wij!*|&cK)j#Mw_lhl?U|_ z08t)%#LSl-j#-G=LqES>{GzHY*#|zO!!9X+vRO;7$a3w24i*(}fl;X7SC$ zn<5YVcuUr72r(bTb-d5DWit0{%LHh%W%4o-J}VdspXGkmsc+ai*5udnsY$kNtVw8m z0o-CyUbP#rE72do_%RMH=E4BbHgiHJxi#Gd?uc!f02#JS^!bim3O+TJzjf1Z{bYUY z-^_o!*0r@nkm#2F8ibhUJ$8xz)C9Sx>4Is@!5jC-;b+o}XO8YNC;#T%c^H;a=+x|ZaIKN%?udng`L;Jt>{pbGE|G_#xYDfRt|F8V}pJV@( zb$+k!|8yM2zp?MX-H+efhaa`7-}d{X*FTQ6KWh8!@*j@#Z|os^IG2V)eqo%~k2;b1$2RmWV$oPv-qPRs61D z-t?>Sx8+GjT&{ooS}=yWg4u@|tN|Un_LT>N$&$}YZver9RMY^N+r!2Cl8o<)?H8o) zFj0zBTyyaMdU#zgk{+O-&=XNwT&OQ`CZo6Fv^t&hEm9`u3ZJk4!M)9z;eDgq5E?sr z5u(-1d{&t9J>ewjXK93)Ri~F&o1vXyVw{qa>G6tefC>3KZ8APjiIP?lJm?wtS6vSj z)Daa~B*tJ>ntQU<4tCnQ&krWlKkc>DG3|^+;n&|DSZViG9Qia}X#=DvO`nRp{s zm}J(Bf9zG>i80JEhB?MC#~9`q!yIFnV+?bQVU97(F@`zDFvl3?7{eT6nE!7W=I*~3 z!+$JKE-eT2SwZhGlZ5`7s`Pi}Fa4f^hsCKN=2QJ^P>z3d%*C$!q)$JHpwE@xOo)0{ z9UCj57r-e+_>+6M;{0CiV;<+{5LP(jd6zPS{dJmFPG+jStE_6pFD1xC3|mT<)rEE zV(9dExUoVke&BB7#Rejv&BOYLHld>{4+4hz0szafqUkO`yq@X~0L?8L5ZJQP+PUJ? zwyj7agE=Dbl_r8`g@fR&Tbr@gY3f*WSPm2&4l2c?J9VnGqh$Y z9Zo*!O0B)y4EVBAfj>53GCsvl``rT+){Nrn6_;B-&&m7xJaCD&4jui(h_BymhZZC76Iqlzc9!1j|q`USm`cfM_ZRZB|v}RbmJhkd_gvgpBPzJ40CkvZ#h1+P#DFePPanxP^Er zMxy`-V0`aoLhaToMH3RIkyG<>SEgf&ao)c9stHKYPY91uOOic_rf4dErZQ6@04V0r^hdmlODmM3DSwQnU z$18&lsh?oirdM649x)|^V_sUoc<=Q!uO8q<*e0=S47YIu$Mc)^tG^UD+0Cu87K zj{vZMdwcKU0-}gT9;=*DL1M2k?lZD9OEbu5=Ao6`3jHg$woU=w==nLeT~MsxYv9X9 z94I^Y5-2W^7If}r(W??9zkGb5BavNu#UK_gCyv@e^3Rp$dZ_FpCS0& z_R$1TC#Oz=|D@GQCSJK-r@%?8;Fv&Af}TTCfc@rSkpI1QvbOtjGAXxNX2%6tA~MMM zXrcM3*XIDxJ^0tfAy__x=Aqx1D9fO-T*Y}F+?`uZj+lKoGIlG2Z2aMuTp*2XIKntw zSmLGx?O(izFY+j6c!s`bmtgkqIL{wsD`(Xx3BF%ctqy{>>1HyM{=X79luUR zcE5KUlYgGfp8ULxiLIrjC6i*twH*UnCfA7JsVVLAy=OfjtrswmFt!<=m>gr`ndOwm zhn4x!+o}(fuFAi0WT`#6Dg@)BKUlx5G_E3a@@B`)@k3lvJ_eJI!Q^8w`Ix_-k2(6q82%%G=82AK;GzHT6V4YnSc;ImE)M>Mq_J`) zv9Ktlti$kc{sb4uf6K>Q{!;o5G5HuwCglHTnGnqW{=H+C;iXS4 zF-M+`*;%@+am~Bj2|?$M02B7iub-L##}nZDReWI`Y0gF#dH5s6;WcO9x`oD&qS`uh zoOqVtUKcY|(0Vw$CR-z%ZGXkbTvg*cn=p8mBweFE|@ zUlZNh!W9E=^|$(RPLcMWwDp-lg>=GK!$nIj3k`7@Mb5d2@R99kX?x*>>DBCJR6$EZ z=vH8xL;)5oQ6`pIt)OXH5i(W?Y@?p7Z#lHs-#`b$Oq8g=O;FU!Iqg!XU1L9YGG63x zy`;9B5JcNYivV2hhwIh1UsEX3dy&?iyrrQX1BZEI!}^YD?=n3o2(|D)M*7=Y2R=ha z_d~}r4A$f=4CW>+UVNSM|6WLL#8X8Chs6StNh7hF`Y!Gf$kl&ym1y_4CiAF`?(FOc z?xQcZlSyBg5dYp{SW?ZRs&F462>ntDklQ90yqryAy#NUr*;c;;1g7MoZ|Atm=nP+c zD5_b_xH58h9bq>2(A#t!7MaszdjrA-!}bfM?7j3=cLOk{4W!n~3KVc`0ksd{470-N zmfoaYd2GO!`OK@j_)eB#&?V@Q`L_TQ>{}60;l^CFqCVSf1XRC{a4SwK9|Jyzii{* zaP1F#^yBekGKznjOQJ>Nj}gvI^q(M{hf+Uj%+BElgs`-v_7Gs02))$^|-9Jhbj#$Q7? zA71@2!m$MZ3BsBDwaMSLaCUw*{ubeAxnd9w2H{{34hG?15Do_6U=R)l;b0IB2H{{3 z4hG?15Do_6U=R)l;rxAsqxJG9W7xvO!XnYI@ink=ercoP>}K`C_D2TkM2Ko#JiFd-UeY$srtwmjumE-D%0J%1X8*0c;&nFx3hIn<1wGi1BSM|-%4ujztrt(t=cMngmTCz2jn3B0~;UbQih z+oeSnB+MDBsb9P9=1}`|BieqV%lZ9xKXzTCReH`KQ>t60$lkD6|C$HBvX7`*;whj) zvi&=o-gh@g415wK!%BG!zK!ySp^0#PiauZ|9EIO$H+&u5=f!r2eCoV(N!}T=j0@Y8 z_IUQ4pSPaoeSIwzKhofv=)xOD7p0d;)Mqf>?*{^X#M(qEa?S%W+>DKyo|cQ^qz`kz z-PYO*9uA#15@Sa^g#83KZZj!5E6Iu-*oVM31q6AK#9{&7G&zjpR-36%3A8I`nW5>c zVT8$T`598+eu+oX2VAhXC@8c_C2Xv`?^`{C9ukZtBve+jTPJ&`)N8%_)eUBpm-8q7 z!OxQv&hhhcZS3p>^SUv<8@vzbo$l`-#h4HS5qTUE?g7=Lf#}N8?%+}I8ob0s4f| zjErm0qndU41+4-{dUu1TcrV4sqZzxNELCR$(~W!04NMvqFWz^9`u7wl4x%YaRMk$5 za(oI5o_-#49F23l2U<5E7BLN3Dsy^}Dt@=Eh-|qh30B_?OAJ$tW; zT8Q~~KOfqc;r6t6)#s(wRF)}T%rg`=%x!RFP6%%kliC78SLDqG<#_v?B5%o#?}WY(_yqKBnFWT~%zZ41#q`|Vb*r?R|O7%YG8 z1$kPA*m4=132Gr70ysTT?MqcZ58$iasiO3}%AO|ACWsY1to^`Q&pwN{R?6V1>g#?r zb{MxZH=I6PmHJ6akWx?CGjD1b&_24Hl07NqGQN!RxG)Sx5WQ7Pk$})&^HXAPv}Va& z@}(Q-%-hfw@LC&NM)z=nr2K$;3SWA>Zf^lXoDq>eVh*w~z^EQW&x_*m);GdP5W9TF zWJk;f_D8q5T>HHLhrRcXYHI8H{pkoOs5B`8ih%Scy$PsDks?a(y$aF^kPvAqU8Q$X ziu5L(1VKPRBGQrGLJtrEBq8JuA3eYOzUMjTZTGpq`%f}PMv}csc2?HjYmGTSbAEkK zHakwbuwj&L%jQnwE7E~ID$TAPr8iyb_&uLiZmbMij0g=Fjie4|=~Qukk*UD-T8_l{ zzAiR4;>gJz*@@?mm)x_ol9v!TxLDIp#`dZ|Ipo0-2GBs+#Y2JCIyJv9q%V0=Vmefs zv0FN2mm)M)9>J(v+N@EEN~G?jR;K1=;4rvSxKOoFd~r|Eh3?TggLC-DPUpqVz`%;c zM-slS%gU7eV#Zkh5nUBuDxYh85l>g3bBE$a@U6^xcgWg62icZOo>fM#?18h=G}Uyx zq`tH0LGf(5UWU{yna#K{Nqye+;s?HC(ns$T1IGFM*xfH3UV1ZS4VM_|i)jWJO~^Ka&tF!3zP5Ktzoi=(h_oqB`Ls~f! zh#NbZlEz=7!~wKDuHS|@A`{^KE!$Oyn5T%t!MJO;G;;JTk%eDnX_nO)6&W$3$U92b z1-hN(xsBGN3VjdS=O;?x-m!qAgwjAwu~Dl6;LB0q^-{>o{%`jjcHDLo46aU^Z11e|uW&Ub&0CQiZSMg}DbuW3~Iu z-)dSo+_yM-T1#*MewTk;Tc>OVNANNmrcJhe_Bh z@J|fq`=u?6@mB)nJ%Vhiug0qFJU7I1;wek6t>oqXUjJnON!@RTF0UwvJ{Sq<41#_ws28dKO7G8`=2xer)c;shGlONvT-kbsO{x7CW$$LCKFv(N zX)3V9ZW#a2;4SY!z02Kxom3sk;+kUeC^bW;@AufX&r@j>p@cQl`5nKjMd|vrO!tI* zMRkA_=i%*@Sj2JS>FP3Y7uB2xKUP#xVNAiFx~#jdlLcFlfIX8crX?_k1BY;Jv*Ey;S? zn>Za-rKE1u)e~5jU!S^qPV>TE!5qoL%eR+pC=<;V<`f=7dtQqYb0V4hO+h@&_F%+S zSE7#nJtc2whlov`KOgvYY&Y}?8oiKL71Q(5!daT*bxmQn5Y4pw?V&CBlnWTwWi5BsghmFwJLFXy*7#1iCE*9;p`-BlsQW8h0|x@zo%(H^VA

    >OI$D|?luqA1iBOc_qd9>xfEMVIm7#P2cAzgJ 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�L8;)>1d3yEO>Sce}LT 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 RR;Eekdz?7koALS>_JE zhj`7bKJ=N5wl34C_S!*OwFy{8tzoxx_k~S>i&VO2x}Oh||2yc&aA_JeSI+5aa8=5I z)#g~_OiT zn7Q+5l~1{50hbp-7?G~mlV56XGa>jM;1OAZ3bsYiOs9wBrw|+?q-0|mg|1od2`HO$ z6Mf=5_xBxt&(st)zfPpY$gO@|`caikF2Su~`G+zGPBd{z0Jec4rkj9kR7)Vyw-X0M zmfT%-E4Rp)e{|xnJX}?A6>Sqf=yAIeDj82|q$0L7@peMxBV&y&tJh13x1g;vc4RNhn=#VzGNRMPfWUL$MvB-wB;ZDVol)Zvah z_hX7GtFn(1)qOH_X{TW)SJQp^3516(CoXeZn7_8>Lw)3Yx3B57wLt+F4Sty^U13v* z^mI6;rv5R8VJz$f1+k^fB+G1kA{n(QHs$b{a&wt}(4Ec4=*sDi*)D>(Ua+rTFl%8~ zU`;+In2LFpK>s7viZAbOpw=UKhe!Tok(vo9(iKV(`I6=hyoIbC{`s>d1ZOkvpzJbK zw^4>Py>lP*7Pqytd%41!`lCNi2pI5E21>1Fm*7J6&b&&RKWJ-t~iZ%`AvL~mr zD8tutPJ5#Vy^}mg_RXkKH1^bCX$NiK~>VGO+1n^xoyRrpcNTM3(_< zt0{Kobc?7(P5d_D`MtSNPpbty_fJU80H5r~_@r(`h)*th=++#p$R!59W^JfjUFP>6 z-~Y`l4^-v%Ij#OO%cJ{0SstUf-#W(9A17UZp!({ulA@KJR?^ed*GWT@e$&4ZG*UEDI&(G{n(b}*SQ2)3gJlU z=R6F{34%_+#z3DAEtZZ2!=4A`J;fz^hd)L3{OSf=t6PXJZydW6YGlDz=(_Sc{kBw6 zry>VUrSJ!h-%!}RIS#dv@d{~VRZzkNR3R4Mc_;1--61?ro;V7J4|)ZA_z8q?(GP?t zbg-L==~C#K#4kKykM2B!&(*2jHE?cim@(Pr>|tF^(SWDbxgx{f=rx|p%eL=v^TkWF zTwd9nDQ;hun>a|fsG9$B{yNcCDqB05Q#dOi{K;O_psrIFX6H7dT}|y2;*P1>6h~cJ zOdM5+hy0Nb?%paU|T#6j9yTVzFVmuN8I#il-5LZf}|GcMYn9~QWR2h z_|%aqufsfV38x;J^8Qr^sj{P>B$X3&8+dAugb^rG(VIJ_prf%evF@JJ=r(h>DwOd1B!&1;3}HHda07d*yPV1i8S&aAc~)M%_9Kl5_;;aRIqX2>D=i zdSAF1wgzg*H6xQ|!kYskfgAfRk{sG$T;?_E^p%f#@76c*FJtDdBQC!6hUk9$(sn9B z3CViYTY0h?Tv_6AXIp~rY8Hnuz4+J;5z@Q7?Q(`uXixwN6je>rGI1yj>_L*t zib!9Ht75;VG9~yJec(sI@^wZ%BffZ_K-Thr+F#gt7VVFkVg>_Hv1OILm2<8N15W{V z!T~+^uk3&NoNYE&ZMZOD-|i~Is{nZZ!xLa1%06qqTIZS@dhfC~pJB`GnBo+BxXB!$ z`#qo&V|2(vodi=bGp2444su_U}wN;4S82gFTEU z+aaqbB>vIwDx}`PXsSG}Qjv940)tj@I+ICqY zY&2#kC^6Xc8~FTy`S{0SGuWjxQxE=S&%?E1Nd3g3X^jGEvvVG!bU9s2vKLi2TZ0josYyb5nDW`KE?;s*^CwQUX{nwtq^zY-NE4r3yczF{NiRFP33Is zXnpDr?2kLl6R$r*qMJ|KYj_LVB^YZ%(`B{mTWm+g8M11HDRr{7ui5MthWgMOg%{{Q zfzTu*0_JZ*Pl4_n(>|G&v3^j5bFh!@-FBjh$V#1X>d8t+>WupD*Ov!s4GAPJ(4<@f zS%DZ8#i&IADfUWE86t{cu!K(tJV~$PP`57FrD8tx^1yG73}nH-TQTX7B%Yh#avV5d zv^hNAE6g@XDjYgf=w8|hyvY@`IDk)Ni^%s>4p{F5972GYvaKuHFRs58mObj z3PnN%`}oFal3_hNji#;j@GngpVSWi&yKlW7Ko(5b1cDjkL;_d$4Mo3O0%s)TNW0FY z0O1|}&Y=*^bU1g{i93eVImr?eAN;Kn#P5F;bm5oMf&ALtHjFWGwe5HYSkl*+oH3@t z%m$EczTXlnUPcsXKfAJ)KC~#*WK2UL5$X~O^XCt*@YcsuP+vZGZhapP=nAZJ{c4wd z%dJ@}+S3fVscVb%n0ho>H$os^x<$|vFc^;HaE!fVv_D?py?q8m?kD=MgUwx7wi{RQ z*pOLQ>ZClb>YO{hU0trh+Q@7ppAd{Vbsnoyfv;U8&WCU&tF*gg_K5hmkrNOIY1d`E zziAi+E4)2%6=}Z1ue~>WDr26W%N@f7t3FDtij@S7&ByNLd|(1p@5oPz0$BJEoaIti zmR+{Q@?Wx5py_szLn&Sn1%;i8^*WRUmKNmc(<|`Wdo%d7h|R*wc~L3jU1gfL?rkQb5*q9$=dB zRz$`F%Pwjd3TQ{;0d`9DCM6rG)yq)qgDnPEII|lV)h8|R`VY~X??acXtz!dYCA0U; z$rhJ=i}qxqVSB_b#)ehkWLG80fY*ko_a>C*1$7UC>A1pjLk7b5-pk_Y|A_m$+$S_sq$Et^dqD|ci&u$xQ4U%}>| zEM1-tNa6Vm^S`|?+zpNg$X-}9@3#aybzRbsF+h&hn_8G!#+mlN6~cu~vu&pK4&~^E z<-0#qQW}b}oTd}R35HRzEgZV}28=i#@z8Eb@D@VQ>wEgUT^7L3N=ZGJ4c|##e*&~cgPIw4$j`r zEy(=Pg}LGL!K%4-%&PP>BIEC^$?V?BhSuwTziF~8PT~FX;8Z;J{hJ8?@1kZ+A8onx z%8~1NfH64ML*#PsCDf!8J58YlNDe1-Y_+@rlnHAsup^XJ!HhhY*NBXBdt_9W)ynl; z;o{nbaTZijW**$PZ`cFe_k9JXjR1O>_H-=L(VAUAf%1|^v``fl0qElkTNMw$SkWny z!q*Pcq^+9EV3nASa^O|<@$mf3Kkd;tl}7jxdgB7_mpjioD0P5g*4CjgsoykoY|gW zGK5(QD;ji&IgDp$<&nB?F$nS0jspOa$S)@=E3bbM3_QP9l4{2g*#mWWkln*L==kvB zH5t8Z3vmTP8iXQ)!`%ax2`t>?a#&}^mD%9@ZdaQ+Y=mU@Kgt7dw-8^V_jC4cWs_9i z8szZywY;{~vWw^7vPGz{pGhgh8q&6Q-pry8aATxf4=%Urp+8gp}$*u7KQ`2aG@q=uxpXAFIFZ3hJZNV$^wvs;E)F|~- z8lwhfGEnM72oe!LmAp7e)WmVzG_X~&)TlIs2{!G>ur8TEBgm`s>C1%Vba0ufabid+7Cl{|<2_V~>oB z#__r|ZJOqub|*-=7qY_?{thB`vs;F5QVPN{;?_QHNt869e()Bbh{^1K-ei%pApzPgAAU_q^M9Ra_1npgzg<`H@bIpg zR<1Fy9g-=DSmr@_D^e2{W{_5mGv7X7cXbe|6`foI@$k^ z3*zwSgfkTO7n`$;41U*`e@Qr=zXtzEIFt4`!oh9M!fnpNZO+1N&cbcZ!fnpNZO+1N z&cbcZ!fnpNZO+1N&cbcZ!fnpNZO;17H)q{-_}v&p{+w{`{Z2ST!oLYj$ERZrCo;i^ zhvsc>@d=2?nS{*R-Uh!H(>#PjyLb3{sM29 z9sdGvgnteG5pNQKIK08(4GwQ`c!R?m9NysY28TB|yuslO4sURHgTosf-r(>Chd2K@ z-mL#JhX42cjXvb&hd<5VxRAtA(+2#`7XO}bp8vY@?-P#iKdtfi2uCUY&k1KJ`Y#A) z_ScgCGJkXQYw(YRqZfxG930``2nRz@;j&|l?mjBzjE;qZR_-5CChgrogy z%70Hd@xSi;`-Icsgb!4b}XPB^>2jN!jXI82?tv&FwBoL9f@{QHCh z{--tm9^r^={yE{ezW)otS^Bl)zf9qr{~G)w;h2o$2nRgPQ%_7~T^9=|SQi#CUiB{GFsT-3e`u9_`L=?nOKv z&-p(Zg)z9LXT&hOrpl&?f2RBt8%1*eYyFKowqJyuxfhb|-k4PFaa!@+ZH}*}KPg}S znesHLp2j}fP$1v#8q1-dI)?D@@N!T3bRLSHg?c9=B@UCu4c`&=-y|>z-KRdQ9$z;o z*`ml$N0Dm#-S z(v@XDceK7G#$U$inwNciY?N66(KAb#_LeLD-Z%-GL{7Ul&a6x`jJlQEV*2LwDJHCL$vyXOWf0sBfAPJ zEhjl!B-yo5%~o*0uU^uZAz$HYf0j6!My5V4k@3KO_-x7!cK0ZbCQlFPmew$DhkbA` z;CVlF`?_S%<%Lwfm-i+*V$}adM0yGfO+ro_=d%CZ{X2>pC>qKMeg1n{dIv^?Dn;#5 z-35j1`0mp^K&i8DRy(9i+3s|#KZ;W--k6?Sw90vJ3hFyanjcT&m#j@}debbg>PU!` z5#7`4dZOP&UfIyvI6mpELzb?eSs^y}7s1W~V|? zgKwkUpMI%$I6GUu;pbTneypbjDhe%ZdGCjTz+t1OIJjw{Y;SOr1I`dFSa@FXja*M*y zA!4TE*0znzvTwJ3lQy!TPjVWUoZswqEy=CT$jpuzse-=)3fQo&F2R(@Lq%fl(P>nN zD#I8w!&_PNe~O$7jdIhpq(C@Y?Z(dd^J;`B3>0rlN8fk{iar~&4;(J7i&eIIFB4*J zBmeQyjoO}v%(5}@LQJmlSEse!LFY^L6?c+Y%I>x7S#PtxR$N}~yeg>0MRjag)3LsH zKkwf5a%9bRPowfMlKD7L?&zXjb>-|G(eh2wu!qzD^wxw>>-0L$_D73~8}ZdwdaA%A zyB!p$t4WHYM{j#_2x5ZYtefKZpWhy0bAOjiU2;2|@1W=oVqk2wVvHwR8m#n!QPFa9 z`n?-@O+bS58(~fj_UxRvx&_9GJFgl+V{50A-<6F0G^0y|s4m`*wag=nrQJe2<>q@L{zxK{AV=L))d0aB@bg)fSbR*5d&xMGcAJKp1 z{fT}Xrzg_Isf7Q%ZBsGN2gX_^m`mBE9Pcc|a<%V&=)_>$xEtS}@D z;Brw-+@6t0l+j9OB3BP7$suc!mhLMlq^>w826!#Rs35_cnt}U;5byYtWWYyVWy77} zs*9%ks9@dLSIwlJCg_6h5+nrFT%m~-KQAvD|8cE_PNeK$!f*~XS!`FMy~PU@L3wjX zyNn+fj=z@!IvkcI?TL3$*4^K+(l)d_>Z6%Asu)%oYZN@Yqgjyo&1;40=_hc)D^PvY^20cNvMoaip+3u-Q6sIw=rz_Lo%!2 zA=W`-gG_T#TGsH9dYBO5tMtJv95=E8T#1WsaGWgg;#s5$s#K6YZvzR)^Xjuw&b;zHtU9K5*;d{j?6MJ% zFJGvmmZk1M-3N9WiAs|#&`S!`z*@S(&2xAr+)`8;do?)?r~yEc2x6gr|?_u~|f4Z&IEs zaoLhHo|%@tovS3756lV89Y2Zay4t;N1mSU%8uqX9(HU5 zczC~^2r2N7;~|%yTA3{{b>*20r4cEQw%M{Uy&%Z5GZUqV`4TuR`j1cIQHiCrqk zv~K)9rw%zD9`&y|ADercD?7TFd%kfc|9xIn@_+oopY}CUw_|PFw`IIb|0RT0^+m5k zMV37uf2~#jhi+PBVWsAn&jFbXcPXZl9p87{;MeH4x<5r%#HX+H!AUf%so(Sz*_5pT zZUyfpyTGJi0duhL(1Q$w=F68auf2}y)7s6QU4>)O$ktCb`Fmgtcel;V#7tCD_joz; z^$53Qx&im$oc;vTC-7&et1|Y?jFI~bJ4ae~={f}~yaRVQO5dWp2ZJP1>^ms4^`SG` z{Dr#G3W)>dCl&$keV`rw86}G!*GK_s$1ZyiJDG(E3iG{QyXb{6{r-hH8r40B+Y{Hy zCn9XHPwO`(;2$4yg61Q3*u735BOu2{zw130PKZaL7NCujVZRA)3t4Um@tKI?t3@Sk zJJ;}>eb?73ul1y}TD7mm**qD~QFOZ$)E(?-Hs)#{0a|8lnaghFv$&4u2&Ja9N~=(m zKV>ITJA_Tk4Kki;z-vj+{Mlf<S8C875V`769S)@?M|;LwWNs`>AuvD8p-E!pA4@)2)o_!{i)UT%aez@maBLjkOU zAxJto{G9w?B3ge`8Q{au{;jy$XuD1no}_kMXyc|Q0`y-ZM*X~YKK0mH;X&e=$??Kv z_V})%yqz4gzKl@z%F=wL=Y=2a#mUlTRB7W9%2Vhlgm^bHq}j9!@^vD%ayE7!$X{Ne zCi9&m_}HSV6~Mtx7ffkqT3cZGj~D$`T+AXd z4PN{~6|e^SNVL=8(y=8lSh0!;IW%*P@?wSo<8bi2zH64T*61tcym2eX$@)664dGz0 z+%9>z7AH^pGeK`N`Q<(V^Olk0n)&Yp=jrD#3rVLH6BH`T9iWz6;EG8QuSb=qf(U1e!WoNmTrph-NR58k)kf3u@DKVpXGbL#wv5$VXx<99KTvuAE`Pz*ZLoV`8L z8jX05|0Ykk#rhrbwv!}P?JgTBv;|DPJMSaGmkG75a6VZA8jK`XanN={Lr1FtXm7xF zc)j{FsRPv>nX>CI@5I%K?#mh_OkeH!esJ#ArC6Xh3+@*)L8i^8-OgHbCPBDxT+`U! zAuNCuLsY9W>-b^C33*j@;iqlalJI2Vv z;o|AYtzb_qqhQbwlq!IBu}$11HASNVi&PO<07e)Y5}7hdktOZIc?7Q_Je0E!_qs;1 z%{MTKRAINV3-7C31GQ;qPtWZE&-ZVjJh0M63K>qIP+h`{cCzWqMR^vUJq1YhLXa@? z9s!vtpuw9q%jWZ;_O+*NCyUl;g$jcHq?fx93YYiOPKkrr=HqL*L60zb`EHf-EDn>> zw@5hF%HsDqQj{STuhbUzlQ_-J9?WZuD7QYEb>CM-#W`~G?If$szmai6%UAm1+pHOf zmx#Pt)Rs|cpE&aZw2H!Qq_#KguCNll?jUuLxCN(@g8%3|SN}rXcF2C(9;Ke@`n-z) zWm~7ZxB1S4Nn@Jx;?(VI2{nQmO&>38y>le9!Yb0i%;5>fbCg_=I!RuG?UY9EBhq1v z5yu&h%y${f)^^D&dgUT^^3TGpRPs1QqIk`8R|{NIx>Y89ZXgkcf_jVRlX@5I+pD6q zS(&Bea6lF9S^jZ(`QjN<4wE1w!o`;xe{kYja6pAXSan}F#6Qz<;casDV$kJvJv&p9 z?Uh4nc`Qo4$sEHYDY8f`X%~s_Xyr%>XQidoV9B5|HPR=fdd(9=HH)FovS`7}Yg_~d6m(o*_58hN31lB6}xl$$+g`&BW}>JsV8 zTZ}ypUWh}xif9=c!96RmLck@%{<4zev|RQsx6ab#V5&vPxd$ox!doFjy?Isoq`|tG zD&?ON5>NF72BCZ3q=1j}88fEpa_7#QA5bj-cIKMd4)q`K5oQUy@XWf{QJf@Ca4wq0 zoonf6yv?8CJu`lU;UHXFk4I8U)b~>f>@_h^=%txHa`6kCY}Men=RW+MP~O#TLAt() zQGs(+%J4QwwOQuUn;D5+YjmPPHk#A0Y5zndWOE$?1KwDN?x^`?Lx7(TV_$ixC`iPw zqLE$f^r@2InytaT)Q?v6^CHCFOl}+kNDw*YkJUqWUt{)7{X%C-E_R#d1a)u47AR}( zg1-;h;$f6I$Um41@_SaT#sn+X{4UF*CzR2 z?A>Kll>6TBaTEcOmXsJ21f)f}RTKze1hmV(nu-32kx7d9VH{-iZD^1w#Hlok+4h#uspAv{t^H59n(!*bH>7${CH_F^!s z#`_zh;;Bmej1R84I4}-{<;*(jL?Xl&@Yd-_e)nz4R+Lv`Zg735%A$_N$8MCyTz2eT z(CCWdiI}RYVi>3J)p*pT_nOT}v@gqEMe*CcZ@1k}USVq7q;i(! z!kt^kV>%^t&XXf-DizsV0;>r;%dVK-1PF+(RcBTeC_dTbt-=vH@gvhMQmh%wZeq$~ zi80XezndUlY*^3M`fUIeX}hU$qjjW*9^i4rFo>)HQNTw}E+XM!Ve`Qh1LLPE|qg73xLV>K{uOjwY@^FEo;YC zMib9*JxL(_86F!;S-w#Hw%j^`%WTKxf=2!Uw)~o4bX2yGP{&Ek;9!_=b6pO12{&-* zhHbYsHV*+jPj#LrU12syk#jdR15Wetg}vrHtk@>cP4M(j=|wuTA3xuo7@GzJ*F&YC z-GmO`Zk=>xZmgw2d~g-1w6!B4(PC=51MQYle(uvy6BR`694_j5*6w9%gCG#h7QeVX zp`QYOq>Z2B4gGxdgP(6T=IF^vO93+1vQC%z$AGNEj;tI2AgZJi?|F7ZjBDr|`7F(7 zXuR-r4>NzeWOrh!key7ucjqXT7DLZkMlrBQu_7tr{JW|& z6J8~e?FQ?XaC#L@Tt)+J>9pM?iW62_mBi`*<%yl|D8mdl1zSknY^(dcQJm~(+8U-eF3Y8S_;EVsYY?bwNTfT_X9mK;~$ zOP^fF5M2*=G%F2rK zzjiVt*BsxxrB=>c8+etbIP7R8H9sm&6Bi+kZx8%*F!2?i=kZRM<~Hf<6_TJFQXZ23 ze#~7}CLtvuApww(kkH<9b#$@zc64)9^YQex*QEdOCz;mUUtjD$&9riUo&3j4iwyhw z-|!hd2?@nh`+ygYF80nhe(llJ=>N8tlAaDQqoO^b*khhxVt=A$zx#cJem#o$wWT~u z67y>&nodu<-5VmvIWIcvIHNetxQKEdt(+XATY9fnQ+dHd$RjL13$ieT972{MkCdpp z&XavlciwJ1IC2tK!+uB*<$N?y#_#pXeI)PVD{Mtx6>p(7b6H4;n~TN$t!6_~_V?e! zHGJ=bdk=?(b!UCN)pX^tc`W-Xo9qe+>&6Fs&z{epv#$=G?5t^iT$oR#SQ|5BzNftw zL1Kc1XgASR2%z%wt{qcn_N7ZNbBrgmA;>{5>XX(JR zFs0qNvE^fMc$_B6C9(K0p*)dXq=k~hXK1szX7I~#hPE43J zA^BtMNP}bRsu221XE^JlZJ)RYFbgTiRDqoXWwpc~+6fk6iXb1kdmtIH>UtE(QLX%k zg%hsoZ-Wt|s#%o6jxeS?%L;V|ICk*p4Y6&zw+~?!h)T;6RNnN0yU)vUQ%yt zn)%==<6KagAmcq{qp0OP{Y0G3boA%*NSD#=Z(O8jJ3Ht`4vgLVY$`rR& zzWwIg9Wd5eOJYJ$i2bP1@xD>}%8uTXf|jN`g~ys=l%K;7YxAR6QdIIx`2+G13HJ=X z6ppv3#$DXceHH1-HsDQrV=92~8^fBK7Qcn}_p_T?-<2MzjbveT~&Oc9#oqFr}bELX`q(lugT@+Lkeq;Ttj(Z0WZ=xo3Hae^M1Ox8&5*p`|3XR_a^gH9vepD=)U%QE9I(#-z%GIo=@C(=(tSkJ@>s6MOaIf z%HdSAKiznel!M>qRcZy%DUyaT&|i(B3BBO&uSh>N?q+>9Eb2eKc>l2niMpSehDQeX zWCj`*%A8^~>P-pI07;ZD&=tT-KlyI!cU&^RmyyT);{YUKol6%R=br~As1DBr(9-x? zyed|X;UQIhRoY0GsMU}vcfxW(Hc3wKQMe2D(Xy4Eij-8@eLt94#)ko|vAMnW`t4Om z^o|bma^4jayN~5j79usd7xY-42r8>ZQ?h;?pHHve;8{z`=9ASE%zUlzs1&?!A#HSD z+t26w#_*f^Zt>^1qfu9nDNY%%x883CExuyZdal=BBfV1750|eBqQ5<~l-Ng`-ij}T z)x5tljnj)^t1|AliUC2Rag0?zhWVY;4ILN**JW2+pGxin>OM6$l0C!^439a6 zJU1p)vh$G>4Gb5Rw8+&oi3zk8JvJ{2wgS?4$LaIlD!O7Hp-(Ssu&f=xHzy>N;9hw3 zD2>_OT_kd6N4IA=8j-tyvFspbIM4hN#f+rL4?OjAKPp6_{+q`O4Q%rARBrde0bvC#nm7)77NSUk?A-Hk(3a5JhvX-$>Yn2w9 z?gn+A{Eym{#e ziTk(5lSsL%oco;y!qmL^bD@1*$rl5ft#3qlX02RISq4302A7w>UqrrqG{2C$@=Sob z6%{hsu8or~;9_m9y;qb+hLKJm+1zK>{`l_Mc^x2nrp(>JKolTlXtUCIhm+lqI)p0*gG7FSZ1qDj1Da|ReIgGGP1}* zcV6uOTTs`^Z0xcJtcG*#|VLlj%}yvh{VgX-mwdQ*z_-*8{kk*w2`RUw(R`X6(#l9Z@{pCA*kq3<1$31uN zzmieX%F01_3pReen6PVKz9n+skIkx-;s*xx z(UU%+W=aHQ9Tmb`LnVBFpum|wES;{|&R^J}`KwivmQKJ~IYo2Zd`g}ZX0Jo1>Ldhc zkxpS?6`7EW-jv054q~!n%u(<12{n>GDGKbRZvD7B`+41t>73)UjA%|3k1~4|NKOlA zbi=p0^_Gga$@4jv3~?$mNoIv4q=dK<`R0uAbU`vjQ-o$u))(7v8bZY7lx5PUB@t-ZQuuJt^2q&z%*rFUDeiEY%U2fM@oZW^&hQxVMW0)p|Cp!0oWlGb zcaHdWCpBuQzEn0$#PnfSqi&ioU7@>C$Q4LNZabg&Z~o3H7j>X}Wa_Grt}pt^Jq)0` zt5&S!jEV^R(YNe%+D0y$?Px00?PsTe?g$mDh4T2+@=p|sWf&ffCOQ`=q^m9x%W#wH z&DQ|>s;bEHIsM?eK%xCBPJA*apE~%ck{Y}|-f`2^U4}*qqTfnKn`M=@k;^jsKPtPMf`~RNE9@w%yM=yj$Ora${+6RusNxH!*UoSL1#^@A(a!$n2?h2-`yY??&oqP% zo;BQwG}A{|CR0t9J#Q=9DOB)>$x>e0%ucF0Ho@U-&WDyUZfBw zAEsqTY)Ms*j1%{~O*+5V0QPPB>|v6|+i)dI9=mr*_p@s6_DFZ#2b8mVekgih<8V3P z;H7@4lGqY=HWMzGW^j{ptf=e!`-_zYA!(WSeflX8=xzWF zt@JgRLy<|N2COM$GMvG{nhgIL6)g^q+egD1HUQjJY`RUi~2cx%owRxUC&)3(rmeNiB zZouWPT=^m zFkx~CA>8`m8)@J8N`67X^W8f(Ss~v_W*5XU3&3{ARiG<~=5lzteps7vSL|$=QdGT- zI(Y_|2SCV`X9g(l3hoP@cwHA68tS_tqt|bEu2&>7f+cLzo?k^XI!nduFxG+|KrF8i z-XM+m;i?u-!WsLEmLe)LZ)a^j3GzQ}wzQfLG(iutptWbEts4OPzM@IXI9cae8{sp^ z56qQrbRz0wD9(-hYoy!SS1a66o&`_oh8KHsx8ebYYZYlR+ppa}RBb`0!pYz!+_gq{ zDQ+5pu6&1V3uN7Oh?=c)-6m6&V<+pw>&R4gp5`T5P^4o<)mzDeXkjZ=)jOSNx_m(^ z)v|l;Ynj1&$p&5SXJ7dDx}QU=nm=URGE%lHGvM{5K%4vCM<5T5~kNdQM5h%OZM{_cWW??uLSiciJL8#$xo{P5diQ8cuO?9hs zEf|4Tc=BcVmvMQJYKcroX0G?Ak{5+?f9&0ba=5uz?ZFTpr54PXYBD_tQdRw z9HimgB-ZjJh?G`q@Qq?N7ik~<-G-c|;G~|d0Vn5IU$RN}p-=&(qLBFHEuQlNKNHyg z$(8i?njW}9{tI$|kjwxmlpfEzEc@h%bqVbiBY<0?X+`ajvYMa$00wb`Y)y zDAa8rohtwdDr(klNpIaz;DtTI7?S#*1p9J7U3wr0&py3DUM65Jl)?k3ak`V?(Q!#z zDJ%H&`_c3S?8*_lZZ(U=Ss|H-8}xiklC!Kk@l;9A@kQ#5Nu34ole?-JbkCt_a0;PH z50&q;;xYljM~M0*6*h6_VaATN9Z?Lo`gvr#YFnYix1NHu*MiG{!sqUJUtxR8u3AeS zW1syO0%mYG%zowvAESIAVP0LnVc3l%D=gjfZ{f8a_l$s>20nmtz+N#MnZjs1}e=Cfue<_C(2}UAEM|oniac`$0uSN1O zi0>GY)-_Ku;!%O0!xEMHm)>!ww?*$3YnWSKITLT~$LdXmr$u32EK>GiomMwIi%DMr9f17t3yvhRkEC(S?QZAoZ6D>FR zLMDQN1}4%TPkmbGbk|K*kC0n1jxmkmj`0XvBVhe%%Ngp1peZ3+>2qLsWiXqY$%=CM z!AGh3@?)jB85=$kjN8@pw?KY{hqpR$Vt#_bM{&t8UKPvm67OU95n#(&z%Og@>3SFM zF67kD$ZbZg9>_a1r9)d0RnX`ixprzW^~LslJ9`LgX`%{%08EXCYV*cDz?05fe+mUj?Unw6$oU6{g$^EnBshNdcVAtTq72w9)j z2Ube<{YB3>OaiEq4>G^5666&qSpi)x9@t|mI&yEc(ARMwel z9jnSs!J$+(XxWSW$p;aA08F7>T+|nyy0IV|F=z=tuF=4afZrr4X2^b`01CZB8G3#* zv;}+OW0uYLnlrM_0Ifm2FpFY`+@I|JUr{P2-!o&%bza@T)xsH1cB_Q^AF1rfq9vAx z^xWE12b3vHza4-ok%!kiPy%$}2g$M#tOa`*w+4$z2^@awN6pI_8;}^tpv|O7pv}$e zlwgN#E{VdVHIjmZGEi>t##0`Z!j6lR&jQ}yGgl|claWSnu|G1tGD3THjmjVb8;bT<~g7iK|0KR3O!|NrV62%-3`VcKY#&5Ct=ob^QB0S ziN#`_Y>T4zi+Qua#mrQWsQQd^uN7Z5acm%o*|$apgDDeQ9h3G&R#QQ3u;k*WanDso zY(Ys$J*0?xAOE-MNr9>P8~q|EEfn`LiL-G`5~oa#F1%a}vl z>r;of7_zl%sFm431_Rf~Est8y299jP=B@gNc(7!}dbxQ_NNiUrr$>Ow4-fvHA%XDj z&>-(S%TvkuZH7!h0H|J(9X%JGj-aFhhwn^iBHsKaGS2(jU(e`sEQ&&UA^RS1MAGRH z^Kw71K1S#ET&v5e?AFdF%dbpZr_P$D8AFYEC*U?cWxAb%L@lcZf<~qOdno5r>w5>@ zxJCZtt$@tXdr^I}TVE>xAV3x2)Qchq;1N_~)h(qmWVv;I;nZNtTOCU?6bP#g*jZ}R zK~Gx@PI)gF&e5%%@U`qtgUdIaja<(IN7O$XL9uajsxg)A3@LT0+~*fhw^UHUTN8bqX9u=+k4vf{6s7d4JusEW9k&O}`fLB#@FL)pO^+LjdA z3U(Ku(#nv>#VP(!g6z&2#puwlEy(}RP%%s9k3+?0nST;0-eLTGzw}Q-#V5Z`{$r?E z%KQ6^h@s*=^TG*|&gTxz^N+d` zgXOMrnWKY_uIKK^lb-E{D$dQpD2nQvo%79p_qz%WWxlQfxYiyAr?;(sDkbP@dB7(SEzVW^l& z_V-Y6D!_TjkF(pOrN8}yR@&De4_K;f`a+y%!lo5vs?KX040%K<>}1las7FyN~_O_JS#__RD9eLl} z6N7qC=5lglmy6j)Q)xe}$f~cvyl5clj*GWqb!Ul9)2z!Ts=nLhhRZ-ZXQ`fF(`Q?X zDRWH2M84`4U4184u4_ie`%qW61l1_y=jOUFZvY6K)U2Hv%P1F>d27vBX$>&^QnCx( zcjfH;_N4C>pE!@F*I;<7I+tv(#qOPVS+2(O^9xVC6{lu*5-+$OLG7sX=1p!k@M-$= z;buf_vu3yLUFBn|#8yo1)QppaTSmD|TUNOU>x>NMcrBW2bv?wI=)c}}>D`P8Y@&0Rs& zPl(xq`{sE7jqggYR*o>-C}O-;>ADfka_gq}h0I%3c$Ft}>$*cYU|my3v!n-ycK-+U z2GPx*$FqtZw}O3F=F}(cXq1qX-;zzSfv)--5`^{svIah1@AUB$FzDen#Cuk`yQJ^+ zdV(~4pVE5PO<&geWLAlnKbqBNc{f(D&u^HraaE?KzMtnE=r*3ar@x=o4&TFTjcz>) zq~fcmSuCleLc=50QEdkD+zUUfXvf{&9o#ms5#qOHN#$vg zcrSh{EuY*F7~ zxU{zr^+U&m;=+7PR$+hM(Ipgx8uVJv3>rX3hFj_`Oln&eUYVixuVNdwXTNMOMqjDx!khqDsuro_vGP^o zoNJ2xe&yzkrpLOi0vQ$ZlG6ucC;Zw-Q`uS354e3Fpqo6#4_VJ_iEv&sn;w!c#0O@d z*~-_MCZ=@Cf9&(KB3X;zUQz6w$?TR_+$*1bnjwlGtOpGRn6}R_=`H()9ms?ScIkC% zZ;mRFVefiSu0NVm&=bFhgvp3>Qv)NdPcAOrN5&2AdVkG04&81CUqU`%nR+cr^PMd| zXCua9;~n@}3tZyz+gFj7I(Wz#{Mmib>_74ZBJP6HqY8%?GRcp`DQzXL@_v%>PKHDS zHbUa}F8s*llS&c)MEg2NW_g%iYfs^0gqv+ZEN-oF2nZI6)5@Bbxe{%PBz z`d@9&T^(cYHZ*k9Na$ubgLG7dL9}j;=C$1Wk8~yUYEz%seK%tNtRH^sfplfq+X(e0 zd$#9nOrbYTsb=m+ANC(KD=Z%5P7P5VyjB4t34^E%FH{2t(sU*K{_}#AtdiW)TmtHx zfP#uTMstpw<26R!u5pPz>_hhsziqH--l5C{js$_ImgGW%$!u`3g%sPXD6*h1v0!}q z%90}>tsDbW+cV)>SIn`937njqY2QCdZrbG*ox~nCPqK|@JCMWX?;kFa(roU{sxDs7 z-l~XkKU~do-^lSc8bZpLy;`_%8ehzH(Sf@%j5YEjjQ_Y;R;!HqbnP^%1RQci=p7ce z%%E!kP1{*!s0x+_y@%qC$?6{;Ty@56-oyb-FNbEB`ld2XqGw`Cp<6E}mn!g=A_a8mEZ3H+!S$NtVb)+p3 zL^C_>TX}WG((OgK6S?40xXYG1aNlym{Ua4kCGEBXleE4ow+nn11?8 zIKhHX&Qk1nI9wkixRiDc<oT`m?mK@Zx zRq@Q^t6NPGz>y|QfhBA4!dqFvr z@L|f-3iO&nqm9hq`<{kqAh^Ih3aT9w0#T`8$*OU@&@9+TW8mW%Q6wH4nK{eRUi$N+ zdoEbMOIG1Ft#A4raxs77@nxLYMrsr?Gy|b6r}|q6$I=~4=IL@E@c5_s^|RB4SM|lG zH-Kv;1jh;xT-Cxouz;(45GG>O0HRdV+mhH$+b8ke1zjM(0~CQCgO`n-qv8YC4xWzj zgJX@LgG$W8BO@C9OXgeaZI8$sRC&5%8n+KPd=Y6K&_*@`@YG8M-mehBz z`vQNtA&5>+Gzy#3Vj|eJSS~?U`*amtUt-BS*qsGVvOEN+}43BRQ5Q4 zMn^bzjevnyo(?FG;_)?yQD)4lR~FC3UfH#B#OV*{H}|gmbc&c2XY_i_fzx zRvu&xXy&EO>^l37t}cE{v>g^NB&%eBnJ}UFQ4r%`oR1UVg#<`Mw!KwQM<~#FaFQoYC zG`I3rqBXYiW_^b;cNW`o+W525ON2%_maLi^AiJjr%*>F>J5AN7_`sxNk+2oD&?QH$ zR`=P8FXcKf`Sz!DDBr*jo8W4M{Yc?Rnf9$_exCCh?@2vRN5L_B`q$=8ziQ5C;nOTIE)e5wqAA^P%SogsYy!<5_Q^Ls(G(jOPyqY z;JJ4n%WRoaC0Ewj9?e`{yldQaYrMW?z4dpBYS~+d!E0OH@;$)(RGqkjx@h$lw>V+m z#V=jH>3U2M$U2-S!cOi*$zHMWM*!EWP`1h8jepcgxR313>h$qRpTm$L!C>LE? zlygsbLGcW!lU96iC`2dX9aS03LjKAjRI@}GXlJ4PL$QXyrNSveI$88A*nwp)V0Y4q zqhqM?;1soHvul}F1GI<>IG{(uAH};*S9g(Xr+%Z-C`wuhtS3xzB~J+ppOKVeW+^J& zTUnLL2Uw=u9KG3^Cw~eU4XTzrBg1#k^xtcdeG+ONe^}%HL}}#8?e24HowwQlib&nmb_3_Bkl1t%!Ktn_cx{D)761$E@t{!F(DP8H zbnI5-shioW{pp;m3yiV)<)QFazGecex7rREuF+TrLrTa4J$xlI* z^PUx_af^@x>sA0p2flH;e<)NZVecfS*^)ziA#w{}grXi%At-03C`&4uMy+6gXKXub zf$(#gu9G42uMtJdkq83kVgzLI{XvP3%Y$>r99s`n90I%GzLv&Ro&9=g!KQ_Dq41N+ zEO*FKX-%Z{R+He~;pBq*ZX4g;H-4_zy6+fLoCEFxZUJa$ABQ1>#Y--+4$f0`9Q9D` zho=*F$bE~sfQo*%Boni})Y~Gtw0uEt>1OAnlME1r+>;>jvy>^!MrC$) z)C%Q01eVlt;+laC@ZrkP-eud?Ma?+l$a+MJvHM7;%HF4ef)S`$Hi3&~Ts24S0%v*Q zgkwc(-XQzl6@kDme!h;nnm&!zXN<~5rQNTGdnIfj@`gk0&>hGX#p5#)C-n(4qmCI!vdF-#n#7>4`*sZ1Zec39QDcz-9fK!sP&`Ck2@ym7OP51X*{Gx$81`)QtVj zR$r|L74G!}z`suKDkoH&Hmq!PVgr91e5-N4MuTDlbANX4r?dF1@OR3)~IAPhVA!n5;?SDYp+uizu>r6d;iI&h$; z0MW>ijO^q4FeEu9BxV|gPg$3Nn{Ns)&B1{XL1dYU@&&w(tLB?TXE`Wcw&+7#UV}^q z*p==Wnnc>v?s?w1FpF*;^LdjKF4y`=z{|SNg49ah@*(u-Yq$MHO#F$(rV-t&bf#6P zk%eV=jLMDdL?6Cl{F%~r5<8XR;TpE?u@0-P%4RZ6q?c$T;-v05w7qn}8{C!6n?serrVC*>9wWzmFy8Bu!l_)%|p2I> zTP4i>x_0yChQ)~2M;&M`%e}xV%DTJFN4EMnW$g;d_XNK;Hh6vCdnX|MoI^Sw$bRTz z1?WKz7f|1p8Q06hyr5iqsddKk+R%CDLk0IpdxJf=F84{NgzZTmrr5I8fq7_1e6b3A znx(JAO<06F3_M!G3`0sxV)3{j5O`5iyPFhU3K(=B5T-a8(K7W9j^@j_+JO=PXNb+8 zPeI-thjWi3oC0t`nad&&D060G6n54hXHThGL{&rj-wyg;AOCic(U8&n?cYGQYO5svf!LpWK`Ns97cOa5!Z+5C0o zUnd+^liz9NuM^IO(;pMg`!|0=IDx-z`A-Sw!>^P7NI1u@iG)KW93tTm35Q5HM8Y8w z4v}z(ghM18BH<7The$X?!XXk4k#PQf!g=EKyD=#IafKuLKPwz#I0Hf4%>5`e_;XF7 z(*I3x*sR_J3y@MYQVZ^R|62238&2u3EC0IT%>K7~{Iv|H2=vE>b35Ws3`fQJ_kXH? zYB&bJPX43eGy;i+Lo^(s;SddnXgEZ}AsP^4rZu&?n%kd(asMausqoP=PCZe98f*&|toUH$L zkH1DZuJM0DIKh8HI2XWwLO9oco%~0_0mTsshe$X?!XXk4k#LBFLnIs`;SdRjNH|2o zArcOeaEOFMBpf2){QHD6{L2{rH-z)Qd>GEzuO|ZDUk#I;WiG)KW93tTm35Q5HM8Y8w4v}z(ghM18BH<7The$X?!XXk4k#PQf z!ZG+|4F5sGdGl+@e@!@zzpni2goFHV_xNkSNM$+s$Asga{wIX6MKNH|2oArcOeaEOFMBpf2)5DAA!I7GrB5)P4Yh=fBV93tTm3FqG@oEzVNH->v; ze>hcKij0KB|H95BHqpR`i(=27mBITN|3S#~qt|h|l($~XrY*lxi%6)WNqTtiVe@UW z3k#3vFEP1DSgGw+e=$nCIYipU_9VZm*Wf+tiw6(sd+v5W7Jew!vLNYj9t_@%oC0Qf z4Py3B7X|}fZ+&~nwevLSby25cu|2KqaEhAISgDEBo`qHon~ne&{7LuFYK8D*q+eO{ z<&`nVRq)Hv4xZ$ZcJ0P*L0lz=qYIhER+8q2(ji=PIp-^D^&b{?iaIZ?d$OhsXF>vw zWdXMAhQl#pG=Aq#1MeV_|5Ssef1!4@;=ts?^(^O z&1a$!oMxih+eV_b!=DqIe|9B!uTf=mUCYqq8WIjt6d3tNcop}u;kXqh<1^dPV`qZS=M%EL`ZtoN zS6fc_L)rQ`4XP4t$2lJHa>yH}GtLaIoy~N;0D(=<=hsGzRg8E_19rqoR zOhsGP0$PA6-{dJbQ8E;>I(#bywr}!XC^^NW$Uh^4LNZ<28NvJGnx2Nj!L_(A9NkG3P64Q|cL2QW z7U{Nl?U@Xio?NEa3GECvw7xj@$i{3?8kd@Z;0HgRD z;La|S-@yg$eF^Dat|zklVrOE!^)cZujJsuy6B~BE*PQ^qBh_7P*;RSHq+_-x=F-i2 z2?Rl}SNvYa2+GPuZltVT7HgusWovFsu?olV@w+5j!n!t@&U$GzsgWclx? z8tR)>Ot;&eCV{l1J#`rCP5BJg%r%O%wr7JYFKE}y9Y8b~i8sf^`-E$7<7(SPzjjI7 z+bOw@mO$NI;a=6g>n<(#TG5Foq(P5W=ssZ7+yV%1ioVYboGu^^L$6W4zp5~Q2m9*g0h)xWC&*f?A?1!<>VwTSE~&Jpw0pVF_nU3^kt#wt2DYy5h{Vn}2b}suOK9=ib`oAp3F6sn&K2x)7ObD`iH5uO~-jl2dR5;cHvGc5z~#6;D;0!oW(l zW!dfL=TL&%xnQ zDw2?pP(QT~xaaNdsqSp;;N{3cNE_qS_fY7!FqUu!L7VJ$H&CjoYo~nM+phO>=SzTv}yj zT8hs;C!n%7yz2U%JXjRYC}1+*+ZJlB(}}zz(OTSgN$jxdjT?>o8=rUZC5OTpcTH_R zrK$$I*W^Go(dkB(FEYiNC*S(gB;Nqvh&>Yep!D7{5C~{-)Z-uY+lXMq z?dw?@`E=Kn&s>(@2Hs}`j20*Y%^j&7YDR*oM5xNM&Aig%qK~+|p`j<#O>)52jmKO# zd3~rE4tH!qak5~qQEv|tKSA*`pClRZ?x(1Nsk-ZuY=Ko6feuq{1DFCU&r);xkUKa5 zP?m+!H|spwm@;i+c4zYv`!lDpcm)`hBb# z76>SiZ<}Nvbbk~joRRpG9J?yv$_gJcRkkJ!)cBco5~LQ-DUh;`_)Sy4l<1Yu9ux5c zMwSmP#8=Zfj6&-V53;kkIxrpw!itAMPvE-spW!Ui1$|;hrarRU)$VlLX?RN&>PW8VKW}V`mn7&5qE)hDE@skt^80NNcULrS~$3&EUi47Zb!Y#dN&nY*_XPldx zB_Ax43THfKhcOE(BNV=$y7te+MTrO944r+ra36~EV}iG~$iRejauIn73wyhF)lN!5 z%E#S3?;ja8X76`FLh*jyPuYu8AmjwY3CVgtRv$yOKc;A#+H?VNWTY|1h>oO8L||HM z5RtCXHZ+zqox`~n-AFK9>H%Ug1c zq<|%PlGZ0Cvpf6d1CDByO2WFkwnLTS9}w5|j}IOvF)Ry5NFz>uIvKRDv0`9l&fsuU z@Nw8@Y@xO$bI-mMFk!PZCTX>G8e`FFPO`Ap8%2ohK00{q1(P0!q?e?! zuTx^KIuyIv z$zb)RyoHv(yxn#?Vs_~`P}AW#uWgWUuW0}{Cjy_{I3B9ldU;a!a~5%!RAi;~l*XuW z;fo4IdA5xy0Dhrc*Xk!yvg?{$%#nGfG$SB;ga)kevLsPXrRX+C>w3albkJZ>9ynYK zRR*t`7%3azKEd9$%jH|%^dzmnkw<%Kn<$^{-GW_b`Yr0{>57W-+E>-0G5b|Ra(NrD z&TK$=j2~x4y|0+FR~23HGbSErb=Gj9@RQC!r!MYbJ>)s9pIkG^Af}$sd33C5{`Tn0 zO{uogz?ZB>yp|8vwfhSahP4DIvG}`|{u_IDPnvY_h)5v_PqsIq!a9@L22Aztm0X1% z3GSPX;&FjgcAo=dKkJ+vg9=9BQtMfYyvP8n8;}yO=j2dCzm*hcNV$UMRB+}y%W<@% zQC++x&UnDrSb4fCmt*dmoszwWhu%x_P3a`_O8&Ooa|Bj zjPy&p!s*4gU1WP3aK$Bf_aFjyeE{>Umgb;v*Ckw!?pm%&8MnXkGs?3lbRNbn`166! z5Xw|&5^~2%m~&Bwaxw6f!VCyj5E(dk(*Jh9{~VV{zUeku8KD+r1PkY`hgd4D5NO5y z9)N%16z=(M_`%&c5JQ1OXrSI%fa2_goMj8O3Ek7~x*spDLno(E!`z{!)_bZ6D@%+q zHP((`zZsv5GRtZ&-6*_I@$%_%v#Y}L7b@Ada8}lKpPws;`V*M@qZTqH+y@n$gDpf( zN`{5tVI+gAl%_bAjCr$DjDt?2e!i35@aw!@pj*K`uj0_2zNHEunx_!#M2pTlw5h!m zeKVGUN7Np(yW{Gd5+Eb;@)>r^)TVx=A&X)g(Ll%SVg!n`HF!~V8DH)Vm1A{&5w#_} z>q*-B;`p*y(GseGi^`J$HOGDl>;D@FeZs_Ih&W;U$(9s-^vdlTmAI)i-Js;VNW8rU zf-y^dBeIBawLaIDJY)DhiE1+Ho{HmnEazl>)Dd})HY}QVqWrUm%3L|R-h7ZGCIJe;?&s?eM0wt*n7{QCcCxo8v*GZ=_P_93J8kQq(q9Mf*>Nj3kpaJ zARQ8r-c=Bg78PmIf=H2)(2*KJdJQ%7BtRe#lDu>8>$>NCX1{yycb<9fc|MU3`LZ%A z=Q%kuv)2Fkt>00)z}TN$)t+4eK#dG};6mF&nx%w~jIVdk>`YT5ft++XZn5q1WjchH z!={AcDSbjZm|E?73wP)*Oi5yctt;gHcH%G+1;NX5_tbl3Qw2cVm&g1Dka38z6(X&{ zrI<^$>gAHBt{WZ$UL45%oFDV6N;O#0&I*imYX+#fCN&OiZsyB{y0T9A*GGHtPqva? z>!U7B4cL9jNH}&>fS-b6cRyWBva|akG{4z_Hp2jj7iD*1A$nIUfs3Tg#jLlh*l<2Y zWuV~wU+K>g;6OgMkgr~ECc3I(bXjgk6ylSa(WIE=8ht)*xF005V^^`q9;)~gJ2H{D zD1C0nVdM1H+&*mnTV>26Z}Pci;l*^KB1l*I{5Hqnk++oL3-R6RHRaidc$wV75Qg2X zw`|1OMNIW`w;@14DPMQf*jC4MWuE;)pn|f8x4?<_xG8(aA!hlH22-`2%Dc2h<_u<3 zNt6Oe*Ggj{G|-=KDI#yle&f_M;88V1`@W0}&(?6sM;bj~l{YD>Mw#4}NIg(*38o`w zbrE|T7i2gwJb|po`S5zp(*S0&D5*d7*w*6X^X4D(&cM}-1pG^$**CsDqOl7)*JJgT z6zpBex!TJ{kcF`}CU1DbS{G;*$Zk)GG(+K4674ra1^EKQ>hf-uKg%_|qahJ_WT<{+ zvLSA{tXbRPF>(X6E@(^$4o_Q^a_ z`7}MQ!7WYh6eWV;^PPwiuaq)2N$6?nsoVesVUl5qt9KfLH$ln`Vd{Gburs5se{Lkc zLM=$x;3;D#fk*5VeBU%rGt}6Tv00DQk4()jAU}!Qs`%)+C4O>Jc?_dKr5Atd6` z{8jEA$!1a7fa?M@d>`e)J1|8Zd%B%AGxU6x9_CH&4p z$?j6x)A7G{9ePw$|6gF{zc(`)|JckpI@#OX3$JClW)Zy_dKOA35BduVHu8R81s~fL zEGlHvtwZVV_g_1SJ$AVR5OmO(-J`n&V`ZcAx1kZI`d?rBgZ6_rmoJOS$Jq-caI=~0vc=g~nB3L8Ui+rR&*_?_k&Yd>gLtZu z>j%&E8^04$)iR+GTqIkqCUP< z9k#9z51zSeovY7H^DdLYxb2!&=)N+p$M5FnQN7Cvx-xMZ_4f1-?TK+3#OCh;J;p}w ztMB0=lAjhx{?X>-x5<7r(a;wVW&jsYjTNMr6-z0euLV^mb#bDE!R+JF(uFFF@wy z_-im&O7sq{#e8!&F@Y{%`^M{tT_?WR-CiBQhe8hHEev7Ep7okquHc!Ez7?5rc-3b9 zelbh(hB)~4@Rbmq{@(8-(XYvlYQ6URzv5?puFMqwbo!yE__K1G<010l<*brdKVlNMj&vvuJvg?|49Q+Pf|E4&_laO^4b2 zTyoJvgNZr`K<&*3hW@fsVY&}(JvH>$F4##HKcxTFhck1!JLf#&rJwdldi*n2SkY7I z4%QMg^vfsb+>%QM{4e!odFe!>hrX8Ie)(iOn(i4fv-H_V^VIjO`k!rUU5(tvAAcD? zNqQ&BtotB2!eNgXPF&%hSm;%%Gy65r5bU!a`}F(uJIQK!kKT!WwsdmwW;5#7sC6~` z!oB0WCPmt5)|lP|>(uAn5)Fx6bkY+$wxgh@e+EnSQk=WzA=uRm$l2 zZv0WrhrscQyPh$^p&2aK@Glx(Ski4hyO!bn;CF#V!c~99cD^`o?H0)u9ZvZGbnC>s zcy>3%i$e}?=1sHo*z5KzX)s_vWqmWw-6G>(hGB0@aZS8uv&rlwo76vy z=(#9>14o7aSY>u?xSyEqP^Nv}aNX!Sqj71>LFuSqrH0=nt<25-@uC5s+mje#PcO5q z*TaQ?j+I{3fL>pJvxhBn#lIe0mv99urH=Yd>($8*{(2ho7K?LrX*q1j$*&m|4z8M5 z;u>#Td3U|BX*?ngAs|;2ytq-?Qo>PVu^j5#HkTJ`bV*+dUr>l#QMDD*lcrl zVP`w@>Vx32*6tuCr=EUXF!rc3E{3d|B3#B$k!}rA|ZvZ=kH~ zwXfNpj+a!|Np-4KQk|$q6Q0Z5|3)@SH+cW4!HOvl<3unK*Y*u(Nlt!I^7GR9fSL=T zZr4f#uf4hVqD1&@o6OyaBi7Y8o~xRhq8))%T$j?hxF4>@rAuQEe+p0V_^=={mUo%Y zrx2uXVwd>qw!i797BJazn>5sa7gXr~CPsc5{TnWIFjuKHmLv6+`CHrMvt)_>G91>F zC)m2oe##>Ly5~M*~&m?MJHL7Aao^{W*I${V~b|ievWcF074q zqjzi3w2JGaOB>0Su%}!0VO4DG^jolsLN@A`A|uf8=Z&`4)iz(<*iU_>Gj1Y&_ccql zaXN#wQHodn1#_b>;k!yI{3Lmu;17!?skGlyp1L@H_(Jx(##Nu(Ur9BC}k=C%?# z#0CxkAG271tQPd4=%L!OePsxB%4PaXhs*x@qPFKvyQmM2HXLhv5eLyj=Ym6sewOmy z?{*)5E1r{+c9}1rKA9bJI{E#|xpCnYuZUvl7rz1Z6pSWEk zfp^!HH3K)sxtw=aJN3-iymjE&ledW_9s7W+3eQ2&+dMugbtOW@wQ7%H{Q)YxB0oA@ z-f;`Fop-F47sz`BvG-+O?76VmY|5BXf)^^2>6CxL#=>6Y2tL+GlEcwM5ZuAEhoD>5 z$+3T~2Olt!HMhH&%kCC!X6EycU0j^ zdLmjV=dDre{(gTuK zb$=VRcDVhKc^&n&t?a5mN~HTJIOQIRj@N(Xo;FdBmW96KiBbRE=V~-Jryb(R95I!K ziv(ZO%jOP7aiS?P$*SD5;hX$oqyk<&Nm~H?gg>qRp3r;zrjT?lJMLr7H6?qV8g^ zGp~7AfRMl56gu!q#mGDOO3<*cIoVskWeZ-@EYT2dWnYjGZ&aaU!MNnE>fUuWRBkVh zzO;$F@yj%Jak{7F#w0J3!Kr9g7;F2%*NaY5=Pzl<(Q-i)#_bB8e1k8Prza;kKE#d! z!`+&n%_cpJ9d6P7)iiicNZ5s2IJ91lSv5}{hU*1~j>fgk@QGzrEhZl?s6J1vW)=SE zJG_1z1D=$lK)@uxe%bomxpXH?oh!$$5TcWMr3GcN!WIzA@+Lm>N%k~4uhwiyg`X8pB`hO8``YtUt#ygmM z+e3=;OUZ=ZE!L$^-f54r)BP{8Izw~zgTPx~W_*p!!hjTK0({RrJV#!e znrNFW|3xB7eXPlIsn{Pp{8APW)T`tCW9l4zAs}*W$*>iD@@r8d7_jJ^lO)o4sN@NX zO}w<$Iu;g&`t=SDve=Lb?9#UiY;cthOxiP8sRHxnqA|YQ#35R`}%`F zMa9;PcMF_4OWqU`F3n$_*V1_?5Igqn~e*K;-@7;`- zM7Hf`uC!?f>_m5HDYf-DdBe62X|SClx{HVljM$;&4wS=-#k%LQG@RbxPNS2F@2Jak@ha&Od|;q8pxI|-d9(^8wDhk0DNFf!vN z`-ueic#boRUQhjq&Wz@^SHG7!id$ZRKyDcajXbjnggjR=?_asKW>wThk{Xos_$8Pt zCtcvf)OGr-c@F z2?G7(E-de-sIX*0a?a^(W%f+jYgFA|ZS{ItsvJjBvJh;q#y3MBue-$%;K9Di#UpgP z3rEhAK3X^2tNONvNr7BTF_;mQn2oP}A+PgdZd5c5{c4e7ni)7wj z>@U-O6e#s*VJ`L6)C_Dvrt!5&9I@D!U1{>`U=^$f5vVbL2f^%J{Gw-3cRmyKb}1GX z_Ri$Q#9;>4g6gHIu($D;Uzn(3(p2-X6%O??72IC#+Fwc!Qdn9Iv1>)z0b?^S z&qh{RFCRaJtZ*!O8b7z+u}xfT)(RlFj&UdlQ(=@Kh`@wn;RY0gdyy!c7h^t^kh%yp zqIrk}5~BznCLV;I%=${_170=BbdYm|;Pha#hVzHk8r*CxU)hDaT-%PQg;6mzGxm|~ z!h!hc+k}&OZBV8Iu(w|--i@NkQEFG|PF(!i(cOL&N^Bdmd%nBnPd7FM49(fY~cnG@iD#JP5(t?e05L74e*c}rLSCxh%bXjca)TdT5QXol!B(TRTX>I1 z(hb98oV1+5m(yQ7MT?S*2XJgsWNZ1oD6L*U z`o+tcgyYx3FW->;{3SZBJ^lc)e|3FZ(3|&A9!jG}1fp`HP9J^vz}y*{ZK{6vG{zB9 zUi_nF^oOJWbCP#F9`t?MZBjG;oZd`Rg@U$h-9(odUq;4JH7Yn;xun1IB;TM06{Zpj zkVkl{E>+%}L3Q>8Hmt9R20EmYKpiIC6NUR^zoJU|zOAMz;%+c2e_=Gf`amf%jb^&t z*Q=!?6mK)i<}Flz6J+Q+&%XQPo7QaGmo%+hQWRIH{3wm{Svm80Pg^DUJ) zZJGv|mkD9`Tx%r7G?r>vOeb!J8%~6E2JQmCMb##f-!xs#Z=+ayf!@3jon0KhVBQFf zq}hFrunQ1+DL3StH%Mh(?IhKwH=~#99z`C%T@m@=HaUu>-x&4fos6B;2)DN@#LX`E zzJ`fV@J!+{^p7A7I>)j@!-BO$&I5S)v(U)|fJ`r3kjn}%>w6`mFUT_O7m7rsqA zenbQa2Q#6o5qYwEwan)64L{(sM$9{AMX%o!t_p!gV-I!R;cNjnP8edlCR&YmyE;Y= zNy#nVw!jB+?-Q2;`d5OyzZwDd1@8R(@a@_^Ximkz`(b$Y4Gc3jq z(R$M|0L7PYwfK-*we`h>k{I+5kG9_e1*9V`G_%WkhH!yTJS2q!3;`KKh7}0U2xV~U z`cEv%3eoQO@s@+Jp0Bbvw%XbqlTyenvxAs-5%13VA|_U~r(PWEt~6{#R#n?UIhu>L^p| z7f+xS1v1?GN4MP1hgg^D9-DnMTh!D%1|fPGvFn=AS$3`(yckS>7rD@T3x70h8%e49 z<>kBK+F*_05iXk=(sZZPB#4G~Ht}u$_$=9MZ_j5=Y>?l+SxilO!3Jc3Fs6j_H6FLe z^6mxsOuvQ$A6K&K233(6VS78qu;@ic^B`GDzT2}g(PKmJ-%Y^L>^k`)W`Vsg+POhzsd=Uj!)+a4Zg*vk`0Xikil;`x-pHvS0D7P72e+;oJdx%1 zDv@mY*3N=URyVOn8hg9gO(WpT7gx+0_im`wL{pRJZtx8$Hd7U6V?%@&H1B7nmIidU zA9?A=boB3_0zT4VJG-ma4Sm&!au!JRIcYS_Rm_pExNxQrO|gy78ylHJd*B1K9LOid z+L}T?j6~s6>=rHTX87V(b%7}SbW0Y3!jAWh+#4aQ-|o4HxSh)T3%H%i9;dhE9M~X+ zczn)u-75@#InXcB7JKOSv1Gv-ectT^M@n&%)JPT8+lfD9QW$w+mtD0Zi}79NCf?(0|e-4Br~+xLHJ)Q!;!nmX|3A87z!*WgPMehtM9U zCtZy#TvZ*sbw4D)5ZxMnn#T9AT-1xIq9hYe?aUu86qe(z*-C_m{?H^47yxhRZ68YX0npIg|bI7dyz4iFN$t1o6Xi(8mQBjFfQBkpJdb)Zzyms~S)b{i7 zf1&?7`#&&=4=I1`ll~=>=>B?#CH91aii%$EMbI->j~DJ@e;*yw=J>Bl zfx={vH8UH59?LU!LGY3Gi{0K~jFxiN+I2`H*=e8i}q#dCGph2_L?5HH3sxa56Mvb$B0RwtS@J zT0Rl*O9~=7A2({Kmc=N6EIwlr&zQtBCh?3(JYy2in8Y(C@r+44V-nAp#4{%Gj7dCW z63>{#GbZtWfJuDF^;gF5iu&I&i8j>#U=qiH51wcWw|W->uVnC$>VeZEOG}d%qKw@J z*^;jh)+#EPaH;^^14Br8$R7v+1( z8d8MT+o*(#!`#2h?XTSGTdJN{7Eb#)$Gl(GkT_%; zT<^`-(vTV(m|(`=rZn(50-pUl;gWKSv2v{2dNhtux#j>*o|rB4y*va_qaW~=g4>#= z5Nq54L!SrD69tyMZGqZ=+)HS0K}it*U`fwyM+G}M9POHZ>diQZBnLXbSucZW5R0TY zFCU1T25V)h%c8od`nU%j6o}kVHa%&Ufx3oS3~Yo+hrx40qxhGyv~8xmRY*lg>G;}b zVZvsW!u3d-s>UI&8m1TCUCX77&6BF}%f0GK9!--!cLv`rcujf*82N|!0$vaLBYf;$ z8-jLx^A4M;BDV0i!L4}j3zfRNG#PWu;C7;Ql{?_jY$6Q06PR=<`Ie|v@StzijN(y> zc8U*a?c`gdYzhg|^#q?~N+gD)tod-wx9pFo>;h94es5B?5G2H!Pu_U+tel@UmGUt} zBJb~K@P86a*c1KhxmNy5ob6XBh=fkG~{2 zU2`nGZ6WVJ;_3SN{Pp*|3Waa`F6(H&>eQ*zPbzF1RY4CP&mxHTs*udK$KXoh&)qF} zKIypl)2C0L055@$N^72?DW^veiViYYDD&D0wx)3E3!jcglwta&&4p#Lf{gZr6IE1X z+f7(LUX|cj^-$$G+*l!G@q0um7I&nC;^DSyle|*f>ewQ<2*R@{zkEky?Y$|yN%Z>D zdD0jKP~gtvd`czsg0{_{PqMYFvZ0kXLPR(5SiT+*MXZBR%Sli0UrOQdEM~YT_kkv8agqMa(!t-N)bC6m505Mr;ZJi&3-gVy@Xd@1bo6zMn+8r^L|Hu_wUifcL_*h3JQ5CvJs}tgvnQ#Ya0M`@@|Zbvt_8 z8d|(6rIz$!F|DUQqz@6!)sz(i${Rh{8N5nxnR9nv$h|{NT<8a0FnxH;1Gjrd4Z%*b z_3vM|UWyEsuXtJC2)`rZxDxUnrmAagSoBcj^memXB|jufjZyaY>&PBn-_z9IqF<5| zRV{|zKeFsnLJVL!EwU3~izkbXux64LkI6xYT-?Mh%5zcZ6_MTNp*p`r2$Kim%Cagn z{#hB+(5fO`|A#uWgR-=6o9%O|(O28{PDE+({hUPfn2(_7=gK6KBiMo3JtTD^(iVLv z25*(1_6!uE(FFo&*yq#Ev*(5I93II;?tEB}{g}ydl;8*sD7X}7HSQS`DeT;~RuI!c z=V4->St_w^_7WgzzI&8zkl@$}wn8rAZXaN7cZ!I3wPm=VsmltsgiyzQM}oT(ja222qYD)B#y0EJw5N+35}SBL0Y6T5Jd?_j*JS?`%2} zq@%w=iUF(rX^tZIk}CFP*PP8sMHxRQkq*-tpr(yPlt9KgtPBY>Ehiv~{&+r< z2X}(gkUEc>j?yRGzbDbGTEuDK`7N4<>p0YW+a-?BtU6Oo=F6w65QVBQ>v2F|IK*t} z+De8IO7(cUdol$(_Q((I+}}zZE||ITmixL~Y*wyi!$^C-2$iMIt|QWf|*LwSM|;&hLtKFwE%#e)#< zNW;)qUXaP(8lvO3<-&W^id4r$?}yHgrofu#>*C#h161a<-)$j(sJ#ir^aS+rP5`}U zXbHuKyD+y#=}^f521S$Jd*Gk>*P#J93Hu_#mJD)rkD_yWDr3!5O@1`a3)EEEQ*>lX zV^@Q<;5YBW*&Z5YVKO|-ZdKc6GH_4YZ!i$LRbEWicwFA=-ADG7>V%DNE;z^UPnqH) zk)xG8xNB%%WKb;rKuR?HxNP9Z;>lhnzZ_am>Q4Acf^Bo`DsIhh<}EOgeDPp;d;S<^ zxx_*^_PRc4I|Oj)*?0Q@^{$(&N*NM^ZG0|+b;I4T*@pCspyf50n@}~xw-MV>vt=Q6 zXoC=y(rwj_d!-sMoK_~GkLqry zcdnimdWVA7OVCO9s)6`uJ0h9d*%0~0EHCK|4exd=(i#_;W0ldqZ$b!Fk_Xc)ReBkt z3NyFtucw;9ybZW!v5w|tBv0!y2dQ1C9gTnc<1|1ABNVR0-NQ$&;oL3arOiYZO`H!F z*BD0dZSN~H?290cBG9X;(G!DLV|W6N?!xCCEV1h!nPAfz5O+C%Tz!qwi})=M^R}&z z0b`Fl3liiyhTXm_-h7mT?MCcb&H?T8D;GlpL#+Crl{>?~t6T4GGbt%~M$KKh++JBd zLOj(KIzWTwwE{y#7E-6(%r8P`5h{s@e%>wh_x;3>xx?F?9VcBKh3rMGK4fU-MppcB zNc~Zao>|o!jG%ez!;n#j!a)zz_jIjtIhf5B(%D$h5(0b>G@cYH=V5(wAw{X*KB&bX z*K9`*`1A8>C1rDs=EuF8%{yy)flVEDu=#$V{ak%Cw$W2^aa2eQ)M&`R%^^r%<@u8~ z^9~|LR~8eA5zy6`YX4J5-#Q$twYZyV(7H3E(+)Y=jx~`D9=RTgVtyn#^&GNF@;*o& z1Axd*3ZDwAl%mJWLCJYe&7icZZhB}cFH&hMHfQWAgZbO{V-3(!EHd1G4#R~ zpJ@8GLP(}UTlMN67*ZelM6T|5xubA9qG9d&<#L-NYUcCvm)0-rRh6t@+7#%IL&h>& zF|rBAw=zn9i}wDKM56gmSblvR^wmg~~u*)8Ei&4I*uohe*N5gE5lFY>Z zF+p|~pf=?1i4XG)n_idkCS9MaYW)@qZ1+B%f~iq{W=~vs4nN;p*#H=nF$rJx<#zax z{h?^-5Yn{TRt&I?Dd-Dmb-dqlU*jkIvo23f=V_W%AVTEzXYD%vDopRuA6Ik*NBw#U zvsbqHo7271MF*=VRY6w~kWBZbBVWEAD}KcDalZ!T2&B~`MGR-a!M8VjscccJCn;lm z%Yi?=f2bI5_rUXCS$vtu-fEQ$8*o_NxV3m$A%w8Jat^ezmzQN&>D3nt+FtPZa10ve z(x6=3SkPAc_4VAL289;B*}H6%k2w8heBk`T;dRj@`=7q6=JW8xTKP4%fs)u3HY^co zg}B_g^EAo6OCtaT_bdBzKlE8C;Pg0;@6@`CbEY4kp+fJJuw{iU;;4IiEga!KO)pe> z6uWx*u#EZ!#J{WCXeqQ<65aNy?-aZaQ#$88QMa9{2DLO*I9$l6v9YW`x^;`MAk^|P zHS?ZLoSA5=d4lAc6>LjGCY3$6Ch%(mSjBUSa<#6ik}LuS36YE* zc2{4)54Ae+EWx=5ZP-?y%;h z^Vv6BV~XHn8_$7Ps??(wxX16`ei4TY?Z{EK6;|V0I`Q+cWY`{U7BWzl7am9S?60=p zvW3*hvbKc+v;yI*Njs6D?2jrO@ZQ{upOV;rNginjz>XL%-B2Xcvz{)5A2CqSQeT2Dn73ri>a#0 zC4`Olr~sBF{RX1{42&!uv*NHf3Z4Y!c~S{iv|)}q@B;`LK2hD$9?7u_~M*klCXXHTn#u;*Ora?N>Af0KD&NN788l*D~ z(wPS7OoMc$K|0eQooSHHG)QL}q%#fDnFi_qT!WPOcgFBP*fhTO?&TcAjM-zbY`X`vEM>JhWoJU45mM^dQArdgUFtP?1RboKMKI5U5FnbH=<}#UAEW zNW!1gFU3{wugiSR-|1LNtHG83T0FjArkT&m%qmebpti0JE%$!!pQJk?0&&j6bIc$USpHy2hViq z?mf8sBc85|Q=#_@lk&w!Pvu_|{PHpM&U4Xq8+3E@^FVwzg>V*j*~!SVJaz(hE3c9%89W`LY78T>h4zK6}-0-u)S z(`=}4A)KPl*w;9<*IDqW?oRnNBcIA3YGogP(a9B@H+HrBDHhhhfePwSisb%I-MYVd zC89==g-%ExT48c%IFF2PCp9djHa=G9JJdXMK%Iuq~_wz@$@s1=Dn1<}x)bb8OK zS-Qh=q_2ss-Qm%1)rlW{jfmk9E(xNgb7W+Z2#uAQFcncr_YI zF=yYgDFgGkJ z^@R70oF6tQ?AVOnh#m2f)>Hj0jlq^3m262Oz3O;y_@&|$TC*xOFj+Tn-pRzDbB4u4_SUiGr!}+cxdTQMM^uupd8-d zEXHoYbfzeunFWoM@;O>mKe%T)71S2yxH0ksG<#M0yE@K zana15NC4&TmHi|)Hs2858H_nNZ4S1wnei{?M3??0@k z-n?OF!CkJGzQ19A0}$E<;vqP-Gl4v3Sg`Y51#P#O@U7hXboTPAyX zh+hHG;tPXZ$FdJ47IrQiS3c?qbv{hrpYs>lxB31EUiPdvU|#B27R`umI=-{kq%X2> zQ~E1FRR_+@dt7;UMb+vZW;`xb>HdnU-8;;*4t(FNH$eCGKtS7_wI)c(O4G5_@em4< zi#a@$UvM?qn-l&JI#J{Z_kG$Mz$3okSGv-~EOqRe{|MeBwwIUoD`5D}TGO;-E~e40 zrO*g$cj8$^C)9%_0asS1N+6bKYT2AEHrtms8P#4DTxwVek^{Y*vc&FutVR*p*O%`g zP{g`A()AyyyK(0-(Vq16_yuPF2SZd8yx}!e1x~tEl@t@1EHAr6TGZSL!?K$MyFho0 zQyNdnq6b!T6+U1~$l(Sq4BHn?uMF)C7;3QH?vSu=xrIZG8Cck-?mfl6A67v16q&Ui zdWfJtSs*VW&=#yzvB9-pNZ$%;Q5j}gknuT)h+j|ghXy+paL>>mU5}}kMqh-HU+6IYD}Cu<@D$6fyQmquYb!#Bnc)l`#DN9BO02V40v!wgmMx zNw%dme`)mr+vGUTrthm1mNGO44NahKJtyfm)>;;*k%_Yxu~URL)PdX|5d4Sl>8U}9 z=Y5;QfEcVXXS<;QBhZh+Kzf#jH9nRCOX(0w`J$lmeBf7~5}K+|2~UzsDLMw;P@>A(V=>8+MfvO3$?$Zj=#9 z&3SDl^^|bL!qE=Uetv5P zf~B-j?wSE>%?YJOSmWZ5jpC&!=rlf^G-|(C z41a<%eoT1*9K%PEo<$`eM(kHW>F*vOD3rX!ZFS%m77Qt$6{0}gM_Grg!m5hLszJ(D@K0p`Xq;Hq>(wA|1 zGgVR(W;rUSVOXsx}(L;)8Fs5YiFqNnySgI^xY}csR8xW z?9EG5mB$WDf!&&Ru->T~*bUfGt68x(3E+^P)Cdh?GjCesH&@B0(7O9l8A|E@wJb6E zSJkZl?&zxXzjSo%DsZ@=|A&hEJ>u;Y&BrzRL{&O@mis%R*8_C_P>Hi%%w+tvJ$yqe zYS_g*DW=OskU!g%>RHh_sz`-@>g)Q_<=szymq*(x1MkBJ`=qWlHs`F!$|pM%R$vSdM40 z0uW8jwwRKluO`ZeYR~4}=122ZV%74_T@MP`y}JtQ-7&w6;dK_c%{-s|S^P-n?ydK# zP8m$umH1Pt)kt`hqNIvSW{TD&$T09~lUm?&=J#`{-U5QM^Pan!kBH?ttQKfp-n;5m zuFi%}eRhW*{o4LnBfL2jNB`q;*IaXeR(GkHV#%tg$m+cW1N{lD5J^Og`_nYsO*SS~ zC!6THj{O$PcdytWq8EfuNF0`7J|xSuZ=|wuEpX1;iQnIghuS^YG)3$Gl$xlL+#9=cIHq!bEus;)Xp4gXAZS9huWD#?SI0dwrl%W#?XK6-&Vum z=l)UO$#`f$dz0lJvfJ;IK=xG_j+Ews{5pc}wv@;ID`Id-=zaaN-x>NjkV!tS}Uu1~?Y0 zH7k;<@%GukIe4$ z1cI*XaIH%41e+dOjrtF+Lf@eESRv`#xp}p6(aCRC%rJrxz#IYY_lsEmTK79& zl#(TH+BO846s3{qhnr1Mp)-VOcvDm9MI}{fPCXKZ&EJOO(^T4?EC_$6CQNAspxS*_ z%9!{{h`Ii>vKsF6YI2S@K*v`la)CBb_ZEx;iG@1YqGrpuUWZxvcKGZ<4$CK7m==43 z$8TeP;Iy64rtT}XaBip1tsW*J5jISc=g@s!t$atx=Z1jr3xR>zlGt%FhAQ>;&vW~% z`>n(PkLQLiki|nE)BvAm>jYB()z*MFy<&(Hv#?R*zMbei)&9fjCIRJDXLftdZV43E zPmb<@gxz!Q7z)$0kkd1&reEK~A?hf0eN1ugbwt~dbcI_Yw2l~7({q&driJp{AAN2i z>jHf_>?8ZOVt^t{->J~4hj`I2cWAHEm#!6TK#C|BVyCJMio=f~Pqaw+-;`i7mV8;2 zJt6(iFK>s6dbT3_=Qi#=u`?E--?ryuDc@f-LVdhe98P~PmPYrNR=CjPwD82DWfHDo zifI>s;WtBh;{Jq(>D{N!WMYXZ44w;Lc=af9`466JaLg38wR+-dXFp9oB2-{QpZ?b$ zzpOpK^#>)Zw?|?d_kAfL!b1&rGEC+Hvw==s5yv|fax`_)0+mka ziGn_sz(yz=%nx+q07Kq?k!5H%9MH<0FQH95`7L{6e#l4L-p)$he(Z$rH-xh5gSvxO zM9tpuSg*3lVe)H)pZ_Q&eRz7QosW8EJ4@VQt9oGxjh39_Dk1VM?w7SXzg3u7@OvJB z>gjv54!pT2iSo{8kC;ogrIPMzY7MM;1h}g%r@#<+?*o6s6H97z)0iohU!(0ehph|S z$Ip-o5qPle2Ge%d3&v(|SMG!QbTkd*!0i^OwNDCFG|qsEzh)fa*nPW$q>BdBNk3{I zqMXR_w0>^di-?`cr&pBkz^H!y&Ahqw<8teZrRr9%zIl3HqJ5Zi<;_vIp>B%`?6|X|jD42C)B1zlqwvl|dzO#)kd&q=y8=KM47fOdW z<#r!+$tv8xflz|7oa5D@vw}^e*<#EtBU#0RhVoW^{uCMTt$4Ne)AT)hC08vVb>*kK zLH@q^SKIu=wUwXf%SeHDYD#Mg=%3so1HNvmS!j9HEcCaB`O>Hr6)%N-YXM2*oOqA{ zG!5N8I^c^)Q{&U#n>BimUQ!A2~M5D@gZw|MD?jfl>{|==`uaY|mmbf&Hi^Cmo$~4+_JUI%x9W1I zg)eW_L^OH*I&W}Wm3iA8PBU5gf)N(og>EggLQv%&_c1DK-=J2m@wfEOI|PufHg{yrB#%TYQg+sC+8HmD7asc0zUX>~cE+^c+;3YFt&*=oSIs|{&d&NAB# zm5n+4_I9|HSxfg^vA$FUZasMJx?A*7)tD7F47p9UhO8>P3DNbNdpTGMT|G2uy;YY= zXY0qXz#gsct(JNBmW$UDOKFE5yUlu*hO2)>*9?)EM{_m}^X-wk4(bCeejm08IkWTB zwvJ}(JCML_`esZs!z4(PMmTi{{fq{V$YHgXbVxOv39*Q6BbYVvQUxR?(Xuh}Q=hKh z(nVR_zt-CRSt-J<@CsF?h6YPB*iadiIH72dh`P0tPbm%%M+J8&CSKk?HU^kH3QbQ~ zF4&Gw-82YIfA$zKb~p6d=WLBfv4oP^PF?kj8n1Y9M%}`I!s4RTV6D(+cW_3_${Ky? zgc7S)Cnc|!3Jl6N3ckmsPV0t_UQS8%K@qNs_2?#}30ENsVb7jO5=+#U3ZBNN2B#8A zvJ4K5csg~bxBz%hNn*)|PTdb&fZA2Sp^+UoKp};2RVgJkcnD|okn%lsL|o$)4bCVv zE>-@r#wP1h0d-vJw?)ELo*vz>E}T)5iiT7Kp(L?W*MuAJ;a=!78JrPgr|yo~A6*_} z03OXuMN}KzmVAN)x*l@79CE{;fI%?z0VbP7Yw=cz>_ucGyODcym!V&UDd}A}L&vV4k8LN)*Djo4SUhC!GI@ip2Ur;J9r6WS(pbj?M|S#EwC*|0 zVocvvu!DEXhp1517UK5Hceeqq^1_?!woBme*dU?L@TwOypr}E~R;~C;FqeEu!e`>j z(W61Kv5mRhAlZ13Y`BC21H|Bt9$?diP8pCWe%j*n;P!5hG-9FL9_dvb zAOZR<)LEhB+^u(? zGA{V)j=kq)A7zqzx}5e5A2s{XW1nG4>B6dRhl~AQ_Y-~Tj^V+t{||fb8PsIA_HWaX zF1>>^kuK7^h=6nu6r>mFy|+Lp0@9UUgGldPdXpwK0!oL_Bc0G8K>l-Y+4DZ{{oMC{ zX3yRqlMl?06|R+BlUa*7j&=UdLg34vq__fhnTp>!av#djNat-#YO2)b?H4#^U?$_B zxEK6M7t+4_dtLbWU$tCnyZaP>sSAJH4gOgdiu(Tk=ty0N)P*a_IL$o9j{{yzPKDxV zj%C;dW$|RU1t?i0p5x^@tfiBD^GdvIWFy!L5Pr&WtVsU0Vi;%hgJ01Gb}lQ=FUq&V zE>U)h+plTrKBd*vDETMUnD62jS2zb^N2N$_cs$taJmU__kWU=dw1HxHusW7FH$FXW zBo)$p418_FK5FladIgAM&spzYnYIozqVho;zXwpg`(Eq%K72LZmK4>O!P0MCwAME=1}= zq%K72LZmK4>canuE;RG|%@~OOUKgU>=|X#4G=BVd;DeIu9UcIrhl1{cJ6+HSgZ!E} zVbuQNtk>-Desw26Z;ZfXwaL(6>`~)p**Cob>j-w~JZYhkbUK5v((0neeX)Q%U+SFM zZL!I1fnf_nA#(artK@Y!03Liw(=^mJX zz1!cnw=j-2y|R|rtAT4<`5M4p{QQJ=pA;8INv@sQEv^5@H*Hr3hc0-7RX?c0LI8S9EnM~ zeI6Bn?ry*FI9=2j8QH&PEEW@eSATb-{)@^jGxYbpANrTdt^H29+3V=Mq6$Yvl}&r9 zq}BY^5Dk@J{eyDSgN$d9As-$-@LAEnpU#y2@I56N)ieGd?@=*jaj9IfqhU4|q$PV@Hb4%r{YNwO%U=Ich-ZCJ2Nv_++&xdP`26{E0%@ySA=AYD8`yyf zaEuWPtxC)YLsIe+x{q=g-33^E=5}>5kM0exJqbpN?%O_;sxp5fpRR8Fv@=G1BagH_ zzDMh<)!kS)E>?EZhYLnGU3k}vmJUGQS9n3O?Gh^&)jYJp1V+5*jR0|)ISuk16nI2( z7wqKfN5Kl31SqLcyNmJ0jlc(J&UaYhFRt$35A!5geldOHA}Q4w+0R3jW4FOeJr6Mw za1>k6=o5unlu<3?gJ+DKha{f3(Z%PD{ zU!LZy4X&E+|9UzJUlY+}s-BkNZ6<9hykV|3fY>g-vD6Kw_0tblVID&}@ZG{aTrd=1 zKf87mpg{E&fuqdF2x0P4NWHs_p*hK|yoKp3`<|PiP*gBt(Y3MBUzH)qWx%p=j+#U! zh$r<`I(Vr2sTXMAN2Eb{@#+|r4n9~uu145dRi;~3rWVttraam>hsW&pL6a{#Q5bk6 z?s04JpnQ2LgR+oFgQp7B1`RN9z$I-L=M_A^pK+A;1TFjU{4L%q&a;&Q3;6{sE_)n8^C;0oHhDfSY+KLh(|yhNCF zGDW!jy=FMbe%LXnaX<}Y=`9q?!9fgL^vw~8OBMJ1i!?8sL-+7f^#9h@Sah zwOQ4dlg%7MW4ge3FXkz>>u<)Uw!Qs^gqDLZz-qx}si2mWUg%Nn?B zU02ST4CXo5?It{n5YgJxbNg(}l)a)(JZ_t}s5_oeRA@~1d8nro$&b9Lw!qgWMf>3UP&R0Q#{D;fes-xQ#Slx`EFNpvV}TmZ5R$DT^rhS1HlyYLZsD6Wzd^C=%Ep7prTykf(;Z0(=BXCXCTetn80b5Yo6drz=wJZ{KGzh zwVbO9%o?gzPt$qlY} z;9D8@kI9)|fFu--3>gRAD}nAHftOFfQffzr!h`NptYA;~qXi4~KQ1Izli)iRy59Vb z`Ghf>nsj{^UjH30AhuYTVLSaRp=m_1hv`n-&n^~T3G|(@T8t?b4~#f3PqbU^uKPZ@ zgDlh%OYsq>D2T@h-ov-P=+&olFP9H(#k!c{(z{+23EuJ(5k$A=w*FO(o}DwX=8^OpU2mL`k%x&k#hk~n9-)Qg7(an5tky8>#k_I4=5~ilsE0TO4l20ShD^Q zvo_K>Ljj;oHXw2e|Lk1L-cgdhmgz+dssDKKPZeS{7@DJq&E{pKekE^U3` zd0i)0zXB(7PglPOYI}7M?TOIOIS-9R0Otd>4>r;d;fW6%Q)||;EtW7HIvIcmHR99Q zo6=RFAD{r)%S4@vjGvMT>+@Ra{QgZD>u-&1oM zQ)Vrx4#9p^`MSed0jl+4YNya{nLH;d9vN9%)5jZTcAGWb>s8}z!Wq*FlU+76RJgV% zI#}o^P7QyOc1y{BFYPqJ|Dwjv_3n-TrL>E@8~n4h+e<=9J7nS|GVv0bc!^BBL?&J$ z6EBg8m&n9RWa1?<@e-MMiA=miCSD>FFOi9t|9Rr&)8yZb;lJ3l#P05r|98`p{JU5F z`%O#6|HmBv3k0E}{C;4dprA0J-~IB>M{d#IBb>+W{{rC%ru@EBe~EBZ?*{*jaH3?=J@vz&fDg{M>vOF{{rEh-%a_K2#2Wn_ig+$!f|gxA{->bK_VO^ z!a*V&B*H-=93;X)A{->bK_VO^!a*V&B*H-=93;Z|&k;`l9b@<}p29i2yX60ka5$TP z1CDhBTG{jz_7a9ZxB{7Zy0aX0v9gd;qJL^w!}#0S{IwWt@aJVDSR#x%^jC_XmNF$DvN~v2A`&OAq0eHfwA=D@ZAdLMZApYQ~v_P;awOQL|+0aKYgRl_{Fk zTq7e2lSx(MszHtEqy^n|O0NFRM_3A+tL#c&&%^~;MPsC`wHv>0Zo3PgZ{qTPAzP=b zz3^%8>rtXe%+!D9hE7*@ILX-u?&V~BwFdApxID}`B{AMF=;P#Lf6^vcf0p1r(Ubp* zfr0S&`!r0Gcw=Sn3xk5Z|2N0g+`iGVk@%Cx9i0)MEv=G#AC;WCuuiFT-bybSZ7OEr z+_%87Qm>l@c9}W6`^>LI`pwOk{imf%jEY-9;idj)LcHM5P(co50cOLxy>jL~iM}sr z@>!aKi%f$W36k0y-yK0c6z)*1MhEp9bN8bD&5Fkn&^&slKC#|ji3K&!Ced-TYn=$b zC-j7EyN448!kw?@RI6$^${S{FR;3ypUpmiu08A5Y&8IEXXWSx=Y?QPz@&z^ATtN8_ zW%)ZMB-w?J7R~MOCbPCHICy{Tww9M@xNy+yCgf~RbQGzyGHl*F<29OVSvQ`jpDAv3 zUOG%p$pEpF`z5a)nf7f{lFYa@qMx!l9)A;g3s^2q5o2AO|yAn#UWhIi*bX@vI2wg>xfJiXYua%C+E%F}Ggs1t3kL0pei?|7z zv~N!aAI!Ff)~A!?--Zt-X~ld+AGJ65SMWbuos83EIMOU6^$ z@a6Y(qxvGqb96XDJfmEJoV8gI|0V2a%($S_4R!6{);P1m>yv0^IrSfP!&!r~5 z9SV4BE0c|T%`LUh-XIrbC5HN>5wp0J^1+^3bUrl&hXl{(+v;1GG!R|s%J#AT-FhbR zzxo2w-Sq|J{YTE$+KacQ%T#@NW{)$leurnNq379}3KGN=29FE=<4F{P2^18eYlRq= zso!g4ITi}a{kvX+&&@o{6dat*Jgi*q8UyBF{bQM&^Vd;(L)QhPC6_PJdPx=knrQ7+ z52wy~3M=zqi|)8-oB89=TtaI$0rx9AnWvh*v+{}Fuf3~a#O;l8?aJ0+Qaq^kU04(l38UNXrj5Ua2oUQ8aAv&)Sr8A0o zY&zrjKAGKe9Q~6dg*}<1&&G`t7lUrwq`9BAadwIXGUn}}V^@98Yd^WBL zhwU0fU$Mm*gQC9xaH@Va-eb@#3WxW*Nou`WyYDgl!5RMz)Q)Sb?Pvvy?m%ys>)+n!Q5vI&bbt8)V~XOc!;JYuU~4HSy6I z=Dwq?OYPZzrR5TEdjG;nnQe1zD^#l5>K?S`ZJ=PFb8Fn1njK?=&%(^C%T;aU;gTaA z;s^c`BW=JWKPaBEJi>EF{j1{U@l~9No$Nx*nXqA|Cb~(7KNf>lDu&8&$yM3oYpIX@ z!?6;br{`Z7E|vKaSL;IEPR7%w5G$UxwueMtM03hX-~u&U+gvSs9^Nx=RW*D}^!b_& z`1?auc8U3B?9mV6Yk~@n&31b)>r3pvN3P+iG-GxKrr_;3l9+mO!81uZNnM9&(_Q-N zbuKKYP%oaTN~}Yj>=}K$+%d{siGt;%p*KQm_7O$Ka5x=<@935S{BH%94!$PG0)mCA{ zIRMlvBVIuoj}V7oOb;Bcsq{`(9S5E^y$bTte1b3zwzll|bl_xi)RKcec! z_%zE}8Fr1TfPav>1iFtsF1WtD3gPMGZSZZ^V)}aD`fWQF=~VvBhPeZ={{DkB9`R4SW-uRU|6No;SZ7W zA|A=Xn`q`jt~v1F%I!e;+sCVQ(y$0deK z{+r8+1vN`^!06?x!)l4Z>a&1KaJUz~d>b?Sy|EYTev|c}(@4M57cqPXo8(#XCxAWU zFf-|x8yd5CEWBhNX<9~incRKKxHBUA{RcTeB%;l>VCan5B}WOD zOb+z>9x&7uV-A=&S3O?{5I$eyGf#&sbwqr>O=6!{RHR^$_Hd$D7(X)7^OJ7Y5^j>t zn{y1_@JlwVA~}$0HfEbH>jiw+dF9rwJQ9J>Z@04-nJUW%Ycxx+YB|#S-pKzsWEuU0lU3uoG!}W3C;)+&h`oH;jNbo*xRMCXz~PME_DAO zsr1tB!e)fsxJ1akeh(I0@$<5dFL}?NQg=I@v=(_0;uTkYa=m__yK$h~cb(E{@@g&c zW2ecDHLz3Mrj&B~lu68rlRxLiTJP&T8YDRW`BA`R&67YAAs^gMX8}JjYG>7HZs(vW z{0lJvk+jo$fY_EQ z5Tv-~%UXo0*^Gnoe*91All{kkFHJvG{0nJ%aQAlqQkr5<|K61UEKTj9NNI|crbuau zl%_~&ij<~EX^NDlNNI|crbuaul%_~&ij<~EX^NDl|G6|3-2KfMs{US@e!i2Ym)fsi zQ4Rb|Cu299|Hej)?Mh8b_gsLQoO0xc>u0U*5kp*US89T7Ok>FTl7C7g87h4WJ`bB( zxd+WOnT#oKknQG+p{CD-s|hdf&AgvU-;(*oUUadN4h30{Ex3a=;8KvO05V3#BtZ-n z8l#W}1Hv9sdbDeLVTbzJ8Azc|tNfelKHALo-f;gdgFU7d2_iFh$!`)|z8;gKBd?v* zxz*XOs>ncXIbSQa2lEGLcCu6hlcUQb47m;W%zrUcItOf?Y&A>Tl&vpZ z_f#8@&gizPYL(S;H>s)Bhk2GTbEvqA%GOv^uGYe!3!8}MD4bSuFr!Yd6_-`qt7|X$ z3Alh#cWc54)nK~lU`AL1i?Pz2xRNO-pHpRGf~SOvucV67;dRK$9tKV{W&?Rh11XzP zV8RG};rrR#rlY8S6FWOjAvrf8=GOwkFOOZ`3%8Hg3pUe z^k}Z&NO#rX=DJqqHFxH~v154nyrH9+K-t7s?EsA4?Q$Va5t-#}hMS zDxI7}EL@UFh9`&X;Su|u47K8ZvsPBegC2a=32lOwz9rnp6CAzfGY_LJP=(o|9cjGh z0I=^51KWB^e-ds}CPoaNkKqQJd|cM4FdZ9CFo}2p%H&bHQ6{n67CMpdYkMkhrqLJA z6qQ(*5>U!I8Tf(jTEUz$gMk((qVqD9JIx!+R6mlt8Z6h35?b~qWZpLfy>NQEP`Lxb zyXCJj(Z5{fDS(y3iN7RRx8(6{<^2lf8>jdvUD!OIzx5XG`<{|F%@(8w68xX~cV46aQ$w?E3@kMBG?zaHhz*<*DLvS+p&a9EL3x41DXDU3{4X3%t7%~OP7=*iV$L2^QZIOd7m^zQzLEL);Wri1ui?l{xMzW!ow}KWGtq^GbO`z^H{P;kwKE( zN_69GG-Sg>~$GF*1U>=3KOm-dq&O8LTG zbt(4V4T_N#pT3mYm_x- z8M<^4=aLVy*9pn+2U~x;2P2W3SNs|w#7vUj7i-~ zIRk%??i=X4{n(%BgSqMhxBlqjwCh=~>({1sAl?Sfcb)I`_kp}v$qZdMpU43wTb4oIAZ+D^l!9XPNr?s<3rg%L>P(Ga?H@ zW$w=evbx5ZW+a=VgVD5pte&6dTK-_rQN1;Y`(yg>0sc*6{T{yF9K`edvdu=E=;!;J zRLF6Le*MYC;r0Eb^D+Tf(qZ6%1A#LH4CAT*I}hDAgz!g<9}-a~E~ki}Su1~M>YdN0 z56Urmdl|#f{a$5$a!Iv_q)O2kF}Ne+D*0_k1|7ucdoutCZM%g7D-fm5?zen5Ai+BP zu5Ww#qg;wPUHCqsI$X@q~S`V|?zLZh;)_ot1UTey(j<+2G5@ zjjVgU=Z;W-UgGFwQ@aN75G5-lD6^`a2-`=e+i^18q}i@1`eNbUruAnb@m}jNaFDmm zB-M5hP2&cNgf@s z>CFK-*Qgq1faj-QXvWEdPXvUf*DNYBK3{)Qf2&>NOOgPqEy-0{t6a%tBt9oHf z(5k8JJ~$J!s!1BYaIAZI77MLf2fX6hBsvPjyba_#(EV`E^&WyPX2J$7>xDglmZfPV z9KUkwPzFd#p97L33$UlKCr(eA*bP2FA|0v+0NbkToT5A9fj*0VoA#ks6f92XQE=UC zlbO|X^F?}Z(b^rICgBbA~TWt0O|ZJn={Ae?d7zQCPQh2urU>FpG6 z-E>~SlFFB^j)1Z5$aZp{r3y%Ws7B`=A)mMFJ8*$`H=p83ctwjxsDyZ04>rE@IB2I; z#q?mf4U&m=E_mht(()0|ISmMH(5LGhvRcT2Hru2t!~kU^Fey5{fvDQ{u=D1--AwVX zl<7Y=$v-+G`=DC9H8uT5>%PYsSl^V3jUCs|5FEQ9h#_B#U#3JRgDldYqfhpn@doTr^F7|Bp{4G~;WCM|gpKNdA+I zMp@2se{lT%=6iBG6ETWpayv4DKDW2~Ox(}~cOtVmy*Sml@M>nY++4j!+BWNHEP-I? zDf|WmTmnPE&?@MuBz`|4#p`k}^4IfIdp7vtoDCJZ1dKNfz0{;GT-qSkP5tdEmk`oT-0RqhGKG^uCNWag9Xd|k*qCS#Jj*J1dK~Bm_3 z_Wr2@ z*~CnK2z)NL;!Z$t;IEYomG^3jqwW)*SR=q_xBa}uPO23uI+Q3%xUl+5?B_GfSj>Q+ znPbJ65mtq^591cmuJ&g+19|A5IET zEp*g)8%3Z~j9?9OuqVTvuhi^m#7&3cX5V{VJkB)P<(IysWtlL?Ro@x$EKU}ey#JAo z$SbC7vZ$k1HpiIhAaFuSivly^4M}d!^PLRpQ%-ZT##pU6NrejHm<*~siwJHHDhnpK zaD+%=o~_KlPcAz8DpyTH#p;=&mXJIfHpTj1!z5x>4$zB+ki3RyOb8X;aH{_MIh$Pn zmM}*g3g$fSUHer{Vb=ve8}lm5<)atq=$RfKXCl?yV_mI}KNyttEEKTVhsIS4(ic4s zW8L{x{cNCFhu&Aj(=f~GQ}K_dN_oLJ?D&G-LdybLijYy`Ygdz=3=P2rj^pL~zK@Ud zX)VN?_&u8O_{y?Hr67@1ChT5PFJXQqQMT4P+#@=~&8qTxAEFA1=xjtrf;X`wGC22a zY-;kHo6vivBHuKi%PEu<&sBW>Y%K5kj?`dUoLFzGch-h7+{iQ6?H#RHx|5{;vVzrn zY*Y@0{1pEWw52P{t^~R3VLOqOsU1_U-+#a^&CyLHAAhLp$GCL;QRucXxG}>ucI8U1 z_){*9ZHtcjmd>&;vWSUpl10plL73QeqKm-Q_?$Nicq&-!7ZKbl{cy-TL$5w45Ars* z2StHxE9S+;L5|(=a@kt@g>o*^f)1$hZJ*ErehsuDUXr?t^h6DBF-Y+xRcK zND7CKkA$^8bC9y)`lx*7YNXz%v=lU6IOy-8*p4vpVXFU1=_ab88bf2YY8{UXVR(q8 zA*l6OF)3}s4y!f}Hz$n7Cn2}zpptS2?qB2iF}&_snNm$iYrE06)a-A#y5qJv=uFQL zMTmM9L<~JK`Dbr;)9bg`^{0d*WiAg~E2BQ6urthOrFo2oeRU97Pi6p!%RhF{r{oCy zn)yonij`V#Vz4(%m2`UVVMvddbmnl)Y0!7CI@3`byjW@q5(Dn%@o&kpne~#u#lu1h z$3s+@khePeV>S!E3hq<p^#qDEE^ z-;5GVr}eyk``IcavS}D=f}0-V@dH+?F1Mvcq`$V{czG(bIc?IyQ9q!VTT-ZMEtvlD zIor;Yiq$6sAIX$c$hTSiV$%YqITMXpCZl(rgk|4P7n5IKaD5_m^pQihEpN@D09Xfx zSQ&6bckb4|KOiywUG=DfgPFCvE!iDt<@pCb-kabjKtaLpsRk8@-LejuHOAk6zo5cN zL}eO;igov6*~~O)Pwsit{ohM!$X_Z}%{#^Fd8b(IHPwCTx?m9uy_L5yLW8Q$TC5S{06ZvzqULd$A4p~H>5vl!&h|+ zIsP2bDBz`Dbv1I3g}BK&mg)SX8ntgumw%2I%LxDW>O7}2?;)fo?&p@v-r{r7T3rmo z9T_wRV{4)u;R7OP+6#_yK|1`#Q`eyEC$Y;sPJDvq@K@f(UvuHyuGixY9WF}#_p-8= z@dxOCgh?qI=UscM?NuvEuO-55i5sV9QJg{hxU_t>93=4L^ZfTt&7}Dh0bdIk;_f}6 zX6bkKXbhpWsaRo&reAh(wieadz=}6KASg?!TQ->tS^2=r+4N)So>Odd#2I_#Noc`M z6>LIoLHdGAw9bk2y04OKrt}NS(#s*3fY+-}0ga{jE5AzUz>#xH@5}7Odxi)oHBDCX z@Mi+7*>;x~2&Ehy#wKkb_1CTJz%0a z^L3~&&61BYCd6Mq>WGtwvU~VyvxoMXdQbeGn^`D?HnO>OOZwLA`xUz5lLb~TYHwYN#CU8D zj3;HQ>)X|%c?8V^RsvGLqt}_iOV1B$pNot*?5TxiTl}e8IP?VMkKj*YEn}}0W(iMu9i!d;HF3Hi^tiyUNiD+9!oad zpsd3Evx9R^Wia`G**KYFw{gaum}Bk`%vMXvuPPpw*Ow)~a8`BmF50#|-9=VYEt+np ziYJIWi_C7C-v9!~^t6N51Y(*Yhe!MjEO91U?iv@(Ad)HDGI`&^)1TFI(eMaPycEh* zIK=?vm1Ec`u0&6u7Lj-xB-ULf;*@gP^EJyE`_4~4y_P`GbmgyVz+`%l%T2yNRu7@& zEBX{jPXXOcq#g`q33^F;ZIjN^FEKCiURnZsOve=g*lMG3wFO#>EPbOKPz=mTgg|>w zA9R8T58PM%K0u(ikOTMbR0_Mk%Ui#X)Z77qyPy_&aM>G{zzFQ*hOeY@&7D{MUDU3& zmjc%oyit4U2XBI)@J0pYSgLqI_Yj%*4Y>L|Nyh;`q6u{%73zWjSnQ&l$Sk*zFG!VR zLNhU3JGZq0Ff+6vbu3IRT=OEte@6Z*YDxKlKI?JaYia2B9GO)X zvn`(sX^%diEuDcb*HM6p6lEtBtT=Hbo^3-fjuYIqB59aYjxLaaxu0Vr1T@#n*`imj(!NN_!SW#dsYW%X6ugD5( z=AMh*1zOV#kR2esLc$HrTL&aHE#>cMk0}mbK5`BCcKJw*k*yMY>tB=9>SPupX3zf_yB3$EZTi`tv{W8IF_z$dI^6S zNW=j&;RKp+8UvLt;V-Y3PECL&oTDN$yDJBdaYK1Fkoqvr3r}tRT+y6~qXgrE75Fzd z$ePQ{6rb7FC13b$3?T68gM4x4k)asCyM%iGoXfMQ%P)A|bZyakC6t(GC3^DIRfcHl z(7!Vr)8anmJc9kUy(}7y`1kf?_*c&KpPQb>|8S;gX_4wq`KeMr@ZGJ%!w7^HCGDn` z!QLlBcqg^if};e68MHikSiHLt_AN!a&9Z#{;r5aQ*1&Nt$M3@o%B#5R3Mjg$e-fz^ z%zrOZT|)jv)v4v(yZ=j(8gMuGXOX(XgcPaBs#9duDYEJmS#^r6Iz?8UBCAf3Rj0_R zQ)JaCvg#CBb&9MyMOK|6t4{w5Rj16q8N+|E+mi9!CI9bkOKEqn{P(*p_5F`I{=IHX z_)q^H;e3ey7YOGO%kMk&mk8(S-Qb@QPQCyV;UEzX65${b4ie!Y5e^dJAQ27{;UEzX z65${b4ie!Y5e^dJAQ8@gj&Ni|e=~;QzdsA_@%t=%D%4$5o~+N(<}1EDele#ceXh zIc~*q$~ea{*jZ!Tn;kkS8TTLas~5GsS`Fzn{#mP>Im3L^?rX91g9->wh0z_m9iNBB z{4Ml?GzZ#oMX^RgQZ-tjvI;4FN6Bnj->DQ@n14)Cm_nbeLdvQ<@8iH6o9oiF2ww4r z*T0I(48wUmo_FS5PSPvoh)Tb9A{e4`Oaccl#+_ltmFN%TXGD>j>6BQk3yI8i*f{9h zN;W~hNt-2QJ$Y#IIOJ&dUD5D;jiOYk*+J0e5ZC8Y>#%-LZXpu97|Xc>g2dR*WO>ef z7QWVbTA%qJ|18dxq#Y3gfrZ>UMR*y6N*7mZ;F5du{-1LW7pV4aGxoNcX6qcvicXa^ z769PUSDmKpcYIXo=dWCkHZ z4-$qs>QsH2sjq3{GijCLf^Azf29Y-5=!Zwgciyjkw;Xtn8$Lb5 zpGqh3ZXiV{W`Zz^>-u)qWN%GDrms_9rRG%aidV7MOEJ>L*EN_$!DlpWM=xtfv{M(% zPM4k>n|K;q@ipN2M~e#|MRRX6wn2Vzxr;Ze-_keJj-v8h%JX3QiUJ!=x9S!jH^DK2 z48#$f@lW>28$rZ~1Sj{yl-1>y5`|g*pH1=BTTjfc*ugYILEP~W&Dzm7`!M>`~G3vz%m zV!iqqch0$E#at~uNE+voZtB>pB;)mx3ZBsm(>%8!Vd)<kL9syWPxADt`63ladon znwu55{zqm~vT5{>@GJK>^fI=oK9txuSbX;z7y}G6_rz^^Q_G1*p)clN*0iKnHrPD~ zNE)+Lf}TwanP*Z7wyJ{VKCWs0ky_X(TuI85VY$!Uwa^2y{SjBhH*!Y`VU^wZT+R^~kZHVO5WdHS2 zKj&q+Qt7}>OUQnFiL_;C3@*z*8YkH$g&HN?ElvOXm^#J3IHrzkUiH_<)azb7r-+sL zz1l7P zwvIhcsZlA3qy=APrXgx{R!`u^MA)~O_d^Xm`dq0`w1jc}FL!RFfvQD$nRSyU0e<@j z2WQgplo35EZR^9B?F4?b*T*|R8R4z4F2wD}WG=qll)7@#Y@#gxQli7C5LtG;fLG>{ zhb=GjM3yUY|Sd@s5!-25dA;M6dHiCu6RQR3{1Ez-}deV2Pb zt)W3^$jyy@=979+R_MouYoYjBx*{E2_4wwC(7kJIUp2Xepi^u9PC}o`WU{omvK}m1 zK#r_gS1LOON@q$3CeTFr)uCj(c0U?>_8iJpda&OzSh$x=^x>-Y_oB2^3jAl!;``T-9EU=*v_l(dC+C`%_yB|Ydre;l zsM0oBidDX+9rz@clkT2otmWffR@9TAT9e0MI^7dRg{AVIVMwp}l3g5K8g$i#E22Y4 zw@^|?{m?I^)UydB-$2Musy5e-tqbijk7}&XLjts7NG`%jI~YlOM1pRrQLnl@+8H(O zkyP)9aeE3J(wNAY+5yFwaE@^N)38)eEihx3t8!Nfs%QEZgGVFgB--z#)*XEn;9SnN zV`*AqBRUD16q}bt^vk0jrlgWAFI&YZ9*cPkDRgZf7q`*ry$yv|VHA+88%%>R3U5s= zR&FiV&p9+T&MMWqek?gu#j#|Xlm;_B{#kX(ky3Z1b6cXsvu=Mg$9Rpo8H4K7LW^?M zjP4P9j=gry%?*4sQ$^^DbtRbdQ!K$E74;I}70pY^=||F}n0W^PccJ^FE!s zB?QHPxoYL0Uw}l;|2lZLxB!{;as_%9Wx^$Lgs)mFq{=(zr~7VW0gSZ4V z(9VTNFauwaV>`^PV=VZ=Se7wSF9OcTN~fAS)8Psatvjvp*mJN0Z_5drIEbLKCvYm} zy5MuUSStACDPIjF;k+H?>POBPW(;)SzRL8teJkC8Ybf#4=kl=cV^CV5mG1s?GT%holn<;H;0mOv>|;E->xHmI{zQ)nx}4%}D?! zKzuIYH}B2>s34hf5Z`wYpDCouqq9oNMBFp^a(p_o;=s{H?d>DkVL-b9`Rp0s@V{KX9jiX?HSAw8{R9)HI zQq^k&7Kou`Kxh$&Ugq5m2X?DVp_Wzgx}y@()e@(*=OD1GY-EBEcU#}SH}nn-hsG^a>&iZrK4 zbBZ*lNOOubr$}>(G^a>&iZrK4bBZ*lNOOubr~kP*CDH!P7--N?PzY2keP5e7cv>nr zIGcG`{WGte0PT;w^1Z1y>YB3m!&Zcv?hAJ-3&|3*<8v;*i#nE!*V4-RvU0g9Rb%0E zIB4p|c)PIOT-s84aB9Y7NJ#nBN{@(E8~(DRNwguBmTS%eG9#T> zqrIZ1N2o#?aV$j>hrPBbmKoUCb94Ae60fQUUQO!NlX~d5Z2uNOB=az)vD3s}1``gz zKLb!Mg^Q5#9S6`bg!`|kH<3Gq(*{FuWxgCJzm+zJH+O*=T*RxZvSLOk%ev`~FBd_( zf%mfzb|HH|V#fcFjyZLYBaQ8l20HV}gK zXidf?e*f5MS;H$%dZVZRZGZs~1fKEJ!vlCRm%rP<;qT44x=iW3G~u4jgYDmDsbIG> znH-)QpR2Olm$J9-Zb+O>wz`@+L8lq)GfdoK46|E`I>yr7UCdx68=pi;WFAB_`EpJP zhXB0z%)8s87MbIEV=rtSqNA4@XF??yYpgA<9M+kwvTap&Ll(ZwMOPNE7;Uwa5r&2O ze}Y_me4vrRVi(_5YqCdHx0}R1N`5wIds$IP=2$GXufp@lF8u28RQwdN`!4@(0 z647kD7Y__?Hohs1UV7oWb+ZeX=qLz~Gm!WxGJ>e;L>TQzIMX&G3^G5q%O6T#6D;xQ zMPDt__8;u`&|Z+@ot?h3y8F)j@9s9l|8{qqkG3c%?m5qJ^of6yus0v!AGhYB1Sw z^{}wzhbk?eTXa40(z56-zE4n`6chU4xi)Cun=!>z@Y}DW-T|@mBsc`IgrKW@maBQ< zzh5B8FTf9nP9p+A<-2&d=kcE<%eIX{-%3AmRzLJZZ))G7KAb?&tq|=n8n`sI%<)_{ z!tUvElZ4z#YjVu_lO&*co&DP79om51cAUPia?)13@XzY?sq?6-JDnBaQ9b<5?k(Lc zt(!zdUH%Rz)-iY3;J0TD>K)?A>QjQ)|EYeL6}Nk=|6AND~CAkmvBE5@%bOkBWi&CV7-g`$N zbV3ghAV3It=A7-BIkV5+`#<;G_lxI6-tdAIvd9dxF6R4L>-u4#1kQjfU6$M~2kNcM zdUZ~TMWfMp_U57ON$T^FI!}Ec_*4(uY!file@MitFmAZUiHKC&Cu%L$(3$3Ac3`$Bw1@cFE*p55YD3U zIx(bikcE*_BPf6xFx&%t3i(BF5<%E&)|@r^b6wsC^pgM{D0$Zc|I$dU)w%lV{sWy9 zZ>(G~2jchzN9@$~oo`&z66op7de-HjP4}cq2mWWg_-@D46_f(4Mb}s9~pFkm1ub z9U)Cmqp-%ck0W@x6IrCN=e(S;-aqSl~>=tGw z_3v04ytiK;4Y^<6L?1yB>ABy;PS?+W;PaEcX$Q$RQt#V45CXp)h8$bepIjck$^F_K zi3DF}$o7HvkEI$+uLY_QR27_R!{U8XoY05TzBl~6{*SxQ+|Jl$n^elVHzGJ+gj5>w z;4Y+!o1$NN)DSFOyHZ?D>rl4sIgb(;6sY2vXao{@W!Gbs)o?0Yr1?i)_Ft0QEy!^X z6r~Sg>ug1Yx+9O8Vdd+7X$SnyX(Z@;BC;SWl-`!iQCb7*9iBbT#t822i^-{&wwl(5 zR>dd5Zf4>3}|zcYzHy9Q1*&= zq3XUS?bXLSHvsoeGtM%TzW_UdGgEu@63z`kZlCU}a@msQ=z=TWeWuFgRN7sUeJJU) zbF~JF`Z)S5GZRX5F?r^VJqT4oP>8tXG>R9etX*nYG~Q;U2qZFO9Jq4v4$Cs0r79n$APQuBH6odM+1_uEk!`?foda*u>lCLLuzBFF0nGa1v?)h?qg& z8&#)FD9mNN%0qzlH9Mwa0M8K0wWLjn!dy9E`W{Y79(p$-vz^<{tu1-_a%BXl(6%{x z9z1Gk8I)T&z;3`u=+AD9h4f7cDsS2fM!dKR0=)*jzizJ6eGb_pg2#~XykB(VN45`^ z=mCbM;Mk{|m%K`T!IwG(HOmk86y|GzPwmG|Dp8AFq+)CE4+p|i&LshZsKTH1i_Rzh zqevBZliKC)HAzU782W7yE{Gf0RtXoy0p@@>)7xx|tTrbiH08kGY|k=ZfhU)p?e=dz ztOA2pfk78iGgCq{;@CJAz||Z0+$3;ptHxHax;o5;3q+`2ROGnqY5%a7ESDq z_mobRGjbbn$<$47$-OMmyK^6T6EjD42vhfhqk~Jwm+7A7-z~e@l`HpY)isL6T0WmA zP?c`I!-I^ech`zOCqc-OBILTyOdDA28dx4zL=<`fv>>BDD;~F@s+)d9nJ$G;tV~_a zm?8#6Tv&WF5xy?v_Pn|h6Zq?z^}Kj2&r}H2JR8UlMaSu(o;$Cp=K5TjePaFZHZ)ih zTrjZSpf|%R?z&Cxznz1%NQj1ZUtTlNCj>q1`MtPV|CL((&zhShDqU zN?ogxON49q$$9U&++s;&!IIPa(;iO8K7Y?xZ@T}1vA7KWfw5$MAN(_871(1K3&U6# z#=hecp`11D;0Dk;E3 z^SpJ24djHSdTj_^*h)K>b6p!#NNKJrX=*XQHKbI5z8D@07!H|{T_jn3uH0F*6kge3 zI1y@iLamF8ee&*GVkYZH2kJc5uu1%k-Uk^*R?(e1(NpC2_`|u00-{Ge$!Ngtk&K&F zJHZKKj?$?CTdYs|dwYCXNM)o?nfVR!n}_U=#sa|+?@FaC`A^5ZA|mpvTc*DHDK&3f zy=zG`aq?}XS+S5WONi8z?jiALXdd}e*z(Y^{-J;LySc#O$XjM;pVa|Fvui#xx0bOY z@Rv;?IkQ5uOQO!Ql<rqJN2+_9gm0e{m3+I-Px|;S?CcOaj|ds!Vo@OPQs-^D$_zLQb?aM zD!9>Vd#jSN@ZioB|Gix(u{ZVY_?G<8`3?wAd-CJ&ezS+p@bwmn4Aqnj{t-KlteMy1 zMLWh$2X-n4+WzQX;dBNe?{#7P7NPi3u_^UrkV*B)d-D_Q?s@Zs5;aL1z+!NPlK?%B78J^HO#=j{7GPz%c-wfU7Xnh2g9U?N|$}c zHvLPj)U`x)wsJ38ru{^p&R&Q)i*HlF*F(7auc0lCJh{tCGA{l{)a2@?OqH}^ib?8+ zPi#JQUV#I?le-*&_wT@eb~f{o)iOm~--@WLW!kl4;=`LqN4_;2dc)}O=EduYuItaX zcB6%@)daaE^oGkF1sjFR!)n2d(dU}g9izjH0MrDEqj-t*K`q7BswW!++B#q`xK zjm{gZ@GA38NN>2Rl;N5}(|*o@n|Hi&ay6eos8PwmQ}7u3<@EE1vv_yEvnT3#mDjMP zePkhJQlS5tP<57J7g@EaXkb%Z2Ylrox;$fKRkP{zGf|yqznOPxhDf{Uy>O$fY{m-5 ztuzPJFey#Vbt>@#S;E0tI;#$sCV3r;3$~%2bW>g1`R|Y(COdoJRBlH;e^_bi!Ar31 z-7T95Kl{grTy@Y#C4`S}8rH_FQ#S2C$n6x7C4fCYnQY!cjG3tgttr}ftC!Est5vhB zACGv28I;nepRriHWv$HN8$JR-waYiP-3s5m%i7Xy;An}PF4IQagpCosj68EU7dloJ zy3tUnx28Ya15Z~v(l8Y28I_uoa$nI(pVA&mSLvT+9f;s}ye-A8bpSU~bK5M0o=4r8 z)VS4D)aWd1QZOBqq;@qZpz?7Vq^5f!!s4!9SNr?Y^?x4_r22;k1pj7^jjd_Enq0Yq z&mULAEJ7@-JHJQcyfE`H`@{9Meq(9^;eWe+hP_rwH+}E%w)~4#+BFRU9IX${UyB=p z??~|^e7+Mr_DV(lF2ySWnfKp$xSW$hz9>epR=m&<~ULd1;zKuX;in(;~kII+``aoNml3l}|4Z-fL1 zzXmda;VB`CsiH8*Aa#TQ_R1ZHJX0skua)aHZY6CUUh_8#DIfoHfuplG23_@w=l3tV z&XDbCn)CuUWy>B%-_Dai!44BWZ9w9tSZgo85`_Azo#Q}f^nyB>A3bm8sC20^MEfEc z&UUYwXs(wut)Pk^mmQPcag(0CB{<%%&Y$i9WwQ=lnKPa^4GI&MM<2t5SFW@r+7XT; zSWV7WsHcnE>Z4R>Q5UUW@2U>umV?sJQ>4ch70*5gp7oI&A(K5IJ2b%pv)T(=@cL#<(*+phY})*4(~b6`{M1*qK1z`DN9tSII^{?A>3FyKZ3K^APCt zOKOF))rSUED+mpR&Zyutz2w8`B}@%&dCYhRpwJ7owwegENrMwJ7V^KHEk))~nR=Uu zxM&$R%N&57PE#;mS|gG`J3Ix#*FNb#!g;v3(ueY(wY z5V>k_GVW5lAQ%)%xF$wZXbL3cXU2osE)g@EUDEpWr>aqma+}}N-5Pz>vj1hI_m~@y ze|BX_;;VMx3A@*NFswKFi?(i2|KAf}dNM7l7 zByKO&H*8nVkH2r?*K`b9E%2}3o4!m4{57w+x#80~TCYnki+s3LPYc>xO>1{+S%U08 z4;;77dxJ(4T?X>^`aAXYz_osXs>cIx_ZN;N`+U3t`OUA7gC2Y`xw*yd(lJ**24=6h zCpp%OkFsVV!%<*jCe8UCh18qzR^M)vCzTR;yWM!3-fu*HTg;wRistd@;=1hUrtP+v zGUb_JTzHQE*JMAw=W?UNV`J`b$!=euK=yu4PMl|k-=q90re8=Q&MM2GCGT@epQw)x z3#gB((D+r%mqCxNuRni*IylwlEbyKhmX5in%8pJ$%%sv-PZy&@HhoND%O2y;R$S6H zKN2HfWTv~t=QSU9mI}*^R7oK?LxG<5H0f^sWFKskc5cQprlBF^8(v3B_H|<)2%_EN z$=6WEH{@63?b1}mfF}ozF7D<87uv2df{tazbNJ57e12)21lr!=ak051IAUG~2WM`b6V?-IF82jcU8eha-kjy0ooo4~ zU$mA2GDC0p>9z^gl#Qd#?0lQ0o`U zP^lZVK&~Im`IZE~7c9;!SwXyxt_=fzG&EUQ^cezsP$A^{>qu?Lfl!_q=tL&h%GB3) zN8ab;X3c3v;&ZT+S4Y89&s?^SOHIj<A{zDKHIEAyS;AwNAE>4Lmwj>3V z%)9`UsCFj!>0PLg+Fq!yde0@COdaLd-2&Ks4rdWAOa^K-9Ob_y2H4de<;QzWBoF~l z&ac$1535)_6+08e?_U=`r$iOs2Dt%tzcuYE#9f76s;8xmCqz3p(ZG~_!OsU11ef`r zEc3qs*AF9zhY-Y5DAQJxBjit$F+D)Zy3Tn%S^Bm@IR$V^eN{o~;dSx-RR!VOfRY_P zq`H(-Ez6G=oe8`7s|xH8E5Lwh9?NFos=@&^P^YywC6-Z#^dYa%#MUz zP$sJQgTs}2e0tyt3ll^J+;;|v&d_o=w{25JF`bp)!qn*XlfgT;D<#X1W3w50Hf?&AZf3J3b%I3UFSx zA)A@;`71NXe=e+KUmGNL7#F?oDd)FxhDXS8M)|NE4kNS`iL|hmI z14b+OG@$-`ytrA?lN3C&rOy^{(956e(1c$-JVG~qFWi4Q;pcz;9r$Cy&p}G{ZLB9G zomn>^kDc4b4>ct%iTmR4nUpBS3Hx3?(S)f%uc~8CMJO(BaU6JEHlpJvRhE`uNeyD{ z9+LZq6%p^r@g~o9t(x`C{-nd-qyJuqj|TohhZTJPL5EF#AN;cpcSd1!7^A}&9meP| zMu#yvjL~6?4r6o}qr(^-#^^9chcP;g(P4}Z|NA;j9sNgR_zzC_dH(w?|KAgS{C>ak zU!U+(^uNyWuTA*z&iea=>P-v|GkaKbY&2?vvKFbM~fa4-o6lW;Hz z2a|9x2?vvKFbM~fa4-o6lW;Hz2a|CA{e(0ByD|I+6Ao_HAKBvnop7Xnzw%#CIClT* z9RFIv5wH0BgmYB=4+&@Z_bLB!Nb~0JgMUsqO68b@gGo4;go8;qn1q8#IGBWkNjR8< zgGo4;go8;qn1q8#IGBWkNjU$0!pZvG82*C^r|0)u{=X9rR>dEI<6loWyuW|)zs~Wm zB^-~ze@Hl^|B!GJf1mO%6Hf8(gMUsqBw$R!!6Y0^!oegQOv1q=98AK&Bpgh_!6Y0^ z!oegQOv1q=98AK&B%FUg;ZSz{(HIW?ew)pe-`i~ZYTm=cQkdjXYGfq8XH^v`pY*^= z^2v`j3zwjw{5#)q2&v?cOO(d>vbFdKW$5s{=2MWV_Ih(x^Sy5UeEu$x0|jo8rVl^f z|5zXp`2NN&8g}FlLzJnMTxc1{z}?u5jfun=2L+4>D!92D;CVRCw(R!LrcF7ES;sX8 zixo!)Wtr+Drpp|@u{VE9eZDL{0??uSsW-St>L)(Cqqm)xzmt`^sLRXJwA)}<)ajEE zFG|Ua96H^vZt4DPEwP0nr@gp(;6F-wq<3a9^zPLC`&@A&BR+2H~AgvTm=hrnqeFN1GaXv9(*M>oPV*r>K!UI}z<*!+B**tk=YY zT~tr0bgokLL^3TOPBed|)qx`85<@6QF{acS=YQ7IAKAs<^awQQX(SMn3M4w;f4e%a z7lS6^<-BIlwI6@|(VJNAnKvE!8|jh@Lul#&-taEl{T1x6b4MN`o5E40n53EvDe6rj z=0_Yg(rG)vw#}kE@3zzhtQGDSN8Ncyb^DS}FxcAt#l1LA7t4gmr=wl>92CvR5AVf` z6s$qg@N*Ko-s>r95H!jw@y1}|ZXoa(|NZB`b`_7%w<{_UtB=OuAio2T}9H-Ck@@aDo zHDnJo^G~?e4sNJr@{pwJT__7)Zb4sf#nkH6N|O(!g%$U(^N@3K$n#nS)WuFCH+nUtKwBF+M78|2%%QS{z)`VK7Jdy~b`_stdR@Oevz_{0KSf=8(GJl>#dEzrOY4v%LTY6~< zvxN`I^!pW!OE#Wc;!98$&w*6B59VIICDmTLU%aua%RX%@>?3aP0{m)iEzg?JlJN-U zz$RKAybPJvygzxgA;ZKPW;a7-@3T?*<=l?Ro5#uRa9<^4La0GnFpS^bN$HP%c^>e=#WYwOTnj z_mc*g#MqS(9lRfv-sWrP(u)Rv|0D^2=q3WWZ|};XwxnTO_Ud6ichb%5hyL`WXgSNr zc@35WY_odid^sL7pdr2F)+=w}PV|z_PN!cXesOy_y|09B|2@&Gl%$7T7UwKP^tCCp zbl;BN>a3^fM7*d--=77|Rf6e7p1gHlY3&Od)Wf}uAQAGV6aCTMmM};n>D&3dNM@F*sThx>xz5rh&TrZ2b7ZQ*(RQ(d~5;!1R)}zwPI-Lv%Q~{d#x3Ftv3iX$YhCt zfPjFMswKOr_-FCW!Gpx$#UZJ|lP$hX?6CxoKfNj!wSW zYpdMvXg4CG3b97O#I>iqx19;3=?ZYt3XOwr-W*7~TyMW{LFEa$ctMO@WId%teVrc7 zu}|U~w$^d_Z09eLcZcFdY((E@yT{4_Zkeuu-Ay`{uj~-1W)D=)j)>qy@rP`|I^kUIT61fUZ zGnt7CKTdoz#m})fgo8a-2D$3n!;qzIZopYTtDRxcB_;XxAavg zpgYwJy=abS89|MyIFf=0uh^ag_L;$>d^AQ8l6L-77d^h3M`Z(wF0%Fh#r5ovMdt(r zJOc2gKwt&-s{swV2c|jMnp9uO^6r0G#CjiAagL+oa}>x1tsffh(kn~D4fP9+u^?^B z=FM)4;j|9PeJ_RQZC`=i1ZBaCz&rNMb#frRls{8+@qoA-={$94|HWjPT$@fWAT4&& z12D0WGGVepy>1aS=G<*^V8NLgmLv?Ezwz8l`2=V)Bi3bxJuf!@sxwAU=OmapJKFI!{1RZw`k;wd$2diJ(|^M-Tb|2P z(YpWymTHbT7ZYw?7iKMYK~2QKTu_l}=80UD9-#VPwW#B~30~OX?9o2P2cPx#x z5BjXRhA<1ZV#3U?vl$V)FLJ29;xAuKkOy>%6JBw8{aEoAZM9_F@a`eO9lUuj4_+oWlvS9HqeIRlwD{6&7CDCPW zDEi~Gbc5Tivz}a`-5o<78dXcRQ;)-fENj!8SZ=Iz6-5^WLsf^B3hLcz|d z31O(_ufi*zHnd#cX$Xt zg0Z`_^8~C1|5$wf|1zMEdHe6>)aCm>$mziE5Av6Cy7v3vpXF435hJG!ZzOEzXvj<>Nw--3kO(%f7(X67Ab$!b=F;$B@v{rf#n zPC7zy`?9p-L0VRsx(@GHZv}=;`Tp~|YiS|s{ihsSF1wP4mdirnjKVnpXDz!G5*0VT z0?~04m5u~-s&*u8DXYCwqO(WbkyC7tLtI;4tk+LefHa$=h5In|IPv`A+qvLcO%kGf z94^IbbMO*3E<1Y9k2v3;`B;ZMA1-=1`o!&fE-zPjg2-d*0oc?0w{@--an){_NuZHO zCEw1(MWb4nV0&3_9Z>fy4h^l(^owTS6`7~jy4Fz&|LTW9Jq|Y=lw3ZnXK_$vM*`yH z2CM;_o~$i|dOIoj>*L@H1)NS6V#5-q;&H(zZf{IsA#G93ZAp30XL8zl5V#7-I820i z1f=9ybQHyB@}CDjJvV-5+86yij6K+m5~unAXX+M7+%2KUG!1u{ioXeuNYX1-F#D*~ z89=j+0gsjkWKJ}SP83wl!rgsRYq^ZB20jMHPukRIe%$VQ=9Z!3>9pOfO3h$vof5$k z*NBYUHtLx&vec_zx~wzP`~#y1$gh7g>KT z#FzGz*Nh<8Co(D~=$pOmo*3)zi;vC!_?6DV3w=vGdwBgps|;Ts9>1) zkJBFPDy*I`HP`{S3h2^1^3VLB@~;P5Eq-*WUG#Bjsx}aQlK&hCprg^UC++IxGl-iT z?e?}kyIswv19UBE!iC2{3u&`Gq&{Dsozs@{(baxkSFCnu-mO<$j&Xi0@z!Md!{LbR zan(mXH1E5VlU>Lz-3_eSj$hglHKOY?X5-so6Q~gwpvWekOTyxF(;n8GOtXy6S=7Tn4H!$2%F&d zmlZS9TJ0CqxzIn}(&R7gQup_~L5<&b8K{+DP1`F6zBduA?t7cA#YfpMeLDGYp*^o!!<;FQonLCHF}Y;_aNd6+yxRAA4qjR!zw_Pr4G|xA6I&?&GGe=VnR7 zU$R#i-bzKK;T4zyr!xVBAX5Qqo?g)S#QUrAe&t>t>86~Jm<4~c8v-S$S=w3Jjp6&N z4+rs=1Y@;&P;6tE0~ydEGv-*Z#}(u>q#9<#%rC)SqT774oa;0b%_w{-QN;-Ear&r= z3MLMr$OV7LlJs+bq&ow9hN3!8foCgsUq5zqY?p&SUI8qxJf1=J=R9!oQrmW4zfFJ;sH(;j7QFxwk=e5;7;zSbeXu?(G=3x6>)*O>v2Ef!Ph6o@5vsN$ z62wm!hdl@%Hd-r;gr^(;j8;&2jZl(PdivR5kxvjgDXShJUh8rev6t8F=hr{P&Q|(< zMHO2U_llWPu0Jpp11)#HWnR1PdFLOD8($;6;iCgMq?tF~%Z?9-h?ows0vW8!z8tdt z^--y>x78Zw;!C&G#h@RPKcvks_3V(qx%?Ml>N*qoCmDdB4%x-a8H=j3Il`6rW=oe8 zlx3CPh0Rgvg~8$4H9AEN)+i2dv1uea&eZ4rT*)KYc{Odg25;b$z`mj8+FIHEw$P?J zD%eir-rV-3j=c|RryxC7(nGQs*bG>sw0@0c4{X3er;S4J7zznO>RXFsu8%goR`^kd zEBux9NrKwk#tCQCtt*MD#8r%7LFoO{mLd1H8t~R0*$fzJNyRO8-S{|US0V`)a+VBmhI`H3y3 z?hL@iI_=@Eb88dr8R}%fp^6cG^itq-Hg&HRAg1RE81y5*$_j;?m(LWK19LW|st6Yv zL!Xk(rbXUl@?73z2S&qa2yOxZAK>%P#_fL=b1qE7v;A5r_vECOt8>5Pz^35Y4FF>V z+{ky7qt_4|khV3jNKT=ZXv`9brcURMS&?Q!m!sGS1_L<6Gxg~G9&fXw3n^{W# z`&)+zv*mz-^W3SMWZh*uw9)|}>g+Snqz(A~7f1uCwsw;^T5E@nLa6;fcLBT5E$9s) z>(~+C>kBg0QC`|*6_7mVwhCD)){A57(6?sYdD*xWM<;;@h z%xHx3nZM?Z@k1ERnZKsmqT0b(RIAG`d(Joa1{&Or`EG#T$EG#TC87EsuGY?y5Cpk|yFRRyy#s46c9>0I@zm&?@-v|FJ zl}8tUeAqX4u&@Y~t$ej?9jzQ5{9d-@?)=w>6rS@nBqqBcJffPuNB>IB>ac(O&Q>Iq zorxHA3YFbG(r!1)!v{RjMR#(uc-{Ed@!?euRla=DeWYo#@re~U3Oz%jazKz#=qR)j zdL~KIgHH9jJc!zUac0jihy0Ml%cwY9$>ILlWjr6p23eh7%lb`~sxl%%a=(JRZcYQV);-3nAWNteWWu$A|QSD6UODQbyl@a8;k{UgzI>J%z;@Ak|B4+w< zHSoDgt4fG}gB=<^dqka=I%B;D*yhx^Iog+m?q_Agn@9IhK*(UKT^+UkM5SGg9O)04 z@Sm(1pRzN;@H13Og$nvJ=tgawuD{wCd{ul-aks4TPQ_)5jKGQV%QEd|X|<%JuMNU- z6s?BU{K{MIRASZ9Q%_zZY`S-LqRBUM;H1nFX+BxR2vI$j`=uPuq2XA@H41~~3E{62 zE*O~KwXUt`suVrx%rcitvkx!)k~&?>lY9LxDi@~fKjm6iuGaB9cj;I<2^G*08aSXT zu2I6cD#D16KrZ@jL?RcfdB?}gbMsH}6)Y3idx?~5ag>2cR!dIG@;L==8Jhv$tv<%K zbn>|8{vatAx;HFTY}5HAIGmS~L@t>`xrY`K(BG#|QnW@=FG#XZOsf6s4V^_~`ONF= zLNSP{`)1igtF*N%|7fWeDjIz*=4JS;l4C_=N4_4-%j~x=evE&g%t&D(VVI@A+hni> z)wh!ni$8TU%-!xYJ~$GQ5HIuAvJ{`7>Gu<4d>{zm`01eN8LR5Tmf*4&<-P6EyZWm4 z*mC;Jl$t)2~4sY>H0N=DQNj8m>8eyJ{jzM=j$mLPc9TDlfzf0El1z|VY# zV2wEiNMFN7Skl8!Tg5z*)tFI zRYmlfiIIchx=zf3LiBR{{qLuSKh*k@>J^c|jD-xjlSqphND@SgH0*S5@2-*2e6 zB{Z&eHiZ{A8SA5R(vYxGQFYd7dfYBKEN}Ky<074H);Uda=3G;9aW{#dd0T@2xr$=Y z%P-g+;RK4b45sJXSml~HT~NHpM#j(DWxcx4@t?o)btt<{)T8@6UMlpTh6C;qLlTF6 zmE5L=ID?A5(U3lyjv`y%@V8Q7c*r9)!4pT!8%&ovrJkB1NDxB?WBl=&%uDU*9w1du z4ZhpIOM*r;+qJw(0?Le=C0c&n?-%eF0u4ZnHA=)XD|h(m(wm;c51tIST7T7?1{_qP z>%hP{Rrl(YQGw)#S>9@t$L0V_{+0 z{3UE^{f140->_+`HKIq`rktFm@#+gjynLKyyy*90h>m8ckcC)SM>UiF>lt_R2|ivs zb7KR`S(^zDEydLFg?q{GJw5~qhAKVm&k_2xIf+^#ht;Q(yWa%v&cYY18_`fS7$I#W zB_-7|;!62FyfC~Fgt{74vpS~zFVftMtLw2#vKB$$BbP2!*$2u4YTL%sem)0{Y*d?; z_u3uB70#QAF}qV*mv1|-y0BE0fhyg^_giKI2!L8Q%*Q=LW!Qt~=ElyCs8EQQc-+A& zlOnpd<-<*CQ$6(9FCFoN#tp!WfC^{+c8FWdP%ZjV_XVx}3^blb`GMN57jwXL9d6bbTu>BA zPI{q}=4y)O6iG~w1Z+LcF}<;mCw&`pDdp}IYRJq&?{FJbV>tcv*7@V2jiCHrk6=IC zC9cDOk8sqKy*n?&T1QOhK^Z2?8UieOkU&LHEI3hsK41`47*TO-bRzc|cB;bMP%eni zgM@uD3Vih)#Kt3Q-P}JZ3aGBD{=_m59K7#eZiDt}qR;$#U#9sU}oWaYk!rljH@mY3Ly=AoC zlU?Q1$|v#d7bjh$D^i~D_LB=1RNcpDc;H*Frk(ql|mSs{V@>`ad=^+0%} zuPb0zXF3EdzK5OK3%ey*es}$N0uc;W=X~0BIR9;>ot3c---)*>4cy4Rp;=@SZWwPp z)Cw2h6p#HE4&$%jwBRD!)FM6b-~MZJT#b#u^<_o6kbnWbI5 z$D+%`9I&NrG)V*Zkk1lX93Npt2=7{e*F~x*-Rkci=4!l-kTE{Ges(?0I2FW8bQNr! zK#YrM^rqv1n(V>8-h~TCtpHt(9*K?C-@bx4e`u>g#Q+N0K;sLlM`F`9Rgw_VMe0%5;WkeCI;InA>V8+%0hTdN4P;O0Q+b!$O1Khc~51=Foz$9aUR_WhCi7R zne1O&UVJQyeW@Q~zaq0qx?}U6JQBI0_x$$wscD9)$HlUBWnfOaw9rz4niS zTbqFdmdqM4u-@YfgO#RV4o5XIVmW!O4loA@_C;;FHvT#3#^oDk80-ZIUz0>3<|aPF z8+U<<`a$dGFFKy*)`xh`vXZOICOD;QDnIhTSxGSu($;zT%e14eY8ETa?(dVj?vkgT z!T8s10zC_i)vrxfUH24aNBTYX+lGX=9Ujm`$C#qI7eC3_T=uT!HG{N zCNBd(+Z`xGz13NjNdNv_(a*lDqKz{|Jjets?cGz8T;I*FqRW1es46J)2sG&ma_3~@ zT+gTV6`+J3o`0I(0C;ny{tEEw8uAGBsDOoirW0MxBD|P^dgL4U_Dby)TB!`wDE;v! zc>*+{&GHHzg;Xv;e?86ZLcH7oaG^M>nK#bPz=r_aA@ea7QOy>b#qp2Ct&OHMK3nqV zrFIZh_)SdK@>bF9ZS<$%)xa!bzUJItH)F4OM|9AEnr*)0&AIoH2G4#NTT2cEYHqfE z(={0g)U<9kIYEA16#3DMfGxK=@4l-dK%@08cQ~%Wj|W!iFIIhV156Bh4MNsm0SHVy zc5sbd+wmMuUoz}NsXqqQI;-Lio~@m@O>rHgt^|<;KC4v}1$ozPhj>Sfy#YtnG_&pJ z>MX0iv3mW;By&j+j`Xq4;MMO%$mp+x^M97MH~(8WbvuJ>g$%30iCZQHZ7vcPo5en@ z1D`aJriw&_FqkDDCJYJMJ?TZ7dNJ@+lH-eXEQ-_G+J&+F7zz%f=##{HHT@^( z9H9Pt=)5!X5723Z|Hm5om(c0?`{19UbDrvtAHqPVjM2AgtZsGd<|W0RWHGm5re&zW zJt`2w`Sq`tVho=PZRRB&F;WVZ-L~}~JG!G4K?jnNX%8*<2 z=JoYIe7;%Lf1t|-qqe3KB8Fsqd5C!N{OJb?%T%I_inD91&Cu5O&p5@z(&A-VLF0f& zO_Dz5#2=OtTgQ6Gw$^GIZinNq`t}=Z8Fxn_3BR*-FExA1 z_I%TMR=ml~wD~ex_4TZ*KPNccK_mHCfQ(4O(kQI16W*eqWJd;KzQ=flx}zWHhSErJo z`Gh zW>+oDu3DH~wf_BGwY+%#Xbf$Cf3JG&?|apEG_^fxd%y6w;}N~?o-#}*mRriyD-fO$4)U|NpR2zZN1Glm};Jg_)g8Q_EZ_7UP`OO?Ci%r(mIwVCQ0x4R}^(<0fuce4(sK*!8kF`RX#r7QN|fmC4Rxt9`)b}{Bzp| zPjIdv-h{|49|W-|J^ovg_rGMT>SV_?k{+b7$tv{6`WU@C!;_eVq(q`#Jv7hGJ`tj8 z(JCBdO!wyKBhkMPKNU{r-XT(Iy4T^%r6n&$%d+$C6{XF3VoCb_-2V zW0IDi_D|~dQz{;xr_0k^pVXb&klCxG&|Wp$)MPe?cvB+YXGSv8aPdC2UDp~=6Z@tp zeEyWftueW&Q(IQnu(@TV8=7YH$$YWvZR731lPa4k0&ZbuKtEsZbfVJYu= zn4W5mITZTmryGIO`~9ao(!Gdjo|b(C+E`rxxkG_!FezdWsN@Ilr2lT)piKVMTviNpvo zg=(zxv-f-(Tz=mk_l6_J(1=w775Uz=vFrV7iP{=Vzj>-xyZ2PTO2n3leT&x+YgQ_N ztW?$|w?{;`_v3ozd^?|bckV7RY`Q*vpYr4VFD;>2BA@6qw~O|R+uuYdtmPYPg!}cE zPhI+yjD+6HX36u6PO#Z0vzaPC8Eb&3Y&p;@6qQcxd*{6q7qhT5RWspyDZ$wF2B z4e-S1tc1&U856R{t6HOGv!-`SBTAoMF9)WGJZEcCVzZ9wYV^82DHSygWqZZI_G?s` zEhqKXVd6GG$^2by|Cyjdc4YUd2^2 zXF!z?$6~8DtD%q&aX^(X*}l#i)@WcIJ##fDOHN|d?HlOV0%&c6TWqGO)PKDErUljrbs%}cNp3(PnvD8|&B8vzfM(WBs|kyX6%za+2!Kw-)V-*aNtHgdH3+2^q3^ zgIPK6wbe?#T20~4ZENZHxeCnIS1M|n$-546VbNu*gsg$8)6>bcdh#qz^)oWpu~GEuF!O~vwp=#D`1|Ao(MQWG`wNJbnriJTZ~=fP zKCL(JUb#oJhreapLYjPs&f!Hzt#WI~bf`$%k6k^NGbw9P+ZT_TS6rzLJx?F+CxK}A zxEru$e+1z2PZ0;Tw33I&89RjLA`3gBn^}+61w0%F1iGdv0B!w#5oXCfmKW_gq8D}< z#QV-V?=SNOCMo$!AUF!oGV^Xq*`%G#_B*BF z6kAU|`REJO&yi-9u9K_VX|Bz?$GEHK+Jnc}9*;?by4R%~92F$bZ|*jMp1?81qU(GXq3TV6=@a$EURn ztD>AEh(O)}3i6+6{~vqz71ZRqH+~;MK)Un}(m@cUcMuR2kd74T2-17+y;tc-lP*dX zr1y@L&^v@4FhGDnD1q?KessU{%=)jjo>{Z^VNUemjtOS;zGl9k-+f*9fXR)ERuLne zi2eK2L z;?i(jGNANQ)a2X!+nx8x1g(x-A@t0Cc$k!25okY}5wlNLq&+Jql z_yHJ^t4{K_UaD0DLPs~0CwhlsY$YI2&NN}d35T3_e*Lor+aA|?<5GzSFS+)kP90L3 zjP}|~KR64&t9KMhzFltM#@w+NoL;{{A632KGZEXg_88^y;(@)mkr5lTU7eHY^9;8S z?uVB=6P-~P%QIVX8epFZthdK(6Nm)YJ@ZTm+&&OX?R@8jSJmEsQmgrvi5q6A5-6Nj z-dw7DdAWOid!ETvSoLijRXSJXI%;DXBSDOv@EbNrG&$1 zT}W$w`WP=9d9vhW++E*z&LmP903N1c{xq&03R=aa3re98&C_lfz@IwFo9H@U2*GLi zZ0yBO=P;EMLLj9Wj00{CAg*rAG5*ryHGIV)+R5xs2Rysch|e*Wl~Nezx$T51)v8uL z1;#?;MDzR33)|?Qtr0x(r;h=|w$VSrheo&22Z0ZT?WKcqRDD{Z3RNyr3Y@us9X}$d z!bh29-u$xcyod~U30z03_>e%p#dsjJ|H5LveEvh;Y&3Eki( zm_cG7vs0Ku!kw_u=9(C4duHepOg=KNf9kcgZ^u)WdprDn9q~=7f7dGT8P0`pBssp! z%KQ6JL5o;craZ!*nAzyup(T)vP886yFMemgmnPRgn{og5iueA1R=k~Lacq>Q59GdI zNV_?^TFXSgaAJQYtzh&yCJJ@#p4B6l8UenWEMYFG^lHcuph7~^uhFwMm;RQ(*uMid zcIO!}F02fwgL}UnAD3A6T^Kh$nP<#>ainc-Ve4_4J&!KX{fEi-ZI!=a)8@ZnQyqc7 zVN=K77yrnn)6bD?ieytHnc!{TZ@oFDh5{^};>Ed<*!a9e$sZud_(`~;K z`)>G%T#PtXf!1|z$J@m5=B?>rUG8UMt_yn-inX}Vr@=~HTNRJ;Ge375 zyI+>sPF$>uUl{7Mb?9%&uS5ub9`wQiH{wA;R5un}=jz(`nZ(p^=Dcy*5}R+IT0L5e z{BD7u4HbRwpce^1b$y!m4mMH3-ep75eO)6&#z1cIw7L>#$o?FEw9&;bSWqp#*D2w< zjASh>ObnjwY84^~F{rc!t;M|8txIUf5Z<^NHvqkT^JuaTk(-ycrxOUs+X#f{=lda52twX zP*8AtYw}7&5zJzbq+}nt@RUpZuj6Zif`y-2DNE_fsQmi>AoHg%_UJc^3H;vX$yQBU zo+2m?3FHO6ZazQI%cP)2&jtW7+H=UBKbllPb{!-i<4%2Q>SWr&_9Kb#=EpUW$+ zeA_{AUtNJv`QAN3o|X1@pEj9gGmPN}iCY4i@ye0L5nq25cPB;c)sFs!_x^ted{Rpl|1ZKoy5f-=jkz+%HFn)rX3S+4vw37g8bM(Nv5Zvx&56l8-aUi{c zu!HCVw;e&#jx)o8nKPbyB-asU`j%?_2)Vw`gyCE+`6L@?xFr(Rwrn% zd?Mpe^3_Y)8xAhYFC#qH z8MH$ixejQ}Hj%b|zPJJmoXBBbc?q!FS4qb+CJdgm? z4yq)OZ>5}b%BgneZ%DvEC)N6d`FiVQPN{>GPC>USH3xvcQ~XW6+V>fC6#0N{&h_@Z z1}gO<`%R4TnlGUp2RwECl(#%18SS?CzS{2XCe^@g$A^xmKk$;swO-4?88$*0GH&g0 zdFP_9hEA7g)oU`Gpe==xvBe~N!j3VRBQQrd4mg4D4cSt@C+OPaQ3u}XIGdmGFoLlo zC+cd++l**oYe6!1fgW*GYtk6uQpwI^)fRbTF!ABRRdkvG{qz}W4S6dA9@n6+707~Z z(s*r5L_+oJQCa8?Y%Jw$$Z|T$7Rb)?wkrcA!tT_(>Ya$1Q2(Fq9D_mj_+q zJHE!$Hc1IDUAGNa>ary!?#goS?fQ1tF3K(D+-C0GG>?5&#&xl37X|B3=~xda!U)NL z<7v=H+Yi5$4-^EH_8R@@uUpTlm0a(Ye`5ksls+yAqUf8x)u37cle_Mf)$4`sAiSD~ zw0RNf5u!Cbjrk89;-DcuQgBOvrSA+h>xCa;7MkTFMGOk{k$QIvhDhZbiaI3T4opyC z9v{ETyR!@gT&T8ZoqAs!`OIm?jI^G#2~)O)?p#djXrCuxw!8_oxHU+883Sp&68)O1X8Sm%?csah`Z>~77b0c`~4`I@>i6B4AOYIe7FaV@i* z|8a`?1aqJ-G~2`QezmOxUi#MJ?KDUH0)3I@Zc`K&Si0h8yjOaJ1tV}^^I?sLpd1N=Du=@V?&7WW1E$l<&WNl(CY0LeC(-$q2&0YbPLe&c|Ni#Bqd zpGhAf4WVRN_pG?-8W9({Gr)KuXXF|Iojg{f+x~V}k4^(n#YrK7;yk90_G7Fh54M1} zJ5)v7Rl z1n!qN3xWT<@OPFj4*-IoCx!mNyUy9fo7rnZ7&!2IKe)m^?#h1e?Q%=; zpZS79B}vO`M~Qwrx2jMs>h`8JW7nu9vJ4Vhh|q z@oLtxE*S6xQ$3$U5!(%jdgIg2cnCJ%JWL(cQ4GLqY;@lPNZ0j~Y5;dTm%yeMvwi@k z!|M(lA#p@Q>}Q@OIG+6=>iPWd)y3z}Z0p}kmi_-MS*yw2*eH*1Wp(cECMOGG%M_yZ zBcp<$)&h)X55`Hn_(To;wl_!JK7TsQ=~VQvz%TLKy=%T4>K9G9wQ}%Cd^rnmbjXFf zjpyA0j}o}0T%5-{fOD${d^umg(NN{aUqEdNnA+cLJ}8}xRAt!BrYUzA&KihC$2>E zUyY&jub&M3_WQ{|u&c5qNu+|U8C7Z32kbGeLKzK?pW8X@7j=%HoOXcJ=lca346kMd zKNH0m2{Iv#K1w_Ov2 zjJ^f%cXGF`^nLdzg3VjkDZjIpq>`NA&N!Pb-ZW zmy;IkW6Z0_KI?KGv#T-N9YL_ z;S8pa>nuN~l9sm_6i)fHDUQDjr(?ke{~(bKd9$YQMo&WB!r`;x9AP+PtLlp{JtdRa zf+Hjv9~U65S{>kWb-lt9Yo*+#0x_(9vDJ4gE0Tw-hfD+n*WQb3W1l`n4wFp2^dpEp z4JF%h(7o{+D)cSrPbZ44MJKCHXw+SsGP5X2T*mPyY2TB3%wJCTp071)xZEJLPa6Y| zzpdB&kV= z!#PW$25p=&5LB}I=uwzFOg8&e%_pK}RRhuqb*;|MaoF6N;-+V^)OWK1Tl!YyzZ>N0 zF|K(qcFt=IWiWoam~V9oV+n}x0K0EVqVZMML-Cs z=AHW4rP09Dt41!OK#? z_!kDp@i>D< z6QSTr>3F+aW6bbGb|-@>ZPP1W5NOK`nD#Dh%>F#)VD#+@JT;0;nhhEhx>xqoPRqCikb`DaXU0r}1efeZKJNVaqA|gXn;;yxN3Z|4p_ny;{hxrD73(X?p#gF@$e1RRT#A1r?f1+gVKCxgWmDyb%xVd(O zf+Kucl@hZhxCE}8vW80qQog=ZP8iIddCclP$tv2-+7XE%TiIPni(xs9_x=ixMwNPW z@h6LKP%ca0sRt$@riLR<>W-(M}lsBJRTq0wk9DdUBdRRNAV5EFU zqtfl_cKbDJi%B!H9kHN`g8Ro*Fn6FN1e7>_GI(GII?0&7k^qiCC4e9}JV4q%Ej2Zj zipZ7J=A+HWK*R+kFrh{7c<)Q)alL~2v1X^0NQ(e!0#4>VM=5F4xpBT={cN=L7V!@?B?*JoG_kKdvsinw6o>*}H1xli}N>621So}9V(^XL~GYQ68V{W-c0`iW-he4FU# zI~0CSNtU4TpdF+uvAKC_FN!DB1J>av>t0K{KCXO8-!mA?-D5c|T+qpY;eQZzt}}GD zKGcRULGOGQV=25D(C6&!M7acctndu36l+n_Zc>TIenTE&b@A2w7=xpHwGC7!GMo>|^%Xx6iJAWZyZvT6`{wsLBB1*7C% zbRd=8F6$kknkK{>>(GgS>CM^WiBqr3Nw zQL-%fz*&Cs<#8q^zLQBbLtD=~ngi`t-1NkRaHSs^J)3a*jQE!lZB~!%7B?^kXT5st ziQCp+_!D^9ZM$8rZ)4RoNz3oks1}g=+lK>$MI0YFvwB zYhR)&9%H)u7dKr9TwvYgi-peJ7?OqhNQ$)hzVP^hYP(QwU4*1h8z^z`G83$#vMu&rau;Iw1y9lM1< zd*%wmBeXIaSR|Yjy?1q5ckO8caIlA$qbXpphQ{maQdR^gf~Hb)i3(Gh4Y|Rb*EK@fP4afEkf0* zkBNw=LF17P(z%`!&-wr~u8x3{@0Uh_0P?pP3lG4)scBfTV1C3U-zHRoZ3%m%({4J_ zQk%B-ykr^H?P<9Ze*R`w9T5ew@3UQv*+6rBXNpr+P}6jmo8rPtmv+F6dD zYih3Z_3>Opho*TPUzM{CG6q-^%-3zg+ZWru=wA92->!Z=gdE7jTb--}BX3W@Ye4%X zm}e%i_%^q`lXx6b-O`DJy_yJ2@g;O*>Lli-z6UWJ@|(EGLuZFf%-<)wqcc3sE_w*N z@Hh)t_!-)M9RKm$Y2Cf544BhIdZL#0XhB{Ny-H>K+O1K6qN8m3e184wV>I=SOTLTF zM0XD+L>j32cw^E2xYDyZaN>cLysrvp69VW7qMY*`Z&CaV0C1C3l_&Mi*-~#rG}$ch zietlsydn_h32i8V@1`9xwq}ohP{+rIT5>I5iL+yNZJta9_>s+JG)|@1hi%FG`QLE! z&wxDgwiv3|DNl-DB?v=jEMnh(h@*oID?UQx`__oMFom*6Vu0u&Zs_(%Zd?7UCSyOGN7Y(=$mRdf3?;T zp#D5i&VM7i%p{HJIx0fe$wfIc=kh8;fiD92IdGV6Dz(U*_{s*lTMr734zfJ1fWGa znstn{fS&XbNbCUTacB)b+$}cqQW#x!;2FF%3iB%#x!aj;)90qiR~5tL41?Lyp?$q* z49a~Gh@}M5EP(~rh~+QAuR7-ar35G5qCw}+^_w#ZgzE=-M9I-i+8>LH zG#p9lR_21N^TFjz0a7*6H-#<~2J0qRz_xEF2-pf)6HF1qkM&UCz;5oI@AawQ7Aq&Q zL}EP$|Hcg$!vECVLSVB8m?4c4K)3aT*zPwf{+Y7=duf#WA7y=KZen6W)31ev#>&_8 zfku)^vg1XsodAFl6g+wM^dnu;bgzk7V(HjqJ(f~pk+rG7ldh?rXH#ddBOkS*xT*ia zPPhF3+D?xv{>Dx{e*eUOdN5AH?~8x5(^EgBog(cNX{Sg#McOISPLXzsv{R&=BJC7u zr${?R+9}dbk#>r-)BoH~<^6v(hX3NhIF7&H^8Y>QkO>EwaF7WHnQ)K^ z2bpk?2?v>QkO}8MPdE<}|LX~d@Aq5&-wDU=_bdN-!pZtypYhKUj&;FbC!FK{zezYZ zzd!O%6Anqzudnfs3CHUbGT|T-4l>~&6Am)rAQKKU;UE(ZGT|T-4l>~&6Am)rAQKKU z;UE*vf1Yqgem92y;uOyL@3;KF6An+oufXxo6OO^}Kl!iE_-6?xq2sR;j@sWnNY(lK zBmXqv%>Tal$AlyP4ViF|2?v>QkO>EwaF7WHnQ)K^2bpk?2?v>QkO>EwaF7WHnQ)K^ z=RZ$44;z0qhStB{gtF@QCX{eTfDXkVSV*xG2-wMiUKvTr+p@ToD9%kesFcvk%mqbclyXd{UQC2CNzn+iWbyWdpG>1jFi{AY zH{|kuH@E-XIawGU;Xzd+xZKaFwjH3G3a6)!e#9DXTNK(()Gs{>tWb#jKxRs8$9Rq1hKY`|#f)%G?n8@7 zu)x>n5x-fQ8T@AHPl9`@{^94ldhok-!AQz* ztg!#y@TK2y@*L55<)@8jG9zDw^0{h;RqC3{?li>)HfN!%@U^GSx7jkQsG$%xYJtlM zlZdK|Z+O@~)UP3?>k5LputFJkxzOTfqf()Z!XJ_=KaUu`2S?ufZtAu`^y0Sk>HB;f zrj`$pxYKgV^^tYPUfxoZ#fze`2!3?hEz*)}g3y?oIH%CAm3 z4^2AD6!M40feDLY0YR67_ez!V)uctbQU~s7h39)$!>wmV03eQlqxzF+SX`pYmVfH9 z)HfR%l|+{z99OFVMcxe_`3N9GtL&s}XW#Tojg2%e1D@mWL}#4!(KpjQ>@~Wc^Tor@ zQ!v6Np+VQ0<^e0&XlPn1?As&C`+WTjB&ySze+@|t{h725rQ7cxW2-5=P8djpc= zP!-NK6lNbQz$AtfgjrrBZ)?PD`w1)TJyNJ9QV>nPNlCT`vt$F)BuW;`#aKC}Bq}Sk zbXj6lf$D9>6}rCqCnqA2p}w>(sv>>#9#(I_$1uvs9y$DXXE!^0K765x0Nl0QgN?cf zqd9Hw=)-ptb>RwESShngTrk}4dI!YYw1noW$zI>--@SaiG{=4|{Zos7LuUsRcb=phWJ!jCpAeMd1oUOU^MzHR6L%_S^r}Llo z&_c_~s8Zd8qT2Q?UgDqyCdjmMVni=hC*sC73h5g7ceC18E4P}oVWs0*}~O#k#t%?wRS_&uka(s*=0MDuCmnD{iXWrZl2>5nYFP zH}13fb&!+)2I%kZ^5s$HV-D-;p_W43lbrFeT=#GhE~!FYVb#g+t+EaiS?ZQi+~KOH z;Lfq?G)_r3EU)ITuJ)e?O-!S^ovVizT~aiqVyR=FXfWE-X)U_N5DDnAvg5ou+BclP z2sWR7D&I37v#bFb91Z*i0DjyJnK1u-Q~Q56pv3*h8&IYTpr9BWO5g0Z|GH6H{OJai zPk(PfsrzdK%4J`z@qcYVIml2am`kdeZlE!cx}>Hq$*?*!hrUQmY(G24oXgGpRwrAr zUVdlF!km@0(T5eFiFdM1#$+zXO&Q^~^8RJ(&AD$NU=ccx*tog=s*?|aK-+JQ=%um4 zWu5gc3I+G9C!i4HyW7R7MLYy3aq1G`d*z_vXn%aE#|_FJHG?~-+nTIyFWUs%FxuqK?;rMG`CMSlD}uiI*PyCM z>!K1IPCgKByG2<82jDg2Y2rHKWMY5KXYKWtr)v6~dpqX%<5`=B&({}X2#Y6I#{)|8 zH6nqreSli2=C2+-s)z?+{fBjS!mWyM;LXg6vJG48$#I^4L(R7g!j&~A@>_d$9}L^? zj)ngDLO7Rdnp@r<*gk-?xY8WHd_6QHj=-O_HZbl(sLtGHGXC<0 z&Tp%osHx!{(~1}`CK+__=G$|Q+gve5I9dmLOVQ#t)aQ9V-BG@I zb4;}5ve0sA+q5=IL^j_$#ih)V3rNy0Iqo&~H*tnL0ZoUDX&dkx>b9>JVLxOIMjO@2 zCYSSHHcP{Fyn9J1=0n?RYcheJso&RbrZq_xIt1KUS3Ykeu8$Q<)~=WxFS@+?PiVwJ zi6>lAG?Fh`r2Al}a2lY_&V}fezY6e*u@eyQky4d-BXwcc4j3yJ4S|o`Oei$blUD2F zXUJED$Gdcf#`0hEbg&3I1;s*&s0u zAH@l@lz758h!~88nO76QwA*UgKn@^g!?qWgx-#Sy!-5;@*p!?!I%M{mA(HaPo=Wis z6zemb4q_aJ^}`%IScg2DxrmI6({RM$Z@PlPR2#1E#hO&L#kgRQWUckbxq)+!(Ap0# zu6&oQM)R^@801&)fzf-2oSOQ$Oo6+&iK#&PLLAT{$g2L`qThX(~%WHHt z6X|RcuL(-e(X!q&2#>btl@(BL`1-)#wF9_dKpPHwDYW_w@#dqsh!-DN)6h_d@o05B z$`3&)dYrjz015W}>3kCl*RSHCG`rotPBt)3HtPKKI~{?GfAo1+MrDUvL)tmZNdU)u zO4HqrPqKk(vJrhhRKALB_?(%Bo@e3Wo{OYH6`Mk$adY08%WO(IkA);#OQ7J-dnqnd z>(lYyj~8FfCHBFM&E%pqd~U*4D?^?fs`QY@U$x7>AnClYtNG!PvI}od1!CS8MQ7wr zc!^lkM67B0+zbJIe*k?I6ERPGP67iV9J`%Di}dr;;MwlurJh97LH!R-ZvCj2fY^$_ z<$)6*X0jPsLHj1|)@tk~A!LOdjZI`U6l{bON-sVdqU4F*g{369(ICsV(Co^-Qa?)~ z#CZj|OFSkw8w(r`?)bF=1^yXZ{(E6_`E{~D zkBtWNqu>^Xnx!IA-&)bd_wGuhQ2TN(_+_mb>6S>B%zd4IRk_3zn%_-0TnO2_%QxN~ z6}EJ_y?OsrF;MY|K#EP`>`g0Vu@$tsNa~%hxBM1|@cSQjn?x-CHIhz@{>_~G_V2&o zpCaka?~8v#QWF3YNs&m3L{cP@B9Rn{q(~%1A}JC{kw}U}QY4ZhkraufNF+rf>3@!- znKQo{106aF3Z9aMx3;OByTuDTM^m@=48K8v5FG`@>)zoUT$~hxX7D6IguF+z3d`Mq zsBA|gYwR+BNVfa|$BU}w0m{g2iMk)!iNy-(dRohm2}(X{)W1#bW6x?$8VTi_p-a%D zU4$K|E~rXoOK(7XLAPx-MQtBk*6^|db&FJnNo+z2C(~psA!VpJm@58=(A{IY){N30SQsQ{!4-Bh{^AWPH6HKj zUQAvQ4I8EV7*~*f9O{>lObY);n7$xSt8B!qYaCs_m7cRx=r$X&(`6;i$jnuj5;Qng{KZ~Q`(7I&Fh~2S}lQ?i%{!q{6TqR*(}e8#9yUe zZY{P`BofP5Ka0YNx(9ajdE{_sN@59vM!X(Q&zxBRQl1ksMhJPH}SgW!x znqJ3*d-Q?4>GiSl^z$oMmQ+cTPYxQgOzzVprEE;%q3CJ{rd{8R@XLrOj#s6WN=}JR zHGLJTLkBJ6p|vSlc78%qbed`7LdEg5JuBk5 zVSVDfk`#wzv43YqX+`87nPn>TVeeU=Z5TcZ?~yvu``9$SZY?_tFg_{#I*+``c5CGPQ25J%M$-rfkj zfy~*bS&nmo6?)KipU%>)S*lPJX}Im#zK^) zUH?Fi%W%RAXwb8y$k*7M!z7N)kP&0ExKj;+-kcy>`9UC_{0;!LU7{0o(FTNETzuAg zJbTh4?S?UcF%Won0Sts|Rjvmj*na?90zVV#r8n+Min9F3pYuoeXF7xjskU7!a3-iO znBX_30A4wnIv{ez_X4`n-9!$N*Xi#v` ziQTgBFK?yY0N&12)j;yDaJEnViuxiafbX1zbm{KOJS&a-2W~;Vcbh@1$Abw^O!V%Q z*shH?y(mt?yc*F)p!up0oLe?pGl}y`<9ZNjAGBfj;bkbiz+};=?(wqR41Jy@I{Z+a z;Qk2oq9wN*k)SJl@8mH446{-4&Hg!P3D9gaNxzsEU5S0Y!Xq*LwVI`nb{p-Bn~7eh zhbiX)=&f)_yrE}EU}rO4+v6*)Cg>KY$-BD|6X`_Zb$RaI+BJVg?Vt?#;?QbaSZIdo zC7mDVBP;_!VG;wfOnmsMPmZ)&@$7|!K`-C=5g^ii@M-7tfW$Ezz|}qN>50k%x2M0{ z8>Mm@9OzyDDy@P>{Q~MgA!KRx4{E|(6cFvuET5Zrl**5Y7-QYtrsRS!8 znH|hU%**Zzhc2wl6r?C2t=FOFul8hs+<1k0>o)NF{g(vm-gW$LPq%GDUj%_Uy*h;F zXd~J&_+6dOUNaqg?uf4At+vPn0^VXC!`e*OR~%H{4oG9+2V$*`MX9p-BtXkspLM!FJ*R(*JgCzbIE{NDy{s61MM9K*Q$kd2k9_&gMgZ?(&l$cqb#%;u zyR>EIOuPf^>?F=SDf(_eZ%4d`T!oHMc~0~&Rg7!U+PUSS>b@KCGlw~ii z`0>txv(Gup{qczyM0#F>T*sqjPi}&~OF}uEZegSO&`@%IAfG1n##KeMcl?RIk>LJ! zlzsRje;xKlNN2s15 zj55yOfctKDNrdqHY^u;M7fTQ(xij?M)V!kG4fW_L&qji7dE`#J36yWUP9fhFv})JRzXqzI!$DlSiTZsi;fUa}qOJmU z8Iuts;R02d<+eQM5FX~WS;u**{kpfcQuntG9R!T(g72;ZII7NLYOA3~+qkxSF zydgFPnvSbEotHA0*f)?j8TDTuI$Tl=g^t&BeArToZr|e=05!e~ePLcH&v&_rIwwy1 zcu>~iEd)Prd*E7fq*8Kwm(>_-*eS{Hcm89G(|F@HQ*cp^?V4v09!(6lhb=1r*GH4Et(o)*o)MSfP)Xqa1WQ!w&v58Lm+81{WpH# zZj-CFxOh%6j-y8YhUOvFuf09pzW5!Od4hwwY~wmdu5)Jo+vnOxu8%K7`!D310aw5^ zP%02mALoC$=HxQz^!>6;N~02;+@}t>Hu4GOlu>6b(WXfs+uNFdXD1t*p|f2QN20?L z_fj4QQpct&aqn*DQp&d%p0jJ2Qg7zhp1y{ec;pZdT`h_Sx`yyTrShyGJi_ue7bm~h z8}GkUSG)gpXrD}`b<$ND$wgA3N7Dd@3&o?l+N+Et2_eb)htyn0pTdDoS)xR@ahzO9 z{g{jfpDoy0MECs60~1Jue!VvTU#~4Po3YN1i;#pl(L_1PG!SP=8cbh1oiGj2qc92n z!CM)x{@Pog4*rd|YOVZQO8?Yb?S5bUqqj~RAiWjotw?W0dMnafk=}~*R;0Hgy%p)L zNN+`YE7Dt$-iq{Aq__U(-dc3>t1&eH^+Tx@zaL7y(wuuk(VxO)K*Zwwl~-P!iI?0d z%TDpr$D|OgwTo6q$c4MCG9Rf^_6v*J8SD?k;m)tHECguD6dXKH_a$}VL;%Z0gBFlALGB27{xFu^e>gnQ5p+dU-L(&pgMtvrqk1v`k z)rFri)xRzAtBqmP*l{T8$+5?tALJbUoN`sDw_ElqoLG{CHFcyyjE9)_xv5o*h^qPn z%JPZwB3Xa(@WW8_7aRfu9A|F}9tp=HoYG*{kMTD1

      i!QBIa9!H>E?d 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 literal 2580272 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%0ALGO97!1 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 D`Kn1I diff --git a/interface/resources/avatar/animations/turn_left.fbx b/interface/resources/avatar/animations/turn_left.fbx index de6d68b6c0ee1693529d6e943266707883cbc8e9..3d32d832e60efb490cb7ae3ecab91f7dd7c48788 100644 GIT binary patch literal 979312 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 L2Q%jMX#4*F@6AD3 literal 795872 zcmcef2V4_L`^OhiQS7}d*t=lwStJ$|1VL1+L@J)Ce%=C$&&)i(-}Bws+1+e9X_6u}MvX_iHa$Gr==2(6 zl7|OVnt4)|VNSU*wykixHa$9MHIZ6l+o2|{K0#;D_huNzg<+T+48s(({kfagi2msJ z+?8R53jT$AyEZ-ezoEwG3I3M9tvlwiAKL748y1ddvgZp^ob^|pBKY0-G%!@v=Ih=eW8DyDELE;t~yh!HUx$LD%kB7lGuNMHo|26!z#faa{45i zVhl#>ev4p#u1?ydAqHb)g7q)gg?|aw4%VUSv;O5j!C%~b4RLW=J=aNwZHu7D^9C6W z@mixvr%h<$wbYd>?O~{PfAW6_Z)NqJD!!Y%b z$O-if!!-JOd{9C?O+tbe{hwYJS1-Y&(MM{Gk^Rtb3H723#(p}zNo$PKL}=@o5{>$P zvDzq8-KhRUYiH-iF_Ifce$JHQ z>LWQJkQy8D;M;H!r3DcqeB$F{brDvsyJ_{224e|GLcL-7}!7xmHuX!H>>yqh&|*tB_luex4dUbS*&u)mP7>2|tUEhSZ@E3t1* z&i*P~mbn>*@z*4nLNtT5k%0f3@aTQhRknr5Du6Gz!B$*@rG#S;Hb{|$uYeA2oU$y} zR9UDgaV4+Q{JMcDUbe%y4c88 z^}W0sd3k#`yNYHUyyfTSsSvHnq|-+ytiqjSn03&!eo_#V;VAtf7iVG(PWGJWNF47o zRF_~qDC_hlE4hAplQvq*O(lNl#KJo_7gmQ0b59S`MeFII1950=E)-GF&S=n^=$)cz zdM%Dbe!2vOpp?=h9rkKpoqzaan;4~+ z}sm zmrEHRu+c<{W}*N?q}F;A)an!C(q|z*Bw{-pf_XxDp^zY>!DNUq#FD~LX`68vh5}g> zqSwR+>f0GLaEC~ZgE+E5ddk+b{CJH%#H2Brtm1XD?m`D{>klZ-KYYTnYBzuW{OOX9 zOR|2t6X^{Y;=y?4M2(m=E)3Hi#|x^G2Qj5-p9Bf_!(cFWzQCg!`AE8ai5cPM>^k4I+wNW~~4y{ZR zGzHS7&9Gn^D)$V=(t@X^5i>4g_@TSJW7(--$&3kd( zkH;+tj$wipL<~XXrYkDKWq(bQ*7y?JiKrF0+#5IG&}C~QfoNXATLzb73v+TK6kLL= zV0YK*qGL>%C*KfMs6KeY3u71HI8QFldLo`^;^w0M1_NF|qaLkO!%6#p9%6_!SmOx) z{ImT(_cufgg#LMlBHRp)=i2l+8XZ=wvo&Gr{&POso~rDB7*T}N1Wy2{1lz=F^^wqI zi?U3?G5FjF9e#riCM&Bx5fO=TiLut7X-)jZP2kxNo%&nPi^RsaDas8S4*?wjZNqMp z6t780u%;5~Z_r1h|8kQ78oUiYk=wmuT=AkaK;Z!oo#de7vyaJS)b&p^Y1iT+71SN0XhmaxghEG}cKwHj4AjPIO$PmOBm~|vly2){in^XujFS(qBTz+$=!S_nV+dpS z;!u3pu^#bsasBJ*Ju+iH0;8f5v?eR7-Lz;4&_Hd~jQhn}pp^6MfD&B89l3^43GxjG=>{8Q zx4Y85T|}c!ADy-Fe#7k|Ra}C&Q!B3BEDg75NzR|TT(f9a=xWsH6S%_;cOnKIK4+A) z^F|OGpwr9s<{7h1S-%NsWn=&BoO{Ljzd?KT!O5Z^LP+L;x!T4b_S!rE>33( z)W;@4O64iT<%`!4XnwJ^VbVoK>9q+7J%9r$I?C9N6J13#6egyjg(4d2DW;(txFLL2 zjE=eJa*w}O?>M?L>s^*Z6knr2Q)G})Ytsgu=g2sAPQtAUjzvL+1XEU!B|0}Z&1TPoC}wy^#-!+M+u`GcFfc; zaF9ExVc;NN;;`!6fdkdHpFT!w)N!k5;Dn+|1x^vcVG7Tq^covhfvd6hTyN-13dd!k z#LmHuimR|RmF-l}_CpR2E<=GX=_3UTtOYF!v~CbB3UqEY97U*D>LLVZ3~~>kXL0lRP7ylmvNg{i4dk|6qartSd?OOAm27R} zIuO$|sj}iKa$4f48cp#5I=xyG7ay$AM{7mRuv_SDh?-pA)7ua=uQsb>pNnRwv|L8g z+Ypt@L3$gaa>-Sh%cU7tt;llhONhy6T}+CyCeUFsqB5G}uo+QF-6Ax@86+vG%2n*O z$=Hmjqy{={MpROpaWhRgr_d=*kkNXTInqZT9V-r@_YN8nl~D7loG#EvM5Pm7mAl@L zry7)wzrirj$HZSgww|MAzT&?IN8u?Lm1}4`cN$8KyNZV_xONy4V;DkO6rigl<*IQR z;=4NN@s7^gXbrk67Nj*sphtmXH1XPy#Q1oF(FC;;k+BtYQ3>CVvt6z7(?@ED((lsD z!mU)|e7D|aGitTNz_s-e`vCtybsNJ_(m2r)#SM|j>`PIU7MsCDo+j0b9}i8 zouzftCFuI=Vs)mZ%)b&^?2F^ua$`b|aHPk3;L}TuK0-_TleJy+KlV3i;4Qi)cLfgJ zlonp1Lu*;v?Hk`j<6tei-gXjSm=jzeo$10bJ#izbO6{-LA<*zG99u&H2tvGNxNyhT z3r_X%>E+uXQ2X$c)`ad$LPg84FB zUG`scun~7#(|WVdCBq-B=SJu%EZWAP34fWH@7B57TISrFKK!1f%{~{^0`4`pLM;#JPRHXnWv|>v^B1o!E6LS&!UB=*^}A(-dyCq?!d&`?^QXW>3m#pZcXVxMgqfqAm0MCRG3k+eK_ zze4FNn<3ubH$w zPr`kk|3_q>`z7|-x;dDqhuA*7n@h`cE8M5~qR2c~O6;?03ouWwOCtL$)k0dHf5LsH zitTf{#6I)41oQm;vdBDLT1v}vEZir1MP#3e68roB_n9WP&!-am9MB5XHt1iGdG=`~ zP21aWpG&Ta?DK-eK7(6>c{0~T_Sv?zv^9JtT;n@%#5v^=lFeg2**vd=RT`|Rus=9wxsPaj`tdHxOe z$=(&2=XQyGHdcdqritydhFV&l>)<|v?u*QGp~ODRw*~WDa!+KRh1yEXb0*v;^FU;u z<0bZ)vmKb{X0d&Kme}VoxX+^Kv0tHWjI(Rx3MTK_+pK=xVKq~3+kyUso_(2>QkI*1xTsv_?3*;V1 zAU(`N+J{0z(8B{hwbbevZsWJVKBH2v_n4P7!y3(I<$x z4@V|g1KZd>=ZHSp?Nck%nqP)(Z6~fE(ZJn8VlE@dli#}CkeW(Th z92gaqp_Mv;T$!SmL-A#L^J$W`Os${Ij@Rk6q<T&vkECr;pL&MR?0lrz8Dk*6Ck3 zP<)*tO>zY|p-wvoa5-eHPXC98mW4Xy6-GZ;>YuN~+V*7Y%;hckXm1z_~k?^Q|K`vD^uPisLZ%0JE&R)^M*4S zq53CKCRDkCxIk%8^$BtURLk*DvIZ4;5FdT?Nhzql&90mdRd?LDEU2n>yWZ-O_dS)` z>%_>hA2uIVspE>B_b8mSJ7qm?Rt8iESOz`d$h~PVEuF5HxKY_q)eBY>s^DM}REc=6 zSg5Xs+C!D?UM8sOlc2hcd$NOSMkoMPwGf$5^}&JCpxPSZ1gJjYp=1rJ(5{L?74Dy> zVmegoapSU}`jL0=cTK%}D)oR>!xvsEaZIKD<>-?-HxKSkaS6>JXXcqH^Y5qz_?Zfw z-&&#i#!p#1U2SlqvY{Fmswh;eLrGAb#Cyd;b+L#2A|*TzclL*L>a2|zNJ6T5H?DU( zq^9=(kQ&xaCQ_Smpfsd%bk9%&!jIy~U!-*E&gGCbq}Je}DKt-|Zr&V`{#Pu*Z$EP+=PO3Lhmsq z)qdqLp!O&C0&0J7n9SN=j{~LEzDrLh)PDP(O4R-eJT!%BKfGdD!F2LDW8Rr-J@fCv z+P9rd*(LzK_M7+0V(pLUrD*Lh?nSEozwutNwLh{iSNrINH2exB?+5OZX29DAo6PC|NsG2@dCmmbFs#*tR&A1znvouUD0_mTGvmA)f3XxN+H~ zdO2LtQvDQ8D%CO?Zm-x<{U?GeRrKl(zEmf?;Y!u|(N}F0RH-9yS9X;;Edr?2vl^L| zn!P_4D6LY%`a7Xg7vrI1tx~_?p=GU7my8{f%UYnR|HGBaqDpNQ!R0NxQb$K9TB*w- zNR@g7?-g6AzeIDDir(tQSL#3iag~Zbeu*kIB*u^!8>uytPJ?Sja-*;-*H+O$x&9f+ z=_va}L*{O*y5pgrKYxzymOkZOjFbsMZmk>$`f8m3!3sQ-tU=%s#SJZM5Tq^)Eo4>K z)0D?Q0%s`qQ1=fSZ+Z0hB*OSAXIc zuKb=?xKY`_dPOS=Y)CW-*ui+OSYYc7w4YiEj?Or>_!#3ztX{=k*|GX`0KjUym@KlI z;V$oQy~kY4{p7T2bc{?^x8p!*6PCNq39JU`xE!*^>IOWttg&j{takus6&2h8%szn2 zTNbNZD!2{1w>XGZ?-@MJ)$jL$7WMmE?zM(*D8`22X0yVo-9r0M+^B3;Zw^qD)t>`M ztX3Sz?G?-F9X-dYaD817vx?T&XmV|5Flqr_C*tnxc%3hJmq3Pl>mLR>f!CCJu`+qp z;y`JHCK&^7Ov`CPN*B~4y4X>j(34F4p3|@InTn<^o zOJ`CPFORfip6Pg5aO1M@+Se;=*3Z{9dKr5gf5_{I0^5Vu=}!R+;C% z%)g_`;^#u!Eg`!fy5UA;GdnL)QD*lhl9)vw5JE#2%k1JLduA^k;O0VmW{FSSv>yyi ziD5|qvpWVW$?UpiB_A&P_9*4`V42KT8NvlhV|Lh(3`M34vlcv*tT9_|sG`hTPPELE z&a4SHE{oaF<~@EsHu|vYW@lD6NZ$EgrC#xK%2Jz^rLFmqXT=y?}?N(3;a?j?IzIZ1oXb-m;h-|36ocS9QHv zboZw(^ny8mvqP@VD>0(Ts8-}%!+bQ%S_^+Gu|tfgWbPy9H4J6;n#@w zFbC*!VEh`fYfNHXf8wVmcHkcEFi7|Xz@W+)B{6W@5P9Z(5ns0N7?~K%!hzB-c#4xy z6oYzWmB3)ySS2t>T~#2b^~n*Bhz2g{Q`ddmxU8wG(!hKxKg{%E)osSkYd)&An?*fk z!N#!(7xJ@}f8oX~o35x|6s2qOFC@CwVH5UG2wnNhnI!^zlm2^$ZV9p-F~a7cN-L`Ap#Q zmPOaB#gQkj+IMVTgKvMWz%(df}(UioSF^H=C7Z z7k`Dswh(JHg%d(HvO}gQitL|LNXYKTd&MGqVY)rCCJ0&Ls;kOWU_zWa9YA*0R3(wM zoIQK3PlVcXW~xkNU8iw@(va;j%?ZdZ!b8a#vS0Dg6hhW~`T>)UY|H6c#9-8PMKM@9 zorJ+*yjLs+<7U`n&~&K%d7<@-Yly3^+P?xAw4MQAu;5qu7&QB1#EDrAscsN zE__&nL8>s^xU88gy48sJ)vGpQ)zi8hXw~cKqZD=N(A#%*hHXjNh?~vI%w@aU&(&R; z>NRdu_RQryLs4YA&LAN>1n(7#Y?Imc$aaR1B`)Re;2!NxHs8zwknKEEKC%&C{>^RZ zxK*XzymR%oX=^8>sON+}?YQK~OVz}gGLhYn1EtMeh5v8@vOWIba>yF8+wst{hOBi% z)z3~(bx)tU^3LM&mW6Cj-?jTE9c|01=bdk{XNP}wR=s&aaNkxIUbTd$dD##XJC6mpSs0 z<(o|Z!Qi!bY0(NfEY0W0L^d7=N<;PtPD0VEFL~xFfo#lNPG5zP_3&SqJssH;+_)@c zBWvfKaWSPPt3EvIu`@3=;`*@deBi|Re+ziNGToKiHeX3(M_e#yb1uwj zc{yJuvX%bi0;M54^v?`6rp(hX2k=m`Hp`Y-peVA;(_Vtx5xsHavN2e+Kv4`1E+Ap> z0Phux!Scl%2K5AYv=^VYUM-t#PG(|>tHbZOL%UPW0?PqnW0xpNY|hf%k9nMXs9L#1Cb2hgptO0*YpD~6 z9lVswA#225#6wf)R5ScRU$=B(YcAvRmPPETC+!c_7}$zc|2~0Pw9n;{O8sq?>2|@q z1udg-vsoe5hAzKewBSZ%6Ps>AI0;1;ht*dqLG1XIoW2SXn_6>|;Q6ncxN%v; zHu@a3pv+e&u|sj=vMJcJR#6IWttC;wtmF2I zrNFX*qd@q?<^)WE@Tz8zPCqb-xHyc#J=#rN!!`gITwSLm1_vJOYocCL-%{{@GBId} z1EpcG;D1iQ;4U6Y)-Y(jUI`4?&dJ=PWZ}t4<jjT@IWab1j?+&ey|J*(CqzBS;n z_OnVodQn}UZ_7$pp5bO?oNDq*!SsoX-&1P?CxmQd<2ERY?C%>$$o_@*ibXbIi#@U{ zAY_TF!!jFznXAqg0NE)Ul|=UTmG|98=6|C)v{5FqpK+ixWIJzi06V}qunfi%u-JtnOUU60|LYoSBz{nSV!>#V-%}IaU4L`qOKb?cL%taHF!3 zy|_(LWIt>pAzNxYw^uB(b#~b!dmciTxIP?%d$dFL@lF8QwCzeFyQ=1qZQE;ku{Czc zM7AFel!olK9T{p&nf2ipJd~`>vfX!bLsJM@X8FAD>B!E*jmyU1`c6eL_`Z{bfyXXs z7~I**VIaJB_y}Ww?nGGM*Gzl2=tSJ19R>6E0u+4MC7%NHl}y%miw1J<7PUV7Xx-}V zmPvsY2TG%0&u%AB!0h32$QlKG_9#NZ+`vNI2l_I+TXY+4T-L<3&m+~VpH9O))WfMDXucE|m+Djt# zAG}xW#ML;3BUbqSvu~JK)P|K<;AMpk_i-bzgEj2{CnMT2yf|XQKABkU!-3MUDzraC z9Vj!obl5 z?N`7Oj+>RSgtL9KjP2`{_#c+yMrC7l|A3-c0ZyCsj_ zv2DeQ@*dFNaDR4ab^04X>u!onv`SdGKxt^jTAYB^Ry>rf%~%Bvazj%HEwj-gcw=W2 zZd?{xt*10kD3JSoih4r(gXOOrS(Kta_r_fvsBdoBi<^~!7JsKaed^+8tZ%qc*=V)? zTT!$$f0NJ}hxdv_OLde(3w`M^|JDdEj8;J&E$EeD|(`YHr%c;E@ai$G7{#$`eKqS@1t_g#Hi^|o*RKd0PJ zO;ImuJ!gKM>~3uN6B&+ynHPbXe@B(YFAD8gwe9JL8foFNv8Yx*o(MX z88a=vz_h;wQS=NagluTLolz9pq%$OFlkr}$(B{5i5A7}(TH<}foM!=O51j{~O+2e4 zw1w(-sk5rZ^OTKeWkUM^2TFss**PabJNg`#L)M_ZiHD}pOv_9Yz6!L#c`k2R(57`i z-n*1n6IR`;lRtZR!u=HW@`J~#cFpryWx~zM=4;1!MftjRp2XKTyjLt=g)iCjbsOf3 zc#|*c0>IblivVAjFDS`Z-ZQ6W8v|aXfjp;4 zg@=w2JO#P{H!f?Q8T(+NZ>h#@SoQlC0nuZVKc}cmj$ggBdt3=N4L2*}nzUzyA@*SJ7w%!Xcb0<#P7P_oACCpjaO1243g#mc?w$m0AG@%iYJ!3EeJ zxY?{QYlD~nVLonDHnTTwE6VJT+azW^?{Is?GTZo`J+n1IW{GRWDY#2JX4CEh%znP3 zB(uGmOe!(5l$WJ`s!V2MaG*41_oq66S=YNtFdKfC8=6AQvc2XA9t2&A8<)+&eVn60 zUvZN29*Kh*c&}Ivo<8I_5PndQ#T=jy3fk6);9F#7;2!NTSpE>efVr0524xIiQ_yN_Nr`)cx5ym8jmtXSynDV^ z%YBE`th$=MN!d3A+%4))m6nt{)w%>*1>f}J>Ml*y6*npy**On6 zKNLcC_d^o0H}PJv$RgimBks`-+1xJyWTT!biR`;Ew_42Y_DHq(nM`Ca<3MT1)_m>+WaFQ6Ib;pl zGk9nUoossa+bFmpQTYXzw=85=efl)+MP+YRy{Ta@Rr$tuQq;Mcp4}N(@{1}7H!A~K z+l5#=cK6^$Wh49Tg`&t-cu7LG4c;pj*=}j}$c}}OC9V(G;U4XfEtm!%Tk4gP$c8Ns zO5DD>ye0UROk^kFKxxR{!bvE4VqEF963CigbNVWUtg)})MKT9*1STO~M{^i~NDmYfae-m#ln=!;;1cn3EwYwEi4X5N^SxmvU8XB)C7zxIBo zQV;Jo>3i2xuTmQR$BkLW)MfkNg>4Swe@MiQ%4T-we~L1D{XY`3-|=3t%pUk?&+IUe zS>g&Y>K!)_J7$M|1em@2PDy58f9j>3di_O8{`WGORpUTu%+7zGp~#e3A>P45$=c~= z%MVI0Yu(T(oMqx2!9B!3aO1L=9e!|iv!uA@ta|*E9-0Yjo~Ec*6-^B<`q`a*f}54W zEPwYQ{dAMRhgjnyCxmQf2YytP*1n4SDd zNoHT}N$Hl~H3$3mCz;HC!hzD54fyN?X8-ui<&ZUI)9}y~I^RsaBm5qU_FuTXWicC8 z(6!Ikj#XLp(C_a@gkMQcQ5RmmE8B_h394k=tPEytxBG4I@_TOKMrAWw;j5y|w)sk8 zR*UzFWp>yPduES<%o5j#XK|Ny^K8Q(0JE*WDaovR+oI<}V{)>CzsY2FJr0z{tjl*N zFx&pS63ni^LsN)ZkC%M~UqtZ`H!holYCja^pyLk`2XT0>SPtrDb75Q=Cc_%>CW!<1 z`{A$PF6}sY;=-M)qb3l7oPRPTh)U^R+#UC#)0|tGw!NpYI1!62d*w$-m>PdU#GMCHukH@s)PEq*#B`wA&Yu` z`PGpHr(9O`z|G2-yKHMj?y#Gde&RVFH!7Ri8!nt53f)Bf;o`y|CeVo8LSi(LI(@Wn zm}fR_uUKa9<*;Y=Eyyf!jW`8&X~%4G4uILu**M#k`H22U-K#TAUe{vlyK?%X_YAlM zh2%$1Ef`E1lg^;`i7@E~YeTX#4Ab9Wh~;h@BZvLa2xD-dG-mg^I)Pc&>`E{jo}C+7 z)|jM|SyjQ5IVc2Qn?X3K-j64!`tahG}Ik)_k$>FQa4%Ujm0 zwdYp+;h$sAr>K+tx|Gu#D`!zJ-?+nPP|!=&VBD;XS<7~UY4^iU+^FnX>vI7`X)Rlj zM5_w#6-(=~A{?zX1TTZ?h-pRZD?}^6>Jr?Q9jm>I0Ia?(D3hw{g}6XzRE;d;1gZ|< zp=51d@hHpUoXcAltaF}a>l@YEi&bYk5wS1%_{S7=OV?H9I!t<< zl7ySh3aqvj9DlK84{lU8tlx?&3TuTDBv{+vy<%bgS(<~jj$jHLg<&m>VeM+rw$UVL zNxZJc-P!TFyEMRS@sjd+{r&Fn@Oq_u3A_fDl*#LO94L*~>o^HqV9H!*@hGJPuOmxw z`YOb$rT5XA>3UznjmzS-cdlALeB557sMq?i9lp)nuTry5TuYyuv^=Fo=?sUz%ojs5 z|Ble)FOJ$KSKAN#12hA0qq2EjUs_RK&y^^k^*kO**5=nb%sLHSJZ~}v-iMd7PpE3tcNNCu!dEX ziPdj7P#RVbDmnqHnw7X5vWC^fN(y0xFSD#1C0M!L#*NFuYS8Je)y91Hwx}0)l~`SH z(fbs&YHoJdh9f_7I|YOULo-tQNa zkG+eVl`#qOS5<7wHQSzw)j1(#(;8V_QCcTfC(*hN?-fgHOl^)<;TJHaVp?rqz(l#w zQm_U9Y{l9Du%m0p2e#zCmvQ5X7g~1JkO}N794HM~-Y+#GkRutH#wMoGC!h6L68&}UB*favL(3O^hxIeoqE!FA)zRAm?@zmHxQXMNl_#H5KB=pUYE7sG@zjCK0zsu`&D z@bdCzT+qL={sZgDd9W8y?Ag7zbkR5Sx&(#fMzbVbZ1$hxYI9Fd_ptEM3_2BXQ^QV43uCoIEQGi?p(b3<KYdheBC?>nRu>&(N+4xWwLXwRsrnhpAH7dDas;VW>r?J+Y)`pc^FXsC zWqXA)flM%;mSVzPD1}Qn1tm?`)xd!Xr|{6FnDD;_fC-BlIM0NHhIA6lC#0AV)euM_ ztfBHGv}!~*!6L^5uSP%yl^QwEgikmVhy?be6ce69Dcr^>C`rQKjUAY9Tm}i-8v`b+ zY3w``MmBLk!ci$E#5Vy_h-jib3GJKGO zP?Chxc<9i?%pQ|LLP|5hgssh-XTrqhbQ3I+Oc>T2NFlDd@+5R=K_`JdEW-qK3m}6g zEu3dU-j)tb_*)7IKcN)f;uMr5;R+r)M1uK{3=>YY1Wef1(s?G#Xhk=Hkz~TSRzM0v zS}9LLuhw)DEGaTf=-e8}z^AqIOen5$U;>|ssKr`t6_CO=oPv@hq~f7NB(Mi%m~auw z;Hb)ZCM;kbnDAQ4;pkTuFkuXy%ZD5wFOKl*j9NH-r=ExB>X3XgvU?@*Kr2UAYoHG zx(Vz%DJCpy2beIso$@9mwRb=QUq4bvh;0vK(67DoNNCuBZUXa3iV4*^04bF2pu7n` z@X#R=*pD(ucmrkd0B7I~5_bF1O)!6uV#0ds`(d~(!x43{pYkUB(veOA`$dKcgF6Cc zr0eKB5?Xhno4|aPVuE)kAce}Els6%lKivciKXfUFqpwf~uW$y=AmI?s1iF-M{w&3W z9sYm`YyFisVS0cA6Zj*k6cfw=Kn4i`&Lg2iXF3V&cPS>c=nSM#x3lsl6b_`DVE!iK zaFinu$lw#sz!@Z*!I?lLFw9^H_n0kE3V#JEZ^GOlx(Un=8752#0!$bgbS1dALK3IqcgWD9nl30H9@5D9EHDJGnRQrM4EQ1Sxa(hvtG z@DNLx6J}W-k06}iO$>3K3B9}0Nnl*1m=M?%sG~Mrl_#NUr~?!Dp-VBLR49-^-caY6 za2IC+kzmd)#e_>x3de8?N|NxuZgdma9C+wbOjy(nFkwbF=a~@Iolb(;O^OL&-GLPR zyDLwER}Z=gOimdlRO$g_P`ropOn8nnfk=+SB42q`T`l$ z?CU%ee&S3(67owi;VqQHL!5$=B%J6+H^EXsh6(%n0VZtf=R6a}h0{r}@Z}`xX^SD@ zKnerGl_#OIhHe5Q#{?e@kU>L@^GwLypKbzMND2wxpcG!?6qF?4A|5()Q^#CT1_?*| z119Y5?>rNJji8%gDJ;c=F%dutrU>Op=n?6F1b*mJ7Hgd%feczlI?se6TDl2rQ7I>kc1*KNH`B=a7gPs6Xr$HO<;;iF=1*HV8W;<488B`35R)!W%qvhy=4= zWA3J)l!^HPl)+V;fip;0A4@lZEiHwF#j$`1Gh>xEVQ`!S63WORK^F&P&^yj~BzWuT zCRq4PM3GQg52R2+ue=Fg@z6mM%E~a|6_mkUoPje)*kPcXz?PFj!de4hLb5@56U^~+ z63i83n2-<;WDphaJQ7+AqMKkTFU5qqgMbt~2Ptnt4kO(Jh9A0=IpGtO!E>B}Gf1%D zOu!3x9#TyB%LtgT%BZ{vQxY7Q;3z`%zJ8?433-PC8T`Z>sI1`YBYEn!%2BolPsPZN( zN^)QVKXfT3%t!)E7?@80mn7+EPsDHWEm|Z=~`h z)EPxL!CYMi2_B<>42q0$o(WHICJ+ghI#Nuy0i|#jr=TPWTSq%Ep_U92R*nWtm^a#a zCd8TPB$(?;F(KRxq!40Oo`fc2=q50H{YaUZYmNajC^yD=CcMR&fFyWHG2tPU!oN5L zB}v#fmTm%DPX-B_#sVfR8|yq1hWz4y1aB!O4EO~|q0cYMli)LsZUV#Cj}#Ibjsr5N zHqLn_e8ZW5Bs7p>!fPmndpHFpNjN&*feHN3rI@gLJYd55@y;`0%mg|KOk*h~m?i)z zL{CtjgiaIbCa{fU9FAH~1TyfR=sXj0PNJK@HkD$+XDEdiI0Yq1IFE-8-PE!0^&^FZ zLz4g#c1&`f2~#K2O|UeRV#27&KnjB0jw4m|ICPA>Xe+3e2y{oA3Y+9U{TP*N+quu0k1{#2Gl_QugBC z=q9kOrI;}DH^7APzbS8m?sqx~j7kOxy?+NX2>ji7BvhV3H^IVZBI=Qs5;K4l+-E3n z!Ye#D7dnqP(&H_>>I!k#IKH;H5B(Od*NO%rqa2sdf3=;mDO*et*AjO1LvjG$4 z&sN@qk#p!InEhm!5I+aVAYzX5NN6>e%LJXklfKTy+@%S_Xc#7>6vHsxbP2ltx>%hl ziS$hl{9SiJYd*o@UYPr=ePugpl{=h9MK~LeMwm7#JK)i?#prTNYyjk#&3UpMwM+I zmurTgFd%5X$Go)5UBlQWq@bQa(DVcQ?!4&tfTD?ZK3x;0g+P-Kk|sUo1Df0=jTF*^ zvnx$ie7*!t_@GXtAV?EFh)^JSOZt<1*%J!SL)Pl@ca$-uBr;9+OL*pa6{NI?+$48vIJ zpRdF=NG245d`~qC>6)+_fhI)uyDkJYxkVZ&qzV6(;Dr|w(t|YNgW8jVAWirnxY83B z(KRtg2s9zGAF~M1het0ixdQD@*sKb!4C0T zD4H}{OlP0zFPi=8ive-UEOs9IeoGv9+Cbnbk^PoSfMFlO!{dn)fS~t;kkdPbdWWo_5(l z*Tg(gpb3$E^#(wbGo+D1bkgDsLZNu!+eYqrugF^_Y^e%GylCbvi%{XfI{WOe zqS-I{7a)$?U(RE{(KZL3wiS3vWWV}0VAxymu*I_Pv2AfK%Og?{#Z&WoRVlX2HbNm# zJPpq_#FK@O=YHGinlM2EO^EEb+zx1Rgfvomou{e3kb)?hSlO?)U79A=AXt+=JLsC2 z69t+O=l!4^fF{>SBc*G?F!^^7(xYp_FutT9N}V{^%I&1H&$JfJe!-o9IIcUL$G-P2 zx~CScz*8dom3INd-hhWKmi;AThvZ`Kk%B0mrv6V=iY>8=PzV%HSvvb|chfateFd5j z*>AcV(BvR#r1UyZQ+*%>Q8ck)Tx+*9O&qWvwui2XWuQP4BK!V(08K8FMoQO&Vcho+ z(xYp_Fe*|IrA{1drS>{tpV!3kvpsqD0^!cvaQ*?iSR?$jq0Slog$Wy*2cx!c#u8BETpb3$EuY-UlyGbL3 zG~tPSMGAs6;V%$YIw(OCZnU)ZewV-Lny{?|nh@Dn{|#tzhBQ)0lPwk8hTU5n#Af@O zkRGJTp25>x{eCZKX+jEu>g4?`_gcd@6r-?T=n$QKbChWIvmXM)`G|+?4EC!Wrh94$ z5O_*tzvN+H*h>!)?14PxNxVV|f;?py#v|XkW^A6rgq|Qz`JUjd*%7)XjBp)9WWV+i zK$GpHkwTjA>^~y~Q8clhzE?ORK@)DYH1-3I(lufI1a(4WpFIj_a)LBcNRwQxFV!x2 z^+L)IQV^s`Qn|lJEHfWVX>e46Ci> zd?5uvn$*i~oLtGR3R~}_1Wg`jTQc*Sm7=hp`xKph)*ox)_?-V6B+hF*WM{Bn?lj#~ zcCf%xBKrkT1D?)5MNk^@lxP1eDG2fu&HHJ`JXzP%gr4NH?|p`@iMfM76C(SS&j6Zi zAdM8#gli*Bb&nJTX~GAUI3qz5K8Sb0ertP{t_jmrpb3%vre^_74w6O+X|k_Z*s{O! z`m!HLL69abAI_`&YVmtjt+Ns|*%2JEaQv>q7JDuDEyp=J`{vG~+5ZHI^BfP^8SIxj zPxsW~aNf^*9`JPbIfBxVr@WpgNkNdOXuW@;Wghk?DM&v1buQ2~VS@#APGsNX0-(v- z^Aa@SiM&k;f;8dR`$aAgdV)0JR~Nhs_M6W?bWJSv1)31qZ}<D=3u{)f}lF*dxEzbmmO#lBB*mB`(-Z! znykDeS(7x?by5(d34g#SaGB5(qzQk(fHi4#g|3O^c5&{r>gd^TBKuxf08Mt2Mhex* z`2V?jysGQXz9I!dn#3I6s=5?)O;zcN1Wiuu%HAUE$UDksdA?&!z|ZgZ5k2pxLE_xU zLv{xHh5n^`%Ek-ooOsTk{a?V-=~oF#L!Rwk+2tVshWWV-xK$GpH zkvgiAXQUvyCJa;Ix@1jg+h?o^$bPdXj9J{fJ6=HI+`&V32K)JLI`Fg-9zXb59_A+C z>Es&(r751Kt}2kza)1;>@zf)tfeZT|DTrR@w9WID15H{BG$FEI^cJAW!kf}Gv10rW zDTtzpHOTE2p(nZ~H1-?acA$w`pb3%v>bC(+wva{&)k&p+`Br|I>BT-G1wop$89T4} zsMcT@xDn-uLL5u(~(GHbCVRTb>U-XjG;n#_Ocd)xTE z2wUQw1Wop@a?7!DNo&e_{|(jzVjn#ZFLK_00Eu%I57`;)=XgN(6kXG{jvt)&KivmB z9dnOk^Q_60ZnELe)$ z(uBWk_mdPv*M!D?okw&{nDzoqi0pej0yJ6sP=Y3XhQ5g2@~y7rHYo_wWX{}gfj`<+ zW{W%`^aN?r@5YT`auBU(|GoDD+Bu#ac6hzU) zI`4la1<^I3v0vjET@!RK+crlK*)RJH&}8LP$(k_Cby5&r6NV}9jL;KZ6WaC^YXY&4 z?(vCa|0X2PIXq-%u>buz-Ba{jpUqPu`)SVsPm`V#l%}w6jy1bjHj;uUo?1F&^JMRn zf+(Jb4{I=pa!tF?OS&fLITo8HME0}41T>lcLYgL4jQ=JDL7H$Kr>Q=Yf+(6;dx9&y z$}74i=ov7ZCPem2z5+B^`ci@>(XB?zuU@qgdxaDPX)>+LfmXeqK1#{+iqI3JN$Jqr zcXoztp;37e?(7{>5acOb-~5*E4P6uT?qZuJME03CfF_gEBxu6lc{@M~f;8dJ`TrvY zL7MOf3|;~I&GW4TO@alQ5ZN#K7SLqj8wr~9^j*7u($Ti;KcpZ?lX>S`?AhU;oppOl z=n2wf^Mc^MwQ`rFtoQF?O(6Es{e6+_UxLIrhKKA7_TT?U_tX+1@RZ2@lm7ru2mMD- z+7bJ!NI{UN=(#@sh1uB~q#(#s`?}7&<$h1s1bu#=&i=P|fF|SLNzjDHcn>LvqKS11 ze@zO4G~s*7tVH@&?gL#D^p0+uCPelNegHI?|6YP7k+t*AxR_FtJxdCLG&wx$uHca_Htpbl7b*l)9V@9a(t$1g5JAs(}XzhfBFPyGUk(HP1005 zNI^7B(0hBHlY;1)(AN8KkpYnli8moYr-%mNkMc?80IG_h^`53yM{G^ z*f;kS&HiafoRlw|IL=`IKVgS|)! zlJBX@ce*BQ4}m5`_TPO2G#U9#nkH6^w~~S&O}LKJRF6qPkS31j{bE1pnpk=ZG$FE| z>j$98jPDXO30`~6bwk~D>`_t>q{(Ez7NaW`6&r`n$qJmrtCf0BYAPtm(NAM|x&&yj*4 zPx+qU?K_i=L2s>wzN?54);W>=G=^KNqb+Zc(GagSnsnNPCSFNQHYNwdh<=xmmHmyR zAc`i|p!=jCNE80bf_1>etxz_)CYFAJIw7*3JsY6ObQcMloO;s!P>q4D*uP0ZkS4!R zU>5Cjd8GPC3W7BGHp_IoVBUfh_Ag*fK=%8JX8$lG&dzL{IL?^&AG*>#Mc+X~Xa8SU zz*CK@1W);bn?nkMJVp2SYi`QHo+1T7p7K4x+vn_bP0Zl}O^EEj$PQ?dm|cP<{1m>9 z6a;C)2i+kB(KVr+^XJP+*93hBjjc|I>@zt5O(y4%ph=_8Q47j^^&;!IKyXzb^9r)z@VXJXTY$o{w7fF|Q}OV)&8_K0VoJkmU6J16I1e4TOO^ED2$O~u^msf%&{3?7IDG1VppZBklf*?)!p5RK)k>7zP zF#=79?0?D!Xfh_B1Whi+P3|2Z)1KWy3W7AzAHFr+%WfqFL7LPvRmpa_LaOR9DG1W!fTjPT$+z7o>>tFM zK|ZWI_Y}Qn*ybsb{o_S|VRtDa!Bf8KCXj+4Ptkh+K)au+ zy`&(>Q@$s7ds>vP33^wjO%o#fH;V$AXp2hFgrAN7Bn3g5e78ouR-GdSL7MPi zb!XbOzWv2HO(6EsdwNB(zqvRd&hp~UWB)=4x~J&#`!-LB>>n-x3_GBN1W);@8%qj; zJVimv=Y3c0Bn3g9@;$-Z!;*AO%m#rbME3tJ3234zDOr;=)f`d~O%rr~{}d^Rt_f|u z|G5-h6U!ihCPemMlmawKEG1bJhFM1nqHDr1cSu2WO=#Qh(hk@kAo|@M>q`UTEH3Rl z_Ro}|dulcc-cvzj-%2BLzX4I6mipUyiN`VxK|psQ};G^Q0W0$)Iu)G}-5o>ebM% zIJ=4z1ZlGB@z}+;x)rwEAO%61Og|LK+e|#NA3W7XE@9c^zSc%<43W7Z4dxE!H9&}9@lRy(9`{z9X zO~O1RXu_X~|4IsiG~vI4`w%Gz(u5C!HF@LdKof`TKkx)JiSv}8$;W@%Rv9!rm|aE+ zf;8EiZ$QfSO4%$|NkNb%v#t&BSnXGU!v2h=dpjJ65UfaNl@oR z_IFhRhV4^Hf~S1d4JHLao}$n28ZFJ(|B-?qPx+qU?OJ8JCg!06O^EEDt_)}rT3Lc7 zTpMYsDWo8ZCf1XM6jBhRiQ{?yWfi(6mSF--i0AyNRRB$NRU~NAdP?(z0=eI(EFuL# znoMYau>6%Hi&8FV9u>YG#8-%yp#KErF`_&WcRs(?6uRCONv2dmLNH4hhf zN@RaqHDK7Ss!8yaC(%d>f;>g@evT&1+0~>V$Wy*2c)MJkt_eFrpb3%vT2- z34g6`0x1a6gvWRGAwJnkT!?giT0%}Xp zgeP(=DG1Vp586ozf;8cSU`-y@aiED=pb3%vf9n96XzEDNtuJMysvL%T{`>hXsn52_UF|F#F<*xdF=15NB7h`M&K!t z{q^;LVK=HL!Bf8K29SavPtoW1KdSPui%CI{r+iQFcE*dYiRBl8CPelvUVtWkUJ^9n zSK*^bL69c=wZ6YdL69c=l?7OnyWVt7*s%gli0ohT1~lp8EkTpFr?Vg0{iP*4lN1DL z(xmsYu{S3@OF2dgf;357(mBa=KOcqtrS<9TTlnLlWAY_+Nkf$hUT5Jw>0VxRbl%=kpzc&WN`K7V**x%B`fu}PCbxve| zMH67yb(%=NGEBpT=1<^I3v45?Z15IWN>V(Mt>1Kc?q0J;~!Z1@vL3B+RCWRD4*MzpsZ%$|5 z!fWD~{b|hsaYi?H9{U?w&^={m2|OjTzoZ2)>>4ekdAg)WLLN(BQV_+{@X#^k*gr@? z@;yD+lCFvQ4}m5`_P4bJG-=gRf+qYb+(-(7G~t6*lY;1)(AdA+%7G?x1ey@pKi&$^ zq)RIanv8w0(6?0MHtYma5Twcb7Xi^@lRu~IB?Up6lpMc$Y4^Ailym;st?BHubFn6l z*`L%J5NCL6=dr(5<-pVV0#AwTC#!&AS5Zmuls~@qBn3g9qHBFy*SWL5k%Ayk`JUiy zKTFqynJ3VM$o^&)(4-kFK@f*?%-+C0tU`S=}0lNoIsu>YrM_Q$mW z#2M1YdF-$BrF&{l7I;czf1WQeY)@Yap7K@KjT8iVik|1M)ApxoDk%u^l~ifTc*<8@FewP~6kX@F9`xPsSzYulQdOdQV^sGfBOChDG1Vp4}vv0*oCeMyIfEw zME19J0W@jVMS><{`UEW6de4V7l7b*jwzV9v+UG@D%4$*&q{;FL2FI!V}j}I zv#Uh2Zwdy)i4Jxi`?Evno|@MPJSDO}DFhgHp%4k4@>SQ46a;yS-r3b}V-9vWDG2hE z?+M=4cBN~=tQKfOWIwqpph=ak5;Wnb@Sda~iYC@`{@+MJkS31V-yiBglXU`3i0p3; z1vF_EDnXM~pFWLyQQ4c-lY$^kHZ|;}D&P1{%5qW=q)D!(XLkmc{6aY%j_l@u{k5Xm zkM9PE6Vc6i?9b><_tYY+b0YiWx&y<`*Ik0AJc(^cL6E12ePdr&b_gj5@|5oh-d6T- zpoy@~iR{no0chgcL$W4ms&1qpiY8X}r;>u`n$XVqcZbn6VGlTBe|;FBNuw~ynlQ`& zQV?AehFMGsqH99il6unFw{#fHFyRa%;vQdYPe7c0J)Ot?^j;1;?TE(@eh;s?7clJH zy`*`%BzFr5UN5ZRyA8_=X&ZwZ=kZKSD!NkNb% z{K>*ZQV^sG9|TwW_C9n?%>DvRi1YrMK7c0PeI#gd<;}b?Cv&xCqewxJCeJoxPk!zF zPPKp(1Zgt7+obPZPragiFHd4$2ki58;`si4OkY5pUVWX%{^WjiPnpgFPl@yXh1DE`&%@0P0WD;O^EET&;Xj$(MZr__`%i9lH!`P{YgQPCgZ2{&`enK zG-WO+2-0L#(bVvwpWP|z{XzX5u+OvOnElB9fH>XzJCFVG5p++PE&@-9><^6qhV2p| z!Bd{Z#-t#~Q*?j-&cf{MKvEFoDc=*k&5xvO!UhR6A+kR$640brqy$a)$8s%&3U5Twb_@9#&1UrA2+ zgA@d5Qh52UY$v`aP&A2)a=<>%j$`)2qX2P2qMXP6m}t7EOjm)YMD|V5z_7pLVOL`q z#w92OebY^(!|&s(A5AC($Wyf5f7#cCjV1*_p2GFbZ?j|Qny?`PO^EDIiUBk!6hlal z{vCyBs&=FxiYC^1e>f?Kt_f|uzg9=r#2hNngvfrf4$!2EPO>Hp(~}fL*MwnyBL&el zp>4VWboQC@RZ1Y{6JvXpYgE8vTr{9EC*Y6AfXT_ zo~9<(cVQz)LGnGF5lh#^B0L@v*&i1RXp%3MkRHT7*G8JE4JnACiIx2!q#(K`H1=1< z(KRvm5Y!2g{dsYKCZ2H;H2HNpyKiH^nrt^x5Tr>^zZUyHt|(-gN(zEBnO}Z&WWgzy zDf7NoPiNmEp8XzrK%7o`=dqt;pnJ;n6nIKxKh^*Y`#m1ESoW=3O#`72AWzYH|FB;k zwjU`7@|1QY=eFtbbWPYWfhI)u&GCRHx#J1xLG1IV@2yEekS2Uk0x1a6#PK=*(m`}h z%)JDf5ZRwK2+*Y5APJf*V;3L)BepghObUWDd9v%1`C&jA%S2KTq)9@}U`?z~Gs=2j zV|2hi&yM4HzpD`tr@hg6>?bDBJ!Sd`JSDOplK>3+4IZ{6_Nyik3IXyIt@j&j&dK&7 z1wo!VW`DAYt_j;)pb3%v5hg&B9410~5c}Ln(^Sn#L69aq`vy`FT@%{8zc7)miMg*p z6C(S+Cjy$3N|d09W$MTKA1XDrbS4EsnvB~!qkOHAA5wlH1woo@oO&aMd0mV0zP>(# z9k9={0EJ?B^4AYSmMAw92Mw5c*n$WheVRZJH2&{=?_Wg$e;;4o>kNvpebWhp-0#AwT zhYtsa{S*&d0{i9J^1}&*K=IV_G_tfMgcKy-(=j9HnplL#Ln8a85r8J&Nh5{W=cn-c zBP3|T2St;DAWirnxYB2jq-$c16x0ck{YfJMO$v=9qz7rT=T`jTpJUIbv?B#Ub&~AY zrJUwiIm>WT5TwcSjXQh>1-+zb5;}^`zC}Fy9Yz7-v>4?)_I0D_o-$DaPl@dJ9{qpp z-3wF{_4_#fQBg3`L`+IWP%#KUsf3Cb*qK>T@R~@4WdtS)<`q%V3_(Q!?}&=22o?z5 zBPuN2-Pt6;OBqp;7D0(Z-iZ{mi2s@9@ptw=-m0(vIg42zj4-unv@RA%z0 zQm1OpAN|Bl{{)Jeh+n6Oe`eQorHjxrLH)j;x)ME;gh-2-DBk;tD^+IFVWq+^Pi-cj zjHp=l>#RY7Ug;t=C-a`$UODA!S1wlRBDI-p-1y!vTl-ccezqrQ73SW5bnoDQ-}hgo zG8~^(|Gj&E#%lDMGP5k!RPo-QvRb9>U!ZNOd%x>y1qf1Oipy&tA@k=jh~pY?5AgPuvk+ZHoX zy!R8QG{e>q8|?Fwj{>fZ01qyRx}O~udo z-#G2b1t?vlwx;U${G(%WGI}Q5Y>SyF-uqF>Dl@55>Qv47qkI3kWQv(Qx@fA>MQSs_ z|6E^63VJ39b1i0~c<;ZPqB4`VDGI+lwVAwO*Y6+R_NHmL(nV@c4)9#y-&+mre5H%j zX2R9B>2@Lc1H`>QW*z3p=ZJ{LzFH;IT4T9N*AGL zf;vWR!rc3h?j8KSKXjAIaQbcf@7?>aZAPytv(REq74QA=n^oHW9@?h3_j?LYY*v7P zSkr{jUvv{#rHh)srgOKTXTn8W%tZ0t58t9Pli!p&RdfF66S$sRC}#5LqF|+q&@(~Z z`zuq?Gf9ZCn2F-OzbI8@CXGs+s?DV5M_aSnPjum4Or@Afwc(%mhB589NTrL^W^#LX ze$OLSsQ3H)R?NNs=-$EK`-8Ts499)zfA8LZB@Ml%%wmf*RlN5D(^T3ng|;c~eTHe5 zMzN;iXMH&c@l)RSB~W^F^ygj-}W6UBS~jcqD3xvJEun)62=+jZMUHJ#V7tmp{#5EzZ6?v@KXPB$=q2>uPBD|+1D$d^ z?Y(E3u5^*wOxSdrHq&?7Aim%C+kv_FAKg3ndw<{#mErW+@!z}mgVND!$}F{5Q^kAV zKV7Bmub^$Jd%tx$#hQxW?@!`JaXv~HsjaEH??=aso#>fxu@*B?y!WT zKVdg|O_}8uYpQtfbGudAJ_Bu2-TVJ2U4+>4SB*{g~myZ6UrqSusJVX>x)_r7nYO50yT+f?`dL#2xl&co+i>%|So zRDhtirt&-e{~n=P=$UYF7Bf-2_a|kk%;b_%r)tin&hD}uvlM=Lh?)F*?~hcv2t5BaZ zqFM9jjat^bUf(-zNJ^#5E| zLa?p)4tU&*Wv|XyI418YhOzrVy6EXv3}ZWP#@jT_#!#)0;^7r$Xisu3tR4T(T9mD}n zo3nVv=sEMJEt>ggT#3@8TKuShRvpAY%YWRAW&EN=3rEkH78x_^(Rzx5w(G?(PTA7x zJBx#XO#f+%rb)jpF-tteKVa$6(Y8a|4&p!i!873Dh;N-Fw}hoIbd z-XYC5k?-KcR^vMkTE+V=giLzh)fP4A_9vys)O{zsvrv8i9dJZi0Y%?o5S05)KC1a9 z^6h=hYJ7)6t9ak(kV)^m$f5?F@BEL{eTTn`@a_H~!Z!;+x$mfa%{P&6$B(SWw;!~M z_Zyi!0^b$TD&Du#iRSwDhb!rQdl}VzbITC> zlUyjN=-UKAx$oMOnr|ZCX$EOfR^ZzJt>S$*Kqme3+s!DAgWk7;S>1QlB82ZGD5>Z> z6M}NzB__=`k?$D6YJ6uvt9ak#kV)^`#@t-rb*I#QbM}b+NhFk1^c@dDx$nF$G~YzN zgHKtF?>J}`@4FB(>3vsQ)S%mcm!4Ml9UhB#eg_muE1>8*41#js$zN)|iF|vXwi@4| z&???{I%LxOF0!aW=R5z5x^JN$;`!}fjPT7uQ0_abMDtDL+wqLm`1XTV@xEgrliqi> zMGZRNspr*wGcO=~+nz=Ec7dSWci=hAH<9mp7?c&fzjQt?ttsAj2xQXxPPC{&=R5j> zy6=Pm2;VhOQgMIM1VOoPkFPb~M83;lP*&i(5n9Fj_PHRfKE3YCU2 z=XWubRPFWzn(MpnvbyhtK?vWGP*Tx%JOt&w^Db$=iF^lNwi@4Y z&???{A!O3~uC}N_xBo7!Q1_jMdVUA|D6N2^?=T3;eJB5<`6lx1U12r8L!ni??{vtd z_g!RBgU)w;mAY?XFyi^`{xiZi3qiT>s7lQ@k#EN;tMTmzt>S&hLMFZMY>OInzEiKL z`(}I)zHNU&_;!Jy+;`xwnr|ZC^)M(acz@}9MOst5?-0nO_nl}_gU)yKHFe(!!w|k} zprqpdqzQs@-yT;r-$cI4U{F@zyAfK&`}VmetvAUyIRdRk?#T+loj}{fL8IooqlVsZ-2Ow-nZ9Hb>G5pgzsD^sp#7TLAmeR>zZ#O z-)T3bL0N%s1GI|w-2j>N&u_Pz(m3dSJKRzC%{+zhodhKneP=>Y?z`lc=9|cO%x$aj zodK=leV0Qfy>FX4&GlVZhw$A8;X4vaD*BFxpxk%fUClR<@8CMC@f`=P;(ZrFCcW=! ziyCzM@6tcieTVl(_zw78S^-7hVGxx2POjH{6Z!W3!)knoLaTV+>5xh9yU3yjo$vex zb>CU2=ePSkgl`sta^F$+HQz+O9UH91w;!~M_Z>HJVyQ@rmG$fWn3Xi3v7Qm0}G#-$6_pM*M@Z761J2=Mm5EVkoKTyApzO z-*!!!ZzA6XFeoeVT>-7)eLFF2{{184>3#ddmGr*7+Nk@^@$}cQ-M1@?@Er*y6@AA;Q0_a=R`X5dJJ`-@e8)kn zc;AJPN$}WN<{h(F6?^wvB_nmD~gU)xVgSu~_ z2g0}QQwZNK5S054?4~W* z_a{vdl>7E@)O-{9E`vc?f$v6W74O@pi?sUmz9ZmDu?C&*ASZR-;iC|~i=m{V?@9>D zecN@_d=vRDfI(S-?+R!Y@7u|#xxW43N_yX3-PC<&jYjy+g_4TCO%Rm(u6;)HP2@Z6 zS!qyK;M)ML;(a$jCjIlb|Q25WbV3q@wRk2+Dnzbk}?n`HtyfHNG>T zRlM(V$fWme|!;(CcW<>iyCyk^ZTm% zW+owgyZ1r(W+5o|9p$F^Ci3mr*J^zGL92M*v5-mcJKLfLo$pi+b>FTN5x#AoL-=-q zpxk$$yXKq7cRdWs3f^Bjdq``F_Z4nLl8XD2CJ4%Xdw6QT ziF}vApsc`mBeaV5?bA9gS5YO*oD5>bX5`uEyb}wkYiF_Bp zpsc`m1+b_lr5x#Swq@r&V1m(VK2WY;De5VbR24w}l4bUpy zcLQY7Kfm3)q;b&ub{M4YTR{0vf|829Ga)GVUGk#lo5**Jx7GO0fL8Io%OR8Ax6PpD z`mP(I?wff9@%)a2l8V0LAt?8qH(2vcG~p z2;Tud(h4a04uhcFck)opH<54eVOHZi6k5gmPKQi--$fQR=zQnMGZRNsjRwhVG6>xtsla-3k2o919h5jBH#5e zC@Xk>>C8%NiuWA?ne@IBEo#vDj@GODW?o15u7Q$@`;#UJ%6)tAnr|ZCWiTi!@ZAWl z;(hz*rPZhR9RXL0HRyZ?jZ*i`O-1-FhLVcDD3w?zs{2lO1K~RtN-Fv`K~V0ycC_Z3$ah+RG$O zx5GGf-$E$DcM_CT^qmPox$lxOnr|ZCF=MU9cLubI_gxN|^uBGzHP?6D1a;p`7{YfX zlvMN`4?(%_yz!cEBHzIitj2d7w2Jp#2$}T0t1W8K?Y~PWsr#-9NB9nyD6N2^?=T3; zeJ8)9`6lx1J;`c(heE4(-|3J^@4LvN2A%KxV0GUd%C~zE!Z!;+x$mgSnr|ZCj=@&r z+YegB`;LW7df(X=HRyb&zN+q9cnk6TwtX4l+XaGh-+`}azKML-!=S9-{iXA((wgFZ zhd?I1??j6lbiSisQ}@k8Abi(ANyYt169nbHJ*H^BiF}vApsc`mBeaV5?em(n`t-gd z;7YLuo$sJG)O~X^5Wb6{q@wRi2+DoiP1Sr8`7VG#S%L2gXch0<>5b<4_J=F!eS3we z`%ajN@SO`K6@8l^DED0(s`)1Jo%W_QC@b)7fL8Io8z7VZ`Rx`ajf38|!&~aUg-C?& zBq*uqI}?I(-zDLiZzA6@)2zmK2DFOzT@IP_zHQ!WuJ5`Cb>CG*3mIk_!vxzi48yeI z=gpcsa`D0?GlIo`jf9elzT+V%_nkLg^G)PCID*i30?V}UD-K%4`!0k`df(L+HR$%= zrIG5svyLHr2h5OGK+$&?1m(VyXKKEQe0xU{`92&sU-!R$jrCigOF9{?Yy57(zqLc5 zRlM(X$fWmOWKo08cmCVzzQfJI>d$ZYD1>hof^y$cvozmCz8&8t^8Mldv-*W5k z`tSCi)qe@K{h(F6?^wvB_nmD~gU)yATy@_G`(o66+s;P#c7dSWciCH zWn@!t_J94_AKZuS^LHOMWJjNWYdg=C))enM1TyJ;CtB2?^BuiF-M7#k@%*lVl8XD2 zCJ4%Xd(78-6ZtNKL1BEi^xj*n-w3VZefunsR-fK?1Y9ZBpz|FRqwc%Ph7USNF|4gYX>*B^7s07V7k#EP9guYw;`%6D)74JJ1GU_;!Jy+;`w=%{P(ndKeV;{bkD^&WX~R;(doeCcW=OiyCykqm$HqbAKV8 z-!)KDaevYTLAh^_wVH1t-(@f;jPD&Qd-5&)YJ^ttzI~FU)u;Cz0auDO=zIsQQ}^v! zkMLa#B^7;FLQwA8E=BWA$~Om-v($E@4Epq>7UMm3`*zr(?whMaJin8mq@wRk z2+DnzY|?xa`HtCaHNG>TRlM(V$fWmev!%Jd>$a-<&ay!~zaycfqVISJ%6;dhYQBkl z2XD0+-*M0?-ghBn()+Hqs6n^?F5Rx~y9)LE4oH($K+$&?1m(Vyw`snKe0y&v^1a}b zAGl3NE4aU>UE$t-`Zq46<896^t&ZDO`#ZPr`du#mzzwdAZ#CzC{6}uhpfav~@j0&R z+SAAT= zmCFLIVMz?Pub|l*Y1hz#PuJrVtqeo74JJ1GUtRrs_m|zLY|!Q84AFgeweIAHfd<3Q z&o>#``u|`^SlGen@utal|Kv%!^j=Tse*VG3FYjHQ--b)wbcZ|->kfBwVTav$nr+`P zP4~uZPeaP`ZN@Ls{Y+!a7MgVPBTT3AN12X!v@=!sOgA=syJkdYUX5S3pQ`*uuUhZ7 z@K&8)kA9vH1CKXch04^J(tH#7 zE`UK{eYgBk0j=VFJMC+(Z-2Ow-nUn_x^LG9i2ZjilvMO>f}q@Y?faTZ>6M}NzB{`aJBHuCliF`i} zM+UTt_gxN|^uBF!o9nyofVyv2Tg3i55=tuij)$P!cV3?6o5*+Y0Ycv`|NUhgw2Jp# z2$}T0t1W8K?Y~P8tNTv)3-SM_1ss%CK+$&?1m(Vy4{5%Me0v|Z8sDMND&BWGWYYUC zvZz7lJO7xv@9<2-{@eWs!Z!;+x$mf>nr|ZCj>oLVw;!~M_Zk))++Yb@GT_7m;9hk5ACh}bmgTlPOob3I9F2ZY-ZvHP<{Yozt`F^tbCBLVZ{p$DQ zJVrOP!w-JDE@t})cSri|ZNJL5Gv!v+WT{Y?(+wvZIvo~_%B z@3)IKi1nR6lGYUOI|MT6eJ5Jfpz|I5iMsCu0pYs_N-FM8njk3m?eVeZo5*(=3<~3W z&3=RKyH=IDV>#W}-w%hg&)TK32NJT_Rr#5$ukTj&(>1Hun8XBj<%3o1+|Spr{=*a5 z*YCx!%W8sI$KJ!))Sp=PSkz1G%_m-AosUmp_ZLlM-4_jE7d1V@W@p{fojH-Kd%iS6 z_s)sFx;>39x{s3v>zck9qkDS6MBUzYn{{ISMral9+vgK$_33>_z?EVRI^RLZ)qM+Q zgzsV~spz{Bf^y$>g_>_7-vuxzjPI8kuNVxS9E{)f@iBhzQIK(K)5}I7|1IOiok_+q zjhl^^UQIR*p1;v(pS;OvEL&)dTQkV1s-ZLbXWf@XS&KbUWVx^&V=4#(-uXQ$v z^(&xNyl>lUyjN=-UKAx$oM~G~YzN(>|95h4KA3e1BcOhib`>wXA zLAU=dJ*DnDAs^v8z$~qRqVF&W%6%t)q4_5A?R|>K_v3JcLaTV+>5xh9yU3yjo$vh9 z>b|S)A->;nFGBccAt?79^`+*U$hYHZLfAU zyRS9hM7|4PP#E8b?!B*jV17+E$m>VH)jdA-?PwnDxBs0AzbE!S^n37Osh`iAnSOgd z9_rWd=BvKH99?lzR~us(+xxQN*k6KS&9P@r^mF>muk)(*x*tdP(p}#3mM-&;y}DUD zKGW?=IH&9QbEU3FpZmI}w%M@U`X|^6wGM2jsxi-!bybhTqvpN+XO+m@7ixP-$cICN~J+zeD4}>&_&kTvne}t?6XrB zvh0FXw)MR%ws=$)JN@!jc0||JY(J-!>>r7%**k7)*#XIk?E1(>>_m^3*|fKZv&Tkp z?B1;}vE_fh!mfU23Tt<6B5Qwi2>br{XW7*0w{7o0nRUciBaj5RK zkH_ma>4S7(S(|lYeFL4e2`*!$V-8W-I_)db7ioP=;DED1bruioF z9rGQL@0CBdGBSTT8&^0DHx^ExZ1jBXRb#~yGmLkxBpV&tr5dZBNHIRRw$V7Uc#~20 z)k34GXoB%>%m8EI)JDU5>n|G4yl~Ty`fRMBZQT;zlz&*?Z#v#OdAw|*q4AeVhBd>( z4c#188iKi0!`N{dhT5;+H~iA^Ys0slQw$|t9DJYJ#u>!=8PF=;cR6Iz`?mSMxxVYl z)qQ87d`Ch_Mc?rdl>5%RsQD)H9b8W2`*HaGG7ehB`!0k`df(L+HR$%=rI*!xSAB?h zeh2&@t$?EMFbK+hCtuQh6Z!VOOz6Aik5Fh8?>ikb>3tVj)S&a7U!m@s*@gJ|6Zanx zzF7#$eMkMI`6lx1SV81FDQ*ql(l0+~74JJ1GUtJ7EvPx9!ge-!2f8 z`wpzsd=vSuhe2W9Up@|pbCtBFc;6wAN$)$+q6VGs=qu{JT{95AYoMg!{-gbX5`uEyc2_mu zM7|4PP*&i(0$RoUcDmMF-~MnVy>GAI)O~Xs5YO*iD5>b%1VOp)+8WI_k?*uxX;4<+ z+W@WNeK$ZR{qx)HH)$O7z8!9=`_5XA@SOxD6@6zyQ0}|ry5^h6cgzh!-z|S+K&yD) z<&a75+va9-eb?Pq_nnZA@Er*y6@AA;Q0_bLmgbwtckpei@f`=P;(ZrFCcW=!iyCzM z@6tMT-&yY>ddXcg}}9Wv>C7g^Mx^PT^Py6^A< zi0^mYe@FOcAt?79Rj>Ib^6mHsq3@Re{KOAh#ruwhOnTqh7B%R6r#7hj7T!TTzisa! ze7itU?mO_l=9|cOJq!x_{<7r{=LTs_@xDVKliqitMGZRN(GS&qSFJ+$u7Q$@`;#UJ z%6)tMsre@IT?T`~_;&oI6W`LWMral9+vlOQ`t-gd;7YLuo$sJVb>HF35x$F|q@wRi z2+Doi{jK>X@?8Lf!uWn1jtXcM@7t-dxxW43N_yX3j1ALf}q@Y?LV4tBHw9E(x9-uTYmp-fL8Io8z7VZ`R&HoFs&G- z8NMCbsQVT+A$%u6Nk!k85S05aX(jdfbSs9j9XDgy%d_Urn9~cMLU!V>0FJyBr>2Vk zIH_@Mp?H3R z-{0RZo`*)ytP{^wcb=bM!!S(pyjywVdEl)NZNw&jn7t@mJSSZDIVqk!X8q;Vj$xQ@ zYK$@BdFjkm7sRvc)lvOy8HOpD-abh@FZlKRuj2WcX?S&8r+2_+SM$3sx= zJI_Y*P4xT@ZfiBZo_=2A%I{2X)^Z^7C&fsklFBf}q^DM<>lUk?%4X6xMgke}2*kt>S(AI7q8c?>hpn z6l>7=4(g)ryDAm&{4R!)ioPo$DEDpWsQD)HT>yi^`fmB70$RoUcIwhx-~MnVy>Blk zb>Bi7!gnr|RP=3vpxk%u)0%H0-)UW?L1BC!&)>wi^veLP;(a$jCjIl<%}E*uy>EwZ z>b|)+gzqFMspvZsf^y#_&uG4he8)UX(Lp!1#DSKW8j4uo&pJ_z3~5S054bklqj`L2gSVcuUp4u^AJ zX-)CILm-phccMiNI^WSA>b`{#gzp+CsklFBf}q^Dhr8yR$afhG$_jipLaTV+J|5EQ z)BBEqE5#agzJvOy`%VZ)_%4Q$ioPo$DEDpWsre@IT>yi!0^b$TD&DtKzvlY(hb!rQ zd-YfM&7r>E$%T@NzD*F6`>y?u=9|cO+6&U4u)bUV^AiKKiuc_Bne@+ZxBk*N=zTkQ zsrzOYBA(w#P*Tx%CIscaO9p7ZiG0TlB=Wtl(O+okR|d3-_gxN|^uBGpn(MpHTirJo zf$$v(B^7XSkMr#X+lh--VD#@4MQf2HpOR$6^}-w|-7ScA@YkY3$)Rutm-T?{1^eOE$I?%R&nd=vRDfI(q> zxBO87t>S$<>6`1@AFibL?KMi>w=fgoI~PhS`ZhsO?z?uR=9|cOn!hwCEAVZAR`I?Y zAd~+2?KVmp2fc5HKy}~Yp$OkeP*Tx%CIscaOGazHiG0TdSdH%tXch0f95U&B+XOb( zcimWo?`VYYNGPf3J05~^-+5y+-$cHH#}fK(`R^~|pjEu@Ldc}|U2Rc=ZvS060pWWN z!gs(pX$2I0he1&8J9)h3o5;8K1R~#0pB%}x^eYrv#rsZ&OnTo%7B%R6=TB1i&CNsj zcAtpw%|cM_JL)CPH<540NkqQG8qaVo{qloW@xEgrliqi>MGZRNsln>Lt6oR=whcn~ zc7dSWci?2rH<9mp7!>CHW#{Aed`rKagQYda`woFjdf$l_HRyatzpCy#{4Ip<8Yro_ zKWT!X+_%Ronr|ZCWiTj=@5kZ$%SLDw@7w29Y4z!SN5GY04LaXJuc`ayP|xpTD5>bX z5`uEyc2hLpM7|4PP*&i(0$RoUc6zP3zWw1!df#4esQVTcAfDg3P*Tyi34(IpwXbWw ziF~I`l?G)6z75bS-gg6J(m%i5-jK#Y@7p0v-8c6N!gmssRP>z*LAmdeP|Y`y@0d3U zeYgCP0j=VFmqRAKZ=0~@`mUR%?mK)U!gnN;RP-GWLAmd|aLqT7@8D@x<2w#o#rrOV zOnTqd7B%Sh-=z`iz7re}e?MTrThab|QwA$%7@Nk!k45S072o3HsM@?8Lf!uWn1jtXcM@7rlXbA9{6mGr*7Vi3MZBR)UL zg_4TCO%Rm(u8r1w6ZuYCC=CkhyXE)a251%Uy8$xkpWkjV(m3dSJ1kN6oiz&KI|)iE z`p$%)+;_<$%{P(nn8jA(I|Ew9`!0t}dfzrnn(Mo6sk(2@1+hPggp!KB;~^;bofoV5 zCh{G;)M|XkL92M*g^)?_yV{}#-Tu3DIl{Lu;`tr0Oj-d&-(e7x`%ZpG^G)R2dpVKs z+=wB35IdBgvSb9`r1$0Pd`IvT4vpYH?KgtIykZzXZi)}@;y;M*JkFaRbZ8JidhH-S z#CZ_EcEKRN?YrK5t3L+t^_lC{zV>G~e(uD+eDwXk{MEMZ z{PL*h_}g3E`O>NV_yOzs@%^Sf&$sa$z>D=mp;f%^bjYOlU1U*%&UgL_b>HE`5x(8u zMfheRDEA!|r}-xG?YM%-_iX#M+^b{Pa?fu~;+`Lx%)NafiTibE5*O2NE!UGyj3 z$TeR|9m%wH3TfyzQl)$|@eI@r`NF3+* zRV+6$X9=epvxKXev4ji15X%|fiRBiKS;}n>isS5;&*sL?_veJRZ*gLMKWG*2I~FqO zeP>(Lp!1!&Qr$O)dVgsfkMQjRLAme11kE>*?|K*%=Kba1%)Z>%X&zksG!M?ZOCN6O zZ@sxoDFe85Iey%}uX(O2gy%lY3E*6E#&FO4708W^7{&ekEXz5?`EuhNM{>Ph58~F^ z263**qqy3b04~`%gv--S=WI+fxS)oa+|uEZT%`L9&NeBM`)qa;mtFQUml8LIdt$7P zJNx8|oLJv^rL?Aa-yx7m?>o_=2A%KdM1=3AV1}8-Fv0fX=TNQqd9&t@T)c3}j9~F! zYoMg!{-geKsAUyS18cBHsltD6H?6KPsSAylw_x|i>_?CVdpjEu@2FRp;e!H!c#zF7fVWYb5D%9tLNl;SJcP0eo zzDw3?zKMLtY#{ReI2;+!D&BWFWYYV#+1Om)b(__F3%yXEe?v({-|-NX`_9{>`6lum zyqVB<%YT0v2d(0L7eXez?`n%0bo=kpt?Is+o(SIoTcj0G^c@C4x$opu%{P&6@2ytj zI}}>Q`%Z^Udf!DBHRycjZ%6nZf!Ke$ry+c^5S06l+NSv?^6j|YYJB@at9akBkV)@5 z+oA@Y@6?^@zJ&=0-?lptzFi37ov44$ zHBlegCs9AYU!vZ5Xrlhdz(jqQ&_w;Tmm6Vf(13btG8O*6MwnJ&d#F}-)@hG}U3KTUai+6u$XorJyLI177s{70~@ z^cD6ko+u1|Zkn*`_=kGYP(a7EHlFJpQY~lho%;r+A z4d*5;dXk&-)G2oMxw&ky?k64RJ=*W9Re?rxz!u|;(j~@^hyHE2wsVbNQR@4;r&C7Uf^y$chcw?rz8wz}`fmB}Fa4lZyzf}Zr1za|QG?ER>M?cSuBQ>c zZI2*)yFgIxJMgIHo5*)P49W`LUpgO?))enM1TyJ;CtB2?^Bw(>x^DsHy9P=s?oXN^ zDEIA=ulXkOT?T`)0^g0$D&DuxN7Cxk`;LGs#Tsj)ARZfuc(C=>=H@@_yamRwm#vb3kYV6i!j?w0~`NqQ|rW^Bah8rUsXBlI@iZQym z#~B0KtTGmKS!-PIV4ZP)@h0P%`sLUlc;8N+G}pI3 zTuJZS>$tk_sxt`RxlmHkw+VuB-?g7=zKMLN6-tA`_@3E4(0GI$Ym8bw);ND-pz+{> z(Z;1y1C6=|)(q z8^_zNSi#3Ei03;^OyDmzCh(O-EBWPFtN6b*uIBUCCH{N;Kl|76L(NJ2jml&`idn}q zuIqUl-wpifppE?YH#hO8!Z!2!CU4=z`WetF-gh}<()+eK(Olnk26f-UZwTL!P*Tx% zJOt&w^G<5MiF^kehHDb5Wd~b2;VFO<-Vi7(0mj5c05Jo z``&w{d`rLlpjEu@SjeRJoo!Kr&Ufl*b>G}ggm2p-gl`uJ%6$iZsre@IT@Qo8yuW-L z4(HR-n&N$jKqkHKM2i}9zN62m`wl;j@LdBX7567i5S07&DA9Zq`7VP&VSTs!_m_>( zD&Dux8EN(DeMi8RVhuXqLFd(dS5+W<7eh%!-<1%Q`?fo$`6lvR0E4mu-xbg*-nY~F z=KA)BE9rfET~PNe3`h9Rg_4TCO%Rm(uKh~$P2@Z6YiUqc;M)ML;(a$jCjIl-pBk-zBuYB z)KBXs9PH9VaCy^Pu$k{IJjM4CjwH4dmbbrY>bK_y)3ZSrOh3I+VS1;w*!1C!C8mL& z2OCct{f#c;DraN$=a{+vfVN`wrnd3E?{uN-Fw}hoIbdUYX{b$anB}M7}4z zKZ5^bm5!giZzLZ!$DjY_DPR8Q>i_Uw_n+r4v>VJndv+M_^4ehj^)=r7v)_;4yLBAJ zuYWawPmUhL|DHR6ueue&fAvQM-*jpwf344S{#5i^eCze0{1f(*c|*n+-rGmdr>z{! zM~r`-zZ}|^?=j4Szj5h5{O-@a_#ZwV!i)9epjEu@Ldc}|U2Rc=ZvS0cuI}4)C&G8Y z_tFX|`VNDj+;{Rt%{P&6?{XsFNsixf_dcxT_Qqb~DyqKXI?gKMuFo#!8gCf6&wt#< zHTB%cO|oCc^_djG9a&PAnP6wRwu?#!PePetI~PGmebo_V-@N9gdmB zInP|ceaxqFKPDaF`mZo>7uTA(Yxj$|kqb&V;rtnHev`mG|IQKa@Hzu0)(?eN@xId` zliqicMGZRN`IpswXZaxZ-|jyke6tXg`;NM#`6lx1c$vueD52H z=!&}UsxAoM#ZXewcO?YnzU_Y1d=vRDfI(q=KMqF)w2Jrbbfvkz{ozV_-(J_$eP?w< z_|AorioQ({l>4r&)_fEBPP-}%3hTS&zrQp4$ahSw)%ebUR`I^eA(P&>&2P>1U3Wv>clbYu&rc$uq@wS52+Dou zUDtdQ`3}BeHNNAZRlM&)$fWmOZBc`6|6O`p-M4TB@%Kvw+>};8(RUaG<-U_|X}*bk zd*3GV{ne0X^wmS3(f_gV8GZXwC%q8qq+dSSNq^|euKKFduKJXVUG=#sUG;rebk(mq z)Ky<$>Z;#;rK|qCE?xDD_dTuOe&lKWdUq#%cY~9D`gkY(Dsxx;!+Txzqbs`VnGH^Q z!z?HLm!q8Y!{eRw%d?#H88e>Im%Q$v_w3t7-+iyWUaTJqt>S&BLngiNB8wVyzVqwU zeP=l$e7oO4_+}v}_Z@Xt^G)R2v5v_1gKh{s(nvu)ow!!CUD3>)~8f&I^bPuZ>ZpR==n zJHa0R_*3>t+k7^D?-BO(-UryAeFxbd4-c|eD-W_)&mUl;n+~&cdmdm{8Z+6U7js#$ zz8|!T_Z8r*xs`gY81Uq-{cJtL;M1p4)|XUAGHH z!#3fCqU}P}hTX!myY>qgKFSir`p$nyYl`vXg@Ldcg6@6Di zQ109APt7-x?*bSU)_2Pv70@c)x6{Ms`u2w_>3w@Os{3}Gi13{YB^7;}ASm};`& z-@k@?JaZlK{xS(lD*DcZpxk%KKbmhM-!V-@z8{Ap16sxVE{9Bd-!@EJrWM09!*^Y4 zgzrBQz9XTeqVISJ%6;dxlKOnQ6~ow$o3ZTWS#xL1=>@A~C;kfH$Xju0s`!tS8rK$z z=LgHjI*Q?}haKjN=fGv9XT|f~hHcNaW*BDYk}0diGk351&*Hf@rgE5g+iv;&{q5p; zX!OiF@mzK1`3W`*!z9nUl_#DD-ulo+Z1RWMi^9co!gZgM;@M-?Ury~9hWVz(7$csS z&RlgtJiA^U)z6k;n3C!3lf?6aU(f$4o}ZbvMQ6t_j8GZ8OFT!t>2zN_cdED?Bu?n~ z)V)Wp_HJu6zC)o^yzg|#r1xE9QG?ERzMZ;nW*%by?cNUIn}wjo5;7L zoz?jEgI4jrVb}G0B7EDnNBDMupxk%h6Pj-#-}Nvk%>Ja|XM4Tp z%TMZ?0-n^r-2O>@zao3R%akYeTgN`B|N5@I{_oH1_5S(x`aOs3_1pn_efwN{{qNcK z`u+Rt^`pky>*Lzk>zz~W^`ES;*SGoGUVmnhz5a){?e*=C+w1RKx7WY=i@m<{2lo1x z-?P{E-(j!k((U!#8f^7F4l(*FueN%zzO%iwrg+~WkV)@5(V_;O@92)|zJ)=E?{{jT zq~iXh34(Ip9vw8_M83;lP#E9crW|FT2|mX1!;Y~}esq-m#`!2)J@pv-jqVt`Jnkra z-}Wfm_{R};`i&!OO7#);`p-w$zCRveel2>V9={j9@-9qiDzvskfyBeaV5 z?bA_OeR|&!aHUv-&UcW5y6>zZ2;ap}QqgxM1m(W%I%&R%d>6o=FuryBGlU_xGlZY6 zWe6jL4B@lw8A9&e3}ISrhR`oRLs+yqL+G$BLl~NrA-u3ALolw+5Z12B5LP8*2tSX@ z5Ndm72;7nk!De=bV0S!2_&g#*NP06v2-uV%Y&w!59L>!T=B&&RMl8<|f|g|n9p1?h zZrEiA^Ii4`&zklKV*Lte74O^0p}D^O;YxbnUR~6E3l0e1xlmHkw+VuB-?g1J-$cIC z9Hl{Fd_NAKpBSK3yzd6cq07uTJufhJEkk4 z@0LF@pjEu@a>%6jZR6Bj-*wNb`*!^q_4zlHRP-GWLAmd|XEfhLzJs47^4%_?AJ@{a zIA|5`yAU$zeOFu5pxb|!_E7g7{s7@SpqsP;ioU}jDEFP*UGq)k+q(ym@5kW?g;w#t z(;<`IcacR6I^X#&>b|RPAbh(!BYd+El>3hAsre@I?dU@2yXF7?OFw88?>iPU>3wHg z)S&a7+8g292l4*W))nE~1%h(lfxR@}M84}`P*(8%(z&;^rg+~WkV)@5(V_;O@94hj zzFkisp5HZ4QgMIM1VOoP4>!#>k?%4Xloj}HgjVssefmnPPwzVdt`uv~`3~|>_br4X zzP~Jnl8U}7At?84=dSrC@?8Lf!uWRaPvP@=r|_XKr||Q~r||uIr|=npDg5$#$^5Y~ zDg3ZMlKH4x$$Zb?6rOo0g+JCKh41E?!p~|<=C_|u=BLk2;p>;C@E(g(_^Q+tUg(j+ z`v#`)qn%Uu5dkTD-?1tD($OjWNdFXm!;%y}IyQy(n3KZq4Nc*XPfFp%`W4VB-nWxS zbA9{6mGr*7`lAs$FRyW^#R<~oyS=|HStnQD~XLUJ-vpR?4XLS?2&*|PD za!xm%{Yp1CqEt8X$k#ftz5!ar`)+_t`scS>KWQBFz8(6j`_AGJzLTJ&qVG%y%6*so zNApeOJLUx<-vJdlrj$cDrjGY>Og*pXn34|WnBJ_;F})a>W9oe^$CNoE$24zhj_IrV z98<=v9Fy1kIi_v7Ii>|MIi|s$Ii~T?>^FV(pZ%tvpWAPWnY`ch(fc{3x31)vUi=`( zl=f?mDd}2{>BFiV)0T=H)8gm%o6dUfH<^~_nZADhh{<>GL6cZN16sxVE{9Bd-!}c5 z>$`5Cx^E8k{xT9uD*BFxpxk%f0L?d%@8E$%z8{D0FXNz9yzfHDr1xEIQG;&(UFxmw zn|TTG{0{JvRzT5r7zE|MlV8+)6Z!V`CiLC%M<}$4_ni)z^uCKMYS8)4AENG?TZ-`Q zJ_zBPg`nJb)L_jwk#EN#M7~G8?!mS6%MV(``;LW7df(X=HRyb&4pa9X{u|=+L0cb$ zZx;y4eFqNJd=vSuhe2W9Up@|p^Dt>m@xDVKliqitMGZRN(Z1@wg*k}N2Wz0D;{K!w zf^y#;BQ)PczRO@xSl=!G{beJxiudi~E3H1g?+Cb3tU>2Hh*kIPszdBgilL;U?@9>D zecS0Y-$cF(U{F@zy8>Fp`*vcR>)Ri$r1$NmSNF}tB7EmUNk!i#2+Doea++@<-)X!w zC@b)7fL8Io8z7VZ`R%5c#zF7fVU)V>ghdG7Nl;SJcP0eozDq`GzKMLt_!IhW`6B~b z#rrOYOnTooqnhixE&$=%4dFWyN-Fw}hoIbd-e}D?k?-IDtMMHNt>S$bLMFZMYKt0l z`|r}R>b`|rh|f;~0;LsD^c@C4x$opLnr|ZC-eaxCcPO-q_ni)z^uCKMYS8)4pP=qL zp)Q6=n8q-{_Tuk?t;9dQ?cYDREm-_l_i+f{ECl7gqsD8#iF`XwAoShxpP%?at9akB zkV)@5+oA@Y@6<`^zN_|cRrhT>5#ieff^y%1FKNDseAmOEFz+vY;sy#W{c@fpttsAj z2xQXxPPC{&=Q}!B-M8yrgzp+CsklFBf}q^D$7Ibnk?%4X6vp?nyW4Xu{c40(@xFb6 zrPZhR9RXL0HRyZ?y{hiJY7%09QVb;(eOE$I?%VDa%{P(n0vHs=_v3I>K&yD)POmoC zw?AA-@7wD&b>HEoi05}MlvMO>f}q@YZHVTZ$amTlX;4_-Ex-RZK&yD)4UkFy{C0ay z8V9{^hd0!HyPiY%PJ)t(zB3^x_g(V3=9|cO%v7uKodK=leV0Qfy>FX0n(MpnO?BVQ zLxk^0D5>Z>9)fb;d7+wbBHzJpT8-~GXch0f5Hjg~S6kGe+kcl%Q}-=AK==*_lU6{{ zcNhfazLUc>-$cH>rxE%7Bt4P;U%!F|uj4l^*v>D=-SltmP-qqJI~_9VeHU5Op!1y{ zq3)YIgYfPC7Q#0RLAmd!>6&jM-;NPPzJISDCj75o)2h~)wxsvrw$1%iC)W0ZR`I@L zA(P&BwnYs(->H%6zN=8aZD$~SyFgIxJ8-7vo5*)P3<~r9a?koD-2eLZ*<0helfCY; zqgwa-x3+Vnw5E99A&^P$JJF&Bo$u(k)qQ8}Mm)c3prqpdqzQs@-yX9x-$cI4U{Dy} zkHi0e*$A!TefzvEtvbX5`uEyc5^h}M7|4PP*~qB ze^fxLc;8NQo9o*juB7+vwLslBQ-biF3ndkOn;&gAr`DyNTCp+%z3$3_c z!tSvrsv6lBZZxr-d;HBledQthguaMP8+w4oeLy$v=MB&OG-VH+xENZo>{2&Oz_W&AIR#*OWS(`~2(zZeHpUE^EU&POR^|LRwS2?-0nO z_nl}_gU)yKN`&tXh@X$Gfs%^*lO_nteS0KmzKML7!Jsg{7gp`#T5Wot8~WAg(A zaCd}kF19wCn{{+Q_r!z)+=qJ)a^pM>bAJs##O?m^Ah-DKL)?V*hq&A4^Er3-Pq+uy zk8-|8a<~~O+1$$9{oK?+c^tDim-7$F;ZmYM;9l;N&0WpO<{H;za~CFmz@^{Fo-Zg*r_8s%eW4FzY!MDs4oo<;&FS~Bu^2Igt{Q7Eh{FPtL!(FP) zo^z|sU4Fh|zW(7A^Kbb-nr|K|H@69_G>^G`!#w1JTjsR5>*m)+)|xj3|7IRA=cd_q z(jD`1zuRWtCAZAx{kP2T#NRP{w7qAJbGTwoPcxb$TbG%|`W4VB-nUa?bA9{6mGr*7 zlGJ@OUm^AN&ozIOOnPx@7rOW zy6>tO#Pd4|N-Fx!grMAaNwVgf$ahQ%q3@PIGN4tw?{dhb_ieMTxxVW*AbgKQ_>P2< zioW9^DEFPWUh_@lJ9q<;@7T`C7g^Mx^PRs{-FL!1gm3pP2;VFO<-Vg* zHQz+O9k&wtZu##o{h(F6?^wvB_nmD~gU)yAc7*S6gm2q4gl`uJ%6$iJ(|i;8u7^Qc z!TU?+?b4d!eTP6Mz3)Ve8g#y+cdGk#O+omsfs%^*lO_nteS4&9zKML7!Jw?bcO$fl z_wBP&T77!o5pbnggU)x*Zgt;W4#IaalvMOx2|>AUyIq=ZBHsltD2#8{fwAUUjf>11 z&Mr3J+`HU-U`3o+xVy~!QP6TT@3_Kjco1*C=bT{fty^K97#3%~y5?Q;Cx!2te`4az z>({O{v!@cwqvkF#cVg$8H{FXd>yE!;zI@?bbDtNMoBJ$XZWiq0%+I_QZ+>do3iIlb zapv_`W6f`+O*fbK^fedM1e?YB70@c)x6|(C`u2w_>3w_cRrf74AbjUSNk!i#2+Doe z?$LY``A*A_28Hqcd5>Ov+todI$5}o3J}>v>M zdEdOqyMHl|?{Td^zwfmHeA$J;eEofv|E0qSem(2Tvv)i3V?4X_hq`(4mv;8&OICXF z7Y&|#Y@cx-hI08UkBXdnCG70#rg(l74N$NGU=b+ZhNJ1 z(EE1Sr|!F|6XN@wBq*uqI}?I(-zAxvZzA6@Swy~1&q(2SOit#vUQFh{yT6{F@zh4X zjrV%~tzH}Wcdl&YZJylBpM8BZZyvCTKbgOgPYK+}kD9rWck|!O|L1Hf&%eBdzceR> z_g}k)XNM*8i4E)d)BkMXCsnWK!@gV3#~L>9MQt|mQ&TqbP38^!gLNtV&9(3H_Y9Nx zu5Zrf#rhf0D&BWFWYYV#+1Fg(bswnv4*v-8{Emc@ioW9^DEFQBzUG_Ackl;9z8{D0 zFXNz9yzfHDr1xEIQG;&(UAkZ0w`*s_^E)70S^-7hVGxx2PR`MM6Z!VuPw2blk5Fh8 z?>ikb>3tVj)S&a7e?Z;0@HgW5?VgM9%|cM_J1S4}P2}700Fm#A=WMx_e)&PGc;B&* zN$)$`q6VGs)Whn&nH`Adx9vfMZx;y4eFq-Wd=vSuhe2W9Up@|p^I>UC@xDVKliqit zMGZRN(Z|$%3s(@&?;0qnxIbxvpxn2|QO!4z?=lz^)_2Q)f7uAF;(hxZlUASJcLZE1 z)}Zqp^pU!6<`0DLVkoKTyApzO-*)+$ZzA6XFeoeVT>-7)eLH>BT;Kk1CB1L2Pt<*f z*CTxALPf!uyzd6cqFVH5WbV3 zq@wRk2+Dnze5&~-@*Pu1=)2{Q3}_YayBsp?`40ZvYJA5*t9ajqkV)^m+M)*C{=3wm?whGX_zpNBt$?EMFbK+hC!f@O6Z!Tw zSdH&cXcg}}9Wv>C7g^Mx^PMlK`>skyd_L%IMEGVQDEA#@(tH#7b`%JGxBTZPe$Xo3 zcPwPm`_8tgLFYU5l)7)`4&wQ3Yex8XfuP)X;1`;2BH#5eD9roIh&E3OE&XynC9Nsm zcL-$C`%bi|LFYUAw7T!AUl6`)prqpdqzQs@-yUCTzKML7!Jsg{M|Za4Tl&=qt>S(A zoR(If-gg9CDb}F#9dt(Bcfwx?-^EZ;(RU>T<-YAoG~YzN3t&(f-(|Z~Mzr*+0$RoU zb~@8s-~MnVy>GAc>b|*hgzsD^sp#7TLAmeRvzl)r-)ZNhL1BD94nIF=fL8Io8z7VZ z`R#UI8V9{^hYRYyT~VJ8CP7I>-FWf&GlVZ zs_t7jfp~sLLPL;OI)A>MPqVg3)(A%6efL;UkWdHnT{4)Awo9_Gh+9pcAy z%Hz#zbNPz*_VdG@$>sh3-p@}?-Omrdx1Vo!E0-VTb%0+HmdTF|UC(bQNaw}+q0lPc zcRFO!`!2GmLFYTa9N`=F_cyqIkMPYxQ0_bGqUM{(w_`bx?}Zt|Oyh%xn)=2JHT_vI z)U-N&sHx!dp{6B&3^vUw8)RDc^^2z1&z?8M-u#d0&K57z1A~|8T)zP(n;`>C-JOP* zs%{K1Wn>IDWn~UFosS)6y4rE5iTiDc$!5kN)A!v5nU>vp(ezGxZ_{Tz2bnH)8Em>d z*2nbM1$R?bdplEOj~*tmz8|!T_Zd_i z&e>!9d*>SCZtpe5gX?z~myg?O+_Pn>F`&G&vF}=26jKM)DSebHzo2Sl{`ww5E99A&^P$ zJJF&Bo$u%hb>GZ!#QvlPN-FM8njk3m?eUZ5o5*(=3<~4>arpeC5n9Fj_NkCopWb%_ zTq)L|^Bq*B?pqKLzKfxxqVGxw%6;2aYQBkl7r>yfzFYpNfL8IoovNDa+aIo^_w98> z-FH<9!gnr|RP=3vpxk%uFPd*6-)X-}gTnZJ+a`o->6Zao#rtl6O#0`y+ZAaX^u8Ug zA$)&}@SOxD6@6zyQ0}{=TJufhJLW2p@5kZDfL8Io%OR8Ax6QTY`mU>0_syZ6-;q#K z(RVxq<-YT3G~YzNgKG(WxBSl!#zCui--VD#@4MQf2HpO<^oF``CI|8PNx*N?3Ml#x zgP`1Z@^#HOk#FxCR^vMqTE+WLhfI3kMHV&aeCOX*_nn3E?S2#Cn}wj9Z$W}MNj=Vh3@*HZvFJjfA`cU)OqUX|KX`W zci&V0clUn!(S!QyyWIBB&kyLSw;9q$FV=UilhzdPI|MT6eJ5Jfpz|I5hq`aq4-md< zprqpdqzQs@-yZdvZzA7iFer@gQ}xc=+O^IclkCiWyvCV(opt71s(W$WlAXEmuX=G` zB|39&Y;oqQwmWkx<~noB|L(=jJL=5Y<~noJPB?R$&Cc8}r=2;+^UmDq`EC_*FMqyZ2LGa8p3Y|VM3bolr;m;jL!TvcxSbfAO+&X9!8uN{U{$r!i z^odb07aE0Gf>8+h*eL86Y!J3xG76W?Mq!rOD4hPnC|o^d6gGTs6sC?5gxTXv!ibRu z;bw_J5bIY!t9ai|4bAoK4_DIr_Ijx9yUK|8d@vVED*84-Q0}|-f##dYciNxQpfJ84 zhwm>9&???{17y-azug{6Z>9)fb;dH-m>iF^k)5&52W-HmJMR~)p8_gx5? z^uDVtYS8V!OIx>N+As{$lVO;S{JdFnr!AT_f8NN&3zy6o@45uxJAi4&v|<=#-(e7x z`%Z2pUG#J-hOr$tW7*5I=FXVY3!XuC;(rc~ycMUWivKvNac!Y^ez1J3qZrP5*kQhS z4qR4xRy^Nr*!Em&hGBLtnX*bebN9OcES_s)Du;=`tS!I4zg;{Jjh4Ml6YS5>-k^B^E1=7=G53gzp+Cskr}cf}q^D#}k@wBHv{&C@b*Y2(99M``AmXPwzVd zt`uv~`3~xc@I4seyBJC;`mTha+_zl^%{P(n0vHs=cgMEDyl01CzLJ~F2VD!|=eG~$ z@2;54k9{VXzju2wZ@wGE|Fv;4Z)yzU{n97%506gfhaH;Cztdwff8^X`{{Lg|-lM9h z-addIl7P}AM8zB71qCxyM8g~GnUMmoiKuu9!9u|+0V;|iCnOJQrig~A2r3Ewv=mYC z0?bA+Fik~Fydh{PsChwD@Rp{W-RG|02G-yTe6$_hCuh z-P8H*?&(LmyPtby?_P1cyL)R_2lqo-RGy zXSj5C4;<6oef5j(?(4fcxNqt6v3vBRkKBI_w{TA%(Ar&}p97t zzO7nI`wsY2#zznH$aC%1!*` zPVVcvTe&CAZs(dcznvRAt2{T)xjfe_`DX67U){(Zwev=@In()+G3%Ah-c7qyr6tr;of+tbFd1ERkDp(ykn*G~1V$hS*-g}xjA z@`F*yz7wI7-gmxH2A%JWPSUq z_8kG8^uAM#GU$BA+e!NlaFFqBZY$&44vIqGULUEx75T1#g(7^ud>bxXJHwumefvTu zz3*6~3_9PTU1fZKCgZyjB1O+9^-vW0cI=}1R^+=F7K-S*@xR}xgHg%8UAr1~pWb&M z+^Nr?^X=VT+Bf!)@m&CsqQ1+ZDD-V%uliQxI};YF3HUCBQOUk-x;NCf2i!^T+u2dt zw}zGRod%JjzIiALeOL8ReJk>v;9yv&Cg3{`^^*3TBKPwX z9Yl)yPKKh;cVSP}w<6!+A1n0T_*W8)O7>j>o%Fs^loO>3vriWze0!i~36Y)((>K?b+L~1ERkDp(ykn*GKiO z$hS-1Cga-=MkV`BgidLZzB628e7no|c5s&Qji4y>9o$d#t;n~vi$dRx|ML?! z7?tch0y^n^ry6C@`Hufo#CAPR~?K> z_U$^zu>17B1L0162Ayy3q0+v~Ihp5o0Yr-WE`y@bx5W_Ew<6z}uuufwZ^Kmzqmq5w z3~i`y54e-ww=N^>VLf?gq>RXZTaJI?#PJ&U%zDuB!-nS{&P~X)a(!MoL zGQNW#Qq*@e6otOihpE05`S$T>GQOi=RI=|Z=%n{uVU$64{x0&A_FXRb{Pz6JumhsL z{h=uI9rwBFTaj-UPer~@4Cu#sOzp?*T-T4gaJe7%+e2rr_W)LZzB5Kh`%aO2emi){_(o6^`VJnh`c~xIdW0h1x2{Gr%nU6PcTdX<+M#7W>#1e3 zVztcO?J>+p;meu+ma)wA=_{C5zpr4lzpY?Cdb5JDdT%B3)8QYO=Qr0dHCN)8SfB41 zt^fDTh;y-we^4xQ^Lh;P`wlHrdnk(Ws*hr->y|Mtkx|SyHP3C-JK2pZF9TbJWy+*0N75T1#g(7^u3?2R$ z)^!a@;!H~v)$qmq5w_%zhF2i!^T+j*k2Z)T#5?=*-M_02<3=(}pX>RXZT zgb9X)BKYoBJD6$gR}PFy_FW5|^v`emiH7B%_iZ&<+IQz3GQM>XDe5~JibCIozN&9U zzQZRe^8GekNiZtecL{XT`!=22P~X*4rG0Bh%lHn0NKxO>P!#%3pQ8F!SI^P-7rF~-`8Q%{6GQJTMg}#FWRNsnxTTgE?zTIF{vhN7!r1za_ltJe^ zK2X}X)>p>2`ByT&?Vu?1?e(?lTaoV?SSZ5h%fGHZVE6X_hyCcMf7oR`{$cB9KVS!5 ze85gV{eV3-{sHSS=>fa)^?f$t$$d8Z;eGbF_C7nZ>^{4`>OMPX_Iz5jq+`P+SV*_RL4eQy7-x6VFbM}$0JJ5GAQj+y*`^$4$E1J++= zoA)YX_4&4ehCL9heNgMbKFI!PZZ)8^Qgeu$iMs1JuLI1nc8~y%GZ**{7AJoyL4{Fh>FPatZjI2)fMQ(li zq5;kOqB|e-ML~5RqaTiUMjs4wK>GYT7?teXHOR30^u7b(PJITQZ|~XCz5^!9_%47* zQQu`y6#BN9rTSLnI};X);QQqoE&k_MEoLrg@x62{{$r*V4_&Rr)^S?=-!v`m8KA`r zkrr@In()+G3%Ah-c7cG?WJy*uJXSiVpM1A{1 zQRq8vf$Ce4Ze%UlI(A_* z9gBl>?4`Ln_NOU2cKw?b?4;Q`wydv?{koZsZD+1ykIvGudH=3pvrTmD()lacsei3t zJ!)34&u{A3j4&OW+f2un4c4*!Ep%+6@r#Xt*(HtF0YmU4Iw?M1c zH%IqUnxo_S@1yu>&C!8X&C$YpEl?}37N}%LbL9WLIXbtyIXdx93*{-;ICy!Kh^4iO@;!JKrdS&UeOIY2N`~$UMIt z*2wrqP!#$O{!#U<$hY-cMZRyPc3>L&!p2n_LK2#zD~xs z9TbJWz2a5hihS3=LJ>Y+z73b{dc&TQefvTuz3*6~3_9PT8>M|~XUh1lghtIx}Z`X~6-KX~*2zTl;=zM!`lJ;FL_vb?tK%}VeGAIgt zTO_K!75UDDg=zx6OJP*9Z<|dG_3Z(7())JaBIDa$=J}llk)pnNC<=X7{jB;{7U>BTMWxV@7rpdwC~OrWPIx&Qq*@c6otMEx2nDs`3_G~=)3W+ zBp8+Ky97GveVcA;sPF0&Y2TU>8Q(z=De5~KibCJ%$*ONfzI{@fjPEEImFznUI_Z5^ z7-i6%zl(NC`|kXgjBn5Fh8+;~?GHtv@3^PNA<19cQGs!!S~;1A25yms)JFWLOI}1ALeODM|(4D`Fj!FC0{w?F%^N3*wM1A{1QRqAFsOnphZFy|9apYI2wl6@yaC%x}{qYOIV89CCvJ71IW?QmSi zH-e(jcW}1qTaj<;97Vog=aiyD_iiC`*T2!Z3Ad5|=5kcL>m~~Jyo37I|ASt>eu7-~ zJwv^}d4ZbcK10p!KSx`>szXb@wO|4UG-sLxX_!&d@1bu~D^aHv4^jHT$7reT12pZ{ zE%bDCDavxWjkff>gXYBDM%(w4q9J|Gp!xMD&?i$eQP;>*NT2Tpqmq3`KqtNLRHF^+H>_Be@`4>*Ab zr2dYpZlA&XR-MDIm?C`gWf5ju6yfu~6=C+%%h+=6-+0cON_=<4ReX2BX{`CI5C^nA zi$hZX#JV?s;3XCL`2D}~@Wgicc-w!caDSYSU$j1fZ`f_C1EZ3C*Fq=# z^V|NkVL9l1Tb-5m9Z)XgTL+P%zLTLS^j-Le>RXZT@H2{hzYSLsj7s)h0-f}}P0u#e zcl9}G-{qw;zJnlA)OR!#g}&4ORDCP*?Q>3{@5cZBG73f|`_6(+dfydB8Fc6Gq9SSE z+M6=IJ9eW}U#c7svLz9XQM-gl}|2A%Kt5^3MKM#i`KUoyV!peXe1by@YT z$af7a6yft_vxR2dU&qY2E}3SWQ@k0sY@Hc*WrG=K8E?j&m~O@;1(|X4_nUE+E6lhp zUz>4T0?oL0bY`5k*o^z%5;Jc0{dYOf)@I!3iDsO3su?%W$BdiS+>Co+ZpO73W5#_k z-i*66&Wsy9&WtPUZpQhKG~?z^GvN;X^N9V!^fjx`w=FU3DcQF#bkh5dHOip#9ePdL zcfd0l-<1$4dOoR#qR_YFRn@m5-^H*{1m8!(Oi*b5chDfachJAQ2|B@>pdZhepqVOv<&3U$4^7T+|6=AvcYS^xj7s+H zdd;x=^u7b(PJITQZ|_oR-`b}#z6&5y)OQ&ag}yCrsJ<2X&V+>`_&({3@S9BtA6SEM z@>GNqryyJsfbhVn2#;%n@NHX!*Q`YN!;uKT+YaF^?GX+hg>YyN!aoi~cx|9N-nzpb z`B`sSf1^j&pR^{vQvLYZNq2)^Hj?=N#; zRI=|{=%jys+m{=bgWk8*-_pJ{Ph@=SAX3zKG8Bcr3va2u75NUot?$a z()%|3yP>|T?@0T`k7RrYL8PefXebJOr&p-H75VnLqsVvdfLExoUr{hB*>@In()+G3 z%Ah-c7gb67?pz_`+w-nr2Sk1QLs95Eu2S`_$hS+CBHwSrcDD>U<-(R}HsAS&}&`Iw*)hL6`cl;x1-zg7d ze4GCx8wRo{wy*T6zGfzOw=j|_WC_U#Lu^uA+_GU$AVR!jRX|0P_bovzXN zG}r%k(1e{oYu>PhVT)$?=>N77B1O+9^-vW0c6_4xR^+=F7ODyOu7gp@zFn&gyHD>s z5bo4x(E0X$Chc33D&xBVB1L_dK~d=2qDJ+t$af|z6u~z?;|aTe(i67VjmPYvTaVe3 zcOJ750Z&-;;xXI1`4e{ZyeI7W7EjnS^^e&uA3S0Aw12`{w0pvq9(&AQ%6iPc>iUFz zFysk)BJBx#q0bX`koyyM)yOAo*sv$;u$zzBK4YJ-ukJo(TaJ3d_W#Q8nm6t~JG|db zwy*9EtIscmQOUk-o;B3B2i!^T+qqWScgjW?-)Rsj>YIn6(0A2y)wd$w2`>x_Mex07 zXEMtFDH+Xbmy90UCL^z|$;fY8GFsR#8CiHGqwRZ=QS%YW$a`oqdNw>6B~MI7cziP2 z@nReLzGfTxI3OAAS(1#B?NJg92B%@EeC8LuolTmJR zGFqFGjB0+}f=UV#kmuS>NS~hrqmq5sLMQ$6+rHMY9Q3}eUP=2dKPcl{2a%$_lc6Z| zUHGr+TaoYZmx_E3T@-^mhQ;7EBVusH$QX=9$KconF?jK~80j>o%FssPAYf3Vo-)R(&h-?ej*F@3-Om%P1I?>^loO>3vriWze0!i|VC)r|gz_etXs# zc0km(KNN+&@sz()-Rg%AoU|@s7EsnMR}eNTboT)c=HJ z`hr;@^Z)Jo1G@BMpiqXF_&pY1K zzgLBq4buN>t$Vs-qyBwh=*(*Ud->y@qfIp$P2Bv4>H7D+5BHnuhrBXpL4f{Ud*3x% z|L!>JwT+oZqq$I-8?Jv}JTvCJ{=M^^&w80_G@8P%-_z;ezqx((w*I}{^mXnQ8jS{* z`E1s|2T!wkp@09d^qRN+32Ads&7Tl?;2Prg73HCvVGUEr)1y0&`Iw*)+mF{ zcc_K5?|^g}-<1$4dOoR#qR_Xax$0Yy?_yXeqVLB4{<026CHr=@Fzi0P??AXypF!u_ zyScRQ&O2m$7eJ(_?=mO~eOtV*`c~vS6Beoo_%4M}$-ZrxH`KQW+)3}-xuvvkEay87 zB1L`kP!#&EYN7g8^2;(m%iLTN;*w-nW&Nv~NcC=id-1>N^>V zLf?g!s&7TU!#`B$yYa6i7?te11Ul(`n_4y0ceS;&?|`3W&L=?-De5~KibCJ%tyJHN zeEV288Q)PbD%p1ybkh5-Fv_4ie;2it_N{qW=KCGb)`lGr_3aNuq3^ghs&7TUUD`Go z-+nME*>@sz()-Rg%AoU|(O%j&b`RHRq<;ONgN=-D1Vy3m;C8BSMZT@uEA-v?KR7+<;{9J4$MJiZuWtUr%;bJyj{cg) zOtIR{?3(c#vu*PMrsc+8nQ4FSVVoTHF>LNWrswp1OsAXwV}3fE%3M9Xo0+`kFtes* zHgmH!hgrY+1oQ3VlT2N|d}c|Pe5U6L%>4NB2(x4O0p{-V3}${p2J_j!8H_&P4@M>X zPJ~W+-}y!vbiOnCO8ZV}E#upvw~TKDMWOHDKB{j;zODNz@?EuJJr3Fzk0<-D$5YO) z#}=#B;jSP3h+lO55l60Ai~Sd@!!0e=Bn0Td^L; z%!|jhO@^FYxyChnP)!im!Au$!q?bS>CyJW_h)q@8oUnUXQiEzQQ$QUgPe+yudxJYH(qP zXLx}3Q#{AJ8pl~x;}2}A@#u_aI4`A!*-C8yVj^h!pjm3`L>uLO0d7 zBH!WeihREfR}zd$_FV#<^uA3|Lw#4XGQOM3_zr?dQQy%}6#7nQRNsnx`>+aqH~#mR zQ7|gmcNTQg`>rs`pgVsTc}V-#_LuSP$r*M))VDtrg}&p4slFBYcJXL3zWrcSvhPIb zr1za~ltJe^!&BNfMl!w~K9li{peXbm{JH8|k#B3yCga-;MkV`>fKGbfsYV%ezT-zo z`_{V4_%`>F@ofi1p>MC@s&7TUYha-WpD)>|8@S1f5;!(yJ-0G8p393_$3?`f<%X>M zk=wF$4d-y;2X21-YVN$tv0q7oV|3rTMFT45c-|pc(W<~MW zE`;+PZXDx-zPrVvqKo|MIhXjz7u9^h)mC`6sSEb|-WeCS>xe`C*9PxmTVq?R7Wg+? zD?DoPNBGPCKEW<;hG2bu9gIr$?K;}9`}Dp8;ZA)9op0~4(!K*ek?~ysk)poKpeXch z@rCMJk?%}cD1z^I2M1thzs1<>U<}^sunPb98M-#iqBzN@@d-->)Ej5910!S~zn{bde}O7>j~o%GLddmqDc(EGNUDDAu4 zUdFc$B1L^CLs96vaJ=eUk?-&c3Vk>Jl?0=beV0Hdy>HWr4fS0;NyfLEjPD?b6!jeq zMWOF>U)8rF-#(KR`QFg%9NXBhC>WLOI}1ALeODM|(4D`Frb_$P$bG)_oNU+uQQ!Vh z6#9;vqWV_k+hwXE-*3a^2cwdGCqgH^?|h>SI^P-7q^FJ*iqC<=WC`>DPa z`L>>>(0Aj1f9VFJl6^-&C%x}fqYOIV@zbS!Gjiu|bAK7%c2E@h_6ksaEAm|f3)KWZ zU)oML>?zr|FLcuTjy1}l^Bo!}?Yq36%%5LX36Y}blX@r$eLH@w`c~w-7#6At_^yLd z$-Z3!4ZBb8I}q;FXVCff4wCk*=_=#903t}}k z>|uAFAG15)Jap(%lc9f2a~ZniLdwwCQBgw^wtF03JEKMR@x6D4j9{3dZ8T1U_beTn zeXP~`?4Qk-XQvMg&z|I$lO6iWzu9-=Z)RuoevxhQS#5Ui zYi{M$bi123XW6a1l~b^loO>3vriWze0!i^8ORYX`~r_WZ`M1ERkDp(ykn7pnSJ zp8ggU)y8Qfc4XVKTleAyV{wQV&I;Z^ua0w<6!guuw$bjsN{+9gIr$ z?Yh*k`}Dp8;ZA)9op0}D(!MoLGQJBSQq*@D6otMmqEz3Cd}qQ!H38qHFe=%%&9a92 z_JBL-eLH_A?VIT><2wx^MSb&76#A};R(&h-ouD-=R1@%>1EZ3C*Fq=#^V|MA!*bC3 zwu+VZt&#iv4LXPv^_>hwq3^;N)wd$w;mZ~IwwQgGpFVRr|9JO8e)@+8_*Ngp@jseI z@prgu{HiIHeA?kleDC4a{KDfO;&&%^!v4h;c+K2We%yq+{I0d{;U`;~VXG;J_`a97 z@e`NT@cXv6!YjV{lmB#W7~el~B7aXeoL^%zpC21DlV3f2DqneN6<<0xKDQ?55ZXFm zxw}3;2}ULRE`d&Z-=?t*^uJ8j zQ3pKq=gBzd;&{w@d*EKb^})k0eu`%%w8h(}Pv=)%8;rQ6cThNfgu?#5f;zTdiFS7j zbN{7ZoV(4-UTBkMHk!L~EPA|g4hpJ|M_;ZQjNCe`%9;81E`I9Ockw@4YWVA?@AKzF z+v389&iK>o-7tD&iOYRzczu2pj7s*M1)cQ1D~vMe&fi5VrG0DU{(NLlonZ$=efvXE z=sPY>^{vRa%SuJQ`^>tB`rNW${vF<&2^rR$IiKy!bg^||wp_7fhP|poyU(9M#S`Zu ztAWSeZ|^E|o4+XE{lMm{?qh~@bGMkhz`fts{n53#Ezm~~6LY72(23uxi*`R(kcw=6 z%0s1R4x_LmXHj+XU1S$jiSpmQh?ahH45jZlh@uDYLZw9~kv`uKMkV`BgidLZ zzB7K1@!e16{Ozzx#y5hZ(0A}^)wd$w);}on{Wg4m=?0^ceMdkiz3)_`3_9QOYo&b$ zY>+vhn6HuXZ3ji6Z?7L!-->+Kz(Nr}UpD?_yVkI$WZ%BfN$)$>D1**-=z3}2DPPO@ zu7pU@^GQ7vg}xo*Ro{wy7sEmkd@mi*l5Ol)9gIr$?YiEu`}Dp8;ZA)9op0}r(!R?V z%lIyUNKxNqP!#&M*r57W4fX8-chdWI-X!f?6D;F94I)K- z^H3D}uKG#!t;lymqG6$kz8nAh%N!V$?7J2^>7U>Bn+(fA@7rpNv~TSU8Q(gH6!o19 zMWOG)pH<(Ae1~stGQN{wRI=|9=%n{;x}~AMtCOUCm-m$U`AHB&iu#U*qR@BxR@Jv6 z-#$rA#&;BqO7@)vo%Fsdj56rX-$g0Xz5|?Pe0y#)?0~3me<%ul$0e)275R2aQRI8h zJR2_HNL#LOe_QTVz73c6rX6=Sxg$4wPABf07oE6gUbbBFsZQKAlTO^ql#X2XqK@2z zaUHoxpAOvPS2o=0Xd7H6 zK~d;Cc!%m+k#FmrihQ^GVgSEm%y9nF2c!9JW&wQo&tLEl%UJ&Jsjj@eof9AM+=V~> z)c}6~m4UpyryIY%y(>TN#-}_E8pQuQ$Acd^yfxqX=9AoZn?B@Q9O%t&wd=yad%}`O z+cf;H;`-d{3qIsc=d|FL4sXT(cf*38)XALxZ_Jb2xifd=uKDCuu0G!lMkV`>fKGbf zsYV%ezTMBWRNsnx*T6y%K3}#v{yB5RVl>m*eGKy=YCO|6 z+DPX8&0dV_*3X!ke|R#l+j=qIJo92Q29IDSczQ9nKlWlgvb>o786%mV-G(yN zuUwesAw!t5v|)^YYs9=R9K`gQIe>X!Ie_Uhc`$R{b`Z1R^C1ksejqci%Rpuu>ceas z+L3v!bz=1Swz~{_O7`swo%FtAjWXzbhwhg4-Fc?W=gUfn6g{8RLs974FmX9pcQO=(z6^l)U>3!!LWzhM~ zI4148e1?o~ha)n+5fp{KgO94d75TP4)?|FU!Kh^45ztBRJJl$I&Ubu{wC~PAGQQ1^ z%lNi~qR_Wjw(47v?;2Pr!spAumnzx+5-ZtlAthbne`L>0R< zyox>LSH)g&tzs{AsbYI{tztiFQN{X=uVP!@t7NO)E7>ovRallzY6eOLSN zNz8cu)T#0Oo0H@D?rszK_Xkbjd)Z9jHs8hTW(49SC>oGw6JKpOp5^%$D(80Fk1;%b+OqZE-^Nt;lyK zEEK`_yB$NA)YtQwUadozE7#{U``d>wFFy}q27DgEObZENuFnf$zWFMIxjiO?dCY|{ z(ZfO*ZeR$r%P)l4-#vtx@aKGHp=}6L?-;^tDVfjIotn?Y-kHzXwFzOybPr+9wF+UL zwGCm;bPr+ThJ-Mw9YdIo8DUK9?In!M>V=FxzZ6C#`?fjRP~RSKC%tdy-=%$PN6Yw5 zgGf=|JQRh#tMXOfihL)WGAtCq_uKIOWe$u=_FW5|^v`em-wn$_@7wCMjPG$WzI6~O z>N^>VLf?f2s&7TU!wVJqZu~0=MkV_$flhkgrl%X~yZVf@@6MBCdf0ZRLf>(J zs=gKZb~&fW_uFv!!Kh^4iO@;!JKrdS&UZ$Uv~OmjjBkhYGQJTMg}#F?sJ<2Xwk}fW zyYaujbc0dJz9XQM-gl}|2A%KtOVYkm#>)6MzbNC|4vIqGUd5_!MZRlbp_;(wOWR9^ zJth10g-&|ku|^qmzC%l-eV5Dqe6SKCMb9VoP!#%hysY|Gr0=J{O!k)poKpeXchaaHxL$af|z6v6imr=x6r$`N*q_6U3F z`VqGMwIi(k_@iug^iejU`Y1c-kE5)4`B8Sn@}um&Q%BiFDM#7vM~|{wi;uE%JdU!# zH;%Gho*rd~?mxKP*8M1ZMthW< zzwi*dZ}P9~wsr?teSRs7O7?AYt)ad>;7)qq&ZW}6%NNM_PJ>8M-#iqBzN@aQz7_dS zxM5f*f^YZJ9r-}Zj=V`l2Y%+49r>42I`Tc=bmUzIbmC{8?Zod$?8Mg|?8NsU+=-7{ z--+KA(1{PzcH$4EcH(U+JM!%QPJElQo%l}|cH+C_ci^wC@4&Z6>cCHDJM!K>9r-pB zJMwd8bmUK_b>z?IbmZT6?Zlh;w&O>y`;hNt*@oBW=fJ3B-?h+5|NOQuH7p0cZ>w@? z-<=o9_|`$BsPAMb3Vj#eRDCP*9bTr$_x$<-v?s6t&0-2rS!x0D+F5|odlsVVNrh3y4)H`I6aZE4>rQ)GMxL8PefXebJOr{7Y2EAs7gTaoX#;rq)d7?tch3p(k2R~Ti` zoxh9jNc%2dCga=lZ^I6V`u2yS(05#g>RXX-mpcl5H~!@Zqmq3mLMOfNe4`9H-x*cX zzEc*<_;$D};~POy=sUPl^{vRab(JFDH&;0_js0?iQOUj|pp)Krs!;}=@AwDOzB_M| z@oj!j#=He3&R%87*(Dqdk z@5BA3`XR5(SrDLq*WP!{*1tQ>dTnE-(P%DI=7#Iv7tf42uYd1+=d)hs8jYs#>-Ti} z_it{Wy{&(5H+`MEg+`;nWj>qr@4?e-Ug+OHEWPHf|1aE;soQ?lzXx1X=DP+KitzdJ z)aI$Uv0t|D81|Ix+ZQ_Nea9MQ(D@F1SK4<OIxBBHsz`8y1S_yYbK8 zIWQ{OcP(_%Kfmpp8WLOI}1ALeODM|(4D`F ztYv)5J-*@SS#|~?wKX$p4F18+1Zj?JlT>P_3ek;fS%S| zylZPNZE+hES= z^Zj5{vhPIbr1za~ltJe^qph^>fQ>TGZ->@0z7Z6KzJuGSz7_elZmY=mu&BRy^Uas} zlcm>qhhbOwW9gUq!c&*|sI$d<1b3bf`KgGn3@_qe{C%Ep<9nVz^6xqRVD6v%m4G6? z@2Ly?UGEco^@&3M_l_6%6UQ&{f7x8(>xTZte|7jT{!Y$C-nz>rzTWmS-)s6M{@k03 zymiG{-t5zU0QMVN`4gqfZrF;n}9XJ*>)jNe|K zsd*1G{W|bW8^>HGXZCUCr?2vv0@usTq~U)u`h45=hCL z%lNK@NYV32Jrsq$9XqPN75OfPg(CQV8-D*~9gIr$?b^w(`}Dp8;ZA)9oo{bDY2N|A z$@ngSNKxNqP!#&M_(=7w$af|z6w!C%U!^cA*|&{dLw$R|o%Ft)yGr{`c~9p5Uz`S! zqP}@33Vl~~R(&h-ozTUwPz2uz6DBZ?{mOw+$-Zl$lm7W_-_@`j^uDdSOZ)CzC-eN) zL8PefWGD)K7j{#9EAky~ugLe?a3#U0WZxywN$=aVdqaI!J4pLxw#)bqf=E%{(NGln zPVb@mR^;2qL80%)|Nb%xMkV{sf=+th6-F6!=kKDAWqj|K@$Kno*a1=B{!kS9j_axV zR^;2|<0j+V4@M>XPJ~W+-}y!vbiOm3q zmFznLI_Z6<8fDP=j_)h&Tiaab^QC!j8Q*qL6#Dk+qxx3ly9O4D@cHs|Kt5~jeTu#A zbBgUW_7wZ`@Kfwk<`mnt|0y=B$0>GRyHl+0{Zs6Qx_p*-n$Ny>KcCJ0JD(j>kDM~2s&7TU zi(#P%zB{k!;P!mBwc9}tYqxg-t=%e8tla{yS-btlwss3lYwZ@=u8rG&F>T!ZYudOC zc5dsIu)3|=cd2dNK3m<^?a@ISx1Y9mce|Wt>lW$Q&h4vi?c9cqY3FupYdbfmd!60x zwd>#(d9c0Pr~BKx-OX?BmXgxmtzAxgH;eJUZY!L2yQTGxb<^k9!Kh^4t}ce%r}rHQ zcj`0fe0zT??YsPijPC-76!l#OMWJtt0jh6BzB6H=2);+PN<$kx)6uk%>4^P29c8$s zqf!0Rk$2a0H0Q%~)T=%XrTmkIlCP(s-G8Q`V<*zkd&kpI+3_@Vb!{5j+5Z>RA#N91 z9Fc}hBGb_8g=xq+C=G>bcA-%YY3S_0G}L=g8hY)ThMo*eLl%S5P~7xiQ09^C=*ycs zkv_i^MkV{U`LvX7y-_C<%d>703PJ>8M-#iqBzN=hS-->)E3^Xhh!S~zn{bde} zO7>j~o%GLd`$2}~p!aPxRN8mS78&0u!ojLU{uyR>gyA>%s;B1L^iLs95E-A(na$hVKXBHtlBU!lf+MZu_K-&xQ}@4Lb% zgYNuY#7g^SmFznaI_Z7q8)eY>&hU`- zo${y5^V@-w@r|G;^c_4*^{vRawTD9AjsN|n8;nZ!9RZ#6zEh1d=zPa}O8eGclJRZ+ znT&5cC<=XheXjaebnezLf;mn zRNsnxXTm}ee4nd2%!cuY*(ceD*$qbyvx|=(W;@$vv0d9{vF?kr*kK`AY{G;r_BcMw zmYq7x<`*1hN2eZUA7mV6y?Y;K|3O)--S{jvpkEeSxcD%8^uS@Z{NiDDRqrfTyY4W% z0Uu^-ZXae(|9zNUboVgZ=7TIYvG6dv&+Ra~N_&{q=a<5$WZyQU8|vEw?xgqaJXYE_ zBj-B}B1L`kP!#&E8l(DFiuz85qR@Atx9VGw@9=Sod@ooY$uRRHnFn(t znFF&UnIUr{nTJV{%%jbb%+a%vOy|N#CiPe(Q#?PC*%lhf%nplW;sPR>K|ztsIQvLu z;QmO){a7S(F+Gy$G9r@c6CBBGT^z~m*cHi4oEXXcIX{y5K^w{R{4SE|9}~%p|0$9= zv?z=@@ab1f|N1$MK0gUYCHpRcPI}*_J`MF1*4LEXF(^u?+T*~y7PC@Bx&CPAISXrLC=YX9T4^H4@IHxIA7JbBHu2P z6#8!b%MV5+`%Z*Tdf)j*8Faogrb_$9J7u2V4wGekBPa@e2TxIbEAnkURgv#&2mV2g z{c?j*$-X0?liqi#Q3jpw_-WFe~bE zr1$L{B<-7#`~3}R5Gm@LhoaDT)eP0QBHsx!4GYx-eCNQZWZ$*WN&oz|4>BwVy>F}8 z(!TKlndi3-B1L^CLs96vFj)1i$anZGg}xjAN`g_zzDuB!-nZ%OhWf6aEA3nJKN;Ua z5Gm?A8j3>S>2p-yihTRbZ8E;2U{td2Ea;^7U15|#cm6I4k?}3}=d*dvGwgtpZpgU)wGn6z(vLFW1G@QsXb1Vy3m;84}KBHz|w z3Vk>J&rjT7RI={~=%n|ZYLr3eJAR?GZ%v7eZ}V^&-*!+G`u19&`c~w-1{R9&`SQx* z>wIIsY!@2#l?Zq54+jyBHRV;5+9- zbGETxbucQ~x9eiV?$i4Yggf;abiTcpO8ZW^CF8pQB1L_dK~d=2B2x9O$af|z6v6k~ zaFxQSWZyPR8|vEw?xgqayiD3R^TbD^nXb|JG}o`AiT?lI{r~^tZXf;Mra`2rZyt(5 z-&NnLz7_dSh%zh`(RbsYzjI(zvhP~xqF}UqiGQN{wRI=|9=%n{;`dvePS1*_Lt*w$dp9DdqsPAYf3Vo-?sJ<2X_F3L! zd`H2kWZzlPN${lHy$MS>%U_SJ0R-YABsZXao?-H75R2qp~!c#k3Hvm zzbjXt)0NxvWjC(&sXbR|;>ewA+mq|Lrzgkl@5!AC>&bm~%#oX;apd~+b>v$8;lRz# z=)vWGV9!mP)SX*2*MT!V--CO$w+lBgx(oNxu^TtVraRXX*>e~6cjJy;?8YrmwdYpN z?9Sb`?ZJhFe8hd?YRP?{Y{TjE{a{qG??mXN_nmK)LFYSTrL=G6eHq^lIvL*xibCJP zajI`czO7d(@;&v}ak%6iZ=7-08y}rA4#(^qhrh7*!M%SUhm%Xj;9fyv@$Eii@$dJ& z@!iE^ac_rlIBe5cyl%TUKD>M^{-f7utQ|cZ_ue=LPhR7LdF+j=^1N~J4Ik{^axC8X zi#Pu2>{zU8=7YO_=8acIkHrz)IJ|aHcYO92SFF!>gHg%8BcPMscdAhao$vS`qx}oewbz({UzbY&J9T$}wj0i=)h|=7$;oX1_7bt1=mVzU>c& zJth10g-&|ku|^qmzC+ha`_`t(oWCm}QuKUM4@IGG#~)SSihLKtLJ@qw4Zr`g4n`&W zc3o@OeR|)4aHl?l&bRk^8Q;}1KR+peNKxNqP!#&Mh*y0p@|_6_MfBbHS1F82_HDDi zp}sxfPI}+Y8>M}Bek0>M4I)K-^H3D}u1ZjSEApMN!LU#S-xUuAGmZVqflQLU{td2Ea;^7U15|#cm6I)lJ;FL z_x-%*7Q+sR`u2yS(0ANc)wd$wE=f(sw;zm3_MHfw^uF_rGU$9~q)7Wt`A+8f?XXS8 zH-e(jcW|=mTaj<;lqTcb4MrvVj(|>j->F6!biU(vO8eHfk@n*v{ z8!fqnHI`ibBunmUq9tc$Zpk%sXvv*<+>$$cqb1kkVoPr2<(6DbOH1xpJ4@~dA4{&J zlO@-8ttD5q(UP+mZOLtHW63QDd5`Pm_l7NbWBUKOwmS`bO7`swo%FtAjWXzbhwhU0 z&2*FTT?vt*=aYIU3Vl2NqWV_kyBHRV;QPQd9bYz0#~+`j}iddku=?2fD}cgZswu&o1fs#cUk!G+f8O|Ht?Ik}f*_j7G17B1L0162Ayy3-O|4C$1=VPAX3zK85D)SEz(urihO6nLJ@qwI<Ztcr?fx?fn&=<`cqRI+cI-3|5a0e8~-cHS%PJD^VH{GA4oqP}@33Vm1o zPxYN^^WLf`58Ro{wy`(!Bc z{W8pnY3x@Nj7s*M1)cQ1D~vMe&fi4`rG4Y>GQK?z7*@98~1{ zZMghkRI=|x=%n|ZZ9ou$xs<9~nY2BVUF zM?fdN?^L4(}!$LIy-*qr5*|%$sVfX2M2g05D z3_9Q5SlV~zVKV2F0*Dm#T?R#=Zwp@at;lyKEEK`F?ddr7bx<7Z7a7N1y%@*deI3WP zL@U{WvsbeDGgq?1&`P#$*h==g$4WN5(@M5yhn4Kn>NxhnjySd|IF8-_G>$zra3#CW zawTi(9LH`N5yyV}c^vDS6~{L7i({|#j$=K4jAMtz#j#)1#j$}7D_OHoSFq0}YuRwfewllEo<`?b@{+(D%;bN{#SWp2J_ZEoO-+T2;+*5;P|^lxt0L$$eeOl|I} zKL6&f=<;u_{pT-ppYDH|yJPg-T%SZfH+uc$Tz!5Hj7s)h3!U`OZ~K#m<)HU%^}Doh zW~_{F9Yl)yPKKh;cVWKjTaoYZQ;K|BO}c&o1^XCoZ5#*Rs(ptBol0!Cs`#Pl8d& zzDuB!-nZ%R4fS1JDD69?os91wh!pi54Mm~v^a9nlBHuoRihREf-(N<-sAS(+&`IyR z!YG68{9SZL+BY*&#<%Bb!w!i0_J^X-cibPUZ$-Xc&M5TV_?I7yO7@)yo%Fu*jWXzb zXPlGvtr;ov^FfERGQJTMg}#ITRDCP*ZGBFW@A#SyOk=;?U{td22?zr|FLcuTjy1}l^BsCg#`hT+ z-<1$4dOoR#qR_WvvFclq?_yXeqVLB4{<026CHr>0WY~Rr-+^$aK7-D;cZsy`fC3rc z1rRCfy9|m#-xilu-->)^!a_9x-=#1r*|$weLw$R|o%Ft)ugUoCB=h+)4I)K-^H3D} zuDYW7R^&V3s$rp;fbSd_mF&9~I_aO^_SX!{LGRnDRNA+;h0OC?2a%$_lc6Z|U3gvf zt;l!y4TZiN|4M>U$-YaVlis&!X+wQimr47^!)1I2L8PefXebJOr{7e4EAs7A)?|D~ z!Kh^4S2gBjelru8eOxC<=XhRjR%f`L2P5B7DAFXx5x*?3ZnoVNc1veW8=y zcdStco$t^G(!Ns`%lNK@NYV32Jrsq$9q+5Y75OfPg(CP~d%>J->{lI(O7`vgz_9!D zz60S-eFmLx??=+U@mv|-1rRCfy9|m#-xd#5-->)^!a@;zzYSL@j7s)x^QfV|J>X7y z-_F(2zBRMLq|e`J5Gm@LhoaDT)nnDSBHsy53=2i{-T3G492k}CyB0d>pWpV?hUK95 zZS_prcglR3=eG_bMSUkjQRutysp?yi@9>%?<2wmPCHpRcPI}*_&l>8x`h~Rb@(>x{ zK@chGI~s~Y-|5d)-->+uyl67MqhM6B?=0w~_g!I>L3jQxdMWL@bEu4O&sxI{i2C-2 zqR@BTzp8IVzFl4_^6l;Lkj?eF$2Pljk6nJ?A=_o|Q+DgT*R0w8I=1($|JW%v|6^_U z|HlrudBdLR|C&wO^orf_-%B=?f5GmJeZ+bkdBh&t`JBzSc*Z)7s$d7K{hOVwy~iG@ zdC2~J_5oYqeV;vQ|A0+p9pqoRUZ3a|6*33?+2rjeJ4UEz3+UZ z3_9N#Z=`)|!ex9rypr*apeXbm{95&`$hY+yMZPzBZbj`!Z$dHe{)FD=<5Ae11jM}A zggWlsimFPI(V|D&kaK(z>Xp3(4U762P5o{&db)oz^7Gt`y8O8b9ay{#MNZg>vgW6t z_deKyT))|hj?7L*-)~MqVU|15%x)>j@t)^11dyRJtEf`iepRtuY}K~d=2>p#`EBHuNzP=wEyX#N!bxWT&r+zD%b)%mu3%Ak+Se)82=e(GH+@~v4SP!V?F*gszGICt=zNF1^PZ-eMx*&iqtUcv=g*oq zeZj1d`NI~5Et)ZknJweH5+X&%T7+!|K-@a6xjXf&ElizdbB-QanI4F8jU7y{=;u=d<7M{p|C+U+20v_nv)R zKL=;If7cyx)9(>Uk`7$llIZ?DdH9U|?%y@fw{K8FlBArWkEXhRkNt7)kM7@91}_Np zl_W{abKf~fk`e~`{pJ2$Hupq#cZa^}zx*@z@7NRe_&x-Uvf%rExc>4sEY+It;NqV2 zo%0Yr>_sx{v?KH&;?}*1e36Ojbf!(b5eolxG(w=KRaRCr+c4uPdw^PL1r=X|d!P{SGD3o9G*El)S$yF^73 zzH7iB=DTAhFW*B-8 zW8)7i4^23vJktA+^2&%qO8B(H%76iflut$+QobE|Ncm#qAw?Z|NcnoC=YPBZza1kF zDSJmAQoe!z@2ioAlszL4DaU4hr+m2STjgTd4#i!+dSy?h)_g~U(mCHL1!_3sd)yPo ze7llO_`V1w$=4@$VG#3Ow~Ci| z`lX9{u~b)eNae2T(28Bvgde)7G2J57;{K7U8WyRx`?-tya>Gc~Ux`#736E57w2M?v zw~bUQhDWNk+C{2Y+C{3>+C{3ac9Cjkc%=GHyGXTByGS)CJW^f$Ts!rdDvi~1ty`<^ z`nO@J)_ey);Yr^)-*Mn{*Ko#n_iDy`Yc3PMcR@*#?>rd9eEU}Q@@{mQO_YkzNANj4l(emi*XnF3g zXt`u`ANdU}THdfLTK+UAT29D`mWSm;%Nui|2~B>7fh z5c8d1-OINvzSExaG|GbS`{DD;Y*?x_-#0+%{Q29zhNm6Q`7T$>m~Yoa6TVZSB+2&* z7{q+%)b#Rgi|@pzZSr08j|^C6~w$TKCHLReuw{Q%v}dhms`U$uNldUR&GC zw=KS-{B7}l_cwpJsDGxxQmy&k3`*yGpDR$q+3W9v0mgi5vrPDosN+e1}O&-yIuz`L@OPHE7fW z@cy!TBTuH*d`E-QIo~M-YB=M2ToYryU2{$Nz6d4B*C%&j5c6HPv6pXKd>?{FJpg>) zhNW8b9o)o|zH`3g!0E2xjPLG2#(Zn9nee>}N|Jo%!64?_x2czJTYPVXMp^LPH>|1h z_lwPxS8p~`{B|@~?sjgfBBh>*=%&isNp+NG+mup@{r05duAd7_wdUI|=wA5_2d8ts1DhN3EzLLKdkvH% z`Bq^N^PS(!%eO7Q)1LD*%7X852^X^7+4O7HqRij3hMc;dH75B&*6n5IvYuU>n>Dsi zZdRMua7$egP8A}U@zac_)ctLi|>$a zZ?@KaUT)K;%-e1D^~i1W_ebfiziNJ~)sYSrvgV(7B5QVL#jL6k#j|SmUX%6ppPgGz z9#S$ZDlV~gRN3cR2kv^cO}C`$-+t;-uXXt{A7$L5TJxO_O6PoUFHpl7-1kGN4%F6y5USgJMONuYGj_o@OlobkOd+?a3q zEfc;=v^C+o1`J}pJGS%kZHw<~&?t-dm-oY?dblT3YrdmF>74JB0yUiRJubqSZ&#WL z-xr}I`TFE83}U|PcJT6Ti|<3wC`-PJ{`1S*uvBZlgCjiYJLfwNobDRV`0n1xm~ZWE z6TWvrNs{k87{q-0KJVq*7T+78Q4av$xv*4gzWqAgE8pSZbk28Rq%q&pA``yXKuMBs z6$UZi`JKId+u}Rz1y7?M0KT(fsn&eo0HyQiZ~sV7JDl@fuA4F6a=HoMsZf&Sdj$+) zzH_>G`L@M(Vpp4d7yTmxmTJxSF;F_^+o#*T@_n_3G2gDmCVa<3Ns{km7{q+9?e68< z7T-}l9vHr-!BVaH-V93Te4i^&!`bWagT0LT)|Qy?9TDY8faH4+3}U|L^z`y=i|?Rb z4-DTiuvBZl(?RK+@9hO@IO99Bk1^k_H%#~r=xxGx7z|>*6QaF*+v2-IADes^{ohYQ zV5!!8CxOyA->VALaK`t-{>FUE%S`w#(bt6U8Ze0Y?%2=Ew=KS}L8C0*U&i%rEEn}p z_5Pkrt@(}yrE|Vh3e<4M_qc(^e7iDC_`V1w$=4@$VG#3OH^$4iExr#yqb&Ho`1Yf6 zQUBbArCReHJkXQAbH3xi>8|07@9u+*`PP=3@VyI4l6>dEAm-aQ*2}jozBfXnEcm`3 z9=WhoYrg#k-z(qY;B?M+V4N}E(n=G)*FZ^+ft> zsx{v?K+gf3jQQ3+FyTAmMNa}G--BQf^F3#zmv38q2aU4D_oUlBl>gs9{_*{kS*=DW)7r=W zS33rlYRz{#D4p}Yy+93Td}od^=3DyEgztctO!y9iLCkl;XfNNk_^vR<7T;R}Uf2GA z|IB=KjrQbor?eX}S^w1zfu&mWodinfe6K1{!x`TT#~br4uQuVk#8?x)Yrr7pyW==7 z-?sR^292_Ke>t<;r=kD9e^OGHhbCX25xOxW?Z4X9$9poh<~tgc&iPI$P{SGD<0cyO zExl{P_eCg4zCO7NgP8BS6TE!e;`LVn(!SD zB}u-MVG#4ZHrdO!Exw~%Hu*04&o8IJQmy&k3`*yGpDR$q+3W9vGmZJyJ~QDv;#E%q zB;SKz5c54}hL>+!dn>(_|_rH z{su#o<$Z@J^VSbhR?i)(ERP$i_p4471c1k;Z=cG0==cG2a>Pap0 z@^S6_5687qO-^Xn+nmtk7ALgemM65JswcEs7msTx#ZG8#_n*)X2A|TdzI8&&PyIpL z(&)IByzZn{@zP1{a>bL{?~k3(PX2X5Qzo9&UhQ&Hd+w2w+Tv~}w1#6&X!Qpk(V9r# zX;ls!)ZF!N!&0sJ4xaBx-#OoL;B?n;#&`EOjrrC-H{p91lqC7igF(!4ge0y+@G9zY>vS9KaC3)o@l%C?wY%I+b%m9}@jQ&K8@r(F19m$GmDE+s!`w^DZg9;Ijh-O7c{ zIm)(6IZBm?-HIz{k218>9;MySUn_53U!p8{<5R_5KNps2&9~p1_sVxTIGyty_?9u> z(k2tW*FZ^IfQmy&E0ZQl3-~MlT+TonDMCVa<3 zNs{km7{q+9UF7B47T;0nw)kH0>T_~Y|4f6WTJyabl+O7+SD=Qo*WU-18uP7fHsL#B zu_pnN??Et#`JS`H%eO7QgO=Lj`+j)Dz*4RGP6wrPzPA^s;f(Lh3}e2fuTA(4c-MsQ zFc`#qCoJ>wZHw;;88-PY`p+*zV5!!8CxOyA->VALaK`t-mBxI_-su4PFG5N3^~qfr#C+F% z-^;fxz7Ij89ss^?!&0sJ4*tNCzH`3g!0E2xjPLHNjrrEHO!(dfB}u;XU=Z`|`=OU_ zTYPVXMp^KkczT__IqNh1iLsyQk5yQwzx&%dJ>-K8ddl4mde!NfddGg5`o^Z2`lsJ* z(C;kWpbtL3L4PJ|gD!u(UO!!9oql{%rY?WIQU7i6=lUmi*6AOgU8k=K+@O~&ovB~< z+n~>Cwq9Q}aJ}An$$EWxuMPU<8kzc>Bk$`KCeGG-WGvF%^>bmV)_nV|zE{4(!Regu zz>kdimbRGiy#`8>e5){s`OaVC<=YnDX=^==vf%q%wLWTtReoy2K98u|YSveGbR4W^ zURa|p`15mhN-a%2{z|rb_Q$W(sdqn7Z;n}`p8aZ_+Iaj&s$axxwdRdRYW?cl)NPSI zTK@E()S>?lQa^dKuR8yuchm(FH>$zGX=+ye(dq)7$RC-&geS%LnNbe;BAICJ)pr zK0HVt`QnK0IoWUT#W^{?C^F zdS=-H`q3E!^e$Io^oJ%7(&PF?>NQg8>EUvS?yjE!OSR_v7$}|d?epoq@_lukG2biA zKEI5Ik|f{BFo^kH`ZCO*eV| zj#%$WfaH4+3}U|LZ1D1Ji|?RJn|v4jBL zy9NwmzB_*D<=YnD*Pu}r?=SC%NA=B~Os)Bj2BmYpQwr2@#`m~yjQMu$FyZ?mlq6rD z+=W5RcipeOeB0vt5H!k?@1pJ7d0GnhDuKgx_Uxbq6>yx`Mi21I2z{|HSz7Ij8Ecosca7ZiapWCohYrcaI zdeV2!cN{p~HJtI?{jf3L+5r>3cR@*#?>rd9eES~q@@8%e?`&AAHQzTt>HPWI z|Cpy8&iO8P!kBOQkO|+ZP?F?(1q@=obAIshZHw>3;|~nq8L(7qzK?;@Ip01f?v?MW zr;Pb_9X8=R9!ipYC&M7-d+kXt-?sRUI`zQtJq?y>&G%+dI_LXbff~+Ue;>><=36^r z!goZjCjpZ0K`@BMeOUENQTjE3VxAgkr z?=9~7F|br?zSBYJobT-gYB=LN^G9R8rDG<12b?kCI}8Rf-w9{EeB0u?!jHE2o;q%m z_Rs8j+UHdQwdnXf_30Xas*`?dt=-u;Lwi5n4?SIqG*Ur^8?#a>I^+RB()_f;{(mCI&3e<4M_rmkWe9J$W@Ll33 z6TWM}Am+Q{IWOO~_`U{>vUq=4>9udd4%FTkR{x`K!hGJ_6Sm`_^77!GUF6~`rpQT) zUYB3`WQ9B;;WPP-9h>B_?|mt^@A;X0F=4LUHlU3hA9gcrN!HEKje&7$i7w zi6vTU^>(z>x_4@*m542;^{=F=d5`o^2V|Aq67t5~(AQ?Z7e)sZii|@oMw)nmu9vQGy zYrc- z>74I#1!_2Z{eAE+W4^UK6TTz<^dvy?JqQLd-*c{e`L@M(&|eP>-!ZUMYrfM#>74KF z1!_3sJM$l7zNND!daXlRr;Q- znx5P4dwoHT<9hpcC-fx?kLq{c*{}ce=nnnqTVLtl?AW0DRsC46*!2Vb?WN20IucN#hUSC-=tg-S!r+UiN6{F;+vp%YvH$eLS6y+}zYR;Z<~#VVCw=F9$AQyb!x`V* ziIfQmy&E0ZQk5`#7H;LCp8sN4+gf5jrrCt zneZJ^%98-e_aGR=e9w8z%eO7QgG$@t`+j)Dz*4RGP6wrPzPA^s;f(Lhvc`N%znJhH z@VE)zVK9jKPAKE$+ZNvy%G%_+=s&*pL^%__ zYrr7pyJLAT-?sR^290_E-d|R);K|gQ?`Tju=R2i94QG6ht8C1->sJ%LFG5N3^~qfr z#C+GS}N|Jo%!64?_ zw~CiPOIJ+zUIQgbzEv2+eCI#u<=YnDX;nRqvf#T_`2}I&6YI)jy48`_Z`mET zY)W}8`}KBOr$s%rgayO3BmaJnz9ldhrS$g|D3HqNiTIs*sepH{8wqBd^$t10Ae_2~q+)tC6{-$0C-=b#w zZB^T^YNP&qw?nAAel{%Cn(rH+bpHJ9U(M4F=X{r|Va&ID)r9XpKT%9wxr`>jVkY#Z`Em| zd|Ufr8ln=7gly{ScDMtr}D!(?UqTJeYM6OeFfqZ6n9r^u6M?)Vjb6S-@ zaA|orUeZ3V)mW?l%WZYWtc|MD_7!zb`S;bx>1DNLFZa>h^)q0p)_flWrE|W0YTPT| zSD!ZKTe@JvcRZ9N`A&vG%=g-wUcPPd9rd&=zVC<6FQ>s$t@+*zO6Po^D^SDP>+gg9 z#(ZnnO!$tdD7yTm!mTJv+Iw+mvUq=aKRl|}_hf3#cQh!S^PN(lhBLm$H8SSgb;E@3 zi%^n$eR3BDG2e9?dil1+_aSJMCErE=`Q>d`sx{xijXdc)=Q|FZ?i$Yc?%u?hZ|!dr zzIQ=MlJ7hi#C-cU_VR6u?~Tx?2Y~NfSgJMOeogL`?{IKB=Q}XSm~ZJ{6Ta6#Ns@0B z1~K3HfnL6C@txMx)2Ii4?`&AAHQzTt>HPWIKgiP#=X{rIZp^oQ(}eF-C`t0Y0tPYP zInBI$+u}R%Ia_?!YZa^ZtzL0U%O^U8T>8DZ8rc3h^}wx#>XhTV)vlLw)L%=lQ9FF{ zu{z&xzq+>bx9Uq9XR3i^+N;Yi@7XfBRjk^tRjiuYDpq~8Rjk^nRjewvidBoZidFMl z#j1N-#;WsL#j00Z#;RE@W7T%8V%4&(V$}`@V%1Hz2CJbFgH?C^3|Oi)-^W1doNu4z z_saLx7RG$LZkg~M4<$*ylVK3^y*Aj(w=KS-TG--yfBNN+sTs@KtUi9^+f|XTg~Sb1 zLk|A@L};aXJwxj*j0!#YSd-A3$AUt0eEWr#>)1Z@sS71Tj}|)+ay-6w$V(ZQLxNXc z4q3Y7a!A)DmqX6HdpV?L`sI+PmtGEu$haKxW%}iim?f7(>ZV@~8Mo|m$dsj*Lw-!Z z9Fp1m*O15wzlFqZ`ZdH|e;O>+n(xh^bk6s=0yUhy{yx~+m~ZX23EvSdJqeI}4}w9= z_ncNOZ+(*W4LXj@ z-mr9Rc3zXT>`SRB*+ZUgku7cT%`W--ysW_D)v}xaQZ;*K>1x^4$5hL{@Km+zC0(jz zPmiyb{ab9c?8umE*;>_V*>68zE&Ii%s%0MtsFppYL$z#qUA64M>D9B#K3qN9T|Wkv zYRz{#D4p}Yy+93Td}oFl^X>Y>gztbhCVYp%Am%$E#LKrWzAJ><;`@I1{4xZVYRz{N zD4p}Ysz42Ad@odt`Ie!aNNvqYE)-!)(m^W9PQ@@dEAm-b*gO_hx zd~bwCS@3;7JaS>F)_nU#+$-PV;B?M+U?*d~B_9*M*FZ^B(C`t0I!XV~5e~_1NTYRU*dKzWHceC@bJd`B)PKH6u_u64zzHRXxHQXlOMgRJH8Z6bC@6Die&iA^jO z-x2Yi1W3LI!64>)PJ)+jTYLwNcwqRBfu&mWoeoOpd~YvM!x`V1qm22MDwyyc@S+Ld zVK9jKP8jLs+ZNvyMm;cmhrm*;`A!0*bG}y;^A+-x;xpy99+@d`|2s`Ce`%?_;@>oR@zU4ic9AZ5=Kg3|zFt@E zw)j|B%JMp4*YetKk$)Pmmf3V&{a{rkE$#SW^>D3=VO`5^l()BeSo!eCQ_6Fn1S*qH z$x88#9h8CV+A6D`Y^^L=(Nt-=_bDZE?7#BKw7qh`zWMUg&n%GL^{bEZWNOWKG$@_( zol>BNGrq@-H|E<_$%OBVP?CIoau)_M-*v}%`L@OPA!w8Z-}|3DDPJsJS~)(cvGV4I z&dR@&qmv>&eP=y|VK3?R|39{WIj`BQ@ppd2_@1zS%x>-`lBSSzVjT zPc)e!rzLEXU+B3X9B>B#RLCm-B z1TWvV_}&POvf#UK+z)Dvn5$~-fTy(AjyKgF=~P;K_3U0Xa_!EJ z?%LALx7EY}AE~?RgsG)pZ@VQTFKo+*hXd5P4acY_-de7v^~h4)^>bmV)_nU-yjQ-% z!Reguz{$pZyGohxy#`8>e5){s`Ocr@<=YnDX-S?&S@3;7Tz{DjOSR_v1}L3BfBR4N zw8J^y<)#|*Ek9wxcPf-5`Cb8onD3k^UcPPdo%pg%zKi~m0ZX;!`xq#l^X)VBUirQ{ z&6sc3lO}w}LrIeFWEjMJuYJYKw=KS-rrF}V;q?Y>i~468EY+It&7gG7_qhT!oW1@& z=rZP8t7^h`#B@&rB;SKz5c54J*~_;rzJpx0_`V+=F|br?zSBYJobT-gYB=LNbEYxh zQgsu)170=ZI}8Rf-w89keB0u?!c3cd7yaj#A+S_yzLP-dobOcyYB=M2;cR2R<)=*e zE|FrwcMTZCe0QAX<=YnD*Pu}k!28SUvptzw^BoOJ=X|FWsNsz7adVCNcGWQ9`y!Mi zU!UBCLCkmEIbObP@qGvy^#JgF8ZQK?Q@d5Jg1&b|q&_fxmHzg~pY)#UBU^V4D6{o= zaG9--Pxjr~_v3%`+^Q$_fs?ZIOOrm>l{X^PxdEdpua&rDn zIidNV^4gMD<;idVA&w0Y#gq-t7FT}w`w^w@ zsPf9vJ{6T;nwC-2O~sUVs$P-1m$@KsNID^_SNF+h&+V5RHy&m_k=NR*C#OfK&&V6Y-1W0zsn&eo0HyQiZ~r$v?QqU_xwnk@mTQ~voeCvMzE{8? z<~wJBmv38qCoZ(b_lKh%){-Zc*UtZWTCLryt9oqmSk=GR=jznb3)NLkBh~+1Dz6S) zdwolr?ayqfJbyyyjDyER+YHJN9h!M1wB+%Pp-mPp%wE0loLY8EtTz1ceC@TH?`kb` zKG(LyAJjhEd`^q$wnm$s{=BxZQg`j^zD=|$+x#_Yepzkk`O|8|>|a%P{R~*DHQ&cT z>6~w$x9*kit8W|gEmbk$J041sd?&*o=6h|Lmv38qN4;%}@B88N%W1GwYrZ#w(mCJf z3e<4+`ukwIG2dDp6TTzf@gzX=F zGrlvI8uKj$nD8C2*o5ye7{q)hEb;Pfi|-0cZSg&`c>T6T{SyL9wdOksl+O8HRiK75 zz87W~^DWmk;k(4UCVba`LCkl@WnR8*@qG;%W%2&d`sx{xiD?RBu=Q|FZ?i$Yc z?*4%>-&%bWzIQ=MlJ7hi#C-d{@8#PT-y5M(4*=h}uvBZl{XV!?zQe)kobSNZ#(YZ+ zP552|B}u+j7{q+%uk!M3i|@1#J&k$*_|ArFHs=km#e<&<(0dnx6Q zPEf|a;ZiCkOjde)8LupQbChx>q^~k}WU$iXnVQO_ryo~3mA)zWdwiFiS?P%EuAc!* zwdVU6D4p}|^U=NXef1M#zFp6n@Es2&NxqX|5c9qEV=v#f_>TI-7T=c^4VSO|^rHOY zf|up`=FGrlu3jrn%@oA4d5-h}Tk7{q)hZ1D1Ji|-1Vw)nmuKEDisrCRfy1WM<8 zuPRW(8Q%*x8S^bSHQ~F&=O%pDfI-Z6$BkaTZSj2#8fE$ZvgjYxH+eF(<~tgc&iPI$ zP{SGD<2D=f?FusC`y!MiU!UBCLCkmEFTH%*;`W>5Og z`HlmpyM{BqyMJTMx7N&r?_E%mg6>BNvux&9~n-_sVxT zIGytym~G6r)ZB#cHBge|TZKW)cmB6tzHRZHmgQ-bCErE=`DHdN)tc`cpmhHH?Vs&w zhjYHmX~ulZ!6tmCLP?VE6)=eT&e`JS+ZNx6>I1`f1}xQ@?_;2J&bN)&UP=~w)hU(VTVdWw)#>@asR0?g)%-@yw6)=lwS^Ufw2A#9 zv>KbDwR4vSXn!^vrfq8Vq81>J)Lu{Rr7buZtM%A6Sd0Coqt^S`C$#x}nrQC&F|br? zzSBYJobT-gYB=LNGsl>3skI5;0Xt3j4ue6=cfu|&-?sR!kYkJQCa<-~{^Mwk?A$gF zWv4E=n)T~DXR^Ayd^oGl@*`QpZym|nHTi#8r!%)^H7Svu<+{5g>)o>3vQD+#o)vZC zL{{R!vsnx3=~!E`ca|T@x{ZllU|I-E?>E0cEye@ zvrAV~vNwLNWOoR!pPlXcCo6S8#cX%|5Ll`;-$|f!&iASUHJtIi@H=C^ zcMTZCe0SXA<=YnD*Pu}r?=Rc^^={}Rmu7^%bfar%QooSUGb5f24Y^x8^gW+Cp(DH2 z3H__oQ=##KFRd3zb4wx33(!ds@BF^-nYoZS+Nj(04;pLUWe7LI=J$ zGjvY$TcJKLE)VS%@_y*-K5Ii?^!+sS%e|k5ZaTIsbU?)qL!UYMVd%cqX`%I_2Z!b^ zel^rxzxsEcOs)Bj2BmYpQwr2@#`m~=#(YbGCVXFnlH}`?yD*6PuKPbP-?sQZ1dX!b z`+oTR@-{5hn(yF!p7fpb9S2T#4QG6JKWNOi7HY!xE+|Rzod<)MZ{Gu6zHRZn5gKL5 zchNs`VX4-9`yISjzQe)kobSNH#(Yb%3Eyj=B+0i5gP8C9@4bB6;ydk-r%@Js4-G1# z6!lLwEY+It8=!Rl{Oy0((+=l+mpf+6x2%}(oeCvMzE{8?<~!$zmv38qCmyxM_xuY6xUZp^oKO}YdGV(d%iK> zT1OMUcR@*#?>rd9eEVMX@@QLZn4$#dqRqFC0Fl)3hz*7$=lIvrGKH0RNIPV%}AMR z8bizxjY*mOCzAChWg0Fzjg(1$quExGGWiCQeMib% ze<9f)q)h%7$)5O)YKU|b$z)QdVOcyWbNz#6dxMl|xFKJVGWj-|?G!0<-9oa5ekYGq znk4?aP@k6FL9=xyWv*gqw#lSS!?Ud*WpZ&e+fGuZ;Y0Y9lt~Yv*(zS48lquYYf|R& zL9-1ZW%9#FHkXvSN+8(=QYJluWXEXPqeym#l*ztGR_7|&5Ioxpv<$B;k(9}$P|>BN z%vBP}bXry#$?{2=^ca$r`GY!A`Eev`PRg`0NESoOaM2V}CgIsWA!TwoRP=jN<|>P1 z|By1RJd)MCMm0pjvItTpS46XoCS|S)NcIjXlPV!u7AbR8MzWtsnTBU8`6qRxvLBi) zkd(QeK(aohOsaxp$)rrfvel%_^?Y;jDf)k;Onwp-{gaeQRgtXfb*dp6mbE2iu4-tu z5u{A6j${i+nX3kpZ6;;fQ%H82lu20j@L$xC$~Dn!4M~~wG?GP;GPyRAy-dn9JllJ; z%pc8`L&{vWknDF-CO?B@m2XfDk#NxvQlLb~4Qs%0I zWYXW%k!pCh08%D5M6-1vWv;qNHj$KRjgV{^DRVVIvTd~NStR?Jlu5W~xqrxpG(oeq zAZ2o6BpXD^T!Bb7o0Lho=x3x%3qrFUCS?+q-K1sB(QLK;r5YkXhh)#wvKB}-mXv9@ zXgV!xiDuhE%3Q%ncAk{Ut&!}po79m?xM&b9YlCL%N6K8SknB}j7J_7JNtuR=?k8n( zD4OjrQYM8VS@l~~Lo_T4CuJ@f%{G#hX>F10Em9_7+1I2@jzF`Wp=An^mAFkEsnik4 zo+V|j=aH-zE$bdENrR>T`%B|1q)hILWFL?+sWp=AA!TweB)dw=Ts@Jj${n&Hqme9( zl*xmUY&a=%4MnooNtrYR$u^NPR}hk&q-D*KtoU8(Nag-WR*#gq!jP;RDU;_QSrRFe z`XbqKQl`yCvK^#MnvZ0cNtuRa6{J$qLz0C506rVd){2(RM6$u8OrC{gb7iEq@?oT5Tk|OUpu$>=|FG zAzC<+Mba__$tI98mp_udOUfi%bSo*7JD}Mvkuvu`ltSOiK1v;_`veqZ!L+O`k_{wf zQUsFCB4zHUL80iUq)fxJ9inBO&}{#bGWQdgQ1t1NWJ9_jSw~Xl{&zu`Z44=MKdB0` zMWoFAOfJZ>X&Ekhj+D9IjtR4sDn%Ws`|X$@Yf8&{AX#5h=6-$?W^>W9C?s1$%G|Ht zgxU6yGWUBxL3W*#xt}csS+&QghPa=&1X(*$=6**h$X+C65}s`#DRcEhvwcO%+;5B=YAe&0cBwX};Ql)7D~$8Z`g$+9Y)LWA;x%uzXTOz#mZ1e>VB~; z$m)_Z_se5J)|HgG-|`5uNwh2h$udZpgk{@FnfxM}?H5`Wk7VV`QVnsx&k_!yB`I^i z4Dq|E(xOpv9LGWUBKLAH*Rx&JC9$c~UQ_xmhCc8ivcMY7uEsD`-4AXz6;rj0|g zaiq*0mhiX1#iYzN9?4W%HU`NqkTUn$grcR(Q%5Q#Az3q0CMP0Ue^Mq*K(ZOM46p4Y zQl{ax9Ux`$6jbyEDRWImvZpFg4bfgkvi77*!m?4M%rzCwmPX3tSCH%*Ql?Eqva_U2 z!ZP2A)RDTTquCmhGWRo*08(#S=0dV*q)bjmvQ?za^(vBmN6Iw(2gyH3nLGo{_CzJB zAsRjenUuK}pxNR{ne---y+O(}Ec=3#$qUhJr%0Lh7Lq+wnL1Jl%j(mzchGFzNtuRa zlS!HUHkxe(DRZSE*-l!v2+4jWWpX-_RrI48;#z`atx1`*7|DjvvUibeE-90jBH0E~ z=30hi$4Hrm*LH`N;kDJNLN!FrKt*35WzupaOC)6)mMtY^t`%rDos`Kdku0B-N$(+9 znJ1_t)v&BNDU(*A*wP3kp=BQ;*(an-!$rR*W%37Twtr~ZY9y=qB-IetS|p1g zWzrfX8%@hTMzVKEnfwuwWsx!s7yXHr;i4t0Qb#IpK}7>enT9_p?nBDtPUw^3WKt$| zMzYnU%=H42{g0Gsc(y-DnbZZ%R<#=0kVqtJOUhhbk!%Dh({RxRq)h6LX4_24WOBHB4u(ElD$mIT)mL&JyIq`BUuh9lY1lC@1#t_hfw(` zsv)jEXtoeirs1{4kus?tnr$8_llvms=cLTlAIXlBG7T4%YEVZi#h}>&NSQnU$-0m- z*FYqjNXj%^bQvj=V$p2dNSQnc$$lnfuE9uFt|r-#p-9$(l*vPoY!E5a@FC15Wv)0h z+h?Rq!)rTC%B10Fwwt6(9)@JKo~9b&ibt~NNtuR=jwNN%2sB$dDU%bBYzrxKy@+Jz zNtuR=K30o5QfU;LEr^uKBay5hDRaGqWUrDk4HsQY%A_%9w*90`9*tywkuujFC~kuo=djj+U+D-)@+w3 zTTaWCofl=tpD88zNRrg3z;)u?{_l&FtY}mjNs?X|I;v*R@q^*SroCVjW8&Wz<~A{=hZ}f~55>gxTHvliF|`My7!%)pfg6ot8r6V`N&1S#1VN8*tJaVToqunc6{SM&305(5{v~B@#i7pwpBOs-4m9_n z&~>nhq4O_dbDJ3Yzu*!>=UZZMSE0~bHS#nDh0eCM;6|g+2REWZ->{8^4zbQ5Wzx=* zaBhNZ8>~kBmyUmho5`q{Zh}>eiGN?4TX9THpY=2V#l*h-%zY@P1h9!Q@$aN_n;6r3 z;1XlvdyQ~cp_tBsQH+W2KEjPgG5I#8V!EQSm>`J8q)dA3FF2b()|-}H?k&ou(X!cB zMcG%4$#au^H=Y%xLcao5F?9Y#cy7g^2Q;BV=ijsEJ`{Qk*u>EJm;Jd-41E!}#L)Sc zFx*ur^rK)DL+6{saHCP^x0_I**UVy}L#!fU(mp9V*e{Q^&Fqrf4+$hcNOY?Z!n_%vu$;_(Ww8^no|9b{hIY3 z&X=#CjQFI-uW?{9s{dEOiu%tkXy8`d|9~Khe}26L_o4pBfKBW_zi5No#QrY=7wSLT zD2TfX_5Uas#s2e+h`78YZ3iZD?7{&hct(&;fsQ=TRqxvuNe{|rr z+$vHgl}(0!CP0=4s}WBVen|_HQ8D>7_jEvviC@3MtvIGG;1grwm&b4)iYWzbC?jd7z`IHqOb z6Jz2RO>rNJ>3gt=G4U(6xJ`_yR4dQ%p_thAY1~yPrp{m#W8%BGaidX8<6BWNN&F2F z1hIscbz?DsOrvE#PJuK*c9E8~m@LX3Z%wZ4)CqVO2D3d!%Vx9p)F2z%nnH+QkH%ya zLTkY)BE&B~<5rAN9{5Cr__b}^hY+gNhC0*v1$NvfBGd(3B0_wlKJF@n&>LVB5#n3- zaibAJU$miOD!YT7=>W+oQYIbV0-=MwxMx&SpgiB5cDf#@8Zdg zMlpS?P%$0Y#bSaW&O;gTG~pMeG8xtX>TNv@LH%b}pmHnje^2m<{pT0Bav$pdYhV-m z&#$uOHnIQPz$Nyd?{dmrh5G+cJI~Rf{CZl574ptNsyDpYnaZESChhk#a`f?wNDKMNmP51@J+$P5KBDlnu`1Y~f zRVb#9!6?SWHU0* z2P&o}yID*S#0pX-O<*yB>;$X^#l)`KW-=^gQ^)nD`ao+=pUH z2AdcYzYLw*#F)MUmlzY@@R+*_#q>8A#hCaO$lPcYQ;m*PObhm~m>`IL9jViVUzyHi zRR7-stJr^j89KM({_h5#*nfVNJNKdf-vyi4e}1Vww~764@jP{!@GYXbt5E+ZgHh~1 z-!z&Vjrzahd8+?s_-O)fV0V%-sSAI5>-mpjoyeHj_3~^sDyEiT6=UL8UW8#~db6265c7hSb#I`x-Mx&U1eSwPU3Xchbs2EAfq@64#kadkD&nC8u z0+UfOrGgd3#P(_6Rvgn7@QE?;Z6LT0#q=lG#F+SA6x=4p)ToQ+_{5m_Zt>hzD5jUd zh+<;<$8)1mOmBCg`rqw;>}-M{_Cp!*G~wG*Fd5bV5?wuqCib82MZvAO|DoU$`_H$! z;6Bv<31AcZ&-dHlHnIPoflKT^-(R1*3ibb2FpB->JMMF%QU5D;qx!#cFY7=2IkYt? zlfv0wK|waD8+DrSojRC|ifJ8K#hCcE9NdayIuAZECcf(j_o0}ocK57QjEQeO!fj$q zJ;8-yVmB_}u0k=r4Ms60ek%iRG>Yll?o>?DJ{A)M@gptk$6^9m^&V7AeA5ypqhjg> zRumK4-h*3lO!L7f#>6*3;XV}8Rpy(BwttQk~rrOb-4u~=F zy?MA5$J7seC?*~+tPIDr0BmAReE%VC6Jy#9E-@y4*B9<86w{-9JVz(S#P0*cjYcsw z=|jb&@t7cpXi_G9!(sy2Td*22CcbkKlTk740V|4$Z7jsCIHqEKJq-|J;=3SmA3B?Y z!6wGUw_@TpF{ZKL5@X`G)8Vc{F>L^&7!$w24mTRbbgVBG)7XRTY=R)}kTU52iwR^c z`+0gM#>6*qVlpbGabOi=;yX5RD~@R`_{5m_hEUvxVmb{rF($q%6}O2o`Stf4pBNLr zPZ4(&iYXe5VodzbMcil<)AasSOb5PaF+mVtLm9FEe4{ERqxydptYZK9u2kHL`(Jke zb(-)^uecBOe<0Yz{_~x;xJ~STI=ICC^E*3nSE2qN1Ebh~ey=BPH0uAI0aX8M^8UkB z5_MuInRJVtCLoKAp-vONXBU%EF)apb;h6s0SBYD3O#8uyP7}8O7x$r<9v^F@X;H{N(`c6 z;@g)o85L6)SjCw5US-^hW10j$F($qh8uy`?J_VZ?6W@=G+r*g8gG-Ew-;0d93dK|> z*3%dvZ(rb*xuW8$|=i`DSM$z6qFiUFe-6TdqpHyXv15>NI23Xchb_=J>6r&&xOy8x>}XA|3zlF6u;o=Wg^ zK#YlRKgq2)re5F^W8%A8avzFm9@xZ~_!gVoCdRZKTw+Z8CZF6@C?=l~o}&|E;s$mB(2B;U&lSq)fWQP7{!o z9_cxFF($qNDU(q#wFj#h6W?u=TX9UUfKQBxZ)VDUD5lTBCdR~fROL1?reDA%#>DS8 z%Uy+HYA}jAP52#XxzQ-59;2w3q~k0m2x1B?tH@puf@~A4MvRH?#mZz6*X zFwIt58hegHb%2_^o}p(I}>W zUZP^!z+-|SYL2F4QhgQ^$oh|_&L$VzmX^t=n9{&1#>Dra0LNQGNBZ`UL<(M0dVp=(d>VMgj>}-M{PC^;+G~rwC zG8xtX3S&JD5&O^g+2vN;|4!gT{b$?wav$oy3v8(WY%gJM6Z`))xKRJuJ*By;Q2+k{ zqu76bmuYS^>VM5~RR3d7u>Qjv*a%W4^=79D$YzYAP7}ThF_Td-eFIi8Ccfn`x8j(t zf)B;Sb~NTb6jQ)>@-$)FDs!6{Q!Kc|nE1`QxvNl2E5Rtn#BbltjYcu;8c)Tf@zVr? z_>GiFqgYHJtCvW{#5ZJSGAgFQU=?HHyDxJqj%hLYP)uxdXYNBW?E{;5Ht`*%xlN3z z#01ari81lJpmSHDm?FR^#>DT7&W%Pfjh;ZoH1-rbn;?jHNSQQ)#RRegup046kMB** zWK>MP6FnUeW8xc8b1RN1418ite4lIXLorPRn-~+{Y@6G}nAU+yjEUb~p1TUg^cxsa zOzej9+-MY2rAbsw2Xa|V5Jb00)M>)^-)1tZ|8u}9_MdOI&8@iqD)_|y^S!*e5B2{# z*iir3hT_~N_W#)=@-(RjJ0o&eq5h8sBkF&BY&7csJ4sakYx4fXpF^`qne;OID=5fr zz-q+Pgl|R8WK>LzCsU^h-*=o_aZJO(C&t9LHRnDQ(=xD$G4Z|CxlN4e2)M-4#8roN z8`@Afrb<&hM<>Rl@tBy=D5f@3sF+-**=Yhn3?*gK0u~dTw+XeLlzUXp>RxDU=(9=)x}1m zn0|Vhim6E+iwS}#IhB%0J6TL1Yd_V~GZYisE1t=yn5Kah#l&`_=T;okCh(z{*kb9`bOUt14hZ%C18|A`cRkD6$Xtc~ z(fJ9CV*e!`95WjAzvOhP|7ZAV0w1mgk}~NJcA9`})O6}J;rAn8GAgE3U_~*pn-6d+ zj_D-$#M6Y|+kpE}Oy!b2D-~nnH(1~{@igfKE-@yp35yBZP&lU7z$nHfH^xSzm@<>8 znB=qUG=U&~AZ3y-`zt8OD!8ba_^lb3jEbo6w}=qR7~A|VrLTs(P}1nny}kgFd5bV@nA*$XSdzpR^0!Oz=!(J z?&`sPsQ-CjL;dHZzyYEDS4r_4pV)t?IqN@j75Yb~4;aP%%gQU8-usQ$0~k@X)o zgkMd{q)zNK0ohqtjd+^yo02dY71I;5JRLwWu{)4(D~_of_{5m_4NkZZ#WWjiVodxl zE8HfYCMvkZnB*3$+t7x>G2I2D7?Z~HWk#czo|#R>B%Nb1K@gF&EP=%YvN^NKvx(g* zg~_OxG_azW*v(kD6~}Y~d}2)eUN78-VrrD?S*aKkzu^qGi7^caml%`QlEnmVC>+yj zFp4p`g0aykrvIfT;6K@fkEGHE)C31p4ukTJ2l#xNNbQ#@EvOzgfi+=^pb4n7nU zyX_74p_mSX4aLNPf&)S^m7eQ4J~1Y_HS0EW6?)Q(1fv*}#PelFqnIYlrDBRb&(0xC6T3wZx8j)EgAc{T?f}GnD5j}kLoson z;DAs}o4_T;B(-5NF;}6O{sf~KldBar8pTv~9u-sB3oIrGqW3)VG+{RhVlt}#Z-5o` zpWTLtTXFw)fDiSb-Q|e;Q2%d&4fUVhYKhy#XR~JWsnf(2!rBOJDBS-EU=;hW@!*)z zsQ>TIr~0q){=;2hwvsaGQ+Aqw>^7_hohIylNlZq?^xW&@X~OQv#H~1{QQ$){u^T>d zAByRHu%VbZP;fvfrjy_jPZK$m#l&2NPLrx{c#cktNeaV8qnO&hLB%xoB0EhWh!Lbr z+QVW3*(z8KiizDiipi*$PJtDjP3-1W+=^qW@TR8$C?2K4ifJnt#h6?&i-{SHV!HGu6;sW8783+fb^#@m&ajw3)_H-aXDB9i7cC~E zVwwq76cf8o7q{Y=z5ySKiQNW_`%p|*z=mStK*0f_nCdO`93P6QE$cRO6^dyD7{!>R zLPn#Q7A&Ote}KmXL2M>v(iIjH$o_!UpqSVV#h8qWss3A@4xpIWEz7tS$21sxC?rLNS$1^BkQRldNE)QB1*UR7|c*>}-M{#zPs@ ze|D!fCZqcQF<4Rm*=^al75D!v_)!1ZUEjD5_22JpPeV}uIVo^JsQ=x-CH7xpH$&#G zLj7L=MzQ~{=UM+*Iivo65B_Gtjm_jI|9~5l?Th~JKcXs2k`(s}b!)SV?|2SaoWWI@ z%>XywGMS+_IfGUnW?=V)GMQm9IYUi81KecDWQG&u46c{QLm#YXsJ4jeL+mRs1G|}u z$r=WdGn^U2W`Ns)n9Q(}p1~hF$!=(2GQ*GL46)T&7OEu={^?X7`jhhEjfc+iuK`&N!3=C~ERz|+$r-d(Faz7R$z+Dvx-eUR(1 zK9sdwLr-#sm2F@Kc5%DO8Wxc=oC#rTs9?E8L=d-EnUj3Q@{y0JdgvOJ1) z#p&%NIX>OQF``%(WLxLBewQl;$mi# za;XX}@B0NQcRfkV`~3=XF!@RPEu-cAI*{_386cNt zi}6k*OGiSY5`z9^#*Ae7myfW*%>otRTlgKh>7D5>f zoiM9Oxt2!D`yL_X@-$lB&*yXMn6+e(OX&G9h?K{=X!-x^?at$_oYp^%FODb`mCVzo z%%l>@kX4bPLCVlt#NF`FJeN#aoX){HnIleytz)bzRr@zMr1`?EUO*dLb{3V{UIop5HFqjf>;;$o)CY%}V4h zV{Q-l_om4t@rIc64b{YZwyaAYEesFGoD?_lC*-;hbMqwfydQJB5P8`MFFrM<@|)EL zPvX_kleuYwT!&(k-R)51<-VczQE@T%BKH?EH}4|PdN8+JKSl9o!$PaAtBLnWSr^Bf z4U~1od%agqv=4GUn7O$Xd2X58{~*tL3D@o7V!lJJ!|n+;rKj;~7|Ofb(~;}5LhS?M zV#XrRIx{zqB6sz}_dN0L_ABA>-J6HG7w=oXF{bo^QNw4b=WM%hO!CcYJLKhEnVaFr z^Lotfeazd35%rBHItzLEBkBH+f7^yxBO$y9ST(r$|-BM=n%0vF~%#bNMvp<_zR{m}s)Qb;$ib5-pxtY)W*bqRxyRG{?wdy;CR*#R1IS#p-C&eV(3_z~FW^ShlkKA*UPSJz z;dVK4_jU;2)VP@4U!ck4Z!tHgAup|9Zm$*|$Lp60FFw`=1|iQsXKwC7?vG(^XCTkF4L5s-xR~|KuVHQudWj}e zx`VmxDLjt1+%nYOv6^^q!ejF7!Irk=~;2jIo$3Rhlh z9g%AlMig^%8S?B`8BxORBgp;2@FTRN<6`C^FYmzI)b!M<#mLJ?F}HjFXH%d)H6?wK)CYtPSpGWQohKZgX7qb+3sdX4p%*`&ZW2+Z4w^B&x&Kxslk9Fk7aqs!z8j%j@rBB@YPs=0eiv_@H>l_Qfm=4M^NnPkJf(0f^3pxb zO@HKh7pW@Q-QI~jdq3>nIxc29^3n|EW-W5Hp1IxsO`42f7x;;BF=rvyZ!tIHkmuEK z`-1Q|-twfddz)(FUB<_}ChJ_|xQX4SQ_pHTb8{;4>`mr&403(EaFtB-LFDBhn46D~ z`(v2f8gEgn`H#YN`*<=fn2(n$IpL-^a(6v*J4tvPubL^v6hAvIZsXtGy>H_&`G|1W zpAt9m6Y~zt&4F*zh_XkS+jEc?uie@7C8%v&%%7QO%*|8COV=^Ci;(N7!qv%fF+0ql zR{dJ$rY-WkUbxoc-R-5q<9M?tWcT7hIL7-h9#d){$N2b|?jIxfzsNBOH`}~JJ*(S! zcY73azcB26T0GGz_y_Szz8G7y%H}MSed;xRwHFEbebGzfa)U%!|y!c5%>#%$AI?T$6Hkw5vQd4C_2{&Dlm#g9SD&%f**u869%;U&Q zQ<$4Ckn17L?auFSYBi3xcu{CEkdDRU-i?z<<83eN;>W#tIL3F2n;3;$4VJ1BZth23 z8qM6!M($4)UOXdP8Sj=KP`r5)=B62P-;}w{m>(&;cp+?MF*hPFH)n2MLY^JP-2Ny$ zj@JzhwTGC}c=wx4BT^k?UGdnlvWYX1mkwcW{)jv~fVq8w`ANcySMydDvjDk2k-4e& zA-39vxjg}SIZQ?+lNpRWKSFj-xVam-YsK8o5uU``I@E4uGHJY9&7q#%Dd89sPxJ`n zYV$uCF*m)C=WTg+doyy?Qn>CO7vquZlbM^9$kk!Y?Oq?zWb&}PKQAt(6Y_G{J>lkZ z=8dG7gxe>DC-JrjwVzu}ybJM|thcNye%e)e!!(#nJ?pcXn>NTx`!lygk-JX9RWi|g zkt@sGyo=m-V{SJfcjpNA7sQh}^kbaN8O+VO$TP#--YPtfH?I<|&#xxl|KKt1;IOV| z+{AateJ|#wG>>}r1DV^?k*hAkT^1KJ7I_{fnsDB^)qU5r8LwFo-Y4d&3 zM~X?~b$CoZTaGDSn^V%|bt`h>Yzhul}gZPWRiCKJb-eI&aVADFyxGHJXQ$h!D}QF(!^)BWQn zZa}WTWNuzWp5@H#a^(5vfnO9Cv-=lxHMsfA&1uNXpE0+WAopv87q4Zkyw)BC46mR~q@Zyzs7;kG?7ssns$-3edmX%EmLhe^EH+LZ~En;qGAkUYFCI-gE ztVdp6#@rmVfUbr-{17?W-F8Q=?w6k=6u%5vIhkvamv3Wko<^QO$=t3Gp4`1FrPbn< zk{IuvUsBKIhvk^!8QIDvIwH@eFgKSWSC28bk08$;67Gh?#mqxqn#|nPTu80@YPfBQ zT!#Ssu(+5Dk!N>GF$p)fAy+jduY}u~!sB>-cxt=&B8yMw|ANP4wd5IeH#~j@{g6d8 zqH+!9#v)hMaC;qcw`JIUNL-hSL%6!Qns`6OW6Da_=@D@g+kQem9jf?ri zQff8dA_Nd~(;T@woVo2UJc+lFa20k>zjMBmk7*SqdRg4WbmXOQ2PE9AMXnCy-R=J0 z(1=_+;rjBpn6r?p!q+5ih`Fi1j9OKjzm~_`o+>EkY~*TcX2VVAa?_pn^nkFALjPJZ#PXQj<*zk|4?5k#ia3`BkSS^ zM(#X0#$6RR@n__DN9N`!SCQ+p zg{vFmVpbzBcVTY!Sw&Yv9wwUXZo42akC5GcQp}aeH@;W$#wXlkZXQEk8qK@guZ72V zZ`lghH_K$wcz65`dmbB(xh0fiR!b9@ z+ryE&I|9Egp3M2kvzwTk>yf*0%U40U6UP4|DzfzlU`z>-;JAC6dDK2J@A89h#N1^tZn-0kHADP=f3XkK>XA9SV zt0vwj@R;%>S?BJGn^=I{FJf-$t)-rIs4Cgro`AeOQ+D@Byn~Uu51E_0k?Y0G?K{Zx zF9VPB>i#owT@5z}ucOIiU-9m?m+&}V_nvTlcQx_e%*WIX*XTWQydJrqBF7}$tVHf6 zGq-#Fggw6#dQOVzgxt?zZZ1cz!wr+{ZvT$lhj%%1_r{a?1i5-dib=SswVqm4o4*Xk zyW2Lx<9Pin*hyF|>%2qHp z=OTAYq?lxP`xoTCRk-l)k0XiT89_ zmpm}~PDbRW#!ZYxUiyW(c@(){%iMm(e09hx?zwyI4HR#_`D%!{IR<(8D&F1pL+*Bz zc=eQcGIt=?jhLG^k^6(0+uwx8@n##OcKtv#@izIDM&x&wW86b=6FrctJ(-*F$o+oI z?KI@sA;Q&zaWUT@FNYs_Cfw}$8?~CRmk}l0o`Ss8E)?@fT+GGD)tSuA1ITq3=61gD zINtK+w-bK2nt1D~I%+GWlDk)TkYju@(c_S-4&e)2%*_DgrDvGizcHT?crwwqkY{f) zH|v=15n7FRw+C!NlW}!qcl}Zv@7c)xsm#rvkmqfg+ZTn$@v46EhTmR3cI|f$jF#gu zZa{de@zdl3733GCcHfeEE{|buPDAboGPjo?SN-G@s#J%#n1_&;2g~jWH*=BaLzvsG z|3Iylh6#5a<6@3Pu0}97eUR&s%(m)>6Z4plV{U40O+EWRF}E#|t80YoE^#pzBG=b4H@6{o z*D<%RA@_d~?z+astU<2EGdKHgLzB_hGq+ZF9B+AZydkDE-s|uff1@0u&WxLQ7P-2a zxmk={-@@GPRFiskw+h$Y;$luh?k6xeBay4yncFGI^+e(BthksDkh?pWn=NWltNu>r zww3TWUU!3Vb&eF1#@iQ<(Rax@eRkZ$MC9&n=H?CL{vPJ`2jr?O+$Yys<85g~`ab5S z8*(?9xxE^>pCa6Kk0rFZZCb!kNIL0PAI#7&&V{AuQ99CH5*bNg@P>N(;1yttSzk?ZG~ zoBG>ftJ9cUjoiN=+?^j6GX%MMiMhE4xqg|s{YZEmZ+UaPA*M9m8rxIP{uMb!WpNWN zkgHdjo8HLvYs~E}$ldG0^#yS;uORntFgL4^tLe<`-t}lQ`YqwEXIxBYvXTUi5==w&+a|urY&+mi@6JNMxnIZJ3`DNhGq;nF>z{?YL2)r}BX_?rH$Nfw z8<^W>yKI_F9Ism~+=rObcr#fSKQPj2&Bo7i?x=>uP27mwZNc2Ugxqh*+4d$i;a<{vb6amWidX#>;tesS@tz>- z;&^=>IYteSn;48-ZO7c)ja+Zf+`fa{)f29V#l`%L+}CGr4&I%v2DJloYmn=P!rh3t zm}`-{9hsYFko%pO+m*tTySKJ*A7V=5-D?l(S??chY8j(7Hxj7fPK9ITn3vzdmaD8!H%yY>7!OYDPT za&?q&eQ8|G9msV{=H^Z0?r7%rN94YhaCdoJ%zpdOWYn?D&6&vcam?*_;c>jGnQ$Ls zO5>e|$N1K=PK}M5_y)Ps%+0R*QqQ^#b9)MM*H*Z`A};1)NEoy^=Ef!v?M+^Why`!z07-1Mi$nLP(ojTq6Wj@m*gRaYssO}kOUhgS_A z*{!Bhs`%Sd)27XKY5YI1Rq;QgzkNoQ*H=o_Y~OESRp*|Asy1FK1-+nY(`HRZ_8jm< zqdIC!rBnl@RIQFfdiNZ7X1_sI9YZA@)tn(?YAdB`H~yci+qLS#s^L|GdsngjKmJ+& z!o#&^&73{x`Jo%GZTR!yqkg|^$sWJ|fB#>9*4gp>=l?Ko?DC~`7LK~{pxXZhIT+iV diff --git a/interface/resources/avatar/animations/walk_bwd.fbx b/interface/resources/avatar/animations/walk_bwd.fbx index d69963111130e3ddcce840281b99a9b728f28e56..158ba52840254aec76562d3afccb11dc271eeb11 100644 GIT binary patch literal 1194352 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 JH?-XS{{Yk(qgDU_ literal 312688 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

      UP?E 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 z zc2E<7L#X$wBB&s><5cmbQ&d5CGG)8=0ySsuC92UUgPJ9Fnfj)EnW|c!L5(_mk@_ui zfy$b4hBAywr20#oq%N99Qwd|Es7Uc}>U+ciiuIxMdJt@5Jd-K>y0NND4dL#oB0uxC zQTK|^v-oYMWVbe6F+pw{qd)c8=v5m{%s>U$kO>dR8#V{xq7$odt?@Lh{?Htoe9^^+ zCQIS2|*W!Y@eK@A^ zB)*uIj>}(TTsGtZ9yawQmYdLkM^t>rMbBGtk!c$)s{D=SO%wdMTdp zC?9WfyNJWjCgF{lF<3o39P57Wsg1czrtmiQcBvtpjf-D++i;)G=Xv8DQ?gqd?M#r{ z#*BtO8@*~n@k{4G1=y&n2txTEHzCcn3sGtkL^5wok=Oziw2=4#x9%*5{b3&Ys?n)sHR#FL8g%DRC3362kKBG2qr0AYh(ljQ^v*o+R$c#+&0#H?X%IVHimxdk&R8Z zudqi(Ic|ShfUAd{!OuS)#`4#<<6YxtV>us7{ABw;oNA|qO2^?eginc+8zI_ z--GK=G?sI@h@bnG;4fcmaII+*KH5)$D$MFfy-nAmwpb3LY~GtvbLuRpV`IipuA3~W z39l`wk2RyH(T9gq=cW&)h+*0kD^;1AyIYEyk@FXeaT@V4+gI3yXGjAJ-llVMu=r!@NVZ{WwZS4ErXQNkbOm6Ox4R6&Tj;Y5A&c3!$9KFSIoZz-< zwzuACwx8=V_JQw4Y>uKhTk2Co(Z#l}McW5RvFAP*&t7M@n=P82#?G;R$2P0dp?KF30{nsa4OD<@%q9G>T@g_By1@V*=~Z02Nv1I$L^)jx*fo!j(q zV}Av_!Q>YQPkzDqJ0EkDi#q&-P;Vv z?cO@%`KRinRf7_Fh-qK2jT=m+@HW18sUe&V-QRp{DDzo2=C<;&v5pCH+rVvoHhR^@ zu3tT}F~&Ltx*bh`quP%`r{Ra-PmKV0zh(_QIcqUwrO$$c-%p1#(PwG>lolFjFQz(M#or~ddpHi59`ZgqP-i7_n z-iNQ>K7>lHkD;zlIox~ZE-dxE3B96AV82{8yl9&X;})mGtxo45X`KSkGwlnu@rub5 z-bTOQog?a~A)Jk|?R;!3;`8~&2Bu`U&l{mkklV)7KYccO)kf^!9@)rVV?^ygH;k%n z9ZW^V7*O}q)v59yiqvi>M=9Ttp=_+=sq>emsR{FcV)qkuIO6m}{PST2z9-&}~DJ1hVi=8%#}LSF18-^iPoe3J?~E`74)MN`%6;n`kz<^eZcLeukb^~A2?Z3kuvq^ zN70Vb)WGdh6ta`0!lL?7hN{X`U5hGp;f@Yfw#JCM#%_>J zZjxmEQW^649R>1_xGK3(U5m84r%&p?HzM6Wn2|+MV@PM#1Tv!?lELgrWY{8ma{FyZ z^2JmqQoY5V^j$uQoH7TIEu#rCL~1-abBQH+xPByAJ!1sf9&JkQHZ&ybnDzzR&=%=D zP~mM%VfGY$-B>Tq+eY1KKA&%-G9|mUQOpFnZK#TM9%0|l#4a#gDa&H9GOIpN9ozYH zFY3y5{4nNYpDi8R^Rq`+bZni=Tg>G>EKZ<1kzTc z!3+~4V2yQv!Y>sNBc=eBN6CU3TLo}dL>W}w)Bv_C27n!Nh5)VH5x`*41mGI#0P=sh z0+zfFh_~AVA|8i=3$u@cGpkO4>zowuV|^+(@0bqS)G|Q!vNS-BN&!^;DWGd~0tD1X zfxG_>0*`+o;CAI6u*P>2u%GA!`b%|Q4}xvXVlstaH+FZaA>8xEd0E~z43hc$PT*He z$!=}@VuIW@9A)}!^r{V6+0KCqutBu$K;Y&Yl=OKXidjb@o3^27>t$7x?$HJ(tS*CR zey77<{o`P8(lI!(`Xt=angJI+x(he_`U>YPQb2~E4Uw(`Li6$#A$iMfDD-A18ZH%s z622s(VA%{*DxQy~$zU|X=Nj6oR*EKsT}S{@+gQhB3UA|Nmm0#^xTe6{MqLS?-;>kMlI%zRyOl z+Avb+k&RtfV!+G8;b6?&Kydok8j$dO1}Jzm8YoHi2Z~yM3BL=EiOZ=R!t_=yadtk3 zD0@~(q%^k?WuH}mj>T|Lcgr3a$9aKfn-E~Fb{t&QJqMI`CyGL2es+`}NuARU4#Ik8Ct0nG)s!s>F@M zKW#zNP20bFPTFpmyxR78wxMm#q_;K|cF8s(EqiSCzFTKAX7?VOZ+}y4HYe2DDCB6{ zUMhF7{kbQ~_TH%*w$B1Zi63o-#Ml-`qTPKXQT8N^5Z!*7Xqb>i*u25S@Z8(Pe1iwX zoc6m!ariZ&A-{moTbNGVQ%E3cio*yChi$~hd#*%72qYrUm=fMh`+{wpWio}g@u*7; z;cWa-Q(;+J^3?vf^jL5pFgU>Hv%gttd~A3z zL2es`>U}nP)y6iB9@*GCo1hI_RVF2s%X4kQi_Ujuc6S&79M){mn@j2#&+~ zOCup`a~NFsBOG3JjDf-FX;6$!LGPsxVgA!+(6;C!{5|Ry9G)SLTw-L=)w+J@pSv28 z@Yh67hiM^KbsZ#jOBdCC(nXuIwbApq{%D-ICK?OX(8`TUsQio^nmt1jnb?V-iH^Tu z3e&z|8!wnl;cduic8;i{hHy5VvB1XeDQ1Y!e+f*8edKtpQ^Fy1f+{IQ-3V$|n=l+FI&tl=S05p@g*|Nr0-SBY`pH3uYaN1+3>cL9<8`Sga!o2b7A! z7n6U3Jh$HhY zI1k`sV;-OHrwV0Cc55Sv33A)`uG43uS8ZhJ_Q-~tXC3nRUWvA*-bNySIS9PUMy?|+ zAht#VIyyEQnH`TnN#7Jr@|vR>xs^~N5l4<} zUM)#Zox&oshWDv>&Q3ox#9~Lo>mESB=19?r`O?Q zSq{uk$%U;<`+{wZGWf4HmN0t?Z)5*p-Ztu-`Pe9CN_K0bh6!@p7&fTSMz7lV#0*q` zjr5dUAoubdh(3A@r052NyC=NC?WCFDX399Qtk4h)4A%sDD*eDd9a-SIRvzSDQ3ZSa z1_0NhVPK2+Brr#NIcOUb2=w)jfwGnh;I=mfO6h7K6Z{pN)f0z)a}?o#w;C`lMGr<~ z4Tc^pBS>-v!!NbEP_$4DYJQZ1Tds>hH?;nn!OySp! z?OkdJ_q>r}#M_3uJs%q{n3CPvXkmifHl`T%+2~apl17~a6=1_x|0G&n5{3S%ha!o0 zyOCDD7aBWh4qC7bqV0o*qa}ZIkZGJU+P6*t`AGFc20ztN=GcKK)WRHbra^Q;Yc9I- z*9ToV8H|2SJc6tW6H!b5bhPPa0czNB1Enr~fL`KiB%WA{E^59;Q`BFh@5L`sX#I1v zTC)lb8G9emxCFKQ$wxZD>F9`W3RX zOv!F-s2F#iGHx5oP5Nx~s*ORWJ+iUIGZab_d!a?ZW*Akw5`LdO8_Ib@sQk_hhE?mp z%;gHuRaG1&&16A$S_HoNBL#KTRp9g^dT{e2Gnj3R;H~C)@LGWnyn1mjOdJ^j%XY;= zmgX54z)6P&Wx3EIf(>6Ql)#VouS2PO*I^uW4K`)b&|rKK{Hu@y#dcqWGfyPLj3==$ zbAA-`^$dkhO#6augfN-H+sN)xLpU4HhV!;j$KtbYXbkN>k!u`Vv*Az;>)s8 z#9g)N#QrgUM4)#Rp*}r__#E(>$hjvEMidVPccdLbV*Xk%f8TyE;@JscJ?R37sLlmf z-HO3J$D1H)%1xjkdIQ|uj=}2zSHOzuGoUW-7%=}43`Cx-18E*E;KD>(u$pOKu#F@p zQ+OL?U1|ttqt%?Z4FfSg-=jXtjE@ZmCdh5$%qp7%muth|s+#Tume z!VB4-T!prXEJONZ7NdIG#VD+KF|tZ)ntek+oEwh=X^`XW=q^{C%gA5{6w7ume>Lo<~8(ZR&6XxG%;=xsMj=e5YC3$Xx=ucQ+(dx zPPgD=!-ENO+sGT)XQNkbY#P-g8@rBW;h*BU_!^g64BGbNL8#PR(@HV7IcaEr|hHy44ta#gSkDtx^_l$TkCA+<+3S@%ZHXe=X zv(c+IqAYu4qvY8FN|Ugo)~k)6n%V|Z?P+RM?(uK<&$cXlvUDsyk$HeUNZu2KI3O11o(`Ny1)k)R-z&(; z=}X8hF0Q1{*9D~ga96VU#A4Fu^9piqnK#+6(T_~E-Apb@+e}t7?F+V{GOqJLg|`8i zJ%wL4R@?BlK`HS0yG=<<$!={FFhOn`aufP&^s0^9%s>Ua!;QIS0ezKI@Z|V-YJY7T zrBk3y7f%{NUo9U`=e&n>$zDJwM_ba_EF(I0h$_AQc`M~r%b`|nSWWGX55o}&TR~Q> zI!u&sfhn;eP>D)}hlXTB*9%wSlk7Z5IcLKh-E4Sa8wIt-)WLTt5=c@@3(dx+Xx`N^ z=+{ka^xSPEa&XW`?$~SULySFUX*ZQov}wI7efGg# z+T!{N`hw17`fkE)dRz4y`tZp=^qEys#Wzh9ij$rz6iWok6c0{d75mP8N2e_-rGHhQ zr$-(Mqra>A(n_H7dJt^Gfyoqp-PqivhH%dti6n0utY|*>R5eV=Zf!I%L2erpQJ;-o zwIND&4pe}RZ0Uh{Y2MX2@ten44L=%cowDk3t}dEo)nazbx-dS{s^!W6%kLkYtz%1y zEtmL?u$&l~Y3*Xum}~nF=EnXU2JrSy!x())ea{zpq%?DSPHsjw-rRNsP|Z7a4Co#M&{B6!Fa4`QxwE8rnJU zb;F9Bb87i{!2q#oTyX z{an%KfmW=rwU$HcZe^dkJj(i7&dZ$rMM|Qkym_-{-kQZ<*(r zy$;LGNm-CLm1$qFjX)+-cpDjAY6xeedMY0qZG7&jR3>+xm2PbeWrEx`womD^(W^Gb zPwkP7ho5HB6K71O-;S6-YmBg<7iJBiZ7*umA|cB3v61q$kV-H6P)wh6siCbC z8)?ng?exuQV#RkV#ERGZi4;G&`I9cU|3DW}74-MEB08urnO-&b5dD?oM?d;BlU~8J zFW5#rlPSE7J6&oBXQSDXw+(~Kd_ET+Vb90LWG2XMWO4J$rG&e7`)$juIiFKd%Kp_wcdd;KawqGA77vBYRq(jb62}VS0~jTuINNbm2SdudW`g={1oCj_&lDh;{VF zwH|cw{%Q1IwmEIU8#pEDFBYqhhLT z@UGx-g!++Us!s6!2)YC{VMKU@r^MzBGPNeH-m^E*-0u*b&w zT`a!oXhl7J97H*(#Zt-XIaD0ezF-@bOs4QQ#AbAksH28(HipmQZG+{&=W}rnrewGG zRJ)iUw~aFAJ{!GiBYb9$Y#dm%fwOY=7vgY`1-R@}2h!G0ht{V+%`VX?z7RWHd0-B zWFvWuIO*LiMGnoABR>Nr@?4r4>99tNTt0LFdEC)})EGR7+>$?tteZ86yuWcES$kfe zd|IkYj#=NI+~cT1zWOFZ=1*mjBkwn$l_k$m>7RROxg3q2&CEsBQ5nb~^Ac)be+iA8 zdkHDt$V3+HxkyZnjkYbhj&7eWL+wLrP`1Qdw7sYioiA)ds=rud${2C7f@xo{4aGT~ z2P(Xc3Cy0tuNy1o^R|&#$>&)-o+;U_ja(+kZ9{5apN(F%af2DCfOoi?m+OJKEDdnP zUjnQ=DGtguNCIV5RiM0G8`NGK2(}dr12}3dnDCeY59dz+heND@(liqgvq&2>SPlS1 z?{&e0RcfH$Qbn+8s5~gGQwGhf0e~Gi9JG8L2W-miL1p}0;HbI+1YPw5iG#L-g2YY0 z)^0t}Ze9Vd__zT{3pem;*+S6o{4DU2fMESHJ@A!jU$Bj#^Z%=jdCZ=|+X!&wZNtEb z&*$O=Ov!F-lruqY8-o}2+2~apub6=fu<`y{FsO@;1iKnegLxy)gWHQQg8qljgN!TZ zfS%4-phqWywZo5tT8+ct@{7YjUOftoes>&rJc|V?FbwFZ>;iK~uK^b$T)><6nZS_8{U~FpzicydDJGn9O7fzi#+-sUh6+M%-dPHZ=Ks_E*W2?AFE? zCdh3AEb6n-t2Wx1feNspd#XRVf2=M!GS+}BI6Q=$HQSVQ`ea6q-aCpM^4F3adSM)y z_XEWRL<`!cis{ z?@}jqPW2~E7WdS~GA2`a8xdV<2xlXIDQ_DA^?dHBnwXN^+K^q+dCc54T;2O@^r{W* zrJVy6V8bZW0kq~%2hI_*f$8&k;QBW=aEx9GGIn?X%<=*o&#eWQ9{K?P?DgRHz4hSh zA0Kdpy%sFK=?Ml7Tmcl8xq+jxE@1HiM_};~fd_t8VCwG?0PCB86*U7vTz@?fX|D^; zIt&1A0eT?yhdz+c91LzwHvy{?&47p1Xkd^#77S{&1trf(plmV)+{$zSc1-(%*Nt6F zrtmh>y3`QPM#T!=Hr$K&yr)uJ)_GRCwPC~rxovD--e;p%ZCI`7k&Ooyhln>xQN;7a zSRz0wiRh=5Mp(;UA-qSj32mEegzKF<#IxlO2q%YfLUM085kWm50$T47ckYxB2ao3y z50p}ggPw83(yAK6>dHaHcRxL1!5ITW)L}3|hZ+&H z+eZ*nACDuF9#1AJROS$Ixyy;#g&Tl4LEBQQc3|+~`2FV1uZ5;9Fv(c+IX07Ux4OMwB)bM6A`j@m9Wv@7dWMYn?xU2E# z!`O3ZPhC2i=8=P5B^IF4C^pJ;;-Fteg~-q&2jy)|Lz>O;$TvC?l}y?5f7m0s=&^x{vYDVF$ASoAFX%y!z4!WF zoSn=|hG)V3Uwp(bT$lOXnP=`iceW)Hd~sVJymg9%^ZJyyl!?JAT8e%>h!3EO!ywPM}I@#z+H}cu|Yfx4;GBq2+2metvHovqJ zrzPhT`yDAJHrQWId|$YRSg%JtaqKNg?CR4}T)Uuy*tM~bICDxj@j=t>qHc<>ICVh> z@!E=};@i#j#9<>UiQTgm5!;016eZ!YZrgfAmv3pX?m)HKx+T-P>1@8}bgtLjbWbX~ z>x8OU_i0%dUHLMjbt9@Q(%BB#tm|L&h|WRyTQ{xSJ>7&_?{t%^XBV5jv=i6T@-xmx zJS8p9#_v>PSeA{7!_8+yn3B$Wsy;)~$;KqQkOu;X&>3!2)WxlK)19wXS9fM*J>AH^+;w($D(d2j z7S=i0XV>|yyzV`FTd4Pqo3p()d}!!>wv)a0)fUcG$SMIyd8f^A` z)!^MlTd&~amAsz1`+B_?8t7Fw_PAH=Q7^pucop<^`{wCwoZ#zS|K?=xv)h(8^MDP3x?i;(DA>gZDmV&8sL8q0_>Rb@U3ZdNbvK< zYPyln#=j%7vXQCT2nqP3Y^?Wom3B<1C^ej4S(@NjUGmyoOFA0jA!R>PPug|BTYB{v zOIwRHmYS4lB8A;)EZuF^SSoS5k+jgzP+I1MB(L@LrPkAGOXE&dk^E1TmAa2EECvEX|mEvgm8E3fd(HYK{~Tk@gc15&H)RkHu;dD47F6zSj< zK~}v#OiD~YK;qYjl8syTl1BgRBir^IBH2oYlete$5<}U)$-?^A$s(VJrdj(^&rD`bS5Ds^<<~@Ao6qmWHR&A9FptkJhJuuB9gz*N>aYrIudq# z15p}oCQ}Yq2!s1VmYS)jFTJ!di>^U|Qt0v3Hj#~4`UZ-iK{oWCz zTyj6+-?ATZ*x*lAEcPdnqlb}}mBx|1S4NWLdI6-!?g=C$(m<}9n?b}j6G@V-Kd~Ke z>W7T8AyLxu*NqXW#<1)?)!IqsvmvZnVLlu2bVx88&*(-z8x1CAWg}Cw@r@dqK{mSj z7M99K7L#tpm6Sd{E+e5*6{P3>Rix=bHKe4`wWZT#>PX#4J*mg?22xx*FX?P^FX^kW`D}EZl9i22%|@ZACPOpG#-md2Nc~-( zNVN42l6SA5Oz&o;1lwCHKiAtTBR|?JzOK2IM+fpKu910_uazB@XReNluqm(dyx)NHsJ{wNz|YPga){i=}@UY?|C3z2vy zHX|ml9Q4BNrm-Y$elNh zh*e29;%(BZ7S@oAi# zI6g@pa__A?`tNL{?Mw%<Ii&;|J7lpvh#%v#)W>{eVV zelKo3?HEBJ;yZT*HUKlO^tsq&1t)%%CUKe$N(=f{#FZxu3d^HCCCVi$R2zn+LA1IgUp zvq{Sr)BbR?_k_&PFUHEzidHRAX3{jdBakXM?OvCmTKIrIU?ubR(aQbMv#Zk*V33yWo$q zF|%QaJU99;xqQ?~`NP{7dBn?W^6kWb9o_td7Gia;a(rJPGZ}S22wjGUR>w=Z!*2es@yw^rv zS22gYqnx!&-sF-e-YqPbJy}6+)VzT__FX&q(c(dJnR+wj@L5ac7JWC!^Bac92Wj~k zXX6l3B)v`N^Ts4PB=~t_Io-%-BL9!}TRhm|`rsUhvT{@}Mk=_AoUp3Kyn^jUz*snt~9-# zhjeCkO=)0@%F^-qWu*I$i%Ri*^GOp7c2dp-*`)XXrHi!ujI&|A z#57UMvr(HWEzd^xAoJNEBh$&oYC0sCjRSNepN-#vS=q?cY#5jRQ8p57_mNT$50ZJ$ zj*%KCPmwpJ3Ay8@kQvdZN%;yfB;f3MqPu&6kUHnd!fWS9zKUnb+4oUo$%9Bzdf`zL z(q}I@AO@2rjaQT1#>Hev_$)HbcRX3wZx9KX)q`{+oynrY?a3wgHl)$(*5u>5j^uvZ z?!>)xfAa67(L_IO2C3h7J_%d3l`~9e ziF4z{vA<<8pz0~H#^Nw>!=^)GkzD)4pBs0It*`AA2NpdjD!s$Su1<%i9TGUCtJg`u8j@ z4G~L8#mbbG7MF09mcOYWt^2E@9&6nY0w-;>2X6_ zX-d*>eC5n*+`;_;zJBQ{PAq)^E94CRHdMh4lL)pgeHupzF?j!`OSnh+6t2?Xj#U zM=Fq_wJVWamn)H?Eh>}vHaJv4wlbtbVQ1o3sUV3C&rP~nS(ADff5;uk zEBV~|hw_W;H|0ZHk;@`bxI z-v7C~YXG2akhGp4!vc-Hh$n11}`zy04oov*n8~JQ3+MJb* zOwC4%Eq|1aeBb8d^HY}M+dJ0aduO)bk~4PWrxAznnWPh#JR{hv|2dp*(nVakK^)HM z6pwwb$Kjq0F5)RA&fuQYPT&irLb0RQCakPng6mD4giAg3#iQFdz_OhSF0soF|K0He zdbI2x)Nj;%6j1IliuwKtH7{(76Pya;p!f>dxoLg;Wkzf46yS$jE**u39iD;ne4CHQ z(DF0R#sNxNo{ih7#;`0KIkub6M$&|I*8J23r<08?bR(aQU0buVk*V46-}Xn@7(VVV zInVrK^2*hU{Bhw0c}mr5^3HY-WRC*R<$7b@%jKNE%L5h)WXP%Pvniwn}@mVYfB#)Hq=4mU}>Fg$->0eSVz9zri@Rg(7 zQ!FU^6nBxUb*L%NU)E5bp2JuE7!)86ojzNhJw8ZYc6WnZ);~mkH101sh?bvmHqKMh z@@#xgHHKx`a0xM=4a4Wdg5YQ7-X{I_bh0suZsfCZdPi0^GBq1Bcm7c}Hh1Z0)Snn& zv}!uTxJAFzc&OncmDjrWk*YPNF3-9l73&(oi#G~zR;7Mby;d5bE@gw)k zxOk;AxKdIWzLdBF*BG`Ow{1Tip9=HAhUT8w%dI%B_s|yK3K#JG{| zRa%}6pHTDJ5O$`s9`15FB$$o8bR(aQ?|ZYdk*V2;*!M@-aL~6wT^%~2kE6PxZ*~39 zAaNiHT{jX{9y20WFL9JovCt3VUAq+?F_lz)2Z^N^)uy4@_f16!maYJQ>W#B-4o^3y&lU) zJAaj%4b4vc;v7iRZiPtC=whU)b17o~r3@)zTY*eZtV|qlS0W$slqJ?nok_Jq1xWG= z8#1o+Z#l{LyIjZasa)G8R+is}%EDi!e#kf*^(krj>&AdoV_5c{D(JBJZ1`M|tdH(96naQTTlYJu4D{YMwiURvg@mRv+GuewW*TTu!V+ zAD#rEZtnt7o7aob&<2Z;A@>q=dG=DYe!_B;Ty!n6xxWeB>Klw|ZQq6(_Sub|MuwtZ z#SS3S{t&85%g^|AV-zJV&&HNiV_24rnB(TN;rBY7Y-A5N9ThMe#pp&p8$*s|Wg}Cw zQTg~EWn=eGD>V9c4ixb|FM4#QFq*xt6zb?-1_jKjj&4TPM4|2KqhN;yXv@3$sL3u7 z1-f{n-90_f62F>gQpL(Bq+wa)`ZPbPdOinga{R6MNVzT6xE>`&1RN4)ZrmkyJGf2U z(0+rsDtMiE&3d!A*LjDiTeDA`I5tA;wDi1K^}!V}An=A5+xD5bYwQ>CyYN$7@Y4!) zqUC3tjX+9To{f{K#;`0K$tTTcBY1B*>l&6kkxn)|=|(;q^CGgck*V2ea`KO|(f#!b z99?z;Zn$teb{!LnTR#lLyBf;4bksTge9C1k$0g!r-na0q?050%xI5S;;s)McG!B3E zK7$+U!*QXiyYQZ>Yw)Ye^KeAcaBQE@4%^oD#PyoH;GThban0&B_}>mW@zrTI`1<5L z*yURheEfcS>@?H^?^)XfyXE!44`vL)t!q!ll$>V-JX=8G6RGCO)w z#}0k%=!hnFDU8}|ErDX%lto{kS3sX#s-Oif)zF0>RnczS%4mU77P;6KNAdd|Q8v$< zsN>7G;)#+s#ded4IO4=^F=*}zvD3F1;wHyI;*@3G#6~N9#6$VJi`}{o5Qo;CASR8S zD?WO>Tzs-NShN{;K=ebW#Icpmi}#$ai=(?g6ysjL5Es+(GtNddB`wd!`&46CmJR19 z^VtZ_o6hS-7df4545u6UY{(=l8=0DoY04jEV{^0hy1(b|(Os!_N>}iAoUT=+C%X7* zf|wZWAZ{C7NL;?Alz6|4s~Fm{vRLPLB{B9vSuwmrVX<#o9ny>7t<~GdG39&ak%%AhReNclNsKQy{C8=>p9cATZtfVt2`mz?aH6_UfuSo z_m~q7I%`y3xA;2J>3;Oo?Y5h$+cssfF24DC-ELZb#@TpCNz1d5H_BvD${3bqW6Ejs z*>H(Y=kvxWIwbgcV+)3CafJz*K1Z z{%)hB<^EnyHHKyWdPSS}SJ;`(x!vuo$tuv_7IY);?`Zn}8Tz}Kf*JVR@a!BElL}4W z-|W$*k}dbQ232Nwen`{5K7X6{*RUp?@3EKDAwhrl(v7^o-_Mz5=$$Rq`N5Tjsb;F; zc27IqE#<%4{hWI&u1R?0%wpA&A>yGq)oANj5b*0uRCzkocU+zx%Tl3|?94STK7&68$<*(sc zol_})D-QZz*jf;TxPOhKQ~plypLsduugjyxRcr)7i0NxLFXeB*!;247{ub#Sq)R!! zk^3Fjr~Dn*v+$>szm9irwNG*Ac(={_Q~vth%G}q^h!~Th8GKil<4OUfFPjh5Q}Ur^ zk`vlht^jI#rXV`;tO!aLilL-S)@YCPLCn_enfPYnTX9irPE^Fz4jq^Cp{_SeqmP3; zP!}r+{nM=ldUK*J+T+~@tuNIDO>fs9<*q*-$?ImIiK7>w{JWPTuh3QKQ`?QmYROjA z@#HS#_~QV&UF-HieXbhZIs01{YE~dlphkmd~#krsP)Elyy*qi>7|aI2-jTY5D8MfK+3o`?{Pa z8$p-NXT#-vI?v}hPlp7v@sMuhvr#)XD;t@bjd#@046?DxFboGD9D=4*F3oxzn`!SH`~7w54^P&AFs9%TMgZU%erpIbzDR6sNH+; zyT_|aJHfE(7!?J9I#+%Ou>56FdM(s+F!nCE7&xVcqM^vR|+I$O9MI_lCLU8>O;+1q=g z2%$7;mSl%wQ8v`Fm4KZ33&{7g4LWf;7n=3U2^GCn1})!K4_(>egLV{}gREX|MkVVW zL@N_^p@jNV&{U}eI)6JstV_$!_;q6xB`wd!mQ-U{mW`N1^V#srpU&$>_5{;W0kctz zZsfBuptcP5*EHX`RM zb|U}g?n3f@?@Uf*YedR;)g`5NRVF`oWf2S9mx5&vq>jfe#Y4dq@?B9IGJh;%d(Mt!+bV^m!XAw^a$=xlM^*9ikkbyiZy1e?Bk5yYqVE5e*NaC12;rUwz(^LM1vWVZ#?I_YK>Xzt-Ctu<%`&@*m>+w>?+P*F%jQ+c^>;zJ%Sh0@-xmx zG$k$1#`{!bSe6av`{uKe^f8@htarJSPBw zA+t9bNxfT9OM4|4Kz5N-{(frA;HfZ3+YBa8@H3PvXQCTSpVRUveBnxA9P^#aIPTeJbYD_A4gI5ng4;s(t;4|Jr%PcmH(a80<&n zT)oM&n&U{B*^9`RHo?Tc&LI-g>?GNF#7OepI!<&o50gG6_7Ue6t4W)j!%3eR70FQd zukxj@r)6CUA~%ZLEl)3V-xzPxO5E95K#?W-pfj}mjI;5Jl9p$q%ESLP8=W4R&xT8t zbgn52q(g$)2%#JKY<&JFD;t@bjqv0@%0@t-Z`7p?1EYiz!=nu621fNC*fpwqVehCB zJ)EO{wSA@p+O1NqM!GAr{%NU5p)-~CzqTr0wp>zfow~2&wZ5lekU&nKnE!v)08&Py4pN;(gW@RH&vk^}X&EPxSy)IA13f+34N|m;u6@}tax&E&Z^0LGJor>e1 zoD zIJzStbh}JRWWO&r@;Q_X4RyaOo}SfH^voHiOA4ChU1iZec}>S{q-|0x$#*rG7<=9! zcMkL?ft9WqJI0I`*SkCwf6($X&W7ic|1}$ZsnYUnEPif28)RWR-%~}?A;E0iqZ|2b z)OePajZDqPD{5#4+4yyTyWD=oSaLf)iqy*fitMmXB#{Ao$;gU+B*E>n?6(Xxprqxm8`D#bVcF-6-LK4NL-0)JnvsWeNH81U=te#pEnjA3 zBU7_s|H@=&2H8mdy-QpdephT+}qK7R~pN6XJR z8w)9Ec{Yxv8pE<|Bz-WS4MSi$pEruVGaVH$8*X$XpN(1Xv$Bz?*^oZ`Q8uc+TSl_q zT2Jnp>rv{zzoHc;->EUi?yQ9#+dVijrXvs_+lcSP(lu{OH)peqVU z@Im6T_Nb&!GvprRg>2r`Ms1!{M#cJ;MhUjgXwLTn=+cS2D6)tnT3yx_EyN#1W9^sX zt)ye(?KT%=*U7;oqDDhef}neeX(A>fJIjl$M`yHbN+Ac{UPK zjbT|fetb?R8?(}RPv!YBoouwB8~JQ(`IME7OwC5m&wrE+*PTH|bmOFM)9Gm4#AS|R zv~>@$z({A*ubU@!&UOIDOuULeeAISfUvgX^HWCkr9etsLs{ zHa}`(cS%f)>muG6`Bi8Ay|K7FwyT(D(g|a;C-L(2;6VB9g8h+wYV;8we%&ILsFP20 zdy&T&z3y$~sLK`Pg##zZPY=f!E5r^mZYro4U+xSt&Zp&PoQ)_-TAq#9sm8D@8%4gG z&jw2G8uboe(#ghPx{=Su$*)=2$kc31`u0cJcs00==lRJy!i8yF!>*q6^=x_beR#+5 z{zwk2f@e9E#251?qOEn#i_fxub1zwWoBRGl+uS#GE*xHb%!OK?I$jJb*?X_M;GNf_ zMPjb7`_-z2Nx43G3|#u+$jZN#hMk$>@4m;XfJepon>-rUKjU66`$TtV!_u&WK9j;+ zrsne8U1xrH?`AWOCT{Ww%kgNX=dn`r!t;-f^fo>U^xQ$q&o~?RC~0{%9KM?@N*Tkl zY`Fh2pAElZ>3mN$oDK=Trf@CozHwa&BLy4N0|30=dJO5Y2=Qu(n*E`R6a^&`W=2rWP3Y<#1n<=Lq4 z>wnEgyKFgxlpEqo3WAUa4<9tF_n1K=hBq8LYFz(TNhQ;HPqmN^31(v(-N@i_H-WsqD?~FNtV}{+rr5k+2 zbsJ}sMr{6w?c#6YZ?BVac-f!0a%C%NNyF^Yz2L9dzT!W){(d928ykq5cvZn=`wc@M zu2dvTR_0L7v}>x^P9C5P-O*hc)5J~rQsO7^$vdAk_8{IZ&J;uiTDL=cTaHBWPv@fA zH&-ITc0Ia7%g;C)g|e9@YI!yqQl;gu8$)xL&jt!h=XdcCIwY74Bi+bnBd?WdhFSN- z`j+o+F9^cH>rY6^U!N|a&JHOzVW{?fH-Q97$L0$3l;jQuTyNxh9=Z!sE)yHc*>*KK@b#eKGdbnM= zCb-f-J)VERJ088EEB;-oJMQAv4}UG}kGF5?hhM(#hmQ+`@#h{RaGu%$cyX)YxXHvp zxK#~*-27=joK(FZK2dKZwplg{Cl#58^SqmnH+`6kD_0$l7mpl>rxYB3TOaR_U)1V@ zD<<^B&3AXlUugLmXTvSW|C)_nRB3rO=G&OhM)0C^UN@rXkYF}$(T#jIs#s@bBU4{D zo>4PPy2*hV^TctG6b+)7KkQp#?pGRp4P zMU^SD@+s(iL1lP!ab-#O+{zpO_e5@MB&|zyC2@yxlCN`fkk%zX$+{Vr^d37;XdHg<3`PB5bvN`CL693yO>hciYBtK`{-bPI zRlF#_@^Y4^pUopWlV~w0qBxpatTkGGayn}8VH+BEHwKNH_7F8J{}#n8wZZ$|6u~2U zmc{e-m&Aov=Ev5g%ZazoN@A0+iX>$_ zN)Ek0L)_Ozk=yt7lNt>+lV>Z(kP-$vqPrd^%h#ji#{op%xcsbqv%*EW6)ivGY|N#k z<=HrrY7EP=amUeoHj?V3^SgMVJf@=pW}`aY$Y*1E-mGk7YBqF^f0T`9JA=^sk2BH2 zZ9UPH+7jwDq8h4MsT8txvOzEA>=T#IKdpP|Zj4-#Xs7$!vxaVyb&_t~svL5@*G0+k ze`gYxs|SfNaWDBkc`!NM@{_URlIkei-yvxBgsbS+t8*w{$!X|RYzef!i4S^gcM$C? zaSxri{R2tW?eLL^CurWG?PyiemFQHr<*1yn6xFD;1l0-&LIY{}8E0b~B`wd! zmW?m@)5*rXbh6==FP&_(pd0yYY;elTMy6&%pZ|}tk)s*HTL)LfP3q;x7h4Iq^zmz` z{;GqhLF^JVdRITxqkS(_D6AX07QY0Q->?-O8@5!uf74Ok&?ijne7OiZJV-=e?FXW| zQB#rIlNso7doQ$m%jU?ZF~!JhpE)Fv?#V^$`3zz7GCnofofO@)K=tc?~@r8-afNN25Kv zZ=(vs-yxxQG74OO0UbTO7nKeijxM#ZLUxzkjk;mgNcQs***)Tc{H56qnb_Kq!!umS zu2P<)?ztx9V)K?Hn3kV$Hf~YU@@&`?Hd&N1hGp5PS0|cCf&$q zBcVuEHZnCE%ZvU|HX?p>AQ67u$g+(+Ne`F4F-KAVS*K8Qx|qh%E7wha~Svlz{sxg34oydD+!upLF} zRv~n6Dmrjfk6LUmkJgS36EC*7t2_33edP5jf6M0{dyp4*T*%VWb%<@{CgkzM4rH~# zmlXclft;e{XPk{sl(ak>WsCi<*=SWFoorlB=RMV2IwY8l&2%H5jn~DqvXQCTINrwVxTuN*iw@*ngwq2X&Ul=n>NxLmG#tfm||2R&*_d6{d^Y?%()kY8NQVToagA=|vr(Z;RyHy<8;_}>8Dt~KKPhZ_ zlf|BOOVkOQZhR2de_&FWqo3aMb=301TPB_ipVnYd_|NjLo}n>?!$Uj`o-v(YhR>dM z!gG$_!SJ;m5hFCH&G-14mGmM6S+>Ehv`o!5u=^e*gSTXt|*T;t`D@s08tBO6uM zmESSLJL&n%6Mlzm>JWWV&r)l9c=+vW=@Gv0rst;Qgs?gd{XDu>c5^%H*Eg(2%^q%! zWljB%aW+~|((>1h@u|kJ?DK}^-_6r0Ym1xyIW!zGe0cx9DOXpGj-vr8DhNWhh8!QVm zf*5Me?QI2!8P;%nivTfHfZN*x5EJy=-fYW5GbR2URs+WL+@M`xtP_V#g|YVBpgTZJ z*vVlRVC-KGdk11DCx;bvg$xk{ZVCv*$ZT$J17Iwf!vaAJwdSxe5F-yb><)+-N_N$@ zrBwxJret6pEmj%Cgi74r+JhK*&0!Nj3{~Rn-2!5Up4?2MVQieIb_y>+Oc=opTA(6i zh_Hnlv;l}2YH~B}17f5eH|PQwE5cz1K}^WU4SF5K&^QkJ1!CkYH`DT!AVUmCxxKXl zG4zz%+h`CoH0JiU9>ywihA1G0a&voo0%8Uy4$E5^nkjnDVV)o+wBcsj1H{O9Zf~W*;~9CXvhW*lR%6(arO>^v5nl`f(|aIBo^n{u>d;JuVjNZ# z#0>ShnRWy*QjNnVftaBchiwHh;Wy`742%urrtliX3@@bK4r#b8;Uq0EL?1O!-rE1rRfYa&Iu&fEfDB88Q~e>^W>Bj42#; z8pI6MIP4jWZRD_gwID;#Fb=B=Vg@~j^#U=pfot-)FgA%hru#w6(2v8ef*6sx+P=eB zajv#9ZlED&xj~zQ80pLHEday}>$uw1z?hNSn-RoFO%8hmVkn85Lay4-Ooaoh1);a_ z|DSei!`K53(}Nf~!C^B%O!zfkJLql@Gd$w5N7;#;r#gafwaNz8<@c?JqmBXro7z*d6&>6%?K@OV&VrV~y zZ3i*3ki*WySOkZ?g|XrsR>TuD#F{fi1Tj>eI|}|FMt*b0bP0$VoVY=cf*6Y8rf?g? z2p{L{b)cCF8@atz0x@)u!`gwE!HS#0co;jw?QJuN3HLbcEQpbO+@LQ&EagLr=KPkw zE@TKf$_-i{#0-78z4Zn$l$-02`5-2wOu;YJx%V#+Ll3)Zv1>5aoZH(^5c_Y?)F=FM z^&mrp7Tio*f*9(3y7iIoFSzeK!%`!+@MWh> zK+I5&!}`Kl5e{1jW3RXmDThFevi+@QZhm8R- z(w>{b1`spc;Pw^;VnTNgdkSKtHaDmvhGvTLaabJ?6H0PePY@%+x!UG{81m+@P!JRD zaR(~_#0dZ0;5QHx3Uh;&mOw+kaLH;0V>!4J*9Z_ZJm>bd8pZ~2_C|u3!2cSX3}OZ& z=bJ-AXr_W6H>ewkp{g9_3u1;^9A<#AQQT431!6)oZf~(L){EQQM;No?_U7COG6d!1 zu!bNe@W0#*1~I~ar@9Qp&@OJ!;~*vs;bwXt#{S_j>&DPb1#525Y9NLlbB)vq#=3EX zP6jb@o7>wq5ECYGd;1&2kS{ldH!#+V8?ZTFB}`iwOZh@F^(V@4Acl5z(PEoGOeoFm z?F@*Kl#@g1L7#(|kn(FqYRst_Xvhezwt6s@^20&uz4?Kd!J5P7ftXN%o5BGQBW~Q@ z5<$!m&tX46?7tI!>M4|M4jM9&+gl3|6Ham1NDwm|=j>ezVkDl!WDqla;s$*TVnRo* z$#b^=XUbn_bS8+Q6I|-|z*t@G91;g&ZgnBgl|TLg?vT-1NqNKXP@UFr_B##JafTP{XsT3eIJ+#J z$Y4GQ3bHsKeQh zNKDEb-kR#PhO^(On2s}iE|qbHt5@zbSsKHmsZeV;yOy5`%^Ci(6J&VYo|Ux2sig%v zLzs}~C^ej74PfkEs21x3V`IwF6BOOsrp{1a*e`S{1|7acD%IwN{T#=n{Nc;h#WbY$ z@UdU}n2tMqjj2p~_}HxyOqS;G&7nf=;bS*XFrm4_7up3nE^*JV(!)m&Py&bvW46)b zLa{tuA;a0PlPU%o-h@iEhO?g{nUpttD%Ej@tG{$I9cOqrm2rlvcatz#8pA(PA!oRH ze+d(sGrWWkWca~Y^#z?;+6csig{t8c8vfWHkm($lI z)gC_fqb`&3htG@Zw1cZ!p}G2;yFv8@SRJM38`_ecyMg|xH!Z1H+WJ;eq1Hck8xs?ntM3$8pKwKeIis&c z|G?M>HBb~Q*&PZLyM{rTshhRD`P|;MTZCG|+7n7w4 zlywi&6gk7yJH43DoZ;1aKn>yOqMi?_rJX=b$hDuo08wlytw#HXja|Q?VvynIs8nk> zyI6xsdBcBEoz`%6EeO+bhS%u{bvV2Ajmgp&KAs9W!_}MNn9!Wzn|nfr6J|KI^el)8 zNtdYM6cc)Z9j;!xqGFKYb*WTqIJ;1VNqNIZP@UFrb{!1Uafa`vGHr*my91dljp0wI zP-{55UyupS8J^b7)rfmjxb0?Ff zX@-wfsBH#zyC)NxYX;{&P%{MeQeU6x;cf_GLY`RlbC9VkruBggXV+7ydxH!Qr&6uq z?BXdV1G4UVUXtm!hA27^Y6y1gI+LYo2wy7HHUztwoe9kuZWss|eo$OR z4X2jw0x@Clss^Ta5)^w#tI?kF*!7(%1{q##kjVk9;p}2gCglxpPjy1G<_xm%UIm6!$f(&;YrW#HyEixFw1gB%vaEf&t40SlWwv}PP z&nk9~f-HOy2gXSllR1e2v{h*ngnZ3wmw z1rwSxeDpBLa1yZ6bjg5f>3R?o0#w7P^NF+??J194bFE^K;kk#K9MBrhF0f`&-tb0L z#~H3(zs+=<;ZvzhYdBk&gUQku9!Z5-!`V_DOlZ#VNvyIYuA~MGyD~mafYjFmoQlx!>b3FrpOtt zu4cl7<_zx~067^jMeT5EX&@a&TOV5uMa9zA7Yo+M)<+`!ihBgHKO2K&~ zG!4O^c$waGP^{}nup!iY0aOfXh^17@HH3QMKa=te5lwYmL#WqnFdf$rzo|@XI9o7= z$?EREp@sgO&cy2=g{nlt?RXvlEK+-d@;rN2N- zIHkVEP^{hWz8QyFxWO&Ulo#-irS~`OcqpgoEWTawg>r=q`*wRK!Xs*5|V10x&1pRt6 z?>J~0LY&$V6l*aKY6y0Jj*3AIF_TKUhEQ+DVN$*!PEeh;A=te>Ovg3EJ1Wx}&enQj zvNR3hHXdvUb@eAEG-tT)c*se|xUsY$sHFxF6ZGoUArw1FtKm+0>b*%S1{waIN;$*T z801yJ`l*Iftm;It!`1t;R17k_AC+niXE$LnDR1}&s?!?I?(t$e&hV>LrZt?c7{+92 z3@TtG(7!#T^yul>MaF-`*WA6tV=#nRSy6s}Lb&43Bb)pr}L@8D}S zf%FQj?31Bs2;~y#yF7|{Plg(T-7}|RP(zHRQm!G?8|0XjZ-`K;(>4UV|BmUnhIm9} zTEp2gZA_M?A<9pI8iFm{#)Re!Z#4ySGUb-|d#~I#*$~eQ-mF$=-jp3`QP6Drjj&Tdp@Qr_^XRHrqZ-3QHdoZ;bA#u=`z z_{n5x4F5!hTEp2IpiF4a@Dj5j!{4k?4X2hi0x`kfjT%m|>9Zlj*?rq81{r>gO0|Zw zo3xpfH~baVX$@!hfHNIuc!fEpN;$*TMNye7jo|~RP-{3_CY1@z86G$XG91~ehEq$= zf%UOvR#hx*eKvDV6Vukm7G7mSbM;l93)M$F)z?4z($yKn1ZVYyjbcHx8to~M-BYh( zP(#E}skR~54fIUPH^gtM;~GM}KcDHihNwFaY6!LxEt92bhzV4vHJq(Y%Y^0(-!cy} zJm`k{mYP}`4Pt_uYBAo$;Q>^~8LqBPz;vA9d#FsC zK(<&flch2IDHUoBXUq38p*h1H7eIywTv6XrQ%mcBm=LAD*`nB}1(4xvEd>>W4Btzo zTEp4G2~5fx{($N@!_{>en2s~N*g~ko*?PuImd0>B6>^5FD;zVSIm2fxgba@>qn=Wz zr4e9#Y=vYMOIzPJus*hCG83Asuk<3Qz5qdO2>Ld>8Hfq5)P|tgtVK{muyrm}3~Gpz zRLV7kx~K({@(uBh>bQnb*UVr#t|6){h8lt`BF$uJ8e#|)Y8!$rE6s%F3}3z&GF&*W zHUzcw1dM%9KgUq)1Fc5;8pGE3P%+5xs!L1`XboozdN3((cwegH3|H3+VLHz6jZ~&R z<*{|PnJkUrcc_pvT)n}Z3C$U96$lw_a8%!PP)jR=m|(AVIK}!0LLJW5H&HRj@J&>z zHJmMG!lb<6SE-IOTwN=L={Uo4FNHdsEk({`X$)^og<8Ye;^a(d&hRlyA;S;uS5GO_ z(*0n4Y;kiHOIzPdus*ijITMxi*tj65A=uh8Dh4&g z0V>rt1Y2l^N%@9&M0H$4sO#7;9oG;gmq87|)_-TRG!4;{3bhTvR)l9lbB51Z1{wZl zui6mQ(ohf+?x==S>|a`q_LRrg-BB^f@KVc74rmQ$i|jBdZ+I7~(;Cj!@L@X6@TFA7 zo$}Nr@|i4+;g_k9GhAIXp9#$w{%JX6cw9f#aB69Z6%Z!8Qw^t>&kCr+*_uNt1{oei zrCP(;0z*v78-9-Jw1%_wiN1Y28*>9~f-w;E~)_UHyCOVbeTsZiSx>|qW}XwL8nt0BYN zty2xBmTmztp_6Jj#ct7RxKp0G7M6-ZhC8h>IiNM1EqukKyy4BMPHQ+@SBvR5!)H>N z_LRq-Zoy<}43DBh&T#d47ffi*@TY4a!;>1TZ>y=Lj%y)Ia93B|p;*hcP=~X1z*Gz} zd=`~*hO3KyF)43&1l4hdt80oe9cTD^D$^Ry9st5*X$-Hu&NM}>;p~whOlZz<{W{3W zpjYZwH`LM!E1~eriKdtowSX zA=nyiDh4&gN-EVh1Y3}eN%@AjKy})NVC%gx9oG;!Hkc~q3|F7J!enV0q7fBp8-hKD zg$d0WK4b&r4rmQ$i_tMDZ@3rL zX$@y<-7y_!_*g2_8qOX}!(?d;52HfPaP?6&OlZ#VI~yUx-}F#VdDK#?O%NvJ=|c^t zm~Io);cRU_6@v^PN2OZB*+P6w${W6)>NvyIb^e%+GyE}?X$@!3?qRYthP!SyO;Kw& zdzudunlrrhX2{8d(Q1cNOUHnia7$gXjbeY%YPb$p*CkXj$nbxuRBJd}gpf&j!%J>4 z8NeB?u1d&soZ(%mOlvrMyb+V7F?*Kiz1k4e(oY~J zM7U7HDOPKnY4%#f*?O5O1{pqxO0|Zw#W9(bH$0f?vv4g!8K56x&9t(HhRy3RN-4@LN>M8Llo2%A~yE z`F21Z&ek1eI?nJGRHikYJ(-Nj(ipyw3bh^1o>j(#<_tfy12Vj31=VnB=?xGQZmEV- zEdNfZ!`V8iDh3(el1jCPvqe#vls9}P)oDANt+~o{oZ%;_j5Az)cpH9=DTt_QG5c*B=`3mA_^brvEt+>lHE$!Zun!vceD~JorXff)dv1&1MVf^=DQ!yOw z8wTRR-(Xyy4B{j)-gM`&x}d6BO#a=_RQ(#i194vo#E~%p#PuUVoSdS2R~H*qiwOpC zmqYopnU;^G54fYa?`04t&7DA8{|m$o2j81&SC`IIi>bB;at3XswR5;{cMvxeg!isr z1mZ5CbgJsIl4>y#AdXJZy>qzlQxNy70^|B3d!eZc>uE9SB8h4-O+nl*N$nZ>pgi?3 zjRSE*Q+V(Cogj`DtF@OkJuFNu<|>FA4vjJ$RSx&H+6PV55T^RB-Miim#$}4Di?6B0 z^agRX0mglUK-{kcZD4NidKtunhta*O3zMnEyaI8u7RG%`ghI~v?WVqSd)K!DahGKE zJVT$Xrxr6A#0|UDp3&mIdqEsIQfD|^e-p(0)~ja%`oul87~B2ORD~#Ys#@H)4v70j zsb?`QuJ;G=U@z*7x}cI;%qkE!WLM8K^uc`;_dNsRe)nnZ9Ik&4;z{1BGxQ04YB6OF zK+YKMsZ-VBzU@Jrlvj<^;(7y!qn)%P)rD@dZY5_sgU9j274D z{tKEa2|Z%ES5I98MlHq*#L;gU_Z351;h>e=-xTpcMgc7JEQ46lJxn4bnp73AntN%IW>|# z8Bi_e9}p)sR)Dy#(;;xG57on@-Mb!xxL+GuySk`@T1)_l6OVXPF&yr@1;m3J)7m*) z9}D8-5cOSMP(Ur_CyeJ)_fFRzptx_tnx1Dk+_wpc3l(5oKNiGMd$q;rP0(sF zJ3!oJf!e@Y+&2Nnqv5^lvmb?~>e7|=jCzBxT1+hv_dBc>L+>Y650f8=C$)od{ZbJ3 zYff?X=2^8EBZvzh)Ds7N;GtT~OAt>I;Jxde!$4=O)CQ(EZmPw!1aY!SJ?Uw2-$@|u zx49!d>1lEO9vDwj`<>p@s1|br#7S=Y>cQc@HsR1ziMwi~cJF#m5EoX{V$>V{)MEO> zI6I5c2PdkBX(fz*RZpo}Tz?wGT@I;7l|CU+E#@7F2hV_U-_pk*XM`5&QPu8U-wwo4 zIkji#%~)zN(?LA=n(Dh2_dNjOF0SfP)#CcQFkV+h}m_`q>~ZtXe_Wm#0r=REs$R;z`-!LEQHth!a~nRc`P4 zd=cPOQ_ch_Q&n#~P>VqzF2sxiao-UjPFBLWelv(Cy`{CQ7rm>+Tmo@262^UhfVgn` z2(6u7Qcw4;uW}M{CfI&C^_@Q9Q7uLf;%GjM`z`?SU<~8>;~-9EtA~j``B5$AUl324 zKu>xc?px>-G*!cA`UNA0>l=f(OCa65dZDgb%oq?CcG7bshx={^adbkBHeCopJxuW+ z?zf#5qh7?S7LzR!nyS!?7Q^AbH9_3(HH_8Ofy#H4I5wq3BBAN7EPP5Dt}-Os}4|=M?J)@yd9<-Ix!A& zjKE=RUS;5iwNg=)N7`dm{vZ_=O{mJF@~|tv4s{G{(irBLxmcBh+XSGSMbVT;p24a- z!4w*hXv(7)kiotqpj$B^fHfpBJGGeS2nz!v0|NtSBAMN}w5TXGuOyg*fq?-et6*SY zxDiPK3rG+}HUKIs$iTqB;g*?`>X(?C3Z4W9DUCNUFw`qa%&s`X!obA9z#zoHz`*H~ zpPZNzl9`+819ORwho7S}$N@``)bR$Trll5vF090^mPqhx&q|)_C$4AjE&A6d{8OhG duI+^koJn`^BdRCs-q)LTZ(i~|F74Ok1_02|qIm!S diff --git a/interface/resources/avatar/animations/walk_bwd_fast.fbx b/interface/resources/avatar/animations/walk_bwd_fast.fbx new file mode 100644 index 0000000000000000000000000000000000000000..f2007b03b18d8e72bad8134d622de2c3508117fb GIT binary patch literal 1042016 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 |`+U#D;>x^+yj0<}LQyH=EU$skNO}FNn44ES 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

      Rq>H5{zuU8wriH-c4xk zu6NS+pBC>_?H^tDFR%VbT=SjX}-VxcjA*BQo2 zMMjuv4*kNEv35z*uIT&5UzfKx{t#CrV0F@leXaIC*f->pDgM6?UQ{RFn>b6>VS&~K z)~VKYhbCFS?_#o!Yvymwl-$f(r)?)|?Y-gFIGEc1zTS0fsioeHJAM$|gYvK$UIQ&L zaU5#@@!(Zt|Mk~cRIg6V#P8tjkS|cRUbMWi3e}6^)$o0hl}{f+?YE}=jBN9VU6H+J zK}}Q-<@Ln2U0)lI+KVnQp!(CVY87Nt|3eS6p#5!7bvlX%)lahCLF3Jh$cg4F*FS>H zX|8wj+NO5RM}BQv?nD1OUA?RJg>t=%@l>gIty-znyME9}>)qhi?s{jhcX`^pQ@vaE zxxcAmuCk`gD>IocN1rpED!biijhJW*d-{p-^z3+Jx%@Rv4<^qyH7L9^;QYe|0Uyk2 zZ|vP}js; zb5IeJ|BppYmJ6j!%ZB=!zJsZ`)_oJR+e!g@xBDjQmhFg+#ReDJAp6?)`2ECRY{2$` zu2qpbiUv9 z`9gL4QbQ9_e;sP}LN@JhX4(zZU#qhC{mWFJx5Z_2zvNHrmEUJw?h7f?u6^IcjW3n! zrY@^W-JA})$DSvyf<{_5H?(utO?%yJ@Z~$zO)b|8|1E78OwIXqob{m8ejVqmY>af@ zn{1!;wvBxr{B&n!UXA%wc&*i5ia5(_D`=#=cIe>d)z0f55C|vN9dA~MH3xggn$LR2 zn*A%rnwM0JHRr7qYhF<))|~7UYmW1cH4m;5YxehxHGkw6Yrg(RthsEhSaa`cvF4Ae z#+oPk#hQou#hN3=#hO=sw%S~@TCBNWg;?{+Ph-vd_r;nYPK`C+9TRJ=;T>x(bl^6N0sgRUTZ(bqeXZHYU8?C66}kbU@a5_oS3BvPpmXCGAw#aBEfk z0vgYA!yGgo?JryDCrH2V;h)IXory>DiR@bp+4BAlLFWFW?=_C^C~Dtt92(nS?z>L9 z?=?SkSFU#RpBIn(AH6v8dj(3mb{-m~$b>PU%?_*~Z3`P`#5MzqajF^gUFMI=0EBT0c6j{s65} zM*GWGJ&$U=ihSH#v7Xqr*NNLz*Jztx!yC;no8)A^W7=R|9yP3}_|*^#r>pm;^< zW-G>PCuHtlsdrp0bJRA+UwPe=|9852H?fa$y|WZlsdt5YsMI?@Xr%S7c29S`v)8*b z5C|vrZdx}V!-EhXLys;#hC!Wt3^h9V7(V&Z$1tLukD+IKA4C04K87=2`WRMx;bZ9h zrH^4&*YbwM{yv7U8~YeqHuNz}XyjuU+RVogA6d~bV18+XZx0_s<$gYflKp)Q?Qc{y zO#9T&aNuzjL(ASihC4lc470lV7~1uca@057?{pvAj}e`&gy0qTX492j(&)G(| zZDBU9bvoUJ?RC&`c(`y&WRGl)>t2zAk*Iz4tun~AZSwP~2ic-gouln@N32uzkD1g& zweES9OHl2<_gODgcj)-R_p_q&FiX+(s{L*ESd7*hHa=^I=9luApwG z@sQUXrT=#Jo1CMTIsV%ENmswB^;fQ6UZ1M1{{*|jem_lvMq0mK_I1}Ud;MC_PYQ&S z`t@&JBhk{21*Ycwdddq>YQLURuD`VV+V6|G@s%>K#sC#wr^ApeudASu^130^&8wZ) z24A@>uVFAX=e({5rFLG=%Em}nx8ZY?zy3ErOqth^sw%wJ8X!fS<+T+wQeHa@bn|NG z^$!Sy3)WY!FeyjQd2J6$?YvHrjiHU#(4oq_rhKBp>pd8fZ|wmYN#jx#rS9cM1^GS0lU&_Hmr~_=Pz0o)dBA62pG0 z`Ax}hY92_MS+nu=IP?6wapr=L;>;BXOF8-~-S?S-_H${SF66)bea7~_k~2f3SA%l$nT z%tG_sRB|iYAGv>*p>KIfS9|2hD1EO{`~Pa+c~rmWY#gCn*CNZQ)U_no9k#ArfJR!^ zt`Bq9HG5qfJ6sBcle(sL>#@{aV^JZWYSi!cz&tf}&x)ui|Nk57&8yLIX3ZK;ek@%> z{{Jm7wesoeS~if`7KKuKS5o^C($3lLnDG3pXM}0Uknnn4hjeWaIN_ktH)~W|uD5M+yUg>ayX3aKeFeZ)(RW<7FT%e~--**4IdX+yrq2p)9tEd{*tYvE~Uz4xK!jYG@PK|o9HJ?|8ZJwi~ z9NEP9{qeb=+lo$(A9`%vgC6&?$CIr$+ZGRhclb_4pFuC`Z$h?hlOG?O9-m5(+q6A< z1wYl}ZRTI+(ec*d{BZP{c%_H$4Y^4a(rsJ{`PNar^3{nf6q(;rS|Wck7Q${42S>Vjwey;1{5$fhTdRA||7yV0obwtE zO6|O^kd2{@*NzjFdG)HK!fVDT6Z$OW1Vgg*^#U|fUa!w`^J?dH>})9zF34*fOwBp3 z*FdSA*SvG2-Pg|R(XW+x^{S)7Yd8$a@;V(FDX;UQ-Mrd)_4)c8d42y|JD8etUgv^R zJFoj?V`w`c7(HK^SEF8q*HUw(h_k%bf=0?~&^$MH4T*7c`dQ< z?J=Q^*NfjO^Qvp4!fO-^$@01w8Y!=_i`=~0dG-JH9eI8K-?#d})SUCW3Y6M;JuVwV z8?Q5$D)VYoyN}Xuu@rHZ*Cx!f0;P6d z$H~Uf#%rAw%Dh@kD)sdm49W8P0vai=nU=eGwez|h0^x*Loi4`ozW*JDsX6C0;|eL8 z+Ig)Ep0+Wx@p^xyGOr=!Rd}5XL$bWChepcl_82#>c3zvWlmg*|*J`zf8{YT75im99 zylw-fc3!W@#?Z#=((jac^-`;^fvcp5v%I#4M#^jVSU0bBUSC5XobdXtze)X@x=+88 za^#%XZlKi8>m1n_+IVfcR+-nB3M%zA4TfZS&AD3IXUc1VHEv$*yl#d-xFE0RU~0~J z&A(R4rgmNfz*GDAz^ir2yy_~e@VW|yWO>~Ujg;2|ac*AiymnqE1;Pb+oeEQP&TA4V zwe$K&HiowPT6BvtuPJK37qnV0MV#feA2d>42XAomYUef2#&_a%%*!-={*h_=*Ha$p ze;oCPzVXZqhM-1S4c;GQHx!(e*RZ*75yQ@p+8cs%WHvmwdP~3T#}oSXKkm|Z@Qu^= zpSVyzEc+z=i#EOWYd>kEzrMSo{@Z$k^c8e#^l$F%*Y^#v>c_8$(?6)YQ}1gzs{i!p zCB6B1nmz`m7Lo3GiX!miMX1K-Dd_VRTJ4dWrC{x4pSiTn#SLO3O9CnSZ zkJF)%*2j7A?)qr2k3L)9sXkV#5@{;@V4SI}ag3?g!SSYz{im2RFP>rgz2YoW(&~Ap zVw;zld`liPC9jxfTF`c=Y1{g)CeMvcOvAd@H2t;aQ&X|6ADZTj%490G^ro?{<&d%T zp6sTN4b@F0V}ecPv$rx`IZ@MO)HgCk-0f%@_$btrRyopSfvLGpeO$amT) zZ}Q{Ow!L{U0loJiu-80fcUxT%+4VvOA^XwSe2(vI=}T|RVCb{g!!UhSL&M@M5A}yS z9M|u8yhoq#$7=nV``_qef1IqJl|NKp*V+>ksGYYk#vrf9u{x zeXdpu^sm>%>N~dGsbBT_pgw!l1$_!k&2{SI?gTCMF(qT1>iJ`xCE3vVOrL;4$i6&f z2RdJh$dduJ&%87l+0kQ0pz|&H@o(D#M{PvskCTqHL0Omle%_=KeIaf6eQJp?FaLo-xCbe$CX0$Ub;|0p>?$sr`D; z8`&7?zE{EbWd3>R#CAwevdmfD{N9%1S`yxMv7Iq0&ywu7lT=XEY9wez}PHiowPI{GJN zUSon(crA5Eia5(_Eoh{?1|4?uYUlMb1i}UDYxbX{969GT5R}?^9Vi<^8?P0Qs_@!T zh1ZiXB+KhPXr#P8IpXHk&g<--r9ikKuL&?U=e(wYQai6Dj=nu6wDEfJm@=;+Eme4p zf+1O67egcEHTD-buXbMjkGU+bePC+Nd0hoc?YthBjiHU#nJ1KawRBP8)$h0zahBI6 z&`5c0o$Th-&g(-6gbUW!f+wULIp?(%D7EuCPBw-%UhAAz=GAL}3a{5-NS48ir(To{t&bv-mvUbp}1 z=GD$?^D|N)T#(lhFg54AZUd!uUa!c;(8lZ1^UA#H!c=$-JS#<<<+VLDQeL~CbMtEF z^)&>-1$q7Syp$v7ymkYnc3$Vm#?Z!V(~HWyMs`=>H4TPjdChr2+GomZf#2M`+Iig! zfp9@y&%xB3^P2ynluhlt27ssb^MO~Fm3g(aSK)OP49W7k8yYFE2QImJwe#BfvJ?mx zg&d3q-c{kXu?nxQ!d2Iw!bIxlND7EvtMK*>uUPJGz z@Y-C3*ZlWXc&z}9l-H`iyLq+qdJF>Lg7x(|OwBp3e)pwpYUi~Jcxpc%DEdf+*LEtr zCc%(weZ2sUl-KJI+`QU(9s5uUgbVT-2UBy->orhn=QZymY4^4Bdi1d}uPLoncnyak zSzf0@Bjt5os+(6kuRf1mme+PLHRrs}1*LXg_sho6c0MrrsWPu2ZB=+Jl_o`;<+T+C~lA- zc3%Dea#>#cz|@@cx(bxqc|9&0LmRI%Un%n%*+hj`zZX)(Szen!BjvUAOE<4}ULQgr zT(G_td?n?`Ij^lish!txvN5#rTIY>2uOa2!Ha1Nwf|bx7ZV1A>Nz59`^~@|g;+ zb74r9*Y(gydEKtdV_&B5nNFw6_F2z}HhsV98EV^I+ja;3+P1i{2RhjP2LC;Ir|s|a zQB4Zi*8PZik$a%+Z=;A4M{Ivn|D6AcZOy|)!`emJ{u-YZxorD;XYiGpw%v+OTlJ0Y zZ;e5{9^3w=JSyKTvrea*I^aQ^?XT~H_{_FRp6fp(#P&DxUiC!V-%tC#{5Y#lr%S%Q zZ?Ns}h+a|0ZGXLP*7we))9DU(&oRaJH|*NcYqq}yyGHwG*XeYYE3FsX{`Tqo@gKIo zo|i7Pv_&YP!}3kGzabYSUYlo-0^x$Zj)18-=XDz>wexyKHikA{mu6PxRo7pI*T9TY z#93b3LnGz2dnPxp_WJr70^x$Zewtazk#k{cuj*LSzdEy zk@lJLS|F>NS39qpArLOe>p7U3b6)djld`Fu*8uR;em?Ljhcd6m-YWHV6%5Jpx*HlP zuLrWbdA0M}IfoPo7vyy+OwBp3Nubou>m%71+Un~@4`p6c)b1Z>l~am1%WFSqq`VH! z<>uASYaS1m<+TP(%{i~(pw!Om3fUOic1h1YH>^)+K|6oEv~3)a`?Fg54A`h6^A zQ#-F+z*GDAK+(b~ysAA9lLSMu_4NWYQeLkYbn|NGb!;Ii5H84T98AqQuh&4So!7jD zrQO%g>(Qdhyn3mvpA`;6vb;`*M#}5FB5q#oy!sS%Szg=0)SUA=7nIt0-7gzM+xfug z63V>lda0bhmMSJioaMC^G*VuJio1EW^LiNq;ez!wdkHB=&Up<4rFLEi%Er*fYsFH^ zym}2*;q@d8$?|#+8Y!<&yxhFnd7WKS3WN*tngCOC&TASdwewn{)Z1f18?P73DDxU~ zM1|KV7?S06F*H(MV@tbvwe#v<#$|c!15nc!c=k>U33~jv5ET_z?B~Rvq7{H3)a_y<)j=r=d~3mwevbo zHikA{>r_zYHKgo|6^guGgCSX7UqB<}HB)&vuXbLSLm*s`*TXP1=e%aDAZ1fKua&{m zHikA{?^jgjRhM0b*SRnx%j8$(-t-B?|j*XR#a zcx|PZBF^&K4;m@2gAHz8?Y!ox?y|hrfT=m>H5`=Md0inJLmRIhYbo=ZnpuU{j5Snv zEews6*U~lJyxMu)2Z3s&g&c57~1M#i(o!4U! z2p6oc&tYoLdG!mFvZ%0bTUhTa4G;~>B+riYF z^Ewxl+IihC8$;Xq!00B*y!w_=;k8sFDdH@zwV;vm8r0a$tDV=&5C|8nui2YOIdaZx zASku-I#4!-HeM?>Q|8sPqzbPmVMvzOd(cREee#)`S39q>n@WLjL0%JJYR-901EqFe zOEi0XOlafvVhd$n!^*1g8U;hLye@`D%4=+MH?MYH{ad&!uYF)@&Usx0O6|NJmyMx~ z*O{%9dG*Y#!mD4f6mgco!no=k2cnpK6@Z7?KTUync|<@HoAH?MYH2lSQ# z;exy_f~h&@^&}{@^ZG_MhPL{e*iV_)V72E9y7iGF&hk1E8Y!<6`nq|w^IE*0%ktU? zrska2C{SwWb&G5aZM=qlrOc~mewF%~zrPBv6`+ywS~b+otDV&Uy9w zO3J2oUb}#&_VaOazDdF=yJbI$83P-^G(xNHn%xiLC6<+;D zNfBpxZ32yy*Vd!myxMtv2!U|H`dV;|lq2W7wgRPgUdPGC(8g<>NM&AAi>dH>4TfZS zeF2S>*G%KwyxMtP4uNn%UJt|6ob#G7Qp%=wUMqvAZ47O^-j7n|)whHSuXABYme=*r zNO|2p-p#9>*XB`DAY72w5im99ylw-fc3!W@#?Z#=mlGsjjXIsKK+wR@(4O6g^c^^$ z{)q0OLkIUA*0X8+wI8HKwoB@Cx~>EIepPF5|DK^ehYTFhCA4cq&v0FadVL3ng?5c- zYO`8<=yW>y|FA6`&u>XL@`{FBK?4U2kVYQ78fH|;wg!Dr>x?>`u0@NcsfBXQwXOBt z)ZufKm4$uYYMEUYTyKPZ+D}+nOj{x=JW&b*8MKDfiRjkE%0e0uSszvw)|ANRurgya zA~Ulx-_yhGJ1FLMiIs&sAhOJpxIK;eo5;LbneJC2YsJdKZV*`nD@(mZWHGGFa)QVX zv9gd9B74ZnBJU8{hm*O0#6KmnI;(z^mWo6c#mYi_h-@7z z3$9LN$*e3afXM#jWo3!1_*^a^F;$4HJ}Wa;C9+Un_6d>AV`VyeWbI~Up5;hyS6Nw@ zACYCB$L(nf?X5B|qx80AW$~YqLC3JNNCT05$I5&&6~wjoXI2*f5s{^_vgG1KR%kvK z5Z_`%W@KfS+(g!!l|>gJve~RGxFC`3U}Y)UiR>aPi^)P{nZDun)Tcp3(HD+d(Fx`DM)1(asi3YL3(S-%2H{v2D7s0Jfye9tjyPw$gHd^ zIUkYTVP#W$_tEZyQ)y^k1a6ldLQ< zBkAogR+ge8GOusBfF!>ngEnMk!I?;J16Wzi-=w#1SXoML(pw@cOU+DV*IAh*3z6kq z%7WlJ%{nUj!WA+OjO=_B6gBkyT`6md}W+ zH7kp(O=KfkS#(n(Tgl3FEr{$eD+{YmWRF-`GVSf7Wn4f~eMxV1Sy{9nk@a9@sdb5L z1}pQdNo3ntnZ=*T&a<-U03y>Z=l0asL}cYyS#lteHD_fyDjUkmVuDC-OIca+o4=N# zPniR(%rnyqEW5|bj2Ve6-wG}u@tKLN1}oEf5Lp*i=9P`eCbP0++S?{p7MX?gcAAw1 zXC<9-&jG;t!oRxWgMPz@lveX_#R%{g)kQCZm zJyzy5i1gN7c2Aqss#SM zeikc>Y(`|?^Ro6t_8TjUZ%SktS95#n)tAW1v$Eh0L>A1-ygCxua8?%Fhsc(*GS8kw z_9H6`3nQ}otSpu8X@NCtKw6OAYO%7g#zfYYm3ajc*;G~*U607Nu(ITaM0SRirP5va zo0a*tCcTwe%LT;JiO4=1c1ySy@Ur>8->%E+D!#MAm?n#SA2} zuUMI-ACb-HWkE!?hm}S5C$ej-ESc^?j`iH0hSVp$`LeQ@&xz~{Ru(^)$i}j=u(m|D znw1&9AhM&ZEF_f3p0Kj`FNv)11}-4J4T#Ld%R-2(4=XbcBCsml zvgi>+wvmTSD@*Q6WRa{aq&JbRWo5}UAjeo)d_&UP zGgcN8Ok_p3aRKq|Lu5g$EafXA>&MDGsqAZ3mih(hErFF;J|nU#tSlvj$g*zd_B5;| zkyT=4mT)3#!^(6t^`lssu@&iU6)TJWlE{8yWs!}DER~gov?sEUzvlvy(wfNpSy@a! zBJ0V@;s+4fOjZ`$n8>!XGT#nFc7c_}cO|k6JGebfZ9-(9va;x=MAm|pc~ahnv9c6e zYL>CG=)q*rA6Qw4k;r~$WzoHeEWeoxNK7XptI5iIn-f_GD~lXRWK&pKSbrkh%*ukp zi0oHZrVAvpSFFsFLSA|&7Z6_)>8%MX3+qf|gIJjt{V-a@%3^{@Z~Ix9t|O7%Vr7w^ z6It#AZcmeG+^X?1I%o%0X6!-+jbdfNZHa6hEAyhC3(2f3vK#5`PgWM(oydys;sWB; zgUIT$vQ#PyWo4G0q_=sj%!^i}-K;FE9_j5WD>K$7vh2ILJ=F~(vdXM1cnp!XWo4;j ziEIojiy2O2-?1_;+S|{pEMy4jEsd4Mk0P={d$@o^jwUiAEAt&nWW8Bg%19!c&B~H# z7Iv_*uo0xUi>%BTL1dW{xjprybF0A0q8HxAXZS5ynQ%3{klv=TGS7)b7SGDOz9F)+tSosjk-cVR zF-wT7>^?3amT5%Rl$C|dAhN-%EHZ+~7PGSCNFuYcvXHSvc88Uvjv}(W`?)<$8BSyd zRu(g!$U3nyV>FRXWM#TpM7DvIB~#f+R%VGMz5T_?e8&-)mxT*RDm_jcva#R&iLCR_6_B3WT>8%PY3m!>i?O0jLav~eY%EIOl*&0^n z`8ARK!ph=T5ZO~!W*kOjMUuFHq|k~K$jZW^NN;^vSqj~SXjT?Km-M!imrWwF%d9MN zGLdCD!0l<|JR+;e%DiX|Y0b)_!$@x$q zS@23C8_LRb^wW7MD~lOIdON_%Jn3iFJyvF1PkPIDkPArsMk1@h$~-p^Sr=9oxrxXo zv$7Q0+a^|)yq5HKnw14_CbE~T%y$iul{&-)By1g#HD+aATZk--mFeg%EM#TT-;v(- zv9gfWM0S&v#l#Vr$6;iL5;<^E^jn<5^iM?JbU#g}v?}-J9oF z3*|T~)0KvmQXH~BSefPfmkaHC>d+Vai3^BlMaQ};&}}_dW?T=wIrRNmnU@}VbI9hh zGT*-rN#C;^vR$mqvWv)`{**_TS*O!gk}Vw*{PrexM{lid3(qv|9_rO5yz79$p_wCjOs!Yj8^s8)E(o{-342^Fxke z-5TNeflj9j9oW5p;{m-whxQ!Mz2_G_`}XcLWN^)&IW}}FAnA^@hOn}frzd~0lje{u zf!W|RiTn8-GA>Q0z!j%S+`KPbX_|5#l>&g%B%Tcrek4ssaKmX54=4yXoTdoy!f6uA z{|K*iY1##jI89d=aHVN#27WkA z;!zyoN76I_+;E!2^FYE4rzsJ<@Ubb@6%$_R()0=(ahk+RW5Q7>O{GtAY0@o#G&vH{ zgq5ZCgM-c?8^p@ICKK5rRu)s2$WEPPk4?t|M~*?cq~|)tC0#s(BwT6I1Hlg`T|DC? z{7BMAfE!M_c+g6?;iPW`FPwC-{G0Gfm-NTrh?6cBgcFWRNiTSsOM2vBNV+4ftxt3D z7tdY^8FP9$16=VzCmysCt~CBh;D_Tcp5qdJB>vCA4aZ+ROeWlL{Hy#b?H`W6STIj` zrHlU{aK!N!OXvwlrT8!Um5u*=h`-}_IR(Suq9>j&bI7>(=Q_jjFCHcnt~CCE;D_Tc zo>dcmB>p474aZ+RFelt_{I`M^j=xx9P z|3To0<1dzJ6pl*qUv!R(zhykc-*GOtpOuA`f{zJ@>;=pQA12~)LWhh?lizvnFcHrV z3Rjw@zTk(`Bpyu^ek4sRzzwHKJRd3CaGK767d}kHYL~(*U78ABkoFFzNvwY<9F@`( zaDh$JP)L&_5xrQM?;J>zLpF<*SvtW9xkGjsCXKWC_5n=DK9^11Z(KItK5gl6rP-_w zemI+NALexUk!*eiZaAB7pD1;>;cTt}FPzP{tBpFm(q;1&IO1%+U4PW!sFcmz7rAU2 zheI|U`KrdsJjXyb9kLFrOqV4|`g-M%MX|EzKuEenw)dixIh=IyWUE8QCH)z=;z}zX zV->D6=@lIyfU^d;bhlP(s86<+C*{u?;rq>E)@g`-l^ zGhXJBt{VYKccisED~t4oq&sB6tjxHG$cD4Bl&(a!oRvlYNMt{Jotg3xMk!w88ds)ZXy=rVX=gv3g~!Yds@#Z#of zV1&flz`{`pq53HtLXi=GkOPuXRuh1uXET|A5Jka20c0snX@p7s}hBu$IK4W~&gIUw9{nofZiPLo&^ zTzI8RQ-Pb(-r+QfWx|D{QkrVroD4S~bNAuD=Y+IgHNu^@v(#-*tZxZ*U4)fa>-P16kU!)X$WI|x6LCM&q% zG>H`^gd0xN3-H2e66@0ouXJgub%#4l#ESL8Q7KJb?{H}{PJ_e5k%+0REO;fP$ss!c zv%zT+Yg0I6T$)~jD^8PGh(fs1H2K|?0)W#b*0~UVBu#z54W~&gwjtbbnpT1rPLo*p zUwEZU(^YW9N0WFJfN)ewQ}%mYnsl=uO^!rVW@XXUAWaTgzkA%#B$nxL$hb7E0#}?S zu_lLbrD-}3emG5H$q(U2(vHzi9^Q4ztnvxAUOVF-4WqR0125`e^63fg8H=L${;Dys9 zUhW~h(xqt&IN~&k*L?^_r8J#+$fe2RsAi5t{LRY3wnLg6vKo)1nBg>u1!^2JE=^(J ziqj-kqY4mqr%5b!Bm793E`b|PlUQ*_xZyN?lq&5XPLp_RittL8rncaS(>{G$xfxlW$S~C(;dvkcjVCS!5!l$sxM}v%zV4yH*eM#--`w$5I4vn%*wV<8Y;E zY7TxlO>fuzarlumO$0Zbrnid^IoxoX_JS8q)7#h4IK0xO>2GkvX?pvD8i%7&n#!bc zX$mV2X>uf@OB#2Wi1mmZGA{lL!4=0}EIuS$Y5b3YACA9R+erA4_-B41%@oI9EU+Zp zaQy3n7mmMpfsgP?7ymKfNaF8!rH^n_ivM>{xcH}LhWI-!hyKjUEG^(Lamcbh<;YZTc3fyp-#Ijq$4X0@ac;PgOS5679bZPn-9C4b&OQ?jSQkv5K z;L;TD0lzmn5>e<+PL`4eX>!Qg{K*|nV!?#Za7U}f)`Gcc&(i9N|&Z@!4aoPyl751 zDy7Ntl1o!qHaJWiiMY+mlJ7b`bRb`)UU6v>OVv4KT$N zJK;ytbO_vVn#9_B!VRZM_qVivI8EYxeZnhUnvCFx(!PZg4y7rCsyrq$hb6Rcr8T$r%5c)CtPWoYJeX}lVb%y;YZRm0Nikz#4?1! z4X0@>c;PgO7a-md9$az! z#WIA#mBv2-{BZomDu=?4#Q!0<;rNTC7KIy*e>q)V`$J-noAv4FnSTa+%()iZ^ zKOBFtBB$^p@gD$gIR0W;P~nE-zZSeO|Kf$N!Yf_;Z-XO_zj(!~a8!zao-ADaeQ!Yg z9gl|TSy^OF$HxRbK^B&UJ50oaq7E6CrZ{lLhlyA{RJhVKT>(FwCb2lF@FQvZFsn3E zoF=hCs&K<;Y7SmFP2x?t!Yf^xW`iS6lX!Qoa8yduj;vgo!g50V9f`Qe%Y2C}Q#P(Q zuT*%F+R>YTHZGfD308-U%jPg}#n}|=tqNC~%}wBkvniHy6@Da}*TD^EQ>-Z~+;BFF zW|#JlWYh7cV&Ro8n;pRsXH&epSU4(Wb3%45{;7Y#LFdTVdRCU)3$p2uonU1tx`WbP z#}3(ZR_0Zf$g1YxlKysWTVRPxdVg@mNq@VLt;3ZjeHHlOq`zG!*WpK!eh%Dl(%&xD z>u|$K&zF-+`r8*uJG{~*y(Ku}q`!T|w8K#;=_7J-N%y@CNq3}m1uIJ#2uXLy4zjZN zHbnM-m4#V}?1Nm~+#-(kSK6iqK8)!w8Ax zjD;UTsECI&Q;d*UQ(3rSgxY`?t{dVl;=(H(Li529BP8A{E*zB*+T+2cDJ%^TazJv8 zmFc1&O%7SH++3Q(YRnE9m!{9b6{kroy)0a5nr4C@PLo*KS@@AOC4n1GlUQC_xZyOt z1TUN>@p^XQl`c)S^GJcgX%a7N7miA4>XwH~Q)+QVbo~p91e-RLn76p+a5JV6} zFj7TDE+V3W5(R;C6un4Mdgw*K*cA&IdqZRI7<<>)6;Wd!d!$$fOBhD6`}+)8`^@a~ ztYqH5UjI|SYoEQ>y7wlzPjV0ZmmtogSn^&EdjZ|(x4!Pd)KZPb^gE$db+UdNQra-1+a!=ZJG9A;6Q0bW5zV}X5Bc^o_>XYUtc@XND3Ilv$rI>O%(wO8EiUhF<%jna@J%?N{=6}bX%7$qF z-9yKn)c4;)r~P-&GfA?T@C)57F3YGRh>Hr&^s)qj!nw6*1{^$4dg_ZnI zG-LkfHsUmqw;W?A7Cnm7M6ip|jgHAZl3g$s(;7&1Oz!#XPU^>0t9jV~9g};!yVH3w z^@B{uoMh$#o5jw#vC7gmbtgXS!z)R%}!g7}kS@kAaXegG|Td9=GpgI;LG(l;_hir3S)n zr>YUt7zlMtsZPGIQcTNRu$Xe+BPI#r7K(+pA|}C#=tjrn9@H-wi>c)c=z!IvtaH=)co>F`WgOj>+vj;AA?cr=ij@W%q&GPE{kOKOxjHg}r=XrIOGP)&9Gk2b|RR|4rz$|88Rgr}O-;+p65D_TTNU;AGnW1EJFX zhn-=gQ`PW)IfUB(prbFWa|Sw6t7rC4GWViK%gYZlXg_GQ4wVHVRsNOesA z*@Qu)eoPCX(=q*Lj|b6tG2IQBj_E%eO^8g#v=J&DQ)~~o?Nl{l>eQxejE*VQ(-&5X zX?PnJQ|@bA%_NAq6w3}nOoFXOH~MPkwx|${#q=elIwrRtg_HU*wcWLBfR4#+cj0ti zOd}!FF}XcAoJ_}b0aQAsqQvA>HDX!|p^mB88!wEv0PEw3v-suss%P5-w*sQu5i@P(E9Zyjg;r@qB$ zBDX^aQ7rQgu4aNQjkD9lZO$SXi|Ii~bxdw27AN&%+60}B$!+xFbY4syI+Q!rF}dAl zoJ_}Lq0%uG+QDt7s&SfJ4WW)H(bgAMis{)7ET+VFh)II@nqs+)h)J-HyRn$uJ~e`| zn2v>1$K*DpaZ*2~i=opoxjk>3&Wq_4$aG9@;~gi{G1cl=o=?Y=Zw$AcszywMAk;Bs z+W5jsF`e9z#Z;1*B#4z1i|vXR9l_S18-3ApTlNUXV%l!^vI9CMw?B`Q`Z4u~PRHc7 z|8Y7mrdg2bnA{#jPNrkJ9V#7DvL)Phsv0qU4WW*ySl<^`im7QQ7E@vi&L#=s@J{SB zaoZ9J#{54WQtiLngUCsJ{~v?S^Ix_&ayrldA0X5IyM30NO#9!ZGdoSPbz!4Z)$sph z2(|z5R=%*3|0_E)|5HE6do%oT?O}@LzsJ=~u+8X3pC)dHCc#)tUH4$8iQA6JN&T22 z=)9O@wc_MiIvtbS1I+2Xm^MJBV{#jjIhl^BZMX7#I;N;8+;*xOF^z*z z$CRn%3oFHRW;f=4ZZj@=62voDM*HvfCKHVLzZFvLzuSn+Nqzr&>_tx#+2_pZJpU&` zru}!DtvQ+Ye-%{P|9k)&ovMcapF*hpPd4<0mHe;Mo%vt-0{+W)hX!_M$G_WuO)%#F zLP)j$ZnHHf_5EKBoj(5EUT#k3`M&`&?Z4Yl&dId@ZF{ieKd1v6ovMca;~>=j=Ue;2 zO8%eOgZZEP1OCgGvYx>*`uKNy%n8Q)-wLVczicSyq`v<>_GZVw+po^)JpU&`ru}!D z<~f=6e-%{v_%De6PF2JIPa)L)r?!XxPFTtRItl83ZCwB5n~(z&?D!94A3edC{|h12 z{<}@{oYeP!HFWy;cYE?Vo#+1s$h7}%V?Za<{z}(QmhSuto~Mc(g5IWBW^WH`+>@p0b{>>!EX^U1>NMRpgHGzF zxfD8`rrX8P>AW=WhfJsGwo-I5o#rN}^x0IB_fAe#Bh7BT%Est4Gfj}D6IME#j_$?M zO#O^BC9lO43qF%?9V6BU(T%?7xlI@aV=;XTsgB9*xag#QOdWfd4bU;U4IQ1%i^)Ky zV{*GnI+>2?VyJXXi5T2=sv0r94WW*yu%j=m6w@!gX-q}LBtgXcFs$$#ViN4wKJ09A z`%wzUV!8xU9h2L9(n2C2$ha0s@LzzZGS9qsv0rH_bnUa#q`g@;!vsXCeVKY~j8pQ{D` zovMcaSqQcNnP1?)6ISy7<^Ih7Tp+ji@#??be(d;nTdWGk{NE2!?Z4Yk)k%H-XG5p` zciXi(o#+2;km=*!?HTK2+W#U{+W+)+@ZYIw_#fY&9sk9^7gq9r=>E+AlH50zZ5d}$ zEZh$7%>=uQVzIAqH506WruEt6Hl-DerCI-g^1M1tw*#${`e_b?&P!7^xOF-&&H0e& zG~F({PNvgb4V6x_@Hc?W_Ymr{DOnq7I$@0U^6Ol~t?C-r0c5;`4|+w0fqyqI=9u-vJR$!$37WICo}pwcmA|3FMm zRU@X$Ak;Ax8zUwstQ6Ce2eOz-5|ae6o?_X35tCr;2C|skR>gv`m_|dYV{-cvJE=SZs5xR1>_v2=FM4j*X2DoYe?Y2Za$7VzsUK7CL1hDUOl}8gr}JW(3Ym_{ZA0y3 zI;NYT(lHf&z}e(fHDX#1p^hn0A2B&$rI>a&h{crKii@5EG2|e2nz)^*1!Mj%gH-$P zwxM=X-~R`p)Bd|%uAR>F{~wTP|J_#GPNx0uIJi8Y_CK{5{yS9-|0h7G{SO+zeY$xty z+W(uN(*763MyIOb|9S|u|JfbjzY|vSztfQNl)cr4&|!z#<=xL^XXueFf*_cg}-RrATVH2%T+z%CGbJi*qx*x)Phz>#p**COGg;}&h zcCbuQ{GU_Y$15C%3bKu2l^(Xx3ei!hAR7TzsnBOA^C5o%D#%uLRVpl`72-2dL3UZI zQsFULAv+!wWM{7`6@H@?f)pyqHc?e73^ESk7A)k~Ac#Kz-3g6HQMLE0WK~z;LbUTvzAXhnglv0%nGiZglyl%=< zeyUWsmsSWS!v}e?OqB|oX@&S)RFKD%RH@Kw1oI)g1{LHf6;&$Crxo%|>XhG4$^#Ut zRCt6|h&ugR{)4alw!cb+UucD(J}Su1&Z|_|KgoPZ?A*FMh5T^3N`+;#LaGfa$ZvY9 zRCtC~h}B00`MGJ83bl@6Q)HT>g8UM)N`=9+La7ca$Zz?oR5*)PNVb$I@H4Y26<($l za^i#h0;)=d21hd=lFiVA{5Ypdg<-TpX*X1mpO;jra3QUbY=8>#%ZDlz-lP>0yQ6}9 zDZfgE9Y-=BVjWOHzAs*-!bn;n)d>~k8_!iLTt+Lz8l!@I8MjJ>4|s*n(gVKhP^Chv zQOt*eoZa#j#wrz#r4@3!q6hgBUX==~cm>HqzD8E1!soO?W(V{jUxcbsp~ErEhfIJ9 z@>QNH6(-OMg<7Z}UmvMb;TB$DdsL8bHdLwb6|InzYn1%ay-J0yqnQt}ozR2)J-AAR zX|zI4D#%|nt5mp$R!B5N5Arv;Diwa96=Lp~#NUCcRM=+>^C8tjdcdD3s#KUuE97=T z1-W}(rNTqBLZLM($c^196}Hj}rM9RbwUQp7UM#SB|NM<-2&>ZcR>HI(o|7DJM>uK4sqGm!a#RZrUYQK^HcH z?%xj;p15@EPZSSw>sM{-#=}h~QyyPePp#n9?I?BTAiWeW?xGiv84xaphx|zQy9zB8T9&UP!XGcSr;kX?~ z@$6N=GXr%q7f?KZ2FJ}46i;8kak~Y$K6|tG15XU95btg$vYFGjKvy_O4{;R7FXy;P zQ#@F~aeFVtieLC>$VC~E_iihWO++0oZVg=m3 z4P3{YzX8+sGwLGe&5@^Etk#q(F7D-X99ar{Ey z;dZ*2rzjp>!g2F0#nabt+_ss-oXN_;ldGefIh^9*^{DRQW--Nsl^nPC0oU;s&jube zLNoqbt0G_KQt0CK^bk!avzd!Bgom30DW1;q>UIXjQu zhxnf2!IK;}ZBJ%1hpRbmhjaV^;Hg@=nNuj9eU{_qPKp;RRJR{eJQQd0^>s7#r?64u zIW*(prXR(#uW{VY0t%9JfaT*YRcrPcCa- zz9ZmYoR`sM;tye&Vgwzohj&vvC~(|-O!4gP9Jf16XESFXk(n3iX8Kb+e3|3sWQrHp za@<})@$gaUeTi=7C5i`fDe-XgBgKn%@anevjIuL2-uxTD!|4^`Jq|kk!6^PIbg>zF zi1R5PY~Z+goZ`{D9Jk+a{6pZSiMpAVGuhD)7CCN)Qat@7$L#`&2k!wddd}QJ@w^!6 z;pSb6$Jg=dw$Usaui)|772@3=IvsEDIhKie$LLgwN9#FmuA+F>9Syp=eTCxbx23vw zDcMT#;3JNk&M9^@#Q)B5dkn>k8-eF1>0|9oif84mu!oxmD4v^(dtx4LHv!jYZ))N$ zqzGH;X72?Glt@s=^VFbQ#>^jc;fpt>O=TL6fYQ#n++7tjODm(Hjj;(NdQk> zvQ{;75XFikKf$Mk^BLuf-#y@)>q08iCh}>{J#FrFL^u;nBZgyVCW-j&TxILKS$peAMr|4$p zQam@D`n1hKVIFQ1YF0PJ4i-7u0p(* z(`7OvWto%p5HC_ZF^c2nUlh;u;kfO%m|0Yk3tViHZsur;X9l9Whnv$Vo*Kk)o1=Ik z1fELiW#{nJo6H-Znryy&ity(e3))#ACAAkaT8HIR-w9GN%7Q!()&TWnWrh9T*Gnm z9mO;6aol!VT6RXqTaxOTgVBs1?2cu*j%M^y{A_*`#Js;$L$v!e+ziY zJJw>$*wK)Bo#SR8#Y-}(SKZE}co{)ypm^#_j@!LXW6oqg7yM}5%&`1^iIujtCd%?OGozvj4I&hhVnXO7p++(Yri zpBy)zP(1Su$8Ezi=%`-+4?Jh~<9LbVW(vhK8#r!n0Pe;66Y%1k3h@@`GKHcnGfF%9 z7sZoXIc|EKNiF(|<8~ay6LR)uXX$1xpm_3kRQGW61jTb-aoqlc;w3pW^HX&*t`UTDm5)A(#Qb7Cis+XE<` z+!=VmJJzOAJkgos=4y(kcH_8xmEyTpz@s7BnV%`1*oEU}k8_wav5p+KCji&+X1@-OL9R&(!0%+5S8>YGy}{+XI2?cw=>eN7F0BJA*Ehkkc_|^bprlJlPt{ zc({3u;srT-J>33E@k|?3PaL9~>AHehRM?f{W-P^1dvM&I!|`Tc!gycsRR4yu+c>AB+<9p$o?AAx@!qX?u>FJ1L&pi{th~iYK}OFL=$= zzktSD0XO|9p4ppMx05Lz>khmm_W^MO{4$D{dT`vlK=IfB+!OPv+uwofcvDHifV|Bci;<0HQH|J42HI?J`QHqzQ121~bd`0opERLHN7qL-uTfQuh z>Q%QxC|=kMJbjXOW*)^8JD?d4H#bqdP?zKOW8ga8gv1oc-6ucZ9agfLQ@>+~9q5SnEmgM01Xt@f1(RIBu^3 zuH(&ZC%F8v#gF$Dx=gY$bh*je(XABENdO*hI$y#pO2|Ry;r1Ac=USkdaJg>gOp0ep zl9$HK0~All`Q_nu9mQh@qM6bH-OP@cvQbm*Ic`FVCwg++E&{IO%`^d?Ux;S>cyFW2 zWcosvTBe71pW=m995;0@V>8G4bKLf(c(OC_@r3m5RkzP_ygRBF zPSMSjD4y!Yant^C=1g)R$L$#4I^Lv=nq68U-m~d4vAwZOdY&HQA&MvZaolX6c&-h{ zZL=%b%&D%xW2fq74x)In8^_ITikA``w^@oOcLknVq?>t@;)RYJH-B=x9mj3oE6dL4 zcuV^M59C<$&)!MU=?_Mk-Jpwmm!L~I-j?I$d5WicaNPcr;;~M^qs7|M4p*_GA=!cB zCQ0!^7mnLgDW2I2cw&ieW;MlA5y#D^6i=SWal7-?G~R=Ohtq%9_V&Lv1y@dmSmu6Rpx8t?UqRipY#SYO!98K|pbmigZG>RuI zuWoY`FC7UyIzl(|ImI)hIBuG(Vxz{6l>K<;cp?D(6tJ`;g z>v%IGr1z65#Jk;fZ06E9S;jkI_Mvz}PDc+n5yexZd3C#z;<=-N=Z0!WpQdi-8H9Xu5qiIdknFcq}QG0OQ>`U>e565i^xQ;hy z20V~g3jdw+^>mqdZ|K6K^$>4Ryx5WB<`0U8a>97k?Or!Ci^86$o-w+aV=11Mcs<;# z;J8@i;r20#N8Qj&`cU1>*BsxK<7Ssz*r-Jr)vInt0N3$`?NB|kXvU9sIb9~*9=hU4 zJ;Xf}5BA`=`Gn)Uaoje%mCYO;06aTYH?tqb^Zhw)rcgXRfaCT`iU<1x&&|}$yiDOl62cu}?Pvuv~#Ibsa3n*UvisR-9ibq9` z+ka3z{~GYzc->5^+u6~Oe~IJfP>P4Ia@;PYcYk>Tfj4Ob-ZU$JY2_d^B~3Zax{3=?YF@7*_&RE>QPuB-Zpo!nZtLatI2wZ z!zo^@fSbh>kDlYz?d=o~-Ugl>rZxgZh_3fAi{jgH+>E7o@FTkNs@roY z9{m73nbOTXO!52{j+>1XkAC5}ZN8d~S`091aFA|hFvpv6+{~ePUX1jr+dF~lctbhX zV)7Qre{1z2T_*SoGbaY=A?n}DX3o~Z5FT#&Q9LdIc(|QR@u;yJJjd&1E~9vQD|+{E z^8&^5-*DV+p?Fjq&BWzCAa2+0mSfHY;*5uzqbMHM<<;$Zz;(P?IZv{K;fx>eqjZ^k zJuDL(ryc!@;&HLa!%d6(*vwIVUfm9%c=#IvNFSq{nMd(-Lsa*0a}&k$jW}-K=J?NO zrr@2uweDx5W;b!%Bq$#Lp5yjp;5y#o4(PogG5PUcL6-@C!ZP6r+R>LN92E61o^9;qahjH9|Pw~7QJYIF%`QfrNI^M7^s^=$Fi1!%i z^arDKPnp^Kbay7j!;s_V0g7i69JlKzp6&-cb+C?i$4A)F5beov6LP#i$L%bN=Z69h zhv;Umqj)r!fz>Miiab3 zb^9#E(_Mg|ZhadS7tgK-?U8-VMx zH+v-TxH#iqoSQw)W{&1V7tPZ{97OS~bmie@HpRo^d3Bqmc>XBhxl?pAZ&Exvo#WtnPrl43=!#49 z5FMUmGpA4BxJhz+Cdcim9G?QbAeSI~7FkX4;tYuaft-$+ zE6RVpmUu6ucqoUohnpuU9-oJ1Jlt-gc(gMfA;41GRvS#T%d>eoZ{h9j+-WVHgmcu$L#=$hjoBwR_JD?Q#@abfZ_jbN>vL@8s2=dlGVSOvj>kD}mQXz1oa6Qmj@JbqJ5x9FcZx@iIBx1a&qmF5 z;J6(KT*sT=8F>7%3h~aQ%LI*~E6mkHtm1fWj+?a<&vxdx{f*+qw!pL3=w|kOfmsx9 z&2eKW9<|`OJ(uF~-GS%N)6G0W@vs@k&6gC9+Hl;qd$ByKjyEpxM(0EK#ZvO!8#d{9$(kW=hf9>7tWoA+Qa_EW+^$^E$d>O~h z3X10|;Px?!2dAQX_B7qh*A&lIz|AhNuu;P_uWk>acwQV0GrF1i6fdqsbq_Z;Q#^ed z$L%M;b-da0fCm>=h_~UZZ07js&=o|7&m#L#Jh+nMW(vilc^tP_Qaqgjp1(;u`ZC3% zb2)B)qIfpNaocGPb0)nIc;Zyu%qWV7D>!b>pm_Rhj@u`I>v-dffR`%0bN&ZiCNH|& zB0WT_*VxQO8N$QOp%f3~isj*UA;qJ`GV@isnOiBIp2KnT9>uelaNO2eOGmv)@Hx7f zUKCH?%yDxf#f#T*++Gb_#~aAmn_r4%{EPFee3>V)OrT%C#{Nw4U=_#B9l#qs+&ZXTp~D0z9+?RttwkE42WiEd`6H`u7@J2-9zQ9O8p<90D{ z9dG^?;Kl1I#CtnkCcFx|)Ji?X2Ncg=!*R3yn{4K|bmdjIeJCE>jq0(#>1HNUJbZ-X z<`Rm>pXRuIj^d#lJh|(2Gn*+M-HPfSZsG;%%$*#!V}a{_o&Pu$g)3u|6DV|=9>K<<9P&|Gw$L$RiPhTy)d&gRV z;>CM7ZvLWp@EON#zqiZIc=0|1Ja=)0cqc=rKN!Wo6x~_c(aR`a+`w`30>z_uIBvI4 zJo_T>^x3+Z-QHnGL;iJ+o1-Wmf1BerP4Vbe!7tIx+)MHFT8^8~IKGkNw#BK2;`uM6_bYWXGbkR)bS372>V^cQ$kJd*}+H!!g>E;`ustvfFkx^l&qt;@R(bb(^7h zz5%Ky&(V%PL-ArGj+^f(9{&r?c-3v&51BLR`lz0|RyQ-8;(4j=;pP;IM@@Nk`v7nq zZ*dEHk5zi-ypArDt%YUMSv|y#AF-L^O*n2siswt{%ByZ?Q9Sxq0=Pjpa~;LwKXTl> zPVw{)9JjwyJi8Tm;N6Yy_AzrNXb5LK+*pcd<#ouz?Zv=#yn!^6od;+9i}SN|neZD7 z5%X?JmN@Uft?JidwJ=5C5dzj54t%<;{@b9d`z zcKDQzDwh%uH~lGI6eB&{&IYdI4c*y$SA}@9d>IKKeUBdEO^OFQ%h{`O^C!i_796+T zKVud}&4CwX2)t4pNAY}Hj+^r-UX*6M>h^Jp$D5&g;Wq8eHxv)rbKJE2oQ;}|aoi?> z>v)6hfhSj2i1$>wOt>R-iCgs$t0^9};<)*g;`x>ww~dNy=6DyJFsVCqGy79K9LRAq zmEut^j@zp!UhE7!ey?uk6^f_#;JDdJ@n|T=?cQIMozd|YC8j`*HUHv#JaqblQNACR z$=s}mxRB!U?i@Eya=a(U?Iw!n1&?mg&9q*}j)rJ=RQGUm7{!YRbKEYXc>Dn1+1qt9 zw^2Oo!*TOI#fu#{Zkw!U@dk$i558}{?Y(V{cn3hI;|<+0`VDlr9!{rteh`-NaB~gC zqplpcYbYL<>aoA;W`3b~c289IaMNW2I~sz$Ic~>LyeN5ITka{P=*+YXg~qbDR1`}CMMe%knrO@r-%AlNAgf(FB9 zO&C9Y)RY;MhD$5MqmRZn*dYjl3;&C2eDtKrljcmCIbjlK{~!PP^~u#cy#K}r6CPOj o^Vuzb-*dh%J9Ah6zx@CE=VyDt)X#qWaQV02G+IA@W!HxP2MT-L>i_@% literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/walk_fwd.fbx b/interface/resources/avatar/animations/walk_fwd.fbx index bc7dd00bc5cc03bd1654c8f3e50a833227a8c737..cb4b00dcd220de38b76e84478455014fdd9745f2 100644 GIT binary patch literal 1158512 zcmcGX2V4_L`^N`Gv7n-I_7W9)L&aXQ=&GQgDA-#91c*X{As|?zXX9+x`^nkQc380h ziCxiC?DZ6TL*=!1-p^zwxR{w`ceB~g|NqJ@JoC)+`^|S}cXqSssf-I&>Xfo>od?P~ zt2IhpoJR{&df#@L#|1=uovLN*2SYD{JoFtaX!Sb&CK{0CpJw zP}Dz2rBQinLbU#{U){sCfy!|BpTObgZ=j+5qEtFssaKXSz!YBs0N@B^&+}V%^jm0d zuE4>t%dGwv@m1-Su&v>wzm8`8qELWZAFlF;ZOmoucJhx79H|P@n}4y9^^3xu(fTm0 z&b;5m+FzunDsGHc7aV2&%}w@i`l@2oaP*mf^Op4+r!Lxv2$hCOl4q;L8syG?I&Gv% zr&p_@TDwmu$PDfNaP0W`7Y6{)+MsCINbj&0iNJd75&L z05}2w+?X`5;@&!Ss9K{8H~&W$ZA7FtS`*9^0ILXbWQy<1L{wr$jQ5O;3|9x4dF-#! z1Z#D9v@mO6{vVjeGg_|=Rz;0ULhW^6+N(flua`1HMQ9E7-&Yx@{Ek|ZGc8pnw1kcc z9F0MQ1{Pw<^ko`@;8=tiPb>8*c)S_W-8aBoi)9C^#PR@u7R{Qvw{F_py;&Ps^JeXu zH*4q7qDh-p&5fvOWNm47)7{kJDvnZxjG#A#7;9@Y6%+*k_$Z_F{>m6tFu~g{g_)we z{8TVEM3lL6QG*?s1}n1rz;2MEWQ)7EQBxGtR25QF{OoPx#8ldgX{}tI)+~04^!HEH z_CTiX8f<@Agm?z&)iEkRoz{GaV;?krf&xbo;fPV92vdQQ$x@AwrI!+Bfy0WBq82&D z&jV6KAnX&5ZDVUiyhFQIX`?>%C8trNPJh?{tv7M$v^|sf2^J6~xJ7}YGo;e(r z43TN<-nwy%X0m1;3^?uDv}$<^1+`+&hs}7+hqAzEb$D>c=I+f}HFI}w-3}g4(N>a~ z5dBqpy;>6*RjTOEnLl@WgXa&8SuuI0gAqj;C+ag!6o!ZVNY7Yxl=bZ3Y zZ|y^I0N`Q6i|LayoKzzM)hdm?i#A-VL&x}Vt*&qP&i?RhjoA%5gL;JfLGH|m)t+e; zju2WEqKppLcTq;DbV|Zu1j3=zs3Y2iXv4#`W4b6Kbf_UT|G+sPPMW^jV3qlxuF^zD z{5;foL;3zjA&4Yc5e)IuY4zG5Z8$Cr4(bOe3=Kvip zbd+8jVeWcgrJfl~+~dl4rvx+A*I{}A4<)b{zDnIFm1P|KdLAb$$&~KF#K5zVF3~!j zN~33m!qZpm0W2pcC&!|J^`?aupslFooHZ)69QDumKKnv=ygSA!>~pUi?NKLpiOk$!@WJfiz!U2!Q%7Odny%#TbRm z*LjfQywhP7^p~(@mT7smQf0`kK`G4_1ZF));#(_#8i0e)1zl;y1*jq-!yy3B%Wi?O zxu(2_e}=X^W8k?9<0rhzwp^E~qJng4^ZEhdzy%wsSDFb#vm)fjM;oLJ=XVTHq3EVe zTJwoE6U}h|uoSQf1tSch0lD7uOaBzLz&eJpTHw(Ip4(Yh9xnSR<5W67Walqq#)ulo z*JX1fyIg&;8g3Ja~Eo zkI$ZZy-pn%tyek!#{3~`?7}608Ymtfi>!}O@GPubU~I4G@NidnDT%f`!*=y=k~)6< zH^x15^#IRK{MBQ5oGlEZoXS~^Y#*(b8LGdWl(AM?^V=@eXM}?XPqxBPNH~VVLy&~O zD0>XWaVx70Rwcu;LbT;k_9?1|H46JgEA=X!2Cg=1^eSDX);y6wk$x!h9DE%y?_UGz$;^0Xn57iaEY8XI!M?5lGxjH6p5yOHc-8F!781(N(|v8D>GHXg(C+)^D?9bME^)-kgA(j=cA5L z>w9a$<48&kKy9GwVmOiHwxL&tglJSzQ3K5f2hNK%01|mLG>A__&v-O6m`_7>t1$AQ z(_c87!4(}Jl_vjaH)=u^h9tBM0q=(R=~TJe!0RLt$Ii>BRo1b{PaCDTwb>F?nNrau z0{d9ceIN>|YE`ABFE$*74sf(8{t%RniexRLu=+|Qx^6W_8+;fM=i!`TM3xtGgmD~p z&T@tkJ6W(gxi%&FfYTO*!TT=giqcyXrqZdI%Voj|#b^}8I!vK?lzWVwsLqVB?o2j# zCWYc`7-E%W#76mzuxxqm`ep79ePoQBEM0!~lsLdMW*9`leyA58Gt7k3Fe(;)C zr(xPq#tN(DG;;+}KG@<%1Ue>J4w;5g)-Oslf zUPaZf%?QITiV;RoQIYvJ!>g#|e4F7_)Hl>jYsM*fisPp>(yQHInA zuY#uM(+IC}QtB`Z`)I0x<-pYnPrYTG*nE!q>(c%^6osZ>I9&ThGN+-Oakc6)b+cFf z!n9*>7X@%_M2-F&-M)d3ob*zKns2%LsdPc`v7#_#q{=@!GE%G4lUn&FZ!2&a4c&6f zU6%6J1gm1XZ^vY!R^SbN2S2ka-E=C|SmL#H>3U49tN@?hbZ2cWuAgwBB%)rPDFrUq z`2>Z_*pn4*9}La277H+oCPz`*tecsz?cA9PE)V6|!K>Bs^_d=bV>E%+Ca@999QEse zTeXRsp$61vWJAkM@GPyrI!Ya=hR<{T`k$B#(I=xhCf>d0;GPeu= zN5~T0?gq>f9lY<%UZR87vbpzZxDJX{q7Z;tQ&55~_88x;sb4MB84Jnal zb>D|-GCbUTTN%0t9P<3qeAt6)_`TqwI@Dkyyf6~giB|dkHXv_>vcyFdCyxH0< zTp1dbn=|+C;MThdQvd|#mjV)31V<1HfNL#2>WDyCR&}`CincsOlxe~gA>huz)-7;z zhmWoN+&VX53WBHTtb$-4{70$6ReG)F=N|(Aj*^R#t>szNK7lz~Hzf->jc3jVO@-CD zm7G&CmS@gC1?H^oPOMY*2hW^k+=bP-kepMofM?F>0&_YwBi5N1!!zd>fjP&Kb7rpM znN!nDn6|IUITe5M%z0m6&Ybcv@N;LIXrXLY%8qJb>y6i z#XNH^5ty@lJ93>%c;+nDPFS6@$T<}To;fE9%$Y;ZnaQ`#Hv)4;wI^z;*ut~UkoLl~ zeL~JD+sZTNO@TRwbRgE5xR+*BSusYXp5g7M2UEa|StQ;x3*!#|q5( zm7G(tn`h2f0&{99vbKA8<_x5SY5Ra9C*N^VRhaj=S)1rv(9q@bN22@tW%M~GiT?X!s)wtouDS>2adr^3iHXBl5%buJ|5OgzRj=X8NNoq7@LOjPpB z`9)yPapate?mTm9dI{6^H94oO56_(U1?CLuP1ZJ&XU_h;h1GeDoKrEHXU=qiIeYpM z>y!=VnX{9husX~2{h70n`O~02ep5DU%@4A`hl0#+4pHj#st9!ya4`Qt?vpWzC>MMr z=;sT0000^A$$7NpdBWw5AM=EZpbz=L2fym|VFFnnYsly09x!S`ALb!1%*QtPeZm6! zJS6H0da_i+Gocn~a<|8Q7}MY@Q=I(6l)-9EXqQ1n`!ajs15r+0qQl|GNX<_%qMv(* zgygmWx6%QOl~7z{rF$f@5E$~VD9lT5 ze>->?>(A7{(lx%HP~k3eblwy%rmmM=c{r1ps4;3bkBzL zhnyU__sr8q`bSRAhynEmQ8avKhSx4fQ``Pb-Ei2U4}9l&#v1?7HEOoC&e7nJR?I|) z0FXE%r6@&@2f)UMwFZ08Q=&vx!@t^K%isrjhkwQZ#uqUksa>(jFb2B?6d5p_AamXS`_ zwEBSaEH{ciwe--O*rwRc7wZS4eovRvK8qVXYMt^}ejYU| z8miKRC56gkFb=8#XfNNhiG#x!sNm4DoJ}-t&72s*2aC;6HN%}sB%@4LROyEisH!tW zJXPq~6g-O6nijI5(?is_D5})^d?T_el%nX{4LZy?8@ESJ zuUn8c&wcDUdF^3LpG8v@I!sck{uqX%YCGD?n<|ABRgtDvzfjd2M^%a8Onz&s6a=b9 z3>Q28QJ}!_Kb$d4+VMX^lJP%6g7IH;c-bngjdZN*!?X7{*Pv)%h-{Q#>@9zY8W%PG zTcrOt;;%Cg<@5=SlVbbPeRBHf%pYr_v;URXR@gfJ71EA>1$O+Sy?n=i$zZDsm86Gg z{KE^CUaFu`xY1u+Nf`a7f(WC3tdh}B%$ZvEZmaK{e^Ha7@A(v2GIxTjoc5_)#NoKy z+qhdPlBs7XP#9C40`0)m)Iceix`(=E%b6NzxaU>PigMcUq-^csRhv?@;r0jh=EX*N zn;@ocQB2K>=o9Mw)XhXM4L+o9)A*W^eslL~PTkFC<#DK4(R0e7AW50J6NF>RA(+|A zmnr8^E2a`IvY3Kj0fJ*{1j=JIqnu!^E9JTP-x(}&^gls?!bX1wl^sU^6qOXC|1Rp9 zEu%jp>)eaKyo@x+8NP2p^I8gZASBf4s^XBG!g zI;%5_)2t7k=NYZVBSel?PZTI@v@VIT!)U#Yx?oyQ42f$E92jn4}J&Tp~q6&~J zIZpDS=x)hH44cCXQ1rej8*aS5_gLOIn(4D>thCXRVznR|ht*!RmoHXT3cc6#=bEF-#|{(7Fb{z7=hGPO#!*#G`e)==8?_8}i)pl38G&*SVE-uCqZ# z9f=W%)+ZDw3@zU=Oc9czwQ!6SXl0|W*>aJQbjUQ)xwhi$bepTjQGT!LN+;3`3t?&fT6F>E}BSE40-zj5ATQqR~o^l@zU)u{g9`;+VaB z(TX0=pv77c$}WPgU0@p!EiWbh!bOL2S#i~LyoIV?9tgP?C!VXxEowyH&a6(+@ujqV zRISb$>Gex57rQ#Rq^Z(akzDzqKw(^M7;6WvUZAenHf4E@W4dMwSDER9M;`E!(~EqQ z)-3jF3#Y8Q-TS=iXEN_y?I`+#`GoLx2l|Qc@+xWC&Q$CKk#y}qfx_r2IMEJtc~4|&u#K*bsB1RR zH6?xa!xJ5Vi8g)f|0-?y7dcJU2PrFxypexLjfQ}mOP z7doVtscz~tiIGz@U4}`L(zR|9j;<4EFJHQv{cc5bU998x@H4ipwqSr2ZR1K z(n)?FO9#0YhjUlh#*wu>jYCl5qUg##m3^syQhkc9AG5Rnkd$f^UAg+@x~sBVnpUA^ zMbmX>illTo{Enl`4ejMi*SzUgbWyEHbhW@OX3Rzzt?2TePN3`S@8anSTUWC{YT8@Y z6_+K6$5fGYjYNUM=rT^V16_rtF*VpmSKu_;>6*H*-45T|a@wG5Q0IMYAxKx$k)EC{ z*Mk~7f;w=OJm+P)UGsM$nY4Ya}rgP_R3=5)73ucI< z>l6wUMpxCDcAzV0rWACUP}gjky8r-2%}4WXD8t!@0MZ3yzSmczI>a+|i^iZ!yrdX} z#N#lCM|=5V@NTvh28nJM49wpcfxSTbAIfNj!H(IMG5ZS!ia*3-Q2O7>Ucvvlnr(rb zf&Mf(xaqZ#RjB2Eh{WJL3KWKc+bla^Fmjd@7@S01vjKx1v3nov-t1_i6LJ<7Tu`nG zMH@zUKc6-7w7lAErfyM_OxNX8PpPt6P_*Mp@Fj(EHPJH%es}k8156`Ov!dzxYqq3x z9h;4#>j~P+m#)4ER&*sbCeekxK4z0v&Its%(&mV#>s9H`&tDvLVbNtt@^Owx zx*E@A0)^2vWv(6QI)%Do+bLY_c}&-ApbN;-bmO1SH`0a;rmdCc7N%$*b7?Yg>p(q&kPqiY@7%a^X?C02ALR3_1dy+A6y zh%k4JUP7R2>>}}WS(^O$L&^oMs_^Q6*G&3cBv0uGuno z0gxEH%%P)M=4V43%;yS<3pFA-)?8vE2Ej`t#bCw~90ps^UcMNVTftz^?B^XMLm7kt z{IWI69VB0MaBw*Ov&ChX5;(|MZW*+{%raA!is#@}wMRRPR{tWWznE_!4NalzY}!@+ zh*M$e&{B~c{0{{RjmnHZ6|SFtC+6YfLG?cX-z$rY% zd6nCG_QGBxT|gE4*JYLz2cHV5+q6X#~Deg~^c>RL{h2iD6#twM(Si{s{ z8(y1G*KEM+>7PS42QE4;r<1yupImQ2L3lX(EA2{}r|}1BTohhzcl>qR+jgYr@^$V` zXdC*fY8^}j^oRdOv8C=9QlwRXVkZ`2jr@G88H>6#6A z0RX6}ZDgtNheWU9=6kfj|J^?0MCa24HzgR2qR%NMRC zTdd$x^d-QBy+B%s5?W0$ep?7|71%5uuJC8mL;AI;fVn_wzgZ+)qfwx+Ddq$!Leh0O z=f9a6Y=cYvx6N>YWrlcMDx z7N!;6>PXRJFYKAM%J;q8VGGk|(QtLyA}L%UTX1m2qrH6Ldb`~UuE-$-xUiQ;*(jkE zT-&!3;2N=2JX}LhO_;wht1Ra7XxUbgaGgVe!r-d4jVVG>xYXOEfa?V6nl0yVk$<#5 zy%W`VF>>X;ph2+zC-M6mBs@s{mMZvY>Oxsb9(>*A<_Sbl7wGlolxg}Lq_4`fZ zaMY}5xDvNZ3fIx?IJh38y?o*NoMZ);A(#Lc_TtEQ2jR4EcM<`vlpW&XvNUP=!9d@x zc=i5<%hjm&J4C|O@E;~n7+i*b>;TsZ)D_!iu3AY<*KC0c0BY5g&*n$$WUB(qYY#y7 zu=uc!!KiW36l_eAl!DVqI0~}RUcM9z*uzl3`V3M+1fqcbq^X};Gb#>ybri6ZfI;a! zmNEOw)zQ(N;xQQFeLUe^;ydF{4BG#=d~No#My78&MPkr=mlzCY?6Ly}|DvwghCzef zHe=wn=X`VpxbjBbZZxq}>BvkW6h*&0ceqH%qUsb~ z;njOD{|UuRM^Lk(>2lm7DP48<;OOds_VT4`Z?Y9#iI)|QR?l&p>B3$f?Lrx?&fv7k z1iEVM6;D^Md!Jr?9Q**Mbedk0)zBi5n#NF8W%;^pj*|P3T$jg(V#`AHLj)0Q?$eEw^zL{7NBIw zOrJ&56__k3UDJ|rbZtg^`O;PPkQH5qBP6=8*GDe<33J!K2MKgd+Ap52uVoX5EljA6 zxjx#zUnE_xP@pinx*TANkd&_Y15(iS7fy7_hFl zvExCeZc%i7Z+0{CU*Gl=y=2t8E^FLNQ*&)FsRX+IJ0zYiOOuu#4D`kZ$M@`Q=uVYO5lNR13KT}y zUnzE=>j~Zx&SckA8@CGS>|=izMIb#WU}e~I!;54i^kw&s-ze^PsL$S zB25?uV-GVJH2-<`DB%pkpgg*Jgx)LER~sIVy+j&=a$14lao93yf4M|@oF*QG(8Hq# z9CUpyr<+`B1LwmB>6Nr`I-aUBfMDr124IRy1FA z4@=5dkHa{=BG6vG)6C6dR(wSsAoGR2NVDN5u0LLgZ`G5s`fDMS;Tj zDt6QkeEA(^YOsy3?Wk+EO*Cx2nw#(0nfY=&#?&o}FZI47T|*pp%IUM+U88=>yd$Sy zoIG=3Vb!t5uBchje9br}DPLQT;rRL&?d8kY-IEMotQQX_{fGFnycf??XP&!opCfO6 zoauxWTFXxo(3*N&Bm@UhpfCtZov;H0{Z2>$!7kJ_+aQ3O`B@zRKoiT2YgxylCvAY> zNLjxV53Z_>bjXYiSF_vPGSW_u+B>(X)kNL{H7go|*(W81;GdH?2ri<%d?Dy?hJk?f z2#|}bl39m?j{up!(tzuQ#%)g#F!+#8z+m$!#vd^+H16%GOWAa}A4LzDI6LR&H7!N| zxY)VOkeEmEd#6OgRsJ*+C=9Of({_Ms7wU>_Gfb&;rfW99b?|%6q@K^5O*Hi_XVUrJ zZWNupvVh_5Nw16{sBuvon6m&~XZy9)k)?D7HLnO+BPmGdKs?~TP_y1NbfZ6c9C#0Snvt~ti2b-gEgvNMA>I2 zt5Y=X=DW1~#nW>7vER9!VbLY2R~JQs<#ve)6b4q@B|Cs+L|w6M(yDTq>6$HI!SjIz zFH&ibc{%b~%sY+Y*0W<2YFrdp6E`?g_w=<*bcItDfWtyp6KymEjhw!>j%g2SRy0^2 zE=vkl#Va_lI-tFL!Pw*s#d@N&H>9vt3=46o~`2ubIyYS)+=Y{P5ZHJkBj<5Wo2eQ7}x zo%pDtBF3dMMT2c^CYRiLMt%`BE()*q`(!>XBfC9c6O`dyb4uh{E2yjG&UeDQL+ZH1StD!SIP#tXYx?s$VRdmX+-z$@y8c)VVA&S;)K z8}~%fwi_bxx{m^d;nn&kQ-q{=O}HrqUN=$KY?-|}zO54UcC(RAEa#z^dfEI;H~_T5 zp;NP4Ox>dJO1X2p#qTXUQ}nyVkJPnSS2NL@4lWHDvZT04hnf|Q*PdIF;&ts74zDk0 zFJHVu?pooM?Lfo}`$$pHZ314hy9B&0-WHEnYRsN*T{ht!DJuS-NW45zpfJ3a{AUNe zZlkW)HhZ+CZNVe;kD|oomC=C6h+UU z-!0<1ww#H+&@4S;bo^W61=Or)yvp8{6t7lyad-_vd->v}xo?FRC{Dx+`%KXhl+xi z$=?f`?{ZN?mN3s0W!8A#qvH+KxM&V4-RO?4fpGDIZ_efH@Rz1SeWkh@V($(OZ6Su2^2=x;3rHGlG2rkx?|rp1qjpf%#OQI~hrljy=;AU!}Ct?2T8O`xmqOYwABn*900pml!HdpA`x&3Y-4 zuEQu$7+vLF*@3R1ub3Kaqw4_bnk{qzV5+;Og!uwVrW?+DDjjTT*rVeY)VOF2I=q$? zgAuQB7)(KX`C{<;4TAyeLl-hV!T^5gBKHD`ixlruf&FAzOWZbK5vn*JMe$YORQWT-d^{=oMCp_vrKlHjde*RlyUKifDL;ss70uVT_mc8e{R57#&S)=R zzW(`a#aBi*GGExsq-`jt6<_Ml1imVN6wlX}tEDqFt#Ge44)`dNuRldaXnT`5 zW%@%o{ovk`PHXBtHdgw~^jS1tLqAK(*QC!lzSg3>eEHh{&5AFVQDnZb7fQ}w2=kZj z8-cHJU&QleY4Ya}9{-+Mtn?)f5;ujeRG7+>3gj-5Ho#>zj=rsJ=-G!pv_t5VoSdd_gD=96&(;*pJ&Kc_0w-JP$v5B8&mYO z`~A-KZ|h9aYc5?Mb3V8zH3c;*dY(C!BPm`_a&UMR0}j9e0N!}T6tu$2P?3li_A)67 zrL;PYb1w*c!fbgyg>fG^04D%MeRA;fxc4KgT*rM!W@QHlb06Rn?+$+cCE+THRXqZ0AJP11H4gxr}csA?@i^;on zE69LU0A3yXhbe>An$RwT)Mzi?+3QMSE4(6IhRE`X!8W`$qpsP4*X4iytoZyNIh{GL8c14!ZYCMN zJ?@x;8W)AvY4?(++ZtO_v`g9Ty`DG!ET^XiOj}udM-hrD%*ZJkuPKEk#cM-h9A2l; zUcPw!SJVox%-%%2uop?qoS2SS;kC3V0k1?S@pxH|F_s?;bg{0k=lg{frfxWi#H&;h zCQuk&!A0zV*A~ZyZ`{9#h;m9;U#-HoOu!=(S3GkM=#X4Xb%1;Dk%rs zi{d!QKzsRe(4mAC2iXI090Y_#M+9Qu;MKMmfrAgu1P(SA6VJig9aYO{vf5GfC-b*t z-tIsj>A(Kjw2028d&NX@P`vIf7e|C5KH#zjptbtA$Xf0!pX(R(fyXxwnd|KxO?zT8p zcsZBA;nfuF<%`!!7c0CHY7+6nUL-9;DXpfNel7&OoJxwv>+j0JH5yNF#GJ)ZB}L*D zg93$3GiOi{l3pa0F2&Sf8(x}HHsb|?UpWLi{VS)7EOSbXb}f$HT_iu8dK@(_3NN?S z<=Yz7WhlCT)a>iWuh%lsQ@&JDc#rNt6?S3zEE+E_7fJCN<$}X&F51f%uPJ*c)a4%W+xqqhudJ>dXL(SxRbxQfKf<2NQy7+&$e*#WQfs4KS3UX98zU9$x* z05ZEaEn~iuq=>u*%(GYK)26?tMxe$;bMQ|&NjbP!4#&ZJw3jajL6sN|U{!^DwZW=z zpTtp!g9?^M?(%!lv7$VIgsPPYB%CiVo`j6%liLh?_e@TYaW0tssL>8NJ>&6;sUs6* zrXm$YlF$hS3L{}*1v`*%19inV5?WQ1f&}x1jy$=q^8#QFYFyMrb8Jp^t@nitBi+n( z=H4?Cf5_=KPOk5!Op2k-p=Lz`=2A&gz*K+tozh zU*cm-UV6Yt7w@&{!JZ)@)TtUG!TNy$g@NT?(+*%QuPFssA5hn9xRUYQy}9+Y(bXv0 z@6Nv0F{dh;=*#a9j;>Vtv(dK}Q@1Fv6m3FYjab-`q8qpz_}XI3Ya{({)qlzk-CdGe zi<(8psp4?d1%=D}gOuTFO{mp>!K1kr%kUkp-A56)X(_jSp;XHf>0c6V`phiW{ zS+(6HrPa#~N9!oGmoKg7>oT;~|9RC#oj|lg0U)geR?nhTR;PmTbqTDtuPvU{)7_#x zm&F%1p<7ZuDRiqj9+O%t?#cDFMY6gD1qx#|2NfadB-pi%6s)eT!{}=RtH5;fg3AV# zoUT}E(}SSIu5i`C`Dw2OljWaLWeK&-lHwR+qf=vI#~2i|Ky;A&w# z@mzf^-|1Zck=_(N>f82!F5aKybmtjOYiKvGN;z9kBv%FMGl9am8c?4pLQ<|)qpsL? ziS-3_%@(dQAN<$=2FmIGT3+fnDHw9~&8KJO)idOM8ZdQ>;%Z{xvGo0aRWZ>M9Q-%6 zdHq68uU+(VT43|SrUj^3(Og|_ASqWL8{oLA)R5WBm#ZmF7_L}fCSw?cxUzhiOn_F^ zSsA6mp*0DmvzoFxG$Ek%s-bwaYOXu9Zd@ZTitd==TBT6te@42NXXTNVHjYoJ+ejo@ z!%(0ww01SJ16rR@S8PM8Ut^|gwx9(fU)=b5J&o2G+rBthraqjq5;7bbolo0_8W)Au zEbm^LzCVt4vbx^^UZQ42qt&#Dq-gbRfCwPl+Fq* zsu=+-@229>%B~V|F67ee4s=tG*~iwzRW#8HzV=8DI^jx9X(|$}{U}fvS|!}=fR?{I zQ-f`2C84g_gqHc*hxx9}l)}u)yW#1LH7Wl?jf-ZWMKehm=-&*-Kpfi3mw`DR3j?hYwlGVKcQwt zW6;h+QVfQ9;4m9 zakWO~YNCg{{O#C}%Ln9irL$q%0)~W`X15ec))5pajI8pl>_FDAR#K345OvLlnc&;{ z>}vNTtC?u`m`h3pT*Ete;$hX@B|aNVw`S@VMOH1>m@l7O%P2Z|@xzO=>+O=${cpw` zSU5V{7=oG=v4(fvvWE9)I9kJdf!6Rgp+-gH`mD92xH`AN;o21K<%{d0_6)A9#Rl0P zgez>r{IVj#BHnzI%L>+B?Fq1gw&G!RP2OE})1u^3gBkIjC9DTzR&al&j$OIId=(y?nWP*@@wbbtfxH zkGRVHjwaG7-gA`93am|?2w)BBAResLoOZ>`t9Tm+zj$@%*(YP}RqKKdBEdR^0)>H9 zwIfr6q+kVglmaXh>Y6QJbvE9dNyi)M0^$4Sol`)tt~M(cW!NGw--)SP6j+r9{`S|y z>!m5$|MAJQ-HX;W(HnonUblG$ zm|s7h`=A8JGF~@1(+exM3U(&2wO1~lEimM=-n@)QPfAaDboW0wO$9Df!)3fza*=Gg zQB0sPw&Ex|uw_JDv2CrPiYL=GTi60%aIETb8r|^Jtios+FS|^&v&TC{p~gkAb!=^| zMNw6+q~#tE>C=(l>gbX?r0qe?ie~GBr=)CE?2Kcp1KP`%txvQSTc*btwn*!EYf(Nc zwsz43w%&CXNkM}yVknr@#SRo4M_sXvf||4x6u<|+Q{Zr=qSIvNr@rA!g;Ii03G2NINY#XqbP}gibY!_dUe!+5^#JuD-YfiT(=Q=g$&eSdHu; z_IIMU=HwWUd~HC{#zNB^XZGILX%uQ!GzZ(eOUgk;cN_>P>xc`+})c22l!X!KQKSQ^vH`a+LwAU<-#>>2S5L!a2Z=0 zqzw1hYa{*PQNCw@I)Zumj`;_8wDI}mcW{<70N^?bW{KTb6{6C?H@5I5t{5)5!<)J0-Au{mAI-hYvwcI&!7|I_3fLuD7o+N>4OaPNyCM;* z002VN;Sqt_*nqf5l{d{aoBNmMreB-iJj85y-;LzWs0o)w9sJD8E5YOQG-uY-KTNCB zn_KdSws;Q8)7M|N6FnFuS`oUQSrB!-7U88ixC##RAdH7?J@O2H_zBM7@jPC|W3B_T z%&|@G$y7ozA<0pQ3HqLd5<+`QZ$eKWZW9tKi7=s)521o)KK3)AurId>R23m6d?uBU zg-Vc;gbdVm5(x?4?lMP0AtW62C77_!*M26<>cwq>>&=s1?_v=&jc4gZWA(`g^*Ctk5Iw~RDzTw+(ca`kzgnz!i0ZG6`1_&XTst> z+$Q*C2_a!-AA$+v`bba0h`!t;xI7baIO^M%P(jze_A{Z9e?BIZ6+%J@^T`0S8JwqnnFp>j@ATln~+dWhzSb<2;*p4fb=G)`*D+y z_*R4oL;Ddb=-tnLB)IkGHX-S`ki${={)7^W^_Sj+SE%bG5@at$m~f9&!DUo|JxKU_ z0JjO*mP&Y?9jzKbFk#*R=}m|l$W4NK1rZZ-$Us5`g9h4G4-!&QC8V_@QxPGD zqoiR36V?rr-h>&$xlM5YA%cXl!wD5c47VQ%okwt!04z-NnwVRTAe2yVg!CpjEAla+ zxCjz*NEN(671)D>lc*9B381175)LW|CTv$oZ^C>fw+V?QM3^vDNvL3q(tafP1agxQ zSyG4z@<2if%>$)3pvBqWsYq zk)X&Ha*BG6RKj6Yf|Lt*8$!8FaQ~kO6PAS%OqdmFKNA#T+$4ZELQL=vBb3lBOnMR; zsJTsubP#bks;VYb;G(vl36D@EBobtTZuDO#m2d`?ASDU^jN~>U!!mw^+}>O}l3>E( zk@hoTOb6uqMKOCg?TXBqVwYIXeo~5K0)Vk)DK3T5b~(dWe`4 znrR6YxM}TY!e>+oi3CL_Atq#zO1O(kkdlO>k=!Okb{1j6zDR-ze@EKSgo&fMNdR?( zm@s-Yp@iVk(v#q&<2E6~(sdzoLVF#df+jlqnNTo_+k}i3LQMETD&ZL_K}r(-MO`P} z)M+Y$1XC2jgxyj0GhwEl+l0&pLQEK^CzPPkOHV@IXl@exWFk!H8cnF6O|<}SG)G2A93))ivHv@rw|V#i2N!q8Z5 z5?n0fN64JeJC;yE=UDrhP(F^^gv{1LOehvdDB(LQK}r(tp{|oiaIqXog_v-eRKdwO z`Khb_9G@Qh3LQ*v$CRCe5D53Nu=}mZ#x=tb?sjCPRo{}oKg(|QI2}uTS6C&#g zF=3s7V8RlE^d^j*%uRxe<(xvu#2hi1P=R8y{YYpzh1&$bc0x?3H-%6__>w4Ol}hVx(hL(!%RX6O=n7PLfLq36AX<+m{2&LP{C(Z zfjvk#hbkeF00b>%A10NsCti9Jmi@tPf~kWD6K4HEFk#{!_9MZ67B>kdZy_Xfn?)$0 z?JVg{s5+b51a}`1Cb-NdR8VlX{Y}Go%vIPzh2l;H{m*Z36HWVZ!1$ z1QTY?v7ZUU=5mveVX1`Iqw#)o2_m!5=X3%E^4 z>?Ohkw*`a>$}g~=30bHT5(%c7LQJ?zD&Zn3K}r(#E#x*q;U>a_zZVirShdi8CX8Oh zO+rE~AtnSbB9t&-k@O_AU(9Vnwq?ad$O2xI#e@oKEViEsA5bME68!qyW?mY^Yhr#z zD&aONK}r%#OY$+HFY3Aw6Lv2ln6Pn){Y)6Ql$(UeC?O_jmJ&)(E|s2yuFJShNKlF} zq0KTv1r3+k&jhfX+XQN`5EI^#N_dP)kdlOS)OFHQw!%w<38~8oCL}Glp9#}eaGRhA z6kY*d1jBwR*a zCy`+A6Jf&1RRj|buCkvA^Hy`4AR8gXgej{DB}A{5o`gYva+Ba5B*FxrKM57c|FoY8 zu4}kWQ1laGg3}s8313hNQj%~7b)7^)W|#;QE|4lXw#I%YEKlS%A#tD(6J{q8Oqi4? zJqba7agzXoMVQe4FG2<0f7#E3YHPVo06m15P zRbY>sI_uVPo8U4;hzU#95lo0*C%p*~>$yqD4i{m9Vm+Y(|Mm7Gq22~=6HE#rCRE-) zD52yA=}mZpx=td&ZiduU!p@a&Xr8nUl>N<&pOv{l}$lB3sQU&)>1@<5z`EPC$ zG6YS`TmB}Pu=;Q5O_;oen}npHB1q70Ayg2$#eO7o*vf5!-*6#^qo!L4CDhz1y$OZ4 zahs5!5n;k-QUzJ40(+2f7*#@A$~JWqV#1zn1QRxGliq|`+qq515ObX{aXX=c(cA4u zLbn~|q&LCkA8r#OeMFE@@E<}2A5aDMAmI$EghWD;T8Ig0q!M=i zBfSZWlekS#XhoPXGl^irxFq|L;J1^T1j9%nCUn_JD52F(=}oA#i`#@mod^?3>>^YE zcG=H_E2t6@2`-*OOgKd<;Sef8$_2bNySYt>3=v_%g53lYrtP+$34`}=lR$+EF~N5a zp#*A=^dz|Lmv8NCdE|N+(j!KY{gunN3n*c_O zAYs)$f(i5X+0TUFWNs2NES2zj+G0R5p@bgE(v#3+Keq`&>%w4kDQzl1L_T;-r#}; z6M|rVuU(ENYb`9BER9~E+MoLktl2L#r;{h=B zIdYvtlXplH68lNLd9(k7B+gCLWwgd2Df>kZb9*YYJpD;z|Er1M=~NR&X_BWv(TKX7 zT+4U>7ew+jVbkgZ&a>R8SGXY3I6t-Y(45&_ZgO~9NSauJ3LL>?B57g?V*bT#?nk*bF)dvP5X)i8_n z)lU*M*?dBPChC2@5!n?=QUBqBNSfSk&|${exIOYRCo!2wnyg!pHP3zQISx&-kR~Md z74f{;ze^J5BI>d|*axS%J&iQ5JjJsA_7uU>@ux6Kli4piylj=$#+|qzlBcn*56|A; zT!VUy3nF<643UizjJ-KLbxr5iBxyBE6D<2q=>$y@P7BfmZrSqVxFC`y47l0yFSsD0 zCMXm0FK(-MhFcTAH7rfA>{mWR&}4nO08Lt?|2N{VGY{oAa6u$ZPH3DI+mG&(mpp^X zMAGEw%pYr_v;XDL zL7KoVTYeZ9MAC!-H(UMz7evy;62$zA+uY7`Ymz;kr3se(^5+SfB%TwX$*hPzq25p3 zOjmG0Bu$nEA5ynze9c(wJSG!KlQ(y-=G5JMmP3<=ND~tKhN-;SzeW-#9d+3r?0?GO z_B3)1%Tp}-FER+8>N7A(6WPzmI``r)FXP|1Ad;sbXZXGa&1+G2a6u$bmpRw(5taNu z4o{sga%++?i=_#c{hSK~O=eyYqKSFSmZ#!^h?=0FH@F~@CYB)PU)(0U#H~rfVwNUY z_RC%(XtL^}08JDj&(_2iE@ZlZ3nFRq^=2Vc_v58ag)d<;ku=%;{QljmC*K)yYA{L=xu&>aso9e|MSNQ>tw>$P1#x*= z<{TIMjyLnsWHw6^Ec+jC5HvB|5U2^ncrPx9Llbk*b6gOYCNL9uq*u7bt%+eiOA{>n z#cvTbS#(pdCIFnq1#xQvzz4Vy3OsWERp3Y zmi@c837&@C7VPQMl-0N(E>BxuZAM+h1#x?teSpK&JKUOpe9!sc{zuSc{C|Qq$(HZL z1#xKtF@B5-%109p_FeCCYhs$g8Yfuxo$eAeNw_0e69A6mg19vS;0rE@TNAGBGSY;^ zeo_K&_D_<;Ie6E8>_5%q_LSPp@)XPdtxSTa!I=U)y%mnFCGyz(LWNRiFwPG z|BVYGX<`Ywg9{>S0ynOC-}wo*CSW2<6D<2Vj|rO0d@Mkd^B>~JIZpDSQgJ~fO}Zr) zF>DSmK)t~Qku=#iWy6iv_qd+zIg2zQvG2ElH~YpX1aWpfu^;=HPxJ9~1Itq^`) zx;^x%08c^EG1ni90_F2@K_pL4-Hu*ooZEpqfeRve3QUQ^p7&65u>bBEwCPWiNvj6otL6fP^1!z*Tt#Qrv z;8(^2xFC`yGYoxpId^+ze1!`lY4UvMVTHC@2FEx#g)||tFI&i){X;JZ;_P@~KlX2D zaeJDPFZ<`S2;Cl-CBRdVnLc>r0WbL+ToB3AMZQUE7JId&j^Khwo&r#}d!JW5IXumN z$*oDkOx8HZ&ifBu5;O^aDMS=lE#n+M`;BG) z<12zDhF1bKS?qn;<@BgB)LvW=Nt1V{mpS?`twTM>1(7s~E3`Xd=vX(7bN*vU6C(R@ zyxC8FO%P|xYx}W(J)7H8_di(U96Rry$tH9=AX|W^Q_^QYJkbG|;&DMFPfg$Yze-#F zMV^KWB6&*H2PrFxyy2MRvi`@diQhDqCRq0G{*RzZ*#87*V!?PdE{LRwCFmk9h@^=n zi1`=0z2(*<+cM6H?7w|O&}94@0h(-UTd!=?CAn!QE{LQ_=!I7?rRF$Ok8wdHO`epz z&>^){xwd+1(7^W^7~ji$hA0i5En%96o9aeBWrtd%==H@b8C_?j-?5f{afz|ngqWW zqKSFSmM_NzkuLPYucjb>7DoqW0l}NS*=^b)=_f3ywMN z;b(45+$XR!!LontGeHx@XCay(A{XO=NSauJ(s4m#P2k4G{--b8nouiQnqb*~@r9s? z{)+%jR%L}$55G{y^fxYuq{;ka-nF;y{VuBbx!HG_f;7pW z{jFaK;{5s5e(az9#_eead;J#6zVREO+g{%UcnZg!QS&in0xpQ;DFDE5_938l;etq> z0sv&b*H@%6kl?n=@7$VXT0Dj4w^;TseJ5x#^t(V!Ad&NNK^&TxgHGUrI5f$J{dYgO zHF05o?gPvIlOF_4B7X?h1b_{=AZ|?nxQPqm)`V-@lf%t^((k<4-;_fTXGMZT zo+jihEV!Ut6>0}Ah~%kZbocXFBTsY8`?npqHF4R;n&YtSpLZZ=GSESQCXB4v@;SI5 zk|vg*Be)=vCYGRFBdxaV0^FK_T`Wzo>^~?#&?LNo08P3spL$A_)q?s97evy;aV7YY zLb;l*;(|z;%pCaL-M+mxdKPk}5=H~#5-V>B*^(P$uSI+?G|CTa$zomL^#C?-nL#5>{A% zCfhSU``&)mhFXmaB55+dr?G3tPNhv3aX}`q#hd*#P6Tll zIN6VVQxR@YO;=c+V%gtagwX8{MFe;XrtiD=DSn4>G%kqbDR4OXX28k<)J9wo$x{G^ z589mGgM!|%l^rt1Wo*k3em*8Wy`1Gf{2=+po6#|vLi3l5mx!36}k%B?y}Mln|zgnaIhwATCWH#`|zV z9Gc|A{=<^onkcTZG{Lfett3GcMM=S$0I(Pr#H|Sc>9`R{@@8&YRZMW636?3KvB3G;#XZ z_|r2AQ7dpkBu|0iLA-wSP!9G_{l=|{%ik*h_9vpB}ds`A|IXCLIv{=D)8ai)~FANxraxIHyoWQ}v|yuYpjq1%lr2=MgjpF=kX zE;=q(;(|z?CUq}Ax!!_;)Dm0}$x{ISO1qNA^=!|virkt+?qO+yWk0zhK@+N?08K1J zM&p7=nplFi;DX4Sz>RC(zg~%36GbXZ6YM$vnMwpr0xAj6#O;p1ZhPB~R6H(-q)GWY zcPF$BePv9;1(7saxMfI_vor2-to1Fc%*}pg25MwU7Z7ew+DE)sYZFGMZC1(7@j0GPZFDLC%$o2qhaLhWT~f@Obq zRe~lRstVJ@Oyp=>5Qiq_ppCd74o&i5|8g~MO%hJCG{LfevKm1XziNUt0bm*~h+7i? z4&s8iHR0M8RnLcg%e~h@!Qvy9u*q-2(-SoT-S2;Fv*3Gno~I&NdY zZ&~s|xFC|J28F)TvQ<^7xws&rr@x2o=w6fSdOxKGwmV%q|I{F8(x!$0O_*_) zEswwjkuoynVZ`3|q5J{6Fjk0uePgLZ%-cP8-&3@ud#7_R~|6YqAPE0NPvA^Dp+f&2-{McXW zM(DQ8O@OChSz^_w&Sm#H)?~O=ACR zGO*riPig`#h@^@9!@{(}TOFxgxFC`yV=wHPwaWKBhbFV@aJr4!)wLh{ ziS@WW&1A1@VdwpY^$6XrQcr-VAo7p)XWVwm`{05|p2~7+yX+lWfSQgAB6$jcPvdpp zx^l3;r#`nP)DhM=$FjevK0y=r`a(1@Z`pDcE{LRwC1?dMh^z_RxaR#+4Y)ONIm*%m z%l@GT1Wo7$0yNoirtPT5=^j)ZE{LQ_?XU6FYU5k^4qOmXlP#&Ls^4#NjFXuS^I?Ar zZ}!JEB#5JFXg~H>HRATvu$AR0mi>8+2;HvGNPwsCdVkfF&ndpRAd;u>(fm~b1*s{x zAfl%L$Q~9S#&Lf?sWG=Ene1_nWq(~`f+md`3)93*q!Jgzp@}(Y2`-33lYH1e)`VLV zMLKJoVA)S@LePY2B3KguqH#gongFl`7sRaz*EY2&H~WU;yxAYqlpxN?ruJihnLD?q zeg{~dV%eYNPUyC)y8ut!_MDHdu%IC2jSC`qO5JWWu~g~G)I?km$y0;V<1=4_&v2Z} zZEMD@iEKMd6D<2{nh`YlKYQ;16*cp{j|W7oD0Yz|Dq=?jlp<`hRJ(|Z*g*wFMGz6O zW3MP8_J+NoVxtM0UsQ(i-e9c{FW_R`D@BeZRa}H;HoZQUKbLY7? znIyYS+i1XvV&2K=fhZ#!C&flFC?gyv#YXs<&RLN;k&8J&YX7hmh7(6C4LEtysN9R8 z|1iv0lo5`Tmlre22gKHAcA$)KoYZ~wp+nE96$#h-k=A7GdtOmn`{S%JLmp^UJcSW7n5tX7BFf-=H!qP6(lwT?O3gm-wS*pjs` zFXlw`T3@g&hMXa`e^2|-cI22w9}vY9sr^}Y7`H3iX%JKDS=l2uL$}jXlo2kbzE$pS z`}Fc(Iviz$iz!8!>-5^%ouK_~_GC^h4~jTJYJZhIh7(hJO*koPa=JIl2**jW(L$6F zo)f;2uJ@B2$efrKKgWW7u5Ygch7%hH4LJGM=4Qx+uI-sXlo5`Tm80IfY_hDzY(yF1 zIH}sDz29CckB|=|+LN`IE^8vAN}{VKc6ATRKNJyBtD-bwLh7`xUIuz6w}Bb@rQ28>`_MKm^Ng_ zpo|DHJ$X7eQ-+V~dMTNcXt`*fBelO&is7WLR3lFKCa1fijL4kG>6s`a0w*f8pWsa9 zME+I82~zu8oiUuWbk=|qbKmC6oU}L7ekdaxC)IQ>AJWUaNUua0;W*jS%C>=7!brmT zVTg+g?U%VTZJicHsZsZbx?srhcKLhSpY2MHX+l}Sf2{T=xMJLnqKt5yocE|Xu2$Y%ItFEgxkh*za!%CNWW3Y z*L^pX5t$P?Jqcw*=7e;;zpE3O6VI2Td4kmbx=t8Q%sOen$?+PVrypDkWc#9waGV6p z+kQ=McZ*$uGQx3E?os>7){QI(*ZU(nleKU8NZ>^E^?v`(7;?IG{(IV=(uEvTMqf0~ zk=hULf^qw^;I>-YPyO~|dgrH=xmH~e69E@frtrt~OWn_H{U%p* zS28D&x*|@H+Mm@G!%5|?h{IE*eJRQa$B81f$?0&E5ss5$BgH4GZR8Aho}$ z8-^3pZW?gnJ8ZAb#f#QVZsr%p4euO7Erp!}OK1XVQlqbgR_k!DMX~s(5t$QG-H-Dk zbHY_nrTyhz7*345G~i@S^$@RR6T2`yP)0aT8g3u`_DsY}b}q^Y$4Pu$X3yf|6$sk* z?Mc?Y{FT~uzh_SjIqp6Gp7z6fkz=a=NtO18_rka>7u;4)`>y8uu5XyaHtvO(2)LL& zjI!BUd!8fH4`qalDV6u5VRLRd;W}=9Z!#y*6-DzLS@$RR#&Dw38*zB5v~Q0x!f{fp z{V^ybEGI>cr2X~YWKMi5i8w*l{iWU*PU?DVz=^cc>|)3wQqV~ZS8mNk0D3W|L-Yr<~py4SlzZHSk4D1YAtxYTNkEzN*c1LmA;>%1?7w zUoDAZzN6X{KNXy4i_UM6bwAh-!^vlqr?`2p@J&v)^3#BmVxu7_BN8X%=lY_DkU8NB zMe_uy{aHgWoKzlyI6NFDX?Jg1&uZ(;NKr<(dGdb6qrk=+Ot^5A5ss6csjC9|udGC< z`<_F|+UH)Yt$mlF7;@ST{d?LUHjEroeewM)WZmyG4C8j5;I?|&Uwiml!j$c7tzn3X zfQxCQtOqyo)xUHnlo2kbyf`8=-w@9EBmBvnW;%wGde zij4-Lj7Xf2wZAxk%!y~7h!dptrw3p-DIb71JRB$MHy<<#;uyvWWrUk2%a*wZeG9J5 zg`$jboLp{mHhb)XcZ7AJF2l*%5BZ?B_UYjma;%2`J?;CBP!ZE|q8f+Pe$NpYw{Ht> ztEYX6GOaR8H@(^j#6-Zwlz;KJ|H^N)JIV+bQ;MSU8hq$P(0*7TnUlEpqIr(g{_sEy zCvudhxOrYI1Mn*VlbC#_e3eZS}PO zxO$vT;}@*nXv9Ro#niN?0d-@YG2@If!p3ytlWFa4afEyx5=7=C;kjs@Beg#?2*b$> zl&9o*E~gs=X~2nMvdU?1lo6JbqDH#jpFM`miSKt2CrIs27=z)28iP1I94B10F^=u0 zx-xB1M!0#>r%e8Uqm65GBT+^;PKGw0ome%wHsL)!*I=^t^NR10sn))2FovAw!GBNt zJ|X0oTK*8l6j}E>hhW^kD!8ql_IEiKHgk?*D}*2>0xqV^0L#d>L0XIiWrT|{pp0;wbeY{~)%5J^ zgmr$$31sa@z7RN3UH4m0z>w2$!r#-rX9PK>37_@)S4Ei)CDEqGp^F z$+#2Bh{Oq5`w^4KoMh{X)`gJTA2kWX$$ONiWKJlm*(8lQp{PM9BQhtXW;dCvea|my zYrn;03^^u~|DN`{Od-dV62}y&eR>MU?M%UKwY2ZMbDodil_&H!lo9TnKeZr`b7PC}}R<~dUPJ*Q$gxsCFaJkRBHwW)~1!*NoaFx*i_ zSWb!>>3TnG8krM$@pCNvbr4ef!>3_5k)u4taq_9p&6rywXr}Qr4LEtd)a=IjF3;$G zC?gyvRlIACpVG>RaJ_FcoveK>Uv2F-nT{c+-t@nx{SJ}jn3{^;%SLLyeI&;1lY-l7 zX`k|(y6I)>E%d)ABiuaC>)9@no>!K!h(t^TTuk|CUhb+k;r{-B8DvhVZmP83eFlb; zT$HD{d0wnYy%~tZ!*Nn<`7LLWwIAsxaH9I0ztJoVIkji~J?*>B zCdbrwoG7M9?c2`AxXlS}tEc_Xx{T?=lk5kS5pJHxH8aT5TUv%`J{vI+a4{_shxtvy z^}f#>GAGggB2JKXzw;anCs$FP;^uj=j4RAR93GC7Vj~I4h{y@C?vI{J=7i}X;smMv z!E-U36reoCanij_?%l`jZ5iXa8gSBgpT$JKvkz%6lo5`T2lrP>HZ^@rSnF#!kF0&) zzG`c~{yYph)#v>^?KAVqF}3U`iYZe2*7GrLrwMMWr+tcwyf?0b(;Ji#VV-mStCeNU z=OZQpE~fk^seP9y3@7JNo|5OeoYsm$93GAn#blM!?NCNoPKp}o zdVkmwGAEwBMVuhD-)9MilRT8CI8N3-yOI9AW-F%F5)C++li&NIw|!-%6Uqq3$)+p0 z6D|#_K)BvFTT0fxy!bju^*Mi?r5JK5F8zDjw~HpnG}1#9Q>6A=L}T1OBDk%V_9<@N z=ZF8yr=OyXaPyq&Y)_3}s>_%}BPIearu;PDHK`oodcVsuGAB%gh!dpt>17yBGEtu5 z=6SIqzoCq9oD>^bEz^(_@;Se644D(p4kAvF+V2^I;p8^TQyeFAe2rcQbaZB_#UKt3 z$H}>KtNYgrtvi9}e1Wr_Izs7P5Il9aLp7w2G$uX6C zi(-n@ev?>?+X;f(>S_P#fsF>w4$zNKM!1;fEj6JM)@n2LVi6Mo7gJswk%f;5*ZUn- zkU2^46>);pe)|;|PEMjc#m)0#8UKqi!f{e;WU)d+PRQCHu#(J)zL$s-r1rb7#Bh>} z@)XBOmSvSJd)AiGTZuS494GoU_H}z^^)Ky=GQ!Q1*}dkhYrMZaq3#>4B5OZSeeG9W zg&{|K)!);;Z8% zlCAQ3zw=rQCs$FPk~yKM3TqLEN9Kg0Bq$@oJWs)=Yz{SQOq5b5iX|OjI%%PMSY>GuSbl8iz$~@BhvHh8v-ZH1~Mlh14W!5 zwQs!v!$}&-QyeFXsLAO!C?gyv#YW~EG~lGz2tQAHZ6tFN7cSxiS@%6QVmQf0d5Ytt zNzmw4AD7Zx*^P+9!*OyXN4r&vd2eV3lo4*8m?s_c_-C6gq3+k*MAkktNZ>@Z_RDR; zkn=@w`EO{yX&gDG)Ob-$k=i$m!??X|6Cymgm{P-DX$>iNfxdwT+@8YgS^a z#34q)#k6RC(;0+ye#gyZPE0$BI6-Q^^=1qw$tX{;oD?-V{Ssw_|j-0oG%YQ@rrn|^7%~o0WYwW_r zbp1{Q)3})OFW0%XuI_XhWrT|n4bc}n1pmDVYVL)_%wYwd?*@967H9m;Z+Ljp9|rbeJfn$hu!O9uw2mdl5{lis=QE5jmy} z8SQw)NCfSxXqNlPoJ9MGI6-Q^(LM|(@hDHpoXF|>C?hf_a=P|DjX5FR-*??l=ESnA zh!bSpx80B7ghP3XQUWHXu?G-L<6>GY$1Ic)E~W}2E9N`O z==ZhX@*tU$Y?aUR*FT8iWLJX5oXF`rC?hf_a=Q9K#7JaLNZMx(kvXA8h~^1W`__jr zoTQ;V#my6wZMkd4%n#?@pp0;w7(P54HDOv6#{7^5oP3)2PtN^mB<)j&$=c5@=0x>5 z|2rHxj|G?ihW2Y7A;&bjvnZxW?Uy@(iD~p<1k<>fDr8(f{S?Xw7gL3i1@i@EM4soS zgmeC;N6DN-juCN!tow#XF`R5WqA@3O`Uc8~%!!l&83PGQ+j*-F?%;nU^Rd94CPxJr~?qS(a&-r~xNV-FF6jCf5Bzfs>XLMOBxM z2@LWJ3k)9PGCnlizgzGy|1NRe1x{3J|22-Be8J_vp?&>ia!f-!MKMKczf3YFri+sh zOygoIJ-o|y&R7#B17(DZsps9q*WsB4+((oVZk}KLkUF+rwSNikXqcstIf?8g;smMv zIw=@V;*vGsj|$}lT-~jxnO*t#(=|B2W)pQZ^XMNLj$Mj7EaDK^qgM~sB$ zgm0v}ZzCgfB3~%t1X=f+$S|BFpghIRliVH4EIhY#;vS)laGVUf$bK4OX~xx)X~4<& zh^wYk<`fd<$$Nnloc7~3sIC1cIC5?ZF8>Yfm*>baHQgqPDN_4iSxii4vk0bfF{Sbz zeBVy_&?zV*Tukq@z2Y=|m>cs7WrUsQg9n2XNZ+9;U1q{-~^}ryoqXS{{fDiYl6#vL;E@>$uVW( zMKMKc|I-OfOe0Sqn8wAFqC%eE_?jy_iZa5*G?cY}o?5*b^9*H#pXbrpS}iZhP%~W7 z>YgHVLhTlDg4BMcQy5NSPin*o-{f=_$_U4a;t=HYca#yH6U9ghV^nK-n#@V|Oc5tY z?bknz;bhk-4LDiUvD+B0@24bpP)1}ag={95@ql^eKjV!paDGeXhnptE{ zqNj^EL2AET7KW4POwBo=Poa!RobUKCrIs=xq#th@p+9ok<%F{ zBQhs)`XkB+&xtDSn_VPx5*IDv1gZTx7crc~UC@9N!}Kz3&;BrB|3MkyIQikYc<-Qw z;Y`Jgh>>udBxQfx-SDU%VNLjg@RBQh_j-0cC%YQ@rpD&SPnkT-FLu&u| zB}`1iE+Lr4X}@rr+$2B5gxifW!o}1w{EDA%rU7>sWrU0A#nTUs59^WE`72*0b7Hwp zG|!RR|B;R1WPY{=oLmyt`O{HGI8Gi7Qmpg8MH%5Zd9HGu-!zBJNw)Yp2&w%VIT%jX zU)F$=Mm58~{A+8X5X~-1>(>U!@lyCbnK3S6OC?i}c?xl6hhLY2-P)2x8 z6eB5&QO)QYnGlVGWEw~FPBOE79?$E|@=?;wcHN;3b zP6Eb`yjW-aa{?!~1x|3<5811>_AlYcIWD;TH?%LmPL3(HUKCTL_8(lw#B}s^1k+gU zJF_?EyDnfiql|Dd)gGO=^rEjDa}8yLiz#)jO~rAMdk8Vrxk2W{H%i0_Qv08BF`Pu^ zYQjlTlha30MmSE2jh>;5u$%}ZDLzrH?oBc$(K|$(AhloVCWe#P8yaw8=u>O+!`y02 z7Rm_6Nzcb;&U;j7!hJ^>;W*jxJ>ts!+J=Pt`?&%qIPL4Jzs`RSM~>{Kf}Fph{TH{$ zF-@2xiYZe2_ikZgI^vcFF{LP~Uxfcv*#?vmE~YIq7wPir{5dEiTudoSUftyUDMH<+ z?vOdLTq5EGsr`4iF`P`ftr;gpD{u!qu6oA|Hw|EjL4i&)EATyj+3mALi5lhN5cJ}s{$uD?K7JMPE=p- zpTUundiU>Xzu+D@rqohVOp)5Zbq^EMVfQqMsbaq6rL9335n{@WmzgpbQAW6!Dn^PV ztn(Mj||LHtkwSWBq zCZ@g*G>d7an6sB9D^Nz{nA$LBQAYTfE{bx0a*Nm_u{Onju~r5CXJTCa1N_F14ijn;MNJYq%Tg4j+u47jw|{8I-Bl^-*b{|OD=msD z*V%t!ufQPx(Pl!#O!?gjZP&CD{rP`-ew&-be}10asRrL2_eC$5|LidF@>%{<{wda+ z56S9qpQ4{lVLliZoqZIHyJyd@{YJmtvV#A#8yoP3|IB;ctg8-1QS-;V+{J%dzD&^J zoy;8-=F5LZKC?~ZKbr=At)oj(RQ40uIQ}ytVCE(M)AW&Bi*gi2We%+{kN*tGKcCNk z*7b{)l;?kw?_STf{O5>4bw2W+`gd;j;2BEpzi}V`>3h?!0{<0d<@+}F=RXs!7jXQi zk9WLL5zGGsNARD!dRkxQKRt6kw&uU%?6YU;BK|Y9KtbRJilX#*V*N&s_jey1>=zbL zOk;Erg^@J%ANpG_xLu8+sLGxFCrZP@LfuFE4IdX+9CJPx<^3q?ny{rYPoA))t6!L( z;u!g@_{KkUU);*-mDS__UFNBR8h(tbf~A*#fJ^ZBF=1esVxs=9xxU70K)(Y)0|CO2 zNDWLAI+ZoRJ}cG0A88=`xmp_N#*0V>9X;5 zG8ykn(-#W2*ZiV^M#4;7ENFn&!GGaz<|~EAPTD9f^4{{zQYeYtZfG;bTIAb7m&pLX zUmXSTyADYJpVzA<72Eshb_IB$>uiA6`Pt)#iBx1}rF%COinG@rG21NqQTwMTgPU0MZhke)%uy_17fIpma%nh%R!`FQnP9R_^7YS;_%w`Co`Vtd=yKeg~n zt`^IIFAx8Pzn`alLW}r-uNlz{p=PWV4joxD4hfygHRGLJ!B^>d({G+P?RldhP{n!E zG3PAjY}YJjkA<1ejt$N@pB#6>`FN`g=aD~H=iRMY=fDFp=Vc#d&SfjJ&S5)P=LZ!s zoO|9p?%bu|q;uk})6O+}W;%Ddp6UExZ>DoC?M!FSGpC&w)H~%|(EEh*on;x$_o{Ku zdB&`BTXWWVTNvx?`-649LuEMo?LY3EJmsWwgw1JZuOnxiU*u;x^S%st`%@?Iyh$vQ z|3a-O_95}T!ejMnhBzniEx|hymC>9ye{*t0IutH32dKi7z}Vkq%pwC<3(<3 z1#?v2u>k8+!JuZiHst_bZ(0Dbbx%3K_jNA-?D;APU}b-zADjU>x4>*D@ITviKfu1R z7XkJxe-&WkwH|R+grc5_InlZcF ziPWpt>1K0Avx}czVvo=|T!&~APBy`m>l^x= zH7Z=nP9OX%eV5#lre4jXn~t4FyT;kj%ws!={wO^*X#&ggzC?fisgsgXGoF3Xq-Lz! zw;$w4agN~Ipzom|hnzaH3E=PlE&+H~ek*`4rws=+ezczbgn-Q8WHa zYqPvBj)L2&*Js0pEj3@C-6|U67cGjHfqz+_J)%{H;ur5x_b3v^5;UOugP;Kup;K7{ zgQ+q_OAe(P_)QJe)>05y!Zg4LZmZV7BwDQ(wCrtirR{3AnQOw zp;K7{L(7zE;E(Q6)YB=E8gLcdR;__)!j_tAV6SKl%`|YeB0&TF2^y$UmY@N1p;K7{ z!*xqF@JAXjDW{eOw!P`iecx4&J9O$YyT054cJU;A)_ih|%+zF;%q%xY_T_*TTl@F{ z*2VBDdqpRQeg5_{>#(6ZXWF9?7rLhjm$RcLw{_bO_MZWn?4Yb5Hh4vQr@@b>&`C{> z(Jwlmq+jkzre7@{NpIdWA-&$@swYW{!dK3(mK!YoDJqvJj0o2hXBB5m?{a4nWP2d>{eejN$=7rHtE z%s271Ytn!>EWkkr!L{R>!~k$@*2n^4<^3(uF#_AOyQ%?f_Fx0pzq0+Lk+p!ob567c z_=7b(zJlIxJXCxgW>RH+8oA-EDrkA6LE_ zzBcF&C)9@Kl?b)LS?E-*4YMkj)`mZ-4Gwy0)dr`BU70c`beWh1!StuZrIJO?xlVq~ z*2;EyC$XK{wdKYqM{vU>E4YH&E4lvqJ-IPMm#{JSq;$(oWf}WC59Z3vNTy@%ddB}~ zDl@IxEv8-MC+782EotY7GE$!v<)ky3RFe9$Ri(Kz8%QHg+e=q^IZ5vwZ79v}t1H$0 zw}4qP;4G6>X%Ca(FpuGVc_Fx6a-QLE*H;j&-u<|=`{lv?wG-cOg8b6b-UHxfn=1iq z7L^Qe<(xWTf888w0Bra07TCUD$}(d9T3z1z!|cy0Ml_0i^uya%q(6Dztjuy?djjm@&9YP zUuuS99emA*9!IDdgQ^i~M!3+aTr-lYm)49wsu^Qys8utTR6i}*`Z|t&+2t`k+~_`? z-#VUt<}sDdTR(x03*Jh5N~$tb*9>5|ZVMRc^k^ot$r9$=?l7jzN;~HMrRvOu%@iXW z@QiLf{Ubd*wHhZI$T27Me}HQUW&5tPV2+Kk)&@ColGjI&GXtIAIll7#7IHbjpMtNcz@L>7NdTX_ z(gWb`?e7A6<^4O>y9RRlX!8NUzosVZ0p6;+72s^IE&wa;E!R#V}L8peh6^T zmTv$z34RN3-G_4kRvvGjVGZDq{^+UzpX+o99PiiA>Y!h|zt(krYN2G-45l8wX2`n{ zp8Jat4js7;yGQ6$t{KnkD)=hB7xA0-BDNSP2rOauBF+nLt6qoIt*1CZ&DUYA1xtR6 zU$n@dd-08b;o_J3abc!-4Mg`NoHwl$hD2&$ztE|yf!Btm8u+90rX5CVX<&=YIHl}% z>KmpU)-g)id)X+ZYk+ae>^;UQye~e+3b#wndDEf#3Xj!0 zZ)%jkznysPlxp+@;2JUO0e(6n4dCJPyW5KGza7~OaH9vO0B-Z}62SX6%m$cm;{7Eo z(oPm*k25s@-ZtxYlDL0_-!Ooc_t$LASsU^8CtfCi83!Siu0xbA2aDFA2VsN@HfWCOd2HoJJiQa8sTFmo#taEohAH5`j|;4`KkZS<&BkVY`t&X42t4X3`-(X41hvX3{}EW>P;NGwDztGwCqlkN0JM zBSqXx#=X0o#=)xGt)$;b@{4?wXtQX>Z!M6gNgCM^s_j9cy?8N)?>s1cyzw3Gj z+Nx-Pb85r`>@l(@z{>kSQY{aRUtYf{@OS8|3IP9m;W^lTtMzMudl=UNSb4m8l@42kj>NlRjwG@{j-;t+jwI70N3zT~M>5eUM-pzBBRNzrM^dI4W@j$}lw9Lb)VIg-;gb0pVm{)YrwM?K?4n~2^w$^ zI+Zmr*``zjf20Acwk1*n0|d8KYhb0YrREwqAsRz74WzZlYanC*K?COP2pW(Goyr=R zZdKhi)uJGC^B<{*`3uW*oVozzbHOvgrg_CiBxC;i&e`6ug24Hg?ofBa)AJuYh{ z?bE|b8a~)o>Xj>zR;lA6T@>RgeRRiF8aCBM+N7F`RMOX3s&$E$O555=*XOm8a;F+g zFMVn%)v47?nwZ~2sxz*+bm*og(nwb`X-2>1(ie-Yq$b~nN!kEB`;zzNBzU%`V8}qwe|S$G zzL)`z7C$X())Klz;7a5!13QStP76!)8x4TcXC|_u=03yx|k9D2^*IJ##6TM)!G{z zZ$uY=fT_c70DrXk0{D26*cf2({tpNkh%-5{oZC5n9rx`~JohE_3|Do>bMAal<&1r`j58j6GR#!a9mulh)?3T~I2wNeYIf@t;DO55nx0MC%>7+(i@jJZ7u?*Ee0NNir>Tl%$@;JN*+TLwTZ^#=IhFbTksTr+?V#pnTC zH#Q&S?a1=i0rqKf9N<|jF8 zaCauuj6p)Da?RM}Qd%?qsAhP(s#P=C`)%nXZ++9-9n@m47(A4@?1+?kuRon$ac(Qw z?G@$NKJ$*U@6Q=<3;T5BzI5!xdAqxDlk3*zyjP{NKhmbN6MA)IQ@6HY-EQ}1LtWRh ztMkvXg&TCa_W6xD%YJRR-brTMlBD}=Ou!8Gs+$hmr?HddUP2fxpR$UcI&lpB+{2Ep zWG$r!Mh>O9`)z3*H-+0JOd|UMDEOH~pY8{4QN_e&E|hQ~2G%%R28Q=J$T_ zmq7k(bz=p{m(8=`b%wMz{GQ8|KK;S=%Kogi4+Ql}>*H~NyGOzIzGI9Ufc~KeHW2;4 z?oEO52R63^*f_cmz%$Ok@8vu$H3j|3{#Uv=7WlJj-Z6mtu3G`{f=NpO-gYp$8aVqkvdzB0ZdM!aRj{_W)6Y8S^Bn8+ zh&1aTEo$1t2Kd+%NTY4O#~ie2RU_GEJ+;iH@q?FI$NQ|a8rE=%W$#B(ZEnWK zTFstlXx%?xf%U-P49q2D_T@&=LwqFgfS=C1X_lzk6p7#%}p$)L9YYf<)Z{qQ(y6wU9^_}Cp033b2 z62NbwXCDRjO8Z+_Fbf<{r3PAH{Kj9}1N`7(KY;D*>j8YNe=^u#^yj*u|3=?vfLnMx z066b!OTb4?Q&)f&M=iD{9gocqPjLLRvn2qZ3pEDV_xxADPyD>q0DIgkID#9`w#QE` z{F19n#QO{peeg9S!G};Y)(VG?tQm)dPUV{M&P%~p>3P#{o;U63sUT3rdDE~UQ>lND zsWbrbH$2ExIwHtaIx@&qI!gHC{~Z`)TGWTK;s1}fEB-6qh98Ij8yaLP9TH?J^%FjM zT-?Wh4(Rn$Cne*%yc4|@9;;U~!s2tlGwqv}Q~+2x=W6d>0dkOXfA!sif&Dq=B*1vDZ38*wwB@?v-}A9iFut@us4!e}4r*hx z)-ZauZL71xZAaZ{X_l+Mz_CN^FIJjoR$jk6#Jb3k4RkzaNqj_0Unmu8{jD(&H(Gm z3P6rNc5ni~CNEfkv&)zR`+=K>0^HtV8Ni)}E&*7av-#FwRRfUI7y9f2e0t1;@8#*u z-39vVj)Cu~tTIUg{bL7j0a!f#rhz}TP%>*qf-k;iBn%|f4DCURLr2z(dP1ji&FDW^ zVN_Z(ezRs&_f-(6qGtTp-g9si+*Z9l8!l|A`TFcu(HOsIk+?p4WGG$(`lAUN(Dfr| zz(nX&*1+H)r5gC7_1W4(OQZ%E!EMzVm?UhexdwKM#?VXy$pLr`goF?@P;nSR0}X{v zWep7VFV(;wX`o&}iPV6r;I?WFOcS=$TmySWV`!#<#iQ{W@C+hopvrK92F!&{Wep4; zQL2GI(tt^zS{j&jCW6`De*zP7Bb*uCZUU3|Y93QFbSV?sXEAd;XdYv=ZW^P{j$jNM z`Z1?X2Qhp4`Z4aO{h1x#Mlhp-M>25(0-4NmBbg;XMlnZSf|$CO1DS*lqnTw65sXjG z3Czge5zMT8x#CHBZ3r>+wx|UuN}jZSai#%yTut zvop%uZ&#HiDdsWqXyU!Bw@68n37XMq-I}F9!^Pj(b_X`(_&*}Q4 z>)U+cP?6WSUxZHOoZfy+X-@y6oc>lIP{sA_u!~!r?3dh?yxY^BKDlT#?b>-JZ4kAV z_M3H_Ue^6NE!k3zkv^`;Y&ELQcx*1i9I1AS{?d3lT{~8n9y2N5$u(w<%=vKz)_$S~ zo8~y1-Fs<0`=a{}md)GG-cCHup5Kti2Hz~hEuL@0wKHqYnXIwkPIs%romu{gZ5Vlm zwOO}}r7BslRbMQT@xE*eR>ZyJJbUqdtiogU?xWR^8G)RAEbke}AxSCo0oJPo@#q{m z=-)iL4%lCfXYf0pXZM2pH*>m)%}IP~Gg1m_LYu&801xyY2e5Q^FMx-gf$taC<`{zh zmS;bM9IVspCBPBot^q7xIvwB|k>vo^)#(lJ>)ELQyA99+<6Go526$Jmh5(CmG~e2- zaRGc8Esy}doAi+aT+50E`1K<%fcxom12}R(JAlRG9}fMgg`96GXQSO}fUH6u7oVN|*%`kQN_=HnFvs;C*WFOQRW20n7CG5M|Ik;Qi$TNz$( z+VlR6lhu%AP9fVlN5_5N(#?MylNl!ckgaJ}nN4b0hTV7asO(c@6Im0jVd)!m^wZPV zyf}8ZW!JPtyEdjzu&N+?{;HWQ{;IR=e2Y%9oZQB;#Z1@q+%r3z&N?=i#Ee@hX%_Ua z`fih*qy={AktzV__ligQSdHt`>O51{vXXh2C%-z5r9`1w*pvs|LxA%ff_X|7`|h{BrFB}&h1_R zfAz~b0Ia(342k!G^e9Z_MPpBE4 zCK77K5TR4KW^A2QS~LFWI-}oYwQ9zH?LOLU!EM#+r!rwn&DT$#i^lln{EffH<{R=o zhn6!58VDe0pxYFJ1_FdmWex0{TB?CR(!ii;YH46yUUEuR55tsx&6p&Y@i}e7*5oE1 zZ22Skfo{Fz#-G~Tg3)58%GBmMscbvX z)YBn>snP=X)R1WgsROh=rQ~GXOyPaepRRDbtlWQZPb09un`Ku4?CqfMD7ODPNEhJuUxLB*%KM+VV9hbHy-B5VX=40+ z_A}5QWYHJkW*=n0|1%*Ih~I0vWmyB@PyZ`l06(nvc7Xk>W?;XklyBa%gMmMp{%HV@ zD_jro&~?iIKHu^Qz-J$%1FX!~kjE>4|29LS08Sm#7~pGP3c&G*_g8=BPc8hCt4qYS zHZ>n#Gb~BJ+b~l&bmX=6TA@?9X55;k;H&gn`!}z(V`eJ|RB^3c+e1%U$3stASNLn@ zp(kzQp(nNQ&@1|PeGffp6%RdWIS)Olj__GY_&@&t^@P8w9(q!J;s5#1dLDXG1L3ol zVE5TwPbzoUlfHG=lm6?jCoSWlC#@{l)$q`h^1j&2QMmozz30|#p29=*?z#CdKMkIF zJZ3Z>;CXkA!8427_a_o_;I3H@!84W_T?c_2+@nbrz~_@tYo)hK*Uj}9bU2YAm{hya<>#|WLuIsL!_ zg;8lv|IM5puuwsuikv>9aH>O0K)8cj%`k`c1>p{D_MLVJOMLH;+BVCt*(P7O169+cH+##!MeTVu}8#+iUSvY*!*4Dx3fT=_0 zW|j_vmrrzv_Y8G-HGZOl|B3z%)izNM>}^wf)44Zo-3?pWw`!JQf2CqA2d`@G4q-?8 zI(t#1w! z+*ZB5xl!0s^YzVhqA`BCW+tw0-d>K^fP4f&0~X5&8gLgnl{GLgrc?uew7w}>ULrLx zLU3EP2DS)WYOaAxqA@hnK;BBc225>EX|2iAyxwx!IAX*AH>2d3Z*MUGfCT+ z#RsQ?q3;u)Unz60B6xl#Foyh|fSEOXPhhzZ{B4C}#`@qH$%%9F z!1F27uQUQ!e0|2ZyYJ+{pQo+g0K6i28NkZ+!TIn#f$=%+#O?dI^d~-V<6Cn%@b~nD zTL8QCSOKuIKRYJ%1^d6`5eaZcCj5@stN=66-?7yJ;C}=8Zh*z(?G$E4$+^BQ*n-dL zkz2XK!PH!l5D(Cc}8%uNgALaCVo7Bqbql^=sj`qGMxx_ipTf;`tgGbGzgKw>+ z+XNn`|H*hp54)(#bZT3J>CmhuvngJS`8X?sX39>Y!}80}Z@1oX3J#eodn~KKj<)q+ zXAhmto^#*8?vn3dL+2h~-;6!MZZy5m8mE=v&OJ8dKH6At$sJp9+sD-6EEc_EcQ-uA zPOr0+^|x!z`fQjl<9#_VxLtCdT`=FGAX>d=7rLh#fak*d)GGiv#PsPxfLl8*0{H5u z*8o%5wZQ(4QF;JhNWKTQU%g~6HYf4T?*s#CLSX)6fa_bs?~zV?;0gM*b~^xUv8^7! zGpBt5Ihbkv3gD&ET!1~6%>a1Vo$>&0&4TXH@;?Y_Jo=t z*-EGx-a@Bx%~-Xqv}XKK&FHpWt(viKRYTeG>(<6Yc7Mi{^tLW*(mE}>=6KM*hEwJ9 zJ=08g1f}b{C8kGrdY=CB)1&ku%OcYYgO@t3m5h{By}wiPVdE3YmIJ2r;uS6EHY4=u zZ$Y;uBg^lTILnqxcweX;3b#v6&FHsF;jwx(<70UZ#*IrG#P?4P#32yjN*G=QV;8vv}l|G285pyuq1IsvfJr(FQ|&1?$r>mBfY+v~bs z#N$~s^$0kgYgJ+Z*7xlPu(H3q<_1f|&*L2}-x~Nc>NTvv(-y$z{`(*B2HSf*hVMZf zH}3)ZmB(M+FaYrRrgmR|r+0)kZ%^hK?D16H{Zk9Stl5-^=iN->@il{LNT?a1!l5JY zqb(FVm21YiJqo@`@1y1WwBtC?lT`(krI;daURy{Ksig;}cB??uI4E(5;HU&7r3-@X5_ zQ9IBdk+K2c<_6CIE>kBPVBe8*06u5a0$}AD-%M{c_%8nBITZM={y}rg1Dw$M64-uj z{z`xk&hHIy&*;p<;&Ygp=4TFxv9dq;%~xBA``1TP!2b#7E&#p;?{WrMd4JO@1`zw( zpK=ENc|COj{y&>%12DJ68sO*~(}2D5_#UCnf&X_pdjTxozV)G>^Zu8-+^}dasILyU0P$l9<+=v1x^&kqZ#EB(Ew-}}9&Ek_gt zsyIJ-^DIKj|GgFd_t_-x?21Qh2G}Z;dyu^$L7%bm0Xp@XWk8NAQh3 z^Avn9vtchS@D4zQd0RpMvY87&4p-iv`v4m--pKRs08R~S1Dt@e>+SYVCC_8WlRBlDEHrP7zg^xB{c)M z>Rw&I@8RS^(C>Ga1NdEGCcp``w*V|2-!S>-eEucp|1W-PT%DX=yiM_^a{m7%*SpH_ zxt?oG$o12N!$s!$l|rX-uD_n5;HWg$|7NaVlByt3MXq<*SLl=*U+A6dkdXh_7*yQ*i-0qbWfqv;yr~TghHnl2Me8s94vIQI9TX( zAfeF7E}_ur^npSr^8wq3FSHPUG%^zU@ zoCtuO!Z!lEspCa}*L6A!@U}*C0RFMu6<~1=;#rBa3=PKzkd_Zxdo^h-$u0t_`@Aov&G}v%6`uKUuweN zx(>kQe&t%AjDM*O9WwB>!M81;Hmns68(A9;37yKd;Ta0&ud)Q11s z`vzA9w^gr`R>@EtpyunO?FCEC*Gapa#A_hZnV^A3Iism#AA{#ga=jaZ=TLg2!ru*OGNuCP*B@gF@SNQ~08c(|2JqH{lfZZ}4Z;A< zU$Yiq@wFS@qDR8#^W#Ur?<0NewE#SKGkm-bz{>l(<8cs-mz7!;_MT(X93({ z2jpvsmK(4i^%#C1t1}&!F1`n+?9UeGsziUAn5_ciE8Cyg)EL+sY7GbYmF`A>o2*$5 z@I|K_>~mKWF8tKOFW1f`;yI(ZEBKnhk!r?G;n0yag~@A)Vjqn{x=ylJH@;rI;MT-gAb;fPi;YkLEk;U!a<-cdc-tfx!Uvvstc zI)5!IN!1=Cd2cmG(&flF$(x8Pi*Fx|?=LuNE{m8}1W6xr%*Mchlq z+G>7|FiX{1TV0@i2jm}}#C-t!tb+NetkZVTe|yV)fR8%l0NgtJ0Kh{lE&_O-r8dCI z`ESY4iy(gmWj6=;t)D|DfFs6r1$b3W8-N!KeF^rr?afMn^TIa+{KuOShEB4 z-}Y(*#;aUS3hSocF)fhyVQAYT6BaZHOa1fA>*1Y-DYya#g{Ja&74TkD$8JwbkESTh+a$ zAW%hZV5I(%POU~t49<3zBm{Mkv}nIX^2Ge43O%y(XAL=y4%PC$<%lI zB%dd?k#rpw?@+eo=Je|g&!r!}em`Bhpswux1F0-LdaP`I=QvsQ*BP??HFIQ-D(1_c zp3RbFbUz_ud%Tn-FSsk)H};UM#2k8I2^d-Pon!;SN^8UK z)rN+*6$GlN4galy=VH3LH3xWI1Nhv{`=fE7KRb6fz#)gn z0&Hy617N<1*BS#IAA@IAFAV9NDDDrsW)7ai`I;gJcxdHX;5nNfVWzClO#g%s*1^kEhEeD>9n%VLk=ocT~C1EE0KRrKE=UfPP4h33f0lqevHYd~u zs|SSI&`Ic2t__PGmez(pstwMM)T#|DV-2LMVhyD0VhyAlg}>FY2GXUm2GYf`2GTjP z2GS|92GYr~2GSX^2GT{b21WgGu?9td8)6NlYhw+h{C=W^{splH(s{!6ybZsfHL(WL z^}-)N4*&0Bn;4;=#|47h|Lyk^suw88Rqy?T9adXFj<{`p3E=Mw+5;@k8GNhe<_o@) zKhV}1;EkR&0p6K03gGAVr$G)^-v5)-Q1Bi7jUL1U>>*nXaOCz$M1Nm&I1I*nmz}1B z4S|23%o_o`&?p;hKWf%8fSX->4Dj9NZU8GEUxRi@!2e#4Mgpw7{hLY!V1JFfv;zJq zZ+~^mYb+nfgqgz6=U>jn{}=BkpmI0q|4_dv&i@~14`1PPeV&w%>rI{#a(z3YQ#sd9 zcvhP0|0vg6JXb5%uRRt;cRvqUgKFqG*S-D7s5p6z!cBMNdeJqQ|C1(H+yG=-z2j^r5sU zT9O_`XQfBc*0LztP8LP$$fD>Y=~48|^eEaZJ&Jyn7De|=i=uBGi=ug7ZVPUgjOzgN zSHdh+>pH-3nK8&AZO1eRIpm~e5Wus`%mw)FN0{SVy{ruScWyBU`{$eZJimPge16|6 z^)1Lzv+L~#IncE5Il!^za)3YG&IGvci0%Me>GuNrpJ*Qku(E#5F=+kPMD z7a#w1VJ4}(4*1=3cT)b>wC|U7(t1sazYD%S&s+AJv9VZ`7&{ z|Fw0}Fu`rr>!kaIEj3>!y(Jpsmvb{-CwxP$lfHP5*MKSM{Y}YRf(E>WPGt?OdRMA} zKhi+A_a#yT5rW&QHE>ASQgaR56OEyn2IQXz8X$cKr1J-Y2Kot|${JYru~Y+pqyeu_ zB~k-Z1h-XdAW_&-a}7KYjiH$a%)a9_;M;<5F6921pn*X`r?Lh%{adPmKhl8r7qv8S z%DO41+s=(!&J5?auAR%rR&#oL*jRHc@N{c8P(Tt z^`wKj$Utpw)yR}p ztM`6_PRMBRUCmwp?FVqV(=Wj@J1Y)01NeBNF2Ey>x&UnM-3?&AiLaF(oDT%w)oi)X z13Uv`vHB8thGt*X70}=JrZ=#^JhB|X%HwVRavu1Tkqp0UyH3YR;P?}%E&y-XRu|w0 zw_5{j`>6xKoa1{ip0Yo-+#}#`7Hj4#<|k&OHoy(c)`R0$-rtM5U%@j?vmRUp_|vp? zz@PXsZGpc#3i<;q-hZ9%Keg~nt}YSpConoXMGLMb6h&3xe<{i@EHHRX(a%M7p;{7Z z#w6j;kOU!~6({pNE<3n`tVH4_!j8A+Ni;Z|C#<*KEx<;rPo;cB$m z%@vv^a-nZnZeQRj?)tNH+>06KxwaAKI72RrEBji;9kz()UO!mL*+u$dX&JjUJuy*%e1&} zoIba5yCrA5%a4=Zn8ne}mvDAk3b#wf+Um?Q3UAe0Tm3vB6XX+<^YFI?_PwqR@<-;D z<^T_NegyK*^Yw=To+Q)d1UAO$T`W zp)vr6ZqNn$j~&_>U}gX6)`sun{n8)157_6$ECl2EE#40By(!B8w)8I#?3MSQ*2)O* zonQrjE5fABQ^5C~MV4Uu0S8wB>|nPQ;L*AR02YsLt@Cr<|56{s?)c`(JM%{;R{q+G?X~=0*_9rzWPL^ju|EDu?7dp2*%8Jk*~X69?1+7* z*u2WS+5eBdHvx<3{r~?*R9ZxqvZkUe*=4Di&OItic11!$Nm`LTRJKS(whBq5D2fW1 z88c@H$-eJYvSo?LlI?fRd+zt&yiPM`W}46U|E}wrb6s;y&tCUA_v^mrJYKK4@43%8 z#T_H~>S{6kls0+%JZ36?q^8L2+P%hNk(S6y`PNuus*M3LrL^H1poiyw069ZEW(c<& zUp)}xqKck@7-xTm3$$N<15jS?b}+D0j~}re#=wWg@H_6-YY41_E7~5(D&I^b3rEsQ#pPngjfIzttRQYI)X2c>JnW z4?%s@^63HbQv0L5_TTflTFkGtYb<&-k{;`ghtb6PFx*^;u|6Ifsj>c{j;N1RvA%|} zK1Ns6fihx!ZTlUKi`|wzfBFTNRDAxlLnBew26MS&md(I#TvBlcESlAnfk6h+86XDHFc5{Sl*m9T zHc}aQ*<8hdQVb-tkc)xWeg>#Ey$Z0~vKde_5H(P7272N>75^?ow35z1Q6CxxVsMob z8A!)QDg$o}RSYP_KvGM&7^rRIflJtJ*$im3swo3~@t%q^VAobU1IA1m26o^oB{GnS zjZ_B8TdNpQih9|UX44lSBDg*Vqsu)m;0XFWyI`%tpDRx^n14b4#Wxx^d zsW<~udq`)1^r2xO6IUsbfpgeMWk9pLiUFk<;NcFG!N9jR3yIqFdWGGV&46i-nldm3 z@2NNg?!9Rk7)8TCHm*`41BKW~Wk9EwiUFk;*lpPi^s%lf1Jm)IiZc*6 zSULmlqiGm8jjNQ%zyoZgGSFs_iUFk#$ip@X~(uy9Gm83+)oLoo(IhD&FF7)!&z4P2!}2FkFJ z%7Dc%6$45!P=Y&9CIcb1wP|ihceuO^IN*|sGq6Cc4#gN)Gg3MOB;7UjcW{*w8F-J4 zR0euFsu)m;ffu*~WimjdF>2AP$w+w_7=cSF&cI@^Iuv6de2jDk2)gw`4{((d8K}TU zDg%8-s~Av@1xD#w;2JN^q4D z8K}ZWDg!o7Dh8BdpaOTGYzAu8c%ZGbybMglB^762wOAdBF|f@=Is+l@Gz`4JRZ3*w zH#Slku$`o0Kq&^k;0~-~3>dq}%YZ8`sW=1c#p+Ouf!Hb187QJ#D^Z54l*oYEWKo-` z3=DBqF`yI!Rk#D|7y})r$jg8mE~z*J5n^>H#=vej=?pL?)8v8oxJro(XiSyNz|d(b z29#ppH|{{04AiczvzxpO%)})XXCPXv4#gNqoFScoA`cn{DsYt&8PJ|CnE^+46$45! zpf*F)fpv_5ZrE+vYb9pml8Q61Rjdxh7)bGu&VaiY4Fg|rl@b}yn<<%rF|$+*D8+z= zN1bG#7j|1V19Ndn#TnQsR)=B?9PpCP0BKCaKozc1A_Gl5B{MK#wu%9z7|`~TlY!bb zFJy_`md$`aE~z*JyTs~HjDc-_Gz^TVVc<8eQX&Heb0jk`$y>#MQVi(Lm5YIQPF_T@ zlNWIpzs@>&5eJ;Sh)5?dVy%-G5#{7X>~iuVPB?iH51qUSHD@oPld~7m&)JKxboL^8 zIeQV-&R&GQvllVW*^8Lt>_seh_9DWZy@&{BFJh&$7ct-2i&*UJMa;(K?3}%bq0U}} zm9rPo+1ZO|KDT|z?cU(I=glWM13lzd zJ)nh~__OB1dhY|zZ4b?C4W8?Mq&xuV!4(leFLaCodb1q?G_}6#l~E_e>!;cshwlRZ z3~zG;=x68D!0{~-+W~##;W(%^4eNk=xGeGoz)pIs#_?(R@+<`L2z4b#(QG*auq!D6@v_ni$!w^%X7GjEi zuM)i&A*M)JMrdmiVu}nyOp#HDDKZH$MeRdOQ5*cf<{_r2X^1ImMtKSM(ZjaJ`1rzO zH3~6Bx*?`W3)d~IL-^VqDEiztFc=J7N6)1wC}_Te?+mX6-tF<(7|dWW8qWCdUdQK) zJp5IU!Dxa#w3`t$!@)OTM$l}bcf#!heqP5Zqk$k!Wi-zKTDXbF&Bfndg1E9(uf5bb zBHR`f2nLAnue~%09KYnGK8T~IKiUJ$XkiO%?p|XP4)MZ1&p(e-ZOx|x^7(1 zoZk7i^ww_BKUDja=BvQ*U3_zaKDqob(Bk_~ zS@8GVtrpkCPv3uI?EmV$K7;Yku_VQD@j8U%z_xp-^q5Z2&1Ld%QzgdqJJ?8#>4pnc zFj&{KGzsEQY7)f1)HsO0ym1hJQ{x~$yKxX- zzey1PaFZbZbp0UyQ~e;mPSYTM$EHF2kfuTW&dq}OCz}QFhcpl3KWQGspU@(Rzqv&a zpWPyef4oHyKe9y-->F3q->^jx|621PenRsgzJK!|zG?Fyep$01{;6g`e4A!Le4#HP zi$tG$-FfczgC!!5<$Lb-OVec_Ms}Gx5$L&-;dkd}%O?SQ-eEtWnL49^7H;A(UNGMW z#2~W`-++G7#skE_MJsj#{e5mU(1S;q0L?H81;@MD;t|kuy%&J;zL#Twwz;te=;F`~ zKo4lV3h2E9%z=J6Q~>Iuw%_Ah3dj*dj+_87ebS>xKtCw^3UtV=XFz+-%>&x9*Gr(= z*?t4M(&ZG;Y5Wf0^CJ7L1zOzy=%s&IsFow@#B;Y3gQe$;M7n!QSKy{g%o*CtMEyd| z8IH?E|5uFzYB&y13l?>tjGR%Mu8k4;(ha*Ud){+4E~)su=T@;gsthp zAS||}tdh<^kt@wu_zSL5A_ICWBr`B(rHTQizBg&Cs*?=#!fwlEU@k7HI0HMy>QIb< z17Xq`Ae?C!sKQlBWT0t?WCkXLsu)m;0qw9l$$%wxTQ&p!xTN9?>=LU(F$T7U(=gyq z!@zG`r9=h{R!e4J(i#;5N-?0fRxSqGS0tg+k;%y7dKqr=_qMql{(7y76$nfg{Wd1!B9ej|2PW(zj z{VI}BE_Sb?=^DC^NcQ|o^l`vE*>-Ql4*@b|63J7Cuxco1mn z@veneg7#4DK7(J;?w_A99@J0WKO+e~*Pd!WoPQJ?|J}haK(~1R9_a7$>hZ-tKk?(O z4;P&&a{c}#K7Xm~-}26r3hSx%`&U7f^jKd+7wgM#b0x-lwGE=appJWoY!v-pHSVq9 zxVH*-pp0=ZcSSs}!rPCR{K$w`ui@=e1BRQO+B`aV&`iVB!Ge)L20Lkf8tnG@;$Yvc z!GnMKvAO*N8}L>)pT?WqV-@et)NmfdFom~j_+8$Cn0ox3>IVEi%X;#!ZyLh4{V zs=|qXz3UkMS}g~D0hh&pv#TGUz0HJQKB+DL^8J?lJKuHq#iGQ_qsDzsu3mfSiZT^*IZo?hdTzqxHf&(BM|3~4|@*u;9jqRCN-`AEgoltTTsMN zo_HJzf949}($g1ZK$BAjfH*d3t`*R$JH7zrT`~~Rlb(hH&HK>|?0?s~571_BjDU9N z*bV45oUTAmuY3fKzi)9E(A4&G5~qXySvlVt=-)nzfS!Hm8_=aIP61u=Ne$?L)eC_x zUvUiRjGnuIK69xU=#we!!1*BVKL?*#LKdohFRv4Gr9Zbx&l%(zn(={Av}XTLPlDP z(EHq_sI^B3>Xfw(=@&(!ZvD3+w$^s!S#JkQ-xP<;`zE4CnyKi_&J6Ukem1HsIgX}z zoe4Y;MkI&`+{m$zk z&@SH7fIiW^9?;bGYqXpVa?W=nIF^ZY)d&3-GPW1co8H5*njiNiINq+uEkJo6%GhY~ z@Or==v1c;S4)qTME$)9gKC|j>&S1n!&l!ny*I16|f zyY75%n!iWnv3z4~7h8L-_}F)w{&1j2FCGN+7Ate0i`wV{U26D|BYwO!hXg=39kmQ- z@w_bD>UAox5#K-S1{x%;8@3Ms+VcHMpude>3bbCU89@7mj09Tq%>^wI7NESNQ|J#85?oaC62X|u#uWGp6wO& zmuh~thV!%WiJ}gaG1j&&*GJmr`smSneU$TF9~HdUN6pLikxRKg3Mtn|Tk-p(a((1n zu8%y+_0hs|eUwwKj~af^M*}|SqfsC9k;eypH2Z@-n(#p%d414F>p$qD%^&np!Uuii z{y`r-EZ0YZa((ozTpxWZ*GEsw_0jWkeRQ*2AH|pJBj0j;B=m*YCvv-X{}wklS>&aB zzs0q>eS|F@he_ikpvB{aaErfp%v!vBuV76O2b&DO0PGPxrU6YoUU=4YP~VMugTQ)F zYI*(l@4))XqQ^1d_?13dz#r!0FTg(KRT$6{CUgS2f#)=Ed}{q~ZR|jKtCuZ-{`owO zcK<;h{XyKe@oEY*wZ2dHPto>AuMUx*|6UJ14RqAZ9H7OI-z??t`CKjTQ?Er+_V>4c ze^--soPV!h`1k$aa@Br|b4r&U>xoS?v3?P5uEba$g^ko$e|5j8k5sX~hOvHKs;C2H z#QIsWsT|L>8Jy6&S)6>s9M0n($2c?M^Ej_O*__LP9L}nj9M09#91dy4;l#$WIj6qo zaem)9#>w4xloP)75a)1AD(BR^y_|^MJ2)AEn>ZaE!Z_=L=5d@K&*b!Xoy_S!cOs|N za#zkG-YiZG5y)9y7|dxMy_#dPEu8ZxCz7+>bt~sZRUGF+P9jI>%fK{|+jVDr5OYxE zv3%o$Q`s9q+_CI53+OAXfk3;DHUoN;Ujv{KN(XU<$Fl@lJnjfL;#m@ill%)hAdWs@ ztOvTo5j_ys^~OyF`o*V>K)V(12l`1>KG5}j%YoJj*8|`G)xui>t$wc=&>a(hg8gTl z%>}xEXALy9{rvKwp#PcyBx z6$47mtMYIM)-eWNVYg*7V0xsc42;2hD$am=4h;jVX&A`HRZ3)_5F4os=wz!HP>O-m zxC84L18=e0vKcVXsVM^!@Sch@5PVWP1B}Hq3>?Q*N@U;)Hc}aAd`!iFQVg8K9Vml= zj^AdnmhSUrMRoIMy=y*?_1HUz73{f$mC>+pzBT?#L=U)1CF*q#w(!%^+6Ws3EK`evT|pbtjf5XDUnROVDxA=f1t#ygt(tTZoo(eZ(JQvlsX)Bia9BB0Vr(jLZxSnv$&cncmz}__$ zt{Hkz{^vJo{KzC`e66oxwYCu!lTebK(=%0t4<3Ru4-4G76PSce@ zw>O>ywAMryp#AT80&V|m5zwdeLxJvT6#%rjzX2!zp7+(hpNpUR|ITmHy;J8x>B`o` zR&8$e2w!?`2w6*bocOUw;r*htL{793S>P%1Z+;0~0L8|*xr5dnT134Y{tBG^X< zt(a|r`WFmE83ogkKyM-PeH@BhQr4n<`$ADPdp7bY9*idSYJzr!oF>Npm_#%lvC;NW z=6rtT9dP|N$WKchqJh3|*aT?v9y39HqqcWO47|Q?;So>J zKaCv?fQ}y63Fx+8R|1{(DhBAHRVRVoG`lhQJXWM2pw}_ofEM>Rng5rCYWbp0%&nH5 zm7X&g>u7R@1}SQ~#GGM-jntemT_D;?HMd&BxmAPHq7IaiGgdVoVEfIu4|#C$Rr2vH zW5EyI@q#wR%LFUdMhS+_ND$269u(x9IwFV)%@CmO+XO>?%ofbQ*Ir=fl1?tL^W@j> zhlulg?-9?`x+8m*FLE{5f-<_MqoQwIbm!K2bm#I#v?k{ax;*bFa$2+x^$OpPN*}IA zKW@%LX$_sxQS)BNLi0O8l!Oxt8V|57z;4%_oMC!a)Y0Yi_a_}3w1MRyeg2M zGZI5-a)$Lenw&8n8>u;C>v>hqP->hpqCl>kQQLlx3&L*8o`=oEB^CcY?x9#6)mRjc z$%UK5-{TrwmCk^16b%E+3p5N~IuI}23|D8<0&i*hmWF|E1HVRsXoLq9s&c=u>y zGotM~>*?LrTCd#M(z>X?$~re;r}fq7x7KC5n%nfzR=05&b>12U?y(lM4zhl8WUF;_ zvcAndmq?oxIZtfvoG~2qr>*^B+ z3>~!0d-$O58}tV4x6QU;%yG4eoYKz5YLkx5kF@4CKe5|&V;m{oA#A6VNYoVu5aTB@yU^EvZ0juY%>dj?004MT{fR3#M5DeQe1S z;2+ihIeX5W68E=J!)HLVci#iL^~M`Oe=1G^I^?J|(9IuhmD+z_@tGt%@2kaSMdx8_ zGPkP8KGp8cJ@B^l+>jVdlN(&G(&UEu*htL{IoDLVL8;s@_qtrU;n%`a)Ne^C%34;6 zj;<_4#cN8@s!gS6)s|9pbaN>h8Ci-nHMzr-3N5(>h(ZV+pqI*7*jky^dQ#( zy~tq)(0(Wr=s~ad1N}34I?xljx4`H3YD-6;#r?6k{g;Jm`JztD!#X{bo->N*u8WAm zO_w+in~IIpobmFGsJ~S6ur-{AO}H!SKpFF}6DEz|biLEUM#nzc=Fy1DHjQ>|wz)Q= z9=lm`7$>Gx3r_3E`ZgB#p4j+bZ8xZ@Ol?s1vUxVni=LeuLLk8#GVtRC?}1ZfMtZ?({!9xhs#va$nfQ zao1Yx;o6(Ta=G;bxlMbv=I)+2f-~}-$nCl@p4jmKpQUn*C(>Vk1@U3~f*_#9oQ=c?(dUx9Ms2}4eJYQ(;C!oAg~3x_d-Lk zKlS(%0}4QXS)gYG$`7@l0JLrJQJ{;=wLyKqnn8d5oLT|OQ|mw7sw?P^`!9dd_D6^5 z&A~Mbi?#ECrXIh~<(c4kM7A!dukX&@K#T7`^x@z0zFL0xUyUdJSL;2ht?O`kB0V=4 zFQXYxq~m5w%nhfpk(wLoKgQJ6V=y!wJ(oIp`+55Qdmnw{e<#Hl490<#XQl|>$NpM( zLiqk|`G{shb7EDa0O9+vrPm9E?;pNyGZ(fgc9Bb%@SUh^^F;XmYQa-0;n-<&MbdWR z`@ng#KMLQA%Dapb&bfvAzdIm&@Ad9T1EG`me1hDC?;&LaxWf0&-aiaA7!1a>m%IhS z_a(E#t_t6cpW9n#G8l}4Sz7Cb?|~(kN`&t%XKZFRWH1=y(+Tmy_c?BcUxe>X9zPf- z?4i6V35SL6?hlk3Pq1+Z%E%41ZN9Y>yDfXZ)#!=n3{iZ()e-Nh_`27r#nKr_oKM3* zCazK<1Lv@j%7A8(iUFm@)I8jQb&P>m*lpPim=@QRfiZYb#TjrfmCis&3=IR>xJro( z6k;Ql0i9OKZx&1iYu>3~Vct&HzdGUFbNjQX&Iau#w6@ z;}tCKeTCyA!~27#^lpLX@+H!ODMKfUM8Z`{tEzs@cMPdH&cleqo1G{E(Zw_+!l$ z@Rz(4eeQKS`idhr0^R@DS)iBqc}% z&FaN-Wl%b zc&rWd!R$sr+ZSj6ZR`F^>gTb(>@N$|#?EzOZuQ6q={bX-yC-ECZo0&rq4q}9FVvhd z$r7M*Q4; zjcq5OkG3IKyAp2;8xfr@t+s8HfALiLnTPzgrtajSU{A7a%V=^)=0x(#_Sxj>>{aB8 z9ns`6jiY2<;A1ksR|CODT}{DOPBA&S=V6k#7*Cq)*-d_4nLxJfm_iEPV~9gjk(o|a(tG`HMbgQ)c~x|wA~O2;s-UJ@pFnnygRs2N9uY=;TH7v zEI8i$-UgsP`;R|?om$`FWBH)I;1}AUzKs_<0)46zTu*EN2Hq!|di*IyxgbB3Uu^~I zbGL%eG}`W+2kdjd>4W-D7Ipyo!oCnto?8FB{e3;np(cT(G&1&3D4^@fdAC; z$(NX*e|cncaC~<6!9a`epZwwPd0#C*)cU#A(l63;Lr6Hym|EkbsM!*8gAq1TbHnrs zOr2_O)yz|y!C)M@`-&94yG%UPR!4YN-40kHd_ORu?=9i`*c)GZ>I&zU$Fd`Y?*^Yl z9VjC=EdLb3+jF}qzs3Ez{CXWY{AFvJl99K^lh^JBliTMkB8w-xk{#LoN#dIk>Dr_d z>3H6fEKIN@A3W|xzVR&Q58knydG+mh;%(|#qQfdJ#M|5xJ#ih2hWXD$TYQ2M$7n5@ z+hP-%&_5alZC#CsoT;erYai6YwjK)Fv7I=7w#xSGZ9Q9u%MDM3eG1_fV7Keec*69H zsH5c@Ps}{o9>lNdR?a{tC&BN>JD)xTb~N=o(Bkn$xFHw#+ynC~@S5wknQkC{QTM;H zIhi*8h1{40emgQ)*aIA|@NzE@|4OUkf!^`%DA4ZZ2|&Lri3a-5!!G42B-^_x76+t<@;IqaN0}th18%S)lx5_BvTB(ux);lto)}s=9tOe7lieC0P%;vQhV3$wBk+;erwPO33=4ad}T)kGaAV@!S6t`HruD@3R53X#CB5OM7aQJ!5PI%HRf z4%!u>9J@kv%B~O{vnxag>hf z+^!qBVWv7hOXbQ9g*O?rvFLT24t%bF*#@ASa6SQ@7gz$ca1;N1uf!2P2Z3t0UE3DK zHmW`Q<5Q4Jb~iHs{wL0#3^eaXKcH`InhEr$)(jB)Uz8%CQzF{~P4%Z`(NLAq7w`YI)hIU%(xu4_>uGYsBHV0=xgiQ0skz~*CZ~EzU_V>o;*>=O8uunIrU<KYNh{ZTs2=e5H;3T5k10e+_Q218Dc0-asF`KN#r6&f!3F zxH&*C4@)0KBK-3=C^Q!$1fP1M#>@i40_8 zBb9+q%~T91#Xx%VI?2E-?6zzM^jg%E0UNxh;tT}0p-Ip~g`EfMW`0++2lm82Gl1S=HW}z!hn<1`F&^IQTYPLL z+`ihb0qbIZn8S6U8fzlKI-9Yx;IkOU8C3v#WNgzj;`6w(LOTQP*t;Ik?lmC=BZ}-gtXzP?&KzmM`1T?ijc5hw)`tMkC_$-Kptr`M*c##g! zbNg-tTHtdM=#`t!0`2=b3TSbE0^0m#q1xEFPF&~E&_sI9FkVQLGj8CfOUxN%*htM8 z7VSj+r5ZoiaQs|?J5a{>IhJjSc%z1(oNg{CSz{LRz2}FP=!YQlIcw0I)vHlEw-D55 zT@V`I*aKaAGZnQPJ_|X0xXeWL%@Nww5ux+bha%nnBT&ypR_KbOB^t4ag|@LR(Gnxk z=f0xavw_GS~TmP6n(fP|ZP9PaO00oI#lpWO)JU_q0+KwoKa6lm)4R)#&7dVQ8~>)`^Q2{hs+ zydHvjymKRU!10Ffp90!PEgu;HpOHkhHxPuu>kX_Mg1kX3zgN8>ZGE?)-<~XTkg=^%%*0GcHSX{J%CKkJyh)!gQv3LifHY2T=#gh{exubU+I@hKL>A935MvhbE8KK&{Kmh;5dqh<(4}h$_ZfqScB} z!fo72VxMUk@hav3Q99uTp?9nq+Fa5D`L|#pBmQ{Ai}ONNyF<|V2J4Vf@(T2L(Iv8Vd&n3Rp{^#e^fZs6{&eL(bF3pP}`0o zx9i3lh}q`&ES2kbu8?vM5EDCT>HwW~3tnT8zLW#(*3X)Q7<4Az5a>|B4NyM1hY`^C zTzY~SF5JXpd|J6Wh+)$n*?{ksVK@DN9`|`V(6e862fD>__*|eKM|6Qbbz~2qM<&DX z##H|-H3gtORC|g?FW~>yvFm8B0pA!_0LoL3XEDYd)K{W69Oy`mgFyFv2d~kqx4JL* zd=~VF*XW7YXV~fQd0#CD)cQ3Lox4iU4erZna>Fv*Y>Bxc1{d zR17Hf{V1xNTnr3&QID)muRQFwYz8WDNyQmx-@T>`^y(#@0fI-92f}cb5*dicMk)gj zd#D&tih-D(axw7r@-5ri^x|T-Wi#*vmsFgA4!vs1fMs9l420~aVPGAuQX&Hh*hppI zX>Sz+N-?mbk6aAgvD<80n_eV#TQ&n#xTN9?bn07E1_t(*&Ol-w4Fel-l@b|9!bU0s z&n#68D8)d0Ke-sFZR3G_?6zzMe&dpgGhorbrVI?SlFmR#1`PvIxJro(q+%nLftLeR z3@F7w!oWJoKmm4JHUnx_q6R9?Ku^4Aw(=ZT&tCYw}D#v}~`J8+c}8OX#&Dg)(%RSYP_ zKq^x%2I6-87SyKKHSD%*2DEK!%D@1;r{W9@V@YR#$f98&9#<)mfoyD~GVqB|F`yI! z=}0aHg6DV;wdr*WyDggmJyuN_u)%vO&cH}}=?oOn&5b7DDkU;-92=<&d>x`+WB;7T^sklms4Dhg#%D|uDDh8Bd;P?o+ z7`Wcfhj**J4{xxk53je04{vlkA70;SKD-<4e0cSZe0cqhe0UGr`S9Mg@!_er^5F#- z`tVvA`tUxq_TfD<^5GpY@!`Gh;KMs<;=}7>5YUE4Y=HL3xD56mlG*@h@wHpR&DL@# zxaY$B%;i9*EFBJX>DivN{_BqK0P1_u;`KoBwR)@L4T0TtyB*L}|B`=jPKfVMwI5vb z8yx?j`4(`zriJT(?zQg)C{I0JY}RYgzG2HQ0L?hI18T}z#JK?(puQHHoq(p6-@c-W z)b=eN{g;Jm^OtqvI+#2s={Y0h7|r*l2e|1Hb4CR=QgcS%v7-J`t*@)$`nodQfil+D zwMup&w31zjuSqV%pClK;DA|P=o9sfwCA$!pl3j==$u7jRWEUbQ*@bXRb|IQ1yAZFF zT!`mMF2u(q7vg)83&BWsA#{^nh?dDNgkiD^(IVM}5FWQ%vI{XR*@bXPb|I!DyAb{G z{y&mjh_WP?f8K>&}og{XCZnV?9{*mL)L9$gHalG7N(m__w= z0)403E1;jpy#{)In^2%#>mQ(vk%Pm(ff#shU@MR#7S4SH?5^KZX#G#S8Vl;1xXcyk zb&I2b=Jh%WG&QE4oIOBlOcieJy2XI~w?69w+P^&89Oz$@qd|FUeLbo+f%c~4PX_wv zrA9zg_kTRh1k~3*uaLIBwbQeXNjo1hoc^*~YSLrz;F`g!8=sAm;E-`1AV(w2XE4m)n;P`AtMH8=S|ME{&!^Af%=+x=>V<2%@XLN9-`na^1 zD%>JF4h8$Kc=`qC4{oJEJN6p_G_}6fy9m(UgJn&C?!P0Kw*7mmE`j44>|Y7={NVYP z;_cbg+P$y17Wd~VKC|lXb3i^!qsbYWG&zGcg(hdXVk0$Y?3${|8A{Dfjh`l0&Zuqk zv%%PH+4HlhU&r zTm{-2nmZimw8ff0Q}-{s*b3BlGEM;M^Nuv)iI11Hz3ZP6*W$-(Kld*S)nc{yPY{ys zY4l(GuiE|IhXqQ{8AZEjaz+?#y2Lrxcx##hvVGUi+#mQ)g> z%PR@XdS8gE-ztf$yh>tLx6i~Y?Fz#A&&LW z;3ptnTmI@n>;JIR1Aza}wtVJ_w>My0BVZpfvJ=p$2IoL|s=t-(>_B_&yzd9vo4U^& zXv?T5P@a0c^!2Mj`)_KF1?_#idjoBICk@>L{GZz+gVz6wyVIl|&nEEid0#C*{9oN8 zNz%RYAAu95KV4Kz|EGJ8;)ZmH8*^nhpAKDBdKQhNXncq>OdK}p?FP} z;K!yTf`J!~3e1V4f{BB&1YGY!f{Vir2zo5qFVJ3`B6wnzBIxxbRnTu&hM-;hBZ7$Y z*#Za69D!-CY(d4oqk^hlM+I6Fj|hUovIIZkvIJvuvjj`mWC;@HX9~vMIV8CJIYaOu zKSQwe`C-8o-6MkIi;oKW@68sB3OOoBIGQCm;gKcKUX>;ATAL+sUm$Y3?u;kc3q>Bw zH=Y>PARK((q{gc^4dOt24l>pU-|uZVjs-e}qTRZ{`;u<4Zw`(}t*_&pY2Y4krI+D- zQBC^5`$c;V?n~>x{;E!(zPNtnApWk~-Uiq&T!G)$ss7#i#-@$$dp2r-N9p-Tz`%7C8QqVJ<*Z%aa`!N^M`jqQ5Lu%NKQG zJQ1=~dd?t^)8vdBxakseMj19zbB4tdQGcm&Mh$aD3GP4{Iit4y9;drh^tsEPhjqXu z6`zM)AXY~;7HNNvTeC_!1Bs_-7`TJ0l*qt)Y@{;KbGeEErRHH@;0~0*ziCr~Klzq0U;CCYD|}0sZT(7^Fa1iG_WmWz zX8tA2?|voB2Yw~Y-F_uZU%wJ&tX~Q9f?o+U->-x@-LHgs!ncHJ99Y8iU0A|A7Er=u z_?0jh`js#b`IRsa`js%l{Ysdt{7RUM{YscZUp5DeKKCuv?g4M|PtIX5*8B(efTyl^ z73#v3B2U{%98U|q6mCuM_~Z26O#{TomlrbfffjD!_AjxaV7<(fyM2J}e=`@X3H8Yf z1)6%iOASa+U$hatZoo-f2dsah?*BDS57eLPcnj25Jfu6YUpg`dXzKB1UF-qY_fYLA z`hMW}hxC8a9xr2W7`SePdc59g!C*}<)oyh^k=7p#UoGH|#<4v>b1yT1?r@eTb^X=i zRe#U%YB5;+H2-&eOT8!jzyJTgey=umPFyQJ2N)lv$pH^=lO^VW3T&k2fWD!s9H3MV zD8n5nBL^HjZ$T_9uprDYSP+v6EQoXGEC|!H7R0YJ7DU<^3nJu<1@Z8V1(ABzg1CR) zg7COtLA)ujATFP`Ao%Akh~4Kch?Mgd#F_IJ#Od=EL|ftU&RGx>&sh*l&RY=73l@a` zMGNBWB@1HQMGGSPf(7Ax!GhRv!GcIBupm6oTM%>3TM%*QEeN46v085_maM^N zsl+@G{!gS~FpM!vhSRfYOlUfV&nkE-Vd;^?Z;yFqD+Q{(eB0_9#f~9SFPE+sz$h| z17+j}H|=<X*qbt5UU{R!tjiu}b4_vKo0S!YY13gw+5d(rWsPZC3B| zc3HJeNwCU#xXUWbH`b~f8EciF5^JTe7H4((Wt`Pw*LW+^G}fwh(srxZq1&z2<-}PT zjNfbZ>~@@0=b@2SEzibVZJ4vyYFF+atIWhbR(+oCvdU-^XJv04XZ7<&oYgq(c&kI$ z?Z|551LJ?#V=zK$!T8|LMp5TBl9&^O9{#gohGrkg1u;UniH`+BE&G9(dev$t(2*bF zfHq5O3-pZCuC(8sx5Pz*n8axcpL4Hc6a(y3|8iGagZij;1203+KFvTApsD36;^FmW z>mpau`afgO4qE@djnkx!;jUGhASY7&Ni=l_Imva0CT)A~JV+Nz#S+f z*4MWA(6&*c&t3L>=tNvn@%hlzVs%vGPso^X6F!5jBmVpU+qP|y&Op&g8U|kADkU=T z8yl$%*lt!apcDgNa0k{g28_4J%YZ8`sW=1c#p+Ouf!J-*83@@&!$29XQX&ItF`_n8 z85puv#eh-_RN)S+V+?fMCNBeSxTN9?M2OX)7z4TS(it$O`)&9=u2Lcc8rvl^Fm#8C z0i_uDjXO{V12ZD}3sx>*3U>9f7bLYAEC}@KE^wXOR-L$KK^{BI; zD%DbOJkLR(6EjJWnLSOgvg;(lL2XAtBZHxWeeS~r(X9wU^DBJ?P9OUUv`YF3JR}Hu25W_qdshN|di_11Z*e_={;(CU zouMB8+9~+_$h@bm!SfW#7k^22;)^1FlYEHCfbE2*H zh&oV4Zty<*&Nk+SHqlSZ@|23iyV)U6mSJ3R)=ZUcjra#xLI zlBCYkh|y$?d91;D;G)h7bW~@}H&$nHx~sD+r>e8gxT~|qtZKlj++CkFDyTjyMMIs{ zDp-?cC(vfSs?=pguheF3{-ep#S)$2GyP(NRS*OAJQ`CTU_+~;HU@C)bb~9 z!o0wJk^$Od>yQF8b$|OO+d%tnuImRhwfxHUJ!tLS#~6V2Rtb`U7C+v3d?pFc`)YZi z){hVF9h9CMNDfVI=$b~88(7##%?+y$sB(i+b4S((<;o4U?RPW}?6&OR(GqY;#ph2i ziq%n#L*aKN;U@8Sv`2@eGhm!V!$6O88U`G&k;=gO3>5=PF~B?|7X#lGa?)zkYYui> zHUmkxq~Z)*6{|xr28yzzGr*v`wx-Wv8U{vSBb9-OOceu4F~G`_ivbUFO`*0;LRI3Vk4D-WKzX|QVh5X>Ldeeu-md3;Ng;rGw?>N4#gPwnJ=9I_op-rj6O}n zz-(-!GLUvg#eh-_xaHSL2Ewu1vKcsyODfJlxmX>FF~BIGVSr1+!1%K?49vwwDgznk zR17G^z|8YGo#-ywdRT_Sl<|!S-gPv%MKP$li?XW^YEi*_)9u_GaX6 zdo%K=y&0KrZ${?Xn~?``{X$=wUlh4rH`dX)UB+jrT(VJf)q!oqeO+WR`}DXS0av(RD!O+9|^#Y1WBVJ4oSe(L^iWeq@k zsrDm*OZtnqr=3qD;Qy=6t$;rME)D1fq3b~XXlng^3i+Ua54{=(v|V&5 zXn&_XLtv*KZ|K4cz`v=p;B%%kv|)S1_iudV?|EM>F4troouswV($-Nc`u}QctOwqb zo*RtM(&UEuxY-idSZ~BeYHqlA6;r3W&ZcJ9*@Rsab)bwj)|+#Si1ged;%sgaaXPn% z*q&QNEXge*B65p}-MK}?hTI~;E4PTS&n+U_<`xkha*K#=xkW^q+#;e+ZV};-TSN@W zEh232%Qm-&7@k{1jLR(|{Bw(lExAR+f!rb@FSm$@&MhK5a*K!=xkbd(+#*cvc z#Jb!fLg-7c>wg*1b@W_{f`aBd_|EWJ005D6uh9SEf6H#-vsA9!&?WagZLDgop$B3Q zxkH=wo;q3^*3%yEbnu729EE`+z52H9v^_dvJKu-sp|#$dn!#WY6sfi|JE1a@1c|aK%1Fo z0xjIcbK9`~QNW*RKFfj5w`m8o`2H5R{+{>$licucy#K$*5!G^o(*xOdK}VfG|P=B#0k%%1}tnZJ8EGR=EAGT-%bWP0>< zWL6GzWcIdmWFjX=<_IrGW?-lzle@-|$z0~h)D3lH`mT3mzKL*TzKn8YZrSX}e74z< z*)Q6WIXuFV`DdLY({#Nf(=yzVxhmX|`E8vevtgJcbM{I{X6jN$=68Qb=0Gn;riX_k zbEcak)7;gO={(7iIr8pbMrwa<*l{19rE=wlZbqdb78x$g0(#86PJLVy|+HNXXo^QEkDLt~+jDfTosD4|M>!WX_0WpsD4fUkJeQm=O%n{{xr&0QQM)Ucm0u zet z6rTISP2%-8Q;TRAD57B?6IUsbfpgeMWkB<(iUFnORe87r>lg#Cu-md3FfFPn17q-> ziZkH;OgaN0H)$Bi##KsWpb#6W4Cs`o7*L9V)3^ic7z1yy+p-xje^yflCg434XCU~s zbOzi@X&5+;tCYyV6>Ow3(D=EE0i_r?hdWRP13hN#MSa*A=-r?^Z z-N|Ff^XySHWZ?nywec?Wa7qMfw0$mmJZlc})eT1Zb^++8CZm~-Gf==FZ}h&O4?3;wizYewp{e%s(8!cUDB5o+N=pqv^A>DCuTrDY(E~B) z_2F1FY2R+N!ecKAdLjDU>&EYEyjS=vm1~^bY=$+se@^H&HK2u?_?+Cw%x>U52v=G+ z1iHzD&OkT%c@Aj)*skC{Zjnq^pgmF|fxbAx9_&x`=j_#FU=MQe1lsUrcc5>^*9ZD} z&T!iMOf)>y9^6Ob=*QVWTk)C$?LMV5xbMds;y1VtM9U|;fqh1n4%q+avCqKX`6aBs zq7fgIFQ{J(^cka#KpS|k2Rd`hcA!Uj!u#@x_iw=Kzvq3m@8>o7eeK`z?7wrV|I7Dk zYHqN2qsk3R<%Sa6fiiN#EA=F@FFHVuU}Tc>{v0B6 z1S#YgjlJaZxCHX%#y#W;UMyL;c?-G4a0A&~dod~S4kmZ3Uq{{_9ZLF-T}6%?wSo*Z zUrLs}UP!hJSxB<2mXPsVR+6*A!pO<**O1!d){{-UZ6F`TMv!s!Bgib94P;by1ldDl z3#sk4jXdhGlf1QkH@RldUUK*AedM;cqR+kVJTv+Idy&WTJu~@iMhp)j&$AS1asiZg183%iU@(ogQfPQ!$-bcxOvKfe9;_*tj^*7&7>#uqD(ct)wK6`;b zT)6TH``<{!w12b>&<8dw0(yV9Wk4^z-X3Uif0E1pvQRBw)QM*%uc?%tGZ=Jps~R6f zO_!K6jIfcKGp2tO?WCGpt>N6NL4~LTW#o+b)AdMme{HhzQgiZRe0y@{%pT;ks(xg! zx&`T-*_K?}&Z8G}q2Qjfei;5mO+#by5d{TKOP%dhZH zZo0w`xqq2&vG)@H$Mws6$A`!H!3A;rsOjtZXI3re>)EIBcO1ULXI9+jKhF8YH&1Us zKCo9K=UilvO*PcWn}_R>dD!g@)t(2{{vVzgjNt$Hc~Cb#i#qmKJqDu*UNvGjBWQ+$ zZ@`S8*+TDx+Xp;Hd-!q`hzU2ZBmjM+h!6CMYiU3WH}NsX_EV=oj9xJ_1?cz0c%Zjy zjs^O=w>Quab(ug@>+=oM05O+pU)TLC*x%FmDs9Y-TCWD~b+^XV3ux-`cXv1gj<4P% z8|ZbE_EPuHIb{gOG(i^xpnoIoZUp*d)={9T$KzVgk=nk+m7+64cw&WPqZxkqyg+@iT1 z-J-emr$uvHxkhtYlcKqkoT9nS#zk}eMn!Yyj)>;=9v02LWgpEI`jYrV^tsoav2fKd zk;n3lg=Z|h4A#69F1i6U|K2^I#Z4LlZF3-j_F9A|R;$6a2=34C0KN9ZK=2I7^YgX? zy>3x9(8pqr1KrMJHPA8sPC(}eR{-5BsT=6e=sc+V_*((H?UFG-_q#b1=r!8yfR2mP z0@_8p9?;^SU)JxxEL4ltbz&_1p@GIf592gqFc^Bs-`j6SkavLpkcIOXd5&b9rpXyi z|A?9{F=uqeMrzLRVQBpG)lM}QuHjhNw4SH~W#o+8ftJL8d6vZPd6tCQd`rS_z9m7< zwi|n)Y=9-i@E6uv-64H|E}q^J=vUegz&cOym?PZ6 zVxV(79s;`k?9M>z>ZF03GOFh;pxb|22y|P|#z0g3OY?dMV)m8Q zED%HI42IXM8Ea{R_7*#s0PWny4Csy<-htyK7w~~@+ItEpZ`^7(&`%AZ&e@&@?1v*b zK+j3d1$t{`B+#DZ5}LREl<_tG%q~?sh z8mgS3)Hq|Jrd&Bg;ChyQJna&@J$aMO-1mU(9#G6S-SUF%H}DPH#p50O=jfO0CDR|U zhcvywUg&z9eXMah``Nbr>MD~SWNo?N7WcJ0l{p_6lgY1y3!)#*nQTC0~$JmdCvf0g_onpH!C)p2roME4K zJ*q$r&@XMIOtSGnRk23u5rsgzG@xvbzklw_Xm=XV1p~Z9|R(T0G_mw=F4p z;M#=1^D}|I*mOP6UAN8wdiB;HAV*z4y$2cA#I6cn|cV^*W&aS9U|)Ip-`WAGmop(5Lfyfc=>f^MPLWz#HhDL!jN_bQrK- zKED9y0b15Tw=9O&I%IWk3hd(jW2p0&g}RwDI_pW#8ALHn&RB+DUpGAY@{;q zu&Igxr5K25Rwo(YVz*^8@CBDtoPiF_Ys!E}Yv~LWouSDC>u{A48A!lJDg#ejs2EU+ zfgJ{NF;Fu4JTeNuhK#q}N00qWkm=AjsDWAqn%nssB6NPBEGJ9h=#JYZmqohynWLzI327 zyfy=^=F}SK>pCf5Jx>Uc0Q8Y;_>AZ-=52tT>Yv40HL#v2OyC6c%Zgl}%U;80SeISy z4Ep1f4SdG*ykF&D|I`^gpijPc0{drMYy;ZJD;nsA=I|N?(?`b#x_uHpE(5O<)A z@pIY74djSs(d1*jZRE6)SkgFc51G&0M;eBtkk1;Vl9^}rku7s$$tzKt$k62%7S{Bp&W+?Y6#4CgtKWnG=gx#|r7A9*kLU zAGQJPx$-19-g7iurKN_r=EnFT8 z*qC<}a9wA}H-y0;zQTSIU?1^kzz=(M0{yw}Pg}sX(>ek^=hz3Z^C@`z*6+1I{C!L= zs4x5I9l+G~w?Bf-|7k%rJ>#~8e9th?VepJn-1G`PL#vgvU+A7OsI~O(YR{;mXZ*$; zsK7H;9?{^mTtCb{Xy?m|J3C~HcK+mvrT@#ZBY>;Oy=Hfzzc|G3Q`L zE@$@7EY5K2#~hucWX{Yhr#Rfj2RPSSZRVH|3pwBN9XZZVdvHG4H{}dGqQN=Q=ATYf z!!znyNHeb7Jmc^^V=#uC3U2~fFSt2iqLV&gvfDc_#w7U01C||gs4euN8yLeEa*qI> zqIDKZ%u?O89rrpgcm~tjj@Ip^qN>m{Y;ch787nN+o>8r9Q&t_M z9jL%FYTD;?6LH##ug`|zlFDD7O_r&n-1|4i`zRiDm9K%w+YIlUEIKl1fP;f{4Xo*; z)a>bq8JB(sC1A()NFu2G?^z5Wg>xSH%}lMFi0R;IZPlL zF;XC!>MRf?jTVUX#t1~*F#-{Pj6gJRj6k$tj6mdxe<+?ZMj#qIMj&cGMj(1IS|Hjo zS|G9=Ef9Tm7KnB@3q;pP2}BQ^1fsH$0+G*1fvD+7fr!c_52qbk?*7nL|9J|FweJ7; z{?Na3Zj-Lk4sKE5vu3C)sm%~Sn`3{2ZeT5@g^oMmHS@Ot<_5(<@|t&6 zHa~j4f=*L<$;Lg3biw@;9Pg2UlV+X;JbZ`&SX=Av)e3OGfcMwx0$8@aDfrBx&hc_%u=f_M$VbWXi}yz^2#(u!I{SBK&CM|mT8R6XBs0am*+U`n(qNEdnw}q zw;RG|`VTvu2-d@o|NREA%?vHDHZ09-60SC1CF<93O!mpZ6k=ww)Yl3 zb5zd*p4!Uy014A~_jIvl@PL6hNcRB$-f9o1mIrY9RLTSTjTtMPes7x4M0=rdcqf2|LGr`FR- zl6@a+@J$==$_`&Z`Rwi|0LzXs)b>127u>IKpq3Zlsb28@hGPRZfq0!lAHbud3<1}> zz7cp-%P~s9HMgp-S@*L49j3gplZW2X9(uiy8 zo)HI^zb0(Yydy5fzaqA>o)E9*T_V~Jk0;*SY$cAb_8~mN1Vo;2HZijip9tRTLfrW} zo+v#rfoR8{K&*;#A)asM6Vn#XBpx^LB*ytJC#H_{BaXKUAbzb0Chls55U(2UBJPZe zBs%295D^-2M6viNG2})9@fD|C^XJ1>4$=;;+~;B!{`>%IJ2gHw1otOI_wNXpeX%p( zEpJ)^evwiDUQc$uMQuxyyMy};3J-?^Hk}j?*z(T_z+VC*0e@TH1Mq3D1aLn>bjohP zKdwy!tm*O?tc#-OJAHXNShplFL!f=Fj!pn<`DZiWPsdLHPHG7M ztR9jhd@D&oYIh0ePk4;E&U;`mZoX(SMtJ_b)8ZAw`=6it6SZSt}n+GJKBVde} zJ@_8rr>Q>xKQGh*V~$5(4ZtI2lAyfo7(;Dia*V*3%pJG@@We*mfCu!R1USdQ3a~)` zG#JALlgt3KM`;0ecOk+31TRl_1x(M^tDrkr@6Q@`0PvpQNq`5=V1f28{oWRE@YIkJrDRgLB0p% zF|Cht7$+4=h4%?e!$GDGjtsu4h@3egbgXiZyT~(13K;u8mP^n0hj3v8t}qFx&}_qP-~!C8kpl&DGk)Lb#mKr+KM%B7nf9C z13zTyP)-B&X3N)r`4@)yz+`s@4J^h%x(3eARBNDG8kj#zB{i@Mr>$564{%B4HSkBK z4&^jp=pkPNc?JwVFl{!22A1O>T?0vT)EcOk2E68~qz3llv=wV04VP421DYPvuA%Bs zP6NiC@-@IOX7B-bTxEsVMpxq?T?6DiwFauCfyMJHsezicMdGv-YakPsR9*wxo>kRA zQ!n`%FlYLVcn+?zLJj!hAYB8=3)C8@mIjtDR7njS#Az$mKn^acyax2Vs;U9gMe;Sk z(r0)tG#^)4p$0bKAYB6~-f9h0O9QI~Dye~3oVH>ON2$ks-=Mq%PXaU)o~nB5XT`W#&O8j@f>pKF%J1XfkU23;E=J$ zIAp(L9P-Ig4tX!0LuSQsNY6M9+3hHYte?Ok4Uciiw0I7AIi5pW9p#WVM>*t>qZ~5i zD2FUM${~NpamanK9CBL>hx~SsLzW%pklo`sWdC>$*)g6&4vOcHmhl`iH;zNb#c@a~ zmu@ShY1jPqa&uNmGp*cuxwMx*z_V~<*H2N~SHo`LIRx&0@Hq+e@=whoz;hYwUdICt znZyHZFFFReh4ov&1&a;=rq^e=bpptb9_LT51D+dU{iIm#vvjDRYqP(QtVQgJe9-@L@v zfa|)Q11x)dlhyyu@p9K>{->WOSJ89gkdbujDmkaWdcA$dwavykQsE}8Nig;zHC9e#%MP=wHrwkQv%Frcl8ET2j zP#7vhCx|k1msf^H^eaP2L>cOg%1{%c4E5rbAtzoLDkI8JDN%-=5@l!`QHJb@GW42P zhAan^A?rb9=+)pdba_A-+RrOPzPvIN#4AI5UKv`zD?^8P($}VP>9$sy_NH>r6gB@( zM=X|44S1%gi=Q-0{R*EaN@e)pCZi$Q@urXOA@H1_?)&ZnrZ(B~g(3~`9G}Dc8v-tj zOabHD){b@{&emHGI3S$|m|maerzFOFwq5iF$A9Y*4(g}B-m%jY!1!%lzcb*`%{qbc zH%>PUF#YvfEPV~?|Cz|LlkKm2PR~G`etgj_yNj~r?~0=t>zgOi0PU-n*%femv-*H# z>(gBK?|d#d-piiS)VU&WZ2q7AyTY;FI7t3j?^D7s*1O~8RyfwL#zFd6Pp+5tk$SAJ z;#j|UgR}z`jP)y)>WlT(>Wjw(=!=~q^~DB{^u@P+>WdqE*B93*(igAK)E5s-))!~( z)EAr0(HFDF>WiCu>x-8L>WjJF`r>u2`r`r`SM^u=@C^~Jjv=!=^< z>x)A=>Wj(R`r>5IQE(-*H>rY~N;R9|fF zFHO7Vzu$KWlxAAF_xoF3&I9Agxy|soajQOW0^{qN8OH$2jvv%k;=TxsFAsN@0M2u) z1;)Fjzm@@xwmb}Y`0&Mm>Gkz;MU44Oa%O|$|D>jYeCV(D*}FUF4{`Dq!1VHuM)<+k zFWw6HWHEfs9sPLsMXx~qJI(X~*Nbce>Tl)KAMls6@VRxaqHe&i==J6NJ|*}4zIM>R zbG+R6|3CSDpFXB5>lrfdRis3q-&m3E(dYiim!X-;F8K;_te`Y?Ha0%avG#`LT$CFFG$6||NqT2M7{>{-Z8un znvbijPy-uqkgkE0&1wx)>$>OaEh?#jSe&+E4dmmJ%4?v0NL4jpzD>RcBuvi_^}O6ycJ}YoOt_s%pS)H-iSW7}h~7##L6Rfz3Eb z*FfrawFauCfekwSbu6?$~???h_z_ri6->I~E7d}fXyaq~TN^RzNUeT_f4tVxk{?{z;1#)t0N-e~2k_%xdjU_`;Sachc@My{?d`hz-+5o|{kiO^ zuk4&wnevsr{#tIHY`I^)H=yqfbA+w9*%f+291haG;dMAxod%1gJ=AU4=-Kn!JpRsG z%>PbiSS(iT>SR}HKl0ax^VI(93WtVNIP$x`C$%5E?EXz^|L)6n3#v`K7LWI(_UKdd z9BTj4JGU=&O(En%)DCLjXQBIhYM=MEgCjLp3Yh;UmfClFbD}ntWX4V1*g zTh9K`M2p2@-FqSSruIwSeN(BudEtOg+AJ39`gC1?YQG@=c0RRlIyHo&!(y={xz6F# ze%9nBpQ*iJcBT{6Ll;~lj!}DlX7#)wYLB!770i>J@5hnpbx)J^S6(EwU!Nsw?b$_o zt@R@XM*_%Q%Xg8QnS04G+Iz?h{k`P(?>opJjkl6lwyYq<%N)tOD_zMa!#&CQA3VsR zB~!^kv-srTu2V^~-F$LY^klNbBtLSh$3AkZr`3SPfBGzu{Nct`Os@Z21F-1*vI@cQnvbpX@L z3zC~MK3C{j!BNmY!=8zN=ZFpgroaBBr|%it!=5l3wC8-=#eiRR@B;iW>l)xVbNFmJ zN3-o9E}KvD{r}GAa$~;i=VH_tCGV#)*F34QOy2Q|{!SeWw*H6YkM;aAhOvG%Zf=ER zeHaeX$NKb0X&HdAtEv*yCj(shm{6B_$ z!I&oT7yx+xbqT1?r+sS>-*Isy;Gl(HKzVw7d!3l`Y5jULc)fOxA&g`C`t!}f7#Xn1 z5^{9E!NMSIwk2@^w zKn31V(>^bIgws}hozx&!+Cb&6liK1VmH)hKWrBPS_QSUQ$qM*}uq8F#^M6RdoM6XWTiK0&0iTLr- zw0D=gPTJ-_KVh*p)}ZU8)b&!~F=@v36~0HJvZc0e*i#JCn}hWvq1-lriwjx<-u0sq z;KOya0cWqT4VcV0v zet=!;b^~nH>;d@h;fzZM7{8DH(CMq-yNHt~7=imOLIj-vhpyuS{vGE8_}-?efCqf^ z0o>p{{QmiU2HQd0vSAotSM$AquUqc}{O7?Yz|9Tj0Z!7A|NZoy3IDWE?md&N9OS*P z`QQF~x%W*c&dB!+{x1g4cz~N;p=Z3pLAqyjIw9>Z_4}qOzHiFM9jM@a(=ZMj-Q=** za4s8VaM{Qeu~8~wBO8K^;s`c6K(Nte#76VDY^29wqxW`f8+qBX(MDS~O0Z?4hqlsk9qri2)sBs}+p*DoJ2o<~XCp^@Hris(MtAMm zs5Xae>$l*)NL6d5O@vrm^#xNh~)2QTQy-{dRm%sugS-1Ej3P6KRwbsgZeG1~!WkBpVAXE)%-d7*%1#~f-~|0@8DNt$;CfOY*xGuHv`c69^bC7T=ppP2X&c+{G8 zdjaq5?g6+Ur4``S*ONg$9R}=WoF~OzyZ}6g+d><(*Zy>Kz?0)U0yeko4fsSh0vzN& z4sgtO_d=2m$Flc}yX3)S`9HeVtC#lvzwKOnXqLLa|iqlrCfm67o@*2pMsY5vp zyi1m^fyhn_8sJ@G(0~gL(lxN>vRVVx(!i)>mDIpWoVH>OoWmuR*Fb?x9m;8-?M?X_ zU^QXTz`!dE8kmfObPepks@6cYG%)sBr8JOdoI}{pEF$VZDJ6IwUx*BsKZIrrO`c76 zEnYldmp7)BE^l;VE#9R^?}%E5pAe-%SBcdl6Nx3eP7yB#A0w8893g(UJWM=IKSbDF zI7Br55<}$L93dK;9wi*u$BC;4PZ14zog?lw6cQshiiuyXl8O1E6hhGdHsM_FK5=r% zW1?xVCqzz{rv#OYPKq>b)tNs}yCKcEa`R{L>K|ZjjlEc1u(zwa=`l@!Fv#d zd4V9VQ3tZu{$LQ_#0mn;N)Z5dSTY3g;=V?JW!vB6=07cz8>>~~bGq^Oc) zO|S5p>sB13d&a|C(*9CkbFJbv*Pz?d4peZ>b=R_K)G%95mQL~^TN^DT%f3w}&GLtn1K;&08+dTZr*&<~9-n)Y{%?Ab8?$?o zcF8@-CU<&~3CDVq9gS?rjNNwRxg}h3_Y59MgbW~4dJZAWN{5lDu_MVRj-$yZt;UmQ z54(~P`zMou-}t1_vT3B0H9jL%FmM6NAPwZxspI&*8qf-`;4;KkYf8i1`TDY9d zf4+*mdT15d+jR-q?9M#0!^`R9_J$KlpCjYQpb2Bho!gzsxsykcN5Y)QXM@%9J$VedV8>XJcsq`?UO$11?&?aK7EL7kMocE#Eaj6(2ZR1@Sjdp!!vF^R>m{DZ>NJXV!lm2;5q{#*Ydds;(Wu4fD=An04zJ^ zP#fRxBp8#8Pt5~kd~r@FV7IsH02jvh2Hf(_4KU`%6bS&2&9VY~R{Jfezh}M8fX6nP z1)ldv&;M!edXenB=}FEtz&A{a0som-3-rgW3Pvd@og=ZZA8@_e~ ze5dbNz^N_91HQTnzMjXpHXz=$=q<=!w*70;{%JuqJtO3ae9y@H#IUv_A2+>1&-jjm zbkDHOPW=4K4< zn~HFi6>8u&4$?Ki%~ETiS{nF_J5YfJ8bz}??V{P7-qCE%plCK{Of;J_Et<_)5Y6VS ziDq+FW9}Qx=G2d7bIPLFoT4Z;Cp(JGNsnT49!9Y__oCRGyZDFt{XrC)^Eisld4kJ5 z!^f0Hu{mF&*qmQcYz`}$&C!fzb9AEF9Q|lE$0(Z3p>m0R`p+v=<9$=DTxrIYn`<{4 z@eSM;aQoR0z;&({0ghjM8*qBN6u{2}nSf<|m)eG&*97-1?6g`7?rYe+VGrP_JYT?T zvP}RF)r`YZ8iYT2=PBH`@V>t|4PScy=3D{QX>Hm^1cl? z|HfCqgX^+D{}k4*1$fpH4&aQK)qtOlo(Y&0WdL}fa4)ED^MrK3g2ZN^{1J^NfFFH= z`O3EcJU+8jcYV{>LiwJN*Mh+_O!B0ns?am6aFFg9-p|yYQ7zBtm@n->1)kAA)D+DM zHAP!OP0^W9Q}ig*6ul2MMfJCuBCD;YsOwf!^e)sCZ4Wg?)}f~8ONc3Y5@L$3g_xoX zA*Sefh$)H_yHbSA_UUBu;5LrhU-h$$)wF-0uuwL?u&qfk?15^9Rt zg_@%7p{B?#)D%&kO@Mzzt_5uK!wqnUs40L8`Yr-2 zJLXWExnn4}Pr<8q1F$C3J)sNW&9xc=Zls+6)@&{evjHsW{0Y3i*vh@+$F0q zV5==Qz+>q7Pdokx+^g2tsV7)N+i%?rz^uc;fEx`B0bI{?D`0=!G{6Oo>x2G0@m&LO z+^k4Yepo_Rz(p;*0KfQn6mY=JBY+z&gZav~|200dRM#`uCGtH((u2V>h8Hn-hC2?@ zJ>&2TwP#ezGbX>RlxHM-))zi=ZzOE>*i<-pbsJ%;x*ddh_c{xk9n=F-z|NS_`>pO;`^9~iF%%Q5>49ONWATJE%B|(wZ!24*Aurp z-cEdd=U(E)F=>gnBc3LvndB#GG<=!Zrs;>oubw{>w>{Ai?(^0Z4mwy{IH0$-aBs1$ zP`_V2q1P9Ep<%H!ZPoFNIj^M|S8kq>q%#GK$(mD~0kfLJb^j%4CLq3iq#@u;-KKzL z$DIFuckc|wytQ@`a9>08e)xS5Ct`nr_`deX0NWYDd;fmN7=w6G!BbG*zCHT@FWTY+ z*vEDQ@C17P3p}lWM-A~@1bE!?FuIrUL$876EwS)SZBPbG!k|w%@GepBBnp6HPZ)>Tv0~O3OYTEVLi#Tn?*JnTDlFDD7ZSz*zHB=qtw8(gU zw&w@=8i+Jv(7*;jHSimkR9*v}K2=o%9zW!309i9= zU^A|=LJh>=AYB75KC3lQEe%9`sgwph?i3T-Z+{?8rT-udShaWu=G5Vxoub3@o36*R zIc>mu;%2~`Hc*G>Z1jt0U#E!pHtZ2`WARObyqZkhlZc5aO_GSH&F_-=@mwKM>)%gO`m>bLbG0Wa=&8u0EL zBEYiqFKW9J^#t6v(64kJxDO&^<$l11&vyY%jvo$qLCF_zpTwRc#{q}+_60n`zb{}9 zkIx{V87VCo*Yq0Pybspsew|?m+MCs{JK!sZPJq#-k$|TR8wz+^&&_}b1fK;wY5G3E z_XBJJ_nUhijik+LizVmO!@Io3+3LktHk^{QbYT{2bZ^Gu~-Jg z{MqxS3TAuG@3+WnvD+|yM+VQhjGJDeXJq0a-7}j1lJ=K+{#?cR^8?(03g*wZ`+Ae- z(^ipny00Tsp9hfJZf+!7w+kzdoS|3Sue7|Eo<`4>b~Ti+jiv0EJU{S9za?y8bY>7btGpu z9z&koHj(`JU@B?ZY6jUd!;N&>IGembcOH4^#scz;jW@aO_dlJe#@db?miB)SBdnZf zJUA8s#>nJ-I{=UW1D}&E>^cF&d3%NcUbN2{Fx@kvau$F!s)qZuz!+!vp%37)jlBTt z_xcXj#D*H~0{pr)d@j0idMgm$Jog2t-^?H!@R%mo7}vzQTlj%Br1g8A0le)Yyl>&W zSOfIOVNJ-}u73x|-}CAM%8y+)39w~7F5uE_aLw}RUJJqNUELf7xZa2Yz}7vU01oCP z0G9p#ZPSpRS*rUv-6L)Jo?+gB!81PNrdQ}02DPO9Lidajn$o|kJ)?@Ap;cSjfeJih zDyJUTq>~o+{Fy(T5ueI9FneT$oM ziOXi(Ibm(Mlc!p6`BN;p&WRnkEkiqUKke$sJzvm)YnWuoO&r#qJHfXd_ljp5ZeCa` zZo5rp+yQk>xpzl2Gl%ynGXkQ)}*ZPl4)7->s8 zx^kW|>1kgu1_{%w0sqKq1NhJ-1Hc(;bO5(o+Yqqqm_uz*`klZSZDn*CjOqUQ&j36B zz5)2H>l(njTQvYY=g>9q`cF4*0X${jV8Cl)H34Uh@5bmEQ#JFzeFkCEn}ad-yaNGv z&5fCW7k8Tr*sjHFz~;+i0JrQ0$8?iJ5)ePI4IZD{`zOfHe>NMGpV?Xf`1=zNz%dgL zVA=m)3O=(`*E2He%J+=CrVO6ZQAaAO3O$2|gLKdE(^Y#$wXRLs)UA|f)U?m(X5h3H zU!RS@C6&KEdrPK{a&vyh&*`4(%h!NU8wL$@(PPlSKpdoNz`vea1J%+1N54`UXnjTF zNKN{gh0|87fhb&3c@3n>)S;XP@(kr`Ag?=v2CNJiG~j@PbPWX8S8JeJ8sHgLN&^F2 zEKyDR@xW;-)<6s{sk{ar%G9Bp2A(&RuK{xt1`Sv@V9>yD9HeVti;-Fb)zZMghLzI5 z@XR{#HR)#oPFt}C;&4gjHIOb-hjJQt*_c5CZ5cFRW6Yp|Q8-A~z_vze4OB}54vj0N zftofS5a6^GYajuaR9*vFGIc1Yfs$qn8eqELfzyOR17mTJu7RCR)f%Xl28K6NNewK; zX)D&iDO^%{4dlwyp_~TZnabBdqy>Wy@Jtvq;DUp64eV*I)avJz(CSL50U<7_ zyary#)S;XPzP4u2KyL;OIG8hNU>Xk6H4xoOt$}K3z@@cHYG55sTd@YjxTNwLcr8ybXf}+;Nbufx~Up8mN{ACbv^b4Fuq{6>H!!E~&f*-pbUWoCa7O zC-iJX0V>>WtU_K7gHE_J6S_9S6fP1G(Y2Z*CpZg+?&;1_9=Q_plxnZ$vn|C-F$@4?R13CT^q;e-iYUOXT-22%VT`5#xXv( zOc?A zsRDN@!~Zt?J?`EkBf#@=s7>}6a$|Y*!Lt@V4}#x`NiTmb9e&Sp;am9pq&oJk!LufM zjL2oIKcZ_3@GJ{@eFxrN0k4;OwkKeE`4#DJL48GYCW7+K3R(fy+0F(mPK*Woy!I-< z^!fxQeZjLNh8)WPe9(Ox;9M*CY>P>S!$JSkU;l$=E6^VAK4$!-Bf()LQAgkvkXz=qAH1&B23V2?Ejyx|xR4yzlY1%u=jrFbZ zsTfcL#(JHpQonKNiO=R{;3Do*&>Dr*Z+iZPN$;pP3Ic zLHrqc0`O6j_khW8ZFs!iBM_Hu{||g7QRjU*Pmn$J|BlzPi{cr8dd4ruTgEug( zk(k^|DxeCzVKENUz2UqyR-Fcmr9ISb+34Bx+&tR;*PSeuIn@bxi(Q@UO8q+W*M{@d z{_6^dhEzE6yS^v2AH3}TO=|z{%XSN@O}iG4_oepeQ}Y~Z|I$0RuO^Gd3i%MVgWC65 z=>DGC=e_OVNPSOm!2CC{)V|xB6Sb)%Gv*5T)ZXV+?~Byla`ulVS}Ydp-V3oewO{J) zn@a7?3kP)4X0ce;r|bGt`vv*8^QnE)sUaL47K4_$GRov!#TM^}8G&=m{%>xz3j=!*A^&=v0+ zs4ITZRabmZS66)eosQTpPe;7|j*gg>tRpTF>WF`z))B8dt|Q)gOhkq)iZt#2SsZG`o zx-KpS<5e?_8Md2C8-aGzO`p2JYds6>Fd_QB@7}#z!izfx-RdYd|uH zK?C8q$_h1b3J2*LDC4O$P%RC_^;1a=Ji=)!)__6(s%pR%AE~?sRyxSn0Bbyh1|o2k z6>8ud4$?L7Wq?`()zU!1z)ESrZe~;7Ip-Fl*b<=ORb z?gRM8i+x7w6bXrTm-^Q2$?#$}}c)^18 zfT!pm0sP@>5a2u~2f!!Cc>#9tg0DAV$}kX@ZNI0(KP{Ad&#n^lXP=P_o-u^MGalfk zSLhk9aFFg9orX#KOFe(C;`})ucc6m#^Lm|l)HLQe%6oPOwVs%SLUvw3vm4(+C#-Iu z{MOe|2Z!q@U{NwMoF_!ba}!X+;z;BYvje%!3q{W@g3&7T_2_DtFM5={7OlziLAg`c zp!RoGA?=TAQ1sZ<=ws8=6=2G+mKIqTXgNFgvdJ_(~ z_{t~1QOVFt4mQ~f;@_W@f%@jAJOX^D-V(sF?eQM@?;J1Z1+u3(buFi&AL^W{=xk3*p#X-6UbRDJkfNISfif{)i@Bl&2yOITqZ%PI}OOf2% za#ON*?;{DimnrG+G)+=R|AFMj*SnGhyYEVVvhGWU1!YKP>O7RhExj!v^Y2NnmEM*( z9!`K2l8eQu5|5sDB_YoL^Z}oVDl3k^Ya;$H_czBV;{ooZ zJs3k|#{_C?@LdeX(7bD9fa&GuF7N}dH}sGP;7*M;$Q^^I?YZd=#@F}LISXEoUjOM8 zK_H&DuRmjbneDHExXtW=;P@>&%m8me`EF`(4KI+-+=E-gdQP#{F1T%&haXFfV{C@cAS^}U0!)bf2Upp zYylJGdjP8wg9l{dCRgYIA8?TF0X@d6J)l}1@CtXJ0uQKZpQ9O1kpABlUq2m=ODg|4 z+6tLE%4v|&1+`W9Ioic3@-@Jp$e@87TxEqC_>6;e4fJ+ZYoJ;hD8(J9Km)szvTf~S zvTdV7vu*qPWZV8+oNcQ&C)+l7Lbk2;;B4DpeY0)9I%eDIuFJM9Ny)Zd{3F};f=P~T zhfX=Rf4b+`?zPUbMRqy1d~S~I5pIrcbl)6Xoo+d{x$Sdo+nD9pMm5c`ecC9;cD`Yb zEk`@Y*6eq-tzKESt=8*o+adYcwr3t^+m_zUw#~nkZ5y7HZ5ugJ`hQoQ>!;r*OEa$A z_0uLU`@nY?x16~d@aFtMfc=kI0M>Xk5pY+NHGsWiJpfai>>N5Rtu9#aV;eUE@aNa? zJEE;Q%|W~%_Y_!j-+EUUz;!OigYVa@o3b156oDV$5gsF~W%Hxw`*r23^Rn>*yE>qK zBj^4C@t#|s1Kw^K4EVU&V!-eFWC5NsOc%U<7oR48KNIx7gr&^pN>tJ+yC;9b_D*)fUIS%lUeQm)QO3zo=53Xso@P+pjyiH35 zo_1t*65y$CrUO2Y=&`?MRud4D-lhSdgeAw5?Y%i^=@IBwD4?;qzEmuB(qYpB%RsPv{lD5rp=XR zTshAey*2@ix#pvH1D+8y3h-@lC%~yrQvi?Huo5tDrW;_{F^Jl1PSyqYDa^X+4Y**{ zTEKfR@c_>l1@DvSVYU#AiGwshfHCmO=q$juhQa&Ro|c4yc?vz>%w6!ljk+nepnYrI z;e7)4OPhoE)U8RtqcU_40(Oix1m#bsSpmK!CII(a(G&22eXzc>0Xz`DcghKH$1`03 zUm08nux$IAc>L3XYI=sHr+m*aAImV$SdN=s;XGq24$?j2;XG-7splD0oM!~hmv*3n zc}7jUK6?hIt@!$EDK4q}_1Wg0(ymc{eJk5bz6SCpFlb;kuChW6gyA4v1L+IY8mQL$ zrp*ggQUe!o+KM&s0hd%>17==T)j+pJ@-@KcFlfLRS6QJ3!f}wUfh=#e2CAijtpb(Q zz(t(4Vhw!8C6(7en?+UCz>F30HNbLa(7*;D-Xk{?-bsxXJX4VwPgK;3_x)Z=p0HPAUdxoayj}hpycxt7 zA}akIq1&pIm@}k=Sf%-j$Q8XL?nS;N_BD7-jD1x~ENSzBNZ+-*|Low?q(AS*f)JEVA=T?wRNA;72K!rc1RfDKh5?4 zo`|Lcj*Zj->{J*4*7aTt6I7NF6g%u@FLxjfQ4Rg zZLDnj$F2CM1=XBC?^-M0Ga{KhLx`JRp=Uh6LAqx&TqW%<_58Vt^XHqm0~O4lt;e@R zb@-Mjqh}}dbwg(~NZbW&ncWSUudzZlu|3fc7i(lz+5?T!?u@o?Y=hWQ&C%dxjZsNd zLsUA?2o2xU0G$joL^gE{5&5M)%BtT05h+HfuC+1pz0e3Dd(7BsN3y zdNxN6-%QaB+m`6z4l_iqX@%N1Z-d^%V+pW4R#?zojJm>kND?-Rluwqpxd%YO^^lq7^(=j>Ll;pFXHNxLv^`=vX%);hbm zZ(Hx?TG!gcy^+0_yUc7qH|TOC_efwAw@LFu+^&v?xe0BLaGTAG!&tz5cbYSL#-kK57~{V_%K-dt?p?s) zErfu-T1*4HUw<&*Zo5ta{(UnS@P@3Q`_{>t>wH^0@I9KSJ zf%c~@0_|fg0`0>s0__7V0__)B1lqe<1lm)%yu@j%&h=Sdh_s_C_r57;wProSv_+t@jz(_`Gfp0KZt&`K)Z*++ic& z{k}&5hi0Y%?z5xUIoab)w{8SHXT&bR^)}7}Jbkh?;H6_`0M25=*SmMr55(C9!vM>+ z{|i2|RQG*TpPlkOBM&inhD#`eXL#Wt-7`*aReMIYJY&wbN_obSLL+pk&(g+^!${uwRv z``AJwG#;0kTxf)*6&j&Ag+@qFXoOZ38X>c zp0PMgnsMbkV#JHv zi2^}tVoUa;#2wn1iH(f&6SuZ1Nt~JbG12PE@5IBg+QLKrhC(y9CPL#G&4r`%&4gMb z+6wgtbP(1b)>+u9u&Z!n_&=Sf#`W2_z0!;;=NV34W5F2htr-J&^?i6>h4HmO5ck~R z4Y=cX_=;CCM-RRR_dSFU8wBo?__M(kaAII@z-Jr%2FK@&I0$&~9S^{c ztoDEfbKv*&I9ShQ^tc~dF2JMSMnnK!vGX3_SC_Rx`-@iA1AHP`5AeXd0|D>Z?E_d- z&jaxKSFHj6Ia>(oZ+8WH?wfw_`z=BqYJub3FJA-4%l^Nn?E9w$)%1)7k@7tw&w*i{ zaTzzgLeI#=LAqx&-!JViwP#e(Gald$RNxsk?fUFboVMcYv(}N)Ger68v(xdBR2}8C z$asBL5G`K==EE2?a1B>kp$2krkgfrVdh(Je~}Cd(kpt((yG!+c|y&;TlMcNZLXijNeYQ+_;k% z*)^P4`E4KZe$xSB>*9li&A1pMfJ}Mj{b_%d%$`9^8l}1 zb^|ac>=fXTek9-{35Nm8&c~?DYiMV1AH<10p@84;_5)rta~p_T7rX}dO)Sqi z0=U6aPrz5(nFD@z{t#GCMbCG6fB4L8PqzYaAH>YSMxedVkMjVh`V9fxZR23TThDF= zy!p}vz}L^h?}r$;bPkC3n%@p^?fVFDZsSRScgMo~{KD#kxNQ6PAN{9=a$~hhTyxDk z#o!rC-xpEqn6&8?dWH!O(mlg9L3)sS{#?cRv(a&B2P*K4S3mc0gPR`ahWef0*6NeU zy<~fdd%yK{?)J%dxv?f`T;aw{Zu*>u+|pi`xQBYga>HAOayxfg!_C+-n|sdDg_}?` zocl^Jh`Ve6k9)otarwsmxPFZWafS7Uab2=Uah)f*a`zmc#?3LB%YF2HDficFKW@9j zf!xd=8@X=UA>1Zz+qoat?&7vd-^0!RxsQ7Vr>#1k(ejkEqbuhb`S0t3G4JBbPXqW2?bYMXfcW{5y8t%|8Vz_g zr!HX8#}u$e_UD96fE#<+1O71L3Rojc&-Y!cM6hPmVH3RXAml8(FX7V#H_-k^PV)d; zM9&4>q32=1h2k`uc=7t{ zd&L``Y!Pou_7lghnk9BL87qG1<}H5mV6WKyZHhQX{7QVYfd*N8P@BBXsz)X^uTQRN z(12{@ZbV)a8IjK2jmXy>8j$a^>yx(i49G3#^vLs3x}-@DZSvEfTIA`SKgA>Kd=mSu zc_)6`uS7hlVUhSlvpn%li!AZ2;&ky>oVMzC#;6O*c*e5;IHpAHnE}QO^H&oAXH9Sf z+~|-kU~8QbfV++F3s`mxqP9tggka2`bJ7Tm`K?VL$M?$wF1Np|c57(rhSe&+E4dmmJ%4?uLSyc^~ zUzV={A3FvOc;PB5)Ibmp(lu~PqSipQG~j!wQW|)6&;-?_pQAW!#TqEWC6(7e!^>6G zK-;VGH4w=(e_o8MtWX1+ageTo)MT{=s-=MqS1P4}R#RSftVus7aN3GB@CuhyUIR_8 zR#gL**X3(~@5tZ-%W;(zYG5l4(lzk#npy+Z(m+s3r8H2}<^yMN+KM$$ic2c5f#%n% zssZ*b`5G`E#GrxIxXKDO5Qc+v4W!>tYoJ;h*nCqZHE;o^tylvea7pDgV0Npj8t8VH zK?6<<8t}zcR;Yn+9HeU?>$X}0)zZM$J1VJxi#Tn?8u*M$DzAYycdM#_p7-TzAa53f z1~%X-E7U*)4$?J{o2u48wKNcRuaX+5S(^l>tylx!aY^Mh(Eff^HPGjgd<{qh3>pZ+ zRaU5hC>*3~px}X81J%+%_(PS{z!jXfVh#MpC6(7er$<%QfL*$L4e;F=G_V<0S)m4E zaFDKn7mw8%sFnsI(o|9d*Kyj4HBc*E+Cb$s&=ns^)lqI;EaSawC{w-$%?hq^5z1Ol)AQw388dU#G1xKo)@n>l`_%*;Ja8K3!JJJBCJ z6Jg4{?SQH6@7gPBt8e)hyq@35IKWHJ-T=?#$0x_?gjj0M=@Y}ez#iu0r|z=ECoEdzx?k`9g+9%yf63OME2DGpL`AybzWBG^~yaX zDWpigH~9E6c*7~&>4(L{^I zV%>Wo_NMkr-F;K3y?Nn)PTDLM>-uzEe`>!V|8_pLZ#p%Eqr+mcB)QJv)PC0FCZDOj zVRohy)k7CtBaTsferEN&;WF+(1^4T$49Gy&12Ryfzzk#`n1O}_W}r!d8EAT723i!D zf#L!)(6PV_G=cg(AOqP3WS~O-479>O13CC-pw|8wNYg(9m2AjBIU6!i=7tRPY(oYr z-H?Ga{4-E9{|waAKLd^O&p>?t47Auk1I77gpkn_F)G#0ebqL5n4gncxW}^_WEw2G~>$Muha457BGH!@Ld3(pCtj~*{ezO0YC5F5AeGt)`0tOs{>x|!8{WX zr#4xC8S(uCcxI2OsaBF~To7>q#3x)i4fun8DBu?xECBEL1D_f61rxLueSuytG-;L%z!fGtzk0e&sk1^u~Z^LW6I>;?k9R!{k%XKt|z=j=BZ zj%G_&PVL^V9M7SyoXzg89Jaufb7_q$r*5Dt=ld2{&ZO{oM-J_IkCn6 zbfOy1)vHyajAz^n`UJ+*;9+M0YmYPsOrjJph7QRH18lHqHQWe_sS+sPFo{fCVnzfE#3X0Q_-LtlTk_+LpZ* zgZ7N?WB}Ux=%N+iaMB6zg7o=-2S4WmzGBo8@XVqx!2W3kfH%Fq30SXS7T{eM5n%E1 zae#03vII{+-wU|Lyh%`5G|yW6(g$cMKY^ z#zDFUmb_PMpjsN}@s)%#-ITk9HeVt z#YeRUs-*#|Pb#T_i8yV=8VJKBmDfPBOdZN;p!QGs8j!d#Xu#q#g9bP_NY}ucFKP`` zO9R$l{~vqj0o6nk_5BqT5EM}n5fxFaM2gsfB)h?mT~zGYu>mSpEKv~I?n^HxStGYbbcp&{%M(V+iMFZWorp) zbAJ-;b6yi!B}K%AE{})_nSoRp|^>WLHCFmMvn+n(?Vk1 z=I2DP&r9Nl*K5LT(??>`axFo#Lpp+&$nENL%~kMAI?xrn z<~r|~uHfJK5xw2rb{;%eZQ=6{fFpdbfM+NTJbnVOcr#?%p5CB-(A@Q)JiW=bZ_r^p zcuwAhGb;h_uImVR(l;D%7fB1i8)rzsbMst^qX17^z7()|Tt~pGN)o~IH<@hN`ZoYPcl8dywi{jmF44XW*!Kh+|HPybz+U6! z9Kg>@y91W(?>BU0Rp0aH9$I=BeFMuJ!!Sd_bJo1cKC`?$ofj=wJbj@1a+aJiwv;7j zEI>wP&N%j4lQY!H8MFUXC}-HkmEws>HHgxeHHjnky2J_n+Ju&;KH+#*kBHf&OBhV6 zO&s&CP1H!KMHHs~!YB6rh<}*-7GK_|2v1ykA9uNP1D~)c7atUR8IKx&5g$ihz}tPg zh-W{(j3;)!j3Bd%NYkU&w!Zsv1A|MKQER5?)ZWLEE`kk&G=jg))<>T zZj-`i@X*`C2i72FU+Lil*tE$lu>Vn4^8vR>)B)wGZJ&UBdMEgtzOy6TfIa59Dd5|m z4}oVc(VJ|JTRu(Qi1CLf8Ut?f zZY3x$KJo;#r!(CM*wgBM19sW|aI~aHR`typu6l}dM!^!6oUsXYUG6p41Y~69j2GI{ z@zTugsN}O)qiaeBP{}pdh~g3CGQ+E=q*wQ1N#?jO91iR!7>6obC0?I zE#W6X{ww<067E{{3^Zl?ED z;rR5`D?9GXUH|#tn)gTFUtoLDbKm6I>HmYx%|LN(uvo^D8rP{$jHnM+WJU! znt6Y1rt4!EcI5U;l74p^b*PyE{lVPyT1vksj_90EzYo3s)wT{j?{TOon0^#*hq(j!Fm>##1UCf!Ck9kSk!+gM+*2HYpJXdoFiDOUq$k&&qZ-MShL zsC7=Ag$7WG2J#~~+{7ImZkMeb?%+@k*K8w)yDNahZQ{q_MhZFHWM2;VsV|3n(2v8N zvxURGw41|q-p}DqJ;dR9q;R-fk8-$IQaRjX$2eTmG!FOfF%I{2Du+8FmBXEOl*7H9 z!r@*|=5U7`=5Qkqa=25HINTG79PYY(9B$TL4tL`o4)?-t4);?ehfDk7Z7BWRtIs+0 zMI))l6+5SXcIGTt8!%z<1Hky7kAOc$YJqt>J=>N5d(w?-fE%tW1x#B!E}u#{r)60sdz71-H*&?mwO$3HWZb3*c1?|A6*~b&CYd^mmAT2>1=^ zw8!ayM~piGcuOJtP3zT7&A@nUsbdNl`-1}>9%2i)!8~igwz^?}``g0tfA%{S*x$O& z100w?8u0l^odC=Be|7ybEtHGZ)ne`|*;sMTz}e2J3sKkQ=8T`n$jljz4K+DKt(@@@ z4WN>o;VL%4gT*HJS+NPOFEPP~OHA+>i3$EdVuG7yn&9&?P4L;7Cir!U3I0`Vg0~c# z;HyL?cw3PP{xQP@zno!$pU5!56EjTky%{F>z6=xmc!mj{oneCKW|-i`876pXh6!#W zGQm5GOz?gp6MVYJ1dkG#;15M6xHj4+AvVEjU*e6+bW%O$zWy;$C1+S#!uk4**S-ZY z`9P5tmaVS(2kOhlAbK+~+zVpVwl9al+{frIkMil&ct!OB@UUWD(Ks2dskSO-g zMp3ihn?xhxw}?h=+%B3|Crb3ve2*y2f3GO+XPoHDf_jwg&tu8}9$a$k)Js+5W#k zM^^Q{clX^wan8UNv*e5c<}5j53NkWtMqCR`&QR+-W2{Amaz<6VKI@0vR(^dp3zby; z`s{0&Hp+c}W4%6GYN=QQ_!<@s3~tGyff>li)WH5$8V#tWfr*yYQUig=ZRHv`g-WWf zf%h_PsHOp|onj4;UMw0I-kL=NvyqXhfrD){8c<6EQ`%Nb4QxbiE7!nTR8n;fe3EHH zH4SvJR;+=TxhxtO)s962p2*15KuUX!2Gr8Pj1CpjfRWuz!rJscVK(v!@uuBN;&T7@ zgy)g3#OeN}#HYuYAUUR{K)kf3Kr-bQq38IVuwRo))G?G0+l5DnFU|*uvp3?1V@WZ@ zBbR6*nY)`9`(igSeS8ct`PE+H z!a3qk-OI%Hb-6^a;SIvl_9kI!C3U;{oIfw0qu+=QpPTFCTRcaQxr9 zfIa`70$lgyKEQfwpoP5ri`CWQKAlHrmYgw# zC1(VouFJjV8jFm~obl8~I$oM`!0Qp7(ftwLAtE1N;&2An<)z^h$Lzx`#z*064sXZvCx_u-1)K4{ ze?oB6b|JWPatO|g-HZ==7>eVk!|=$P+we|Tci>o31YU4{H}3m=5B{nk7VnBD;{AIi zvam8}R1hYU8<5C>A03P*V7vM(XXuuaw zZv-4TejecTYa0N|#vppTTF@NKH}#t12x2&PYyn^gQ!l{I=A8kT)PDeC{_>=4fVFE5 z1iUFp8}P2Baljv@zmFbl1@lEm>t+L9A%W{B(o7qH{yX%8^M4DU!u1M4?wvvTq4q5R z|I9N5d}}6LUlDaZ3D}8U@beiO0QY~eDct{U4-C|o?f47IU}m4;+%o|v*e5{ z)OEQz;}$Y9b4KH?((%&dj7sK=t7rg~s=m0`Ie_4PI|02S1S43ICSf z4L`Kq5ntsc!1uQi;HIy;;sbtJ;){ngz`q67#B09%!N32ggpUs^=C_S_&TsSJDZkhL zLjHtVPx-fb&-wcdU-IWXE#@!Z@}56&??=AK>Knfax0FBY(O-V_bS?aesV<(mvkpG> zY(0GWum*Uauf}-r786|9txPA?BWK*}p;FFxRu{yG#Q0`_-`?i{zW%g3;7!xo1Gb82 z0Qg<5EnwLgL~q{@=7Kc|+1x@9!}kQ#0y)9!?rUIwX&nPtcXe05t8TsmIbfGg1mJEN z1mMqa-T;4?{tolM4c17^pJ)Jb#`yk_f4WWvb}xYk;6-1i0>&&t0rw493%HT15U@kx zEx=d*z?>3mr3J>HlW-7}4~dEd{8xK5VA=j}?pdaV>X|cQoD}B_cW;)Q@ey@hZqCqm zkd6y8XSg^@|F6jzmCPAhPSOEXk~6B>eY%dwZROWzXP}a*U!M(^X``GLS?|;33lwW0 zW}OYQT^yUjsvU8V#s*eO8BGAr0Kx&f&J&%Hj6j!r>-v;&4qia=0ruaJa?( z9Bv&y4)>mr!!=yP;U@ZXxV+6AuKo@VH!q6A9UjBs{@Tmon#6IqH{&?maq%4P_IM6A zFrLH3<2l@GaU3o$j>BCZ%i(73<#3lW%&>^hLTy*XgrginVBfcrm<0X%hO8sML|vH^F!QyYxenVww$C%)zY?r)3% zeye>J>@V8?J>b&|>wxn52ekoPKfeab%l7{qIj`M-nsnE-nsk_-nsnY^Kj`nUb%eQmp91m>XS42 z^iw5g%yQ2GF}HL$1-Rz>bif&NAs-Kge6S=Nl&^RBCSchZL~kKIlR(V6JaRdhv-#97 z6tLYwFTg=0oI~n3EFH}0942rEd^Z}d9n5QW477jqiz{HJzk|$AfSjV+zdy)HyC-h~ ze8M#oaHnbcfDI#_0Dju86&SDSbzlyi(PaRzJ0+L^e)Hlb*x$?hb%4ElPq>a_%VYSv z8N0uJ1@&e7{|g;i)i-B24N;skECN~1GbZ+D$r+20k(o124AA5ZwQ`21ONDYqjM++2 zZkV4advlQJXZmJQhoG&Z9Q$3O&^^0F{oP_kYp3oPJ#DyOG_`KDsNJ?rqPOi=h)xtw z6q%It7dfBciLgE0L?5o(iJ~@k6z$t>B}#6<5$Vpd78$*@6GhMKDr()e;cahtnw(QjaTk zp5fa%4aDH}=KBE)4s8Sc5Z?s&Hy#N1l>G+4U3}rX3)vV%Z<2SDKulYg-W{xqczw|e z@FLGyfZL9A0$jZ216U`~rXUpX8TX-pA2w_ZxP&JH{xJPb+}axCAmI-9+j>VglmNS} zTN5xIp10sShWppxZz;_h2G>P690~^YH@i;+%o8J#Rb=bzSaxMiMeIbH?kT((%$epvGqndOZ<+R9peYV#~#Tu}f&GNlzJ8Dv{29lAHse$(+ zG#XIrdsBjIwbVc!a$C6u^hZ`!1Km+g)iu!1jYR`KEE_&JKt6I?xdsf~DysoUR8w^gteB`+12LOfG!TuNl&gVsWMpdK+Zc@o)Y3rm*a~T2 zuID}Cg?=INJmD45!Ks9JIqxg6)w`5PHK`$(YgJQlcd4#mO)p(Rqlq;Hoi4m18s54~ zOjvi0IOi)O25vk?lx|8UUj9xZrcFpBmRj#8To>&pE*2#c@9G{TeqKLJv>0=gXt67e zDC%~SxbiNO7;*YE(Pq?nViV^Q5p@3w;T3m{NbPx(=rQsR;o*6Ya33diyZW3zizY}t zuGsmr&5$B6Z~kFnKH%mDvH|yN0O#d*?{Ng!KTS#n94&+!L&W zxHWMX;0L|K0Xwys1Ng6`5#U#kQ^EYG$D`poiuBx`z~1*>5%7oUZ)39oV7`z}&TYV( zUo`~%r*h#siU~d7x(LqiL7==-t&M<}I~)ew)G!M0vu+asKib;{@YFg2z!JR)fP-%K z1B_cY11#HruZd+^DEFPcTAV*0nWi{rkO?d~<2vfP+?-L2jLe+DahHyl=KQ&m=g);` z0F|6S|Mc5{_l(?(4~^Z1Kf4@(=S1(p^#$?x*?o!lwV{V`VZT(o^UtGrLW2YN`J`QV zg#HG6<{%&3>eNJhK*tey@Wlam(V1TODOVg{GmMAxFY)j%Jqdix;7=}U0HW0!shF~2 zuw^Z{PN83l6&R0Cv*2^Sw~U(w>{AbH2E0B)2)MpaH^3*C=mP%T)Esb_H(W=tYep+z zua)%+_%GZ4xM^itsGd2aXtv^iewt!<+!5A1{hYReoF^Jwa)i(w)deM-l zAcjkR)&@D@S`z#%iu29WLHWVU#sYS6{{i;@?$2Ssbw!H-FaFX9Fw@`Uk?X)Z3Y}GT zL5yA5w-?|^fvW)j>K+WZIk_3I4|X2#nX$hCTYq^4Sgf4{xWgm3&SI_OE?{5y`v~Ab zZXDosez3l5|8JustNPCEcsWmT&M275k~19Uu;h&4$jHnY;d3=PL#=C51LjpIXH>Oy z6h6pp<=1DEQAySB)7_V8qulp5*86mCycKI8CYnV9JWm!4j6z1H26lL9G@zCS276aX z17|ZowyjF9rO0jN8c0PYRoB2{nKo3@K*>VI8o>9kXh1NZMFV4zk*R^m1sV;grGeoK zE2II_GjI4+>9qp6ty}}?sHEx|cq-F|Y8v>wSg{6T4zp;Wj}MCmCL$wK1A7)}G@zCS zMlG(825NLVWL1@3Lgcn`4Tw-l)iv-!rVZ6J@O_zL4PZem8W^yIMFUfik*R^Wr5X*W zrGc@_Dx`s`c0S;T+*YoEEL2i;4ZN0VLp2SQu28H2Jd{NPgO{^tUncoq$eUB{w<1<1(Mz%f6K2Gr8P?Df@B16z^X$~ABm zl~i2=zhv4_O#^i{DAqts9E%1f`m<A_SkwpUwP?K^s5QL0O4P4r;(STYSSi7S_8mLO=0<}kwR#pS8BNb~v7{j80#i&WS8rX!4Obz7j(r7>}4fsb?OAQ=BZY$S7 zF)FFL1{z0JRs-#$6>A`7D~kq}qbB8QAPgCq8n_Xq(STYS2-;mOHIRnfR<40}sHEx| zXc}Ev4V1Su%!#{K?^h9_=h^Yo_$;L+IO?zea*Dyd8b+PVg%o~ zv(x%=huB9sZLXE)_;c5Hr<%Gp+#yXqITf^7&pj7?m;3T(K6hbb9=BzWof$g=44f97 z+vsGMYstO*VhY#jZlY7i3*k-}zL9&Xz8=?Zuhi`g7{*wu-vZsxUV&kl-sJzg*MK;w zhrerJn32o$WrUB-u_0@FF~lgbZ2Q@bUV{A{vOf)Y z<(*c5neDwhqtDvj8~t!ryTR3=;P#?%h*3wsUE&Y@P=>RHOOYey-;XS%ok3W5zkiRK#H~;d_41U0em;9AGe(^u7{J_7y z{yu+%|4BagXE6WFM<0I9@-Y5Dr)a)@?r#2+v%C4P1Kjy|pW{4VsxFT>>%`^6PUijk zvYR(MZal9?)(4(sS8x8tDFpvQ@FAXYOMP)0-b!v?|G!-0l&w6YA6Iy`+$KER7CJm( z{2!hLwuD!6ztruj8`I4XNIk4rOt0CcJ9sA3{Vf)Not@w_sIE<`3+%fLzOt^3U+?D) z*0P7j+ys20O(U>2-tWjuV5c|P82!e~pS8Vfr%p*^%h$d?9PHn?Pba{8ufu1AG20{G z`Lec`zo8Zw4`%()W0@d^7hdTK+Gm!(yXzB(*~jON1MTZ{TMw97e|7!apgmdpX>?>% zpO_w>qBy2o>}5GuZJQ(&f!vtRLq=vyUwu$oNfXm68PmHRk`ADfnBH>DNOAb;58}8k zLnKG0ER{Gc*eu!E?672e`;!uThg8Xw7x9udD>g~Y_D_;<1brly&pjkR$1RgA&si#2 zc5-Yz&{Zy$!|z z;CBZuFSY>RbMGe`0&Z90%i7-cEu&f6>lSpI)jrN)i<4~soBnA8+GqB!?}dDjlZ-Aq zg8h&6atF+;|CpZv+LN{KNRb{H)hDJWrYerHjq` zy^=9qKUF$_N@99dyARa`xvl*AqbDk<`t`?1nKsIuBcp33|DC6{{!g+p+o9u%HGu76 z(ZCs&vBU1x2NsR{7(ttTtEj7>&xvg9SYf(wnHIO3HhH4rha};X;V|$ic zgHtRTutG+r2IidBXh1Cuw92WL8W@P&R;~emR8n;f9Fu87H4SXNs8|CQM_9fKnVezK zfDJM-HQ;qtqXD%v(Dqz~G+=KK$Q2Ja=cTL(;TexS%sap9GOw^1#&@2e&wrR(lb^fv z18)L$iMLEIf@gBkpXX+?mv_J{nYStSFi(HiVct`VCA{E-bKErRX559^L!Az6TFP}P zJa7B z$f!Q|yFBs~$8`2Jr#aq6Q7{%EH!&Rsnp|KL9k=LGb?bAB4&yFPv9kMwPTe{wR%kK{JT z_0BcNV*(5KYx;EMhf*QD0cR!LNwH6O)?b_RBjX0xr~Mej@5|lA6SVN>{fS@2pNM_qMO`V=1^itw*~yy!mvfENbEO_u zET&)W0)GqgTv!a4XLXJ{8t|*>A%Hj6T?|+@hS1v*{}K?xoMT6Vd098xZUfvZ)dMhd zf4NO{SljEIBLMgKTRpfA_II++QNRzbHw4UVuj%_=tTB5?(0W#Xg44L5|5L9XXKnA- zu7#kzTAud-59-D~4=$@d{GBt|{*22jJ9f)`UzR<5<;??D_CG~)iWU7|-u}wXHFmnC zIHtRwVTtKksH<{g`YmK+#`MP5rQ@TC>6MJ>SJ40}iRpXZdy=IK zzDSBA>tu%U8f0d>)XNO3t(Uop^I1~Y>bxYscbWvV$(4kSxi6Xb`kv%S;XTQeKl>#i zwk8rme;=`M)IQONux#;_AKH@e)nf63XU-Cl-VVu+fmoto+cQhcV{I>VARI5IzfHBif_Y*=%Y#At%<{S`hlBP;-#-p`<-VJM z%hiwSqOd=JiiNyNY8vMzO^7Fw|AKF+B+xnKAwKZB0y9>)K1~9q9lniRo4C zKGbF8w({$bI(MZVRQ>v6XH=7Jqn!3w=cV;}pjZR=DHaWEM@`DrKr%8iHSqqPMgwYT zAmM%mHGm~zRp^z6+*Ymu{RfrRKzCGAbq(};tXKo?M_Duwftr-7fmCEZMYQUSos?aMRxvg9ShL0<&0Y_9*bqx$GRIGs*w(mmGs7bjRNJmDd2EG+&G@zCS zlAlyi16T*F3ccKYjTL9qrbF0g1I88sJ>L9PLaB zGwzq(5dZA$CiyVRUDBp-uq5cgILU=I-jcAS0Lk^B2#L|TY)R)uC6bnJ>Sfw>G0yCY z|CD^=XG>=F*)NGR+9!E(AXbvmK3*c`?UsbyS}Yl1WiFYLK3MGWPWriTDfhgzmjB&* zz%al6t-(#lxvg8lAPcqSNIbeE|oo_bbK|Z+e;zMbJ z`((`WPmYMe{>Dv)&qLT&%zmHCr@a`o_h48}&|dfP%>jRI*$Z&u%C4Y3)4!qCrQrDo z&NT^8zUMX};5)Og176&?C1{Ul(FJfw5(&yP+ds|e4eoY zH~s8RFy1904Z!|pf9(cXw*HV0Wyg5AYxA;)xx9G@75$$oa~uBclUWBHyJegEHxnF9x#CIp7o;KqWaK;N0D;$RTmOwKkpjx5rN8XSy}xA8Hnu z`SZR(Ha2rl*24Cic%N5z^BsJX_^l^~@Yi~1@%QmOGev?)*=9SRX7{fDCObrQH`{Q+ zi|nrkzq214GbBaAR^;`y{mBW_SCI9dZ6}wHi6k!!UPsRP(vMtw*OuHBXifI5$svQb zbtF5EYC}G`Q-hr2myk`Jy_+@nbD2KioCjHP{ENf?m+uK*RmlNcO#Q)pth+C?0n5e+ zdh_>i2lKJg?*sv6mbasNgZ-T_*$&vW=1RcK`VFV|2KzT%7Yw-9`F(&-O}z@3pO6LS zlQH+-f4(2Em+rp^*yW85*q>?Oc)-UtCIU{bB>{Y9aX-M!_T5ik0sY^d5)0UF!B8-t z?R{w|>m23f&hR;T^PcSj`)e?l1T5>%h;L=bc=gHw(|)t$01-TKN5<%GMm?q&@9z1mo=s0jOQVdF zIgc{_7&Q|4ivDIi>LJYN)uFU|r_NdqrE|j^l8bjb%=#MSaAVLmhc;~!9O`!_9b&dT zafmTAc6?jV$MMjDm5wi8uXEg;HO$d)Lqo?;rQaP2AANTCJg3BAf!!yEEz6%fjGuMT z;Z>@OL#pZgp58yp^ij2QKvJnHIl#1o9{3)7Ds2u}=OG&-=uPtJhNJ9x!M8Lc*6*b; zH{iOF_ucD*_T1jzU~O;XfIXl+-ugd)6Rf&{_P1 zj{uwA7J&VCpSKtAj>t2B4?dj*nA!fphWEgD^t!VLaLxWb!T7vgB^1eyKXZTmx9NcT zjcw)wE}ZWNShoJ?-(|;m^~wPrSZz!j!!UCU!wd<}S@S0Q%<}SdUbJBG^nn%$EIB}g zx-2&bTt`M`4rusSlLOSs0TmC)l~g@=v-~Z z8i={XqJb>bq+AW$LPn+r8f!^=sG0v?+4=uy0F`K9{D7HcReF6#ZY$S-y>?|aFbUOE zT?5`aiZwv8-4i&4nv|=7d&tPtK+{?p4XBj|uA>1|qJb5wS`k(0Rf^nJu7PekmDRvh zR8w^g_|#Ucffxx(9yp7dl&gV9$jH<{3q6en)Y8B$G=NGpF!1-n?5gy_YD+(N_HDb|2H$)bU)s7bjRc#e!r4YV`VXh1CuJVFCl%`~7_uc8_d zppvRiJIiXg0CMG{?$q6j_9DB=wsNoXyMAeP|~#5LmxViLZK zIP1Ed=s#jB@sYEYIKL^3i2EK&=(&XwzlVhq!ZzW=lH#p|d+=6b>FXUtw%cyPyvJ^0 zj^l1(mu(DTxHgvP?-ol)9AgODmyM02pLb6UXfTkVmx@ z&PSlPEqZ>e_WX^;a86rabJp^2KEY??xxZ8VyMB{Q%Z}%A@mBVb{x?@mopQtPashmKh=|4W9)p@^yT2Xfm73sH* ziVj;(g--FOQUn2%r(*zhJ>8Ewwqq?dIdl!>dwvyl?A3Bg>*rGHO}8bKZ^OkDp6x>| zyyQ&2QO{WO&7nm3ecKBXU(^n*ub9&@6GzZOuP zI}W9m+#N&JD;`gU7*3&HADK%vnYoNQiQKL}Iio>q=|ER3XBY-)fpdj`z{Y^T?$QN3 zyVfBP!J@5Ghz^S@6 zfX(U{1AgZn4LE%veD>$VbMJxO$5;#aTko4Q;Jo>x06$8DbD2kWxB~jW)ouXb&T0KX z%r?3JpEbI-yDiv1b9|TRhJnw=?B_wiPg?K+`}Oz=KEKxqbAjE$GzGA1d*{%RMQfpY z=8QY-SaJs2J!Y#mQc=mx83JTv=8Sc1H914A^9+Y}70MY^?f%*{ep2- z$+S^Ui}ZIjdZVAUTkiK#A6O~Y0M2%P9 zSU>c>^Z?7Kao`FQ~2TPJN-5z$p1G%kS1F@*2>Ke$EX+t#)6j&?PfbcZSxr052MFRtnk*R^; zjv5W9r2&C;g*5Q~OMRj$z2+jfm1`gYl~i2=H)PsSO#?-CiZu}PC8tJY4GbG$K&!k4 zy)xmyMF}Hl>}JEFfx*bg)WBw2jRw@xKp(pbX#m57Nz%AZ$74D!{}+#wP<%!)-vZhG zz5k2f?sU0-@gMz7m!bdnuPnU}`fvJ$Biq0K{cH1IUEu+5(sG zWoN}2DEP{v0f$a38W@g@ObvwFYc!yi1_pGls0R2|>72j^xvg9S$*8328n`dhhH4sk z(@n7ka5fF_y0BOdG0cpf#>o12MN*z6>;3i(c?_{v?)PzkpVWr-I~Qz#eY8)$ z!uv7w#yPVO+#h;9wU$7({nMgufa5az1Ae<7+Aq~=4eTj%EFnK>2l$d*E5IHPFu;FX zL<0Y2KCl8zZ?gW*%^eBuPdSvn0Ng%B0LDXS>?**2KEr1%Sqfr+{n^t+fSK)k%vk{Z z8-K?RFthxkz(nBRzJBmoQ=4O7DQvGXUZ#a|vASB!!Eo!NIA`F6EIDI2>bl(fX<^97 z%o#Tb>3C`8U{rDrMvy={fJ)|I;AiJ#2h6hOhxXCNW4rXnztt1sxfizJ?|($$D{IE# zUk^v)qt0x^kB{@j+lM&gd%GLqV~7O)h|K=n5;2*Lj~_su@row>XWb&T!nLX9c4pMz z3mvJ*Z#}7I3k8(csNU4_>wPJs&>>V}=ord{H;U@$>P)@y?Lb)==~2e-&XK+g1Ie}# z<|OTllXIC);4_S5MIt+I?*IDl?Y*TQS1e~lyV`@88CBX4aCqZl5Q9t?8~{w+a|3MF zqXuAR%u2Z17R02P7Fz+2cH9d%VcikH9+%+nt?uR51UXC8r#)b;gE-)&8G`{&8sZB0 zSXvm^psV%eR5?eRc=t zL~H&;@cFeLvlej4)K!2Bt)~Ds+TIVaZ2K;K%Ct~DbH>JjigSkhHI|%_jJhs2XPiYw zX3o&P>w%TSFc6Ur*)y zT0{BbbE$V0L#av6yHMxmHl{dN-;o)@7_xQ4+GP7*JpST)^YFBSYxtMdMueGFSE8+# zD^Y9h93p+EFA@844RP(sdLlA)6Y;rj1aZf8C*fk^Pnc~QM;MNX9=px~P&f2JAQlV&KYx2*7?r0{}0(I~MTFzAXUv{&9{q=FPxffS8vx zO#ot4@s=Tgx5c>vcHKP#aNmXN0S}4U1Gw3}Lx3k`rvP@CoD6vVd|1EVn@zy}orE#> z$ORW*zkk00;1R>qL4U8VgXaZ%Z)O8~O_#=?zHH24%XxhwXRKl zL<6WKXH=zobhIzchDbkm<=1CNp^~a!pIs-@Mma6A&fD8MQn3bv-&npkJx5K-)xaNQ zWNLsvOrrs{H1HJ-pb`yazAF-Ir+1XxnZ8h>Ya1a;^F+EuqmWJ)y80J{of6_=PLEIV!s<=nf(F$u0`-+9k6!me)dOTkL?%-ST>*1TSJ3q;Q6>m zJvV^0a#I_}06sJH6yQN4ZUFYYk^%Tq@>alFEk*+VdFTshzgGToz}`^{!1I5Z{y#51 z=^%UEHMzzLP`)$S8SKws(q_Pe&aDC5<*XrKW_t~xMMQ*G z5s^8&h$x&?L~IybM9{t@x=BCxZROTUxB5><7#3KC)=7UHi;hycYouvU>CFOZsk8QR z5ckE45+UF616(WD5-`2V#?5PjAs{X{GOP{Oca6Gi1-Q@gsen&B2m&l<7y>x3nIGWJ zac+RKh8qAr{A>^KNAHpu;Jc22AkKSzz6;{^S@%Yue7#a%z!9ROfW5mU10Lr$4lr}P zO#Z;%w{k8uQ5dJ`&CcBo_{-d%W%E&>zRQKzfFA^m0H5E9mtlZq_ZK&=?6@zN7i158 zX8cx_6~%j1_ERo5T%N2rH;|86a)ZuzX}9I(26JR&=7vcVkm_n+n6At8Wv;X4O`rR3 zt&s)Y5ws<)Iz5j5bLemX6ZHFc-vJG2bIi}WUi5pvW!Em!?1wx#>DbFtf6`W^q$ z^b!63a^d5i^ds^^KgMpO-+RoT@qvCXc;8_Vy}l{X^KByiZuj;`P1?yjb9~(CcVTgN z3H{!F*007o7>4D&$XZChFP*VAmwvZ+)|;b?Vc7YpwFBsP@50N4^t~owZ(zXHuOcvzLvK7+iOe>~`oXvH8_oa(H!+ zWZ||H$-7#)l6Be7B=ttVkbK^BNkaRQgWRqjxxsKUI!Y^)8^Vi4Aa*UE2ET)U@8t?& zCB4b!0>OmVAodvNS^y4Q76iVtGVAZSFa_A{3xYs>U#mudnf2>k^aK8f+3W{wIxzw8 zFr7nydFFco4}ZNL@XiJ80W;e_Z+HUu#}^a>4(N0QFth&eTZOFS`y})js4t1C2V!}K zF9tZP`6W=^E_@RhUuOF?SHj#aYtKeU5`ElPIycbqjE;5x+b_Buu;oo-$qnyVazm>r zEV;n}8JW4kcd8~gsCDhgep-ccLsh$eIv%;L{QBv3R8sZpr>AAwD5pbOSM(-#-E;m- z#TvkGuxOy|bQTTpkddi@)iX32P)h^dW>!lLxFfffYajxZR9yq-WZF12%J5 zG|&ebnHmU~tI>d38sN>VkOoW|H6+(0HzE%ns!zH^8<88%Hzp@a+L5=fcOh$9^dvVQ zvM0M3Hz$id8jwdPHzNH?>XT;!bjVG{@3Obd%gf#rk&%7*=f3RlcH!9p>(^#qbeNMp zX@Pt8(WZ;DC+rN#{*f1%Z7?)0yEG&&TQDak`~IDT>}K;av!`^(&%QY6O?G?-ZL-#4 zBXZc(#w6`a5pug~KUdh$TRONEd#*6O$)4|yf4&1eyNYQKoqQO~v+RH6E?~DgYXLLs zZ*{v4p2aop*9XAN@~3hp0{gkF3xMZLdJ0&0AqVg@n>~Q7Z9@T{`sN3C!bbS)u`s9F zz|QpVM*s1kzY9++0=)Z4E5Jv)*?{v|=Kh|Ai~;3;zC8fAj^Po&Et^XKzpr}+aOja8 zfMwe|fsPdVcrF)jRei3oI_JS`b?NJZU@KUxIMx@i#d@>(EV14m8JV$u;Q~#pS1Zo*=Zdp`pIeb^EI(0&m9p>HT2G3o?9Z`d6?{_A_Z-n$a~RN!@-_T>(8yLwy`ZM7I3 zr4_m+I=4?An78QvF#)he4;Vw}O*Th7UETrAlg#k32HdE7HfzibKKK~eGp*oyvZi0) z{+R859~c1q?c;eEaF;ib=R8RR_QvB50M>Qg2zd7xTfofrw`ZIN{dM;L0obyS7%;QG zuis~dF`3>%+GT?Jf9Ak>s2A$%f_bT}-SR>CMc=H!_%hpn5!6WGywV%!NUEOKM2l7^ z&JEZTmh*saOIUKlU}R+GhRsVgxk0Vm&}UhNa)Y7$D{|4B4wUx#Nz|Wn0o3Z;om5K3 zUaID*7^=m`?Nt2tAZoPhQp!LwgsOGBHFX{PK^9o0knfr;BI9m3ki6L@WR`v%^0lo# zX|?iO_KE&CvZn{eWKW%>mpyFJE?$qf%lMHxd-&rwc=78~PkF-v0(pD#Uh&Rx8vgCl_$jHnA z;j1(`K&>1wV0DFZKvlah=7Zc;emyi9l~nzD=zWzEX5es~HNmzaVXrKVtcq7-a=P6~#fPQiF-DVYAw6fA#P z3bu1t3Rc=91v74xf-OCojA8u_V=*giFugA}*h@28?4+G7_F#}L<|DMlUMAXNpYv@o zyDzrbxmtGEBqKX)l(8N5Th9)A^U@Y;ebyGcv&$B9v$Dlv9BeSWS2DJ=K?>GmObWJ6 z>UQ;c?#tNqQjaUPhM#;^a76aJSC}{*@-RKXm_u#IjPqvfNMBp9KmAxcS;l;G0Snt7 z1&moOg#3OARI3YdW^qMWQOb+Ha7$UA6C_4G)%jS;2c~zecggDYp$NvT;c^Zv3}-n}fVi z&MsI6>nGVlK9&R7?RS~-JG1^e0}!V%{tC#MQGkWn zdm+#F2V8FdrX1Mc(3y~JjzLb{37O$9xj74bp7@~%z_R6kp(Evg6vA&YA-gA?50F}gg40E%>ur?hr zoa~6YJ7N~Y ztg+BQYs@0X8WZMNW2CMP_HwWd)@6qccAm1qT%Xxs*J{~fIfk}akDoSJ;%OT!E6N6Q zpJsz$HEpo(Vb+-NPDczoZ-rsrR^O4^^UJL{Yl4o(Y5$+roTY}M0jz;xMlREr5k5W( zdQJA3+-I)WWS<$d7xWfN>jiBfUgN)#0VmdEjUSke4vdFGd63;(KxV`rET_N*w3j~= zmKR?FEaWx=@kuzL17K`L1Hj}`eZbi1>tKK7{PAlK;xF0D7BEJc0>)cg0VccF2aKJ9 z`AT@tU*UN2w@5!Z`WPzry;}A#qSycYi+6MY`uF$$)O)#k2t&6jj-kS*EHN||bxCdv z6(J)thW-lE#89=av80AqFossG-x+v-+*W>_(PXQ%gQ{O=bVfDlHp*%2Urdxc|K4?n zVh!MI-y;%GlX5kXg^WxM{N1L}fLa>P=MT4t^u;4fG- zkc^s?tAVq~$kc#tltu$;X&?&?pb`z}@8?h}&Y4k;^Y&M)d=BQa zFzaVq!+GRP`vLj1E?f7=mla+O;UOrZou(%%;tTmbPJ2j7LroWgv{6k2EXm6xE z9d=V;Yf`8m{UucHv>Ymb-(|`p<{EWu=0z%em55p}?=UrbKqPf=pD(pwU0=%hWHV~w z(kCSC%f>kA=U#p0B0S$G^|)el5f1O~0OG}sX{$iI7%)8_#G|c;;9Ny|lZ~H(mlr{P zaX3&H#KT*L_JDg}=71-ExCr9!eBZTzU7p_qTsy5hsPBAlBH#_%1_Cy;(g&P#ayQst zFV7u-eO~cNa9)JfWHUnHR`3ufQR6DfPH@-1sr`m7IIK9U|D}66UwwuE?-oOxd;yqDb5+>E0&z`2X$R;&M?_8 z9T#TK7@a8nzvli_CGSre9*_>8lAO``P*2O#W>N|D`%w)~a;R(j8c-cRV^n{q_hgUvPslN@`DC+} zS>%(U8^|w7U$b-b4S2sMeB$T6>VwZqYJ-ov@|8E^>eKAJ9`ngQACkyHKKbPJ-+xI- zKz-`s3`>gkg+y*wpPXTKNIK9J%Nbq%27#Dn?Kli@%G`Q@_Zq;M?RNtH?v-qep|_Pk zMuHr)bo3&?aSx|K_B#Xk!k4ZfhH2YP2kdV(3GftGxL)AULVW-yeCQ2$bG{$oPHE6zQGfWGKg{uJwYfPMZ|6Ge0FS7@8gRULB;YGu zIs#t51peN`$0-egJ@^d#4IeU47uaR}%SA^Pt%d5DGYV1^=M0N`EIGseuvAoXbH)H< zWafpVk{QlXqt)#m-rMQ$s<4x4~Vs(wH2hD;mfw8(lt?m?Pj4PdWXG|=q` ziv|WGBU1yLk7_iamInHyR!9RqMa{^n^vXeQPcJvG$K=19f?;m|i}QL0r%4BGp4_=S zbj$SS{!b^2^Ipu|2F^9PGY)d;NXYSBA#be>IrIgb8^mm{OFcNZ=7vAy0XHDm{Rr9p zKICp9$d^MPM;Sq8`tzm(^uN~<$bnvv-MNru_Lqx33HmrF7pG(o1v<0-yFSQ#r-KUf ze-+_!^Kp#Cieq2F8s zMbd$;*f}HSZUf`Thj_rkBVmx+#X;T!nVb;??d{$HCWl&rxrn$Y2XM*E-hi?7QvsLk zoemhQIT$cmSQ{|bZyIP{HlF>r)tmt19fz@|%XuuE%P86dSSb1c`Ak!=W{AAg3bLIE zU~FS>HN^#C`f6tOLW}vRiJ!f2njLe*oEz#r*wQ|Pd%nIcUAGZm-s`P4~Ri=~b@w=sK zNvX#b%o(LkU`!2$IRZPd4%$D3Lq5I@@GBCMwxR)u`4$4Wt`(y`!t!qU zfJyEdz*zha$UcnqSj_&M4F~-f#uY>Erv-9^P_F>mf2{*7yZ`P~nHI{OGgOOvQ~h!j z=ZpfjXDdXYuFK6CsmRF88J|u`$4hf>s*?Anl1@tpP|3Zis&<_*AGxjkI-_BZw1cW& zXLLk0RiE!U@SI`|2+hvah^&EOBMfNW*C0G+&2wI~VDa=3G)AK)L<9ms+XX3GFPy%u(N>wvAw|OskvZDXA{Bb zxVnO|gKG&U*24r(so#Wx1R%cKe`+6{HwJA%bpL?TlZIw!CchEYr?@?OX})tz&dL>fO#xW+bsj^uqG04 zw`K4-m-n}C1om6*YXF~^yAp8tK^MSXu9LtYW`BN~4*>Io;s@*m92B$%aASNe;GAy8 zfMxf;B(F>h)${!MiO}yRDZr9C7f7~BB_Q{>rzuHw5K`6pK3|XY2Th& ze~Cjm_O_wg&9kF6wzsENPwz}!=+T+FXKqjZ>SIS~54Wa-ecMrQwalrhOBzxIiM6Si zus@_{i`OK^c}(7z_JquD@s8{fR!VmD(58wxx)kk8)QvKoRF7+}UvH|CGrkTGfSkdz z&t+Zz6?L>Xh_S~X#R2xVCjkG}JqOlX)g7=8*!MXZff(4PR&&5R^qT?B|6>f;rbj8* z-(vR@fNOpT0{o`WEWnXn>;cQhNP070>kG!C;~_gRUL9+|-+{ru>wp|JB6d39dpoxR zo)WhcaL||?fR9MF1Mak84q&Fg9M|)pKMV3*z<9ZL>iG4qbJk|t+VGH00Il@6eiobj}81h4&@)W}waO|AAClE=wnf&_O`9@Z(~YyX+k|9I!4_xPbUKyUY{Ltu#iL8OrO%r3Zk%k& zTXTFYuQVoyH}b0~UrbKpx6X~>PximgA41f{P4jWQV5bM}a%(=Wdwm9eFl#ct;jA0Z zb#=lyj!p5=v$b&Uuv>io(Cz%oD=henM+NX`U(O@9tNwHSwH`+yJqB=C?=FCc_ZR|ssxRPo)5ijq^)Ce-IsfC&_5Yt$JyWcKf?6!!gG>roG+={_ObvKF(P%&|4YVz+kOrDW_RXwHFA}-Erri8~`dFto zpZ~@A{d$uzg)dQ&bU+`IFMQ?fkG{l_O@<$KO<9TBSIo}fUNju0#dO#LBLMHn_ zb{_~?zbE9@O6KZ6Y69mKon8%C7zLlBiECqEo{vRrW5C#s)_^VSEC34&>H)?g-hlQn z!yS;B*~u)fUxM?aH(^7JuTE@sLemh|_AimV@?%g_O@ zqGc78EBCw;;cLY)8Z%^x(IV7Ex#z0ak&zjr8@|xQXtiSWMKpj)&Q&erP4KGpTKZD@ zxmS;8VVx>QM`@*=g@t+SfN|kZA>^TqID@qTaYfk726CDsWUpS3lNf6btcL?THew89 zLs%a(GlTYchQBs&O@(Zn`)`ZNgmHGfC5X$yMuCto=K;n_biw>l?70PCe2xuZOy3Hy zaHA<;?8{HM|MM}BW#Tlw2~$Ye|F=!Rd{J^>JHVK`5#)Y}u)fUx7rrh#?#tx?WzWJ= z6vLVS|DQUSEteajJ}Ax&IL4A2ZlP|=%?`?gwk*sGVenD%8`EHBMA zwQamDwk^sQUlVVOJ;|`eoo?9*=YF;odg$0;+6H!8-<4?u-usdj2;2AU|DU!;CFwjty}a6KAU%NE+3cLgl$)CVwj8s-Xef-|)Dg5QDN zJH7_~AL(!yux#w3H{qP~AUEK{JAham(+TDVcl&eDJ_oKf&~vQ?V!hG+nvie40rklV zrvY0o-v(GH>I#_YKPDOn#sgm|0&Ed{A8_7b_#0vPUteIC-T&qfWygK>%MCG~73YSS zhAg?^BkH!?+@SyQ|FL%-P)%&>+aDECX%|GHHV#A7vim`W8 zjujO-R_qFPB^etk_Kpp)_lmvXw{o)2N1h>>5c0qGlC?5xW#P|vX7)Qf^XwBcM6$$19Ph6Br~mI6`&ECxjrXxvg=2r% zhN%8}kGq_#`uqOtVrP}#Ef4K7MfI2YTsBqp_xY&%9;$1yg&)^0QT=T=V!#L0-?Vo% zTB-WDW(|82r}`^>v&%x2WXj;t0jj_9mko}n{#FnE>7aVI!=-16QL4XT1EyS5{dIcM z%(VbTQK$PBnyLCb{NcHWs=uZBER+?bD2l(|K3es6U@wO+s=r0<-EOO@p#$AxwyXXI z+&0b|@_tfRpdN3?ZT*`yN!t4RHwTb44e#IlOQVb|I{f$4(%Qed{;O^cP(MV*27Mt# zYSn<{V!^8*V@9fj&~EA8rW ziwoD~^1iOkW$bn1#@4FAEniiU`>?7MH*KRG=dZNjTu**wo9=ne_V03!y_h$JJ+tf{ z%M^LdHm;VzUa3-$b1hexQ{}>wv`y!^f-;oVKb=+Cd#+&Bni4QB#;#sI7`IYwHqN=< z;|9(ty(1Op{D0MMC2a4>YzFROmjGOR)jr^<2`7M~>s|nM+IR%GeZ~@C*TubnL)KOT z4qb6ira8y8YSH9#Wj$eB%-Tt@z%^a+!8rf)2~C0Tj|~G}Rxc8`e#T zAbwTS9QbbkACQkQ|7-n9!gB#v-A4o0y*U%uM~?HCHh5zPan1c-BxjcC&gD|1fNsx- z6}xt*lSeHot)AgSg2L;Of*UzpmKJlwRTJ-3m`9+TIZd&+ghQIAmpGSp`)+v_%XjaHAGYfN8tdz>{RXfafe82t2yiAmDZGs6{sxb|-~B7_={yy|qw0>50Z(&l4SZ^k zH*oov?!XyO?167~OoZ};`A_@w5bERE(0br8AKNqot~|>Hxb*KN*j{u0`3k7dEYtOj zrnb60!|At3f71YR=vqA^f&_)0p)6?j45O|yLJMWfGw#Iq;A_0-!TZea#eW#khqvn1 zpFiDl5dUXG2>*M)82O6g?A%Eh0OMdc{&b%s@>QOMKK23DY|~ZC)}CXae)dLP0#0!L0zCBT6X2Tr<^yZ)zkzM07P9mS zY05!$pCC7UvW(&IE~48rCv-2X+0Jf7j&jcg>Vi>I&5JyXL~Ei*#=KNK32JHjU>N!poAgG<(l2gw4eE z!0IXTqO#bYjKJp*D2tvL-#!-EF9Nx481k;s$n0Qb*AB=fypX3=M|QD7PFjn{qtV{| zv-C~D_V$Gjw#O~^0W+31FxE6yApw^6@CN3S+5t1~+5qzd8Ua%d!g;edLHWY`WU6Y^M$3oOp@0{b%up4wZC!Lt1H( zYu-q5*jl||BMAz<;aPd2I`i1ns{O4firRJaIj{QLrPH=@|IDg(lIO(P}Lt_2b*CQ3qiER!%6t0hx@u9KvNZIj5a?Ul$o zDJ5yQPD|t)uSlqmcO;bmV+mF2wS>x-E}^=7lTZOaBvhpz5{mmOp+etFsL&@8YR+W| z6?Q;E$yQ6Kno}gy`t}m)L=6d5#acq8y>p}1-*=+|(%q2O@aLT+xvh0cWFg(mS)cz=HGr0ZcU#yoYS!T_~U8_ai?QTx$ruq4*;7hVcB@7QYMvmLG@% zrpli{UVRq%Iu9(rz8RQ$KNI;*Bjji2Fh4>5@{cx9Kk}~Vy=i|%LtNTmIdH&m!83&# z`)^Sx^Sn1bZ|G80w>R)*MZ94PIc%-oaEt_n-jJ^fQJvWva^?+(NCoQi21-unrq5%N zw*LN5$ExZx#PI%5U$Uj){h>Xo>(+q0gop-qkRr8eAc+Kp8YocBtO29?LlvX~O-uvN zN!t1~P^o%OHPD7^X}AUgTy<+8t+0p&;z^NOHIPh#LJe5Em^EOO29A*mG%*dlCTZ)} zfU|2(HPD`HX}AU!*Ve58s=SB>_K_mBYTyD13N=u;mRSQvX&{MIpdJkb=dAzzsu$v}RJP_4CfagOy^C;%eC)Y(-X*#BbxLzS&gHnH4;{G(|BBp#>6N)Q;Z?b9 z>CW8JDb=`IqpEQ=;+(l^$EtAC)>Y&Zu9xNJRW8nTY;4U**5u(Tw0_SvZI#Ma*>{nh zn|P9a)8;6fXIB!N=jb(dR)?o-%|74QR$lqIe)%l9FgNx0ZaQO7uSnGyXKy^wZO?-+ zK85zf`8zxO=mg_kt`(XB?B69CSYe6pHz@uMpHt{le>beZ==)CKiP2kttA51&I~Jb{ zafkEcfNx!B1zh1lIvk(owV-N=?ztVt8wE_P2xBsX<}L-kayvgfM=)WM5AYOgd_O{B z+8l@%EVTf*!Yqv695ou^Z|XG!_WFGj@(~_S@k>SFxr5JbhXSu#J{@>!`4PZ&-Ryxi z_dm0CrWUeXJDbFKqSFmTJfo0^XS^hbuGKU0)=}4s&@-C2tN-78{hY(==O3g3^?1gs zNeTRhW_$QSclPp$Ef4UHEf4eKFDdvX-;VK@2b|(BA3w`)`*xB4<#vsqZIi+~kG#YC zOitxj)_%aBsr!hp{Phv<`tT9|=lnyyRJ}BQ{gXTVk|S67R_jmm5kn61O%8A4E8bkq z?{2?a@LWdn7_+4GF!Bj!V!8T0u)aEUvWU`%3{WPDEH{el4yx4MYW8O(Y<72+v#G5$Mp z0>tmP9|?RfwJY%A9r(V5q>!2re^k&G__psxI3CS5P__JiFc_YFo3ijOj6vPns110| zuEK|b3lAy+9<{AYecE~8St^!k70Yw{U0W0mgzpX@XJfLXT<&yd2Ye6p;}a0J)=Ge3O!@2huJfX zy3TNGq^>|cp0U7pm9k3r7-itqaP9#$Toa!TpD{hG31o`=da?(dXC zl71;;k}UX>)2;X}7Yg$(vy1Z+E0*HpCza+ix|Zgn20HMwl8fu0hlrg@m zlxZYw)49%Q#?*os2TM*im-_NQ5`#$#swn%6Wyz@Qs@YCK9 ze;R|&HFUGYXW4FzstW7BtWy%WhvGZrOFdqUtZ~mtwOlIE0X*aE#S`EeUh(yyjouy+ z13atz3t+`Md~Tt_`J&L~Z;7-8j`5>_ZL3~`{Use)3T)B62C(pW*0l|S`WX4^B=Ckj zZ-GC3c?4Xe;UZwo{l6n;mg#y1#fo@_*mXubnTTf$B0-^NY^BYfVU%YCGTHKs+;opl zmCHPmw*LOvB(kRA_vz9#%E)rfuNu#!TC~nDX328lX;z_`onyq*e{gAVHx9PIWMA zz$gtwbj+p(a@P_^($=qmhh$B|HBh)yPBq}vRksHC=OP*yNs82}fjJ~7)WF%!W(^pn zfhk=~QUlva+WIx{l&opE2JE}$R0CCd=+;0$$)r3h^H5a#f1be2qnefep9$&Ps~VY5 zQlwT5M3SIT0~foQHDHtmW^^}64eTOm>({_bvZmo0aOja!4OH)~TLXLn5g!OAMQYVR z6bTA7aJ8pd14e0JPOofgAa^~_xrd~!UjuK+nucqjZ10?EU~ymF8jznC@qq|Zq*e_q zB|)JEZU&e&V3Ys^V=067cR{I!TffPebtp?t96b#RSEwr z|Bjmwj1i*>+TlD8E)9?m^hAC=8u@t`veg)5eiU*)!JK!(eEc|^r{VMz^f$LPMzu9RNCoN{%X>QYHIth@aRb!fyJ^h3_HiINOS3n(&hpCGh79=&SU%$j za>t9vOK$=5-L3=6tN#LKwwH#vU3mKvz{76}=8f!+^RgYtGX>VC;zt5AT^V4i_YWvP zOPd(SV;gsO0M2bQnY4X zpk`i}M=jv5+Q7`HdceE7Spx?Y$GLYj_rESU^SsZ}rfW_srEMOx?Easwwm!St|GQom zZ#WmC+Z*^PBHmy*NPXB^y}^+Lh2GG6Fj1X(Zk?RXty6M{x&rlh!=77~irn-$LDDu2 zZ?Fp?XKD7lK{)SP>!H||mR*4yy9Id(zE7T__Fy~^y@UE-iEXzG=V_yM3+C8-H2~Ky zJPEl}DDn?)2HD zy!3Bis>317Pmn)by5SZ@4s4w>LOV6!C^i z!$rKI5eW*tVf+ZQHyCx@P-kSeydk%Z-|9iq*56OJl&ooZKizSSGP3AU_1j3bXnmgJ z+8Es$pu$Bo;5aZ$seu5JwtfvnlQj+3z$uL~4AVeLm~IX5 zOGPx`5-Oqrjs%4om^#+10i!g~D9j`^(2u08Ujs2@O~W;CR-+8VG+;AHw+5URiD3A?Ooe|`}m+Sx7UN=!mOHdR%e=X#d~;j@#DO?zxK4?=2dFOow-7D zdlU`1*D@*hwYf8QzH&KkOtE5IzSx4?y@U+5%iNFb3~`HSXEoaQft=l#j*6($>8*rev3$QRh>5@1&z6Fo0 zp#I7vzJWNqF&5ZGHV9aA|L)T>wUFiaz2-E8|K1P#U;oW=KW_9~-JTIE*59<09JEzaS{ApW|CVxQ~AJFhW{&$2^$~BjBc@+*}r@X zvnVZ&nKN+%v*_+dX7tCc%eeGADoUU{2WXWGc4V%_NT5%T%Eb zGgW(^U|L+f#N0ib%G@gVijnz$U>Yv@z|5%nkvVbVBeSF4E9M?`pBWr_gNZ$PiP`bw z6jQ!JBIB`VA2W&H%XFEQsT0$ft22I%I^*nlM(2r3p^d0obRlr!@>%dcdCfLNwQSux z5!z5;+(%Lx_9u)FNnoLkjoTFn+;=g~gH}F-5iRf4-~`cp=f87@dDf&7!TaEQFM{%m zZodyaYf)urv%5=hZq1X;@H*>ZniZ@+DuadmqtZ`7KC@feL0nj0j8}2+fY9i&z^lX1 zgG-IS4fTH|z#i6r`;h`}+shT!*DOD1Zl)GY(=);%b$bRgN2G5mnH;)S&v;0JLeHo? zUtM2j&&Z)?+$I&M$1`%Isu#?yC`zMO2E|H`p8WM?>eWNKwQ4Z2YIawm#xJmirhQL%E88Bb89~W<*Uj`snZpu@~6&HzN@P=ZIqjIR)$0x+gu`b3au&S*H@Fu zEh|Xnmy1fN>UpKqz(*2h>2ZlXVWZ^J???$#a=e5u93-JC_Loqu<0bO2MG~s>774ZV zgoFyeC854OkVsc$>clkq_2$H=GtQo8$cqF)n|jC!J%p!{ATEFY0GK)?Xrp}!LYpHW zAn=?OWial5&tb{e;XBW%KP6#(suOO{%n`g3ebGb6Z+M%zz?yBKY6 zIW3{h4%oF0n4gvc%-qB0v=$!t2=TP_I99)WE~9!@^`f$KjHCE=YpWV zVy|yP-k}6$j_(4ddiOxq@FaRorWUgFC78s$Apf&x7)m&1O&_`lT^sOLH(xAp7YC28yL*DJYJeSn7d>op-;s>;ZsMbUn}4jXi9AWf`q zdm|}Qs|FM#DAd58b!H71^}A``dXv;Z8cAEf2Fh&6sRmk*Ee+Q|mpI)Tkk1wIfi0v+ ztr|E+f&Q5rZzD$vAy;4w*CzXlxRa;gDevZdh~n72bj14~3Su!9t-RRc*R zDAYiKEoKcEr2z%0Ks_3WI(3ibJKtxE1wLd4xjkhsRd~r(e)g8#pXU?nTJAf$_+SRR z$u%!GB;JAxXi|XN@u3j+W`Pa2^@1JOse2Lbn`2S#&xs=3)*gkqIqz*a_ZbB_yU0A; z*_$8Oed|)$cDIw+hx7Kc*CuUb$COyXe)zeNoiAC)R(4v!x_6Fa*V`Rp??jws=d4O$ z7oWPv4&SQ&-c6^^HF>)_C+#c88J*gjT@6xj(aD{z^As^xK^sZ44 z#?PPo6$+eiZ7Q%=_5Q%aDi#9P-2bEHk7ty!D8c)mD#2f89r$9UOY>X*l;PX^l;>L>tiZ3UT!|lZstWHq zpc?O)aCo^sLR(L>drrBYV)I+T71-1XFg)L zBR?*r1Ru5Cns56h5AQJcqq55U$I6by?>`NQ-MkF=(b?6& z-skWgvmJiVgSforLf}{9kgcMoLfr48FYx)lzlx5nEL;8vjAg75*9yimmX;j^E;g_n zjI9g}=mvab*c9M_t0RHqY@&eOI?n-a=rwa<%-W+mD_?hDuaHkRyx=( zR_-}7TN#m8u1r}nOu1x!fU;UhCuQIPf2CtBf91o_PRigsfl7~K!#7tvkO6+-gKw~@c0S%OxK-#RuG@`=N0VFrP5yD&l86NpSsxu@)aIWtpn5H_>0y% z37oL~32=cjH-V!@<1=-d`+r8xEYls^@hwreX9O%0@eH5CBAyXQfDB-fBcg%U3K0zqAVHx9HYv>- zFiHcx_-tu_Nt7q%rq2nI_J4N#{oAAJ%E{sQd(VX>OIDVcv-38**)t&D%)Z-b{1q%t)&{9HKTS=&AMI?-M841&}szm;G9SK#5 zlThQ@NvK|d5~{-}$#c)i5-Mn>MD9FaLOod|p&l)kP(PPQsJn|LREI?p%5AQMN{NtA zHa#R%Q+Ek<#7aWNo^zwZ7PwKnnz~U3Y}}|K4{K3QskNwCc5ak+8#n6Q5;v+_vK!^` z)s0HFkZe1v{@zVvp8GH7$yu7cdG0mZgMStlpX=oF4TttNEp0jSfCIp>T~mOWOK*Xx zV;_L!gT4SSzw{oMvcCZQd}ll`6)1Qf%R%rvxcXW)tTRc zlCyW9l)0>~Kz-hj%ic%Xl%%b{|1N^8X?XwLR*f>U=uou(?#MOW8eqikd)i$Q(SS1v z3N;XP)vN)duBjcbnWP51N!t1~FompXxCVA=lwp_#_?x;l;1nz31I4b3XuyR8g&G)q z!>j?LG*IcLNov54q^(~AGsv2TYal_R48t_=>7H&4$QO!epk#`O2HZ$csDY4MW(^pn z0q5J<(!kT;UF-y>-Ry4L1omjqKGxyXAy)ZC$xeH5l9ew!$9`yam0c5ai#_U;#!f!^ zgx%ZtC2QIGExTmp2lm$1bk=dmCpLIpI$NRf2e#L<*X+!}kJ;B1Z?b7_N$jxx32gto zvFzMe^VmqcFt&c_-t4_M{_N35ZP*J`0DCQX0$agh0ed=N4f}E1R`zl5E;favZ909c zb?&JvI(vPq^ZUlYc#O*39ATWg^`Ri(>j4XZds}P*ZkIO^xc9@;z&EZQ2d>?X2X17& z54i2(Wxz>|<-iR*djen2a01So76-?tc`c|~7K~TI7{TU+d|({=#~M6vig#rg_x>a) z5cpQ!8Ng?q7XTM;xe$2w8(hDDcMpg!KU56ZuH0eBS9m;UzBt1;`2jA$z<*AM0q^SD z33$`2KTv;~`+r8xEYltTQvI=R&v2S4;u$`vBAyXQf?Z{#sYrpmR&*(Sk#j)o09AcA39M87bePJl=4R(&m9WZPW3L0gu!f zXU{WyMk`=Up=})*jG>#FI0yL5=Pkf4E=jLlwscaf~e`UA4L z*p81QGe{AP4;{*1+M+M74V3_KET&J0)ZQC?gu>S zYENLrZBO9BcPatTinRmwwY&oPa_@QqYqo)^WzwSY&<0xs=L3&;e0nr+ztq#fE}j<9 zra$m43Tz#33*4SMy>jljtb(Bp0X zJ`C}$?}h?v?!V2;Of8tEX9T>_?HSAh5zmMxhpyE#l1WhL8P>1W^=0;q9D2qvQh|Cr zBe&hBdri{T-#_d8Mtz1D-ap%(Y^f?Eixx%i)Af6=TLXNUhz9nNBDHGZ0tpH=Q23o$ z14dnICy@%&qXF6XA#u6s^PZ%wUjr`hbE<*PWJ|*}Ffd)W2B=9Q8aPCX)T)6iBq-E? z{YSF~jM6|dsX#p%Sd?Cd$xWY6ByIf~a7)jr2D+0i4cEYsFCrS?MKquwMQYW+4H6V; zz~Qr514e1!0;xbf8u0Jg)+IN6zLB)`YoN}ToNAyq+0t+g4F9fM18MOh8aPIZ)T)8o zBq-EC*>7eI7^Q(LqyqJ5Ah%r){32=V*FgR6In_X4vZdh~82wAP24eS#XdsCcsZ|51 zBq-ECg`Z{(7^Q(5qykM$1Jp0|_pV<9jmVmYUlRvulwsI4ao8W-8c0hL(LgdOQmY0Y zlAurnl{3s5FiHcrNd=mi1}y$$R|7J#rr{bGtWkzx8kmsRn#xB}lp{q^cI>d=p?yXN zhYV{nW@Ko8KluR>4O}2aYSq9~5)^8nS|00v9>*~Ejpnd#G?i4KUJc}~rC?t5_paXu zII^bU8VJ!S!!QlV^Xt|?>`4&~Tp>kj)xb*<6l%cL!mI(KeBdFeKoiq|P5$g^pgCF7 za1D&oD8n!fOe?5c1N;^d4cs6_YSqA75)^7cQoyVMqcrf8RG^7zph&^&YQTrAX}AW) zYLsD^24-37)_{}P*rMB{NUa+9NPIXIBHQ$(n|1 zV7x{dhG}4ZQ4tNC7V&{pQlwT5d?7)h1{&C!HDHtm-jWK`qXFxcGCD3=M)!-B(PN@z z^oD2|{U=&RcU~!@$E=jmdsfP5$toG0xJpL*ua?ozSIg*#7#aOLMn<<ZjON$K=+rebddV6Y-8V)?&t4^?omR@|ywNiH<#HL_V!4c7v|L69 zt&q`wR>JoT1KmKS!JjG-c4h^i>F1%S(>f+E-s%bcTjAsR$jl+4K?HWTjcT3 zd4>T8Gc$pYxy=Li95Np`X7*&@KdU+5M{)O|{Je{Y z0QY;^8aUtFI>4G^%T$Y{do|Jc!^69wK8tU!e@L^wER&i5Ux{)6ju~eG99Z}g>`$1_ zS{CbT#Hy`u{BF-C0jK->08fi31gyFLWkoa3`z-D9e`3B1U2|DvXHJYP^IfDk==O%# zZ6eX~JW_zSFJv`ExcMa2-&kfRVl+M)mOlQ6{PG?dY zr8CVNr8BQQ(wSI~bVilS5t6p)Jg-yIL0!?=8+(0cV9&;y?UzGj)kd1E*yMcL+^}5)@CNG=zz=>|1KUjM1uU$u?XnS2zxJd40OwD!_SCGuP4(|VJf+)t zVBd~=fQ98H1XO|JueR9-n16E*@?EJ|3B2#Z7+}r)pCxCO=|1E6sl0B_NZT&r8E&Q2 zqSERa%}G$`88b_pJ;SK$30awJc}Cn0YsKJbYek>w)(V;2S`j+cTCshBwPN#1YsH|| z)`}wQtQGb5S}VGow^k_9tQB6LtQFTSZ4^&R+9<|WvQZ?t*eDj)u~FE2*(l1iuu*(% zWuw^J*+$Vcz(#SPtBoSj(?(IJxQ$}u4{OEz=hlj%*Q^yAk69}M6xIsaF>A$%Bi4#D zd#n{rc3LY`xx6N6o5uA-{qp22&DQlqyEA2={c-d^A?g=PCkH`$GJW!1;MjNNfg2Y} zh2O*b!{Q;nAkq=qvlP$D!2RzO1x~+d2mI$#9^iLg7h(T9i!T8_w`Tj7{*Ze2DcIZ#G==tC5$~6?Hbjiyx`7O9(*Yk6uUs!VQ?-k_ede+?E zWo)^^6N+$$1{dcp94W<(U0;s#NOI&}opIz+*O%w^M3v=gM>}v$+7#us6)nWQc=4NE zcIgG{v*`vK(B?SXyWDQ}(4uv0C>O&rv;Jm_o!`#-W$^4P=NoL5+0WVA8$PqDTuQm9 z(>9&H)sZ#T8E3C=^_cx_m^Wd-0ymgHZQHLVz?-l50;d%30qilM7VxT<^?=Vm!1?bs zc|<_GwI9BR{Z( zrz^0}hS|Vf>n{Vo;qe#n+TVP@Sl`Fh}EzaX|yx(Id(Zr6X2Nr=MJ(L!S$pLraECqu*AUNdIg;k(|lx`!>7t@f9#fZzw|&BRUh85suw*{+Ovn8Y5Api~Jg0a?D1W`OE^r_3 z4!{$=M*@4sJ7D&7*{F!~g%ubF=n_ssJ?i$CZat0CO z4GIzzdc&W(M0Mt|8aW%Qv9F%G0`+*qz%(a>%6})Co2DBN*>N& zng-`#hYq)3i@O$Nch$0DS1l^YZuPcce@)E8&Z(BcbjkS4ymffXY@PLr`L*U1Q>yH9 zrd;R8%$+w67*#I)>St;M=gHF)NWnf-uK4U|NY2u1dBf&88=*iie7ur8RCUzV_O$_8NIB<34FJEjXr0f z{QZeHf%87aws>?f3+25I9{@b9{&L`eeaXPrYHb4+*5B$IyP$qg`&|QmS!We+@4Lr< ztG;{>TgE>hE2@1{#qy4c9=BMj3`_U|}=e8gSYp;seQ~NUa)pNPzlq%vZr7E~eDRL-d!3H)?F%h?J8~lyMt6Ztd&&$f{`+3q|zZ%9i{#Q zt);yECkdZ%Lqb(iNaVY=OXPjyB=QG4Bve~oBA<3kA|LTtB9|7FQd5dasWl~~>%B8I zlKcCQ-uf8g4QbumL0igGbAaU;XMy=?w$PTyZ#Gxs0mtpBK3Yjp+c@rK;if8BSE8tB{JtO27mP^N=PYM?1eTfYV( z$eM<0V5>$MhH2n+H{BXwj)-W$uA_(soJmlqfuK%i4H%^X$IjW(K&JpJu1Z;JuBy8Y zXA@z|Np}_I0=+`B}L&{g>0^3yJdM|O{#*eY%_yHDNi(#MH6^$OV6XUM2H?N#wJsTyl z`(l#WB6c^}y2qZdfepT}JvZj%M%OFIQ2|!mC6c!3jN5kUrmpDhjoW^C={AfFXysNI z#sP=7ZVOy#AHMh8uk#9sf3d>%px@f8fOzB9M}SKfN&tS?XbbR&;3dF+9i0K}wRr@v z`>y)Hd#v5y_*9E#ziQz{ZZJ;UM!p94#0o1IH+|xp5Af_06M#3~!}pvovR@4GC(by| zJLv2fh}X1g4t#D*3gjcqKQQTH<;eR4yEfw4yUK5jH18tp>*NK|wG4RH(nY{&eTM>vmA3-cEYH4ArWUgNzBh?yeL4i`_6%O^ zS)WjH=vw<+BS}!`85aZ9^=0mJ&0(MGjK1m$)YIp>G%bWq4jWES>NSEs7&4OH({wbQ z5*kWZ{5y;e@flC&YZO6$A1$YQUY|@~FFuvt;4+QAQ*S!GrPK`i;*J^gio_Xo2iXjI zcE{@-jCB1Np2a>t;!>6fI8#sc}8gd1ZY#c@vndf zeX0d*aD%NQfX`f;0=(`lw&}xOZi0CD?l|D__0|E88@n3#&#$?_`@$yyzg`psoDeSs z_U!Hq$D`Q>s+MM_s)I)~TfZDQf2F+8W*2tz06x+T-_vecG6dpFP6h#AE7}tH#lq^q zuj*02Yg*5Me1!Qs9Q+H8w`V^KX!GAWI|EldUlX`fa!FwJ;C|SjW_c}wGPPiup3!BH zZqIO1h+JoEA&0KjGmep<&@=J{tLw|`89DTfL!<)rct&o!PxqLlt-pWPagh29F}#1) zmu#sjBa0SA@6+`ds#^opCJ_znAVq4`KoSWGHBexPSp!C0Yb!_v>d`>niq#ak>GPbV ztzQF`hUQcQZOE2}Yhd9h-5QW@7STXFDN?Hjl1Wgg0qYR628`0cF;angG!PP2j>%1* z(Zki>yXo{dT^Om(ID6L))Rm<$UQb@WFplr?;(+B%Lx7o<(~*}g0_HDA1Iv4@Kz<-M?Hb#p}hMc3+_=+*HdA9ALZHs#?vtyl)&;Y4lrI%zOorG zqXP5p?Z|W)sEVpq&UUmrf zr&-?AQJGrE@_R+|Qd)Bi_W$zVS;v2m)9o3I*gMjnl0(<(85txf^bC58*)xptj4z}D z^>_v)z3fKKyXr=H-*uyoJa;Sj`nwy|p@4+?QcOaPaFS5(-6YglFA0_5E8!!$N~k&g zCDgqT33Y9(grX)&s5uc5>QcCbT0cTU73?dahI>n>$5kcNJW4`Qhux@olijEyE^d_5 zty&ZxRg01ju0_R8uSNNvtVIm>cDG*=>EO`g=ExXM^5`k+U>= z&jtzG&*zTNzIwLq1x(e81b+BuJ+Qp%5n$@-W#sL*kY6A>HM)ZFXeDsku}#2~>uhA( zX2`+lm3p_Z)`xHOpHwF7v$4;t#q0*`Qq$bbEvRhRF3q-f;C{YxRaQ zBq;QT?&FE-%;UdvIR1Nrx&rliLoRzyq9;jP|21_eS<~=-rF9x*WYM8$ztWybx-~#0 zi)g@dqKF0@Nl>VP-VtUE81?(8Gi$&o4LDBEmIfN!Kgd>`d5Cq*m&lHuz_V2xPqJGglG*lcF0u2IZm^z%@39xJ zJz`sBykJW#c*l0{`H5ZJ?;HD9=udX%fZuHIZ@*c3=`Xfz>F@0FuIa4B)aPsqpIfYB zo>Q!qUjn<_C6?_%N3x~vO=S1_4rCj=>B)BA)t9BKhp{^&=dk_jtYixh+rr+OvzHxq z{~&vbq-{EVt1h$D6`j4lReILHWY`4<5q$P440W3Faer63(8S*K_+kC% z-t!02U3LtnUvC&n_xBh^cepZyF4;Voe&4q*UDvG(y4B8$9vR2K67p=^Fj3;MWU3Hs?@73pT}ooS1C>a(BgDAL7n? zoq+RyE&zOG{4K~=p0*sg{<2cQ!Zx@0)WtAXE@iAOjHRpWE(cy(@Eq{Lfc!Au=}Vh3 zz_&X%0hbCY3*5G`EpVMb_hJ9@U(5y;=I;|92=%dh;x*unYb?Mst$JDlM{mCa>#ylE z30Si{`vsX=$nyK%B<{y`SfblA2v+jw6^l=C#ka6DT$IP=ceSZyDBSHtf91Va#q%kucXXVtb(%fxU$OmZyc1pHx*ZQ zI$2cN*}t&z>>yj^lzKMGq}$fYUi)p78EJM(hrnV=_vBK_xg9GiZ$EZX&TL&*X&LFM zyb{(#8OeJq9V+-K^Q>*9oORAm*<))twMsiVN%H(Uiivn>U9R8_(rA3&ML>98h=2cFAJ|fn2YBY-D9A^c|MCk%;dnb%c@LaF5yyW&XzvN0;9sH! zaNm-bVSCN;S}e)bf@yk2m*u)WBS0zQ8C%GqYxRs{Bq;QZe9P4JW%i65dd4AAfqFb6 zx80|EOw!ihKkK+$eTEp`KkG}jRF#oMi=y}GdaTr~0qT~B26m7lwQ3-V1ce$X5N+0g zQPGPVTtzQGqF*(&hd$OhB8tC`8ZVm7^MKrLF6sc7M7f4X3 zfx@w74H%_?BvOHTG;k(8X-jVUyeDbv*MQ64In_XCvZdh~7`R@y1_JJhXy6bjQmY28 zkf2Zl_Up_VFiHc-qyqJ5Ah%r)d?IP<*MQsloNAyu+0t+g4B4bx15S5EG@u|wYSq9E z5)^8{VWU|CMrq&zsX!Ccz&Db%eht*wlv54#CR-Y=f#F+pYk)s5qJd+iNUa*UO@cxV zl-+FBfKeK_LMqV2H1Lb0tzQH6x8zg`Xe0~NNJ zHDHtmZjcJptASj$Y*&Bp`ZdsqtZ8`PXplx3hV_kx?b59Q{*{OZl1Y(THSmxGg&L^5 z)2sobG;o_#powX~Vpn!GAR}uUu7SZCWf-P`2?@G2;B-Yq0~bhDB-*<^wlKkyA8WpUYFlG* zI;y*^3AiBgo0B`N{$jPZHQh*1*w(B(Vs2}UYHQjhsw+@WTeE3n8k3to77BIRCiMIV zug*AoV|l4g);e{qT9_de%*Vnj%Omfr2b{Lc1DJQhcX2by;TX?{{QhYVh*Nvo0S}+o z99Z6_I&%7E@pdpD563HavVr+-m_1RzRQ^}MOaQ)5mEY$K^Qp-{dI0lXkf~%(h%=uW zBX=qQtXeeRaYH?ujK}+~FwCbGP^AHK_gcvPN+37<4f~6=jRe*#-~MQ(7P7SSCh`1- z=PBKuL0uE^j8JmuT0J9@1cjb)@tC^4%wu_TIF@(Dadidi@r*7t{A9W5Q}={AZPS>K zEh34Wr8%3Ajq}6ycDNjQ@p5Et4RYjmWzTCM`3(Md*mYS$Q9BsA7TDAo8s}c{SGYO z+yLA6*Da9$2;P4_UGTp1f`aH3ZT-<-QM%UqpIvTkpP74wED za@bnEVG9Wgz2VhqqB`?@Y&n~cZS5I#1?usJ+|+lc%H?1*;2EJZ4YrrTC?6{IG4Sd-&kS*410J|opA3OU*Fgs|_2sY#1IQDbJ zDeU|OGuX$C=CL;%|6<$bS;2OH9K-&Ru4n0Go7s>4+u88)JJ{m(+gL|xGy7Gso;|dG z1$%$`Ja){saMp5vC$`zR+U)9gw(PAD7Z|tBvzhik{1^*a59ZqS<;*PmJIsK|#n|*d zQg-N6KQ^*lAiH$?KsMm2I&IVGTRn7LopJX1R(+%+VQv@AYbDk4>^%+hn_ZfS@4xoy zJs;xT2QCEuJ!Tm&*B|F!3yf7l{8-d3VA)xm@2$u9ScrSvp9TE>Pyt}!@gxl|4fC7z zxzimu&Fcwp-EH+?zO;sSIsorZ3*zSZS-b$f>ViOBD! zE9B6%dd5o<6nchhin_kc*Uve;ett+QP|x-AzT`ekxBP)jvyXk4OSStmYflVhF3%jy zu*Zfmhf9uR_)cRP?>FO_twkc3%RMJE@0v|z+%8XJrgfgd^e;J+8C-M*bFs}d=IG$b z%-)k@7}ubFOpnfOm|d~;n2ig{Gw(XvFx9ta(D!cLr(2|*qwPYk)811*&`eD`rj(O2 z6FspJb2G9v^CoXk=DxHKv+$PsdpC`~)!TQ-S(>B1)h8Rz!8|J!iYtKE97q5jt~>!8 zl0d;+Umj8Rz|m*U!1_Dfu)Mb+84!;xbP+hs@c^);$1GsY_D!|;&D{v|)I1Ni27hc9 zI3IYH&tu@T<%@uS_zjc*zueXc_{OC&z_Sw`!v3aKx(|e9|xpy-$zcABuRxI}vYqOAcGBH(1_N z*NM;@TBH)ynfq3A*0-8LDo~F%OmOyPsJcy<%^f_MR-HVUjjJ0mu3Z@BhhPA1t zS=NRLp4*k#RJ1?i(SH#0z4>rv#Pu*{-uVfPJSm*9iyFtA?;XatUJqvmb`NLD)tSUJ zxjmJ!-!+@@2%X2sAI@Y#ijHNzFj`B-~%6v76BHnuW0BE`)k^D8Su!;lYxcXN5A|H^;hn(HTc4`;1npo=&i}H zz9oxuc0Q@&4(of3ECTCmmM?jjc}`|&w>3{oWAA;b#>eT}hvxmZfB$XqPnsGF^F((W z&72i!qoc?nYHg#pkf5-Qe)Y)QMjO@Vv-YvN0`;`fx$gcKNn3xvr{xp%0p{TT7unMA zeoxPrA{uxsqJgEPNUa*!L4raJynAZafKeLQ_$*r*sJ^qgXKwmbd9F^of0o}VB}seS zt7EzU~S^~!IskTZ1}%cL%UAUL_BVH^~w|{lg8nZ-?tQ?1UUI z7(Z0~CdL&9k+)1i?jqR!v>-0b-*OF(ugTbmym&V9z*)%Ox*`|J&{6>0mT$YE%0`?ipvu&phw5wDp?(ciP%&UH>Q6zU$g1JO8iRFD#?K==O#*v1`K}N`?Oy&Wf&7nV!qb0U zK`O6jC8hReNT}BLCDf-Y66)nu3DxbXgnDHmrK%N`%1>30QgdoasS6FH)Ro54A?cYK z!RIUczp|?Vj;v|820}E-FiZpTKe{y#`%9$%=n5%Ps|H?@ zpil#@8DTDT=aFwe)>P2Zs#% zr@8k_OBd0=4N|054ZI~mp#~&*Z2q~NH(w{`@H+V^sX#p%Xy99ni`!d_i+fNI$oO=Z~uB}4K`N^f+&K|Y7p8M)@4nt~l zZA>KGMwUCboj`A>+qC~uW^k{*>jE^3^WSy; zYkjB(taW>X(;pFU_(%?0t2bC#s_R7P4Za14>dbwpIqO5sTToqrdc5K4!UU%G=LAMp zWG}P-_&(!ZM7^`4jr5<2x{dO>^o@*KBJJHOm-HVyM(z#5##xt1; zb7wMd`_5-tJXywEij85SJT@{v(zh`&iMtt#MG4F@3J+4N4KaAOuI;d`Fu5iuV1JFytY>fU}4*N<_C_`6vpEv z?O_~Yq2o1xGfMaZw|*Z7EaSHVH<|MhI9OQ&yhU-LC~%!BXJP%gUoV0Gd^`gz%zxJK z0I2@}@6S*lE4^{Nd(itE5D&kP9Cu_J#2W-P2i7cqtF`(}Ql0mv=MC42>h=b?tw{fo zosIgiwR(dy2@1U-$d;(i>w8Wrg+mA8nvejoe!YD=Nmz{ z+Blg`o<5gWoLfR4tQ1R6t+s_8zF-eMxoRS<>~e%&B2m(|9h2#$fl9jJ%^h@2un^!GY++!{@=uX7$uzworMPZypq`6dH@FlN@dl0rh2AjL-s}xV z^{X~2o-J?4ZTHvuk+k*SUyC7Y8s4vZR-=q8ztKeRuPrX4TLb)O5e>MN5Ya$$5)^7+ zW=XRKjM9M2AzKS7XL;5yVjo`n1qQ?BqGIn&AlkT?L$xh_j_9Zz?t=G2ykG=DN zYTA4Me?UY*h9aVZ0-_?yR1t*&OTcJms@|F1i@ zE$6vyG3r1S=eGRomUu<_>}e?f-7CkrZIKa z(Ae`WKofg+K%JZn^}CHg^G)NR4jKuynJ?76>j8~<(_%R#w*4-)R$#6s{s2CcAD;y0 z`3Jvu19L+$L0_PW!{dPFUmFW`_#mKhHtiYxCWgR{`Ah@;mGS>RoC}I^?ZABm#92?M z`?LhQ@ODk0G1r~2|0w;n-Tv=>UnUon_nH_r{%ev$sLLt(yG(Al=%_q5;MEv%gJC22 zW-H7Mw#Z1&4M7fwI^DQu`Nlo18p}ISMQ*?zw{^#wwsXg3`?+H-9o_i`0q$5{usbH4 z>W(#xbjQ9gcgM!Ab;m-I-T97t-0{>@_msNF-1$RKy7ME_+_B^|cWl~mcg*y#JJxr* zJ9ciBJGOMHJBD%HvFcXtSiQ$?*tUIcSY)Id79Hq@5q;b+!%#PD_BuDr=8PNG=Z71X zUf&%HaCgU^wsk*^+^!tC!ORiurRB>Fcwa^e z%Lmvo)RZ6d!ObI2ahkYGIY~LGoFH)$ClQb3c$LiK zEFU(R^Hgslr^I6>$G7!T&i7Uc9LI;-IDTsmbDne3IG4U>aNZ-gE6?-zyS9;cw0h6u zAGKjWm}67rj60ZX-hVWlyMNCo8Q2%^Jr4A*V0iDqv&%AIFOZ!BdPoqw_aIJi0@xSD ztO2@C!E~U<@j3$C=T|nE^Kuva1m@U~g?ewo_Juq!-!r{KCeY^FY{A@rr{zO|PBvW( z^pS@vfp!=f3$)dIcyGebMnS-STMxF^f7D9g58eN+(~80NCv@}$_YT~#8wm8A^ZkH! z?dcBm%v$jGp|)3w_AHWxGO@Z+JdYpuRh~0~KQQEs5nc>AV-7OXbH=H*x}2d^&Y0Ft zt(+0C?i~Bw>2vIj4KA^3&B{nC!{EP`x9&scalu)OZr~PAq_N`+K^!xYC{HQsC8Ux9q*FFk7>)0X60L=4rj|l?0SNIm7 zYm6X(HnPnFx~K-!)8o$qdmr0_K*xH|0{Ypl`@lcC|M{cZgZ>IVwg%`3n_WPEjNS(H z#-)pa-gLzZXli?{egCphIdeuBS9#9BneJasM4PVgdR!_p(sRZ;KY4%YuE&-0dfYC5 zc?YVv9_Ko>18yJD0XO&Vh!3CK314H;1y8c+hM%0+1LwZ)h4VKC;ME-ZZGuwdCLhtoC@HsU7e^?7y7A=X_BQ ztW?d1`!DTBIdYHH%Nchb1%a44+wdjGA!)@eKn%{?Fa+qW(_oI7^ePV610yy8ZF(JQ zyRAvU-lSF{(9NDt13LL=51^B}HV68Y!vWy`rj+ZxOgZD}fMy^jdm5$y{h*N^h~e8G zI0Kz=k_~jG~Pnk^q8x9@{w*Thmqd@z3!h1(# zOWp(foIZI#pEQE^qEK_jSngjIDre4^-9dTIAPg9;QJhDct}tgjL`HhfXxv`jU%H%8 z&YW=vb)brzQPHl`8FY~U?yARU{ZUQL$7d%}+9<;!<8`{Zos}~XT$O)tvBv|`{T>Od6?RJ8K}%RcHd&=b|voPh{R8=5f?+fO+Ih58KV0|lr_ zg$#T_Mmhs+`|23bih;MN11lK=_4=vHKme+#IRgtQZD__o+(6|F1e-H3@DMerkbz=k zq%*)8pkqKQ28vJzRx$<}3{;na0jQ?t3@oCwp&0`Sfyx=+S7Bh_DQZ$710~2vXMp{W zjsdM0_<}l6B?A?!*axc1Kp?8AIRjCYHZ)^k{ZQo$*fU)pc!`=+$bkM}`8LxT;0@6+ zpcMnfr~@k*15Jji%fK*HQ*#EEQ`*psfuvyN3}8&}MtF;wRLFqgFvSdX3eqv46$2%x z11lK=PQmIjFap)ooPkx8HZ)@(Wu$Tj3coRo3l*Uz6*6EvTrmUPM(7yOiUIwR@(xtV z0H0lv#)e#w+p4bGmiuCb7ZmVWs0;;Jw1M4VlXvV;v@yZ#%y%-oMMolVYz+$Xo2KtWEF`yL# z#^cpu01M4ySEP?8a$7Y6lTl608Q4T=Lo)^rgeYeqr40iEC8$Y-3|LK2%)r2jItH|2 zz$`>91{U90#jZ%7cF1kj3`|2cHD@51(uQUX91c~^0OrBKfc_-;uc43uYh{pdy_MkiPgLw^cJR6V=q5f$fwwG-E(Gje!A21_lhLFfd??jC2Nqrs^2b ziUF%>m68D*xviRkIjE-Q4D6<~p&0`wW+-O>ug$=K@pJ|T9FURDz{oHi16na)J)=@G z&>p$1nt}PKrsfRnr?jCN1L?DsGZ5T@fdR9b3=B9TBb|YwHP?E;HRV_ zeL5qzRWlHYYHH5FAxayXF+fBpXP~ed0|OS}3=FhDMmhr%=ja&FiUEfRwHWxvJCWAD` z&A>`jQ*#DRQQFXqfqqfS8Axfwz<_Ne0|Q>jNM~TyA{_%-G2pgXEe2|`#`#yI&uQfL zyfW`QYk(%WPWd0a?<{qxyfZH;e9sx_5m|^o_v6!^afmrRbz^$A2R7veeD9c9G<;q^ ze>2n@7eQUG3)Geqp*DOd9q)(&nTgjb|b@G|-D zzM@PlwwH5@@&5<0nEs5dWwCNEO%=YIhV<}v`NPmC8^At4WG~Q|g#*--*zmj5dzMExfAk;DssNd)VjpbPaJ*9a|psRbrcg+-feh2NpH@gNjKYJ9=Sdtyk z{JqzK##UmWy)xUo)Dgb><=a1?|A>OIz)l<(3N${bG0^<^AHee1Br(+4KcJ4Z0n1~v z-$Og)_i4T2@BUmSwo`ZMKXI4*{u7`7d{b?j{;keB{_Lm!R~D~fi1jrYVtpdoT!pbd z6&dNV{@qGltk){m?^-4AKozkb`(~7i#nni~Zq-f2aJy8@zELVRsBtRBw@<~ehH^cn zVJe0jr(!Ah4r2UW2eB0XK@4Xf#IR!rFs!#TMjUd%>>XXPlp(HI;bd0~k9NiI3|EZE zcg0fnxnfw5D~9)T#rQ{DFnr|!40k?=5%UjXaqA9Z!AB2bS8g4|a4Z#jZLn-To_c{yO{#+UHup<>%%@ zJH?+_YyR#-W#TJ!HzFgFIcAtmkTKVs;di<^@s;T+-T?D0#GK~F+i3;D_6}w(J1DFK^ z0|lr_g$#T_Mmhs+*XbD0>Nw&p>cC3IK)vpn{m8f3ck73 z7Cd57JZ?RGG5$O*1b^53AAEdPXS~3~1MeDG7r%0_D&BqPGxoYOGWPN4vuxS2+faa{R0m}z{dkgGTf1|ek-N(zsVCrs8KR^AW z)j5~_Q&-uyI_oHNKD>Un@*KdoWXJ(8(IzX*0s7nI{Xx$GyzTP;>&}PEc|Kf>I#5Lp za6fA+iNfq8gX=evG#=+52@yL;HZ^Z7X~B1p9FR4V3_j){=~UN2vLf47GB4O#a%_^7 zWZTW!61!8iB*PAxN$O|Ukhokhl4RvqlLV|bl)P>WS!xMo0=SmLHIX0Jp|DWSw&fAyR7SvCB zJ`iYne{jaeg8p>>kq-LriNif$Z&VBFqc!&dJG;d~pcmcj1N4VUD}Y|POXc|N6L2J3PIC5p zrE&BY5S-$BIUGAr8OJX(m$Q1zbZ5{+~f4`^nlZ0*(1)LeSi6=*g4?g0lBB@ z;4=p&>hg?$bIQ=q2wq z0v*0=JkX1Cmja#tVjIvl;jutJc@qNkFDc3=Nrexj)c3ILTpx?Jj0J_VIfk2D1oPZvfFc|11yOscbWn*`sss64y_;(+# zTsa`+u<{&W&oqy$2yL>$9AKO(?+wtG+Ha z2G!JjJT#utMi~alb7!(Bye@X}m~sY!n=%{+eL+nsWWel*Vg`C0)iI#ec&MR3Ee0lw zA7@siPb_kKQkn74dT8ei{tw1Oy^hH{Z-v6SHKYe*;s4=Mlba7o^Wcr;iPi37M=<|37sd)W6G&8%{Z;JXYc^46)Kd zB;WBA#!4S#q#rLt9M{E4tzu=X6KciEjVaD}MfzMsZZ9koE6L*mvV{Eyu~N}EWN zhvqAcpQKl0xk55TmW64MZ`b!g^JV!!6E`_PlZAS%i0J+_or{NZzAfG$%%uQ!$U4V@A7;TrKi_u!e=o_d5Rh`rM%2Kfg7gMqHbE#Onv#D6S ztW+#Vnu>X3rDE^JsTfA2VjhxItS~(l;|o)kQiVZrSiuIPIdSuFfcTSlYZTg!V4D&2!jBX)DF_ygQ-feU^CoF7Q`{7~3JBEY~ z4;w?Sl`L1#H(97L62smzA5&shknzsOP}A4vfiv5qxiDr<84q>4(NORCsdWBy6xwpK zPs_v@YPTArI6{plB(=)o1PLuD>!l1a!i^zDyhJW4j1l^T{FkH02%bb2BeaSU#i#>S z#fSoYF=aW=I~$qHx?N>5Os)Qkb6g`W7{*kO9Li#SC;h ztz$qd21-x|Rx$>h&Zx`42vk#Z23Aqp(2RkU9OVq)OwY9`LQN`U!1%0U2D)YI7|@CV z{Tz7*Rx$=$klU*Bz!+3ha|YrmZD_{84w-TWf~^>ig}$IB6*6FUPB8<$&g&S^iUGq5 zYB4ZpnJc@XepU9(M$7%j_3h_#(i+EJVc=5TA?c$YhPKrHk#Nq=5XT=w*oe-y`Z4l@6UMBukeVo{A zdwp^37k$Kiqc4k#I(!s&UV26RdgCT>GP}086F1t|`&JGAgCnN;C$IeOUt^go`!I65 z;?IYEc}d>E>dk|A{ZR_8^Z#)94)mymTR^Wn-y3MMP|x3p;SCt=(xoKUJB--(bspe<6h97!{q%y2Tfc7_2#EQ)7O`2 zH3Rq)a9|8bf6&i|`(Ba%UpEh; zobw=zugW`6#c|N$g-Jxb$xfoq+atv7p9B%O@B*=Y#wFr(@_C|W<2=HHbDcP~?=rFP z*A3$C*Jnh6%@<;9>_?*Cq<6&luO&p1Uk%AVvs#kg%Pl0mS6NB~S8Gbr5{xAMLkuOc zTl6Hc`R|F(r+*Niw$zc-&u%EmFtU_v;~Prs+dn1tS3N_x&dng)$BBq_U3U|+7bX!x z__x#H1R_`T#xu3LEIx4-SEtN{u08>FCyl(LR;y1=bf74Cl7d z*SCCPXQeTVEY@Lb!1`Lt76EN;19Qw*#{fqE&ZWW_%zqE>DVcX0-cvI2ZXXbX>HZIT zaR>ObtJOQ8>GkKtrGoXXJ@*A@$yY-zHRoP^vmV%eeeQz(dNAD)*oSkuKvUb_lqcVF zDqjwmdq;T=z#1^*fD*LH3Uh$fb$Nf#bHKnG^8f2{Ksj@O*-d!|s>lK3TUbhO{j!vL z#9K-0xYUz2Zc$&_WMX~kPP6(_*6I4v{HoT{q;d778Kde;6RKEC$3$35Z)en(`V`fZ z_B&Bu`qIxvI_80mw2Q<>di|!2bi28Ybo83~(t``?Nvrm*D@``Ek_NA?D}DUbM%wUI zL+J{mhSC%MHqyYM^`sw9)sc3eSx2fjy^b^`+fqvUau~TCQ|7vf-EWRCY;HNPn<%oahR1-eOJIFI_`<1DcKiM|P-KdV)P_Xbhh3%w)XGsu0n%<(;S z_oW}NYjRvqy{1K9k23vd{bi2p`T5FYdJ5CM?zw1F6~^?J$ViXr&i8aNU8}L3ho}Qp z#Po`Goy#O&{=2Il-|UELYCgU>ozg}b_E0QVe4T4?p>hVWE)2&tH&Bxb8F-6~bOzk- z>lo0Afv2bgRWRT_XSGvB`qV5`mw~RRrsfRHqO_qI1JRF^Gf?;s0|R$ZlL{FqLPk0R ztsm+b(29YVr~_3nu;`Q_UXebQkJM$LC#tDA0}+%qG-Dw4sd5JJ4h#$wpe7YE@C6y^ z477csV?Zkg-l7gv!9b@4^$%2}Praw=G7x}jYRM{_BYHH3v6r~N#7+C*KIRo~=40+%sYEmHs`fudhOlN@i zR>y!=3>2ddtYi!{d8aM|!%$7l8CXtfLo)`FiWnH^!@$5>)TBZN4BsnepwkB(16naq zf;vzo0~M<{6{*X>2vk#Z23Aqp(2RkU&&nAn?8m@B5o%H)1I8Z}GtljmjsdM0(Elv& zz)Hq|3vyfa^?@;{rsfR9Q`*psfgRtJGr;f0z`z&Oq(TPFz9?p(*H;|_S}|bwtx_`J zf!tQjzywrNa|YH?+R%)FJwKE)kTR5kfnwC8LIy0pD`uc?v5o<)7%={!CIftSMH(CO zL~g5QU^1$yIRl$0ZD_{8ffD5m@cT0`P=cCN$bi*P#S9GmrDH%V2Fyy-WT0Y|cF1kj z3`|2cHD@51(uQUX9M&`aJpsuU!!R?>nn1gC+&cJR;8=5h2qMC9B?7K5C zU|f}f0S9EHGceLn$ADH0SXWb%fr@oL&>p$1nt}PKrsfRnr?jCN1L?-f83+zwV8E<8 z0|So8NM~TIk&Xea7_c?2lniu6ZmVV>64lh4fkTuwG-H4;RnCAtmw^F`8Vn4yKt?(P z6HRmsXvKhoX{BVKJ91k!14~g&%^46-+R%)FPqi5s7{I`Ql^FvAZpcVyAkMmuZp)Tte)iAEELwj%^GLhLnfk}yX1=!inVIsWI5TnIlT6DM;>_zFn=+4YnVZ?> z!Qjk^CtGF)*j>pG;?GVEx-0U_?cn4eAnffw`PT%0gS%1w&yMf)e=xYv-zw6K-K|+u zwqBDq?1IGh?Cz3s_>Wx5_dl*r_;op3E2C;_mrT-^TgdGV zW$ue?j80r)|Ht=5((k2gRa@TCehS|kNqS2b4|Gr3>{B-2zQl!2Yru0v<_xz5I$ggt z&}5~#Cu44$$({5w|z2!qwus(hFK|ovX?g(_t`!#{ScKQ`q-|2sL z0!{DFXW@3>_c5Qt0yd<@VwQzL-Rs}~3~)t_f*&mvhU6RW8> zD7zo>zy5!j`!1cVmFJA$9t=67t0hCu7=euRoUy%*E@xRtE0rumnVqn&G!@Y z{nrpr21F1WrgtQcU4J32x7D;$+q@FQyw_G+fu_b3vdlG=fSlqzt24N_+~HjW&`XVn0{vxfeW2%cD*-WV;pO(g zo@2Ng=w@?w0X-yXEznkVpg+6Q;k$+-ZEu41)(vO{mM>_$4(OoAr-ANyUkLQk>+m@* zi^mTD_VGQefTs6nLe8OeeiQI|e-rR>z6yAGUj@AV-vm6HVgYaT4*_rJPXX`oPXTZFF99#PM8JDd zD&W=D6Y?JD33=`Hg}jCOLSC-EkTyyNDv?LegIDmcg?c^%g;Yy1#}zB zv!K2~T`!j9WEZqn6?gJS> z5Bqf$XwP*rpsD`!vj59M<;)qujg{vNtS`fP#!UQ(&dbD<_sz7 zKovQoBF)(&eR+-CRy{uJ*jT=YXg)sM7cEJ)QHDjv=evw@RL(%KKLZ0I)TBZNWXMQo zz`UuB0j`ik;uFFyPI=fDARMkb$SjNN1o~TO9*hF;IXyPz3`s zc)~2xAYs}vxQl2<_og|<_oi;rVF#$1q-w8^$=$DVGFaY+6uGyF2XD$ zYhl)9Jz-X}7lN$M*9BR3F9@=_o)Kg#8`V!Yp{<~M6IT$Z}eQ-H49`#8{(Lw5k}b8;}yDMrO$-kh7~YoPNV^FV!J+g(8aV|g2B znNtqXxv^`2t{WN(G&|4=``%6UD_!e8EjDso2p$LaX7k^AxKMW^v2i)8rp&o}XEzaHUHFCXGZu3W~e%|3`9 z*%6DktT`I57upGr<21s?W&${=%69^t2wMfUa?%1JG1|uAx1v^3L_P?5sRz*!wZ$3@`$E)wv%zZ3A>-U@goZv?#6uLL~7D*?~&t$_FPgMiodvw)ZWRluwE zUBFvkEZ|xE67a5;3V4S4LSEl0Lf*Y9LY|X>khj1<$a`)e|@*E9>ym$ISoHsmg`SYtwu+F~&p^m4H4yTG41~M}`a+&*sepH(SimEF`G(xCJUJtvlO{PM z;pRAS-eA7r4VbqT@@y&4ju(@Frp6Sq6ulw9JhkSteZX=1if8`-{V>`MXorA8aGo+c zZ9mW+!Xlt~!UkY@|HYO-SM8Jw>JQmI1n4yV9N_Qw)9Zoe*$aWzKiL#$`u5A7O$YrG zy?qtXj)fb5UXnKxX!`m-mq7okq-OyCLyz_cn!fyo<_E$0rzG2f-+O7)V4$5Zg#t}o zU$xHiJ*)EOjC$Ra=M20TL(Z6hHeKO)MkF%Qb4FGdUCz)dXUyrUR?ets^Y(Tiw^d)G zC_pteAD^w!P2M${U#Dx(Q#k{~1O^5sqb3zHuoM~T3}koLF`yL#^Lwbt0KNySK%YIx zZPg4sL^U;Mz`SR98L;o8oB@0;0|V1glL{GFhKzIuF7(ndpcMm=z13u33J0q|p99Ek z)eJmEH8p3TcAxSx(4?Po27;$BFfbD}sgQw{$Vg}4a)6Ejtr%F^S4{@6y;ueM97b-d zX5b~NsW}66`<0ggr-8~DD4fQ?z#P=1LI&0#Bb|Y3{dEjz#lW%wYBEr<=IsfQ+o~CO zi)w1lfX%@2GT;)ZoPm@j3=GUiO)6v{5gF+W+#IB1Kr04T{!=L#IDy<&%|H>VsW}67 zf#qeuW2kZl?3vDqBT@ws(7z&rU?!J;heqaH@EnF&DJ_7eFHiKW z2cG-T?NmMRTnKvoyt#|O`g$(74xS4^uRrw23gCa>+=D=up4kWVr45IGUeSLC(44i= zK;J^cv{ovf3T z?GE`W~bKc&0 z)PXAI?OhbP;H~;u;t#HTWfFk7=GKdxJR+Pp)17bCoYP5&%tKzTvfG5W}Vf!@1=2`r+S< zz&ycvH-i}0Z-2lN_`kM=7tq({v<7cgD@x zK;Jy!12lbm7tfr`xc-5LY_R+<(R!fQ)`|hTa77@{=F?^{_8<3bEZAPEf6K@JWubEB zjEkYlb4KtChMe&hZMwpoVK_nFFZ7(zX`=l9x|~tYoKb>0P({wjDi!c#=-eQ`RPg&l zo+sp@|C6@sr2^iKQUUK$sepI3RKPn!&a*@RyI(5cJu4OP-j@n^UrGhMAEg4`uTlZ; zTd9Eewp74-R4U-zD;4kxN(H=!rGnq}$#s(FBL~Un?3D_5$>?v=m%|}{IjI~u!#Gs# zv3lnjCxdOkac!GNFId#`2x`nA%k%3E(x`S{lVot-G21W>X!`O~=PYhVUEY1}d~n`D zuW#S!30Pl{8xLrD{aq)%0{^*dYJ%;vXj&EM4N;|_eo1Zt(D(8V0Nr_ePoU}TUvBXd z_;=OO0UXy`U8w>zefis&9*pb1@uW6be(jIBK>w398|aC~{eeDLeF5-~-u{{8QJ{aQ zb}`zsD(}3#E7O$cjKWzAIm2O!94du5!v`7ZIU{1KE@x;pHq~mHyaQF_jEXjIZwPW* z_4sTes;T+-Y!;=BGRJR>&)YKySI$827zPF$r!z3%kBoE%7KG^-(24=C8EP@mBK9Nh z82b@#j6O|}ZWQ|ww~PIV*N^>(*F~RtNR$6}iv5VY$9}}UVn5>Eu^(}t*pE0X_9N~W z`w_=uKjJ*}A+=}hN8CB~BVH@^BmQIgNBsNpkGNj!N8Bv-BW{h_Z65m(Cw+O2+^#(1 zv)tM8j#lruDKKW>3F>hSHBXYIWukpss(sz=tw7W3Kd#ahtnbpM89;ZijsTjze9Pf> zVErR4f`Q)Dx&=7ysxzwq=<2J#0KN0#RiGV((Li5m_!X?*LbeTPcB2zO|FcjJEFZty z4`}-KY@TE!qW0gi&(Fa22X;0-NwtSfUIcW>kIwu~@j%ZNs78L^Em zBUNpHa6Sgkm4!V`f!;Z{A<);0ZGqljrzX%@LPMYrxBCFvqx$2#;4cehj_)hQvp7PQ zD9;&0I77}@i8fu~x%Mt(r00xhe0hKA#%IepKD%Y1yaQF7Yv)Dhh%ZFvh@+x&#BR|! z;>S@r;v-QxVrf*4_*PVoxNdZgct&)N_-J&F_*rz0xJFElcvMV|SQL{Zei4%+{uYxX zeixG?z88}tJ`!NeS?lC#y zZ816GM=?3#!k8TK{+Jwb*O(kJ=}Yg(znoN#@!5Tghz;WgDJMkdK_Zhqa z=uMZ#0Zol5WQj`&yj>hW2xX!#zZ`S|Qev?SR^ z85SAGXTz2&XTUy;fq}EANrem)AS0atyJb2Cv^v+mfjY2~F@PlTFE)WAI>@V*^^`4 z)q?ZL;1&M7{~0`twGQucq89!mAu{tA$D8o%o<=O$QeEOQ0+YN;T1*7n9r8apYcC#f z&7Je+EuZ7s}?#a`@vkcu%3xfX6z zo-?qS4989SYvr4+FlSgJBRyvfPLwaCJAW?c`Lo43c?YV<87U_t#PLOEG6Q6%eaD(k z$QVA-C9~hbeVIeYiTp~9w)kf~ieNwQkjZZL^Co-Kg(fvhKXYpH-r^{m_2M8xD8Aq?7LRlmhg5az=~OV!o*E;_ z^3TC`U|#>5gvCJ9>%XgG4c6EF%mAQU4O{^<@0t_P!`e&0JpW+MA)x8)?OOd1JbSTo z)ixkUiO)0w+PhZ?@PAm7OF&=Tw+!e3JL&>GJ31Y-cXzTmuphGu2HN@lG@vg&@C2H^ zJ+{-ADZTfNEVXXk2FuTA)f{Z!jzMtyZ%g2PAo%GuV0n7`!`(kC?eA-7&#Jt0JAS4p z&lxFG8FGf#CWf5R6B+3_V^xwaXJ~bv(Q&g{Ipe{`8Tix@pV|7u9oXCLgW2p(iEP1& zi)^E*#r`D)7c>0tmWbmF#u2CUR}j(X_7a{>62kD^b)r#|b3}ljh^RGsFEQ_*wZ#0w zg+x#BbfV#;sl=U|bBK9;=MZUa2M`}`>l06oR1v#5wqghNn2sNB_!$4x+=QbaYr(mH zz?8FgnjU9s=0p6^`V;u0jWh61$nCWlM!Qbu@S8Ubi^edl`tXYJ@lQc}sXm6)>^3@_ z6BahD{qV5i9YaEghm9dUC5t_J|HRBzIO8$y_GNk?p4Xk|3N%@$$G9)fTmbRQ;EE+! zf99gTK-Y+|0NQQ;Ik3FLKmzCuu{(jLw|`nV3HbN9-ejPq2WA58*fIfVNv)nh&wtWe zY5XM1E(iE*=f_nF!SXAaMTs9Vg}aKe=C)cR5&gD9;UrBN=i-z*dIb zFaa6qxnch{U2f1SH;mY>R&J8>jMw8D>{HHwJ<~j< z0XrBNn2d~c1`h4iF`yL#V|J;r4C+R`0+Ati0prS)12fXH`weWUc;^ z#JZWXl-0F)49l%bA}dH5$J&28f)!BGn#Hkd#4?}VhUNCDJ1fg?I*TJ(#o9G1krf<~ zz;fEVnsxQ#8dk`aI9AcP<*fX-Ls&+Aa(qmjulk(-RfDzRX-$?xm?>*T2V>Tdho-DU z`Sn;sPB&#Oa&l!^?v}e_ z2-xZC6SRW!M(K9;yo2wOkK0b$RoBfA{+`aryt(@evvC%X5rW=6!R$4=c|N#C(S1qiJZf6^^$q zLq>XTxUe5lr-xzHx{VI+H-6ISkS4#o6T|HPBry!b_RP;3On&$Nwe&do{Vk$vZPJ`l zY#K^_cMiXLp8S6QHNlbGru8!iMUvn6XPW}@`}y?y-c>LRi!0i;mi%rvb<79yyYOA} z9tPy8+T=HT$ZwA~hYd(4Z%qsfCcpVF+oqG>PUC;nHN-IN%CpSrf{4A?)TkDevcbg_Y3)5GyhH>vWHF#-g1!q4!)yZ zZiqY}??4sft#(yhxq*hR+)qZX+yN%8+&8AK+!1E3+>lzXTv07o?x9+)+@CdFxueZp zxns>-xl>GBxgTq|a%-Bna+6J5xt&a1x#LV-xjv?@++QZH+;|gLZd(&qZbK7S?t>bx z+^scSxgj-NxxO`Axf_jKxqA&=xpoGw+z@?N?i@W=ZW}#U?kGK1?oT~eF6oQsLAl$N zXS{XgA-Tuujkn%>bP>e=_cH`Qj~+1@=r)HwgZSyWsR^*ZxgrC0vQW>j>t|I1@pH}) zBM>i}zO)8<-LjTIdp4;JG=2Sosf|GU^)Idlx-{GiX!`P>qqBj3b^0{`@qK8vH_&bG z<%9ai#%%?9&DiHae|~!x=ylVNZR8H1V>{0W`cAwp(1&-g2J545 zZ$z#)=#PlZ%Rp1>^A7)Ip-jH06xZlNM9Omp&U8+_3vIf>oRNu)^qf(8MBZPzoKene zbfTm34pfmdX00*toouq5HRMNAR^4Vdd=50*?~_FA^l7=(z^B2uSnr@`ExbS5E%pwq zUf*Zj)!sg55)b=$d!6!WfAFY}amx)pyS~oznNKYA8L6M>BXr;Cvp)Q|PjyMQ&ymtg zJ}n(@`&h4iX(q0c@^zE9BlrmX4P6IqM)y<**Uw)LGn-`96x!%n`DuDGw?D`($% zYfOAc3FK~9j`NAsV`wi`>wMzkY4|M1pZ$7(cw-|?1o7rv!|5Qt4f+-a?AfdL06R6_ zkj3+w3>?1>ybhlsb8j09#H&+P-huk`_1$-b&tMsMTf*3W^(NoJeQc%=7K8Phl*|G8 zd&)wfPrY#h`p`^$pjQ<(0-Ek`t!y{O|-@S9cxSNpYQ@zuc zli#_h16AaPiZH8p2oETxSyxrod)WFf~<{*2-LUzsgd&Ok~80|Vz# zlL{Glh>Uaw8fWSl(29XOr~@k*0|sJs8SqCnHD_QVr47v(IB-Te1BK%l7?7bR6*BM? z8R-l(ljs=Gih%;ufhrhSXwhH#t%{BGbybFzDD@K_;fXtP1GxmuzmwMn#O>-kX0G=pFQAQF6M-fR zb!@f$iF;r!WxuNz!Q2?zyYPO6dz|W7)a8qgJp}dX>yMsN0_N`c>x}^ZEI4NXG=2HL zk}Y5^&yHT7fp#vf1=^1aI|S@q=fSx_^ADZ?_D1IWfOd9T40Pr)7qI?$>!yJ1UvM@B zXu~`4K%a~l33T%t#bAB(?cLI6C+LsldhmV;YW?Ihe_1FKt1HFW>fsB@a|SkoA!q2H zm2bMjoMDZO^qes`TfUI){JEUx&lWlI4pfmdIxlJ@8EfS&d0wrzBw*koN%tM=C3DB8 zNX%X>mlQ4;Em4t-FQLdUo9bS zZ!?t~pJ*$=emG0gYq&`|E@~u6M{ch!Gnci|Z=Nu0aRr&n`sKX5gBvOwS0%k9OHDKm z6*$!m#FDUitAXzFj|ga1^+2G>LXG9CJobawGoWP>(DeF^Ziqmvq}yGBi$LuE=C}c@ zZ|j@IK+~7skpCU5|9b}y;Q!Emp+GM`+X86%`nsIi!#J;XZMr@1H_W;<@Q<5T735y} z`YqFj0)HbGIRSsxNm7A*!SItn7bZLh+HUP5pc_8)2AbOb_6zbohup`@4ttYoVH6Hb9&m*6hGtcLA;^A{cUyLaEg-)Ww+|JWx({GWeY?Z0f&SO3s& zL)fA|E7?h}PO|ah$LzUFO4-HN4e(oYtKds}l(3Tqd}Kc*eL-$lj_Ye?SJ7UoFb~l0 zXApK<4dTM!%ke<>sXh(p9)}Ep_Bit%oCA=BnimEeJf~8owU+SEJi1pby*{0Q9IC~ME zK)0C42lai^je-C7@~wc*pJEDhmAMW;FXrn5Jz`@FSU-LHCr0lB_v=}7stvZc)lVMK z)aAu!Px?>qXCQNorg`DdGN4?^Q=S_zrt51CxeU3%2N~(PA>x`YH)u7c)GAM{+)&Z3 zuMI(NtG>37h-zv+u9`(@qs;Lc_Jdxq}$niP@1OCWJXJEk%9Rpf1;B`|i z20W?~KI_|6_i>upIj!cQo@utbZPHTetUPgR-ezyC??9h$v!yiV!A z`0-dvBER{#)vn2U923H_X?>6tvb2it?)GfoUR_4|rrS>U?PV~-clPNyzB^kj@ZC8! z(szMV4`0WxnXJ>6ReVj(dHUAw^Mv*G4941aRqE{*|JLV4^)0Nt;CR+QRSBQR$nDB; zeB^cq?WJlRAK8~w2gd`WF%!o5JBbZjg84!F#DjtUXK^6Vj?u9Gk68)8j%^eJP1J|= zb6aLH&gXH9&IQZgJm?4J-;6&M1@smCG|=N$!1=kCrgDM(#<3P){dGc~0Dnx6!*>h! z-DU;qQ;#>uGPlGUygQd}=Y2>9?bGe`de#8Tr>(vKem{DBi%j@#VYIb~9uD#cLV83VP2i6x-7v6U^_01JfKfO+Spy}<`fAI|D0rU5r!1m*IKY<>x;~eO( zg+z03p53j;3h47^`Jg_%{euO0p#S!_cnCDT{`!9Tz#ppp5!!S9)$!B+A9WINPeix0b1pN0gu$m0e7DJ`p&%{!>a9Wn|^9b!}K-NAD&v# zx9zEj2}j!XZyU?HVEL1^_MoG$`zqYG|CWBfLqfXy4)3*-HRj7>mSq#Z@7|YZeU}Ss z`JG$K^P4Xm>KFQLtl!l7X5MmhsGU+Eao>bPm;>q^PM3FNkF28vKk%^9$JQ(gu<-YaK- z*w4T~Bx+J20~?W%&cNNbItH|2V9mQq$v`@CTQvh;P)*GlX#Bps40wKFV1Q{1bt!66 zAp={Gk|_4Vj!_dEe6h-J|V7OH$XOeYq{$gUgbWi=m8<48X*%fA4hEm~3>!8nJq_WfI6eO1jD zf%)^dU#iU~~`MZyoITqJs4k|gusm}GV^42MH9nJoy@*Ke5$8a393~jQ)9Iy=; z={exhS9w3_&WFo+KD_apyaQF751$DSV!Mv1Dc;$q7GW+a5YJzZ5nfBW5q;bE5#xW< zCytsq;Jk4He9L?(zO=OrujY6ecQ)OQr`qnrTkpDopSyr@KG@oF`hNE3OyA#&^TKuj z$7_0j&bJZ$Im;dUaT@Lm;509G=a^jBh)aXtvB%%N=)W_vA(7N;4$<(#4YA&=x_Il3 z%W&Iqws_|`L2UfH-0c-*?nAKu%@Kz2E5LmS6Mo3OG*vjag7olrK@3@L_66~ZEY!K9 z*{2VHxu$fx^t3ma3n^{d5yY4ELGOW%JO$%*_@~Zb`O%Rr80S(N87G7K`}N_osmIUt z2kqt9j0gI;48H&7>G6YLee~_?d_n}q5vTTT4CZR4WmX0Kv#Ibq=uh`I@P0df!zIA} z>fJ)1T?Rl+_ose;7{B}K3&Hl$>wkUN6Re+Vul@7y{#+*BQ+H`HPOEb*OjR9Kc18IB z?Wcc>ufEyu1Y?U~m>FmC_({XV#)nSk&6qZGbayvxR3K6yVol$FJ{yU+~pZEk|ICU~$HTpc3bl-!P}b7~tApL?Dd!^$U$G9MFe13nQ; zf9gq0Q;j7mSQ0YIk?od>jMn_fV-9DWz9?@S06=v$p# zfzE0@0qC&@W&us#o(F}-jQw$OGkm8Uefcd*F>uVk?!*Vi_01eP2yEYI&uKtY*YB<` z-;@5;`E-in`oHnNGIJ^Ls>*W%HkKhbtU;TtFgNT&MtW{|RRvL}d!ASMp69jAK;D5W zazjPCE_M;Qt$IAvu&R6mH6IUcjh58>x>$&@at8RD7#K)IO)6v{6&dLayff4>pw)Qj zu4-yAaJe8`v@$ze^y+T5=o(SI?X>wbyo|DYh{j&i^GZs{7Wp1)-8MKq&1*(}w&+2A zwrF@kwrJ}8Y|)GR*`nL`vqhr&*`m?+vqdEZ*&>7c*`oGH_rISlnsGl{bm@M!D6KGC zRQ+MLsLO+FQQpvOQPI6@k)SYJ)QOud;-_Sb9L%#t0r#^-q%SVj2`g^R~0DtK9Q!IxA`?CJ^fPd|7 zEdiRo{ID^Gt*GtM?H(_k1j_6|#((#hGUuAqUFOf&A^Ds(O^*>&onMmAz6a%-IYX>G z#1Jc`Xmb?C$~(wNkCiqi@;=ZVFO>6mAs2O^isOZwYddrPe8S>8bJz);Il*f?bCxG` z=GcGzjgl9E$=tE&OghNfB*UX`QJEG`R_ijOss5x_QomyL9C>|>o34u z?$srQv6J+OEQFHSc^5Z7u8eiEw0-py%(o;9wf?Iq&S1VF-Hv-1F~*`oyQVFv>%&`( z1v=&OY@qqF5TLQ=-GB~0;01NHW?qZLf0sT$ z)BB^i{@!EM`gD72mu*Uye}#T&a{nt6d#Sr1J>Hfl2GiH^NB@bpER zG_KdPrhG?M7>masBRv-HuBD5`S{=6zvygY7idbwO94=bVjS$W29WI(Da`Ev!{L*_s zM`Q1NPr`fnvDu<}J-hqtxMkwAEFfGY2nZK#>lH4F?h!89+AUmkxNEp*P}gu#XqRwN zhtA<5PN#5DlaApcuMXj&y!PRu>FvWsecFeMI32=8o4SOHtow$G8Z4M6vQG#X1%-r* zzCVr@?LHnUN;W;?p{psVMC-I&Wjr`mBnx%@{92np{3AT30FAF`0W`K~BZ!au1&L6v z{RT9aqYszQDuwn@pMmDvZU!1#;sy1^FW^|4zCGBfEg(L72z!BenzFvX(qmh)v`Y%| zr1lSe{Zpb`TPw4#sw4m9$$hd+e5US}e`4vM??18hkN&s5|E#x6j83ViJVq0{7><{V z&?YL3(Z*Kt?Wf1+Zgu7V*BvjH^LSamp1cE9#OR7PzUG45Rz1Ep2G!Jjd@Y{RMj7Tv zj>tlCQ07_TJ8YCQP?*fXz!%h{LI%w0D`udVwT=O;j#CV6DkTFR$ZgdOOh7d?XJ8$r z4b2$XW2>A2`y>Viicyma8L()en1Q|xbqr|5fU#|*WWW=-t(t+!sHWx&Y@)QG83P7Q zlrxaBg@J(*)TBZNtn3ssFwkDdfL08cHByU#_#$_&Q*m`qt}k-;;wKNoZw<7<4~Dj4 zCqMtp_Bz?4-Fenxymh`Oe*d1k*R*@?UR7SYdu{mO?ltkdyH}%9cdwEv9$vO49$ri9 zczB((_3-N8WP|^M$+D_^jkaqHmyBFz85^{S+ne$a^bdWOcKRjO@(^%e#2Nj;9lAe$y<zgT$t%b`OVryU%`3|ZuwoXGv`gx|H zsV=r^6#l$5{9kc#R?Z}UH3O4xkt+(BG<1^pAf3rh&2>y_#bgQUK$T-Z z7}jyE-ft#%#jMJ3IK$4U^E@bB>e?Wq?ck@!kFMFDfn|;T*O(mO+3SQ&yzDoV;{*dw zJU7^R{KV~z|HmZWLjJp#pUFFD4dr9<$nHUm%thZ$VYG*`Ybj;Y&iU`Q{X0y0xG856 z+rYqNByvR|lN*td&g5Me9g|uyxyDuAfhw8gvn$e=Y&vpV^?CRgR8#Zw@WyWPt|8kf z!^WTU35Daao-LI#K&)Y4U@2-+Ap={Gk3=AZqCKWP}ii~sy-m!EHXvM%T-%82A738*R28{j6%RpPS zq~;8C#+5UGF)^?aHK~w+qsT~S;G@5e0j(I=$F7tNnulLI!e?ksyS}||~b)X6c{vUha0o}yW zg)4do(>sV>48|0RjwPEGszYx9nO==UhY&EGP)!XjpkM-~n1}Q6r|jit;P^G-~|TxG3-3 zW21HytrHb`WJ}b8^mn7aZu2^-x%yR9;Jb%Wiv~T33M%;~>YH>AqY@0)qo%)n5cTh~ z=TQ%R-bS^V{Wxk$p}SG_1Mfw>ANL@t#;^CH>Q8tO)xqaU)Zm40qW&Hk9(Ab1=BPZ) zuSB&U@Gz=)uNP5A-oJ?|miA55iBT`2HvRJ=%F>t6Agk_Q{{C^%y}*O){y|gWcAFQh z4VK$?S}ogmP}hH$kKTW~alQk32YuLsS}3-BZ24jRL!)iujQ2C4nBs?3>WJE>3B`3&UtRV?^&j;)hho~lkt?>K z{`G0`7{%>s)I;&?X(tuy8#+3JVm`m#ykEBe{d#{s$L-$Xa%TTHXV(#s))uw!Z2v7+ zkKMXg$;UT$%%}Kmr}i0k3lH2*`9jGN9&~$biOY zwg(ibygi^_(zbvMtF{N^?i(4<;9+FIAD1EnVkSohWLXgzF#BC(K<|q?0-omH8F2FA zjsWwb9Rb^l?Fcx!C^F#tzL5ciheQS}9UB>NaA;(}#<7tBt(HXwENHzW;KiAp0Zk9= z3^-V3XTYcPI|Ay@-w`lLzat>yo5+9}M*Y|~=k95?WvIO5H(OBu z*G`_M*xzirZ%}{2_gq17siJdH+_KRu6esSOhvKQj`=glVr+t=C)L+~3DFZ*B_jdC_ z$^W1#mF0wz8?RIP|H+vPXx(;m!Fxj}tNVQ#n!ht19npP-P=4Ss_?bAwBB!)r*O zgSjE^#%wXa7c3YvY)9D`Uqjm%z4z#tHnk_mgoai#b!fP|S#{m16!m zT`s0Ux!f^jXC94SK4eSujjl(dXYIKaeM+4rW|4P=m~`o}0&#^l+U zEoR-2&mPGNE6Fq-9Mo?(GKlTkGyltfKN;%G++aEo6JvV~o;0HiT5G!Z?WHKLo~{;( zZO0PJ=ldng&^ltdp3gur#jjOGp!R9G*J(4_tDwX5P*mUMX}wWQ`NvwGM)jLd5zaECmX?+h`j#2!MROUb$)ZgrF^P>Ls9(NbTwEk3k4xs+#oLvv~Z``04sQjlb zPf&bo@@o`#eRUkgw7tOP*JO`pO~~i--u>o=$l>yHgK@9I+>rWP>tVBVLm?=nb3@l* z;5yHKb1BOr?1-#;A%Nax=<4!3E;&WDz3B+G|ge`WV5c@HE; zDR?0L2n7!mgF@77HAm@x1<}c|-2iSe8};*FX^W#blb59CIixW4{Wz-!#NL_ zCn|X0qJjrAVMa*|g!D2M$k` z_kiJqf(P=2DtN#L3aJN%PV#ubB@dLH?3Nw~gl;?bz$`#I?}5EGZ8+zF~Chx z_0;i!mm9=CJ5f1)?V~4VbKS9Vlhr$PX_M;c2Tz-=ui3(+U!b|HzuWtT{z{Wn{(rVg z>whdEo&Tq}^!|&Q=J202J)eJ@vpM}2P0sG0lqS7@o~o(+i)4GPUsC3pzDC3WeXF*s z^s%`{=w~eP)$fZ-rB8%zFSpynp%mP-oa0~*hyUMyN2@d2n&|rMa}}1}T0Xw;cj)39 zJD}$#eAdiB@%HMSP;6KegyQLqx1hMfz{x0%y89K1d!GFT#g>ol-|p62#?KwZx6Kn^ zTV5f30E(ymSs%qu7gj^@?YU)9+-Ory6fY=p2R-MICf7<77p_k3M9)d&nwks6 zWvWG>xX#+ah)<9A#i%6o+{3Z_RZ)JvJz5LJF_%iCxO}NaDDE458pX5nyg>1pjjBVo z`Ao0=7nQH?dI80@{e22&mc4QV5DMv> zv3ag%&TwhY=s7Q0b4I_03+lhmmZw31to0hy{>i&R-SS^GC^sWtgF$J3sQ+^L#@K0b z-UoU$dU9aY@IMahy_V%bfjlP~jH=bcuh^g!eq)yI_q*}vPrtmGU;5?jkV&_CUJ+g4 zsTFmNYG`#`b~Vv`nDVvm&C7u_nhU*ELd{94UE+Thr%H?fH$C+}ah zBJcirJ?F-5Ql+g|vf+aIS?623{pCN4-FShur^$O3dv4!LihGkZ+xs@oc5E?!Qk!k# z)%Al=oZ;I)P;5KaSU%@h%|_3B%{u0f#@0JohoN}zXtCVz=2iU-#eOY+ zNAZIxsZjkbF26>sdsCyKSXm!o*g2Oku-KU^He zJEpcr@$+js#r&S_Pz~vstExAO-?iC@V%z?|fHTK(j@!)z^jU0a52*jeJYY8mq+KRI z2dMWb%mE!1TFt^fQxOb>bPm|Q$V&1&Q<1`FD*7(ACeXn%6|3h=iPJB+6K9AnWDftX znpu^XJTo6Uk}H1w)PnJT=}X5qzg056QP$G&`BD{%fBIAA`0Q;| z@z--cHy?|Yo zdETwf@jfr(w5{{Uohg0kK#$9h4+OM+b0E*!>~Y`CnG)x<#M4=Y?)>kU#4w@r2H!q65AIy5& z0mc3$>Y+HK&Uw_|TV1c9xZ%NK2%la%9F^1ld~;v`nzM%|>_GAKN%C{_8#r^4H3v8v z`~P3g5q5Jx#+CAOfbKViIiSljt6A7NU>FqAIbhdvE6Fnlq;L)xxWbx12Xnxe_II?! z&~3-}Pfr2T`TM6IY}&B94zqa9@?oE=duf#SfH7Xd1Kn3DcwiJ1QV;B1}h9BqMrW^1EWv$dU@|DbJ}b%xe|?G$aXnv=9c&ra2Dc{5u(<-`JQ z>vdt;pr6NUr)8R~{psuJ+MDx6Y1d5}uKj(_Xzl8z!?giD2W!)R3etZ1s;##7p=R1V ztF7IhYj^)t4JT*l7jXZyfzjH_Z0tQ#OAr71z&vs`e!a%_d#&YT8^4WPv&S~3IDNsTm(pe=ar;M=@aa{DBNPp6GV zacs?PD7NkIJvdV==d;~-YkNvt#@_#z*EG`gl;xb1{w@8syWV-bUVf}Mm=wnPW&ZcU(r>z#hNEBpVy`01a!viNbP{D9^A6D-MdM+n8L=p?Ubqk%FNzjjkKzmE;}O0_gNrC0Ic*4vZO0qS=ec)!v?fBo z0tHcgYTYH&Ua3>1QS4iG#V*_No7R74%yl$h)W1CzjkkrWe?alec|Fkl^q^-bikpS6 zKrwA^QK5sVf8B=sjpDD*+(GeMpFdGNRP_PHehZhNn6~$au@gGJyDB|8p3<4;p?Fc* z?kKjc?{7GBT>8$-joH%JE%)15j@=wkX{-DkppH|R16pmcnuVPM`a&U{12#lhNuD_% zg>yjnjn)J@m;*|#9T1iKbxaQq72U^EFSVP1T(J zc7&$T>fsu%P1bI^&+`%kw^)0eyyqoOUg?F#lHnEiqxjEmOVHSHd*)UY_Zp-|@%A5& zBfjleWBE+`7@;_}^|@OHjkV#==cD*!rKKqDI=2>z`~Or{v3;MeSAVNZ?MkT! zYMJCc5V}vn1GAt>)&pyykb2YFhsR!D{%6mY! zU%>!FZ(;ND)32VC;N>ZoLSU`Rr@_)=f>jW2NeyZ9W>C&j<{v^{=z+35H! z{o~`8r#}_HWYg*R!pFD8m)v$SzJVd@!RVM;2Mg5hc<_4qJ_oCg?Q?L<^3DghCIuWk zbEC|`Ef?R$ce=hHe((Og@soCZqq|zZyY5-%$oGYoxMjYcdyma|J&VL)g4rr8vW}Tovvs| zpo8zpsUH8Kf3W+k-mlm1`p(A7`uFoL=qshVuRn0=iT>*OME!W5czp?*(A1 zdg;AS=g>b}l1o3YdjWluQpNPY`Kk4Lrk2#-I$uWr*Mh40hB_bp^((3MA4<;F6&!ln zZ-!q6-N~xe^qJ}v)K7TzSobcmr@r=^3Ho$7hU$AKP1aX0yik9t+y?!}+=umr9{-^? z#94L!vY(}x6>sfj@}8yWnJZLrOx0c2$c`D7&$|Mf(HOO6Ol~xWRn1iw#Z?|;MseFU z85N(AKi*e`#<(m^E2Fq^pGW9<&cuOJQ2g_l4JZyf5`_4+W1!_Tq|*|VkKIiUqvLBI zi(|^a)vc;xzJjxNNA*#D?{}XR`J3A|LFK1U&p>ff?-&#(_S%kO+xDs-{Cqy!jrm{f zvlMxb%a8Tu!wTO6mcrq(WBoQLq+|WlL!PnTrSAdj4_g!HV5~n7(bdm1vxQ%~@jiZS z{Qdm4EI-}g#Hl9@Uax=J;D9cyL7VZK`m;ke?Em&^jkrlCSH>-Vm=Jd>?or%F{j0cN z3%-ck_51y}GDXhE70j_S?%swWaicGNgX`l`3>caqScNQGB$?OjI9jzkWhAy7q1n+#ikW zhnnGc$G*AegT{H^=AkIwSiKvHv;5|VV%mP`?msK`uSefv=y)jqkJeKa`HlDBdFy(r zo9OtSpDKy^S9x#_6x+6!;rQos*KS<5J$)_b#{cbS=5;_ie}6N}No#7H z|2tROGx8oVoL2BaFf_?}U^*014;=f=;{lhhYbN}jEDtm(-7Hphy;JOlMM1H<4bx*+ zJP3`Qcq2S^#n!{Ioktvw?YVSyY)I{fvHM$%jj6V?O!T+Kv)9oZzp3-p?3#7z6)#jL z=y97m=WhI1r&OkSb%sP0s&mDsLUiuy!(uW%`xx`uCxA5huUMSAE?zWsaEu-NvUI=m6{bZZe8Zsu+q(9OP{iK`^)|g+bY4@%jA8B zZF^`tTHpTIV*mZN*DkhmX6wz#q;tO;~*y)z=c zxBtjg-u_wMSM(qJrlS9a*A@MzzpdzBUghmyE1S1}^&;N>xhs16f2`*1f2xMJ|G-M# z{!yj8{pYK_{o{*z`!`X0`=2iD?SHd^xBvJm-u~V-y#0^V^Y+gg;O$?cg}48Yt-Sry z*Y);)me1S&n3uQz`|RHS&$4>^x6SJ9-z~GZzbT`)f9DL|{-P&DcX#LTLhYR|g4>_lv=Az<)}jfDbJp&G z;;KP?Q9QM1Wfarn*|H@Ny{kUwKxPz2zj}g>XHJ2>C=MxH9K}066hd*Q3!PB>ZBz{u z_Z*rU#fPgtMf0F-f4wh$_JZAaVz+n}^yO9gIV16U|S2A*Lbl=@YV$&6?8au3D#@Ifk?#2YYD;c|T-?G?`i=M@%nU{Zm(do_i z7auuu|NV3u_g9)4z2A6s^ZuRhbM4PwFzbGG!dLrqRX7)WET~)TAamo`mx}^pc2s*< zHzs6#y@*A{>Yqu|u715M)^1O;yYE@-KR>BdWB!NtJsV%O_UJEfh!A`H14+s2CK}{@uM=8r^ffd>+py6klUbCWLR< z@dY}*+}RhSe5e0zH;UhfJV)`E@1LRAw!M3BCRol>yYbxiRJA-)oZM@8XK>Q@2~fhBbi>#_lie{^nHZw&VMo z2LS2({ms8^+OYGTH14v`@qfH2?*a2Y1rM}JRPaDwD5M_P@R!E}F5Tbke$y>IFcZ4% z*aHUv>AVM?+O*-E2UK_EJz#vI;DI)`6g)5x3aJM+-}ZRGB@gtx-^LW4|5A?mCEDw}9Hcyvb_gL33psIeJ zPY=EN(vSK^aX;#tyzH%iTH>N^)ac>nN5Qk=zZ-Ep{{HPZ@!BD$<5QiQAOBbL=JB~z z>EhSik23d4`oUZz>T9#HRl{)kM!_PQEe&#m}nmMsf8%YfxOfeoGY7 z_MTV7`v$CS-xxhx@B7>f#Z}LrM*W{#Gz7&9^5;V_ZSU5ucj$SX9N%S7eD3ncyWXh2 z`3-uZ=Wl5J(;DD){=*99RXqL&qgJ8%jcM?^3e)|rqw-?Ke?jr9WBpLv`gJxG&ot&l zv2B0LJ^JhgyRq6W?tQAC%g-6c8wzvAEI4%b`}0~Tq;tlt$JTs#zCWk%`}2w?)&x5E z{@kEht@yltP2#s)=@6gjH6(s{qki$DYlg;;iJ2OIpnq`us3Ds8`f-1lC;inhF8o<> z-N{^4qX>iQm1Vb^T71yyiFY?kHW>J12F|x2M-%>Ex>~_i?CxUh&2HHrco8 z=e^yaFY&mPe)5R!x=Kf9>guTq`_-1|NHoFMg841VO zbknPgSJ$_@Yu4ROc<(o0d!e|Hc7Mfn%yua5$dcH&@omj<*=yuA=bhifterR6>@#4W zx$%-W=5`&5#{d4Zc>KDLY2pLs<}`m*>7lvPDXO5C&{QgOVDX&i~hw+Ay3rHV2w|ChnqCj!%c&$hMRUx3^z@w5^hRgHQZFbYPhL? z)o@cn)o|0QYT>5M+HlkImEoqX+HliiZMbQ3@m70-XLQ>8r20D30ByMGn;PM!M%BYj zCu@Y8>S)4E#WmrkpEcp8=Gt)6(8}Sa?<<9yEPe6)WbO8s`<`PnRgV9@FeL9i$Fv9b z_}V_hGr02&6h{nNfZ~k(=cCy85yzH~ZGGKhM(wbTD^?n@(>A8~?T_LjZOeNv*P=K= z{S%67F7!h6AD)l{)jxleR&g!qP_Mb@cxZpt7aJI5+aFqsLvgYAawr~OHbQai@=ooC_7MoJvJc^tjyFJY`45v&Z0_3+#dPefI4vU@ zn`wDi^LuFQO#5rkI=078@nc_(Msq=E^|EMgiCkA39lvqsW!yjC?kK;s{?K}rkUqNg zgHUX2xCq7O%v(_$>c1Yvw)MY&GsmTU0Hk?<8@r`4%Wp^JwpjXayZf7SvdYf^hQ|tX zK!*%gv#@hOFci``V0%U@$ukF}a1Q93$(le1bHFo$k9I+jkG5S;A8k-iAMM~iKHAHD ze6%zBT7NF|^wD08u@4|HS*D}Y~rJ>*1|_yt&NYi=ig|YZ193DFs zzlTCP7T3-08H-)I$MPH!=wK}V((W@B$zj#q@qNY)fOP&o;}n}V?ED7fDSw}FaV`Z9 zJXP?(U1*Z^z$YlA9`MWQ@qkMncnt}3GY_b9CD#L80O`C3X4tghoClWWmG^-9gMtSh zLX)fqQs=fFGxb0~9*+lH^1ypYpqqK1bl&88pgSO)_rPqMHk|W7yTbAw2u)J(z!PYa z^+5W3ya$@(_jtf14}5|II`F_xe@B=W-it6*zZGFRb3MXT<5Gla!^H^G%c~KltoI^J zu`eS`7t(ArEls`Abo73u=#PifM*ZYQeyDNU-4rf)t*m>#}~Fg_seX4P<<$GMkjPHw1PODdc3>)-WC|MPFXg14TF z|4Ys%Z859vRqgI6T23F!r*ty!DIS2DED5k*yVz2TfvK*kB43I@Prc91Um5Wf|xryu6bYFvG31ccT604Y==egtqYIun0D~w zj^Gu?|BIzh;^xOSGndJ^M~ZDfvwH?<7XMyc_;o;qGxhHI->TOk%O&xDa-U*3AM7~q z`}Yo0%$*&Vpxb&o4`%~J1o(Y9JD$rsCS6p#HoDs% zKL=y^*p3Nrvt*Z@%PpU;#;#Tz6MkFWTyaczdoRE2m{6sZ^~fzbwHp&`(`p$9q&eJn zZqJj64{pQ1W2oqsO2VFh^)s2?eKU@0`odSDwAQV%>W=kb6`9#~&KnI2GWP<=r^3D9lF z9>`oFr5>mWOy@n&w356B5|y4KTmen89@q(m)B`UndOYBg2R3;p%LAKUq|<*%Kj)#_ zjy;gQQc68g7nsg_phXpV4;bGn%mb^TN!9}9(%SHwph?yP2ceL9AWcn=2VC+%G$hc$z2h%w4zTp)Hgwyu2a457 zsRx<^(|Hect1IsT^Cg9OU>h{adf+G&QV(RPvJEv?brh)>!#EL zt%2#h2Mi75Jz%`8;DMdcBH}gOeblb59D(X|}fsVj*-UIy`%6q{0 zLSY_=h9+4LoP|Q_f!qNe54hxk6OcfM9{95E3%!JHJNAH2!<2fUD=?k+z~CnG9xz{1 z@W26RlJ&p^D5M_9-`L{;mppI^66nAKVeRH=zoehH&~3*asMaK<9_Rr~=RFY8Ox^>A zTM8aH2u-pcxB`XL1BJixc)%qOoP`8B@PJBX)PG4oAEDchJ)mutQV;Y3rt=;c(Nf+6 z#+<#!u1uv;wY5C0t4d{AW$(WQ_S#y)qtGPlf$LC6Jy5)b#{({T-~uGjfd^{T8Lj=2 zepD^3x;yqj9Y8w&%v?X4Hte1=wLDL1`LJtAjtP|aKxlRa51fD|Sr6QVLh6B1tvw!a z$pcp)fet+IrTu*%ZD4Xe&;XFmdti`F8_s!Pd|P=Bs4^&c;1o2;df+Y;QV*1Chva&oF(94yz;K&3oby1tZt@<`z!NB>9;njE;{lgEa2FEjzytY4 z9@Dh1a#(Zw#sSS?^GQwHO}}dPPPnS+nB%raH}DTliGjN{p}$Yn?7drFvokck#y2vn z#@r^4=Fc=mG*w!c&{Xj%p()j+xTf>0qM9@#N^10l3TcwE-mJ0trvWwcT-#FJr_8PD z>SBd7#}}s6tUCRBjYG@7(lia}qv=$+qsD*5V9l>nrfPm)woH?~{2q<($YYwBovpfm zx$A1L?P~2|^48V9Bt-0`5jTF}=owIqT$@YD{`(^U)wT*W@sgB}yXI>$^>QB!)q`TVeC*86->vTc!TXd~k z?a}4*j?oRg6Rk^7?bB8L*QARKj@5ng*`>RYYMSn=jahWh?gaYHdq2~!dG%eo@Zu|V z;SYxCc2>HlTQx4VzTu%)x~7fN>x0YX)fb4XpugnZSYPFOM}4;*pM8N0?V8)hO`6h! zO&ZPQ-I}D6M>N$A{-!C|EKXB0*Uy^N5rZ_QQ+YJu-#n@@q3fF(1;?b;wE8-erc|cv zns*7=G*g;o)o8b7)@ZZm&}e?jp!urF(Heu_Hm|WZcxm;cCyrE)FlNwvmvp~IHpA{3 z_p(*f_-1Ra`KN9J&Dx1yYtED$q#0tKp_v@_v!>Jdof_XhpMCLVj_J+%S$mkg>-5vR zmDhxRctaz5-DmmKJ0Fg&Lx=3ogs#hLgqB2cy@0C-Z#(8#KHBEB&~YrenQvjzX#P*yiO0_UK;i1>rJase9yQP#k9RL)zc~Fr(55Oiu|ps&nfa(1(iqT zOQ-fn@wF|#pg2-zM6qpupTe1uto?7ki0gFKAo(#p^k0SN5!&>(nt&bC2SOno(>D*W zl017Kq;T(po&&83bTFoWX`eaJZO4C$Jqk$Y??1kR(4q?WYq|t0cwiV5 zQV;AJ>hXX}9vB$nmL6CP-FEDOQ-E~d10QVKaLxl+N634?kV?S=-M>}vz$hrB9@sm~ z;{lgE5Io#1J+KVA?brin0qML4{AVNhjJBr6(uQ*$$TLpf11hzG2l_&j?04b`P)I!xH^$=umpm|P ztXq1(2;FwVYDm@*YsG#XdSDh5QV*P*=Ykj{G`|MZl4p!^T= z9xy6>Cmsh)vL09nh13J*W_Uc{k_TqZbW0EHhHg9dz!N|^?}5TUq|^hI=E!?MmquY8 zm;g<(9#{&6)B_i1c|72f2jhuc@LPCz7tP|CRq=x zfI{klKj(Tp;F1Rx&T~r-#6q_nd*C%7o%cYg`6=~4jfL_aFcwyr2c|=ltOr&@A@#tG zFpmdZ^1#vsZs`Ftblb59-UHHk50qP&QV-NxBJTl1Aq5Z2f+krHtc61Afm@3_9&pJ6 zD;B$@2M$BG9edytAf5Ms_mY%)px!ch4;b?)cwinh$$DTt6jBe|Tk7$EOCDJLqg#65 zICR^w2U0Jy9-#9cr~*t&8_qo|p<5~M0d+wI4=jWxSr2T2Lh6CPmwPVfLOblw9ESIc|AsI-pNQfQL(z&0qP9(cOS;{lgEu>L2v^gsf1+pz~S zuTH54Y68=F4>bK*-UBM7=Y>{4ldK1JLLv3Qi!~k(xa5INMz{39dFZxd4`ly2r5>mY zOy@n&Vx58q$|zh5t%fF95162kdf?4kj|W`xz_xI=^uQ(Pwqp;flgcHJ)kb7;DJrhBBx1l@M*fwH?&>VdYvblwBKP4XTvXIAil37TX*a0&{k2XgH3c)%qO9EAkB znFo@f+m1a@(UejTbOfgJ9_YVM-UF(N3Lc1tCRq=hg+l6q+)*A6xa5HokU%%{z)R@1 zV-NW3OQ{FC0@Ha9433reK%$?52M$1!tOqVYA@xB17>@^B^1vxbpqqK%Ep*$l2dc%U z)B`<$>AVL*;^aM`s;%IGgU}@Ffh$l*Jy7_7#{({T;4CE2%{=fCy6xBl+PIW@pcgQm z_rQpQ@*YrEQ}Do1Xp;57btt4BC?4e1V2S(ep;hYC%o{{%Js7}EHSD;DO1J9w5 zdZ2oO#{({T;2|W?%{-9jOmaQY3Xslw;5(Z(ob$k(^YR{0RZ;N3b!d|Hz-uU^9;kWF z;{lgE@B|X*W*#VTKDi!f14!pRFwv$B=R6R0QQiXve+3WRgeF-JyoW;Sfw~tw9&pJ6 z&mn!0)oh11@>sH6+l@ zJfOakTn}^sr1Kt_Vbg|l9$0ow-UF%{3Lba}O|l+H{ipSqsRshCdOYBg2i`*h-OK}} zuO-(5-2v&m2WH!};hYCnCCYoisPxR-6KIn4K>F*v2b$dQc)%qOe1ZhJnFq=zCf5T! z0qML4=G(O4oCl1zL*Dz`DEg9!OOBKJXfvWId4mHt&JfcRU_&$ph){x}^tvq1%ow#SNcn`F_@9}_39?1N_Ej>^Jy6xBl!GLt$11oLXaLxl; z9?5$kw6%f493%ZO0xM21w^Uu*Rkh=R6SkRNezd zrTapuA6wO6Jx~Y=>3yNDPdpxQ$pg8bx}^u|LAM=yU=$#o_dvK!8_s!P_j7p<7%C{t z1L>0#JWvb@sRw#I^LW4|59E99mLAYSw;g+693Y+dzy_N(oby1`D|rtjdMkJ!^9uzJ zl!QX+fnF~?9&pJ6gA@#tZ_Z|

      m>Vm2Am2v?5BNYK^}x`7JRWe#17$zC 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 z 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 literal 309024 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�AAqnSjZuchXGG!*wa8}ywE_u47ly4L(#zz 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

      KwK!!=ZT<$nGMj=M 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 diff --git a/interface/resources/avatar/animations/walk_fwd_fast.fbx b/interface/resources/avatar/animations/walk_fwd_fast.fbx new file mode 100644 index 0000000000000000000000000000000000000000..4f1d0e60aa6eb583fbb8d46ab32b0e5851ce180b GIT binary patch literal 990832 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 K^SHEMlN$i5Zv&tJ literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/walk_fwd_fast02.fbx b/interface/resources/avatar/animations/walk_fwd_fast02.fbx new file mode 100644 index 0000000000000000000000000000000000000000..470b1d57f35e8b49d25467d999086476f0a27946 GIT binary patch literal 966368 zcmcGX2V4_L`^N`F6e|k$78N@x_6k{a_2dLa0V^s20z@E*At$(bry4(X*YrpUq5kF*D2VX0xCF|CL*KW}fHwoA1u<>}JzdksPVeDP)~H^pSN? zsTI0pnG93}<0=CXRT%u(N_Xzir;Ab%snm5!(ks;oDvdf60N?-sC{qgHwN*(h{ zzZV4nNMij(kFB+hVi&G`QU)Hn~ zW!d(lzpMiQC}b{FqYJ750AL&mqPsR`{tb*vj8>@=WJ964vZh{5S~Y6Yw=e*XOv(TN zm!JrxTIr{b(gc+O0Q?rG30K51{|Ov^{)RC$Btfa86?#QEM_7Du0Du!Cd!FBVq2Ds* z{t!5l$(gAdZG{7rdIi(gK+<0)vVKu8Sf!6s1~IYIS-T4bC58`HM(EAISk3x{vu~n4 zMx!(DH?j5??y5{4rqM+vn16GN{hOZ3p(YxCx;Hx=wems=+LO}q|jlCxY$8a!y*SoDH8NvO&djpC%r>mg~6^$ zFwN*9?A4ox697&C01wz3Q-61zDq5vh#F_u2qb6RfNmNI|a+sR*PEd*tFrp$WVx+HD z8>fme)7eX@j@0P#C}UQ{{69=LzKMEGq%tA)AZo8YY>(l^k^#HDZi;v%p*1G|07bH* zXhE2n9JW-6&=NXAa5TmM6@?lLfQ>O2{YZ;e=#|XTXV7l}!RA^lJ6I)_0{}GjYV6gj zaZ|4*tz}J{w)JY(wrTT5Ud@_bK}{ovOR<~otcp`|lqzC86>^3S*Mfz(008_I3Hl(# zP-P^+;y%t$$c{gS{1L+Tgty1(s6lVoU;^e1x0w7EHATUuDwCSx=W;+HSZO!d zTG>3USzHxq^C{G}8n#`XZ8HlL-w3^Gs4`HeF(3EXN0OhsG=zr{=4hP|N^26MLoLUH zgwS|JvLaLq!xKUyl~IbsIK8|utSbigU6s&xHwDu-Gv){#*XKBX{d(+*4`&kQu}v=w zCmV(-XQp$%$eykMfciT;U+k=Y=IEYtJ8PxY|L^?~^mmNM#q!Mh5UwVz8+x^B*wjnb zqy>bltyi-a#a&?IE!i_@6J9f@EId&a7wO&9t4YfyUS6%@m_skxO28>JNU7JW)X@pP zsFOSsB6G$uh!vA(0-5Oo4XFnWab_k7t#6Vl!8~86)Oxc4ermlkS_x-4Kjxh0EDB== zfJ0zVk)L6zXf=1Ja}n61Ck$n{@2u0P_1v8@XAm@s^n#JhIl<4!eES_`-ET*YMi

      wbSm=G*UA6wP?;5NMt^EeC8qO8XRra&n_$iqL)0pL zP=q2**;x_6oXRo2M`{wotDIz@bp9;@d`P;^H*JIx6B}{WJ1Cwtt~w?r=r!@?)O#xQa4>O? zE2C=(cpgw2X2Bdvm@EPmx>%)U9Q=B&*Ruo^tvQTg&Qv-k>U2uAo)yZR@L~^Oxw*Ny z77eVo<%|VrbNMlyEiCc#Dy(2fO`=+FJ`T<)39mJnv%|ucKlV>klqv7#2ml-*%;+^= z-KbbC=Q#+wmCPdnGjxJ9iMj}7cX-jk3@^>k>ko6Yp(XPSbvFhe^Nj7QR>cSD6%nx< zCoSgjtcX?0yu6sh($8&TNmwRxR4&|8qtSQML@Iv_81iOT*Vc4wbFcHK>+%r-Au_vphD&=Lx$qK(_uI323QyD zaPutA!EP~@A-9Ku{5ljbqr&*z#|2o+jn;!F8eEzmAWy=PG&T+K!1xG$k%0aBM+H1 z8noqc*})Cg%bdSD1e(F_tyD$F=zpDdgP4Kpi>A81loyI)PSza);YCNH9?nJK8V$Ot zXL>YG4TG%zJV+C#F~?#4e7g0Y`)eX%Nq_#28=Sj+VKP5wXXdbCo~JRB_M(N%_DpX5 zLn(Kt37PASeIp_g;}he|KXWxP2Q`6aKjx(0 zd`84K{(9aNm;>OCv^ykg6$uIEQbPPS>S*Tw;bg!h|AQZ%TUc2*c$q^7`+&!s-Y~~! zU%g(Z3QyE4eacuJFqvfn=JJslPRy~$`Uu6Gg>?>3>XsN6*O|G_L|dL=d!dY^ju$Bl z9Ya-g3M8b&lOMyFV+O zT_KC+LofoNdsI|{Qg4Q`my$WlZ$_JsGVnjlBa!1&`V4CLci1p9)+`MNs)lMrw_CG3 zOqkU!gPlqpZCk#>QM-&P4uS9-3bt!gx;x85e;UDNnZtjuPN7bK#}|0UMLJHFtYGC0 zD>gu-7VAw6cf*P#u??@N0INmU=FBlIZ^nH{wcg1uvM(vJY{h)~>_>_W zzer-XNArs$X8R3AqN$$^RCisZQfICbLpW6l>ccD?IRu*5C@mlcX%!L5&KjM+Dqf}U zu8vD4DK#0jfv$_0iR4EcdR0`ETA7g0$9!<$yjTO^5|4)Z@@c42WmpwgM*a9S)E6~` zPJfx%j9Jm~SE}=m_MrZ*3=u`k5X@P3picQi8|H*Y#Ie)43T%~iEDF>l=xuFQUIl7~ zE)m$rdhP?!T$B&1N=q&_9EDzRv?~4(RHG^^lC_M&%9TiTU(PTh&Z(SXM3zr*gmD~p zzH^2VlWb9qEQx}Az==g+b>V@78QXs97^O}HFP8}?6zM36b(li)DEAoqR1J>#-(YXd znG}k%VTc9Dh>h|aVcGH@>z6-%7%PKvvUK^GDRF@9;ff+!_l7HqIJ|0ACuYboy83fP z5i^|06-CT2yE-(c2Xvdc-2F|diC5}%stDE@gV+P8e+}3?y8XqRb^U1Gax@Uz_8QbS zx`E2v;Q7%u8V7uu#*M5OHK1>3s%ED60F|0n#A|yh)X_>_Gi>9UoNe%$Tobt4;5D!A z!nC1C5?0Gs?lySUBKNS?gOvxbS|*@2+Q8AuSdM%N((9D!XnhPXYtH4{46lmZYr%@h z+3+f=Kc*QdjG&@cnu?K&_DO~K4?4bj5WP|moJI#4{;+DK50 zW*F|GfLR+^jQ$+mzF{6q>86Y}-+2#I>LQp2kzy2DWl*A4tI_F6t=!Ms3bTxcZn^zf zmhw|aDwDWx$CR!MQ)eDLL+hfQbxP%M;j3}mbO%imE>C8mWLe!jQwnow>mLy( zV^3DNeN1ScwOD{zH2HwqX5GwW+Ws+9F$-^bcJOM|uO7^}Gt`7Re`6Z4%u&Dow^f_C z8ESGps54q_V$RZfsS;G-D&`5WU;h)+;vE#<3FgGC7ygWwq0>u+Izq|yD|5Td{|H&4 zdxVzgnETG`B|7F>_Q!pij)}UVN@l&S3;Ju;dfj0M0B)e&%qX>931vV-_iBDLbcTTt zZFv^%4%UZ|R)I<|K#?9>;<=6Vgo}yHVm7-%=FU_{O%d4dESS=59#wJgfWu zhON4K=G)4Qi@+hzFU^NNW)0uKEUKd|kDUn(t@J0YoLl05Y|9$LvBun+aba$@c8*g- zC;aI1$KNsA=ti&r2Ap3CpxlByi3KogE&i(baHgyt%yKK*@)SWgf<*|pbFg7Ovw1O( zt^C~djbK5H{;YzS9D-t%aZ0_0c{=Xr_JLd!aOYXnQ-OV|8WV*CMS1oa+E`ef|B(AM z73A4xrocXXcoFL~l;_ze?Io$VhD=Q?tqR9&8ZE)m#gl~&|B>+$T-J93?`c=qYhPFS6*$bC{*c=owK zV4oG*6YB)`dG=YXy|6l`k^7{c@$AzeuulhXVx5M|Jp0TM*k>ZSPt!x5ea3hT)Akv; zPs1Iaecln+=Kvp~w%{tyJ_CJ()p?QJr{M+9K936Qvy+@yr-^T!t>wb%+(YgY@I4M~ z6xe4&idd)N8c%Iyl(0INll!Eu^Xzkuz&^|P66*vvc=lP?S6H2s$$gs2r@Hf+%SH<9 z^FMN*R85|JW((|dNC%>}h6+6UjO-vx+ehR+DH+c`ZwTzOZ%1OCR7IYB`gaso=Q(np zpc2nMO#=I5KGnc1i(?juP1Sk!*_;+u=MHk8h8jHkTr058dYy=MQdM~NS-F$2I+t?v zS&nC)sRH{f)tOi)sLHcXr_RFa98d1k#JA5Rfqi}^_X&DN)a7-&eJQZd_}_@yQoVWh z8TOknZSRx&H1VzTioiZYx)AF$1o5o1OBZ2vp5o}U7tcQT3+&U|k6dRU&py5Ugw?r) z+$Yt8XP+wt_F3z9Vx3el&pyllF09Ul$d@8U{l|ND2uzNiF4D}bL?LXu`y*k8@@4mBdUS|sI zvqu22&WyG^`=kSe)p?BEructrAoH6;6gs^!UX=hG%zyCX$(T#1FXoY;A8)983IK5I`SanDJWsfI^ng#e z2>Or@Gkx?!fvk@;LeW8ZdYFY`cDp^k}h%*RO0PcfpOyGKP?8Zd7igQ1m-xX8+kr3#t()SY?y z@5j3bEIzW2>wlrnti1fs{4gWj@_3ouQ>2%*gJ7UAFGmE~!OQh16&?>2GYVv*KbO#Y zw_u$0Ezw@S*8BE`)-%u5A?v*!BkP$*X}hSjKj>wtJ`NV? zdgTx?t`7;ZgX_CcDz@3^-V3JI9X=z=SjGF9YX)@R26U$*H{Gt)%rerS+^!9q^sEm> zKb*g9OS{*fjIpS3X4s(*eCK(_8voEWYW8p=s#<)Hk4Ad>?Z#zlhq+MnF7>jv>qg}m zH=<@)ZzPFQ#l?qflFV;?rQz#*Vwfl58RyMMdfx^iUHSshw;=O>uX{lk(MwU7=WydR z5wU*isJKMtr8w|?AMoMH4nJPq!7PaRHVCmk@RjO~8~x4EUcRG$UOzbcnU}Dl(I2Ko zqn{BfNUKs~4|=mvM^?i>upeRgJNAL5vp#If`y;iB)_?pK@vyv!{&Xm!;+<6++tDZQ zzES*kuerQkACXWEL4m>!rN>bbl1_`o`obD)gG$xcW~cxdp73IGO(Wgs;N`fYQ#>fz zvralw@!91|QgkJc_7l%0ZZ9Dig}|kj;fgh#g2azC~*7_vd8!z zB+2+kso66AvkDJ%tK7;+uXTTT_QBff%=jPTnQH7VFB@jV_}85NXVCI959RbMZK1GD zM|R5T6O+C#OUyne?~R%jKmNm{9sgn2@sIZM9sg9M)rAT;!@5xEri_Tijec(hVf25A zu#Ej*E>t!upe zxE+|{c5EhM*nt{ifyC6RFv(bKkUZfwOhIv>D0AF zz2`KoNzqf!uIVvv*IRiEYFyOlFFrPC_~0y86J6YCR*M6%g-!Iapww}WDc_9iP_v>( z|BEO|M}LWE+~{wD_VOM5&s1>qGY{OL>lEq@8vRTgJ((Afc1p%y|D(RF2uN2EW|c?L zA_=GzBZdHNj2#HriBhqR05_G*1ULX78#k+j$^7!7wwel*dC!4!HK<_JxagrePbKM4 z-J`+{)jMb}-=R7?4h~i3?O$l9X6;5p)%^AhWfWx1WcMyq$c z$kCdB0)>s%lks*KttHe_jMiAS&Bs+ZcRk&2{-M>iCUCR@kiBOkYFzYaeT{0AYW-h> z8?DXJUcRGssSb`-=DiANw95WLqm{Xb%^X*QVl;_ykxCuzM0gSE&uX~#))7tvT(r<6 zF&CFNvVPxjzhQ3^?a}pn|2CU@QgrhEE5RwMD5`^2Bm_w)P#6T~P!WwVUQ*@PGg$--t z94Y#V^*?zl{7__qIZ%S&c~fll{uD^`1zjLI1*60Q2fV4yIxQij<9tz#$^ z+b%L{B*D~dK`ZsB`}aBFa{9`h#B}5I_7n|F=>wkst}-U0#zmnO<855FDe|?ErbqPH zTCDRkBmF4jP?)A_rg1N7Ry11Qk|af|S~3o;4rni5wAPG-Xt5TA3}X;lOdAYZT@?5W zmzAh5E3OnH30%1i7tht`X4Mn#WL2Z+F(oxUlr7I1>6P=Z6uH)~gvo!nNUp}9Kw(^6 zM@2|FWmOpgYp{*0;UjG4D&};*!F#&M>9l~1WplfEzQLqR}=^8Og3c7Bf)NGiwbj>&HsL>vnXizq1y63DfayoP6 z9_k!;CvThr>lQ`V)Fq!@72Z_XM5}fmTh(uGRf^s=-DBMBQ7uhc)U0T_wx&o**VPmp zU7yfizH~*5wW2F^3YxX7=)yiA5@sOKRb?!Jt_ue7bj=@LboPFo6I{DzHni#lK;h9M z>GDB=!swbk+75KxM5)*|ceNY?Q?r3CuuvVU>w3;e8|ruY?MT_86b)QUB^>EjNv!dy89V;na&Bo&B>V@|5rR&fH zE4s8rNOM;+++xN-)T7mz;fM(Yx*CoXPghKO4aWlq-?Of`ES*G+6G_(+6ex_Yx2On7 z=dM=cVGXv?HD|o-bU6ak)i!tJGzCD`Bz-}&P;PMWet{YnMc3Ng+>}B!-y7+O+}zw9 zSr?6TPHt{B#pi}5&j~PR(R8UNNJ`ht2{^j8qrH6TIyu>juCzI%xvM#juF4Y$bJv*3 zmVy7v<6ToGil@uc@OJ1`cpgxrOs9A68Vq2=rzR- z7%V}l*fz<0Myc6=!QpEj)vK>}GSP-DIloOSQ<sqWh zlx?IRYz&y^bmOa$p0!Tj!tZh;(@fN?=t<`CR7vUjI2A`%g=ugvU%JMnTG5qOi$oXp z0%7i2>OBLd zW&>TI;^ol5pjk#*w!h7q=xNT(qIrvnCA9;Ln^EJU=o)xss%&7RRuruoQq3bN=e3;f zyKK~;q?&G~H>g?BbTvtpl&;`Z99_fEUcPiam~BOusTGMX>;=+2)T0$$OJ-XJ{x5S^ zx0&MUy0gV|aF<+n%<{v;nIh>rfC7clReF{k=;|{I)?gc5J5Xx2&~-Mc>jb&FMY%f}Cz~W#^O&I~+{`s9Di; z&6q7IU0Y}4=(>vb@}=w9JS)1gdy?qFULbkTfq7Wbl|GL^*Ty;G>9REW^M~CRHA?5D z&Zb9mMAB7hE({b#mv*il=-P==v5hXbc`!9w=mH=ua)E=lS>|W`9n9wnVHc~%dk3S& zMPo2;o}?J;nTNyR4%*8XgD#6822Fn6K?0!&1Ln)tEO(FsRFRQ!_|F!1nor=sagk-v z{xZvKpD&(+7gZl^ajEu&wG3Bt&DL^<3prD-=8NQ@<^nMsBrUK52M19qwsBBtq0Jnu z-IKnd;hiT&+V#TpDS?qyDH>E=t}eUlkWq&k7d6Wa867*b;7U)5c8uC_HSS85oIX@! z+l-~h>zTHpW<}%mVWFgWm0yIzs~y_Q7q2x-t?)9q5%I!aBCSMST1_*Gr3Ad(7K_J= zz8vToMis+cBKa>CiPsnuC~TU!j*5_U9j?j}Sc7eN4PRn2ULZ4}Vy^>hjC9)K&0kz5 zGOOIJr*Bhi=w-Z!8W)9^bAg=WuEm>EwCasR*ZwY-_n*TrJ5Y((_ytbuDir2L?9A2N%UcPvhSZRe< zYGoo`*o&m_o!Wo zw%Mz7I!w(Lya1rawU!-VWKQc+6yBpX`Rxlkkc=7^&B4BONjbQij^n^#CEUxGgV;5Y zgT_BEk}?`04w%=iSuT=#s?^cgn@BOJL#uPRT5Bvr_Lobf>np`mP^5jIt=~TXXQaQF zpR$YFPuD0iV0$%FIg{%ukrZ@Bfx;+Qyvhy~+()U{MuE?2n<;qOe0k1|GB4${>C)Nt z?Uz)cXyDde{i)y~<6P9Zs7YpbMb8B2trXt>I+ zkrb|WYjAK4M0@$db#lEGT$vOBF6;%;G1Q?ITw~S~;A*~BJX~?lCPam_E|0lDieD=d zu5=VA46aY82uaW2eAdAlY=dj@I-B7FuBA%OEjL0=gH=rua^skFxXdbZJ1*&Ie1{qr z1=pdH+pAEn^(gvX?kwML501*|uMz%khwnR?nyrU9i-s$4y`*q0SdW8iAKJ?ou3DR| z;0jBPfDefOI&)z!k7{gyX;{H^ZxaEonH$8z6?*cInX_NIVJ?qOZx9I=*a!oK!4Q+9ws3{dSD;lm#n`8ZT;I0aD76l*alZf z229NsxB#G*jQMPS#7?#(*u3@tWDkoD@ScYn7fr#93`r^Ynt`LB>K0)XOx_MDV0{LO zDj8}08Kgj!IyM=5buXoW$??Uph7%hl0`E#fig?{_RUCoRYL6N7f&uUwz{%+u6p zt4ItYQJ^pk_H4BS2DvB|+b{^-W-|u6=gi$WYE}V?HZ8n2f2(UHiZ)zPh7=ulM!pR- zE^3Zx{XJ#Pn*+@#dcz+#I>q@OG18_ACxa9IDPYP$&5EY0<#tKw>bo6B*GRON?;P`F zmla*wg=mgpe+J1+7xwb#A?neJuI0N3bOr4YPgmgmPp|*&_mOpb*3!w;9U|#Ei~@zx zRc@yp=o+vS)?gc5dr@k(OfuJe9)#;w$!XInee+`1nKQV^=>Bs%bTO9N1?v_?*Qe?C z+?Mb6qUfCkZZ7V9^@x!!bJ)3e{g5-po~T*Tbj{f%DP6mE;pn=B_VT5x(>^P@GB1$m z!d@SB*bVcrqAPc=W#IoZcWv1%p02NMX#-}bR>NE$J>M;oF4-O!D2%SeJ$9gLA4u_w8xVZv$L@uLL3k`9aKE0W09mct_XdV&Il@zwqaEJ9Mg#vGA?uX`vpTTbHu zVDr`VCtod(!n#HAwQ$GbPEih9kuU1hj&7;08DUwe*9%GaHv zIKFbxUcP*lItlq=y?EHL0`bMXc$j(m!B=OVyKtW)k32>|>&yuPT04)4gy1C#6b6Cs zaXUaT@wgNaJVdG41_85~pVa{XG_u^dmU*{3VFLt1LwX$l-!+wyPMW;xT6XK(M%w>H zlVZ(kHjl%vweyKz0{zD(h-A;*w%MS$#gX^zT zc7W?4O2xKI8Q;?|H5=eM{$FlN*Js5{wAZ)XlndQGC^~hqqhVdjYvTgcxTqN>HgZGr z^XHpUw6{ax%=lV+jP$wGcJ2P>+1PXwH7gpfN@pa6%jXOZE(O}l7p~*yAzZB2L#A#( za4~I|;Uc_t^$6Sa_{Q8g%ZI0J4#hw+()p8Ul zjH{2R2uaV}+Mk0p*v8eub2f7Yo%1+AZ_mxWcfbc;88J6j4`idpMR7GnRj$}XFMo=@ zwK{Oyz-1qd^yR)~_doS0U}|z6<}8}4g!7VeHSau*t37BhU#@Cgf?Tm)!XH>3-I`@y z!f)n^c;wzB6L_1@UZ^nRw~A>RYF0E`7cNT5*1L;1w#rB4MR)WFm|yPFDLMTr z@cfpT#1fS3vPiIcp+I3^ZMbX)u->9nY@4*YU4g0D0v2;V;Q8VJ?KvY?J_WwhnArln zSE0s5fwgdz6Lnu-%S6{ZSspmdb~n*u3=xAT?5J&ejG7eBe0lHq?;!#1}yReMb}Z6R(Q?1LBOl?HSu`OE3{_n*h}mOidOV>e>n7} zCzWzdBwjmEpfJ3OT(<*Wf!ARTw&Ar2rDg+ONhO?Qzs)aTqU-94h7DyNC<4XW8A@z8 zBX_z1>lTHVGU3x}?~P3<`if$NSKU)r<@B^xrygJ0THe$NH7gpgi8mz0YyAxzUgywW zzIe5{V}%!Zfv&Zz@xm^ax4a1xvBK;9Z314aZi>h2Rfo)`r>EkcD7t%7Bwp^fV4yI( zRJZJa*WV}=+wdxO8>VIhUZ8VDS;YIbMj9Ne6gKXP`L#j-r0sp+9f2Abh1b%3Z`O=m z-Grjs)ba~`^YE;kzWMAz>!o{k$ycIgMdS7OwxoEu+`-}HiT3ivYr#D$ybR5VvlsS} zqPeI`E4+H%BjDxqk9fQe4Bh^%;~Lx}Mc)62#47;>3d8FpDnin$t`c`)4YuJGd)Icn zj?V>KMy@i_K>3>~`8D%M5dh$1$Sd!|sBuwvJsMx4ScSem6n)LbSpMFr%SJkMPRUn3 zS{JIoJ(#m-ygJ>J6t9?jIJ~Byy?pUXdtilEYI`DH*k_7zP?uJC^?N|TDpQ5{cI(6etX@I`?4_lHwJAUkbcVqttAfy#SDv80&1l%SH8{2cId* zs{Y}3@1hTEq8f5oe&4iW8pt8l87Hk|B8CF!eI9! z%b5LTZEx`Z#ADE~)|EbGrhhl0FMf&JPhWq#<;Js<<*4-kiNxS03KWJxqlb3DK>tt* z3@)P7Y``Ea%sH)jt(QhRb9zy5b20Og^e<;qTHZDp>pp^Yi<)J;w#=`#D!3^{uQgT9 zjLtY=q$@o6uc>UvSEC9wD|(jM@JLd+&OgG@^%m{rOIPSKE4nhek?6u+BK3U?^RS|; z>@xygCm)NaYtMxyF{x_YXVM*>h@`6(3KT}y)F*bJ>k>-EwsW|~Phn~{&;>G_9O`$N zW~3=~MMH~tbQjR1%<`Uq8W%-Z=Or(?U2RgAqO&(X@SE8Bh>^Ztreys8o)x1`pk_tW z8Yx;&rZ=<1I4@}+CLo zr4M>8lCHTZP#9g$Q4x}!!g;-bHP}Yiv=_G1;y?DJ~a4SB7XFlW(pMZc7ku0LPm=-Pz#@}=w0 z8!Ngp!$@-%_5!KQE5h70;theWaj(SFWoh!~4}H@E6L+ksYC7;rBwg=OpfI|+yoNVfRKYyvjGHI^}`2}Ea z7++g*?7-K*C>7gI?+vJNQGA_xJ4(~8 zR}+dZ`zmDE)~Y9s^!DXXHAgbssh6l((R?-fC@Eh(KH~V&qrH6jy8qdVFWG3hN2sG`gUP@V3v{YT`+1^ ziyjZ;{-{~ed`DPLPY@rv9bi zyNzYZcl#U&L5+(BVg5HsLD>5Z2f{ySFJBP+fCDH10Q+$}FcN`~=XoIVS7dhnkHA3z z;9wcGc^?zs@t=4O+y^g=)jeZ>MdqzzF7qxXRyMu%;?8_U<~1kKVEie00%}~;JTqcdit%=-93wrz>yCWsi}!Nc zui^M@D<9XPwxec6M7*$< zNvlwoR?|#)0Rmp`4i2CY0HQuQcxl9k!If{|z9Tch!NHsZ^TfMDU{DEW6-A?0=v5lE zZ-iboR2k$100`G;;({3J&Hv-aWH=TD3Y%tbpdut)kE`kkYp@Nk5spw_Tc(*lV{;!~ zog}BJj%7gN4CXsBnQh&5?@Oq0QFzU6^6!@J2WwKa+l;R>XO`V>q^lI)+`Rs~f|OeU zn6qfSLJC0XBzpHlQUM%Zi_u=bcoiySg_rAiB3{_5Bqt}Bh!tLkoC$a(IElxrT(5?m zRYl5R-r%*-NhDqmP@pipS`~yvNQ&1V1*O327D~+)yt3XdtML49Ii1$f0c0#fHytz5MN&i|0$!(F2zXs8Bpxrz>89le16`z(`-PAgXR2snk$Cx{ zKw)^zD{Ke6?x0j`o4wk&z|?HP3jh#Z^qKh;Ub0sM;gb+)UQ?sJhoiW`=TSdfkuwrwS((0FODf*N7 zD`4)lrw{j9`D}cA2a{V-ksSD;Kw%vGRn!g~JVdG3#({4!n>mn$mkKNB4Jg{MtrkVQfm$_{+)HKn4BV#t#8scT5H>=lgt>@H?x`~<bR{&#Yz-iD#8$ZWOiv2E!TCsf94NIQ)^e4vuM1AyGn}JQdb;aCbX9?UY_n&cxh9K zcwsM+>Xm|tSmE{9jeysJQsVKNbZ~0M;mPkYFA=|3N+e!|O2a^5c!idRMM#R*3Y3a% zc;%whY&eTEgnTrr}n^N;pv!e03=_V;&-`sF`Rda`X`Qp{QoE2V~$BB4hFOnvqF0Jr-U6z2? zzwYAkvc5?A>qh3Lu-|FQtBgpzqEMhPy!Mr`16~egVGXw7HLxs9%?7*x09lS0s?&P+mLk~9&Vd9Y*Yz~{*-+6(*03GDFtd)G+^mfBn9kv6&zsC&|bcPeUm}J zSntaN56}$u<9&G?uR88t6=q?@)=n9Lt>slkQg9sw3ZuZYnjI+6Rg;2(3n(?4DJX3H zs^bH-Wj0VSvETS}=_x}gI-vUd*4x_@rfB~?Pn-XnGL(u&&5EXAolH^+&dP8Uyg_^U zQn20wQowq%o!5Ve0_M$j%=^AWwEoIy+}pl;Rwp13=|Mo?P<7~ynAaSCi#_yeaxHfg z{b-)Qao7AkM!IOXHUHb*KZ^QNT_jjuHDI7Hu*TQ016XHJDz;t8)U63qvjMEmDVvs# zA5xW~O?yV2O*~n_L=W)2|DsZ<&&CwgxTxu+R>gf6+n4mF==&kXoMTV^YotSaR&wfG zx-4}CHH&8JqRgm^h?50HDB@J=XsiEbX1XBeIUU~y^x1Ic!IW${4F;hfE-;U`foyph z4=99aT6=p)O6zbB9IZ>yUcR(C)P=Ox`+3!swgJ(~2*A)vVD&rd%4)jWSBJoAd@b>; zp6Z<7yI^ur6S^hkzn^X~t$9kTu>11WwM4Rd2L%dawMlI|usW)^1;L3{aP)wcn}iuFoz!$O1=(*}c8XN^XWn*)2*CCq_t z4G3Hvt1F(XujPEs_ZsX+(Xrn)1$XrOB&Rz}Y+PNlcFF$lbwzU3ydDe`#?|C{cHrs) zO2sy=JnO^MY~jj~zU0=V{&ISM%DCQ_A{nk+JE~P*C(Fm8#zk?}^5ptqu63%K=zHB} z{M(25+~B*J=a;VBP{ec;H7lAc=LV8;Rj&b#D}S_?FIU?eL9SR|Cgb`7ab@{3nP82w zgCaqRLu(7_&T7h1HzJ@V^AwL(jr4u#BRsoMwD*4Z$_2CjG14`CD-Eu=dgT7To+8nj zfdYl0^$-;y>FP!OhOh?P(3;rLcChisKzsQzU~CQmW>SpTSedhg&!39|+UjU3C}p`7OI*V%+k(JA-PQyK#pE+Nvhnb?9Y97_)}A>G;Dc+lqfSc5DUf7DZOc^sSY`TxwHv;VtoX9=6$Oq$kS* zCjYs3zkC5|R>T_K1dWei$k2`eYtuI3VRhZL&1KD;q9*hmP5%4o3sYB=89VyEF}96J zSeK(fVX%HgMM!$u*1oM2ur6#1^|b+30H~7{3Z3?$i}c+8G;Rg6*Z>Sw2BmNH$wrNf zg7rX~j$^{sH8s(xp}lXvI@OkkA4L23B`(ScIft&GnW7tam6iTfkcK`cBzela2IWg{Vm(VVx-25HT&iz|M7YKOb1P zD6kSXt-N$|qKu+fT)o_*=;}Hq`a}n>(>M2*r~X9EiU#YfkECF|@xg&rS`PQ}1#3hH z2o~!>iPUCj!us)`1jjO766()t(rVFxz}6GFc(y?QD|+)X9-VS}|D${V$Z0Bkfr?qi zlTjks>V*P@v9*D+16yxVDz+`-b@PR(*}@j+Qz1clKBCX!&I7ZvX``}~LtZ26Cc94{YI6~ z(EhooanZx|IxXpN{X*l0Yn4vIrh=wj;BaMs6GeM875sRcH|LVuc+{iSfPMKJVZdJR zByzwO?+gQl4cPF`b{Md0Q7X0#*n+=FF<^_%I(^Y{o5Z~2Hf37pC+B@aQRAWx+eZUx zIo&I}$A?~&n_I0}jRq9`cY%kOmHM4NOHs3;Ik@+mq#QVQ!EsOv?d5ye_V9xo)CK^Q z@Kvkg%`e6Y(kmij{ko40UlzK}->V{~PdQAX8oF*dHPaPGP$XL)@sfv!# zC*Uf0L8{;`ssMd9fq4%{T39SRTO-M}=VnTxeLJ3s^q&LB_8@CA=(?po?fmFd$ zRDnHAIDjf49gbXeLQKf$Mld10oAf43?9OchP>V2Ocy~et@!jo5LWe+Z64E9MF`-2u zp@h1D(wk7M2e%1f$s$b1B~|baRbUSiPM}IiBpCEUOxW9lV8W&z(wi`|C$|Y%V&;T# zJqZ;I>uEm{{DZhjFiaO>g4}#E0Jl8nnoWbGH=%4Ww+WeZMUdbUOfcaas=yv3Tttcve$YOD|w{CW{eXx~eE6J))) zO~@2uf?IDw1jSv&glS(**N|5qmZB-v`6S6EPc0w-J7W5&QFr|?35kRZgAfyLkV-g% zN|2I-zx#8WkU2tx2`l;&Oqko>ekKeK!43(aQ<^#A*(EcI9ggOHV z6;vExKNH@dN=PKg#tJdv0jY$ms01lV*fWsZgltRdLgs{x0|_Q98)!ch^nS#l&?SP~1X-#G6WT=(Drgj8KNAW>a+{Em zAjE`^q!ON?5~L*I97>&ZKLLnYwlGB!OxPA_KNBV?xlPEn3@2W9)4l>JO79?fk+*lZyrfM`Mq?@J zVz^C^SuQ(ykuW}nU_w%i^dy9;xJd|$6JbJk6`_I-D*KsGZZNkAUhzUmC^DE(!hfg) zDM`4GQYVp+y;Ot=S4b6{7;HZimc(+K;JR9f2{U2|CX9)do`k5ld`L(WVM538~A3m{2!? zP(q~y=}pK*sgph~;ZG!7U5hi>iRqzH?U=I?GqDn|h+2C&> zChQtUFk$^L=}nlP#BBmtA;N^wNrVdYN%kYbFPWQ!OiLxa&W_qA6G~{DEWHVC!?{h! zSR}#(=i!73KBEfkLBe@d35kTXbRi@hB9*Xxxb!A07{P6VcBKdtri>t%FlvPTNC+Cq zO+uFCz{-n+&LasWv>7SA303~!Ho>r1gbA*H5Gp9}hy6^rfhr-9AhTTi^D^NKsf2^5 z1SuErR*d2{A$6k&6XuR0m@sLS{Y)5;!c9WhCLxETz!X9W9aE$yp^kyu1h35^OsHre zR8ZVtKNB9HN=PIawpXlZ{umrD60VX;IEhM-l7x+;xlN$9pwxvt^0I6+!Gu|(?Po&t z7;X~M{uW|FzcGXo0>(&BLX)xFCWLJiVS>k4LIvf<+RucSs1gzh+6*Bk+#{8636&rv z2|LGeo8Y=tgbC}$5lmPz&VD8g8P82ZmZcJ2hoi{xgc5p>m!5=n6Sz&t*e1e+MiU4X zRG(l!6F#C!NF)UA5JJK;QVDlZ2~v_^n#gT}X}t&&woN3MuzI5XOc*hVn}pO2LQGIk zB9x$*Bs~e8CUcvRxm<(^ttS&IXfWA+CV)S=O>mte#Dw>x5+0)xq$J@qN}aTn9hM}* zgadyPOvw1tekP2c!fk?fq!1I5rVvVqogzI6-KTPs0Op7=p~F-{1udr9&x9h=xJ}4d zEyRTXNF`*W5~L*I3QCj+%kg#b!w+UghgqV;vpJ2l5 z`O=#(Yyme3+3Q4@Fn9r>f&mNcM?%wu+$LmNu6TGY;MH14D53m9=}q{CQYVp+X_?N1 z+)sEzs^9^tz#b&*TEuNa)+!++tY1VhVd*02O&GnHn}oCxB1q6LCR7l;*nT9mU&3vI z>jEJrG+sg|p~e#FO>kbyZGvg22opY&DtL)1um=f;P$i_L?674*OxV7ZV8WWE(wi{l zFK!dk=87<3)L(=OhWuqe5;`yACP6z-hzV_$5lZk}CcO!+Y1}55#)>eZKpLTfkEjBB zkZ=Z7LLwpCa@omiVm?SJVN06yCd^%)j|odfm@sKM!GsaZ?MFi33T_fo{}Mt%#}$MU zTCR}Zgo^3hCWMU_VM6hALIoh*ekNQ+m5@mAN)uwjNm2>>Pzh2l;4NFpZ36X&2oq+l zB$zOMrTt9kw~CttndP#R*WoB&6`=%bmGmTdtmZZWh`GI4ZZ)BTBCG9Z!aY<8i3HbC zLP)qoD&ZI^K}r(Vt>HEyZG{LDmaHL|Fk_AVOo&{|O@cOEhzY&d5=!`et@I=`TE}fd zmSy}1xni!qj!=R7I{TUM3{^rRAtObI33o^(TtFpANy4`E+$K;fMUb$1J;8*9>+NTP zdIL8J27?e26dMR71aFX@gw`9mO>niWxCkMk!A3#_RX5ttg!iZt5(!@Ay2J0q;59Kn zCY5j#l^`Vv2R3n=kWmGtF2sb4O#~CtH`&jGq|MwUgq0OyLhNQj2?IAvPeO;kxlNGC zM3~UxZ$bri|F)kA|Dj4qBxGAE;YC6=sf7Qb5~L*ILb=*qcExVN-_vOc=9; zn*>l^2nmT>2qna9k)8zqt=uLARuf@@d@G@Xrd#c2LZNNkCS(dS;R~sRSEvLjNw|no zC*9P^sw~2UquU53?Am5O6Q*wGHX*Ho5E4?h6H3r+m!5=PJGe>ERuo}^-wr|r?RVJE zgi<@XO>nggCth=c(@sJO|DqD4B;htnokT)lX%QxzCslB0r~OQrw~N~Zs*(^AChsDc zFmjjlB!uneCIP(d2G6dAoT3KpCREUQxBX10w1?XS*=JMGKX;#B%%+&3mx*-yydb$_1xi5>Me;Pw`qoGE zozvNJ@>eGM9Dw;Vha6n~)Dwh*D*zxEmv)l_gtYgfw3#p1bO;P8U{1SFkTU?FTVi~; z5`Kv${9Z@8(~+BQ*J@@N-{6A!5`sRtT^ly(Ss%*d02C-sPyGl%59e>&((d&qBUzK4 z2e~zIEr~p3Gzr3K(&->Ulk>PtNt(b6v*iU2V#*_FVhL)E3nFP^2_kC}Wz0vDr>t?( z6Q@aEBSDh~xJ*f!9BxEai|_H#Sk5Rwlj*k`m#H1*Liyu@NSf?YFMGRgR1U{DscqtB zKg@+U`xQ(Caf+Gj$9~&G+@5B!J;k!$@DL&Goha=*M3OuOV0gld%{7fLa6zPT-sj-u zxS~@$DA^&*Kp=VQStp_Pw2rqp#(B5H+?r%t&TNS6`yM7}avGN@SrcZPMW>%y*j0C0Sc!E+-e-^S?7p95%C_~m{;0bO`Kv9+^*m=Ll34$iKaG8=c3EvqI zpIyErRq_O;Jd!4rJlan@o4j34rDa=41c?!S~ z&s1Y~4o^Fu=GG+pB})_RIe(ke1WgX(G9`_33&#KAf=HTJf;>+P(uCQ#t_}O0;nqa^ zo}~$v{eUwBO|IcGC268L{m-D~XCBInp23ty(qxvlP}rs;JLMEEh%`=4O!~eoG5Z|H zIH`D+n|;$Oq)Gnl7e7l72b{GZ`;E?Vdzw~^bv(z;`_<18(q50!=EuIlWBcnG73BAD zK_pMLPuyw^tkRfrKZh9zBu_!sN7dT7Mh;Iqoafd=Tb!i{mi-pz37QpM951f;it$%4oq@(zU+&7r8x^#U3eV ze%&8&t*^>OLfWe{G4_x=1z|S^uietccpDc)@-%gAQSUiTYf`QkF+GtyoqBdnk9oV^ za(L=^HeY&}1(zQ=%q_$Tzqkk|vfQk4pkHu>`??aa+&J+?oI_OB3w8 z-{~?zlk>PtNtzTN8#H`ymaD12WlVV_O^Q3sYH=X8u&FgJh%`=)1*ML2O!>yK)>rxp zH~Sg=ktX@GU+@Y+oKGlad$3>oDz~TE`LbW(Dk1F^S1|UFJaqs-Hf~l4({)@B$x~*K zw$)Uiie1I@MDmpB>A<-f9BVjjuW@UlRkFr8mi>m;2%7A~WlGWnGMFuYfeYf&ggJee zT@#>*r6(NqaO-xRTN5gZr3sdO-|GZTPUAA=)&ziDToAV=05rcYSQDM|~f!_zE(O$Dm(O-xTD z_8B)zpXXw~n-nR*w9LHtKtqA~MaY5Xg0N{07uqIqvkvrV%Q+;`}{~t-5Y?QJ+*suBzx2Ivj zEKjlQm->g`>7qLrrMW$Qy8i+$h|AMf*P2jH|6qFJVjqC)J!Ds#-sRRLE8lbeT6YPW zY{q5Etx2~0f4CqnO&E;J-xaP2$GqS99=9f`@vL!zWxvfmf+mM?nR06az`wX4ZcPC2 zyeC)_uFW}%oBiw_yxIRu66YmK*&ggyywB~aLB;YE%YO0u1W)H>VU#9$dMzev^U~+V zs57`AlBcG%&BH;U2LS8qPqFM5d`9qe`csV3Bu_!=QTOk2!sSPBK_pMF+(}F~PH#_r!UYk> zxhZ|X^WRk*?ALzItx1@Ir3se(3eO3etav6w6Z4iWzm5wcX<`W~_8ij_Q4`b?{1>;i zeZj3sX1?qE4POv6*@?@PG)`i?jmtJgzBazV1(7tNNA%cQtn)LY?1cbL9%UQ~(^Spm z7$;wlCPemo@@D@PNt`T{vOU-@@rv71*J#!_$FlG6is0#=FEL7!JOweQ`wiaHMQ+3e zkvvTc$XGVFOB*T&7epTCwSVjJx+{mLHC}UTk{ZO)1j~Mz*91-edL={?^Oh~Yj0+-Z zVhJkz8q*V56K3N&=WqFjTNAGkmL}MFzup^yCR=ftlEz7*-xb$Wv8AaexFC`ydrvKJ z3YuS=s{BTPCdmc2rG^go;5g_1h%_OwukFK|{bwX`?x2+I!G4jq+@6A7EKjlQ|Cdeh zbV4>pX_BY9<{Ng@Xb(*La6u$bLD`(?p0mElvvEPBah|zy4|NW_BzT?&;lYM@R zWxv!rf+maJ3ed!Y@daEEQ4@r*(>qL0Buy+q@L$~4^nE^>u*V6O{aWt{nry~pN*X6q zmwb9vcvE51|8PMhO;o#&t?IY8Dpmfy08O?{_ZT;OR7(?14Y<8SnvmGfvdo+L-`{^k z66Xd=*&ggWf8h2sBPKugKj#oU9g~Amn&c^1s1DV2J!jm73nF=HsNdzcBV~(HFL6P{ zaqe0w;Yhzy9OJy=M{Z5hdb2davS0ioL6dnOglJ;kvgK!RK_pEqLEs~%C!!{(C-^UJ zYxFO-CSm$xKc4}^vS0mQf+p*6nUcndo6m{eFSh5(@8N<-np`?wyv*E&#Z2!13eY69 z_^^4s#?<7P_g^DTNbILZAx-jU|2|2aD=1}qu`0a-SoU4M5Hy+fS%@a) zEn9v97evy;67&rh#Hk7AIe-1H+?r&lS(;$kukw|k$?7ixG+CRQn^LIed*f|f5J{7W z+}zw9Sr?72UokzAG|9=$t)}?gkYnC|jx-^$Z_@E*{~wY#nJ8s@u>buVx2FaT%Tp}- zZ@&>d9sUiYG?9G(fKmPL{=acSBu@bVhO-X=^$-_C@)Q6d3%If90E7g$mHy7HiAl-Q z1j~NG?*vVz|0hrrhR7qhAP!B;L7#9z9Gc{Fy^nFTH2Kp(fF@AZY`GB^MAF0(l!FT*YGU5F*7|A`;MT-7 zo}~$v{W1jzn*8M`K$D2Yx)v)AWg9Q!f=HS?*cdR+>Bd)M;R2YRNSe%Ar*GkRxe>>_ z{{U%1V&5x@jySAUi!SoZ%bNYG?LK_QwTBKP5fNSauJ zvT;E~O;AtpU))x;5Vt1USe7PO_DdBaXtKyzfF=X4OqC66)QY-*3nFQv8dA+8Dd)A^ zsSu_ok|uqZjT)3x(~X1uyGRof`)LDsvwx8!&QX-IJ=lL&nA=lV_8f<0|50Irr|QBO zrHSmHTv6A3(q>~iE{No*Nf|!8$6`n71}=!?DFALqJ{atP0U-id>1Z=q=_ZyB`%1p3A1s{`xT3FYvPs2(ge$X@uCDx<`og3Nv`2R&yxik zP-k#KBu#GVmge*xdqED0VtOKJ(&Ea_DHnD)ayK zi*b7zsAYMIW&eILf~SLvVU#Aa4?tSv0tfG9xFC|J%z%B?-+{V<3nF<600_HSJ)UE& z&#?rzCYkJWAuRhJiW4*$Ra}@RW+J!Yg19tcFn)>);?N`?_RE&!)+B8hYn))&cPUBG zWL62mngDPD7sRaz0N-#y+?sH0*N`S8_CYApB!Bi#k;K_w5{hFF_Mf}v7@l|GGuh@%z`UDsUx@`k|vH(JFdoE$&!D<1(7s4RAk$XrN`@W%=?#+CM5O^;k?;D zMiOVYoBh~-?9T0Jrsdd0e0Rr9cY>$k?gBgonF$qp9av+Wj|(DsnznfJ7ng|zsk68s zlBb~c^lgd_y*SwaQifX-DvmYIvFyJpL(pVs86ldOw`}EMqCg{6V)4suKisu$#ZZ)Bu&1T&;HW( zOBoLK&m&Dp>}OflKl7jW50S*#Ue12(KPb=bDK&`YDR$n!TAtwP!14k-1*=>hU!QeM zJ{uQA@-%C9$eJ%R3s5Ieb<<$70mCv%AfrMl?dWwRI(rYcPn#ynx;hg z6X*Sll?iG0t1Q4%001?vwd}wQToB1qW|5#v(Sp=bToB1q0D#GFUl_;z{dZOJ(L~46 z1k3)TDg;f`RfK6`CNdot#G#2f=msu`Lz8^icdo{*i8hL*36}lORSBAmsVZ0#0CwSm zxHSRbB`%0t6Rzzz(uBl*Rw8fq_f#W@v$2}}*uN#?_B1e-FoOUOR7*NToBPyx9;js1-Y*GUsvbWBy$u?6D<4ps}nRCTwQ=B zaNK3fm*Ij)nplFa;DU&nm^ZF@-?1jQCfPk%nqb-gP=lb!s2Tz^*YCkTBjAL4>YntYA$cRPIFiG%%vb)Y6B_5+i6v%jSd zL7bI!?8pA4y4;?orLa83vVW{DA?eCp^Ftk}-MAo< zr@-*#rC0dx9PB@?$E}Ihz|sWE{>^#>O~UI5(ZsxE%je^QNSauJ&fAc4ohmXW@cKnylHh)UAAU zQ4aR^HsEGIbrNs(H#H!Llh(j~?4S3{$I}@sPqFMD@+74FyQct8nd|)}V?OUs!3B{# zWgg965?p}Vjte4r$^<|55)F1wQM&7L*c_bs~; zvWNe3o74ZBcRJ_XJKz7`r>Ew5?sI$ZIq#hJ{NCU1ow;YGxo2@s6ihUH-~Zf{jtRR! zfC*OnubL7t8P`-YCJgg8&WVl*!`#C;(J`TIhnmr~9}uCn_O~@7fU~+;{%QZ56+Nel zC_zrK+COGR2;0d@LQaoFFWEVDQE~P!oD(Uhsud5H?K7y(#^RhvIaOTq=~XW5Jmnbo zpgA2A)ocMKSnXeFPQavJa|xL6yvvj?#5s{L$#pu3b0T4q>qKVyhZb~9GG_@e!D|0m z3j!viTS&mf=GU~p-yLhoZp1l}FxfHXR)&WV&$)#e~;y_-7h zPMi}dr;N96|0RwcDd+rmTG27FnkV2nR{IxQ5isf9N(v@9Tc&(I&WVIcu9FJqM8pJ* z#J}UVjMj8a9tqD6vD$y!nt;iO))FxJy5OPF`UER>9nOh_$)V!6SM|AmLU|46M8c%< z@sfQkd!487WOp07_G7}e*8ci71aP9; zm4ZpmmMNc&b0T4q>y&_VB4UC@;@@%GYdbn70agM`u-dxcdlJa`A<(H9PTLNf}CQtzt^4+ww=9%oT{(7AL;YJehkiulv6cHH!lAv--L4_P z$q<=jOc-Vv&WVl*!(6~Q(J`TITjX@@v(2^E{t7t(oN#&mX+NH&=QO3QAg5UE?_vpI zw`L{fRPlS~zB`E{aZdD{TCg!VCrVCFp1yT9k(|{_932yb76MGL+E3yLm~`eOVWQqL z<--u-d=wNWf%}qXbN946=-J&{;2EjB_Gkakq#W|63$~!e>m*bpBIpv+qDd+sBJJB&w)E8ia)qY$j0w#`~Bx8~( zpMZ0sW0EP~iF2Z3Lc6c;PG>qMOf3N>SnXfzOu(dfX9<{$@73e<(;I%u`8X#MCLwb- z-^jGNt5o5fNSL_1X|C6@c2mk4$jUBs?Wg2oqWSxNL>B@$iZ1!5{oO9~oVqp;T8D*_+X?MEzAJs*eXx9GR z?gVfqch5iVZ+E5V)F3y0;x)cCu7t4bxk|_>&$l|q`s18PIX&?E_rqf{3pNtxM9L{Y z5=;4Cp2Qw>OjMQvo@2GYw+8_eyB?A;$&`=5Igv2oru%CQ@g~ptQ-#J~$^*PGh*3 zS;n*N*>Ic_DW^=xxZfKaETw#pi|<9pBp~}i!<_%kBwpj&)r){h>t0eY$=NdHBXLe7 zOmdxKa85)_&`A6{ZoAZ*j*06F0VY`OC-o*^(z&+;Occj9UbMVjTr~~nM8f3jE0e&g zyN%fcI42S&ea61gSN0?~V{`5WsaDw{epY}I+&~wUM7337F{UsiR zu+2OqpW`-l3{F;UzWV1hmFZ|h6I zq(xten5ftJeQ{1CO!(<#%2(r@=$O!s`{(-6F|m3mzyz!PWBmx2IQ5f&$%@Uo?Bk%i zs=shfBupBft;!TzTuBv+b0T39su((A*1>ud?a%8^*M8)Et+hX;KLMP8{`sfTDR!iIh`DudSl|4%$7v z`v%f6F@Gt*1grhc0|}Tk9Vh{lTp16=Igv2Qby|*dB4U!W(X@Yh5FHaXQ-BFp`*DK^ zm^coSfQe7w*9?c9E!YV-ClV&ty#BIkkbGUf6X!(2B%)37^VEG+DcYYkn6CXyornDS zq2}ZM#K8n`Mh(tC?XUEt=hXbJAg5UEM|cv#HujW|Q^u*9`OuGBm0fU7q?|IRs(XfA z(_s}jCsIz;G>?gYLOJg5_M&5A^-X{YR{QI{2$)!UNx=juaxl(`hzW9v#yQb2p+C3h z_z*fKs#gL`u-ZR3gn)@`hy+a59DVoqj4jRCK%5f^6Wh9-2E0qVAm55}B4Kj-)n%JC zafd12gF=VWweR@=VWL_4!9xk)3?G_*+F$BT&uL2TcNXGW-&}7(*cH7cS{rA3rBk%O-G`2e!FvJEvD#nbL%^h-j}%OhjQiu9 zh?pR!NSqT56T0>jhtV-{%@SaO)&AaL1WfFPNx`X7J$Fa0SG!8ws~$}r5MTAw;ow73QHeb-`IpY!{VB!J^NGXJ!{U=%&4%p*ZgvD%+LiV$|$Q4(_M=~*(yy6#)0 z9Op#JY083f%rG? zb0T4q>of=FM8qU#qkZ2$G@6b{u-e}?nt(}*(GoDR+PkdgX7?7XFV2aC$ySwV zif`;0RUu<&+&=P0`A~7#o0dBIQ&~bCu5{%5i_~SUM)`QvoJe z?MICzU{Y6D@1QNjU2+Tk2&kCaF zR8<_Ew-CSYPYfc2trH|6r%dBg%+@Ng$~HJBQchJ@D|;^Jr^AlIIgxUz7Ki=ZREqXj z2GcRg)VR(c5lq0uI9LiMNc&xIP9#inofJ4H8YXn@?;cObB<8W89%7IC>&Fu?u^cY} zllU96=S-d0oE?mFB4KiE^t77u9kwc?aZV&m9@c&?OP_Fyveq|x0$ux$erc_JuL%Tj z+$ZFp_CrJHIW@?QpQ!!d5JK3$P}ubuhAHOirv9~GZ`yBisp_xOKh`n?Lj+Pz)r$n< z1{G(A&Qg}m8h3=v2<{n~!?=DEYoSZ|yYF{goc zBj=2zJ)?Wk6gnnWZv{NZYJcVw0w(3BV5X-@`|WT}Busd+X39fwPDD&{Hrn_7EmP^3 zJQ7~}z#jKkOeJ7qF;xO4QG5HYd$6@O+Xv@F!Xz^A-kifBPvzk_ClV%auV0=1advge zIsdR}bnUC|X?@)9JB(ZNTkT+6b zh(O9IJJ3uapIw6W#5s|2nnUx^&nf5p3#QXCiTy3W1grh&(+QZAosOBFChf~{P9#in zWgLWaqGCeT{)SLGCNUWTOt9Kt5=y|tEK~v}$?vC*Y1_Lw>xOe8VPc%#Yr;OWv&uO* zClV$H*1sHcBDNAm`$J~XwIBOTYwh=%K>(-YjQrF7_%M1-*`I=(VzuuVMhN=@3R^qv z-}@>zPdllsABG_UDW{(PrjPU&7H0?GoJcuUi-Vm?TkD%Qla7gb?)_TC`}wELBw$i< zCT4n?wBHuzM8YIj`vEv78YXn@uboB5#Pf=PCs^%A%_3k@ZI%Q~Cib;Hy4=r}?T&LI zVbY{S_T>exkCb6JClV%oN(@`ns>c(`_x(Y$>Dmu?r?vKb%qD=-es=z8f7~2;PGdg^ za*EZy&m2P787OS+w9hb#hk<1rYR|zCfs|AAihX~>608T#iIh|IBEiH59+dy%n>Ck? zNo0xu6YOz+;#>kII&(48)1>`2I424wIWiuFbE06PLHjG`(J=|QF2Dq<{fK!4OpNDA z#)M(I;GF1~FpL7{M8|}-^_x%EzT%_S+V47_01i7p|Fl0koSswFXF*P}+V=`4g#8+Y zt(EpWHu(MU<_=x9W;lijq?|rFuk+|yB~#WN=S0lu4PB5_?O430C{T z5d=(r;Ud+f{gx3DFyYCXDIbn=B4U!W(Z265T|mc#y&=E^tNpnP2$)n{fSDc%lfO1k zQ{FYqQaad@ z7$T5zs@Qw$_rr+q^7c3ti?=^go&m7I-^~R+Nw4rl5)=Pw2rR*SUrS^X6@UqBY@L*UH)mmUkp8`OesN5 zvD)t%LkRl@3R^4fGxo=sA*C+L%f(=bK+0)mo8mFSmCCU!&WV)M9DbKgrL6OhUQfp) zMTiMj`(En_n7qbCO5%C0B5SUffJv^CJI;xU3H6*mbORj|g}#6%SnUUIAYk$f7byu7 zzr*eJTU4vgw%i~A6T_j3ktY^cR1L>DkuZ^u>-PBk6dlU5I~+ICwIASiw_MJ%-85^z z)kXq14L0VV_Iq!l=Ty}X#ZSDax6>v<*r_ONt+cP`^;wy|?4GjJCJ8yU`lZ7f1(jg! zaZaS1=7=NiBt`opHq$W)a1vmG)&9WE1WcaeA|>%WSH{&hOTZ-8$ra~B#e}N;saxon zMD`b8g4O=mEd)%y<02(tvg_9P?6!U%<;}K8z@(SoXunhSQ{~<`ClV%;)^_$DKA;8V zxG(#guKh@Bt+n6$Zvr@V{?0$`_uNX)sd)=QPO-=R4qFLfUqWGPrG52()puxC(V_TO z2{~mL#xvk1!`k4SNI6xH^s?CuiuQ+XqhrFl3oyZIzwb5zCQopYl6amg<0{*vVUqLJ z-38}F!9>IN{Yl&Dm}Clhg4MqNb^<1!agow7VVFkSC1b)co;W8uCbZ3N2VMJ_eYMtp zlN|(b%y;CU_Pgz*=hUE=fah54b2|xPpF?45tNonqH_nN4&dvi!m}KB0 zC1GN=>DG$TbH=M`?~{N@^|bvF6Q-7DJ#bDWOukOMp89wyP5UkO)3tBaPHXMg-A@3g z>i+!GzS9AEPMP+CoMN?adw>x3aTK-$?Uz3G1?NQPc~iFW0SpmHIpq~)PC4iAcaV-r zBqzWGtNpGA37Fi#MM~m%uJ+3v#7vKlNv52|IngnpX@B$~Iwn@G0!*;l_c}zt4=7lO~4s2Uu>5P_7_ zf!yOa)eXN=@e(k3+)J!7&}!ItdsekaEhzyxuVJ`83M4?4HNym?-)PFu`iS!!ZIT zmvE7ic%FOQFMbR&JrX9lPBu6vA|^Q-?YKWIk&a2sU;!pr?e|S2VDbbPDG8J937cGR zH|?aVk|+U_Cp#{+IXtbl$_3{{!lYfssb;f6e^7W*Pf6E)ruN!5Q4+w>Q|6!c?Ns!f zDmn{tiq(D-6(Q_HC~WPtuh_Wy&Yb@8H#jE}&l9GF^-1;az?!QtL?GpqF=#j1@5fw9 zPP--1F;TGsOt9MLk_ecb!$nHsd9EUVe8A`JIYe7?^~RpYoE14 zm}tJfU-<+9oYE)qPy4M;(sQcnD#$5T`wdSL!rq6%)=v9O%8pwM9a2hi`IwlO$9_K{n ziKfl$3|;#vxz|24Yv1q;0UX^k`KSFBXX!aL(0I;Y_bego-6(7=wV%U2`=>Z3T22#6 zTCi2mVu(P=sp94BbqVCmIwjLFNf{*IIad3&$plP}<02*ToR2V5{srem!$d9P#>vt! z(V+c)=QLmIZ2;`iG+*lHoA|of( z@gf})*DeA~u-b2Rk$_1eE>b$rGvyy~PIOE%L2QKARUj@T9B>8(*et|IrYw zwO{5k0i0|UvNiv}TfLkI-uCtj^c&(g$}ec5TUmx-1g1KTZp9de;r{o?LFTz-3O%Qh z-2^$sYQIJbA?z)eG3g=YG;33)*^>Y>)m@wuDW?YGuX=f&HBlL)U`8V4bl2&$8vFHW z>-@4SbW9A|3NXQHzxfpcCh@pPNtj$l>-_Is*n5$s3L9{5@0Ym^>0< zg4KS9R01ZKaFLQQsjzWhb}>5(ugz1P2fn(ZN_4bF+glezM)bLXu}plGM! zRl4@gU9{GIiK_%~zM_!xL;Llv(R0cO&u_8XH@QX#d&5;sdPq5C81}45sdKWMI44q0 z%l1roIch@(R__{SBvMWpMp0w%#(k9IzTI^?Ca%pjX}`&J0w#xWk&-dtkH&9sP9#kD zGM_0ozb*+Aek9%*w{^Qg$0ReC=j#9az-phnLBQl3E>aRE$86h$dTwi>`i*lUVG=o@ z&)xK7JJ$M!1WdZP)bN_DqCKy#{7t&{J-chI{bDx>;AEkY^F#XJ>$A_l~-|2q@1oT#m?#F*?}#63o{Z)`--6v8;c*>M&Wtu+jLA~ zYy_BKkNXX86EN9_iwJff$s^&t-&pNC+#z6c z8W$-ElfYe@Qg6>TXMf-%Nz(zPGcQ)})2 zB!QEOLe3BEo86=5)YU`4bFB6a?-6pk@-7BxQcfAh!z9q>TH16}M01vTgc*sfef6fGtn)X0Ovl6^cMXTA{aTL+m~6*IO2;Hq{t)Lx!6c_(RC+8K z6WUsz;}be23I_pCu-b3+gn&sRE>b!s4D%7^M8||-8a$DV32oDPO4q*1S8MHmB7yS~ zg`6MSH%_DHlpQU|DOUSs(g-w7CCYK% z@);cygE0b3u;=_Wo)IwFk|qt492wumIngo6lp8$5j6}wSABoI#*>gH3k;4U;V71@; zIRTS+T%;tPoa|ax_n~o|>>bXDgvrX^ziYO%XvEfeE&-E0#nZ0(1RbLAB=IGWi5bH% z<+;&*{$4?TV@9_N9yi{{#kDPZmPt7^rp45)ISn~0@zKw981-U&8HQm>wf7n36+9{k z9sL+)Cu%IgFigoVJ`;QUjO(dnM!8=`7J9Y7y=*9ag`8{j0N)dbF7D`eW4Z9VcEnr+&};5?xQ7lI7z)a(*_2{Zu{Y?BiwNLtFLQ zZ{&v!OVsZ+V~4$0zdw4{u&XY^FmpzyZ&klrrN`>3gS<5|$W#5Uc-4x$s2&Uezm7R$BeI{fBNV)$isn`H7BY z7)DA(`Q(_F~OsQz%aR! z|KF`!I)#7TDg3MSio(Cfs8P(n%CCzE|6ZLPlu%tTcb?3F* zr_2<2{W2>OTZSu?#~034rlyQnR$tIrIp$(9rNtW_bH6d_`N z73}da0X2&2(dLXIQje_O@e|chkJ`JOahzZOjN|AjryMt?B{?4Ma?~-#CeATw$6?1b z)nUgm)#4p1%}jKBGWCR`@rW~yE{)GRR=&-Xka5!jlfjzGOB z)O=+a#x&{@&|LMKHGoDBy;=_JW|cyL9X91Q(6D+FYTPHuA87Qz&(4m*cGZ(`U{@PC z6WC88N&{QG|M&KKAfEAK<^a2aC5(S#>1Lq4nQkC8e%r}kK}}6t9R}iAycx#tywL)* zyIl6`@{H&~!a!uLx+mFO)+Z^ThM%R_s_DGcJK5i#J)v-8x)wmYxc(N+{ zin%S1HyR*6<9XcA7>TSe^9Y9y@y$pfw#Qhu3j|X*5+@3rio?G>_O$GZG z_fO#3g1T|c=`gUx{Z~Yu2m4#WE(5l>e}CBmu)l~ehkz~a-`ux3*k8XdPvycoEAD?+ zbsy|+`xg^X7lr+!P^Jo2oih7Iu2Tk`D0M0eO$S@2^uF+{6xXRw=<`CqzM%NZ1E8T! z<@efxdjH!|D4N$7(oj$7>kEe8`01+0$a4%v=SVrr7$p&_yS3rCG&{ssT$ z<1F<2W0>MO-|sXWfBoj~Q(iS$nK*o~vpnSZ7rDvW!R++sYuI*QPqC?{C)wv&qu5#U z_420mCM1sNq);Bao2ZOvX{B1S?Y{DcAtz%imSunRoxqxYIKw6%KhE~>=)t~yFiU=U z=PKo(N>x>-F7H)_qEP!R9%V+&jXcLKsq3r%W<5h)dcfAZ6uBNn z+EeP0ZgHMu*m`7&8pZXfgf8z?=<87=ny7|))Vx?1*6I6l`4-E&iM5wzDv$hFt~%zN zsXF9tnN(rCEa^!rv!p$y3RQ=0FC12TlweEk-_IT@ZOj$x)`P2YU^-Xqa5!h8w~E`b zZ4dV~Y$rE=aunCWaVWP*Rg1fCe~slUh#d=%QPubMF)KtucfvH|v# zXtp+dm@gNMuUi(pxs@`1Dy2dB@39x3U-h{Q{N11cr+Rfkvt3m(NKue(QmY$n{E#6-p zr&>U(Pv@tA^AT}>*ADH$_*F|+1LK$UT>)&d|MQD)!1eCd<=}V?`mP7@oGH5t*y8;; z4L=Ry5w>qb$g6Xnr`8D5uEze~Tu&CCBdO1Sa`y$c*5%3d#kDh~zUb-k(<;Y#KQW3kT4WG6Wo-GlzcMSt z9cQb?9d|U1^XgI~ZdA5u+=czs;-)>V9JjJsg}5;fOUGF@FBVrXy|zW?D41f z0=v`3b-*@nyAjyJV}W{`y}4wZaQ`(^ZGaskTXsa)F824V@BqYn`pq>k-q&wUY=!Q4_Pw>*y8ab9vKbvOn3e1bjGRGF`Ns_eK$s?5J`sw|{ls_aSqRN3?fsWPU1s_chFsw}i-s;p;?RGC4w zRM{QlR9QQtRN3%UQ)OcE*} zp1}Tevmvmby4MD_RV7DYkFV$g?2^k}fnBdtGho+GGY0mBhgE?sj`w2P7BHXL6MF+Z zLVtw;yUM&!V9)zJ4A{c`*D@`Lb!xX6xlTp8QtDI~nhv&3twxRFIyJLK5vfxKW?I#$ z|6<+24uzt5-606|l)mn;UNADJ^C#`4b;HH!IH!n}y^ zFA_~u!*TMz;9oonMKk}hP*3Unt5u87tMqlR-L=X5%cT9kVHg?`%fHpAQOv)Y7Da@A z2DSN#76AU)p-?pQF9`LN&cF47F{IVM-VMn7i|t0Me|30-vHUYdjbi?ls9Qw%7l|gS zfqyZ#9Jr_-O}V27s&OAHr?We%?q@46{+qqfWHsv-wvD}6{t7$uuL@ib&&FKDEPL*& zcL(mvM@O!>X>;x`8#B&-TSab`d1GDh6j6icp34?Avlk^^U4 zkH`Gaeos)<=cCYW-F4OJ;^3N^%@#LcPwNu|?3-(g0ejBlM$~JBue+QE*8tO7!+W9z z`%eYeBnQ1}0PM64M}fcaJX^i>jqeY}H&m7Z@eS>t2HJP--wf=Ap67vmefe)-i^n^8 z5XLw9Zx+OR(!~haE%X);R1#4uri;eLq&F#qKIK2aXIhzBMxVLj>a@JvExFKIEb6?Ix zvn8%Rmh0=7s)})`s@rE1xsogS|<8=7%O#DrTNE zdHPD#z;1)>5>Y6BwoVOiETv9arNjVTdD-p+c2lQhV3!MA4(y)y-GS{;-xkGOhwU^V(xzi{ou= z0q?ai8C(V2SGN0CD_}=?GzNA@(S2yb{l7<B2uRwp^0j!Q$O38u($PY$j@$AA@6c&v3$!iYx%CUHpjw8#VHql zZKpDhRH?GP{!%5btfQ(IR!wEm&q39>-B{I({?V%8)Ap$DKijRE_+^zU*0jBeI#gFcfy;n;; zvU>AGYaS1KF9hceC7R3t_oA=Jg6;k?cpl|nsuj@pCd0YFR&T=kQ{`AUP`^fG4E?=Q947!WTvWhStN z{r#H%!-G8aM@WU-`>oXP|Cg8W{;xd$fB(59x$YSFL^LMWoeO9h*t(O38pUE5R6fIE`uwejRnK4Vix_{uKVXSn~*D`R9!q z#r*5qs)+FK7MiFA{-ypY(wE!<$Ob78ynjKlq` z9V2G8oY&(~^9K6!nwL8Ep+)Hnp)Dsbj%%5j^s(jKM)j@3S%r0|<5laY&0kpe*tN%c z%=Vtvtz!4LJUAt>Ma+?@%?GvSG5@pY=cR4FDjV2oL&t#l!*n@d=ZuM-nWx^8evSn34z>&iwtkalz)t=Zb5Q6n++P&RRKYqw zcXA-tsYnk>oytPf!PY4~Tb`BTI`s*CUg-bdOJTC`G)f(I%)n>R6uhky8z=bYz{ zt#@W{Gl)B)5eu2XAdJO+inPBoD86V*_s8d^7Mb%h<@dis^r)*jP} zx7n0dx6MY~0c}35nA)ag#c6H6ZtmD-+pIgSFK^aq{k2;9!7i8A96BER;!x+4We&gE zQRDFB44cEP{d^7&N?LR{qwMm-hdrhrws&iPct+gMLvKRI96HC;uLPsplh^drO1+Iuj<>0Cq-Kzhq^~=8Ay4V|&ty1}`DfLa!oQPfNG$*Ep++(PPIV|E{Bw2UCt3jbHwlHJ znSTdRPwD)7EEprtIUsf2Yjh_v{{s9d{A=&bBaG$W0MsbvUx$uGgnub$q6L6|-%%)< z`DfjU&yIBdc_B~f_0PB)nSTZ&DEvE#hQ#vk9%>Zx?^Nd^!avt8{6sbIZ^oGr_Iux8 z_W8mPcGliGY}=O+?D>o^cE!s;c0-yMTXp1MHs*;B+hFZ*wrM**wsiUk_LRFnyC@@o zUG*r4Js%jt&i4yqyWJhc9{t>#4cyLes(4sW8+iu2cTqi%6aNiYBU|PI+J2=#bI8 zw7h}mNO@@JB6-w}Bk~aM&+&aJNUak z!bP|t%5!97oeRcx-{DG6ePF`6B_(zrZ1$JUh*eaBQp5+o_N?g)fhF3>r`d;B2uSf z&_p%Vsjw@7vUir(9s2cnZC_$dj6?IW=N&?KnH;Q4MwKzgTx2heFZ3?ywW}l)mn8TQEi*Zd2F277QZuFLDTlfA;-& zgt7c{M~!0sIrJ|g{5y*#s)2v29vz9(?Pd`-)OysBiBDU_RUF$TuDt&gn=4@-ZSC5+ z*#*|`H5Bi5Md1}cYJ5H7yO0H8W zLn(DC4NV7Ir?OF_xK2GATtwfmf9C%&LWUsLYxVyaLcORr!_$j^-kSa10BmvpBRxlf`wbQxG6eeXYuFv!4j(Q)^Q)tO#^te zC{>d9e4B456KWphsXyZX$I#|{TT>rld!FAFSn5lzJFc{KgaJc&LSgGp5NZ_Hoq^s( zr0%>#6V*_6re{yFGq4_Mw`Y;UuExfTc2{1e+j-r1Xt%-2+fM)DOWRnNWZNM-%h^4h zQ{C?SFf+TK=jz+ls?pl+)La+4+r@qCdWBB1%ed%i=M#6>HoQqq+fJ(n+lE@F+x{LN zZ0B6^pxw9RDRv`#c+CIY@0{rR@)2nFJ11go?YZ+A9Lp8Ox>C<|Ms+s>=MHZ>t^#)X z7JI?Dhj_esSGt1newCRHw7l?P8(`PJu@~4Q&zAxI%^x=dwyAexV2j6BEj0k~4jtD7 z*y8?=Pb>!eE3>^hz^7qbZ(s}k=c3FMoZmSy9zm%`!zkxLZ_!k+^+fKN=Kg; z`uj;k{CEH~)T94my8_S?Kxq6-~4N@Xun@Kiq)V|AY%k>T7iaP*3Unn=2S2&pDoOm^{C`X*`C^Kda#s z{=G#*V)>`*&(B%RzjX9@q32)7XdZw9z`qSB6fNo>>M5OnWybu&acTV95=h}+TMGY1 zp&_yS3qy@!{`m*+aTa?1eMJ-1z`t?>>&bgxsVX)cVdd{Q0WJH2~wee|87g5Qp|F5A0hG6M>!aEe_a&ySxT=@jB0e zEgpY|;SmtulcrCAE$-j*jsu7{u=8_ZKP+Df-1{K(Ux6}HaJ~<;4k6d0*p`%fl#Ql> ztw)uDcm|5=(NFYwp|3}Cf_VTm)T5C#4mtQ28z^^Jcuig|x-PrmUR$ZgO=a z4h8nbUnPMpjz6NI7nuK3UwH4;z>$kUd*r$ZU<>!xFytR@(M6ED6U5l6Z!cU`g&A#5v!&see^vjnsrhyGxA|Yc$-O;QDHweZNO{jvjnC``Ap^ zd&lmTJbdisXG{A94c%m>i4SC{*Dd5f|Eew@zWa`B@ux>y0+R7W!X7 znJQTKhYp%Xu2ZgFlsaWSg(n`iPPw2)ah+;4wTRRy6`H7qI`vB>=cAI3IU5%1$`qxahsaG}GW{6R;P4SA!HenT$ZJaA7+pMUP zY!hIdY;(sr+2*fm$u_3dl5L_YCEL8OkZcoKKG~*{VX}>9m1LXaD3m|9jxb;b4~BN@ z2o>sgwHDsv)GKQ{um>;u4(!*PN`hxpDW4t%?ZRV#dQ)Cc2hYs1?%WDIb81mQMPPs2 zupjjIZ)5{(@&1$D4z?7=Zx>pX8qdTEOF)0|{uCF(_6zq{e%5j@ewu|fu*Lo#>xB`= ze~dDdZ|ew}&h7J@w-1{`u16`IDfOs*7*8^6JsN--#r3Ge%py{cQqV*-)T8&WL%0v< zmH9e^dnb6QZFO7L>k#gf;Pv@+2>0c62=^7e)PLu`)NSg%ACa$m|J`QsnE#pkt8UHa zN7wHDs%G0QsLzwJ%dQUYpNgt`A3S$Tti?T+Zs565YcI9}_dA8Goe6BS3W#$uLi~YZL{z-if*r5RtU_P76mj&}pc5Vvn-w!Q-EvupnY~lEQ=lsKi zJZlF3U-ws$>QA1!Q$B)RcMN({>P`Zh2Da{8Lyh9Pb8K!AsXHC#@e|chciQdBcDTAT z+re{Zw!@;`d}bjE~KBXt_7r!Fg}C!>-tDhc|n&9jfffcCg)@?clU4+u;%l<jQhR%>`hapRNt|=e5xa*yW0Of&Sw8T(z$a>dlEP z2VmbC)dkotb@~BYxW8f%e5MN4dclH)y*!eB2uR^(L^=W zssCcVpxQznbIt1o?x?5q^@8bwG4dRHsrS8Q1U=s)I5%%!eQeuDAM`N)6))(P5yJ-!rLHnzi@xWfSpaZbQ`>+1sCAj7&ZdYc` z2k};3u^ZUIwHE_h=x?}!&rH6pmx}Ls5U*e4S+_X7hFp)Vnp5gg5Sj|M9)+VuaXkuN zSw!j)vr4Oabiyw#(YbP3;)q`*l=aN2C>N_5D34p&D=R(kq%b-N(buAJ*)oPr0D%l{h?ZTG{Q}nJl#NQn*YhPoMY=&1gY0o$Ecd`z!z)SK)n2k_YN7knO}>S!Qn_gxC_dl2p~4rQufty}coK(14+Jt=j{bS+Oj zY@M=3jp900V_gxcQ(MtQHJmrGoR6&3gbuQuEnH=`jLzP+wIDfFH! zz4kcS>8R63rZUQ7SGT7f8x&YCF|f|4#GT!@C3cO!l;|FGA+f^r^NBs5-cNj>yq4Is z^oGPCr&=X$OWly5clVY<2}5t0Wekt`pF3|lxt@EIt9$s9Doy0nN5KeF@lE?bia^>;ZhH)tyo^K@Du-od#?>zgob*UfX)W7RNV# zL=yEGRtMKy1oJ;Q)f>#$Z6G}FyH{!sXy24J9N5C~J8k%f8+pEOX}UjDd`?8O#pg@8 zee;|*-PlB~N13$yUUs6XVC&II)F`e;yEYb)dStVSpQwg<^k1x_4nd)4UdLLEdP-kM zNEVEdhu3QEsW)AQ$@~9D%q&*G0FB@7bJ-H+>|JzdweHe>lZ4zD$f`e2JFr;u*{K@xy9$h_|}XAwIy+DZZ+? zQ+zeXDZcjF4)F)qw2vQ_G`6 zV6Q*+0@$xho&@&jGG4$g=eCA=ZFAXve>T{J(Tf8TBYa3fFM`2Rc}<{tmV?|Ggtb9xuK9%a(b&lAv8u=VH~Y82O_ zW7~^JJ?glFpQwgL8MzjexA=-osh&JKIMw@WcqfNL4 z(I(u|XcKNF>aTuZj{MZV>X-U6_5Lel=hN?u+wbB* z7>IqQm3mb5=8BG&J->GaI*My>2k8ESODM1>b1tC2eAZ!L8y}1Swt5rRt(h5>fXz|8 zt8<>G&Ir>kt`9U@T{}qax#!<`&bLSJBi9!LXUh4G>297p*!p6P8pZXc#-1WlU$&x& zYN#*!6C&i@k4DIk#6`$A9FCA5I20j2eK(K~#tz!}L z9*Gh1Hp&QjCsl-eR#JrA=|qIw^i+ggc{)N~`b>oU^r;B>q7xDFhpGtq=EMm3(S!(j z(^ww!Kf6wOYcC&#cI%XS>-T}@-6`kX1GbaFL0}8DrQW8y`G99i6gMG z)T#YNq)xdW;3uk~PW>0_0+UcEn%4ympq|p#1s)5=$ir=Po`YW(7=4(`zgS1gakBkE z9$_s12B1bU|2iBhBK%816DHmXC=|{7JAish=ig(&7}EH+G?C0d18V(?=Ml#8Zvbi( z^RL6vBEr8EG*J!wb1yzywINNR`aLs1mD;|is%;}z)#b7ZRU50Bs=a^BQ8ns1SoLXx zqiRVFch%WeBUEpbhp9dc`mWTOa6wteKU+D{t-Y$|t|_X7xEgMz|>`&aj@Y4zqPnmM>LA>Jrw?@T+{W<^20Cqz3M_{k% zRUg>m{TW|<1I9BtSRL5n{=HhwCGKx7%2dI+pFwtlT&G;yQO?ueqUm7kl&+FzrMOO| zqt6Td^JPL*JOCQ%)a!xmR63?BRb?OEQN=Z>npD1DqofX9Dkse_)J-KK=GEe?V@q*k`yFK4 z_Nu_12&t@myNp%+LZSTGI<@t90+UCT&;lK`SHXPVu9hPx5auoVEuG$yq zcDG9hV4FTp2X@DRHo(7_eqUg_`*sF)P_!AayKk%v?4OgH0Xtne6xcU2<^X$a5tntG`b9I&z6}=7@R9Ge^oP$1P7fmYwV&OFLaj zwom>&v07_|vgM|2%Ju1S${K-(m2vgsl{=TjDs5Y>Rd%VoR{3~%j8Zi(L0O@5n(|hM zOl8?hkCn4yA1jAWOjE8zq5SvPbt;|VLD25HPXCg{K&`0w6W%B899|uqv!p!y4($6k zM*;su7g_;Zs73X5praC;W0l+h&oPRh?g-8~WC6E8fARj5D|>)=X06yyy`O65kSpMR zt&!os!2Z|#Oaiueyz)us!Tn^y_9%q>pTDkSc8*+MGHL%0lZB>$tuK0Kd1i_0%O~`C zp|3BBWUcDUf3aS=9fhKKy&w(sl)heIc#fa0^!2K>7s&i`ZALl11)(9a{0m2oV*Ul6 z=i@B&{9`U?#lKq7L8|!5GrktIRHw`IkxKUltk?%Rjw~Jp5w* zeL|lXdj2UcX~n;kiRan;er-pgXy#uU>M5OnhL`#2{)_r|h0MQ5D_Z?SLt^M5OnhPV0Y{)_r|m&`w_?iBt7p&_yS3rCG&{srIR<1F<2WA19n zzx>}UQ7D@E=Z$(w=Ul8H9$!@-G}U ziuo7(kdL#_^N)E{VEAW=Leb1WZ`4yd|DptANUVQP$^5gTJ+C|q4T9|pF*DB-+{NIP&D%|4fT}HKf|Z|bpJ*Ddq(D;r{0O0M5OnQGzif*1wlz{xPK~{L4Z^V)>`{oQGe` zzfb7%LeD?N3$6I)JLx=|->>Z`6wUlgLp`PQ&+sKb-G5R4UX%I9mZ$J92n~tlUpQ(M z^Dp=nA7`QGAM;u({zV2DbNT(UM4@QrpEv3$oqth+F(lT%bTa=ujVb)gLPKKtr}u`3 zU(CNx=<`C)KgCiN1-y_&5ta|Co0LhJThQ6wUneMm?qTFG?_m#QOJv%s*C_!oMsuB$j`AnLPYr{(VB9 z7kd6F-WM4DZAYPK=3g4>DV=|YANcA1i~5&E=AWVjg?~Y4NG$)tQKOiD!5{fJ3qAjs zEG_w$|C=QWMKk}rQBUdoixP|>vHpD_^N+1c;a?US63aimPdxl${(VB97kd6FJ{K7N zZAYPK=3g4>DV=|YU-;?%i~9GC%s=zW6#fOFA+h`mM~!0s1%Kt^EcE!59+jUp9q*#VGvCLPKKtr}v$QU(CNx=<`C)KgAC%`S%}O|3IN==3g4> zDV=|Y+5B|>Mg99l<{x89;a?CM63f4E)F|d(@J~L@LeD?umzMlv|7P;}Wr;%3%s+3` zQ#${m1Y=07f5mij9*AhhFid&%9R^-Oeq%=G+-BhNs0@XFS!hTs|MY(I@QeBP34LDZ z`KMrXbDlA&;W+?D_AcP^`?Vc~qM3hbsHb%P85ZNG`!DKWaWel@H7WcHLPKKt7mgam z{0r9M<1F<2V~T6VKZa2(%a3Pm&jyirf-{EHHdA+i3IB=b*ULg8N)8WPJtJzXAt zG5EzckcSI{yqy^3(kn^{+IUf97>4{0l-uV)+-28pZqz zF2%=L==sN#E-?JFM4@QrpEv3$oqth+F(lT%a%BEJs!!ox78(-EKfN+M{9^unLZ26U z{wc~982)WXp=jn`8tN&Xe}?7w>HdrQr%&czOg#$!g3ypy{)MAPG5><~_&5ta{}_EO z`IrBjB??6||GZI8>HLclj3Kf98Ibv>GNAA;3k`|opI&($elh<(q0b9F{}dGp4F9&H zP&D%|4fT}HKSKk4y8oj7RV4Gz(~!cyAT%VFf8nT6%)ekmKF&hVKc-@V;h!Z6MKk}r zQBUdoixP|>vHn%2@UJd~e_3cqEdTV3c=*Nq`-DC(^!!s)(vpAw!S`Pjie~<$p`OzD zXIPn^uJrnM+JwwMwg!cNL1;)U|H4tDn18{>e4K@ze@qpv_?PbP%lf+evd`Uo*>E>s zc9feh8{+26u66Te@4ET2mhQf6sJkzF*WH(G*vpq4*UOhp?&ZtY?d{7>?Cs0O_V#5D z_4Z|#_V#55_4Z|}^!8=X_VQ&X_VQ(|dik;$?!N3S6w04{4y~054~TZp%MPhM0sQXE ztxYb#Zej9_`kP#zyUM`t=FBuW3T%(jI^cI|0vekFyYK0Gz;3@3wx2TB2kmJ)Dg(P% z`v$;1H@+^gRWpkL+jvnq5TAMzK1bKT!6q=@KIbxkz4w(#KYDpYt$&NQ#Gm=kvg>%O;p2mvf>I0?$tC4?&35H z?#MI?ZtpY;?(j4V?!+_;?)o$f?&UNKE_<2gH94(ypjdjfmg&Y{5G>s}5 zIp_XkzyD=in_Q=2DpJm;PNL~x>(o8eD6UhdY8H_?WVs+^iE=^8m~uhN{dz%4qw+z@a@-OPT~J zGfaY%Ce?zJM@@p1KdJ^P)2jq2w;2a1J5>%+zA*|?ZmJlhyn#abvvo>gA*D`*Hk%LX z#N0Pwz&1>44(tc(Z?+bme+YG_-kz|@K$m_OD}uVWGpPx%H|}f&><%%Oz}~UH0kG3e zoPcd!vmdY*R__4p2Jhhc&4^{=Kz!o(8xEcY>fE8x@Hbm$S1Skb__Was*xi=Z0k(Y* zY!{AKrglNBQ%mcT>l8y<_aB9(gRN6xs8L*}{Oc5vI`tJzR70KmFaGb)qAriQ=5>bw zsHgOGhq;0=@*IPyzf)-3fXqKtHOg`FEgBNbKizu#oW=Z0N1qq^b%&7pJOBlNe;ZIJ zn)!DR^_0%PG7bLWxHSGPwIuV;Q-{L8QD{gk|H4qCn1B8a`8W$b|GuJ$76ATPSpLHe zy)HfzxuBqNPNTeh13_Ub?Zq$yP*3Unn=2SY8vkU?DEzBV;on;{B$j`=jrci>`InA9 zFZBEiY0LwlfqykWY~a>DSj;)OhjCj!jpOE?_UEj(26M-MPUk#>=X0&CmU0QD*K-qg zZ|8J(@8yPA9pr*89pcLTeVE(Z>Ij$B?g$q@@G#fd^&r=0?mq5|^Bykxp#O>0Yry_0Uo-)Bnahj8Z|tOdHvsk*KXW{@I<>@#$Dq*HDf8x9)v1IjD-(UA4V2$Dg((kKOI5ZmURq_p(m>TCxP;35 z*FEK@l7B1b_w-W+b*`%PZIzJd8WDc%SJO)}XZ;X)Sl#3D;7BiSCfXwP1+xky+~M^xCMpsXX}(}ODT0~XlE;+qe(5N1AE|(P+)g+rT^aP z`SZU)ok;847St7!b?tyH_q7Ce|1ce3Pg*xCU*Glx z>`z!X)LW`U4N$k5eA^1_hsSgQ9`$~;0=CX*A7Iy77XfVHc(+le3Raz3U_-7`3NuQb zvbW}mhpkiYs8L*}99k8TI&~IJRKxjHSnZYE{e}we?Tk*`xjHqt)?G_->)PmYg9aLK z%02bD5?M~1OTq}QOZ;r^XYg_^{o)Spbmddr!{ZORioZT{E+vaQo}8rXI4rD~V})K{ zxNU=8aO<~ROyKgv4b0&Jr(e*xRz{cK?Ste64pb)8^)t3H2&_J|wDfnBZsQDBdaUI^_E zI=~jz4fPh@QWwnk_g~$CU9)^Bu*(;Z0(Ql5(ZFu|cpl9OqQm4|;bg*?Q8#RjS)HB;6Ql|p!_=#$$Q~$-f>q-=g=5?=YsHgOGhhlB{=}N!f z>yVtxKl5@F{&}MzvHY8i8pZtcu`eS0%S02^z`x+IUGa_Ae2-tV%;MG?(*HXt(ZQVznSa z_`Q71)lgt3h57?Kv4%ac2lj|QD)bi~2h>}_{RM4>?Vo!uw-?&C(vARortVf?D~`hc z%#TH&eaGDCz^-%M3D^^tJObl?eXto^KNQD%@AP#rpZMwNz+PW03)mi0O94FkC$PZw zUjgwHj<*eEs$iYZ4{A@YQ!%Y5bxM!riHEIIbx@hTNQYhFsfshMbvWL8wz_+exWY@2AuQ zy2~1J7TkwWc14T-A@54SYTDlSiKJA5@4a!gWh!y5@QIe^z_lzy0m@(Dr-Md7S+`=UKh$`_@|DxAwc=v(GxK zvw@v?ouMP_W>cU8tuM3#IFWD#nBBfn<9N`2YTz1x+5U5iAA$acM{EX|?Z0lxN03j5 zwl?U0y}|%scKeW{GeQ4OlS~A4?ho@lV7wK>b$I*l=k$#)s&ha8#D!m{0y_!lR1!{y zQ>V^iBU`5qJFAIK5#8xTMRe--4ZG5hlX2;tn;l9&)b4Ql;Vy^MCr&$(9^XGDy>DJ> zI=L=2J$i0p`u3W!>CWq-(>q43OP{r8MY?0yob<;pywdIG3`qaum3#W5yCc#M+4!ex z?_H7}yJb=&2b8uAy5yeF5HUR|xiOx~)zF*P!d+)c~V| zd9S232<{d8b81y^uhXzc3xG%cRs-N!_w@k|NbUr1t?^C(UtL`n;FtHO0F7bCXS?h@ z$k(}1Q*bYIv{(n=$6B|6|FWu8fc72-34xKT!vnDjvB2ED4_@<05)mZ(2) zOzy?6M}(b#9y#@-Nye#1p4iCNBWG7N(W8qvQ4u}*5$g*da46#I3s$}8vmL9>BCpUVAIr-;_jcooo_f-@AUBrp10RKMVP{jFXHHgoTT0izF9Z1bCu=LfzvFmFPX67(MmGOW^ivc5xqHxwitw++yWbtD3?IkwO{X}< zI8Jpu^>UKq&~1K>wsHQB`SyP})?Yr`v2LKhqvwT@jsY|KIllCFb&TyUcier;($Rc) zBggEswH(`D(sR7HwZ3Ee`{s^GQ>-2Hh7yhrfxR3jpB(J?F8_DOTpUW}eIA%JfS!!< zeIEGSyA}9Ojz~BL_7|D8C+=b`{X00Rw50aq7_|Y-H=vz(H!FM+G=h5j}G9u18$?yq|bd zt2()7+%M#r1%t?@qo$I1wf`WGR-HixX!Irjj?f`byR0Wp{&roFo)e=a^yg4o!3k8! zv7?lo14Z>rPN&+>*hg*dwu2hlXA?DN&>|}4xD_?G#7gO5S%(-qn4a^>{l2I6P&$h8 zecv;#WeT{4yaVJP^Cocd@Elvb@ z-tVyhYsM@9xFA;pV5TOZ!)8N&uz#y4uQ7<<iOi9<4gef;MG>~-)dz#~8P1oQLa z)CPc=@odCrO0~Z4aT~#}Q&f8ao%)2+;nXRE-)L5{b?P&&|LOOc1`nerKt!h&)as&W zUw<9d$f0pIamp+E#kRHCd#~)u?hv>q`%Qx#*~FTK*@Ge)XBTXrOMN<@ttkHbl5l=K zoLuobl1yrwNG_?9PDWo#BOjOSB*%?dN7k6Sn4Ge86uEs{dvaUA8N%~icSTK4RnV!F z;Zk&}LpNh^?{Oht4`78$Re+DTJ_~f<@r$Q|`?ES{#8@Hg7F@Xhx@;nI)M(m8)iU9mj{J_{03Ps1h{{_ zyBY86*%=Npu2jA~0Zma>A z?H`lfU9i9IOB#Uoo%;DWFyB*Kbh-fWp0L*dHy!;D;F`U20A5V22ACaRlYv$szFDz) zSAY*zaAA>3+Pc2 zPK8sC&SE25j}DJj6Fnlv(TR%a(dX&Kq+(VvId6V3*=%_+IXbkMe6YHh9KW)dOjuS- zP7N+5t1mAmJr@;|GXG-o?Z9I4&o0HJk!dm6xn?m*R4pd;KNpeHJ{FN$I>qEh^I|f; zdoj7iyO(aE&gpegg0spU(iJgL%y@___yN z!}BwS@LrSX=<(JRXb!u-gd>*V8oxe!7r-?h-T-*_r_%tR?7JD@gb70c_KB4N-17AV z!FWq*ZILtcy>;~-z?OBN0lcC9c7X5nf||+9_dPySsKQ8rcgl#4>zc87^Rf(wBdanzk0)nT-}xbk-SVYJ9?rQx3yq2ncYI&J z=K4iJ?b)~98eGfhU|y?Tb2PxUn6tnPV7CA0>tBEt_%wssQU9_I7;j@(P2f-YE(bW@ zp*QdkXacpZ%=q0pgZLh9Y6LLb|7-qmFh2*UjN|nmI{Di-3Fu1(PJvTj^01MuFPT%+L|IFH{bMkKhHnREW;IAh9JB1Tf0sg(fp@{R(avFVh zr1NhmZYh1=%iZbx{3Cu5;9mwFl9PXV*vRHzW`LUT&t*EDs0#4UABQ5&zx~)#I{)$+ zV@T7#)wB8eC$kmcpZyGahB^5+02|r-bNE9|_;(5?D#AZs^J&TvnU2b8uD>WdJ(#Lo zm9j|rOmDn$e5$)LtB#4%+sr~aD%4B4#U?~Kv&}AL-tWhhU%d6HpokXKFEK-@3Fhml zn-6wT-CaYexaYr7UoMzYM?UCL*S_9Sj@L|34jLYybel=fdF8G{yqiTwQNDGEzuwFM z-}|%gbzM$JgYVba_S*^0p#7)F5P;eKd)~|h{jFJ_3$Sn99Dw`WJ`eD<_}{?yl{uGY z1KjNKYJe{u{s8dCf_#A4@m(5s4eVQ3Ui&`4`W?anc76nZH|OE@?!f+QuoJ+{@fObh z#+Nc$Qfc2GKAF$2Q(kQZbgCGq!>LoBu#v4(C3Dn7r~Ky9iHhjd*p9BsgDpSHT?Q^w zyz!4vnxxgFMs4?1y7oWfaHZ=Pg^$lU#Yr;_JYVDt4)Gv$D zDZBF;*}JFL%&uYhkQ(&iFm>d51m%_(LoKz5rv6&}8|Bc=L-`Pg^5fSb#>}TDp?vEQ zJ9hoed+nejKn{QVk9lpOV^TX^u$SQJt@Z%3{Z~2Zfbaefhm8gJx5U~27n^PZ+Vr8u zIG`9l|*52wC(Vk28$oCDQFUoPTAMf7FP%fPJYcGk*%>ynj0c~(^NlnK#vKhBMox$1mAAc{bzXhM{p7zl9PW+u#wF_-(_^1KRy56;Y3CF z*Z+*O?dchSYOSr7`#jqV zle*i^4yNb4^7c^~te_((-#)4+Vl4O_f_eWe0{Hxi5P&C7hrj*eFmMR4Gv5QyF~zGH z_}zrYPqqQPu-&~9#MKt`1R-$ zPK8sC3|7(%Wb4sqT>sPSQE&)70U~-7=afUHI^~c@opQ)@ryTO2Qx18^DThpS${`Op z<&gi`Go5nCe5V|;k#i2&-#LdI>YPIkbj~4toO8&T&N<{^=NvM?IftB#?X8@1$bX%3 z$atq5vc{^))}tM(rRdRmc~imbb55U6g3s8>AN8UObKe5<`a{R?c5MXPI}dvWp3!wD zqzj1WNz1lCf6m|Y26*3I_{=l*_=~AUpuba-^g(;J|FN*;Kz~x|PY3v28%>}$=OY{e zZqaQFz|8(zhkoNmne~JJbzkRq>Cwrx{CXs-DWFFoI2BGk+JTL1Jz5n;=l|2|k>MIT zQ4u{_;Xg9XtkuS}9{!nW4_jSJi=O;At?%?I>7jAe)4M#cn*Q*?t2D=$ytIIMo6`!{ zc1T+_G9Y#K=-fQRpE1@?H}sN(~0o)g6Foa}&oWk@0DuYXPW+kfU7%Yj}xy$AsM#Ey4SlPw^h z9-mJD+_UL1fL}Md1@Lf3_?w~3{!{UpsgV1l|L%YI?v4JlgQI&SzaA0Q1oX%_f+iWK z9$8@{TaQfEsfixN;zULC=try<9Zq!y}$;yl)heYasxmAVuaogqwtWN z{7b?{Hvgj6s|o)sHqeQx0RKF2DB}DJ!Jg9jm&zEU%zYlxJ#=vXu2uKV{QNT&`g~}- zk)B~r{#juon|~&o)P#SrI8hbgUoH+soPT9Zr9e>S+Kbp3nsCqMsWngZ{?QFusB z{v}}}n}5+!YQjH@XgX05{`DNOmN+{_leDYRg^VQ!kt;|3LEdl-CyOS=kX?4ikj>|Z zkx#WplV{t$Cz8gPC|;#SQ(vdl$$rwNbM~cMF4-&d2W9&O4a=@me|om!v~%|Fa>Hz& zkn_~=BW~1D?|L=)6N4NdE^1W%>E1UnNqFq72S65>y+1f zf$w#kVrb%V>XauovUSRNtD5N4MVzRJPHjlDA~lEgCU*z@PS&V9n=Hv(ME=u%5&1$n zle8p%C!H@2C%q#_lljYrlao6RAQ!qglgnN0$Yt>gk_>bu|NYmK^o;N#H#Pr_Y-p(< zt95oF<$n>R-_b7QCd*&RtNX1;*KPEi|M>k?$G6iXmv4WS&Abla+8H#tEx-%ozXq|imf%~8x zI0a69$-qXozUEG7oDhxzLexPCwGP!k!0VRq%7qvF|8nn=vaFrVK&#FSg>Xq z@%UN{G2-o0BK&~~`TKK%JT}Uk%p5$Q^dB^r{CIdeSsXE&TzqK(sh78sTxGtPtQxe0 zOjsRAZnK?C?yKWQI=i+Y<8dh7W&V$}K`AF?vLO}pf28Qy0bOJ1iSXt8Us5zOI=t{_ zMVDb)!8LQ$^)A4}of?7ri=DH70r-#F(2fq~{SKvh3_LH{XZ>)XVT*gM0r=qAV1S2d z1Oa?WF&1FTd`=ctB2bH3EN0WjNtrWt%*_1%dIkbm5^6#z5ar{Xh#cu+=j zm{j;rEB==f=?t@dneT_Y@8j2YhuWE?;Lh>rsI)lqmzPW~lfBb$HG`_+Vh7IAcx;nquW<@J!<_uH!bUd#Oj6Z^f3Y}G72sbk4n>@QdTI38 zkImIOa=AtC_TfR{IkMFHvdeHsR{pLaiSvp`yroyaVX;a(>qR|9qIhD z!7aZ-|4#DrFR(~R|L~BU{7b?{Hvghes0sfpPSS~r@NexfpR9_0dEijQ`4@scrSmV9 zF@{9_JI&8OS*`&8jQ^r%n3I22*vRIe$tgAAUo1{kgnvfKLx_rg<>FAp`KNc9K0DI+ zXM_v( zaLez|zl;3*EBIT0e^GcyPW~lfBb$HG7u1A*78mJ6Re*mUI23XIg z^YhR2fdK!EFVQp1$v-P>Wb@A?S55dAixX7={^jCO#QCRpnLazx`DcS$euw^D;pbn> zH39xb;UPKsmxPUM{zd1h3I8mv(20uhZ^Z7;ii&=D;84W*7lJ*d^DmV#hD80l&d!oS0Hjme6BdEijQ`4@scrSmV9F@{9_`u}@6f-0`1wcN z6X0JI9+H!PN!ZBdU-WG?;h)7nbfO~si$7l|ujrQt4n>@QA=pzo|56!aNYuYO{QUDO z5a6G20X@T<{IkMFHvdct)r5bsI8hP)_1MvtsOVQN4n>@QdUxovBb|RXxaD`~Uok)b zVuap*qwtWN{7b?{HvgiF)P#Q)#dM+~{FBM_EMzkGSeeW;Rwg4XWHK2lW9c$5RwfH< zC6iIDO8`3RI4Q}}z`uBvNf2RKk@GlAv$;rPY zY-IB<`mvhu&*BN4s0jb;4L2$)`sIN`5$9hB_LR=QRK^$*_3t@9|6+vRe~q8gGt9|9 zD{N%*&*Yh!@Gll8D#E{nYN1&b{mR9mi1SbHIem7d^Unsi{0{wl$V2M$G?e<9dYI{#7`V@TA$kNo_L5&Zv;_w)>N z^3Mtz+59v4peFo_#fggWZ%oVTL`A=HaVX;a)B8xD9qIhD!7aZ-|335cPj**G|L~BU z{7b?{HvghOsR{oqKGTVc@NdG=tNSbZ<$*&H=U)i+l+M3Y#uyUyPgbq;M^c-}WU`v* ziM*o%CQO-J`dHrHl+gN%@fUiAIr(RWjcopzd{qHM?7Ex$wms_^rVxGtoBct}qEC1E3*f6*FrhCluD5G|_EiK+nqJa8!D{0qUJ()pLl z7(=4|RpaMhV4eW~jH}W!%*j71Y-ID#L{m-p7mE{B0siIUP{jGCSB*Y9()nkDTYiWB zRp;lQ=?ww?Md2Yi`Im%^Z2m=SsR{oqs?&*z@~`3#4;+d(|3a{*bpE9>#*nCgHTd~Q zJrUrau{J%!ocy!GMmGOUbku}@u{co`;9o8dMVxA3WRaeoAj_30Vr`3RI4Q?r2 z|DM$2=bx;v0RN)!kevKW!bUd#qHC)O|19dziHh(~r=L0X(cPT7=59{Kx|>ro-OZ^1 z?&g#;E)hoc$d3GwzpS4*b>H2bI^}Lo?Qu7!*0`Hf%W#P>sz-L@hy3GlD3$#D&wBKP zl<)bUJ%`)dFrQbod;VsCzZ53`+|MT(;FgmKfYHJ1ujOPSm5KZLL<9V#I04|@^EU(B zbGSXg?EW3jedx;U-!It>#53uz55Nx=x&!=a;}_7L-T$YJUs9O;KUnAv;+b^V2VlQs zH-H_^eE{v5{TJdhrCQJbj5OreDX-B2I^|?Q6OU7;Jh73jQ_l6(M5iv|L`8JUXMX`P zeSZNFw!eT#-d{lcv%i4Qh$|p!#nC0gs2jl2;8uG_YHuK}J`VqnX>PAzWf0Zi>n1pdtH5FOOM zL~z|&+|o;9_7_lM0B~Eq*T8?|jSzs@{U>L41>=vr26Z&^P&%+jSjPkW-e(xV?Ec^R z3y&990iAk;)8W)9%|>NPsUj>jE&l|4YrffbkpOi3Iqt-9CWp>uvyeRiq8T%>I8dq0f|R=~Pxzex0I( zbSeU;!>LpIv5~D)>zdGW@YCy*Y14A))Q|Yy-4%x-zV5IDdrDt-ILH`7+PatAjGuoo zLhB9&rt}PR^3M_*+5D^DOilO~gA)~bpZpR0%fX?D^H0-^K0DI+_X}<*ecdao1wa2} z0|f5VBJhx${M(O>Z2qllt|t65Z9ylh0{nBup@{Qu3HFrEzk`f1r0L(-*8KdVJO%h? zU{234C;u$5kX9A!A%E+CcPpv&pOjYyb*Ae7K8eyBv632kb!};hFses(Lnw*vQtY%reXkj1Fdh8>eY1nE3QjUw~7Nt^?RWI~-u^Ck_C!``5lE1LH@YcLi8KelWm)DLVmd zp*)|(jE~*Fh4Q?dY5z;v3B;oxKN#T1^R57EUy}jM>|dk3D(X~nCw`qOa2L?2F*qGg zotle{Y@PD%pe8!?3@0k0Q?8q4WbgfRdUpS|)3TqxnUeh?Yf|<-N1yDk-6oWl2%~yr zM}EkkcsV`$rh7nk-wyuST6%ujPrWB+U(fI@EfGfb$d3Gw|BQ~`c&FFPdlnfG;NN}H zsBzQ4o1^w9S%tn#J4w;0D;jPD^E%vkVh_M06Dff08|?%5%0+j8nb#pYu3U7dnEl%~ z+6VB+L<-=IC-wk*MZ*nXcK>;ub-?)ZAB_U|b?rcagFF2W@XOUT0A~09a&-+besHJX z0e)RO5a9WbMgg4HSqETd|9kM6Qmu7Y>(2Z-MGO?sDZO85;&JL!3v6WTl)jak=+p+B zsEAJeh;^@{I27@9hfmm3`np5w&h&YezV3C~hM#|4!v**kf`{bf-wteK^KX^4n()uC z3!SJ4{}yiw&lnyap7C;Cc!tOC;Tcgb;Tct}!ZVJwrAvfSJ+dP|X9A!A^$Bnl*+xIcd?--q2)lLC> z(1e2kZ~JWsz|8jnbZq-=2-rsuG~pn?J*u4oxNscY|JBK65U{iR4^OTM#xJ-9_jkG0 zSPJaUHzxvo>sT#-+5O)-Rtt>pd~+het~Hhd{Ld}8|0_JXCa^R6zl6_}YQ0Ye$@z6E z=63;|va+R#$Ej1jv5~D)o$b^_rzo7Lh)y|7v?5wev?3n(SP|QOtcbBbR)oEe6=8`> zgi$@RBR}MCInj#HoM=T{_OT*%`dAT5e5{C>xI`G$BRld#{@v~AIj>xudgdTSr?w=* z{YhOmJ_py8hwB@F-_||~u*P4)I->Cx)WNs4j{;rraD4-CmyOQ>-jWFSZ!xcPbkwte z)Tvk4$kwU96>6eW;|V%Z5uKVF_;1?e=J(ScB>j`tCNVE< z?atF_mrSzLG7n{zmI$MIWJi9;f0N^bG>4rgUAlpQ+-^r|? zZaS-ffZw041MsfL37|c@f4_qh!T2UxM**(-{3gJjb&ml&Hqkl?@YI770cQ5!teYz8RJ^l*P7M>#sU?wWSVJl;dGVj6Ydr5R?%4D)e`0xKe+Pm=c&ufSP|1`VPGt9|9V{Bye zuUZc^;a?a|ROEf~NANEVha%3uSJ+cJ|C+hb=T-W;SG+4f|ER$N{9A&D? zEB2B1#_u3?TmDIQ(~T}I5k~dMj{J~+gFf_}SMKKo%8ibqeCw|Hdv}8UP-aGOKi9d! zMqt0!l9te}e*(5g2lI1){)wGnKh%+5I0W^aSxw2sjLI zhWR;wS1y2dr}wZuyML$mo*@2}3l0OEVSWza2?5Z4q!6}e_TRJbH@=k7l1kg}^`$?* zPIP|jBU`5i4pbAJD!_?~=+v>s z8>xO1*HdwA)>5a|uA;8}yNoIhT1@pgy0ElF7}X;?@ zycLw$zU8GQ!l)kEkstCOJBXh1%GIgbL!{_bI01D+Z|hp16T$JZ0FTa&1i0vSSAdz< zAv%g~cLlmOIy(~J;P_a8^|r1BIGlhw$?kt;)5kyuG;VhT@dW6N1o%s8cYy8Ny#(#q z{oA*D33TjBYIhJ{fZj-eHEwqUcxBVapgptyjrdHdmQJ-C#;;QaBL#Ho6HbRyrwoSD ztYqudXI%f&|DSE}Z}bF+=+uu`_d0|_5np$BggvFNJ2V-Uw#S5)M*}&S-XBf=F}PinKoKkWJBLHT;51?aQ#0aoYA$evBz%AeB0z5Y*17MrA;{ay& z@0Dx>#@~BmF2L=IR{0cQ3;VazwasLr}WlL`Df<<(h0r_SPZICZKR8`(N_&Rb1%YRFhRQ4yVr zZ}leik6$08t|~Z{diU#=)MJ}{QdecPNuBOkr?f;E)gwFdL;mxZJWh3cc`cQEpPp)0 zHzqZF&x+K$#*0czgi$@RBR}MS8;4T4Iu$%#icV$b>;XEIV5$rDb7>?R1FT!C2EbF7 z?FQ|c*C9HlF53-sNVirEu%AmK(HP(aQ(b^FbM}Dt?EWtYj|Stn$VmlQE94Tu7apbn z{Plnr!0i6N9`FL=UwD`TuvW+=fLr9G0(?1mG{DUM>r7BZo!T;yU#AFCK&Jw5I-EKc zf{kpQn(m_}IwhM}E}i-j>ke&jDB|l5W3Z?6b%!;KG0MCL3-0%7GMS%$l#2lWUg04* z`KLFDo_;p}UgP?oe%&F^S7rFO7l$Iwzhdkuoqu&E)9FfI_uAse&p)D<0RIB;kevJr z!A3U!rca^c{OS28^HUlAwZWl?^KT6Hl+M33j4`C?U-#+!{EKlF;NL4eBq#s$rqa{T z=HF{v|I_m?(7#;#>(+h<`T1c#vVe3XwTs)4FBUf$tWy%eM!U`c{I?Ob&+7u)GyAuh{*5nXw4~DZ zdp()OuTzwjfKEl>bU1Y?2^-lu6+MHVgP&ffEdHPq6o>4$<*mrVaKjbk_9- zc?6(HE$v<$vTD=`-KznBYh4@S%zNn5)Mb78fDVd#sPC3n{iN~o^p4iCNDd#zA zqEi=fq9QsqH@-e~bW9z}F;a`tI`T|uccp z#S`K0eVy$#3D}v}Av(@>n*?;Bcq05gugJ$&fqmeKbb!ZA91SqLfBDJ=VEjXmW&%9q z-YS6qu$TvMfL3FG+5HD-H3sAVVKEQjA@^1ReCW|kfaNP20L<)vIX+XWrBe+S3h0!j zfKENa>2T_l<^r0PY@K?H>wo(DshNTF1c>O=k63rzhC>lwcesT;rLQ~aETq$wzU~#d zn4f=yy#W6v;UPKsw*(v6{PSHz$NAIq?;TE5gn#D8^eig+Ww!VmH{kDJG8g30?_hdj zPwD(y&KRT2Js@+KGXLk@Ac&uTfjtEH_XrQk$v@2{bk1!4J;wDvJ^yAdr6)jye=h&j zAS(K`4Tn+={llKp`KJ@~jpNez7a7dYzZjv<36t=UocvpYjcoq;E~Df8>G}5#Co00f zl{F`{t>~9o@HcLV=pXi!&cEf1F{JUY!AgGq5f(!Fhlk|kpXPEpXEy&HhA{oI4+HUk?Z;SXDY!M zi2h+u>HJ&H7(*KW8f@a{pO>wW{^21x`KP&o&Y8`>$GHBd=ikhY^aP0VFHlj@pMkgG zP|Bfy*i$F9@&u}^3N=kE0^7oE7ugsm0OGD%IPI?<(U$? zL>Sd0JMu&R^P}iFuiSkC7F*~j%D358k9i*Y`m~Nz;0i!f%eSr z!O`LN^&0p;P2+{_!T&=I${+w9?b{OI$0a90dv^al9xevsTTQ(Q@QO~K01iEJ2jKYV zl>oE*kB?pn#t%Jm2jCT*J^^es^(MeQ9xeu$+5bU&rc`U6z}W5lI%O)PQwD$1#N*T{ zOKfE8RQ(t=(Ww}msEAH2F?&h)nY|>snY|<$n!O}GGlF+~f$yjI+bzZ6}V1~sN{>h<7t$>}~|Di{%!1(zt@cAX)TOI*>usi%cfRr1U;D z>SsNS)5|iNsFyX;oh}hZ^~jF=kpHV)`dOi~^|MYB`dP2F^t1eL=w)p?rB_-ajOvjc z`62)FIF!o0pPIQ_icYy*i3k6`zVuivd#0{v9x?-XQT5sY%e@bP_RQ-L9dhpj;Q!Yb zRj-}F>L1{x$7%uWb|oIPXZNqGGXaeMY>g6Nz3l4%S1*G0n&{LsoT!LSRrHzz z>fdNDJ?G-<4g;{K^mT`Yj4{f*2Mg|ds~N}7zXBot72_c}`S%GM+59WnrzZUK+fOH| z0{q*ALlNg+9`=;ZKaIF=9GAww)dvLl*GWkK@Q|GRn~RNX{&~l%3ICqqL{)%)MhCue zLwMbP0QQv5zlDr3r18%>iJyO79R>JTjECgp-zRKj^RFa9P59?`kWN&Df9*`YN$SlA za#&bja`7rV^52kFq+44=eMiHarOMvhA=vv;Wpf^qEqvb=TV|0y@=SK&L`*I-EMS0~^^o zwd$~%=#*h{xpZpWb}hw{4%g+sKQxz{F1F4JajvEuTD_-oRp&9KCBmp4*^wXe?^g0a zUeINYeA20j4zEMnWoZW`WECvPD=iU5^~jF=kpC7OO6BU5ONtboTC_hN{GX$SNo{Z) zo8>hJxK%Wn{I68eI!0i5`(q zb6&YR^(;e*PTjSJ&n>#%w>`LSoqXZ*Ni3hj-|@)58ZY>}7Wr4>!S7O7K83%t;p7XS zk8-_ldvIOfwT90%VqWLynDK5M82@YirvU4$)ByR!INb#HN1p=$X7~T-b0CO6#_1-& zIx96mykF}-1@;;5)&b1ye^%x5xj-d;nb;D*vQtYzq8atr^YMkL`8J!N36Ss<50xcz0P7!>FW;f8Do^;w&1#J z{BeH%xxcY*$ICxYik@Lk{smwon}5Tz)r5cdaiSvpJNVEc)Blk}=HJg8G85i7WN!TA zkl9H?o~d6|URolI>X9A!A^%(dI%J-G;*h!Pg+u0wHx8Mr-#cWU_&}Ekqk3dVe#n3F zQF_iR_kGgvI2}d#)*ZTZP6hiQsMtneUqQf!4ge3@Y65X|HfYa$A3(>T=xnf$V$fC- zu&*HCLkEDV*hT<%>6{AMv-_V;&H&?6yUqY?(&IkB@lF>2&U!EpV0Qmm59WdK+)01hB$0L<)vD?U@Ibw5AoG`~*yJr&R?%@YDTWsHq%ovL`;@Cn};- z?p-a3mR&80qg^bC?p-X2OV*aeTx&~W7%mY;^~jF=kiS(|OX67S|A=jT@!%sW!3_Ck6R+hpV@!U)8F_~=ANh0?&rUp?yl12arozw<+=n&!On+zQSpKlU$QXA}#TDYVUz>`mD0X)ZaJJ1#8 zb&ie?Erx>lHyR`Yd~LxQfM-8W0@%3baDdtU8`m5T#-IH-3E*oB&H%j8AQ9jXErtTj z?Eg7FQ>t}8HUA>NPK9X*=+uDoH1RlfY7#cGb!y-RHPNX8oT!LS{fKpk8W-s~7hiX9 z!k*IC9i}qIDDxgHxbE;Jm!E&n?g`w_=iwna`S%DL+5Ee5Nlp0Yl}jh80{mNnLlNiS zaqKCbf6p0XNaNr9EByQmyDz}M0hj3+=H%ZbY-ICqV4j-ruK*{i0{p9Sg`RV9{yAY! z>HM3@7(*KWTHfI2U&1p1{^j8zIr;Yp8`=E3a#c;n5D zpDeYV3 z(y1G+VRFkLKY8TQCl2X{O*5OwT(g>g+Mf00x6INKVN{Ro$Pf8HaS4>4Y|v5OvGyv5 z54N>4tIv9z`Q%;0EL0+l>X9A!A^+7ll*-kquD7M=RP(Lyc^@4k7K42Udv`_xT>oAW zz=3r~h$ z0i9~`4^2EyowCP9woaKBsEJM`;6z34r>X9A!A%E*add@3XrwZ;! z(W!sVUIo|b$w*6Z9oKH@0B|dr8NmLdDbSvI9iqd3GzG5HRx&eiUDs~u0Px93OMw45 zdlj^2_n)gD2F7neJOJ3=8t(Vn@%SHLU(+E7V0Qm&Is}37cRcU`j0N8W& z!vJRXKcVOwU&?$otF-Tj-joRFRFQyAoyF;J>Qpf{vUTcQv6|@AkP#mD% zDB|l58Q4?$y2As;7-hIExbC{;AwT~*77OsN_g#91Ir%pR8`=Epb5Bk9cO54x!arrC zrQA2tQoeParF?UQrF`RBOZnAsOL=fOT_TL?ksbLV|KLbVxh&FB?!L}azAeI1ZW3WB zzrU6)5k~dMj{K1Si2L-MSMK|y_Cq>~@~t}zZW{#lJG~fm1K^sWF9Gf|KM&v@Zx#T| zd>=rE%bNvYzf+(2c>vc8eF^Z3K{o&%+%^bccK?fq{tCw5IzAlWP4#yG{Ni>f!1^EB z0nF}S|3f=4{`1?R0B@?l1K_RW!vS7A^jCnH{jb4iO119iyFcaEsoI(X-%q~6>2T_l z-oG>}**f(a*Z=gtLm2poo&XV@x)N$k91k@nHia4!<3f!I>ri8&Zm2P#iA#i0J+dP| zTr9Yy(cYX4O15?YOg_ssliQemzD^l zdSpj_$Uh#3Qn@-cV z=I0LfKXp!-0Pv#Ey#Y3Q@D{XZ_aFLp2N-`~6ZpG^mrogicqbp$0eI3t_`8Da{wEED zzgsx@unvgt@+l*L2R4Df+Zg(G2XFj^_)MwR{nX?){5qBJTHte^(<_>IoI2%+jclEA zeyt`tbrB~jqEkO&-QfccMSR`C>J5E%q^~=S!Y$DlW!{4Y*Bzd`Mx$3t@R z?-n+)`FG;2n()v49i6BO@NYH_MVx<0*i$UNKXFU!bUd#PJB`m{<(jq6BXg#{d?!gHW@kOn)64=6$?_x+a2P` z5@HuQ#$bDCi7={1cI1crshl(9(S;|;m~Be3%dr%4>#Ri5-1A^*i7={1cI1crui{WD z_j5wvS9(Iqx1P~pF5Itm;3VA7Ww#6N_quWg+FL}y_U!xY7Ey4&)|D%8KbPGuxZmr* zNoa2{7q(~jKkXgduT?Y@?&oUK<~-Q%^64=4yR5n!A7=D`D)N}@YAnnyu*o#=#*KQ zuA*yUL&ar(YsJSy!xeKnE>cAQ9i~V)5LsFxjOvjc`62(9zv?NP+E^&^);TI#Bzh_~ zM*Au1u9#U`B8=*h9r+>u`BlF04*m`%a}iB@l&nHu7MgSv<UxH;QctUe(lW|gSv|C`GGz1wWyfpt zl#S{yE-ev8^~jF=kblv-X3Cql+bQM0$dyy?yD3|1dny+U8C6;$jOvjc`62(7)m1^K zE^15Bskb$bg6lAWY!0ro2jk=bZ&=+9-~sv9KzrtOh>ijI*MJUeSltfj#)ENkfD_2( z0Kctq6trjeZ@2*dK9|KRs0;W0dJEz!Is^B6`M9hAc6R?hE-S$JMQ7lCuX}&J1$K*7 zP&W-1z~2XB_CHkT8(+$-4KUx@&`noGy{eRk#5nHi^6QjeiGWUJ;B+{3Di0gkI+a;N zO?1jdmrhhfr+&n`t3M7!eBEI`_LRQvkk1&S47UZ>UB}ks=U>MM0{pYrqi2|te*>_Q z%|8cyHR0bWoTv!@%#Lg9sp!`W9Ev#qENjwdM>_w8;+E3az3$fL=ifyk{$=1HIr*1| zjcop9)>0Gxxzwf;72%)rZx%#Fzx;71;{4l>J*D$6pD~6+{j0~%zmA`U^sf#*!<_sZ zfQ@YaIn-4X{++^!itx|vMzwtv{d$2z5$B&}J^JiO=igA=@;mgeK0p6z|0}@13_K(! z|MIYr&A&_oHQ}F2eL7JQ{{4{qKOBlU|Mp`~>HN!Qj3H6~4Eg!zF7!Jq_6_J6=H%Z1 zY-ID#p`n`a?-Wi{1^D*@ha%2DOGEnXNax>B-10m0&xoIY34;2Ehvej69yYT1m)S^7 z_~&9oC#nMc^T(lx^KU=)l+M3=#uyUy&xD_U?n2+Y+c&0Xn3I14u#wF_2V*ti-zl7^ zDE}({c!5I^=bxnseRibtZzyj09s1XlpMMvHK7VB3AvyV%hmCChWj0Y0{<$=z6IB8J z`QuQ;`L`c?O6OlbV+@J;om8os0#4!1r9}= zf0kzS*^$n_p}6ID=wAzd{#~ptuksbLV|CD$yMOeI-VraaVqDj1$;z^vB;$|FO zB8=*h9r+=Dw^sC=SMI*ccNTOM<=f8`|JN4q|K6j$b;17=y^*&C_`uTU06)EP3A9H? zHT`P(|J`jry>SWrzxRQq&B6auy^*&Cc(k`Jzz6=?0@}0tPfY9!#_zT95WwpVt^$1C z^c29qx(Gktu-E1qa~HLPr$l8zfN7O zBcM~oI2}%%`h<;aohoUgCOYNUmQGYer%DPR5!VVI5lMxQh~ksbLV|2H_4%GIfuc2aa|YpXP% zJ4X4n!T&{$9M%xv+>@_?|NOlx0cKu@=$OBECD5JRldl0DIjkZ0zfPn4+5m5Dl?MFT z{fFkv0poAm{};eDl~)1Qu}cDYe2fRc?Ec5cc!2SB?2-Vksk{pCw*7wr9GWu+U}pcV z+pD5Z-R>lyQ>Fqs6@t^@)TtfV$kwS<9n?gp3_F%fr;c^d&T?z5on_QWJL`E>?X0*b z)w3LLSI>&OhRY|_OY4yx`62)5ZMC!Zn`&oms;iwfS5rG{!~5!4cCV|KmI$MIWJi9; ze+v$!a&^k3lN6n5`(_W&g^0#_;Q1x74Vwadr>{Q1Hx}&&?U~mhI&Li54|MKMUw!cW zlGuh#0gh;_2XNardq8`3|GA?_gYgNUG=SH8Uj}$~SUSKNm&O3h?my$w7%=|quylae zdtU~a@JRzWcl2n0nf+hFXG*p9hmYvYuTve{2K0DIa9s1#x($~FicM;&9(EDT(9+H!PXR(pZzr)sQ!at%5 zou~@%&j*Jh&c7YlQ#$`HF~%tKSygb~?+9Cd{w3%L>0eiRhB^7y8yngD>ujSY{G)K9 zD!{*oI23XIwXmhnj&%O@!!4!jpO%83f3*z-_?Lu-Q9PDE*mFses(Sb>RQKdndjIID1kjPf{%1Yw4#qbQ*$(jXhN%E&K7n@U>>j|*?EgJJQ>yhjA-)^GP9@Y7&?!#^ zO*~GW3cyCTP7Np2M5pfKL`8J!vTj{s-776(sqIz8ypgLEX4=|{P4Xm%!4@f*s6-gm zBRld#{?zUo#53ZVqUdj>VwfUS(SA&SMdKcwOG|`NJ+dP|*53bXsm(u{&ueTgv^D0vTj{Z^yV0Qnl zy^n(bYt`y(3gUTtr!&A!!qasvEcYt!&%AfC5(Is>fL*%aW`-bX=u zX8&99nNlsC8sx&SQ+{;?bV}1nK&Onck*!nJoYh39!f>J@I`wMdX)0y=8OrF=MJlrE zHOia(n`*MNkjfuaR9Yg8>X9A!A^)5wIaILkc`D{|E|pg68dbgX4XUl*&C(KKRFCY) z5BWFft_nIu^^l@d)4C4>*XhTUIDow)(g2ouMgbhO*cxEwb%>6j#n$jT^^5}8J0cC> zk125gPwPGmV0QmQH`fE>n_ij(@V|iz0dD9s9AHJCssOY5SM;e0#&75|9N>Qg7Xoa0 zX%fIgH`fE0*?&)$Z+t1UHc)BbV_$XU*Qt*01oj*5$LVn1PaVfbwob+MR1=-*>Pjan zqEr8^jaFni8iyjj?hu7NrLQ}jW{gpW+k)#}^ZWAiFTq6MebTZQJ;R**bHYY8|JwCd z6aJ;(L`C=)n{nOl>$dB5v7@is?XG#<&L!=dU8`Bw?DR*{CBmp4*-QO0uG_8Ncik>I z@Vea%m+N*HYhSlpUvkZ^N8Yv45@A%2?8p!K%lpuCUb*-4_uc3y%D3)NL|K4+1a0fW zeGx-$L<9TRRv`e_)Q9`QnC}DVsHqS4bA4?U0`?UQxe*O;+q!VyMG<8I?Ck!RohbnO zw?gZ{=NK%!*bl@TVr&cWFJkL z{l=FvT2g86lPw4E>y&#F0iDXj>2T`QBWz^r)D?F%(J8NfbfO|U^=X_gQ8-SQh#99# z^dF~7)EuWv{5@8eI5Uku6s|C|Y~Jw{*M2vjhbLzL-5Fbz@Oc}b+hqc{Lj8e0Hz#{1Nuh4!V+#p!VBR0KA%b!y%~HPI>ULFLjZ zlRFV6jv9Un+raaLB`?>U-8Ux%RMH}FhD?34ZcK?QVJi++Cl^h0mjO%%TFY6rv zcxV5S0JHnw*?%M$|FYf@fXBF=2l%&=!vGuJ@dTLJe>Of-s_ZtpHoPQD6Q#${$8Do_BtSY$f<>tlDzp$o4 z`Zt1}VNU+pV=-i+br-^IoP{M&(t zuWE@K6eopWjLr+Ng)?GJ` zhtDUO9tWRa(sd4ezR9L-(7wGNY|p$8M#uJk@cAU0w!!C@be#jAZ!$d&+Bc7f?b-b= zy91wZa!LW8U-I?qIk0b{k2SPUI}h8l`=53mKA)tIHGF=_*RSWmzKK%`XkT^*wrBSL z0G}z<`kb(30>4gm>>!|1y}fDTaq839u{r0P>C?AM|R|g{M{Zll=ohK$054;3v*Up?)rB5a* z5k~dMj{K1Sh;j6sSFTQJPmrQh`A0W^-_1{s)ByVmE~Xj+tX!i9aGpj2XwSS3(UGT- z0Df0rxkeA{E4Y|y2yk+w2Eh48H-Pr+{!Op<1mnld*aPs)7AF8++B*^8oV_CeX7``7 zcLW%JY41dUXSO&2aLkN70GnR#2{5z&HTX=amQHn_%&${^%>;Dn6;6j!r}TViRK zHLm~ZpTiV5k)8k%ovKr_6&3B#hRXKuL^XS8Pjz+bL47grOO^ESC@m32^~jF=kiV{d zYf5)-d#X!(XX^A$d+PZ+lB#0pR9Yg8>X9A!A%Cq&s-RN|zEX5*@ZB~*cf9;o0{q1c z?(cd_1p|BIF6IC;uS0Y+?qUvf=PeZs@E0?<|I5p7C9n^^+Xi5E|Gj$@1D#ouU<=~u zK=lLomRDDRBSypLov{0l7!99ia?7hLh^GV958yQkwgC6;QOv7THj}^crOeturG1Zm z(vM%KY76b3kHYD2>QoXovUMtY3Oxruy-r#9(TR%a)PHNE6u=}cN0JGm`+*eft`v~Hj zdjdSTWEQ~kd&2>Comd@UcK^@glE8i~3rhnK&sC#V01up258$0G6G3}+|2tbIg8f

      eMZ4Wb4$4 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%0D}7Wb&`pXFcJc0td?Tf07``=+gdO#8u(vpHUul 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 literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/walk_fwd_fast_armout.fbx b/interface/resources/avatar/animations/walk_fwd_fast_armout.fbx new file mode 100644 index 0000000000000000000000000000000000000000..6aa07d0a45ad64e368b718abe943c5802a79a81c GIT binary patch literal 982320 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
      aRLuKlQb7j$0R?2pF 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

      f=6L7&g!s26`jyQ|9j?9sg&SD3=rF36(sH>gD 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 literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/walk_left.fbx b/interface/resources/avatar/animations/walk_left.fbx new file mode 100644 index 0000000000000000000000000000000000000000..bfe10aa18fa278880da731f70f62fb13de47b34d GIT binary patch literal 1156656 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%0D_S|Sc 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¬v1iWq2DBxw&+5;aQ?Fn4N>oR=4xc{UH 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 literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/walk_left_fast.fbx b/interface/resources/avatar/animations/walk_left_fast.fbx new file mode 100644 index 0000000000000000000000000000000000000000..ced6c08bac745c31cb0d933a022a0ccdcddc0f53 GIT binary patch literal 909040 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

      (Z+^Qp2Gj6R06H>yhGY2E+>wD(X4;7>7 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 literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index d689857071..a5f406d2ff 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -1,5 +1,5 @@ { - "version": "1.1", + "version": "1.0", "root": { "id": "userAnimStateMachine", "type": "stateMachine", @@ -38,1201 +38,1458 @@ "children": [ { "id": "userAnimNone", - "type": "poleVectorConstraint", + "type": "overlay", "data": { - "enabled": false, - "referenceVector": [0, 0, 1], - "baseJointName": "RightUpLeg", - "midJointName": "RightLeg", - "tipJointName": "RightFoot", - "enabledVar": "rightFootPoleVectorEnabled", - "poleVectorVar": "rightFootPoleVector" + "alpha": 1.0, + "alphaVar": "ikOverlayAlpha", + "boneSet": "fullBody" }, "children": [ { - "id": "rightFootIK", - "type": "twoBoneIK", + "id": "ik", + "type": "inverseKinematics", "data": { - "alpha": 1.0, - "enabled": false, - "interpDuration": 15, - "baseJointName": "RightUpLeg", - "midJointName": "RightLeg", - "tipJointName": "RightFoot", - "midHingeAxis": [-1, 0, 0], - "alphaVar": "rightFootIKAlpha", - "enabledVar": "rightFootIKEnabled", - "endEffectorRotationVarVar": "rightFootIKRotationVar", - "endEffectorPositionVarVar": "rightFootIKPositionVar" + "solutionSource": "relaxToUnderPoses", + "solutionSourceVar": "solutionSource", + "targets": [ + { + "jointName": "Hips", + "positionVar": "hipsPosition", + "rotationVar": "hipsRotation", + "typeVar": "hipsType", + "weightVar": "hipsWeight", + "weight": 1.0, + "flexCoefficients": [1] + }, + { + "jointName": "RightHand", + "positionVar": "rightHandPosition", + "rotationVar": "rightHandRotation", + "typeVar": "rightHandType", + "weightVar": "rightHandWeight", + "weight": 1.0, + "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], + "poleVectorEnabledVar": "rightHandPoleVectorEnabled", + "poleReferenceVectorVar": "rightHandPoleReferenceVector", + "poleVectorVar": "rightHandPoleVector" + }, + { + "jointName": "LeftHand", + "positionVar": "leftHandPosition", + "rotationVar": "leftHandRotation", + "typeVar": "leftHandType", + "weightVar": "leftHandWeight", + "weight": 1.0, + "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], + "poleVectorEnabledVar": "leftHandPoleVectorEnabled", + "poleReferenceVectorVar": "leftHandPoleReferenceVector", + "poleVectorVar": "leftHandPoleVector" + }, + { + "jointName": "RightFoot", + "positionVar": "rightFootPosition", + "rotationVar": "rightFootRotation", + "typeVar": "rightFootType", + "weightVar": "rightFootWeight", + "weight": 1.0, + "flexCoefficients": [1, 0.45, 0.45], + "poleVectorEnabledVar": "rightFootPoleVectorEnabled", + "poleReferenceVectorVar": "rightFootPoleReferenceVector", + "poleVectorVar": "rightFootPoleVector" + }, + { + "jointName": "LeftFoot", + "positionVar": "leftFootPosition", + "rotationVar": "leftFootRotation", + "typeVar": "leftFootType", + "weightVar": "leftFootWeight", + "weight": 1.0, + "flexCoefficients": [1, 0.45, 0.45], + "poleVectorEnabledVar": "leftFootPoleVectorEnabled", + "poleReferenceVectorVar": "leftFootPoleReferenceVector", + "poleVectorVar": "leftFootPoleVector" + }, + { + "jointName": "Spine2", + "positionVar": "spine2Position", + "rotationVar": "spine2Rotation", + "typeVar": "spine2Type", + "weightVar": "spine2Weight", + "weight": 2.0, + "flexCoefficients": [1.0, 0.5, 0.25] + }, + { + "jointName": "Head", + "positionVar": "headPosition", + "rotationVar": "headRotation", + "typeVar": "headType", + "weightVar": "headWeight", + "weight": 4.0, + "flexCoefficients": [1, 0.5, 0.25, 0.2, 0.1] + } + ] + }, + "children": [] + }, + { + "id": "defaultPoseOverlay", + "type": "overlay", + "data": { + "alpha": 0.0, + "alphaVar": "defaultPoseOverlayAlpha", + "boneSet": "fullBody", + "boneSetVar": "defaultPoseOverlayBoneSet" }, "children": [ { - "id": "leftFootPoleVector", - "type": "poleVectorConstraint", + "id": "defaultPose", + "type": "defaultPose", "data": { - "enabled": false, - "referenceVector": [0, 0, 1], - "baseJointName": "LeftUpLeg", - "midJointName": "LeftLeg", - "tipJointName": "LeftFoot", - "enabledVar": "leftFootPoleVectorEnabled", - "poleVectorVar": "leftFootPoleVector" + }, + "children": [] + }, + { + "id": "rightHandOverlay", + "type": "overlay", + "data": { + "alpha": 0.0, + "boneSet": "rightHand", + "alphaVar": "rightHandOverlayAlpha" }, "children": [ { - "id": "leftFootIK", - "type": "twoBoneIK", + "id": "rightHandStateMachine", + "type": "stateMachine", "data": { - "alpha": 1.0, - "enabled": false, - "interpDuration": 15, - "baseJointName": "LeftUpLeg", - "midJointName": "LeftLeg", - "tipJointName": "LeftFoot", - "midHingeAxis": [-1, 0, 0], - "alphaVar": "leftFootIKAlpha", - "enabledVar": "leftFootIKEnabled", - "endEffectorRotationVarVar": "leftFootIKRotationVar", - "endEffectorPositionVarVar": "leftFootIKPositionVar" + "currentState": "rightHandGrasp", + "states": [ + { + "id": "rightHandGrasp", + "interpTarget": 3, + "interpDuration": 3, + "transitions": [ + { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, + { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, + { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } + ] + }, + { + "id": "rightIndexPoint", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, + { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, + { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } + ] + }, + { + "id": "rightThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, + { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, + { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } + ] + }, + { + "id": "rightIndexPointAndThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, + { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, + { "var": "isRightThumbRaise", "state": "rightThumbRaise" } + ] + } + ] }, "children": [ { - "id": "ikOverlay", - "type": "overlay", + "id": "rightHandGrasp", + "type": "blendLinear", "data": { - "alpha": 1.0, - "alphaVar": "ikOverlayAlpha", - "boneSet": "fullBody" + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" }, "children": [ { - "id": "ik", - "type": "inverseKinematics", + "id": "rightHandGraspOpen", + "type": "clip", "data": { - "solutionSource": "relaxToUnderPoses", - "solutionSourceVar": "solutionSource", - "targets": [ - { - "jointName": "Hips", - "positionVar": "hipsPosition", - "rotationVar": "hipsRotation", - "typeVar": "hipsType", - "weightVar": "hipsWeight", - "weight": 1.0, - "flexCoefficients": [1] - }, - { - "jointName": "RightHand", - "positionVar": "rightHandPosition", - "rotationVar": "rightHandRotation", - "typeVar": "rightHandType", - "weightVar": "rightHandWeight", - "weight": 1.0, - "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], - "poleVectorEnabledVar": "rightHandPoleVectorEnabled", - "poleReferenceVectorVar": "rightHandPoleReferenceVector", - "poleVectorVar": "rightHandPoleVector" - }, - { - "jointName": "LeftHand", - "positionVar": "leftHandPosition", - "rotationVar": "leftHandRotation", - "typeVar": "leftHandType", - "weightVar": "leftHandWeight", - "weight": 1.0, - "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], - "poleVectorEnabledVar": "leftHandPoleVectorEnabled", - "poleReferenceVectorVar": "leftHandPoleReferenceVector", - "poleVectorVar": "leftHandPoleVector" - }, - { - "jointName": "Spine2", - "positionVar": "spine2Position", - "rotationVar": "spine2Rotation", - "typeVar": "spine2Type", - "weightVar": "spine2Weight", - "weight": 2.0, - "flexCoefficients": [1.0, 0.5, 0.25] - }, - { - "jointName": "Head", - "positionVar": "headPosition", - "rotationVar": "headRotation", - "typeVar": "headType", - "weightVar": "headWeight", - "weight": 4.0, - "flexCoefficients": [1, 0.5, 0.25, 0.2, 0.1] - } - ] + "url": "qrc:///avatar/animations/hydra_pose_open_right.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 1.0, + "loopFlag": true }, "children": [] }, { - "id": "defaultPoseOverlay", - "type": "overlay", + "id": "rightHandGraspClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/hydra_pose_closed_right.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "rightIndexPoint", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightIndexPointOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_point_open_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightIndexPointClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_point_closed_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "rightThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightThumbRaiseOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_open_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightThumbRaiseClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_closed_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "rightIndexPointAndThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightIndexPointAndThumbRaiseOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_point_open_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightIndexPointAndThumbRaiseClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_point_closed_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + } + ] + }, + { + "id": "leftHandOverlay", + "type": "overlay", + "data": { + "alpha": 0.0, + "boneSet": "leftHand", + "alphaVar": "leftHandOverlayAlpha" + }, + "children": [ + { + "id": "leftHandStateMachine", + "type": "stateMachine", + "data": { + "currentState": "leftHandGrasp", + "states": [ + { + "id": "leftHandGrasp", + "interpTarget": 3, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, + { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, + { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } + ] + }, + { + "id": "leftIndexPoint", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, + { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, + { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } + ] + }, + { + "id": "leftThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, + { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, + { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } + ] + }, + { + "id": "leftIndexPointAndThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, + { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, + { "var": "isLeftThumbRaise", "state": "leftThumbRaise" } + ] + } + ] + }, + "children": [ + { + "id": "leftHandGrasp", + "type": "blendLinear", "data": { "alpha": 0.0, - "alphaVar": "defaultPoseOverlayAlpha", - "boneSet": "fullBody", - "boneSetVar": "defaultPoseOverlayBoneSet" + "alphaVar": "leftHandGraspAlpha" }, "children": [ { - "id": "defaultPose", - "type": "defaultPose", + "id": "leftHandGraspOpen", + "type": "clip", "data": { + "url": "qrc:///avatar/animations/hydra_pose_open_left.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 1.0, + "loopFlag": true }, "children": [] }, { - "id": "rightHandOverlay", - "type": "overlay", + "id": "leftHandGraspClosed", + "type": "clip", "data": { - "alpha": 0.0, - "boneSet": "rightHand", - "alphaVar": "rightHandOverlayAlpha" + "url": "qrc:///avatar/animations/hydra_pose_closed_left.fbx", + "startFrame": 10.0, + "endFrame": 10.0, + "timeScale": 1.0, + "loopFlag": true }, - "children": [ - { - "id": "rightHandStateMachine", - "type": "stateMachine", - "data": { - "currentState": "rightHandGrasp", - "states": [ - { - "id": "rightHandGrasp", - "interpTarget": 3, - "interpDuration": 3, - "transitions": [ - { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, - { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, - { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } - ] - }, - { - "id": "rightIndexPoint", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, - { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, - { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } - ] - }, - { - "id": "rightThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, - { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, - { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } - ] - }, - { - "id": "rightIndexPointAndThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, - { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, - { "var": "isRightThumbRaise", "state": "rightThumbRaise" } - ] - } - ] - }, - "children": [ - { - "id": "rightHandGrasp", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightHandGraspOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_open_right.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightHandGraspClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_closed_right.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightIndexPoint", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightIndexPointOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightIndexPointClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightIndexPointAndThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightIndexPointAndThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightIndexPointAndThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - } - ] - }, - { - "id": "leftHandOverlay", - "type": "overlay", - "data": { - "alpha": 0.0, - "boneSet": "leftHand", - "alphaVar": "leftHandOverlayAlpha" - }, - "children": [ - { - "id": "leftHandStateMachine", - "type": "stateMachine", - "data": { - "currentState": "leftHandGrasp", - "states": [ - { - "id": "leftHandGrasp", - "interpTarget": 3, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, - { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, - { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } - ] - }, - { - "id": "leftIndexPoint", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, - { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, - { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } - ] - }, - { - "id": "leftThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, - { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, - { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } - ] - }, - { - "id": "leftIndexPointAndThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, - { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, - { "var": "isLeftThumbRaise", "state": "leftThumbRaise" } - ] - } - ] - }, - "children": [ - { - "id": "leftHandGrasp", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftHandGraspOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_open_left.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftHandGraspClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_closed_left.fbx", - "startFrame": 10.0, - "endFrame": 10.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftIndexPoint", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftIndexPointOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftIndexPointClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftIndexPointAndThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftIndexPointAndThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftIndexPointAndThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - } - ] - }, - { - "id": "mainStateMachine", - "type": "stateMachine", - "data": { - "outputJoints": ["LeftFoot", "RightFoot"], - "currentState": "idle", - "states": [ - { - "id": "idle", - "interpTarget": 10, - "interpDuration": 10, - "transitions": [ - { "var": "isMovingForward", "state": "idleToWalkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "idleToWalkFwd", - "interpTarget": 3, - "interpDuration": 3, - "transitions": [ - { "var": "idleToWalkFwdOnDone", "state": "walkFwd" }, - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "walkFwd", - "interpTarget": 16, - "interpDuration": 6, - "transitions": [ - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "walkBwd", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "strafeRight", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "strafeLeft", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isNotMoving", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "turnRight", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isNotTurning", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "turnLeft", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isNotTurning", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "fly", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isNotFlying", "state": "idle" } - ] - }, - { - "id": "takeoffStand", - "interpTarget": 0, - "interpDuration": 6, - "transitions": [ - { "var": "isNotTakeoff", "state": "inAirStand" } - ] - }, - { - "id": "takeoffRun", - "interpTarget": 0, - "interpDuration": 6, - "transitions": [ - { "var": "isNotTakeoff", "state": "inAirRun" } - ] - }, - { - "id": "inAirStand", - "interpTarget": 0, - "interpDuration": 6, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isNotInAir", "state": "landStandImpact" } - ] - }, - { - "id": "inAirRun", - "interpTarget": 0, - "interpDuration": 6, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isNotInAir", "state": "landRun" } - ] - }, - { - "id": "landStandImpact", - "interpTarget": 6, - "interpDuration": 4, - "transitions": [ - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "landStandImpactOnDone", "state": "landStand" } - ] - }, - { - "id": "landStand", - "interpTarget": 0, - "interpDuration": 1, - "transitions": [ - { "var": "isMovingForward", "state": "idleToWalkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" }, - { "var": "landStandOnDone", "state": "idle" } - ] - }, - { - "id": "landRun", - "interpTarget": 1, - "interpDuration": 7, - "transitions": [ - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "landRunOnDone", "state": "walkFwd" } - ] - } - ] - }, - "children": [ - { - "id": "idle", - "type": "stateMachine", - "data": { - "currentState": "idleStand", - "states": [ - { - "id": "idleStand", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isTalking", "state": "idleTalk" } - ] - }, - { - "id": "idleTalk", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "notIsTalking", "state": "idleStand" } - ] - } - ] - }, - "children": [ - { - "id": "idleStand", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/idle.fbx", - "startFrame": 0.0, - "endFrame": 300.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "idleTalk", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/talk.fbx", - "startFrame": 0.0, - "endFrame": 800.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "walkFwd", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0.5, 1.4, 4.5], - "alphaVar": "moveForwardAlpha", - "desiredSpeedVar": "moveForwardSpeed" - }, - "children": [ - { - "id": "walkFwdShort", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_short_fwd.fbx", - "startFrame": 0.0, - "endFrame": 39.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkFwdNormal", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_fwd.fbx", - "startFrame": 0.0, - "endFrame": 35.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkFwdRun", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/run_fwd.fbx", - "startFrame": 0.0, - "endFrame": 21.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "idleToWalkFwd", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/idle_to_walk.fbx", - "startFrame": 1.0, - "endFrame": 13.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "walkBwd", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0.6, 1.45], - "alphaVar": "moveBackwardAlpha", - "desiredSpeedVar": "moveBackwardSpeed" - }, - "children": [ - { - "id": "walkBwdShort", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_short_bwd.fbx", - "startFrame": 0.0, - "endFrame": 38.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkBwdNormal", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_bwd.fbx", - "startFrame": 0.0, - "endFrame": 36.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "turnLeft", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/turn_left.fbx", - "startFrame": 0.0, - "endFrame": 28.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "turnRight", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/turn_left.fbx", - "startFrame": 0.0, - "endFrame": 30.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "strafeLeft", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0.2, 0.65], - "alphaVar": "moveLateralAlpha", - "desiredSpeedVar": "moveLateralSpeed" - }, - "children": [ - { - "id": "strafeLeftShort", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_short_left.fbx", - "startFrame": 0.0, - "endFrame": 28.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeLeftNormal", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_left.fbx", - "startFrame": 0.0, - "endFrame": 30.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "strafeRight", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0.2, 0.65], - "alphaVar": "moveLateralAlpha", - "desiredSpeedVar": "moveLateralSpeed" - }, - "children": [ - { - "id": "strafeRightShort", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_short_right.fbx", - "startFrame": 0.0, - "endFrame": 28.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeRightNormal", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_right.fbx", - "startFrame": 0.0, - "endFrame": 30.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "fly", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/fly.fbx", - "startFrame": 1.0, - "endFrame": 80.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "takeoffStand", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_takeoff.fbx", - "startFrame": 17.0, - "endFrame": 25.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "takeoffRun", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_takeoff.fbx", - "startFrame": 1.0, - "endFrame": 2.5, - "timeScale": 0.01, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStand", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "inAirAlpha" - }, - "children": [ - { - "id": "inAirStandPreApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_apex.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 0.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStandApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_apex.fbx", - "startFrame": 1.0, - "endFrame": 1.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStandPostApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_apex.fbx", - "startFrame": 2.0, - "endFrame": 2.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - } - ] - }, - { - "id": "inAirRun", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "inAirAlpha" - }, - "children": [ - { - "id": "inAirRunPreApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_in_air.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 0.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirRunApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_in_air.fbx", - "startFrame": 6.0, - "endFrame": 6.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirRunPostApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_in_air.fbx", - "startFrame": 11.0, - "endFrame": 11.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - } - ] - }, - { - "id": "landStandImpact", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_land.fbx", - "startFrame": 1.0, - "endFrame": 6.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "landStand", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_land.fbx", - "startFrame": 6.0, - "endFrame": 28.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "landRun", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_land.fbx", - "startFrame": 1.0, - "endFrame": 6.0, - "timeScale": 0.65, - "loopFlag": false - }, - "children": [] - } - ] - } - ] - } - ] + "children": [] } ] + }, + { + "id": "leftIndexPoint", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftIndexPointOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_point_open_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftIndexPointClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_point_closed_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "leftThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftThumbRaiseOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_open_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftThumbRaiseClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_closed_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "leftIndexPointAndThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftIndexPointAndThumbRaiseOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_point_open_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftIndexPointAndThumbRaiseClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_point_closed_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + } + ] + }, + { + "id": "mainStateMachine", + "type": "stateMachine", + "data": { + "currentState": "idle", + "states": [ + { + "id": "idle", + "interpTarget": 0, + "interpDuration": 4, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isMovingForward", "state": "idleToWalkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "idleToWalkFwd", + "interpTarget": 10, + "interpDuration": 4, + "transitions": [ + { "var": "idleToWalkFwdOnDone", "state": "walkFwd" }, + { "var": "isNotMoving", "state": "idleSettle" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "idleSettle", + "interpTarget": 10, + "interpDuration": 10, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "idleSettleOnDone", "state": "idle" }, + { "var": "isMovingForward", "state": "idleToWalkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "walkFwd", + "interpTarget": 16, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotMoving", "state": "idleSettle" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "walkBwd", + "interpTarget": 8, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotMoving", "state": "idleSettle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "strafeRight", + "interpTarget": 0, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotMoving", "state": "idleSettle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "strafeLeft", + "interpTarget": 5, + "interpDuration": 8, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotMoving", "state": "idleSettle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "strafeRightHmd", + "interpTarget": 0, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotMoving", "state": "idleSettle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "strafeLeftHmd", + "interpTarget": 5, + "interpDuration": 8, + + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotMoving", "state": "idleSettle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "turnRight", + "interpTarget": 6, + "interpDuration": 8, + "transitions": [ + { "var": "isNotTurning", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "turnLeft", + "interpTarget": 6, + "interpDuration": 8, + "transitions": [ + { "var": "isNotTurning", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "fly", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "isNotFlying", "state": "idleSettle" } + ] + }, + { + "id": "takeoffStand", + "interpTarget": 0, + "interpDuration": 6, + "transitions": [ + { "var": "isNotTakeoff", "state": "inAirStand" } + ] + }, + { + "id": "takeoffRun", + "interpTarget": 0, + "interpDuration": 6, + "transitions": [ + { "var": "isNotTakeoff", "state": "inAirRun" } + ] + }, + { + "id": "inAirStand", + "interpTarget": 0, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotInAir", "state": "landStandImpact" } + ] + }, + { + "id": "inAirRun", + "interpTarget": 0, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotInAir", "state": "landRun" } + ] + }, + { + "id": "landStandImpact", + "interpTarget": 6, + "interpDuration": 4, + "transitions": [ + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "landStandImpactOnDone", "state": "landStand" } + ] + }, + { + "id": "landStand", + "interpTarget": 0, + "interpDuration": 1, + "transitions": [ + { "var": "isMovingForward", "state": "idleToWalkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" }, + { "var": "landStandOnDone", "state": "idleSettle" } + ] + }, + { + "id": "landRun", + "interpTarget": 1, + "interpDuration": 7, + "transitions": [ + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "landRunOnDone", "state": "walkFwd" } + ] + } + ] + }, + "children": [ + { + "id": "idle", + "type": "stateMachine", + "data": { + "currentState": "idleStand", + "states": [ + { + "id": "idleStand", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "isTalking", "state": "idleTalk" } + ] + }, + { + "id": "idleTalk", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "notIsTalking", "state": "idleStand" } + ] + } + ] + }, + "children": [ + { + "id": "idleStand", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/idle.fbx", + "startFrame": 0.0, + "endFrame": 300.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "idleTalk", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/talk.fbx", + "startFrame": 0.0, + "endFrame": 800.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "walkFwd", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0.5, 1.5, 2.5, 3.2, 4.5], + "alphaVar": "moveForwardAlpha", + "desiredSpeedVar": "moveForwardSpeed" + }, + "children": [ + { + "id": "walkFwdShort_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_short_fwd.fbx", + "startFrame": 0.0, + "endFrame": 39.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkFwdNormal_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_fwd.fbx", + "startFrame": 0.0, + "endFrame": 35.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkFwdFast_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_fwd_fast.fbx", + "startFrame": 0.0, + "endFrame": 25.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkFwdJog_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jog_fwd.fbx", + "startFrame": 0.0, + "endFrame": 25.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkFwdRun_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/run_fwd.fbx", + "startFrame": 0.0, + "endFrame": 21.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "idleToWalkFwd", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/idle_to_walk.fbx", + "startFrame": 1.0, + "endFrame": 13.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + },{ + "id": "idleSettle", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/settle_to_idle.fbx", + "startFrame": 1.0, + "endFrame": 48.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "walkBwd", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0.6, 2.0], + "alphaVar": "moveBackwardAlpha", + "desiredSpeedVar": "moveBackwardSpeed" + }, + "children": [ + { + "id": "walkBwdShort_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_short_bwd.fbx", + "startFrame": 0.0, + "endFrame": 38.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkBwdNormal_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_bwd_fast.fbx", + "startFrame": 0.0, + "endFrame": 28.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "turnLeft", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/turn_left.fbx", + "startFrame": 0.0, + "endFrame": 32.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "turnRight", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/turn_left.fbx", + "startFrame": 0.0, + "endFrame": 32.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "strafeLeft", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0, 0.5, 1.5, 2.6, 3.0], + "alphaVar": "moveLateralAlpha", + "desiredSpeedVar": "moveLateralSpeed" + }, + "children": [ + + { + "id": "stepLeftShort_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_short_left.fbx", + "startFrame": 0.0, + "endFrame": 29.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "stepLeft_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_left.fbx", + "startFrame": 0.0, + "endFrame": 20.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "strafeLeftAnim_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_left.fbx", + "startFrame": 0.0, + "endFrame": 35.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "strafeLeftFast_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_left_fast.fbx", + "startFrame": 0.0, + "endFrame": 21.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "strafeLeftJog_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jog_left.fbx", + "startFrame": 0.0, + "endFrame": 24.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "strafeRight", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0, 0.5, 1.5, 2.6, 3.0], + "alphaVar": "moveLateralAlpha", + "desiredSpeedVar": "moveLateralSpeed" + }, + "children": [ + { + "id": "stepRightShort_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_short_left.fbx", + "startFrame": 0.0, + "endFrame": 29.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "stepRight_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_left.fbx", + "startFrame": 0.0, + "endFrame": 20.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "strafeRight_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_left.fbx", + "startFrame": 0.0, + "endFrame": 35.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "strafeRightFast_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_left_fast.fbx", + "startFrame": 0.0, + "endFrame": 21.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "strafeRightJog_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jog_left.fbx", + "startFrame": 0.0, + "endFrame": 24.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + } + ] + }, + { + "id": "strafeLeftHmd", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0, 0.5, 2.5], + "alphaVar": "moveLateralAlpha", + "desiredSpeedVar": "moveLateralSpeed" + }, + "children": [ + + { + "id": "stepLeftShort_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_short_left.fbx", + "startFrame": 0.0, + "endFrame": 29.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "stepLeft_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_left.fbx", + "startFrame": 0.0, + "endFrame": 20.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "strafeLeftAnim_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_left_fast.fbx", + "startFrame": 0.0, + "endFrame": 16.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "strafeRightHmd", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0, 0.5, 2.5], + "alphaVar": "moveLateralAlpha", + "desiredSpeedVar": "moveLateralSpeed" + }, + "children": [ + + { + "id": "stepRightShort_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_short_left.fbx", + "startFrame": 0.0, + "endFrame": 29.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "stepRight_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_left.fbx", + "startFrame": 0.0, + "endFrame": 20.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "strafeRightAnim_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_left_fast.fbx", + "startFrame": 0.0, + "endFrame": 16.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + } + ] + }, + { + "id": "fly", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/fly.fbx", + "startFrame": 1.0, + "endFrame": 80.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "takeoffStand", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_takeoff.fbx", + "startFrame": 17.0, + "endFrame": 25.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "takeoffRun", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_takeoff.fbx", + "startFrame": 1.0, + "endFrame": 2.5, + "timeScale": 0.01, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirStand", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "inAirAlpha" + }, + "children": [ + { + "id": "inAirStandPreApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_apex.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 0.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirStandApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_apex.fbx", + "startFrame": 1.0, + "endFrame": 1.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirStandPostApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_apex.fbx", + "startFrame": 2.0, + "endFrame": 2.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + } + ] + }, + { + "id": "inAirRun", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "inAirAlpha" + }, + "children": [ + { + "id": "inAirRunPreApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_in_air.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 0.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirRunApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_in_air.fbx", + "startFrame": 6.0, + "endFrame": 6.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirRunPostApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_in_air.fbx", + "startFrame": 11.0, + "endFrame": 11.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + } + ] + }, + { + "id": "landStandImpact", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_land.fbx", + "startFrame": 1.0, + "endFrame": 6.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "landStand", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_land.fbx", + "startFrame": 6.0, + "endFrame": 28.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "landRun", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_land.fbx", + "startFrame": 1.0, + "endFrame": 6.0, + "timeScale": 0.65, + "loopFlag": false + }, + "children": [] } ] } diff --git a/interface/resources/qml/Stats.qml b/interface/resources/qml/Stats.qml index ea01ec9568..2e6e909312 100644 --- a/interface/resources/qml/Stats.qml +++ b/interface/resources/qml/Stats.qml @@ -180,9 +180,7 @@ Item { ListView { width: geoCol.width height: root.animStackNames.length * 15 - visible: root.animStackNames.length > 0; - model: root.animStackNames delegate: StatText { text: modelData.length > 30 diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index 04bd3944fb..99ce8b4f03 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -201,7 +201,6 @@ void Stats::updateStats(bool force) { for (auto animStackIterator = animStack.begin(); animStackIterator != animStack.end(); ++animStackIterator) { qCDebug(interfaceapp) << "---" << animStackIterator->first << " " << animStackIterator->second; _animStackNames << animStackIterator->first + ": " + QString::number(animStackIterator->second,'f',3); - //forwardAlpha = animStackIterator->second; } emit animStackNamesChanged(); diff --git a/libraries/animation/src/AnimBlendLinear.cpp b/libraries/animation/src/AnimBlendLinear.cpp index 21951a0d72..9b33bd9ea1 100644 --- a/libraries/animation/src/AnimBlendLinear.cpp +++ b/libraries/animation/src/AnimBlendLinear.cpp @@ -45,14 +45,14 @@ const AnimPoseVec& AnimBlendLinear::evaluate(const AnimVariantMap& animVars, con float alpha = glm::fract(clampedAlpha); evaluateAndBlendChildren(animVars, context, triggersOut, alpha, prevPoseIndex, nextPoseIndex, dt); - if (alpha > 0.00001f) { - float weight1 = alpha; - float weight2 = 1.0f - weight1; - _animStack[_children[prevPoseIndex]->getID()] = weight1 * parentAlpha; - if ((int)nextPoseIndex < _children.size()) { - _animStack[_children[nextPoseIndex]->getID()] = weight2 * parentAlpha; - } + + float weight2 = alpha; + float weight1 = 1.0f - weight2; + _animStack[_children[prevPoseIndex]->getID()] = weight1 * parentAlpha; + if ((int)nextPoseIndex < _children.size()) { + _animStack[_children[nextPoseIndex]->getID()] = weight2 * parentAlpha; } + } processOutputJoints(triggersOut); diff --git a/libraries/animation/src/AnimBlendLinearMove.cpp b/libraries/animation/src/AnimBlendLinearMove.cpp index e67e2bd1d5..1c5067acb3 100644 --- a/libraries/animation/src/AnimBlendLinearMove.cpp +++ b/libraries/animation/src/AnimBlendLinearMove.cpp @@ -51,7 +51,7 @@ const AnimPoseVec& AnimBlendLinearMove::evaluate(const AnimVariantMap& animVars, qCDebug(animation) << "in blend linear move " << _alphaVar << ": " << _alpha << " band id: " << _id << " parent alpha " << _animStack[_id]; assert(_children.size() == _characteristicSpeeds.size()); - + _desiredSpeed = animVars.lookup(_desiredSpeedVar, _desiredSpeed); float speed = 0.0f; @@ -65,7 +65,7 @@ const AnimPoseVec& AnimBlendLinearMove::evaluate(const AnimVariantMap& animVars, } _alpha = calculateAlpha(speed, _characteristicSpeeds); float parentAlpha = _animStack[_id]; - + _animStack["speed"] = speed; qCDebug(animation) << "speed is now: " << speed; @@ -81,7 +81,6 @@ const AnimPoseVec& AnimBlendLinearMove::evaluate(const AnimVariantMap& animVars, float prevDeltaTime, nextDeltaTime; setFrameAndPhase(dt, alpha, prevPoseIndex, nextPoseIndex, &prevDeltaTime, &nextDeltaTime, triggersOut); evaluateAndBlendChildren(animVars, context, triggersOut, alpha, prevPoseIndex, nextPoseIndex, prevDeltaTime, nextDeltaTime); - _animStack[_children[0]->getID()] = parentAlpha; } else { auto clampedAlpha = glm::clamp(_alpha, 0.0f, (float)(_children.size() - 1)); diff --git a/libraries/animation/src/AnimClip.cpp b/libraries/animation/src/AnimClip.cpp index 8e4ac01245..f9195a608b 100644 --- a/libraries/animation/src/AnimClip.cpp +++ b/libraries/animation/src/AnimClip.cpp @@ -31,7 +31,6 @@ AnimClip::~AnimClip() { } const AnimPoseVec& AnimClip::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) { - qCDebug(animation) << "anim clip is: " << _url; // lookup parameters from animVars, using current instance variables as defaults. _startFrame = animVars.lookup(_startFrameVar, _startFrame); diff --git a/libraries/animation/src/AnimDefaultPose.cpp b/libraries/animation/src/AnimDefaultPose.cpp index 06fea7764f..a4fdc15605 100644 --- a/libraries/animation/src/AnimDefaultPose.cpp +++ b/libraries/animation/src/AnimDefaultPose.cpp @@ -21,7 +21,6 @@ AnimDefaultPose::~AnimDefaultPose() { } const AnimPoseVec& AnimDefaultPose::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) { - qCDebug(animation) << "in animation default pose"; if (_skeleton) { _poses = _skeleton->getRelativeDefaultPoses(); diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index e4cca02ef2..c8d36db58f 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -867,7 +867,6 @@ void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, co //virtual const AnimPoseVec& AnimInverseKinematics::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) { - qCDebug(animation) << "in animation ik node"; // don't call this function, call overlay() instead assert(false); return _relativePoses; diff --git a/libraries/animation/src/AnimManipulator.cpp b/libraries/animation/src/AnimManipulator.cpp index 6d5bb2821e..1146cbb19a 100644 --- a/libraries/animation/src/AnimManipulator.cpp +++ b/libraries/animation/src/AnimManipulator.cpp @@ -33,7 +33,6 @@ AnimManipulator::~AnimManipulator() { } const AnimPoseVec& AnimManipulator::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) { - qCDebug(animation) << "in anim manipulator node"; return overlay(animVars, context, dt, triggersOut, _skeleton->getRelativeDefaultPoses()); } diff --git a/libraries/animation/src/AnimNode.cpp b/libraries/animation/src/AnimNode.cpp index 0f70b37fca..a8e76617ae 100644 --- a/libraries/animation/src/AnimNode.cpp +++ b/libraries/animation/src/AnimNode.cpp @@ -12,7 +12,6 @@ #include -float AnimNode::_myNum = 42.0; std::map AnimNode::_animStack = { {"none", 0.0f} }; diff --git a/libraries/animation/src/AnimNode.h b/libraries/animation/src/AnimNode.h index 5ad5797572..6efdd2d0c0 100644 --- a/libraries/animation/src/AnimNode.h +++ b/libraries/animation/src/AnimNode.h @@ -84,8 +84,6 @@ public: } void setCurrentFrame(float frame); - const int getMyNum() { return _myNum; } - void setMyNum(float num) { _myNum = num; } const std::map getAnimStack() { return _animStack; } template @@ -129,8 +127,7 @@ protected: std::weak_ptr _parent; std::vector _outputJointNames; - //global available to rig - static float _myNum; + //global available to Stats.h static std::map _animStack; // no copies diff --git a/libraries/animation/src/AnimNodeLoader.cpp b/libraries/animation/src/AnimNodeLoader.cpp index 3d7b1fb219..34305c3ac6 100644 --- a/libraries/animation/src/AnimNodeLoader.cpp +++ b/libraries/animation/src/AnimNodeLoader.cpp @@ -640,7 +640,6 @@ bool processStateMachineNode(AnimNode::Pointer node, const QJsonObject& jsonObj, auto statesArray = statesValue.toArray(); for (const auto& stateValue : statesArray) { - //qCDebug(animation) << " state name is " << stateValue.toString(); if (!stateValue.isObject()) { qCCritical(animation) << "AnimNodeLoader, bad state object in \"states\", id =" << nodeId << ", url =" << jsonUrl.toDisplayString(); return false; diff --git a/libraries/animation/src/AnimOverlay.cpp b/libraries/animation/src/AnimOverlay.cpp index 749382be9f..910f9b37c0 100644 --- a/libraries/animation/src/AnimOverlay.cpp +++ b/libraries/animation/src/AnimOverlay.cpp @@ -42,7 +42,6 @@ void AnimOverlay::buildBoneSet(BoneSet boneSet) { } const AnimPoseVec& AnimOverlay::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) { - qCDebug(animation) << "in anim overlay node" << _alphaVar << ": " << _alpha << " id " << _id; // lookup parameters from animVars, using current instance variables as defaults. // NOTE: switching bonesets can be an expensive operation, let's try to avoid it. diff --git a/libraries/animation/src/AnimStateMachine.cpp b/libraries/animation/src/AnimStateMachine.cpp index 1fe80dca3e..a9f5e62e3a 100644 --- a/libraries/animation/src/AnimStateMachine.cpp +++ b/libraries/animation/src/AnimStateMachine.cpp @@ -22,12 +22,9 @@ AnimStateMachine::~AnimStateMachine() { } const AnimPoseVec& AnimStateMachine::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) { - qCDebug(animation) << "in anim state machine " << _currentState->getID() << ": " << _alpha; - - //setMyNum(getMyNum() + 1.0f); + if (_id.contains("userAnimStateMachine")) { _animStack.clear(); - qCDebug(animation) << "clearing anim stack"; } QString desiredStateID = animVars.lookup(_currentStateVar, _currentState->getID()); @@ -37,7 +34,6 @@ const AnimPoseVec& AnimStateMachine::evaluate(const AnimVariantMap& animVars, co for (auto& state : _states) { if (state->getID() == desiredStateID) { _previousStateID = "(" + _currentState->getID() + ")"; - //_previousStateID = _currentState->getID(); switchState(animVars, context, state); foundState = true; break; @@ -52,7 +48,7 @@ const AnimPoseVec& AnimStateMachine::evaluate(const AnimVariantMap& animVars, co auto desiredState = evaluateTransitions(animVars); if (desiredState != _currentState) { //parenthesis means snapshot of this state. - _previousStateID = "(" + _currentState->getID() + ")"; + _previousStateID = "(" + _currentState->getID() + ")"; switchState(animVars, context, desiredState); } @@ -63,7 +59,6 @@ const AnimPoseVec& AnimStateMachine::evaluate(const AnimVariantMap& animVars, co if (!_previousStateID.contains("none")) { _animStack[_previousStateID] = 1.0f - _alpha; } - if (_duringInterp) { _alpha += _alphaVel * dt; @@ -71,8 +66,6 @@ const AnimPoseVec& AnimStateMachine::evaluate(const AnimVariantMap& animVars, co _animStack[_currentState->getID()] = 1.0f; } else { _animStack[_currentState->getID()] = _alpha; - qCDebug(animation) << "setting child alpha " << _currentState->getID() << " " << _alpha; - } if (_alpha < 1.0f) { AnimPoseVec* nextPoses = nullptr; @@ -91,7 +84,6 @@ const AnimPoseVec& AnimStateMachine::evaluate(const AnimVariantMap& animVars, co } else { assert(false); } - if (_poses.size() > 0 && nextPoses && prevPoses && nextPoses->size() > 0 && prevPoses->size() > 0) { ::blend(_poses.size(), &(prevPoses->at(0)), &(nextPoses->at(0)), _alpha, &_poses[0]); } diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 433fd625e4..3ab8dfe8ff 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -642,7 +642,6 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos float turningSpeed = glm::orientedAngle(forward, _lastForward, IDENTITY_UP) / deltaTime; glm::vec3 lastVel = glm::inverse(worldRotation) * _lastVelocity; - float lastForwardSpeed = glm::dot(lastVel, IDENTITY_FORWARD); float lastLateralSpeed = glm::dot(lastVel, IDENTITY_RIGHT); @@ -732,12 +731,6 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos bool resetVelocityAverage = false; - //bool headEnabled = params.primaryControllerFlags[PrimaryControllerType_Head] & (uint8_t)ControllerFlags::Enabled; - //int headType = (int)(IKTarget::Type::HmdHead); - // headType = (int)_animVars.lookup("headType", headType); - qCDebug(animation) << "head type anim variable is : " << _headEnabled; - - if (_state == RigRole::Move) { glm::vec3 horizontalVel = localVel - glm::vec3(0.0f, localVel.y, 0.0f); if (glm::length(horizontalVel) > MOVE_ENTER_SPEED_THRESHOLD) { @@ -762,13 +755,10 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos // backward _animVars.set("isMovingBackward", true); _animVars.set("isMovingForward", false); - if (!_headEnabled) { - _animVars.set("isMovingRight", false); - _animVars.set("isMovingLeft", false); - } else { - _animVars.set("isMovingRightHmd", false); - _animVars.set("isMovingLeftHmd", false); - } + _animVars.set("isMovingRight", false); + _animVars.set("isMovingLeft", false); + _animVars.set("isMovingRightHmd", false); + _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotMoving", false); } } else { @@ -783,10 +773,10 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isMovingRightHmd", false); _animVars.set("isMovingLeftHmd", false); } else { - _animVars.set("isMovingRightHmd", true); - _animVars.set("isMovingLeftHmd", false); _animVars.set("isMovingRight", false); _animVars.set("isMovingLeft", false); + _animVars.set("isMovingRightHmd", true); + _animVars.set("isMovingLeftHmd", false); } _animVars.set("isMovingForward", false); _animVars.set("isMovingBackward", false); @@ -802,10 +792,10 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isMovingRightHmd", false); _animVars.set("isMovingLeftHmd", false); } else { - _animVars.set("isMovingRightHmd", false); - _animVars.set("isMovingLeftHmd", true); _animVars.set("isMovingRight", false); _animVars.set("isMovingLeft", false); + _animVars.set("isMovingRightHmd", false); + _animVars.set("isMovingLeftHmd", true); } _animVars.set("isMovingForward", false); _animVars.set("isMovingBackward", false); @@ -870,13 +860,13 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos // default anim vars to notMoving and notTurning _animVars.set("isMovingForward", false); _animVars.set("isMovingBackward", false); - _animVars.set("isMovingLeft", false); _animVars.set("isMovingRight", false); + _animVars.set("isMovingLeft", false); + _animVars.set("isMovingRightHmd", false); + _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotMoving", true); _animVars.set("isTurningLeft", false); _animVars.set("isTurningRight", false); - _animVars.set("isMovingRightHmd", false); - _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotTurning", true); _animVars.set("isFlying", false); _animVars.set("isNotFlying", true); @@ -891,13 +881,13 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos // flying. _animVars.set("isMovingForward", false); _animVars.set("isMovingBackward", false); - _animVars.set("isMovingLeft", false); _animVars.set("isMovingRight", false); + _animVars.set("isMovingLeft", false); + _animVars.set("isMovingRightHmd", false); + _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotMoving", true); _animVars.set("isTurningLeft", false); _animVars.set("isTurningRight", false); - _animVars.set("isMovingRightHmd", false); - _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotTurning", true); _animVars.set("isFlying", true); _animVars.set("isNotFlying", false); @@ -1099,7 +1089,6 @@ void Rig::updateAnimations(float deltaTime, const glm::mat4& rootTransform, cons AnimVariantMap triggersOut; _internalPoseSet._relativePoses = _animNode->evaluate(_animVars, context, deltaTime, triggersOut); - if ((int)_internalPoseSet._relativePoses.size() != _animSkeleton->getNumJoints()) { // animations haven't fully loaded yet. _internalPoseSet._relativePoses = _animSkeleton->getRelativeDefaultPoses(); From 59271881baada477fd970bd26fb5d3d3de45992a Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Fri, 3 Aug 2018 17:45:06 -0700 Subject: [PATCH 146/332] Create & destroy ScriptEngines on AC thread but move to main after creation --- assignment-client/src/Agent.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index f1bdaaad12..b9d1db2b3e 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -82,8 +82,6 @@ Agent::Agent(ReceivedMessage& message) : DependencyManager::set(); DependencyManager::set(); - DependencyManager::set(ScriptEngine::AGENT_SCRIPT); - DependencyManager::set(); DependencyManager::set(); @@ -162,6 +160,8 @@ void Agent::handleAudioPacket(QSharedPointer message) { static const QString AGENT_LOGGING_NAME = "agent"; void Agent::run() { + // Create ScriptEngines on threaded-assignment thread then move to main thread. + DependencyManager::set(ScriptEngine::AGENT_SCRIPT)->moveToThread(qApp->thread()); // make sure we request our script once the agent connects to the domain auto nodeList = DependencyManager::get(); @@ -497,7 +497,6 @@ void Agent::executeScript() { Frame::clearFrameHandler(AUDIO_FRAME_TYPE); Frame::clearFrameHandler(AVATAR_FRAME_TYPE); - DependencyManager::destroy(); setFinished(true); } @@ -848,7 +847,8 @@ void Agent::aboutToFinish() { DependencyManager::destroy(); DependencyManager::destroy(); DependencyManager::destroy(); - + DependencyManager::destroy(); + DependencyManager::destroy(); QMetaObject::invokeMethod(&_avatarAudioTimer, "stop"); // cleanup codec & encoder From cf34a2cffd5dc5833ed486c3729a40367c1dab02 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 3 Aug 2018 13:43:19 -0700 Subject: [PATCH 147/332] Do not const cast CollisionRegion --- interface/src/raypick/CollisionPick.cpp | 21 ++++++++------------- interface/src/raypick/CollisionPick.h | 5 ++++- libraries/shared/src/RegisteredMetaTypes.h | 20 ++++++++++---------- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index 0531a5a67d..d3411a77ca 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -13,7 +13,6 @@ #include #include "ScriptEngineLogging.h" -#include "model-networking/ModelCache.h" #include "UUIDHasher.h" QVariantMap CollisionPickResult::toVariantMap() const { @@ -70,14 +69,10 @@ QVariantMap CollisionPickResult::toVariantMap() const { return variantMap; } -bool CollisionPick::isShapeInfoReady(CollisionRegion& pick) { - if (pick.shouldComputeShapeInfo()) { - if (!_cachedResource || _cachedResource->getURL() != pick.modelURL) { - _cachedResource = DependencyManager::get()->getCollisionGeometryResource(pick.modelURL); - } - - if (_cachedResource->isLoaded()) { - computeShapeInfo(pick, pick.shapeInfo, _cachedResource); +bool CollisionPick::isShapeInfoReady() { + if (_mathPick.shouldComputeShapeInfo()) { + if (_cachedResource && _cachedResource->isLoaded()) { + computeShapeInfo(_mathPick, *_mathPick.shapeInfo, _cachedResource); return true; } @@ -321,12 +316,12 @@ CollisionRegion CollisionPick::getMathematicalPick() const { } PickResultPointer CollisionPick::getEntityIntersection(const CollisionRegion& pick) { - if (!isShapeInfoReady(*const_cast(&pick))) { + if (!isShapeInfoReady()) { // Cannot compute result return std::make_shared(); } - const auto& entityIntersections = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_ENTITY, pick.shapeInfo, pick.transform); + const auto& entityIntersections = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_ENTITY, *pick.shapeInfo, pick.transform); return std::make_shared(pick, entityIntersections, std::vector()); } @@ -335,12 +330,12 @@ PickResultPointer CollisionPick::getOverlayIntersection(const CollisionRegion& p } PickResultPointer CollisionPick::getAvatarIntersection(const CollisionRegion& pick) { - if (!isShapeInfoReady(*const_cast(&pick))) { + if (!isShapeInfoReady()) { // Cannot compute result return std::make_shared(); } - const auto& avatarIntersections = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_AVATAR, pick.shapeInfo, pick.transform); + const auto& avatarIntersections = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_AVATAR, *pick.shapeInfo, pick.transform); return std::make_shared(pick, std::vector(), avatarIntersections); } diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index 48b3173f19..72f5450c41 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -62,6 +62,9 @@ public: Pick(filter, maxDistance, enabled), _mathPick(collisionRegion), _physicsEngine(physicsEngine) { + if (collisionRegion.shouldComputeShapeInfo()) { + _cachedResource = DependencyManager::get()->getCollisionGeometryResource(collisionRegion.modelURL); + } } CollisionRegion getMathematicalPick() const override; @@ -73,7 +76,7 @@ public: protected: // Returns true if pick.shapeInfo is valid. Otherwise, attempts to get the shapeInfo ready for use. - bool isShapeInfoReady(CollisionRegion& pick); + bool isShapeInfoReady(); void computeShapeInfo(CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource); CollisionRegion _mathPick; diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index a96903100e..151526adbd 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -243,7 +243,7 @@ public: transform.setScale(vec3FromVariant(shape["dimensions"])); } - shapeInfo.setParams(shapeType, transform.getScale() / 2.0f, modelURL.toString()); + shapeInfo->setParams(shapeType, transform.getScale() / 2.0f, modelURL.toString()); } } @@ -259,7 +259,7 @@ public: QVariantMap collisionRegion; QVariantMap shape; - shape["shapeType"] = ShapeInfo::getNameForShapeType(shapeInfo.getType()); + shape["shapeType"] = ShapeInfo::getNameForShapeType(shapeInfo->getType()); shape["modelURL"] = modelURL.toString(); shape["dimensions"] = vec3toVariant(transform.getScale()); @@ -274,33 +274,33 @@ public: operator bool() const override { return !(glm::any(glm::isnan(transform.getTranslation())) || glm::any(glm::isnan(transform.getRotation())) || - shapeInfo.getType() == SHAPE_TYPE_NONE); + shapeInfo->getType() == SHAPE_TYPE_NONE); } bool operator==(const CollisionRegion& other) const { return glm::all(glm::equal(transform.getTranslation(), other.transform.getTranslation())) && glm::all(glm::equal(transform.getRotation(), other.transform.getRotation())) && glm::all(glm::equal(transform.getScale(), other.transform.getScale())) && - shapeInfo.getType() == other.shapeInfo.getType() && + shapeInfo->getType() == other.shapeInfo->getType() && modelURL == other.modelURL; } bool shouldComputeShapeInfo() const { - if (!(shapeInfo.getType() == SHAPE_TYPE_HULL || - (shapeInfo.getType() >= SHAPE_TYPE_COMPOUND && - shapeInfo.getType() <= SHAPE_TYPE_STATIC_MESH) + if (!(shapeInfo->getType() == SHAPE_TYPE_HULL || + (shapeInfo->getType() >= SHAPE_TYPE_COMPOUND && + shapeInfo->getType() <= SHAPE_TYPE_STATIC_MESH) )) { return false; } - return !shapeInfo.getPointCollection().size(); + return !shapeInfo->getPointCollection().size(); } // We can't load the model here because it would create a circular dependency, so we delegate that responsibility to the owning CollisionPick QUrl modelURL; // We can't compute the shapeInfo here without loading the model first, so we delegate that responsibility to the owning CollisionPick - ShapeInfo shapeInfo; + std::shared_ptr shapeInfo = std::make_shared(); Transform transform; }; @@ -371,7 +371,7 @@ namespace std { struct hash { size_t operator()(const CollisionRegion& a) const { size_t result = 0; - hash_combine(result, a.transform, (int)a.shapeInfo.getType(), qHash(a.modelURL)); + hash_combine(result, a.transform, (int)a.shapeInfo->getType(), qHash(a.modelURL)); return result; } }; From e7766039b9e66ca8c22a768d22be6f0bfcc668d2 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 3 Aug 2018 14:08:47 -0700 Subject: [PATCH 148/332] Pass pick variant map into unsuccessful/default collision results --- interface/src/raypick/CollisionPick.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index d3411a77ca..eac71ab6ce 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -318,7 +318,7 @@ CollisionRegion CollisionPick::getMathematicalPick() const { PickResultPointer CollisionPick::getEntityIntersection(const CollisionRegion& pick) { if (!isShapeInfoReady()) { // Cannot compute result - return std::make_shared(); + return std::make_shared(pick.toVariantMap()); } const auto& entityIntersections = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_ENTITY, *pick.shapeInfo, pick.transform); @@ -326,13 +326,13 @@ PickResultPointer CollisionPick::getEntityIntersection(const CollisionRegion& pi } PickResultPointer CollisionPick::getOverlayIntersection(const CollisionRegion& pick) { - return getDefaultResult(QVariantMap()); + return getDefaultResult(pick.toVariantMap()); } PickResultPointer CollisionPick::getAvatarIntersection(const CollisionRegion& pick) { if (!isShapeInfoReady()) { // Cannot compute result - return std::make_shared(); + return std::make_shared(pick.toVariantMap()); } const auto& avatarIntersections = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_AVATAR, *pick.shapeInfo, pick.transform); @@ -340,5 +340,5 @@ PickResultPointer CollisionPick::getAvatarIntersection(const CollisionRegion& pi } PickResultPointer CollisionPick::getHUDIntersection(const CollisionRegion& pick) { - return getDefaultResult(QVariantMap()); + return getDefaultResult(pick.toVariantMap()); } \ No newline at end of file From c6b24496c85296ef461d2f765186d0e2fd758efa Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 3 Aug 2018 14:51:08 -0700 Subject: [PATCH 149/332] Add 'loaded' parameter to CollisionPickResult to indicate if the collision region is loaded --- interface/src/raypick/CollisionPick.cpp | 13 +++++++------ interface/src/raypick/CollisionPick.h | 18 ++++++++++++++++-- interface/src/raypick/PickScriptingInterface.h | 1 + 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index eac71ab6ce..e96ccb1580 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -64,6 +64,7 @@ QVariantMap CollisionPickResult::toVariantMap() const { } variantMap["intersectingObjects"] = qIntersectingObjects; + variantMap["loaded"] = (loadState == LOAD_STATE_LOADED); variantMap["collisionRegion"] = pickVariant; return variantMap; @@ -318,27 +319,27 @@ CollisionRegion CollisionPick::getMathematicalPick() const { PickResultPointer CollisionPick::getEntityIntersection(const CollisionRegion& pick) { if (!isShapeInfoReady()) { // Cannot compute result - return std::make_shared(pick.toVariantMap()); + return std::make_shared(pick.toVariantMap(), CollisionPickResult::LOAD_STATE_NOT_LOADED, std::vector(), std::vector()); } const auto& entityIntersections = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_ENTITY, *pick.shapeInfo, pick.transform); - return std::make_shared(pick, entityIntersections, std::vector()); + return std::make_shared(pick, CollisionPickResult::LOAD_STATE_LOADED, entityIntersections, std::vector()); } PickResultPointer CollisionPick::getOverlayIntersection(const CollisionRegion& pick) { - return getDefaultResult(pick.toVariantMap()); + return std::make_shared(pick.toVariantMap(), isShapeInfoReady() ? CollisionPickResult::LOAD_STATE_LOADED : CollisionPickResult::LOAD_STATE_NOT_LOADED, std::vector(), std::vector()); } PickResultPointer CollisionPick::getAvatarIntersection(const CollisionRegion& pick) { if (!isShapeInfoReady()) { // Cannot compute result - return std::make_shared(pick.toVariantMap()); + return std::make_shared(pick.toVariantMap(), CollisionPickResult::LOAD_STATE_NOT_LOADED, std::vector(), std::vector()); } const auto& avatarIntersections = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_AVATAR, *pick.shapeInfo, pick.transform); - return std::make_shared(pick, std::vector(), avatarIntersections); + return std::make_shared(pick, CollisionPickResult::LOAD_STATE_LOADED, std::vector(), avatarIntersections); } PickResultPointer CollisionPick::getHUDIntersection(const CollisionRegion& pick) { - return getDefaultResult(pick.toVariantMap()); + return std::make_shared(pick.toVariantMap(), isShapeInfoReady() ? CollisionPickResult::LOAD_STATE_LOADED : CollisionPickResult::LOAD_STATE_NOT_LOADED, std::vector(), std::vector()); } \ No newline at end of file diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index 72f5450c41..5a3260b981 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -15,11 +15,18 @@ class CollisionPickResult : public PickResult { public: + enum LoadState { + LOAD_STATE_UNKNOWN, + LOAD_STATE_NOT_LOADED, + LOAD_STATE_LOADED + }; + CollisionPickResult() {} CollisionPickResult(const QVariantMap& pickVariant) : PickResult(pickVariant) {} - CollisionPickResult(const CollisionRegion& searchRegion, const std::vector& entityIntersections, const std::vector& avatarIntersections) : + CollisionPickResult(const CollisionRegion& searchRegion, LoadState loadState, const std::vector& entityIntersections, const std::vector& avatarIntersections) : PickResult(searchRegion.toVariantMap()), + loadState(loadState), intersects(entityIntersections.size() || avatarIntersections.size()), entityIntersections(entityIntersections), avatarIntersections(avatarIntersections) { @@ -29,8 +36,10 @@ public: avatarIntersections = collisionPickResult.avatarIntersections; entityIntersections = collisionPickResult.entityIntersections; intersects = avatarIntersections.size() || entityIntersections.size(); + loadState = collisionPickResult.loadState; } + LoadState loadState { LOAD_STATE_UNKNOWN }; bool intersects { false }; std::vector entityIntersections; std::vector avatarIntersections; @@ -51,6 +60,9 @@ public: } intersects = entityIntersections.size() || avatarIntersections.size(); + if (newCollisionResult->loadState == LOAD_STATE_NOT_LOADED || loadState == LOAD_STATE_UNKNOWN) { + loadState = (LoadState)newCollisionResult->loadState; + } return std::make_shared(*this); } @@ -68,7 +80,9 @@ public: } CollisionRegion getMathematicalPick() const override; - PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const override { return std::make_shared(pickVariant); } + PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const override { + return std::make_shared(pickVariant, CollisionPickResult::LOAD_STATE_UNKNOWN, std::vector(), std::vector()); + } PickResultPointer getEntityIntersection(const CollisionRegion& pick) override; PickResultPointer getOverlayIntersection(const CollisionRegion& pick) override; PickResultPointer getAvatarIntersection(const CollisionRegion& pick) override; diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 4c857585be..35196663ab 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -135,6 +135,7 @@ public: * @property {EntityItersection[]} entityIntersections The collision information of entities which intersect with the CollisionRegion. There may be multiple intersections with the same entity which represent distinct collision points. * @property {EntityItersection[]} avatarIntersections The collision information of avatars which intersect with the CollisionRegion. There may be multiple intersections with the same entity which represent distinct collision points. * @property {CollisionRegion} collisionRegion The CollisionRegion that was used. Valid even if there was no intersection. + * @property {boolean} loaded If the CollisionRegion was successfully loaded (may be false if a model was used) */ /**jsdoc From a460cfac29ed226251369dbc1e45722dfd27dc05 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 3 Aug 2018 15:35:59 -0700 Subject: [PATCH 150/332] Do not store physics engine pointer in PickScriptingInterface --- interface/src/Application.cpp | 1 - interface/src/raypick/PickScriptingInterface.cpp | 3 ++- interface/src/raypick/PickScriptingInterface.h | 8 -------- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index bc2055bd06..698a571b66 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -6656,7 +6656,6 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEnginePointe auto pickScriptingInterface = DependencyManager::get(); pickScriptingInterface->registerMetaTypes(scriptEngine.data()); - pickScriptingInterface->setPhysicsEngine(_physicsEngine); // connect this script engines printedMessage signal to the global ScriptEngines these various messages connect(scriptEngine.data(), &ScriptEngine::printedMessage, diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index 384a193f25..5e2a26712e 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -11,6 +11,7 @@ #include #include "GLMHelpers.h" +#include "Application.h" #include #include "StaticRayPick.h" @@ -174,7 +175,7 @@ unsigned int PickScriptingInterface::createCollisionPick(const QVariant& propert CollisionRegion collisionRegion(propMap); - return DependencyManager::get()->addPick(PickQuery::Collision, std::make_shared(filter, maxDistance, enabled, collisionRegion, _physicsEngine)); + return DependencyManager::get()->addPick(PickQuery::Collision, std::make_shared(filter, maxDistance, enabled, collisionRegion, qApp->getPhysicsEngine())); } void PickScriptingInterface::enablePick(unsigned int uid) { diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 35196663ab..001f6cd20c 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -295,14 +295,6 @@ public slots: * @returns {number} */ static constexpr unsigned int INTERSECTED_HUD() { return IntersectionType::HUD; } - - // Set to allow CollisionPicks to have access to the physics engine - void setPhysicsEngine(PhysicsEnginePointer physicsEngine) { - _physicsEngine = physicsEngine; - } - -protected: - PhysicsEnginePointer _physicsEngine; }; #endif // hifi_PickScriptingInterface_h From bac9d195be9cfc8d6a0c24e1b6d375d008b3dfe3 Mon Sep 17 00:00:00 2001 From: amantley Date: Fri, 3 Aug 2018 17:56:49 -0700 Subject: [PATCH 151/332] working on the hand blend alphas, something is wrong with the print out --- libraries/animation/src/AnimBlendLinear.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/animation/src/AnimBlendLinear.cpp b/libraries/animation/src/AnimBlendLinear.cpp index 9b33bd9ea1..e49c3e0060 100644 --- a/libraries/animation/src/AnimBlendLinear.cpp +++ b/libraries/animation/src/AnimBlendLinear.cpp @@ -43,9 +43,16 @@ const AnimPoseVec& AnimBlendLinear::evaluate(const AnimVariantMap& animVars, con size_t prevPoseIndex = glm::floor(clampedAlpha); size_t nextPoseIndex = glm::ceil(clampedAlpha); float alpha = glm::fract(clampedAlpha); + if (prevPoseIndex == nextPoseIndex) { + if (nextPoseIndex == 0) { + nextPoseIndex = 1; + } else if (prevPoseIndex == (_children.size() - 1)) { + prevPoseIndex = (_children.size() - 2); + } + } evaluateAndBlendChildren(animVars, context, triggersOut, alpha, prevPoseIndex, nextPoseIndex, dt); - + qCDebug(animation) << "linear blend alpha " << alpha << " next pose " << _children[nextPoseIndex]->getID() << " previous pose " << _children[prevPoseIndex]->getID(); float weight2 = alpha; float weight1 = 1.0f - weight2; _animStack[_children[prevPoseIndex]->getID()] = weight1 * parentAlpha; From 9bebd1e6232e1b8bdcf7b32356c394fb4d429039 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Fri, 3 Aug 2018 18:11:55 -0700 Subject: [PATCH 152/332] making changes --- .../qml/hifi/tablet/ControllerSettings.qml | 2 +- interface/src/ui/PreferencesDialog.cpp | 38 +------------------ 2 files changed, 2 insertions(+), 38 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/ControllerSettings.qml b/interface/resources/qml/hifi/tablet/ControllerSettings.qml index 0a45feb61f..135c1379e2 100644 --- a/interface/resources/qml/hifi/tablet/ControllerSettings.qml +++ b/interface/resources/qml/hifi/tablet/ControllerSettings.qml @@ -299,7 +299,7 @@ Item { anchors.fill: stackView id: controllerPrefereneces objectName: "TabletControllerPreferences" - showCategories: [( (HMD.active) ? "VR Movement" : "Movement"), "Game Controller", "Sixense Controllers", "Perception Neuron", "Leap Motion"] + showCategories: ["VR Movement", "Game Controller", "Sixense Controllers", "Perception Neuron", "Leap Motion"] categoryProperties: { "VR Movement" : { "User real-world height (meters)" : { "anchors.right" : "undefined" }, diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index 50a4d17cae..682dad74e8 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -266,42 +266,6 @@ void setupPreferences() { preferences->addPreference(new SliderPreference(FACE_TRACKING, "Eye Deflection", getter, setter)); } - static const QString MOVEMENT{ "Movement" }; - { - - static const QString movementsControlChannel = QStringLiteral("Hifi-Advanced-Movement-Disabler"); - auto getter = [=]()->bool { return myAvatar->useAdvancedMovementControls(); }; - auto setter = [=](bool value) { myAvatar->setUseAdvancedMovementControls(value); }; - preferences->addPreference(new CheckPreference(MOVEMENT, - QStringLiteral("Advanced movement for hand controllers"), - getter, setter)); - } - { - auto getter = [=]()->int { return myAvatar->getSnapTurn() ? 0 : 1; }; - auto setter = [=](int value) { myAvatar->setSnapTurn(value == 0); }; - auto preference = new RadioButtonsPreference(MOVEMENT, "Snap turn / Smooth turn", getter, setter); - QStringList items; - items << "Snap turn" << "Smooth turn"; - preference->setItems(items); - preferences->addPreference(preference); - } - { - auto getter = [=]()->float { return myAvatar->getUserHeight(); }; - auto setter = [=](float value) { myAvatar->setUserHeight(value); }; - auto preference = new SpinnerPreference(MOVEMENT, "User real-world height (meters)", getter, setter); - preference->setMin(1.0f); - preference->setMax(2.2f); - preference->setDecimals(3); - preference->setStep(0.001f); - preferences->addPreference(preference); - } - { - auto preference = new ButtonPreference(MOVEMENT, "RESET SENSORS", [] { - qApp->resetSensors(); - }); - preferences->addPreference(preference); - } - static const QString VR_MOVEMENT{ "VR Movement" }; { @@ -315,7 +279,7 @@ void setupPreferences() { { auto getter = [=]()->bool { return myAvatar->getFlyingHMDPref(); }; auto setter = [=](bool value) { myAvatar->setFlyingHMDPref(value); }; - preferences->addPreference(new CheckPreference(VR_MOVEMENT, "Flying & jumping", getter, setter)); + preferences->addPreference(new CheckPreference(VR_MOVEMENT, "Flying & jumping (HMD)", getter, setter)); } { auto getter = [=]()->int { return myAvatar->getSnapTurn() ? 0 : 1; }; From e6fb2a9e15a4454aaf9716d0918a1a3207e9858d Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Fri, 3 Aug 2018 21:57:53 -0700 Subject: [PATCH 153/332] Add scribe source files to project --- cmake/macros/AutoScribeShader.cmake | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/cmake/macros/AutoScribeShader.cmake b/cmake/macros/AutoScribeShader.cmake index 03eaa2842f..fec51fefc7 100755 --- a/cmake/macros/AutoScribeShader.cmake +++ b/cmake/macros/AutoScribeShader.cmake @@ -200,14 +200,17 @@ macro(AUTOSCRIBE_SHADER_FINISH) endforeach() if (DEFINED SHADER_HEADERS) - source_group("Shaders/${SHADER_LIB}/Headers" FILES ${SHADER_HEADERS}) + list(REMOVE_DUPLICATES SHADER_HEADERS) + source_group("${SHADER_LIB}/Headers" FILES ${SHADER_HEADERS}) list(APPEND ALL_SHADER_HEADERS ${SHADER_HEADERS}) + list(APPEND ALL_SCRIBE_SHADERS ${SHADER_HEADERS}) endif() string(CONCAT SHADER_ENUMS "${SHADER_ENUMS}" "namespace ${SHADER_NAMESPACE} {\n") if (DEFINED VERTEX_SHADERS) list(REMOVE_DUPLICATES VERTEX_SHADERS) - source_group("Shaders/${SHADER_LIB}/Vertex" FILES ${VERTEX_SHADERS}) + source_group("${SHADER_LIB}/Vertex" FILES ${VERTEX_SHADERS}) + list(APPEND ALL_SCRIBE_SHADERS ${VERTEX_SHADERS}) string(CONCAT SHADER_ENUMS "${SHADER_ENUMS}" "namespace vertex { enum {\n") foreach(SHADER ${VERTEX_SHADERS}) process_shader_file() @@ -217,7 +220,8 @@ macro(AUTOSCRIBE_SHADER_FINISH) if (DEFINED FRAGMENT_SHADERS) list(REMOVE_DUPLICATES FRAGMENT_SHADERS) - source_group("Shaders/${SHADER_LIB}/Fragment" FILES ${FRAGMENT_SHADERS}) + source_group("${SHADER_LIB}/Fragment" FILES ${FRAGMENT_SHADERS}) + list(APPEND ALL_SCRIBE_SHADERS ${FRAGMENT_SHADERS}) string(CONCAT SHADER_ENUMS "${SHADER_ENUMS}" "namespace fragment { enum {\n") foreach(SHADER ${FRAGMENT_SHADERS}) process_shader_file() @@ -266,8 +270,10 @@ macro(AUTOSCRIBE_SHADER_FINISH) endforeach() # Custom targets required to force generation of the shaders via scribe + add_custom_target(scribe_shaders SOURCES ${ALL_SCRIBE_SHADERS}) add_custom_target(compiled_shaders SOURCES ${COMPILED_SHADERS}) add_custom_target(reflected_shaders SOURCES ${COMPILED_SHADER_REFLECTIONS}) + set_target_properties(scribe_shaders PROPERTIES FOLDER "Shaders") set_target_properties(compiled_shaders PROPERTIES FOLDER "Shaders") set_target_properties(reflected_shaders PROPERTIES FOLDER "Shaders") From 83ed572a33893bf6f4c9045d333836d1ba55e7af Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 4 Aug 2018 19:27:44 +1200 Subject: [PATCH 154/332] Render Touch controllers at physical hands's locations --- scripts/system/controllers/touchControllerConfiguration.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/system/controllers/touchControllerConfiguration.js b/scripts/system/controllers/touchControllerConfiguration.js index 9df8f9e97d..f22252f646 100644 --- a/scripts/system/controllers/touchControllerConfiguration.js +++ b/scripts/system/controllers/touchControllerConfiguration.js @@ -44,7 +44,7 @@ TOUCH_CONTROLLER_CONFIGURATION_LEFT = { controllers: [ { modelURL: BASE_URL + "touch_l_body.fbx", - jointIndex: MyAvatar.getJointIndex("_CONTROLLER_LEFTHAND"), + jointIndex: MyAvatar.getJointIndex("_CAMERA_RELATIVE_CONTROLLER_LEFTHAND"), naturalPosition: { x: 0.01648625358939171, y: -0.03551870584487915, z: -0.018527675420045853 }, dimensions: { x: 0.11053799837827682, y: 0.0995776429772377, z: 0.10139888525009155 }, rotation: leftBaseRotation, @@ -209,7 +209,7 @@ TOUCH_CONTROLLER_CONFIGURATION_RIGHT = { controllers: [ { modelURL: BASE_URL + "touch_r_body.fbx", - jointIndex: MyAvatar.getJointIndex("_CONTROLLER_RIGHTHAND"), + jointIndex: MyAvatar.getJointIndex("_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND"), naturalPosition: { x: -0.016486231237649918, y: -0.03551865369081497, z: -0.018527653068304062 }, dimensions: { x: 0.11053784191608429, y: 0.09957750141620636, z: 0.10139875113964081 }, rotation: rightBaseRotation, From 92e64510ecc8f175b03784db12110069d7e6c5ca Mon Sep 17 00:00:00 2001 From: Olivier Prat Date: Sat, 4 Aug 2018 15:58:24 +0200 Subject: [PATCH 155/332] Fixed draw frustum and draw aabb code --- .../gpu/src/gpu/DrawTransformVertexPosition.slv | 2 -- libraries/render-utils/src/RenderDeferredTask.cpp | 2 +- libraries/render/src/render/DrawTask.cpp | 12 +++++++++--- libraries/render/src/render/DrawTask.h | 3 ++- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv b/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv index cf66a615f5..7565b1ae3b 100644 --- a/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv +++ b/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv @@ -18,8 +18,6 @@ layout(location = 0) in vec4 inPosition; -out vec3 varWorldPos; - void main(void) { // standard transform TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 8c3afc74f7..8281e1d010 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -246,7 +246,7 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren task.addJob("DrawZones", zones); const auto frustums = task.addJob("ExtractFrustums"); const auto viewFrustum = frustums.getN(ExtractFrustums::VIEW_FRUSTUM); - task.addJob("DrawViewFrustum", viewFrustum, glm::vec3(1.0f, 1.0f, 0.0f)); + task.addJob("DrawViewFrustum", viewFrustum, glm::vec3(0.0f, 1.0f, 0.0f)); for (auto i = 0; i < ExtractFrustums::SHADOW_CASCADE_FRUSTUM_COUNT; i++) { const auto shadowFrustum = frustums.getN(ExtractFrustums::SHADOW_CASCADE0_FRUSTUM + i); float tint = 1.0f - i / float(ExtractFrustums::SHADOW_CASCADE_FRUSTUM_COUNT - 1); diff --git a/libraries/render/src/render/DrawTask.cpp b/libraries/render/src/render/DrawTask.cpp index 3a7555f790..0d7139bcd0 100755 --- a/libraries/render/src/render/DrawTask.cpp +++ b/libraries/render/src/render/DrawTask.cpp @@ -220,10 +220,15 @@ void DrawBounds::run(const RenderContextPointer& renderContext, }); } +gpu::Stream::FormatPointer DrawQuadVolume::_format; + DrawQuadVolume::DrawQuadVolume(const glm::vec3& color) : _color{ color } { _meshVertices = gpu::BufferView(std::make_shared(sizeof(glm::vec3) * 8, nullptr), gpu::Element::VEC3F_XYZ); - _meshStream.addBuffer(_meshVertices._buffer, _meshVertices._offset, _meshVertices._stride); + if (!_format) { + _format = std::make_shared(); + _format->setAttribute(gpu::Stream::POSITION, gpu::Stream::POSITION, gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::XYZ), 0); + } } void DrawQuadVolume::configure(const Config& configuration) { @@ -253,10 +258,11 @@ void DrawQuadVolume::run(const render::RenderContextPointer& renderContext, cons batch.setProjectionTransform(projMat); batch.setViewTransform(viewMat); batch.setPipeline(getPipeline()); - batch.setIndexBuffer(indices); batch._glUniform4f(0, _color.x, _color.y, _color.z, 1.0f); - batch.setInputStream(0, _meshStream); + batch.setInputFormat(_format); + batch.setInputBuffer(gpu::Stream::POSITION, _meshVertices); + batch.setIndexBuffer(indices); batch.drawIndexed(gpu::LINES, indexCount, 0U); args->_batch = nullptr; diff --git a/libraries/render/src/render/DrawTask.h b/libraries/render/src/render/DrawTask.h index 6f98e3bef1..a0a0a9bbac 100755 --- a/libraries/render/src/render/DrawTask.h +++ b/libraries/render/src/render/DrawTask.h @@ -97,10 +97,11 @@ protected: const gpu::BufferView& indices, int indexCount); gpu::BufferView _meshVertices; - gpu::BufferStream _meshStream; glm::vec3 _color; bool _isUpdateEnabled{ true }; + static gpu::Stream::FormatPointer _format; + static gpu::PipelinePointer getPipeline(); }; From d457cf45d5694c40c9ef47d421a13618b315eabe Mon Sep 17 00:00:00 2001 From: Olivier Prat Date: Sat, 4 Aug 2018 16:51:05 +0200 Subject: [PATCH 156/332] Fixed bug with NaN shadow anti frustum leading to disappearing shadows on some occasions --- libraries/render-utils/src/RenderShadowTask.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libraries/render-utils/src/RenderShadowTask.cpp b/libraries/render-utils/src/RenderShadowTask.cpp index 4d8b949063..b073037e32 100644 --- a/libraries/render-utils/src/RenderShadowTask.cpp +++ b/libraries/render-utils/src/RenderShadowTask.cpp @@ -99,12 +99,14 @@ void RenderShadowTask::build(JobModel& task, const render::Varying& input, rende // CPU jobs: finer grained culling const auto cullInputs = CullShadowBounds::Inputs(sortedShapes, shadowFilter, antiFrustum).asVarying(); - const auto culledShadowItemsAndBounds = task.addJob("CullShadowCascade", cullInputs, shadowCullFunctor); + sprintf(jobName, "CullShadowCascade%d", i); + const auto culledShadowItemsAndBounds = task.addJob(jobName, cullInputs, shadowCullFunctor); // GPU jobs: Render to shadow map sprintf(jobName, "RenderShadowMap%d", i); task.addJob(jobName, culledShadowItemsAndBounds, shapePlumber, i); - task.addJob("ShadowCascadeTeardown", shadowFilter); + sprintf(jobName, "ShadowCascadeTeardown%d", i); + task.addJob(jobName, shadowFilter); cascadeSceneBBoxes[i] = culledShadowItemsAndBounds.getN(1); } @@ -181,6 +183,9 @@ static void adjustNearFar(const AABox& inShapeBounds, ViewFrustum& shadowFrustum computeNearFar(sceneBoundVertices, shadowClipPlanes, near, far); // Limit the far range to the one used originally. far = glm::min(far, shadowFrustum.getFarClip()); + if (near > far) { + near = far; + } const auto depthEpsilon = 0.1f; auto projMatrix = glm::ortho(-1.0f, 1.0f, -1.0f, 1.0f, near - depthEpsilon, far + depthEpsilon); From c4e8205a797a05b563de9b5a4cf6452e78d7bfde Mon Sep 17 00:00:00 2001 From: Robin Wilson Date: Sat, 4 Aug 2018 14:02:05 -0700 Subject: [PATCH 157/332] reordered build.md instructions --- BUILD.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/BUILD.md b/BUILD.md index ba38f4b51d..4a0274cea6 100644 --- a/BUILD.md +++ b/BUILD.md @@ -1,3 +1,10 @@ +### OS Specific Build Guides + +* [BUILD_WIN.md](BUILD_WIN.md) - complete instructions for Windows. +* [BUILD_OSX.md](BUILD_OSX.md) - additional instructions for OS X. +* [BUILD_LINUX.md](BUILD_LINUX.md) - additional instructions for Linux. +* [BUILD_ANDROID.md](BUILD_ANDROID.md) - additional instructions for Android + ### Dependencies - [cmake](https://cmake.org/download/): 3.9 @@ -27,14 +34,7 @@ These are not placed in your normal build tree when doing an out of source build If you would like to use a specific install of a dependency instead of the version that would be grabbed as a CMake ExternalProject, you can pass -DUSE\_LOCAL\_$NAME=0 (where $NAME is the name of the subfolder in [cmake/externals](cmake/externals)) when you run CMake to tell it not to get that dependency as an external project. -### OS Specific Build Guides - -* [BUILD_OSX.md](BUILD_OSX.md) - additional instructions for OS X. -* [BUILD_LINUX.md](BUILD_LINUX.md) - additional instructions for Linux. -* [BUILD_WIN.md](BUILD_WIN.md) - additional instructions for Windows. -* [BUILD_ANDROID.md](BUILD_ANDROID.md) - additional instructions for Android - -### CMake +#### CMake Hifi uses CMake to generate build files and project files for your platform. @@ -80,6 +80,7 @@ In the examples below the variable $NAME would be replaced by the name of the de * $NAME_ROOT_DIR - set this variable in your ENV * HIFI_LIB_DIR - set this variable in your ENV to your High Fidelity lib folder, should contain a folder '$name' + ### Optional Components #### Devices From 2121e201d56a31183e42ca679b1ff61c613f7f0c Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Sat, 4 Aug 2018 20:09:27 -0700 Subject: [PATCH 158/332] fix assert when azimuth is negative subnormal --- libraries/audio/src/AudioHRTF.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/audio/src/AudioHRTF.cpp b/libraries/audio/src/AudioHRTF.cpp index c0751c6a20..7349a8ac41 100644 --- a/libraries/audio/src/AudioHRTF.cpp +++ b/libraries/audio/src/AudioHRTF.cpp @@ -919,6 +919,9 @@ static void azimuthToIndex(float azimuth, int& index0, int& index1, float& frac) index1 = index0 + 1; frac = azimuth - (float)index0; + if (index0 >= HRTF_AZIMUTHS) { + index0 -= HRTF_AZIMUTHS; + } if (index1 >= HRTF_AZIMUTHS) { index1 -= HRTF_AZIMUTHS; } From 496724f0db5a5c668afc7f924cbfe430a50de631 Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Sat, 4 Aug 2018 20:15:04 -0700 Subject: [PATCH 159/332] formatting cleanup --- libraries/audio/src/AudioHRTF.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/audio/src/AudioHRTF.cpp b/libraries/audio/src/AudioHRTF.cpp index 7349a8ac41..23adcde0c5 100644 --- a/libraries/audio/src/AudioHRTF.cpp +++ b/libraries/audio/src/AudioHRTF.cpp @@ -840,7 +840,7 @@ static void nearFieldGainCorrection(float azimuth, float distance, float& gainL, // normalized distance factor = [0,1] as distance = [HRTF_NEARFIELD_MAX,HRTF_HEAD_RADIUS] assert(distance < HRTF_NEARFIELD_MAX); assert(distance > HRTF_HEAD_RADIUS); - float d = (HRTF_NEARFIELD_MAX - distance) * ( 1.0f / (HRTF_NEARFIELD_MAX - HRTF_HEAD_RADIUS)); + float d = (HRTF_NEARFIELD_MAX - distance) * (1.0f / (HRTF_NEARFIELD_MAX - HRTF_HEAD_RADIUS)); // angle of incidence at each ear float angleL = azimuth + HALFPI; From 8eb7ceb66afddd191c588c638ab804c6cdf34292 Mon Sep 17 00:00:00 2001 From: Olivier Prat Date: Sun, 5 Aug 2018 12:06:36 +0200 Subject: [PATCH 160/332] Fixed the bug with the thin dark lines at cascade shadow switches (hopefully) --- libraries/render-utils/src/Shadow.slh | 68 ++++++++++++++++++----- libraries/render-utils/src/ShadowCore.slh | 6 +- 2 files changed, 60 insertions(+), 14 deletions(-) diff --git a/libraries/render-utils/src/Shadow.slh b/libraries/render-utils/src/Shadow.slh index 235ea519ab..d92d79717c 100644 --- a/libraries/render-utils/src/Shadow.slh +++ b/libraries/render-utils/src/Shadow.slh @@ -13,6 +13,7 @@ <@include ShadowCore.slh@> +#define SHADOW_DITHER 1 #define SHADOW_NOISE_ENABLED 0 #define SHADOW_SCREEN_SPACE_DITHER 1 @@ -31,10 +32,12 @@ vec2 PCFkernel[4] = vec2[4]( vec2(0.5, -1.5) ); +#if SHADOW_NOISE_ENABLED float evalShadowNoise(vec4 seed) { float dot_product = dot(seed, vec4(12.9898,78.233,45.164,94.673)); return fract(sin(dot_product) * 43758.5453); } +#endif struct ShadowSampleOffsets { vec3 points[4]; @@ -73,12 +76,16 @@ ShadowSampleOffsets evalShadowFilterOffsets(vec4 position) { float evalShadowAttenuationPCF(int cascadeIndex, ShadowSampleOffsets offsets, vec4 shadowTexcoord, float bias) { shadowTexcoord.z -= bias; +#if SHADOW_DITHER float shadowAttenuation = 0.25 * ( fetchShadow(cascadeIndex, shadowTexcoord.xyz + offsets.points[0]) + fetchShadow(cascadeIndex, shadowTexcoord.xyz + offsets.points[1]) + fetchShadow(cascadeIndex, shadowTexcoord.xyz + offsets.points[2]) + fetchShadow(cascadeIndex, shadowTexcoord.xyz + offsets.points[3]) ); +#else + float shadowAttenuation = fetchShadow(cascadeIndex, shadowTexcoord.xyz); +#endif return shadowAttenuation; } @@ -89,20 +96,55 @@ float evalShadowCascadeAttenuation(int cascadeIndex, ShadowSampleOffsets offsets float evalShadowAttenuation(vec3 worldLightDir, vec4 worldPosition, float viewDepth, vec3 worldNormal) { ShadowSampleOffsets offsets = evalShadowFilterOffsets(worldPosition); - vec4 cascadeShadowCoords[2]; - cascadeShadowCoords[0] = vec4(0); - cascadeShadowCoords[1] = vec4(0); - ivec2 cascadeIndices; - float cascadeMix = determineShadowCascadesOnPixel(worldPosition, viewDepth, cascadeShadowCoords, cascadeIndices); - - // Adjust bias if we are at a grazing angle with light - float oneMinusNdotL = 1.0 - clamp(dot(worldLightDir, worldNormal), 0, 1); - vec2 cascadeAttenuations = vec2(1.0, 1.0); - cascadeAttenuations.x = evalShadowCascadeAttenuation(cascadeIndices.x, offsets, cascadeShadowCoords[0], oneMinusNdotL); - if (cascadeMix > 0.0 && cascadeIndices.y < getShadowCascadeCount()) { - cascadeAttenuations.y = evalShadowCascadeAttenuation(cascadeIndices.y, offsets, cascadeShadowCoords[1], oneMinusNdotL); + + vec4 cascadeShadowCoords[4]; + vec4 cascadeWeights; + vec4 cascadeAttenuations = vec4(1.0); + vec3 cascadeMix; + bvec4 isPixelOnCascade; + int cascadeIndex; + const float oneMinusNdotL = 1.0 - clamp(dot(worldLightDir, worldNormal), 0, 1); + + for (cascadeIndex=0 ; cascadeIndex Date: Mon, 6 Aug 2018 08:20:21 +0200 Subject: [PATCH 161/332] Small optimization by using squared distance and not distance in depth sort --- libraries/render/src/render/SortTask.cpp | 4 ++-- libraries/shared/src/ViewFrustum.cpp | 6 +++--- libraries/shared/src/ViewFrustum.h | 3 ++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/libraries/render/src/render/SortTask.cpp b/libraries/render/src/render/SortTask.cpp index 5b53b5d403..5b4061a10f 100644 --- a/libraries/render/src/render/SortTask.cpp +++ b/libraries/render/src/render/SortTask.cpp @@ -61,9 +61,9 @@ void render::depthSortItems(const RenderContextPointer& renderContext, bool fron for (auto itemDetails : inItems) { auto item = scene->getItem(itemDetails.id); auto bound = itemDetails.bound; // item.getBound(); - float distance = args->getViewFrustum().distanceToCamera(bound.calcCenter()); + float distanceSquared = args->getViewFrustum().distanceToCameraSquared(bound.calcCenter()); - itemBoundSorts.emplace_back(ItemBoundSort(distance, distance, distance, itemDetails.id, bound)); + itemBoundSorts.emplace_back(ItemBoundSort(distanceSquared, distanceSquared, distanceSquared, itemDetails.id, bound)); } // sort against Z diff --git a/libraries/shared/src/ViewFrustum.cpp b/libraries/shared/src/ViewFrustum.cpp index 3e03c13fa4..e925ef960d 100644 --- a/libraries/shared/src/ViewFrustum.cpp +++ b/libraries/shared/src/ViewFrustum.cpp @@ -654,10 +654,10 @@ const ViewFrustum::Corners ViewFrustum::getCorners(const float depth) const { }; } -float ViewFrustum::distanceToCamera(const glm::vec3& point) const { +float ViewFrustum::distanceToCameraSquared(const glm::vec3& point) const { glm::vec3 temp = getPosition() - point; - float distanceToPoint = sqrtf(glm::dot(temp, temp)); - return distanceToPoint; + float distanceToPointSquared = glm::dot(temp, temp); + return distanceToPointSquared; } void ViewFrustum::evalProjectionMatrix(glm::mat4& proj) const { diff --git a/libraries/shared/src/ViewFrustum.h b/libraries/shared/src/ViewFrustum.h index eada65468d..9c80538e60 100644 --- a/libraries/shared/src/ViewFrustum.h +++ b/libraries/shared/src/ViewFrustum.h @@ -127,7 +127,8 @@ public: bool getProjectedRect(const AABox& box, glm::vec2& bottomLeft, glm::vec2& topRight) const; void getFurthestPointFromCamera(const AACube& box, glm::vec3& furthestPoint) const; - float distanceToCamera(const glm::vec3& point) const; + float distanceToCameraSquared(const glm::vec3& point) const; + float distanceToCamera(const glm::vec3& point) const { return sqrtf(distanceToCameraSquared(point)); } void evalProjectionMatrix(glm::mat4& proj) const; From a63b213d65307692563b00fd47b49680ed79eca7 Mon Sep 17 00:00:00 2001 From: Angus Antley Date: Mon, 6 Aug 2018 15:18:17 +0100 Subject: [PATCH 162/332] fixed the weight calculation for the hand overlays. to do: check the blends in hmd mode --- libraries/animation/src/AnimBlendLinear.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/animation/src/AnimBlendLinear.cpp b/libraries/animation/src/AnimBlendLinear.cpp index e49c3e0060..2dd4338a5e 100644 --- a/libraries/animation/src/AnimBlendLinear.cpp +++ b/libraries/animation/src/AnimBlendLinear.cpp @@ -46,17 +46,17 @@ const AnimPoseVec& AnimBlendLinear::evaluate(const AnimVariantMap& animVars, con if (prevPoseIndex == nextPoseIndex) { if (nextPoseIndex == 0) { nextPoseIndex = 1; - } else if (prevPoseIndex == (_children.size() - 1)) { - prevPoseIndex = (_children.size() - 2); + } else { + prevPoseIndex = (nextPoseIndex - 1); } } evaluateAndBlendChildren(animVars, context, triggersOut, alpha, prevPoseIndex, nextPoseIndex, dt); - qCDebug(animation) << "linear blend alpha " << alpha << " next pose " << _children[nextPoseIndex]->getID() << " previous pose " << _children[prevPoseIndex]->getID(); - float weight2 = alpha; + qCDebug(animation) << "linear blend alpha " << alpha << " and _alpha " << _alpha <<" next pose " << _children[nextPoseIndex]->getID() << " previous pose " << _children[prevPoseIndex]->getID(); + float weight2 = _alpha - (float)prevPoseIndex; float weight1 = 1.0f - weight2; _animStack[_children[prevPoseIndex]->getID()] = weight1 * parentAlpha; - if ((int)nextPoseIndex < _children.size()) { + if (nextPoseIndex < _children.size()) { _animStack[_children[nextPoseIndex]->getID()] = weight2 * parentAlpha; } From e5c0fa0af9cf81e70b63ddf3ea62b58e639f2c97 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Mon, 6 Aug 2018 08:25:05 -0700 Subject: [PATCH 163/332] Working on updating test results. --- tools/auto-tester/src/TestRailInterface.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 9bc51e9498..8fad7b4525 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -548,6 +548,10 @@ void TestRailInterface::updateRunWithResults() { stream << "\tfailed_tests.add(failed_test)\n\n"; + // Initialize the array of results that will be eventually used to update TestRail + stream << "status_ids = []\n"; + stream << "case_ids = []\n"; + int runID = _runIDs[_testRailResultsSelectorWindow.getRunID()]; stream << "tests = client.send_get('get_tests/" + QString::number(runID) + "')\n\n"; stream << "for test in tests:\n"; @@ -560,6 +564,10 @@ void TestRailInterface::updateRunWithResults() { stream << "\tstatus_id = 1\n"; stream << "\tif test['title'] in failed_tests:\n"; stream << "\t\tstatus_id = 5\n"; + stream << "\tcase_id.append(test['case_id'])\n"; + stream << "\tstatus_ids.append(status_id)\n"; + + // We can now update the test (note that all tests need to be updated file.close(); } @@ -1125,12 +1133,15 @@ void TestRailInterface::updateTestRailRunResults(const QString& testResults, con return; } - // TestRail will be updated after the process initiated by getTestRunFromTestRail has completed - getRunsFromTestRail(); - + // This is needed to access TestRail + createTestRailDotPyScript(); + // Extract test failures from zipped folder QString tempSubDirectory = tempDirectory + "/" + tempName; QDir dir = tempSubDirectory; dir.mkdir(tempSubDirectory); JlCompress::extractDir(testResults, tempSubDirectory); + + // TestRail will be updated after the process initiated by getTestRunFromTestRail has completed + getRunsFromTestRail(); } \ No newline at end of file From 658ef4e9e69b87e57fb7286b5569bf914d0af12a Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 6 Aug 2018 08:54:55 -0700 Subject: [PATCH 164/332] Remove redundant namespace qualifier on CollisionPickResult::toVariantMap() in header file --- interface/src/raypick/CollisionPick.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index 5a3260b981..45e0617343 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -44,7 +44,7 @@ public: std::vector entityIntersections; std::vector avatarIntersections; - QVariantMap CollisionPickResult::toVariantMap() const override; + QVariantMap toVariantMap() const override; bool doesIntersect() const override { return intersects; } bool checkOrFilterAgainstMaxDistance(float maxDistance) override { return true; } From 188d82b3840621d05ced9c41b88289a5837dc6c9 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Mon, 6 Aug 2018 09:29:41 -0700 Subject: [PATCH 165/332] Python script seems complete. --- tools/auto-tester/src/TestRailInterface.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 8fad7b4525..53688187ac 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -564,10 +564,23 @@ void TestRailInterface::updateRunWithResults() { stream << "\tstatus_id = 1\n"; stream << "\tif test['title'] in failed_tests:\n"; stream << "\t\tstatus_id = 5\n"; - stream << "\tcase_id.append(test['case_id'])\n"; - stream << "\tstatus_ids.append(status_id)\n"; + stream << "\tcase_ids.append(test['case_id'])\n"; + stream << "\tstatus_ids.append(status_id)\n\n"; - // We can now update the test (note that all tests need to be updated + // We can now update the test (note that all tests need to be updated) + // An example request is as follows: + // + // "results" : [ + // { 'case_id': 1, 'status_id': 5 }, + // { 'case_id': 2, 'status_id': 1 } + // ] + // + stream << "results = []\n"; + stream << "for i in range(len(case_ids)):\n"; + stream << "\tresults.append({'case_id': case_ids[i], 'status_id': status_ids[i] })\n\n"; + + stream << "data = { 'results': results }\n"; + stream << "section = client.send_post('add_results_for_cases/' + str(" << runID << "), data)\n"; file.close(); } From 6b7f5b662e719b37142d7b7c5d6daf0275e2367e Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Thu, 2 Aug 2018 09:58:29 -0700 Subject: [PATCH 166/332] jsdoc fixes --- interface/src/raypick/PickScriptingInterface.h | 2 +- interface/src/raypick/PointerScriptingInterface.cpp | 13 +++++++------ libraries/pointers/src/Pick.h | 2 ++ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 131f14d168..9b6290b764 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -138,7 +138,7 @@ public: * @property {Vec3} intersection The intersection point in world-space. * @property {Vec3} surfaceNormal The surface normal at the intersected point. All NANs if type == INTERSECTED_HUD. * @property {Variant} extraInfo Additional intersection details when available for Model objects. - * @property {StylusTip} parabola The PickParabola that was used. Valid even if there was no intersection. + * @property {PickParabola} parabola The PickParabola that was used. Valid even if there was no intersection. */ /**jsdoc diff --git a/interface/src/raypick/PointerScriptingInterface.cpp b/interface/src/raypick/PointerScriptingInterface.cpp index 5bb4293ef3..a9b9b6e9ea 100644 --- a/interface/src/raypick/PointerScriptingInterface.cpp +++ b/interface/src/raypick/PointerScriptingInterface.cpp @@ -92,7 +92,7 @@ unsigned int PointerScriptingInterface::createStylus(const QVariant& properties) * @typedef {object} Pointers.LaserPointerProperties * @property {boolean} [faceAvatar=false] If true, the end of the Pointer will always rotate to face the avatar. * @property {boolean} [centerEndY=true] If false, the end of the Pointer will be moved up by half of its height. - * @property {boolean} [lockEnd=false] If true, the end of the Pointer will lock on to the center of the object at which the laser is pointing. + * @property {boolean} [lockEnd=false] If true, the end of the Pointer will lock on to the center of the object at which the pointer is pointing. * @property {boolean} [distanceScaleEnd=false] If true, the dimensions of the end of the Pointer will scale linearly with distance. * @property {boolean} [scaleWithAvatar=false] If true, the width of the Pointer's path will scale linearly with your avatar's scale. * @property {boolean} [followNormal=false] If true, the end of the Pointer will rotate to follow the normal of the intersected surface. @@ -207,9 +207,10 @@ unsigned int PointerScriptingInterface::createLaserPointer(const QVariant& prope * The rendering properties of the parabolic path * * @typedef {object} Pointers.ParabolaProperties -* @property {Color} color The color of the parabola. -* @property {number} alpha The alpha of the parabola. -* @property {number} width The width of the parabola, in meters. +* @property {Color} color=255,255,255 The color of the parabola. +* @property {number} alpha=1.0 The alpha of the parabola. +* @property {number} width=0.01 The width of the parabola, in meters. +* @property {boolean} isVisibleInSecondaryCamera=false The width of the parabola, in meters. */ /**jsdoc * A set of properties used to define the visual aspect of a Parabola Pointer in the case that the Pointer is not intersecting something. Same as a {@link Pointers.ParabolaPointerRenderState}, @@ -232,10 +233,10 @@ unsigned int PointerScriptingInterface::createLaserPointer(const QVariant& prope */ /**jsdoc * A set of properties that can be passed to {@link Pointers.createPointer} to create a new Pointer. Contains the relevant {@link Picks.PickProperties} to define the underlying Pick. -* @typedef {object} Pointers.LaserPointerProperties +* @typedef {object} Pointers.ParabolaPointerProperties * @property {boolean} [faceAvatar=false] If true, the end of the Pointer will always rotate to face the avatar. * @property {boolean} [centerEndY=true] If false, the end of the Pointer will be moved up by half of its height. -* @property {boolean} [lockEnd=false] If true, the end of the Pointer will lock on to the center of the object at which the laser is pointing. +* @property {boolean} [lockEnd=false] If true, the end of the Pointer will lock on to the center of the object at which the pointer is pointing. * @property {boolean} [distanceScaleEnd=false] If true, the dimensions of the end of the Pointer will scale linearly with distance. * @property {boolean} [scaleWithAvatar=false] If true, the width of the Pointer's path will scale linearly with your avatar's scale. * @property {boolean} [followNormal=false] If true, the end of the Pointer will rotate to follow the normal of the intersected surface. diff --git a/libraries/pointers/src/Pick.h b/libraries/pointers/src/Pick.h index dd59b50cc4..790c5dfd27 100644 --- a/libraries/pointers/src/Pick.h +++ b/libraries/pointers/src/Pick.h @@ -145,6 +145,7 @@ public: * * @property {number} Ray Ray Picks intersect a ray with the nearest object in front of them, along a given direction. * @property {number} Stylus Stylus Picks provide "tapping" functionality on/into flat surfaces. + * @property {number} Parabola Parabola Picks intersect a parabola with the nearest object in front of them, with a given initial velocity and acceleration. */ /**jsdoc * @@ -154,6 +155,7 @@ public: * * * + * * *
      {@link PickType(0)|PickType.Ray}
      {@link PickType(0)|PickType.Stylus}
      {@link PickType(0)|PickType.Parabola}
      * @typedef {number} PickType From 0377be2d0de7c75c423ca17f2a13d5050a40849e Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Mon, 6 Aug 2018 10:21:33 -0700 Subject: [PATCH 167/332] Can update test results in TestRail. --- tools/auto-tester/src/TestRailInterface.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/auto-tester/src/TestRailInterface.cpp b/tools/auto-tester/src/TestRailInterface.cpp index 53688187ac..93559490e5 100644 --- a/tools/auto-tester/src/TestRailInterface.cpp +++ b/tools/auto-tester/src/TestRailInterface.cpp @@ -583,6 +583,20 @@ void TestRailInterface::updateRunWithResults() { stream << "section = client.send_post('add_results_for_cases/' + str(" << runID << "), data)\n"; file.close(); + + if (QMessageBox::Yes == QMessageBox(QMessageBox::Information, "Python script has been created", + "Do you want to run the script and update TestRail?", + QMessageBox::Yes | QMessageBox::No).exec() + ) { + QProcess* process = new QProcess(); + connect(process, &QProcess::started, this, [=]() { _busyWindow.exec(); }); + + connect(process, static_cast(&QProcess::finished), this, + [=](int exitCode, QProcess::ExitStatus exitStatus) { _busyWindow.hide(); }); + + QStringList parameters = QStringList() << _outputDirectory + "/updateRunWithResults.py"; + process->start(_pythonCommand, parameters); + } } void TestRailInterface::updateSectionsComboData(int exitCode, QProcess::ExitStatus exitStatus) { From a0ef0c0b137ed94e516d9469e73b5a044ab70026 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 6 Aug 2018 10:31:14 -0700 Subject: [PATCH 168/332] Fix procedurals --- libraries/procedural/src/procedural/Procedural.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libraries/procedural/src/procedural/Procedural.cpp b/libraries/procedural/src/procedural/Procedural.cpp index 09e30eab2e..79c0b31dff 100644 --- a/libraries/procedural/src/procedural/Procedural.cpp +++ b/libraries/procedural/src/procedural/Procedural.cpp @@ -119,6 +119,11 @@ void Procedural::setProceduralData(const ProceduralData& proceduralData) { _dirty = true; _enabled = false; + if (proceduralData.version != _data.version ) { + _data.version = proceduralData.version; + _shaderDirty = true; + } + if (proceduralData.uniforms != _data.uniforms) { _data.uniforms = proceduralData.uniforms; _uniformsDirty = true; From c40db2e8f0c71dc90ba02285c620f180e50a2529 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 6 Aug 2018 10:50:23 -0700 Subject: [PATCH 169/332] Add pick filtering to CollisionPick --- interface/src/raypick/CollisionPick.cpp | 20 ++++++++++++++++++-- interface/src/raypick/CollisionPick.h | 1 + 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index e96ccb1580..d5b1949f31 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -316,13 +316,29 @@ CollisionRegion CollisionPick::getMathematicalPick() const { return _mathPick; } +const std::vector CollisionPick::filterIntersections(const std::vector& intersections) const { + std::vector filteredIntersections; + + const QVector& ignoreItems = getIgnoreItems(); + const QVector& includeItems = getIncludeItems(); + bool isWhitelist = includeItems.size(); + for (const auto& intersection : intersections) { + const QUuid& id = intersection.foundID; + if (!ignoreItems.contains(id) && (!isWhitelist || includeItems.contains(id))) { + filteredIntersections.push_back(intersection); + } + } + + return filteredIntersections; +} + PickResultPointer CollisionPick::getEntityIntersection(const CollisionRegion& pick) { if (!isShapeInfoReady()) { // Cannot compute result return std::make_shared(pick.toVariantMap(), CollisionPickResult::LOAD_STATE_NOT_LOADED, std::vector(), std::vector()); } - const auto& entityIntersections = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_ENTITY, *pick.shapeInfo, pick.transform); + const auto& entityIntersections = filterIntersections(_physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_ENTITY, *pick.shapeInfo, pick.transform)); return std::make_shared(pick, CollisionPickResult::LOAD_STATE_LOADED, entityIntersections, std::vector()); } @@ -336,7 +352,7 @@ PickResultPointer CollisionPick::getAvatarIntersection(const CollisionRegion& pi return std::make_shared(pick.toVariantMap(), CollisionPickResult::LOAD_STATE_NOT_LOADED, std::vector(), std::vector()); } - const auto& avatarIntersections = _physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_AVATAR, *pick.shapeInfo, pick.transform); + const auto& avatarIntersections = filterIntersections(_physicsEngine->getCollidingInRegion(MOTIONSTATE_TYPE_AVATAR, *pick.shapeInfo, pick.transform)); return std::make_shared(pick, CollisionPickResult::LOAD_STATE_LOADED, std::vector(), avatarIntersections); } diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index 45e0617343..c6f5b8755f 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -92,6 +92,7 @@ protected: // Returns true if pick.shapeInfo is valid. Otherwise, attempts to get the shapeInfo ready for use. bool isShapeInfoReady(); void computeShapeInfo(CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource); + const std::vector filterIntersections(const std::vector& intersections) const; CollisionRegion _mathPick; PhysicsEnginePointer _physicsEngine; From 577379dcb4651c02413b95604db2b6cde95d2544 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 6 Aug 2018 10:53:03 -0700 Subject: [PATCH 170/332] Do not re-calculate intersects flag in CollisionPickResult copy constructor --- interface/src/raypick/CollisionPick.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index c6f5b8755f..b3a7186893 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -35,7 +35,7 @@ public: CollisionPickResult(const CollisionPickResult& collisionPickResult) : PickResult(collisionPickResult.pickVariant) { avatarIntersections = collisionPickResult.avatarIntersections; entityIntersections = collisionPickResult.entityIntersections; - intersects = avatarIntersections.size() || entityIntersections.size(); + intersects = collisionPickResult.intersects; loadState = collisionPickResult.loadState; } From 2cd01ad1899c5f483fe391331e0d2fbebb92a719 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Mon, 6 Aug 2018 11:15:43 -0700 Subject: [PATCH 171/332] Added readme and size field to avatar data packet dissector --- tools/dissectors/3-hf-avatar.lua | 13 +++++++++++++ tools/dissectors/README.md | 14 ++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 tools/dissectors/README.md diff --git a/tools/dissectors/3-hf-avatar.lua b/tools/dissectors/3-hf-avatar.lua index af648ed5b9..0fa551c6f8 100644 --- a/tools/dissectors/3-hf-avatar.lua +++ b/tools/dissectors/3-hf-avatar.lua @@ -19,6 +19,8 @@ local f_avatar_data_valid_rotations = ProtoField.string("hf_avatar.avatar_data_v local f_avatar_data_valid_translations = ProtoField.string("hf_avatar.avatar_data_valid_translations", "Valid Translations") local f_avatar_data_default_rotations = ProtoField.string("hf_avatar.avatar_data_default_rotations", "Valid Default") local f_avatar_data_default_translations = ProtoField.string("hf_avatar.avatar_data_default_translations", "Valid Default") +local f_avatar_data_sizes = ProtoField.string("hf_avatar.avatar_sizes", "Sizes") + p_hf_avatar.fields = { f_avatar_id, f_avatar_data_parent_id @@ -110,6 +112,9 @@ function add_avatar_data_subtrees(avatar_data) if avatar_data["default_translations"] then avatar_subtree:add(f_avatar_data_default_translations, avatar_data["default_translations"]) end + if avatar_data["sizes"] then + avatar_subtree:add(f_avatar_data_sizes, avatar_data["sizes"]) + end end function decode_vec3(buf) @@ -154,6 +159,8 @@ function decode_avatar_data_packet(buf) local i = 0 local result = {} + result["sizes"] = "" + -- uint16 has_flags local has_flags = buf(i, 2):le_uint() i = i + 2 @@ -258,6 +265,8 @@ function decode_avatar_data_packet(buf) if has_joint_data then + local joint_poses_start = i + local num_joints = buf(i, 1):uint() i = i + 1 local num_validity_bytes = math.ceil(num_joints / 8) @@ -279,6 +288,8 @@ function decode_avatar_data_packet(buf) -- TODO: skip hand controller data i = i + 24 + result["sizes"] = result["sizes"] .. " Poses: " .. (i - joint_poses_start) + end if has_joint_default_pose_flags then @@ -295,5 +306,7 @@ function decode_avatar_data_packet(buf) result["default_translations"] = "Default Translations: " .. string.format("(%d/%d) {", #indices, num_joints) .. table.concat(indices, ", ") .. "}" end + result["sizes"] = result["sizes"] .. " Total: " .. i + return result end diff --git a/tools/dissectors/README.md b/tools/dissectors/README.md new file mode 100644 index 0000000000..1e618a7b4c --- /dev/null +++ b/tools/dissectors/README.md @@ -0,0 +1,14 @@ +High Fidelity Wireshark Plugins +--------------------------------- + +Install wireshark 2.4.6 or higher. + +Copy these lua files into c:\Users\username\AppData\Roaming\Wireshark\Plugins + +After a capture any detected High Fidelity Packets should be easily identifiable by one of the following protocols + +* HF-AUDIO - Streaming audio packets +* HF-AVATAR - Streaming avatar mixer packets +* HF-ENTITY - Entity server traffic +* HF-DOMAIN - Domain server traffic +* HFUDT - All other UDP traffic From 9806bce403a57fa1f75b7646c7e8160338a2675a Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 6 Aug 2018 11:21:32 -0700 Subject: [PATCH 172/332] weak pointers to nodeList --- domain-server/src/DomainGatekeeper.cpp | 6 ++++-- domain-server/src/DomainServer.cpp | 22 ++++++++++++--------- interface/src/Application.cpp | 6 ++++-- interface/src/avatar/AvatarManager.cpp | 21 ++++++++++++-------- interface/src/ui/PreferencesDialog.cpp | 18 ++++++++++++++--- libraries/ui/src/ui/OffscreenQmlSurface.cpp | 2 +- 6 files changed, 50 insertions(+), 25 deletions(-) diff --git a/domain-server/src/DomainGatekeeper.cpp b/domain-server/src/DomainGatekeeper.cpp index 39ec5463dc..2307b1be3b 100644 --- a/domain-server/src/DomainGatekeeper.cpp +++ b/domain-server/src/DomainGatekeeper.cpp @@ -264,7 +264,8 @@ void DomainGatekeeper::updateNodePermissions() { QList nodesToKill; auto limitedNodeList = DependencyManager::get(); - limitedNodeList->eachNode([this, &limitedNodeList, &nodesToKill](const SharedNodePointer& node){ + QWeakPointer limitedNodeListWeak = limitedNodeList; + limitedNodeList->eachNode([this, limitedNodeListWeak, &nodesToKill](const SharedNodePointer& node){ // the id and the username in NodePermissions will often be the same, but id is set before // authentication and verifiedUsername is only set once they user's key has been confirmed. QString verifiedUsername = node->getPermissions().getVerifiedUserName(); @@ -296,7 +297,8 @@ void DomainGatekeeper::updateNodePermissions() { machineFingerprint = nodeData->getMachineFingerprint(); auto sendingAddress = nodeData->getSendingSockAddr().getAddress(); - isLocalUser = (sendingAddress == limitedNodeList->getLocalSockAddr().getAddress() || + auto nodeList = limitedNodeListWeak.lock(); + isLocalUser = ((nodeList && sendingAddress == nodeList->getLocalSockAddr().getAddress()) || sendingAddress == QHostAddress::LocalHost); } diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 05555314f3..7bf8720c86 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -1198,6 +1198,7 @@ QUuid DomainServer::connectionSecretForNodes(const SharedNodePointer& nodeA, con void DomainServer::broadcastNewNode(const SharedNodePointer& addedNode) { auto limitedNodeList = DependencyManager::get(); + QWeakPointer limitedNodeListWeak = limitedNodeList; auto addNodePacket = NLPacket::create(PacketType::DomainServerAddedNode); @@ -1217,16 +1218,19 @@ void DomainServer::broadcastNewNode(const SharedNodePointer& addedNode) { return false; } }, - [this, &addNodePacket, connectionSecretIndex, addedNode, &limitedNodeList](const SharedNodePointer& node) { - addNodePacket->seek(connectionSecretIndex); - - QByteArray rfcConnectionSecret = connectionSecretForNodes(node, addedNode).toRfc4122(); - - // replace the bytes at the end of the packet for the connection secret between these nodes - addNodePacket->write(rfcConnectionSecret); - + [this, &addNodePacket, connectionSecretIndex, addedNode, limitedNodeListWeak](const SharedNodePointer& node) { // send off this packet to the node - limitedNodeList->sendUnreliablePacket(*addNodePacket, *node); + auto limitedNodeList = limitedNodeListWeak.lock(); + if (limitedNodeList) { + addNodePacket->seek(connectionSecretIndex); + + QByteArray rfcConnectionSecret = connectionSecretForNodes(node, addedNode).toRfc4122(); + + // replace the bytes at the end of the packet for the connection secret between these nodes + addNodePacket->write(rfcConnectionSecret); + + limitedNodeList->sendUnreliablePacket(*addNodePacket, *node); + } } ); } diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ca2d9a919e..ed92a3bd7d 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1138,8 +1138,10 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // setup a timer for domain-server check ins QTimer* domainCheckInTimer = new QTimer(this); - connect(domainCheckInTimer, &QTimer::timeout, [this, &nodeList] { - if (!isServerlessMode()) { + QWeakPointer nodeListWeak = nodeList; + connect(domainCheckInTimer, &QTimer::timeout, [this, nodeListWeak] { + auto nodeList = nodeListWeak.lock(); + if (!isServerlessMode() && nodeList) { nodeList->sendDomainServerCheckIn(); } }); diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index eb96554cb2..01c9872cd7 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -333,16 +333,21 @@ void AvatarManager::postUpdate(float deltaTime, const render::ScenePointer& scen void AvatarManager::sendIdentityRequest(const QUuid& avatarID) const { auto nodeList = DependencyManager::get(); + QWeakPointer nodeListWeak = nodeList; nodeList->eachMatchingNode( [](const SharedNodePointer& node)->bool { - return node->getType() == NodeType::AvatarMixer && node->getActiveSocket(); - }, - [this, avatarID, &nodeList](const SharedNodePointer& node) { - auto packet = NLPacket::create(PacketType::AvatarIdentityRequest, NUM_BYTES_RFC4122_UUID, true); - packet->write(avatarID.toRfc4122()); - nodeList->sendPacket(std::move(packet), *node); - ++_identityRequestsSent; - }); + return node->getType() == NodeType::AvatarMixer && node->getActiveSocket(); + }, + [this, avatarID, nodeListWeak](const SharedNodePointer& node) { + auto nodeList = nodeListWeak.lock(); + if (nodeList) { + auto packet = NLPacket::create(PacketType::AvatarIdentityRequest, NUM_BYTES_RFC4122_UUID, true); + packet->write(avatarID.toRfc4122()); + nodeList->sendPacket(std::move(packet), *node); + ++_identityRequestsSent; + } + } + ); } void AvatarManager::simulateAvatarFades(float deltaTime) { diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index 37f94f5b2a..438ea775af 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -416,12 +416,24 @@ void setupPreferences() { { static const QString NETWORKING("Networking"); - auto nodelist = DependencyManager::get(); + QWeakPointer nodeListWeak = DependencyManager::get(); { static const int MIN_PORT_NUMBER { 0 }; static const int MAX_PORT_NUMBER { 65535 }; - auto getter = [&nodelist] { return static_cast(nodelist->getSocketLocalPort()); }; - auto setter = [&nodelist](int preset) { nodelist->setSocketLocalPort(static_cast(preset)); }; + auto getter = [nodeListWeak] { + auto nodeList = nodeListWeak.lock(); + if (nodeList) { + return static_cast(nodeList->getSocketLocalPort()); + } else { + return -1; + } + }; + auto setter = [nodeListWeak](int preset) { + auto nodeList = nodeListWeak.lock(); + if (nodeList) { + nodeList->setSocketLocalPort(static_cast(preset)); + } + }; auto preference = new IntSpinnerPreference(NETWORKING, "Listening Port", getter, setter); preference->setMin(MIN_PORT_NUMBER); preference->setMax(MAX_PORT_NUMBER); diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index dfb825411d..2d22f90d1a 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -331,7 +331,7 @@ void OffscreenQmlSurface::onRootCreated() { getSurfaceContext()->setContextProperty("offscreenWindow", QVariant::fromValue(getWindow())); // Connect with the audio client and listen for audio device changes - connect(DependencyManager::get().data(), &AudioClient::deviceChanged, this, [&](QAudio::Mode mode, const QAudioDeviceInfo& device) { + connect(DependencyManager::get().data(), &AudioClient::deviceChanged, this, [this](QAudio::Mode mode, const QAudioDeviceInfo& device) { if (mode == QAudio::Mode::AudioOutput) { QMetaObject::invokeMethod(this, "changeAudioOutputDevice", Qt::QueuedConnection, Q_ARG(QString, device.deviceName())); } From f1990378fdc1f0aa641a3f3801dc6ff468b5cf1c Mon Sep 17 00:00:00 2001 From: amantley Date: Mon, 6 Aug 2018 14:27:09 -0700 Subject: [PATCH 173/332] merged the json from the ik 2 bone pr into the new animation json --- .../resources/avatar/avatar-animation.json | 2876 +++++++++-------- libraries/animation/src/AnimBlendLinear.cpp | 4 +- .../animation/src/AnimBlendLinearMove.cpp | 1 - 3 files changed, 1462 insertions(+), 1419 deletions(-) diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index a5f406d2ff..10e841f05d 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -1,5 +1,5 @@ { - "version": "1.0", + "version": "1.1", "root": { "id": "userAnimStateMachine", "type": "stateMachine", @@ -38,1458 +38,1504 @@ "children": [ { "id": "userAnimNone", - "type": "overlay", + "type": "poleVectorConstraint", "data": { - "alpha": 1.0, - "alphaVar": "ikOverlayAlpha", - "boneSet": "fullBody" + "enabled": false, + "referenceVector": [0, 0, 1], + "baseJointName": "RightUpLeg", + "midJointName": "RightLeg", + "tipJointName": "RightFoot", + "enabledVar": "rightFootPoleVectorEnabled", + "poleVectorVar": "rightFootPoleVector" }, "children": [ { - "id": "ik", - "type": "inverseKinematics", + "id": "rightFootIK", + "type": "twoBoneIK", "data": { - "solutionSource": "relaxToUnderPoses", - "solutionSourceVar": "solutionSource", - "targets": [ - { - "jointName": "Hips", - "positionVar": "hipsPosition", - "rotationVar": "hipsRotation", - "typeVar": "hipsType", - "weightVar": "hipsWeight", - "weight": 1.0, - "flexCoefficients": [1] - }, - { - "jointName": "RightHand", - "positionVar": "rightHandPosition", - "rotationVar": "rightHandRotation", - "typeVar": "rightHandType", - "weightVar": "rightHandWeight", - "weight": 1.0, - "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], - "poleVectorEnabledVar": "rightHandPoleVectorEnabled", - "poleReferenceVectorVar": "rightHandPoleReferenceVector", - "poleVectorVar": "rightHandPoleVector" - }, - { - "jointName": "LeftHand", - "positionVar": "leftHandPosition", - "rotationVar": "leftHandRotation", - "typeVar": "leftHandType", - "weightVar": "leftHandWeight", - "weight": 1.0, - "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], - "poleVectorEnabledVar": "leftHandPoleVectorEnabled", - "poleReferenceVectorVar": "leftHandPoleReferenceVector", - "poleVectorVar": "leftHandPoleVector" - }, - { - "jointName": "RightFoot", - "positionVar": "rightFootPosition", - "rotationVar": "rightFootRotation", - "typeVar": "rightFootType", - "weightVar": "rightFootWeight", - "weight": 1.0, - "flexCoefficients": [1, 0.45, 0.45], - "poleVectorEnabledVar": "rightFootPoleVectorEnabled", - "poleReferenceVectorVar": "rightFootPoleReferenceVector", - "poleVectorVar": "rightFootPoleVector" - }, - { - "jointName": "LeftFoot", - "positionVar": "leftFootPosition", - "rotationVar": "leftFootRotation", - "typeVar": "leftFootType", - "weightVar": "leftFootWeight", - "weight": 1.0, - "flexCoefficients": [1, 0.45, 0.45], - "poleVectorEnabledVar": "leftFootPoleVectorEnabled", - "poleReferenceVectorVar": "leftFootPoleReferenceVector", - "poleVectorVar": "leftFootPoleVector" - }, - { - "jointName": "Spine2", - "positionVar": "spine2Position", - "rotationVar": "spine2Rotation", - "typeVar": "spine2Type", - "weightVar": "spine2Weight", - "weight": 2.0, - "flexCoefficients": [1.0, 0.5, 0.25] - }, - { - "jointName": "Head", - "positionVar": "headPosition", - "rotationVar": "headRotation", - "typeVar": "headType", - "weightVar": "headWeight", - "weight": 4.0, - "flexCoefficients": [1, 0.5, 0.25, 0.2, 0.1] - } - ] - }, - "children": [] - }, - { - "id": "defaultPoseOverlay", - "type": "overlay", - "data": { - "alpha": 0.0, - "alphaVar": "defaultPoseOverlayAlpha", - "boneSet": "fullBody", - "boneSetVar": "defaultPoseOverlayBoneSet" + "alpha": 1.0, + "enabled": false, + "interpDuration": 15, + "baseJointName": "RightUpLeg", + "midJointName": "RightLeg", + "tipJointName": "RightFoot", + "midHingeAxis": [-1, 0, 0], + "alphaVar": "rightFootIKAlpha", + "enabledVar": "rightFootIKEnabled", + "endEffectorRotationVarVar": "rightFootIKRotationVar", + "endEffectorPositionVarVar": "rightFootIKPositionVar" }, "children": [ { - "id": "defaultPose", - "type": "defaultPose", + "id": "leftFootPoleVector", + "type": "poleVectorConstraint", "data": { - }, - "children": [] - }, - { - "id": "rightHandOverlay", - "type": "overlay", - "data": { - "alpha": 0.0, - "boneSet": "rightHand", - "alphaVar": "rightHandOverlayAlpha" + "enabled": false, + "referenceVector": [0, 0, 1], + "baseJointName": "LeftUpLeg", + "midJointName": "LeftLeg", + "tipJointName": "LeftFoot", + "enabledVar": "leftFootPoleVectorEnabled", + "poleVectorVar": "leftFootPoleVector" }, "children": [ { - "id": "rightHandStateMachine", - "type": "stateMachine", + "id": "leftFootIK", + "type": "twoBoneIK", "data": { - "currentState": "rightHandGrasp", - "states": [ - { - "id": "rightHandGrasp", - "interpTarget": 3, - "interpDuration": 3, - "transitions": [ - { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, - { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, - { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } - ] - }, - { - "id": "rightIndexPoint", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, - { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, - { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } - ] - }, - { - "id": "rightThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, - { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, - { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } - ] - }, - { - "id": "rightIndexPointAndThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, - { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, - { "var": "isRightThumbRaise", "state": "rightThumbRaise" } - ] - } - ] + "alpha": 1.0, + "enabled": false, + "interpDuration": 15, + "baseJointName": "LeftUpLeg", + "midJointName": "LeftLeg", + "tipJointName": "LeftFoot", + "midHingeAxis": [-1, 0, 0], + "alphaVar": "leftFootIKAlpha", + "enabledVar": "leftFootIKEnabled", + "endEffectorRotationVarVar": "leftFootIKRotationVar", + "endEffectorPositionVarVar": "leftFootIKPositionVar" }, "children": [ { - "id": "rightHandGrasp", - "type": "blendLinear", + "id": "ikOverlay", + "type": "overlay", "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" + "alpha": 1.0, + "alphaVar": "ikOverlayAlpha", + "boneSet": "fullBody" }, "children": [ { - "id": "rightHandGraspOpen", - "type": "clip", + "id": "ik", + "type": "inverseKinematics", "data": { - "url": "qrc:///avatar/animations/hydra_pose_open_right.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightHandGraspClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_closed_right.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightIndexPoint", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightIndexPointOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightIndexPointClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightIndexPointAndThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightIndexPointAndThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightIndexPointAndThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - } - ] - }, - { - "id": "leftHandOverlay", - "type": "overlay", - "data": { - "alpha": 0.0, - "boneSet": "leftHand", - "alphaVar": "leftHandOverlayAlpha" - }, - "children": [ - { - "id": "leftHandStateMachine", - "type": "stateMachine", - "data": { - "currentState": "leftHandGrasp", - "states": [ - { - "id": "leftHandGrasp", - "interpTarget": 3, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, - { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, - { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } - ] - }, - { - "id": "leftIndexPoint", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, - { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, - { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } - ] - }, - { - "id": "leftThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, - { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, - { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } - ] - }, - { - "id": "leftIndexPointAndThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, - { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, - { "var": "isLeftThumbRaise", "state": "leftThumbRaise" } - ] - } - ] - }, - "children": [ - { - "id": "leftHandGrasp", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftHandGraspOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_open_left.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftHandGraspClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_closed_left.fbx", - "startFrame": 10.0, - "endFrame": 10.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftIndexPoint", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftIndexPointOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftIndexPointClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftIndexPointAndThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftIndexPointAndThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftIndexPointAndThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - } - ] - }, - { - "id": "mainStateMachine", - "type": "stateMachine", - "data": { - "currentState": "idle", - "states": [ - { - "id": "idle", - "interpTarget": 0, - "interpDuration": 4, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isMovingForward", "state": "idleToWalkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "idleToWalkFwd", - "interpTarget": 10, - "interpDuration": 4, - "transitions": [ - { "var": "idleToWalkFwdOnDone", "state": "walkFwd" }, - { "var": "isNotMoving", "state": "idleSettle" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "idleSettle", - "interpTarget": 10, - "interpDuration": 10, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "idleSettleOnDone", "state": "idle" }, - { "var": "isMovingForward", "state": "idleToWalkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "walkFwd", - "interpTarget": 16, - "interpDuration": 6, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isNotMoving", "state": "idleSettle" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "walkBwd", - "interpTarget": 8, - "interpDuration": 6, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isNotMoving", "state": "idleSettle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "strafeRight", - "interpTarget": 0, - "interpDuration": 6, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isNotMoving", "state": "idleSettle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "strafeLeft", - "interpTarget": 5, - "interpDuration": 8, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isNotMoving", "state": "idleSettle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "strafeRightHmd", - "interpTarget": 0, - "interpDuration": 6, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isNotMoving", "state": "idleSettle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "strafeLeftHmd", - "interpTarget": 5, - "interpDuration": 8, - - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isNotMoving", "state": "idleSettle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - - { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "turnRight", - "interpTarget": 6, - "interpDuration": 8, - "transitions": [ - { "var": "isNotTurning", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, - - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "turnLeft", - "interpTarget": 6, - "interpDuration": 8, - "transitions": [ - { "var": "isNotTurning", "state": "idle" }, - { "var": "isMovingForward", "state": "walkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" } - ] - }, - { - "id": "fly", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isNotFlying", "state": "idleSettle" } - ] - }, - { - "id": "takeoffStand", - "interpTarget": 0, - "interpDuration": 6, - "transitions": [ - { "var": "isNotTakeoff", "state": "inAirStand" } - ] - }, - { - "id": "takeoffRun", - "interpTarget": 0, - "interpDuration": 6, - "transitions": [ - { "var": "isNotTakeoff", "state": "inAirRun" } - ] - }, - { - "id": "inAirStand", - "interpTarget": 0, - "interpDuration": 6, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isNotInAir", "state": "landStandImpact" } - ] - }, - { - "id": "inAirRun", - "interpTarget": 0, - "interpDuration": 6, - "interpType": "snapshotPrev", - "transitions": [ - { "var": "isNotInAir", "state": "landRun" } - ] - }, - { - "id": "landStandImpact", - "interpTarget": 6, - "interpDuration": 4, - "transitions": [ - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "landStandImpactOnDone", "state": "landStand" } - ] - }, - { - "id": "landStand", - "interpTarget": 0, - "interpDuration": 1, - "transitions": [ - { "var": "isMovingForward", "state": "idleToWalkFwd" }, - { "var": "isMovingBackward", "state": "walkBwd" }, - { "var": "isMovingRight", "state": "strafeRight" }, - { "var": "isMovingLeft", "state": "strafeLeft" }, - { "var": "isTurningRight", "state": "turnRight" }, - { "var": "isTurningLeft", "state": "turnLeft" }, - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "inAirRun" }, - { "var": "landStandOnDone", "state": "idleSettle" } - ] - }, - { - "id": "landRun", - "interpTarget": 1, - "interpDuration": 7, - "transitions": [ - { "var": "isFlying", "state": "fly" }, - { "var": "isTakeoffStand", "state": "takeoffStand" }, - { "var": "isTakeoffRun", "state": "takeoffRun" }, - { "var": "landRunOnDone", "state": "walkFwd" } - ] - } - ] - }, - "children": [ - { - "id": "idle", - "type": "stateMachine", - "data": { - "currentState": "idleStand", - "states": [ + "solutionSource": "relaxToUnderPoses", + "solutionSourceVar": "solutionSource", + "targets": [ { - "id": "idleStand", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "isTalking", "state": "idleTalk" } - ] + "jointName": "Hips", + "positionVar": "hipsPosition", + "rotationVar": "hipsRotation", + "typeVar": "hipsType", + "weightVar": "hipsWeight", + "weight": 1.0, + "flexCoefficients": [1] }, { - "id": "idleTalk", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { "var": "notIsTalking", "state": "idleStand" } - ] + "jointName": "RightHand", + "positionVar": "rightHandPosition", + "rotationVar": "rightHandRotation", + "typeVar": "rightHandType", + "weightVar": "rightHandWeight", + "weight": 1.0, + "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], + "poleVectorEnabledVar": "rightHandPoleVectorEnabled", + "poleReferenceVectorVar": "rightHandPoleReferenceVector", + "poleVectorVar": "rightHandPoleVector" + }, + { + "jointName": "LeftHand", + "positionVar": "leftHandPosition", + "rotationVar": "leftHandRotation", + "typeVar": "leftHandType", + "weightVar": "leftHandWeight", + "weight": 1.0, + "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0], + "poleVectorEnabledVar": "leftHandPoleVectorEnabled", + "poleReferenceVectorVar": "leftHandPoleReferenceVector", + "poleVectorVar": "leftHandPoleVector" + }, + { + "jointName": "Spine2", + "positionVar": "spine2Position", + "rotationVar": "spine2Rotation", + "typeVar": "spine2Type", + "weightVar": "spine2Weight", + "weight": 2.0, + "flexCoefficients": [1.0, 0.5, 0.25] + }, + { + "jointName": "Head", + "positionVar": "headPosition", + "rotationVar": "headRotation", + "typeVar": "headType", + "weightVar": "headWeight", + "weight": 4.0, + "flexCoefficients": [1, 0.5, 0.25, 0.2, 0.1] } ] }, + "children": [] + }, + { + "id": "defaultPoseOverlay", + "type": "overlay", + "data": { + "alpha": 0.0, + "alphaVar": "defaultPoseOverlayAlpha", + "boneSet": "fullBody", + "boneSetVar": "defaultPoseOverlayBoneSet" + }, "children": [ { - "id": "idleStand", - "type": "clip", + "id": "defaultPose", + "type": "defaultPose", "data": { - "url": "qrc:///avatar/animations/idle.fbx", - "startFrame": 0.0, - "endFrame": 300.0, - "timeScale": 1.0, - "loopFlag": true }, "children": [] }, { - "id": "idleTalk", - "type": "clip", + "id": "rightHandOverlay", + "type": "overlay", "data": { - "url": "qrc:///avatar/animations/talk.fbx", - "startFrame": 0.0, - "endFrame": 800.0, - "timeScale": 1.0, - "loopFlag": true + "alpha": 0.0, + "boneSet": "rightHand", + "alphaVar": "rightHandOverlayAlpha" }, - "children": [] + "children": [ + { + "id": "rightHandStateMachine", + "type": "stateMachine", + "data": { + "currentState": "rightHandGrasp", + "states": [ + { + "id": "rightHandGrasp", + "interpTarget": 3, + "interpDuration": 3, + "transitions": [ + { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, + { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, + { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } + ] + }, + { + "id": "rightIndexPoint", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, + { "var": "isRightThumbRaise", "state": "rightThumbRaise" }, + { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } + ] + }, + { + "id": "rightThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, + { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, + { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" } + ] + }, + { + "id": "rightIndexPointAndThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isRightHandGrasp", "state": "rightHandGrasp" }, + { "var": "isRightIndexPoint", "state": "rightIndexPoint" }, + { "var": "isRightThumbRaise", "state": "rightThumbRaise" } + ] + } + ] + }, + "children": [ + { + "id": "rightHandGrasp", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightHandGraspOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/hydra_pose_open_right.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightHandGraspClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/hydra_pose_closed_right.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "rightIndexPoint", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightIndexPointOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_point_open_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightIndexPointClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_point_closed_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "rightThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightThumbRaiseOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_open_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightThumbRaiseClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_closed_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "rightIndexPointAndThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "rightHandGraspAlpha" + }, + "children": [ + { + "id": "rightIndexPointAndThumbRaiseOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_point_open_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "rightIndexPointAndThumbRaiseClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_point_closed_right.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + } + ] + }, + { + "id": "leftHandOverlay", + "type": "overlay", + "data": { + "alpha": 0.0, + "boneSet": "leftHand", + "alphaVar": "leftHandOverlayAlpha" + }, + "children": [ + { + "id": "leftHandStateMachine", + "type": "stateMachine", + "data": { + "currentState": "leftHandGrasp", + "states": [ + { + "id": "leftHandGrasp", + "interpTarget": 3, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, + { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, + { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } + ] + }, + { + "id": "leftIndexPoint", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, + { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }, + { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } + ] + }, + { + "id": "leftThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, + { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, + { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" } + ] + }, + { + "id": "leftIndexPointAndThumbRaise", + "interpTarget": 15, + "interpDuration": 3, + "transitions": [ + { "var": "isLeftHandGrasp", "state": "leftHandGrasp" }, + { "var": "isLeftIndexPoint", "state": "leftIndexPoint" }, + { "var": "isLeftThumbRaise", "state": "leftThumbRaise" } + ] + } + ] + }, + "children": [ + { + "id": "leftHandGrasp", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftHandGraspOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/hydra_pose_open_left.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftHandGraspClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/hydra_pose_closed_left.fbx", + "startFrame": 10.0, + "endFrame": 10.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "leftIndexPoint", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftIndexPointOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_point_open_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftIndexPointClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_point_closed_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "leftThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftThumbRaiseOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_open_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftThumbRaiseClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_closed_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "leftIndexPointAndThumbRaise", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "leftHandGraspAlpha" + }, + "children": [ + { + "id": "leftIndexPointAndThumbRaiseOpen", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_point_open_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "leftIndexPointAndThumbRaiseClosed", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/touch_thumb_point_closed_left.fbx", + "startFrame": 15.0, + "endFrame": 15.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + } + ] + }, + { + "id": "mainStateMachine", + "type": "stateMachine", + "data": { + "outputJoints": ["LeftFoot", "RightFoot"], + "currentState": "idle", + "states": [ + { + "id": "idle", + "interpTarget": 0, + "interpDuration": 4, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isMovingForward", "state": "idleToWalkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + ] + }, + { + "id": "idleToWalkFwd", + "interpTarget": 10, + "interpDuration": 4, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "idleToWalkFwdOnDone", "state": "walkFwd" }, + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + ] + }, + { + "id": "idleSettle", + "interpTarget": 10, + "interpDuration": 10, + "interpType": "snapshotPrev", + "transitions": [ + {"var": "idleSettleOnDone", "state": "idle" }, + {"var": "isMovingForward", "state": "idleToWalkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "walkFwd", + "interpTarget": 16, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + ] + }, + { + "id": "walkBwd", + "interpTarget": 8, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + ] + }, + { + "id": "strafeRight", + "interpTarget": 5, + "interpDuration": 8, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + ] + }, + { + "id": "strafeLeft", + "interpTarget": 0, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + ] + }, + { + "id": "strafeRightHmd", + "interpTarget": 5, + "interpDuration": 8, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotMoving", "state": "idleSettle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "strafeLeftHmd", + "interpTarget": 5, + "interpDuration": 8, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotMoving", "state": "idleSettle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" } + ] + }, + { + "id": "turnRight", + "interpTarget": 6, + "interpDuration": 8, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotTurning", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + ] + }, + { + "id": "turnLeft", + "interpTarget": 6, + "interpDuration": 8, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotTurning", "state": "idle" }, + { "var": "isMovingForward", "state": "walkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + ] + }, + { + "id": "fly", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "isNotFlying", "state": "idle" } + ] + }, + { + "id": "takeoffStand", + "interpTarget": 0, + "interpDuration": 6, + "transitions": [ + { "var": "isNotTakeoff", "state": "inAirStand" } + ] + }, + { + "id": "takeoffRun", + "interpTarget": 0, + "interpDuration": 6, + "transitions": [ + { "var": "isNotTakeoff", "state": "inAirRun" } + ] + }, + { + "id": "inAirStand", + "interpTarget": 0, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotInAir", "state": "landStandImpact" } + ] + }, + { + "id": "inAirRun", + "interpTarget": 0, + "interpDuration": 6, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotInAir", "state": "landRun" } + ] + }, + { + "id": "landStandImpact", + "interpTarget": 6, + "interpDuration": 4, + "transitions": [ + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "landStandImpactOnDone", "state": "landStand" } + ] + }, + { + "id": "landStand", + "interpTarget": 0, + "interpDuration": 1, + "transitions": [ + { "var": "isMovingForward", "state": "idleToWalkFwd" }, + { "var": "isMovingBackward", "state": "walkBwd" }, + { "var": "isMovingRight", "state": "strafeRight" }, + { "var": "isMovingLeft", "state": "strafeLeft" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "inAirRun" }, + { "var": "landStandOnDone", "state": "idle" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + ] + }, + { + "id": "landRun", + "interpTarget": 1, + "interpDuration": 7, + "transitions": [ + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "takeoffRun" }, + { "var": "landRunOnDone", "state": "walkFwd" } + ] + } + ] + }, + "children": [ + { + "id": "idle", + "type": "stateMachine", + "data": { + "currentState": "idleStand", + "states": [ + { + "id": "idleStand", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "isTalking", "state": "idleTalk" } + ] + }, + { + "id": "idleTalk", + "interpTarget": 6, + "interpDuration": 6, + "transitions": [ + { "var": "notIsTalking", "state": "idleStand" } + ] + } + ] + }, + "children": [ + { + "id": "idleStand", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/idle.fbx", + "startFrame": 0.0, + "endFrame": 300.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "idleTalk", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/talk.fbx", + "startFrame": 0.0, + "endFrame": 800.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "walkFwd", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0.5, 1.5, 2.5, 3.2, 4.5], + "alphaVar": "moveForwardAlpha", + "desiredSpeedVar": "moveForwardSpeed" + }, + "children": [ + { + "id": "walkFwdShort_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_short_fwd.fbx", + "startFrame": 0.0, + "endFrame": 39.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkFwdNormal_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_fwd.fbx", + "startFrame": 0.0, + "endFrame": 35.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkFwdFast_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_fwd_fast.fbx", + "startFrame": 0.0, + "endFrame": 25.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkFwdJog_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jog_fwd.fbx", + "startFrame": 0.0, + "endFrame": 25.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkFwdRun_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/run_fwd.fbx", + "startFrame": 0.0, + "endFrame": 21.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "idleToWalkFwd", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/idle_to_walk.fbx", + "startFrame": 1.0, + "endFrame": 13.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "idleSettle", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/settle_to_idle.fbx", + "startFrame": 1.0, + "endFrame": 48.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "walkBwd", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0.6, 2.0], + "alphaVar": "moveBackwardAlpha", + "desiredSpeedVar": "moveBackwardSpeed" + }, + "children": [ + { + "id": "walkBwdShort", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_short_bwd.fbx", + "startFrame": 0.0, + "endFrame": 38.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "walkBwdNormal", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_bwd_fast.fbx", + "startFrame": 0.0, + "endFrame": 28.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "turnLeft", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/turn_left.fbx", + "startFrame": 0.0, + "endFrame": 32.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "turnRight", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/turn_left.fbx", + "startFrame": 0.0, + "endFrame": 32.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "strafeLeft", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0, 0.5, 1.5, 2.6, 3.0], + "alphaVar": "moveLateralAlpha", + "desiredSpeedVar": "moveLateralSpeed" + }, + "children": [ + { + "id": "strafeLeftShort_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_short_left.fbx", + "startFrame": 0.0, + "endFrame": 29.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "strafeLeft_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_left.fbx", + "startFrame": 0.0, + "endFrame": 20.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "strafeLeftAnim_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_left.fbx", + "startFrame": 0.0, + "endFrame": 35.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "strafeLeftFast_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_left_fast.fbx", + "startFrame": 0.0, + "endFrame": 21.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "strafeLeftJog_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jog_left.fbx", + "startFrame": 0.0, + "endFrame": 24.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "strafeRight", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0, 0.5, 1.5, 2.6, 3.0], + "alphaVar": "moveLateralAlpha", + "desiredSpeedVar": "moveLateralSpeed" + }, + "children": [ { + "id": "stepRightShort_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_short_left.fbx", + "startFrame": 0.0, + "endFrame": 29.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "stepRight_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_left.fbx", + "startFrame": 0.0, + "endFrame": 20.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "strafeRight_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_left.fbx", + "startFrame": 0.0, + "endFrame": 35.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "strafeRightFast_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/walk_left_fast.fbx", + "startFrame": 0.0, + "endFrame": 21.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "strafeRightJog_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jog_left.fbx", + "startFrame": 0.0, + "endFrame": 24.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + } + ] + }, + { + "id": "strafeLeftHmd", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0, 0.5, 2.5], + "alphaVar": "moveLateralAlpha", + "desiredSpeedVar": "moveLateralSpeed" + }, + "children": [ + { + "id": "stepLeftShort_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_short_left.fbx", + "startFrame": 0.0, + "endFrame": 29.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "stepLeft_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_left.fbx", + "startFrame": 0.0, + "endFrame": 20.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "strafeLeftAnim_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_left_fast.fbx", + "startFrame": 0.0, + "endFrame": 16.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + } + ] + }, + { + "id": "strafeRightHmd", + "type": "blendLinearMove", + "data": { + "alpha": 0.0, + "desiredSpeed": 1.4, + "characteristicSpeeds": [0, 0.5, 2.5], + "alphaVar": "moveLateralAlpha", + "desiredSpeedVar": "moveLateralSpeed" + }, + "children": [ + { + "id": "stepRightShort_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_short_left.fbx", + "startFrame": 0.0, + "endFrame": 29.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "stepRight_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_left.fbx", + "startFrame": 0.0, + "endFrame": 20.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + }, + { + "id": "strafeRightAnim_c", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/side_step_left_fast.fbx", + "startFrame": 0.0, + "endFrame": 16.0, + "timeScale": 1.0, + "loopFlag": true, + "mirrorFlag": true + }, + "children": [] + } + ] + }, + { + "id": "fly", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/fly.fbx", + "startFrame": 1.0, + "endFrame": 80.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, + { + "id": "takeoffStand", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_takeoff.fbx", + "startFrame": 17.0, + "endFrame": 25.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "takeoffRun", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_takeoff.fbx", + "startFrame": 1.0, + "endFrame": 2.5, + "timeScale": 0.01, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirStand", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "inAirAlpha" + }, + "children": [ + { + "id": "inAirStandPreApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_apex.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 0.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirStandApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_apex.fbx", + "startFrame": 1.0, + "endFrame": 1.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirStandPostApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_apex.fbx", + "startFrame": 2.0, + "endFrame": 2.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + } + ] + }, + { + "id": "inAirRun", + "type": "blendLinear", + "data": { + "alpha": 0.0, + "alphaVar": "inAirAlpha" + }, + "children": [ + { + "id": "inAirRunPreApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_in_air.fbx", + "startFrame": 0.0, + "endFrame": 0.0, + "timeScale": 0.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirRunApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_in_air.fbx", + "startFrame": 6.0, + "endFrame": 6.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "inAirRunPostApex", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_in_air.fbx", + "startFrame": 11.0, + "endFrame": 11.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + } + ] + }, + { + "id": "landStandImpact", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_land.fbx", + "startFrame": 1.0, + "endFrame": 6.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "landStand", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_standing_land.fbx", + "startFrame": 6.0, + "endFrame": 28.0, + "timeScale": 1.0, + "loopFlag": false + }, + "children": [] + }, + { + "id": "landRun", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/jump_land.fbx", + "startFrame": 1.0, + "endFrame": 6.0, + "timeScale": 0.65, + "loopFlag": false + }, + "children": [] + } + ] + } + ] + } + ] } ] - }, - { - "id": "walkFwd", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0.5, 1.5, 2.5, 3.2, 4.5], - "alphaVar": "moveForwardAlpha", - "desiredSpeedVar": "moveForwardSpeed" - }, - "children": [ - { - "id": "walkFwdShort_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_short_fwd.fbx", - "startFrame": 0.0, - "endFrame": 39.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkFwdNormal_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_fwd.fbx", - "startFrame": 0.0, - "endFrame": 35.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkFwdFast_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_fwd_fast.fbx", - "startFrame": 0.0, - "endFrame": 25.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkFwdJog_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jog_fwd.fbx", - "startFrame": 0.0, - "endFrame": 25.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkFwdRun_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/run_fwd.fbx", - "startFrame": 0.0, - "endFrame": 21.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "idleToWalkFwd", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/idle_to_walk.fbx", - "startFrame": 1.0, - "endFrame": 13.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - },{ - "id": "idleSettle", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/settle_to_idle.fbx", - "startFrame": 1.0, - "endFrame": 48.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "walkBwd", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0.6, 2.0], - "alphaVar": "moveBackwardAlpha", - "desiredSpeedVar": "moveBackwardSpeed" - }, - "children": [ - { - "id": "walkBwdShort_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_short_bwd.fbx", - "startFrame": 0.0, - "endFrame": 38.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkBwdNormal_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_bwd_fast.fbx", - "startFrame": 0.0, - "endFrame": 28.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "turnLeft", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/turn_left.fbx", - "startFrame": 0.0, - "endFrame": 32.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "turnRight", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/turn_left.fbx", - "startFrame": 0.0, - "endFrame": 32.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "strafeLeft", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0, 0.5, 1.5, 2.6, 3.0], - "alphaVar": "moveLateralAlpha", - "desiredSpeedVar": "moveLateralSpeed" - }, - "children": [ - - { - "id": "stepLeftShort_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_short_left.fbx", - "startFrame": 0.0, - "endFrame": 29.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "stepLeft_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_left.fbx", - "startFrame": 0.0, - "endFrame": 20.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeLeftAnim_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_left.fbx", - "startFrame": 0.0, - "endFrame": 35.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeLeftFast_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_left_fast.fbx", - "startFrame": 0.0, - "endFrame": 21.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeLeftJog_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jog_left.fbx", - "startFrame": 0.0, - "endFrame": 24.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "strafeRight", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0, 0.5, 1.5, 2.6, 3.0], - "alphaVar": "moveLateralAlpha", - "desiredSpeedVar": "moveLateralSpeed" - }, - "children": [ - { - "id": "stepRightShort_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_short_left.fbx", - "startFrame": 0.0, - "endFrame": 29.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "stepRight_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_left.fbx", - "startFrame": 0.0, - "endFrame": 20.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "strafeRight_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_left.fbx", - "startFrame": 0.0, - "endFrame": 35.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "strafeRightFast_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_left_fast.fbx", - "startFrame": 0.0, - "endFrame": 21.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "strafeRightJog_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jog_left.fbx", - "startFrame": 0.0, - "endFrame": 24.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - } - ] - }, - { - "id": "strafeLeftHmd", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0, 0.5, 2.5], - "alphaVar": "moveLateralAlpha", - "desiredSpeedVar": "moveLateralSpeed" - }, - "children": [ - - { - "id": "stepLeftShort_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_short_left.fbx", - "startFrame": 0.0, - "endFrame": 29.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "stepLeft_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_left.fbx", - "startFrame": 0.0, - "endFrame": 20.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeLeftAnim_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_left_fast.fbx", - "startFrame": 0.0, - "endFrame": 16.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "strafeRightHmd", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [0, 0.5, 2.5], - "alphaVar": "moveLateralAlpha", - "desiredSpeedVar": "moveLateralSpeed" - }, - "children": [ - - { - "id": "stepRightShort_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_short_left.fbx", - "startFrame": 0.0, - "endFrame": 29.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "stepRight_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_left.fbx", - "startFrame": 0.0, - "endFrame": 20.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "strafeRightAnim_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_left_fast.fbx", - "startFrame": 0.0, - "endFrame": 16.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - } - ] - }, - { - "id": "fly", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/fly.fbx", - "startFrame": 1.0, - "endFrame": 80.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "takeoffStand", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_takeoff.fbx", - "startFrame": 17.0, - "endFrame": 25.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "takeoffRun", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_takeoff.fbx", - "startFrame": 1.0, - "endFrame": 2.5, - "timeScale": 0.01, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStand", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "inAirAlpha" - }, - "children": [ - { - "id": "inAirStandPreApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_apex.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 0.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStandApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_apex.fbx", - "startFrame": 1.0, - "endFrame": 1.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStandPostApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_apex.fbx", - "startFrame": 2.0, - "endFrame": 2.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - } - ] - }, - { - "id": "inAirRun", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "inAirAlpha" - }, - "children": [ - { - "id": "inAirRunPreApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_in_air.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 0.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirRunApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_in_air.fbx", - "startFrame": 6.0, - "endFrame": 6.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirRunPostApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_in_air.fbx", - "startFrame": 11.0, - "endFrame": 11.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - } - ] - }, - { - "id": "landStandImpact", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_land.fbx", - "startFrame": 1.0, - "endFrame": 6.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "landStand", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_land.fbx", - "startFrame": 6.0, - "endFrame": 28.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "landRun", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_land.fbx", - "startFrame": 1.0, - "endFrame": 6.0, - "timeScale": 0.65, - "loopFlag": false - }, - "children": [] } ] } diff --git a/libraries/animation/src/AnimBlendLinear.cpp b/libraries/animation/src/AnimBlendLinear.cpp index 2dd4338a5e..50fdb166fc 100644 --- a/libraries/animation/src/AnimBlendLinear.cpp +++ b/libraries/animation/src/AnimBlendLinear.cpp @@ -25,7 +25,6 @@ AnimBlendLinear::~AnimBlendLinear() { } const AnimPoseVec& AnimBlendLinear::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) { - qCDebug(animation) << "in blend linear ++++++++++++++++" << _alphaVar << ": " << QString::number(_alpha, 'f', 3) << " parent id: " << _id << " and alpha " << _animStack[_id]; _alpha = animVars.lookup(_alphaVar, _alpha); float parentAlpha = _animStack[_id]; @@ -42,7 +41,6 @@ const AnimPoseVec& AnimBlendLinear::evaluate(const AnimVariantMap& animVars, con float clampedAlpha = glm::clamp(_alpha, 0.0f, (float)(_children.size() - 1)); size_t prevPoseIndex = glm::floor(clampedAlpha); size_t nextPoseIndex = glm::ceil(clampedAlpha); - float alpha = glm::fract(clampedAlpha); if (prevPoseIndex == nextPoseIndex) { if (nextPoseIndex == 0) { nextPoseIndex = 1; @@ -50,9 +48,9 @@ const AnimPoseVec& AnimBlendLinear::evaluate(const AnimVariantMap& animVars, con prevPoseIndex = (nextPoseIndex - 1); } } + float alpha = clampedAlpha - (float)prevPoseIndex; evaluateAndBlendChildren(animVars, context, triggersOut, alpha, prevPoseIndex, nextPoseIndex, dt); - qCDebug(animation) << "linear blend alpha " << alpha << " and _alpha " << _alpha <<" next pose " << _children[nextPoseIndex]->getID() << " previous pose " << _children[prevPoseIndex]->getID(); float weight2 = _alpha - (float)prevPoseIndex; float weight1 = 1.0f - weight2; _animStack[_children[prevPoseIndex]->getID()] = weight1 * parentAlpha; diff --git a/libraries/animation/src/AnimBlendLinearMove.cpp b/libraries/animation/src/AnimBlendLinearMove.cpp index 1c5067acb3..f17ac3defe 100644 --- a/libraries/animation/src/AnimBlendLinearMove.cpp +++ b/libraries/animation/src/AnimBlendLinearMove.cpp @@ -49,7 +49,6 @@ static float calculateAlpha(const float speed, const std::vector& charact const AnimPoseVec& AnimBlendLinearMove::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) { - qCDebug(animation) << "in blend linear move " << _alphaVar << ": " << _alpha << " band id: " << _id << " parent alpha " << _animStack[_id]; assert(_children.size() == _characteristicSpeeds.size()); _desiredSpeed = animVars.lookup(_desiredSpeedVar, _desiredSpeed); From 993e1e1c4d67c07c5c3120666fd298ad5599e326 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 6 Aug 2018 14:35:11 -0700 Subject: [PATCH 174/332] Use GLES compatible context for shader tests --- tests/shaders/src/ShaderTests.cpp | 36 +++++++++++++++++++++++++------ tests/shaders/src/ShaderTests.h | 4 +++- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/tests/shaders/src/ShaderTests.cpp b/tests/shaders/src/ShaderTests.cpp index f7d8222de1..4c6b8fc38c 100644 --- a/tests/shaders/src/ShaderTests.cpp +++ b/tests/shaders/src/ShaderTests.cpp @@ -32,10 +32,13 @@ QTEST_MAIN(ShaderTests) +#pragma optimize("", off) void ShaderTests::initTestCase() { + _window = new QWindow(); + _context = new ::gl::Context(_window); getDefaultOpenGLSurfaceFormat(); - _canvas.create(); - if (!_canvas.makeCurrent()) { + _context->create(); + if (!_context->makeCurrent()) { qFatal("Unable to make test GL context current"); } gl::initModuleGl(); @@ -181,9 +184,19 @@ void ShaderTests::testShaderLoad() { std::set usedShaders; uint32_t maxShader = 0; try { + +#if 1 + uint32_t testPrograms[] = { + shader::render_utils::program::parabola, + shader::INVALID_PROGRAM, + }; +#else + const auto& testPrograms = shader::all_programs; +#endif + size_t index = 0; - while (shader::INVALID_PROGRAM != shader::all_programs[index]) { - auto programId = shader::all_programs[index]; + while (shader::INVALID_PROGRAM != testPrograms[index]) { + auto programId = testPrograms[index]; ++index; uint32_t vertexId = shader::getVertexId(programId); @@ -216,6 +229,12 @@ void ShaderTests::testShaderLoad() { // Uniforms { auto uniforms = gl::Uniform::load(program); + for (const auto& uniform : uniforms) { + GLint offset, size; + glGetActiveUniformsiv(program, 1, (GLuint*)&uniform.index, GL_UNIFORM_OFFSET, &offset); + glGetActiveUniformsiv(program, 1, (GLuint*)&uniform.index, GL_UNIFORM_SIZE, &size); + qDebug() << uniform.name.c_str() << " size " << size << "offset" << offset; + } const auto& uniformRemap = shaderObject.uniformRemap; auto expectedUniforms = expectedBindings[gpu::Shader::BindingType::UNIFORM]; if (!compareBindings(uniforms, expectedUniforms)) { @@ -224,11 +243,9 @@ void ShaderTests::testShaderLoad() { for (const auto& uniform : uniforms) { if (0 != expectedUniforms.count(uniform.name)) { auto expectedLocation = expectedUniforms[uniform.name]; -#ifdef Q_OS_MAC if (0 != uniformRemap.count(expectedLocation)) { expectedLocation = uniformRemap.at(expectedLocation); } -#endif QVERIFY(expectedLocation == uniform.binding); } } @@ -236,7 +253,12 @@ void ShaderTests::testShaderLoad() { // Textures { - const auto textures = gl::Uniform::loadTextures(program); + auto textures = gl::Uniform::loadTextures(program); + auto expiredBegin = std::remove_if(textures.begin(), textures.end(), [&](const gl::Uniform& uniform) -> bool { + return uniform.name == "transformObjectBuffer"; + }); + textures.erase(expiredBegin, textures.end()); + const auto expectedTextures = expectedBindings[gpu::Shader::BindingType::TEXTURE]; if (!compareBindings(textures, expectedTextures)) { qDebug() << "Textures mismatch"; diff --git a/tests/shaders/src/ShaderTests.h b/tests/shaders/src/ShaderTests.h index 2b731899cc..d109341c1f 100644 --- a/tests/shaders/src/ShaderTests.h +++ b/tests/shaders/src/ShaderTests.h @@ -12,6 +12,7 @@ #include #include #include +#include class ShaderTests : public QObject { Q_OBJECT @@ -22,7 +23,8 @@ private slots: void testShaderLoad(); private: - OffscreenGLCanvas _canvas; + QWindow* _window{ nullptr }; + gl::Context* _context{ nullptr }; gpu::ContextPointer _gpuContext; }; From dcdc3a323c4701495dc8e774b7372b020dfcc746 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 6 Aug 2018 14:35:36 -0700 Subject: [PATCH 175/332] Use defines for packed textures to satisfy both GLES and GL 4.1 --- libraries/render-utils/src/directional_ambient_light.slf | 4 ++-- .../render-utils/src/directional_ambient_light_shadow.slf | 4 ++-- libraries/render-utils/src/directional_skybox_light.slf | 4 ++-- .../render-utils/src/directional_skybox_light_shadow.slf | 4 ++-- libraries/render-utils/src/forward_model.slf | 4 ++-- libraries/render-utils/src/forward_model_normal_map.slf | 4 ++-- libraries/render-utils/src/forward_model_translucent.slf | 4 ++-- libraries/render-utils/src/forward_model_unlit.slf | 4 ++-- libraries/render-utils/src/forward_simple.slf | 4 ++-- libraries/render-utils/src/forward_simple_textured.slf | 4 ++-- .../render-utils/src/forward_simple_textured_transparent.slf | 4 ++-- libraries/render-utils/src/forward_simple_textured_unlit.slf | 4 ++-- libraries/render-utils/src/forward_simple_transparent.slf | 4 ++-- libraries/render-utils/src/hmd_ui.slf | 4 ++-- libraries/render-utils/src/local_lights_drawOutline.slf | 4 ++-- libraries/render-utils/src/local_lights_shading.slf | 4 ++-- libraries/render-utils/src/model.slf | 4 ++-- libraries/render-utils/src/model_fade.slf | 4 ++-- libraries/render-utils/src/model_lightmap.slf | 4 ++-- libraries/render-utils/src/model_lightmap_fade.slf | 4 ++-- libraries/render-utils/src/model_lightmap_normal_map.slf | 4 ++-- libraries/render-utils/src/model_lightmap_normal_map_fade.slf | 4 ++-- libraries/render-utils/src/model_normal_map.slf | 4 ++-- libraries/render-utils/src/model_normal_map_fade.slf | 4 ++-- libraries/render-utils/src/model_translucent.slf | 4 ++-- libraries/render-utils/src/model_translucent_fade.slf | 4 ++-- libraries/render-utils/src/model_translucent_normal_map.slf | 4 ++-- .../render-utils/src/model_translucent_normal_map_fade.slf | 4 ++-- libraries/render-utils/src/model_translucent_unlit.slf | 4 ++-- libraries/render-utils/src/model_translucent_unlit_fade.slf | 4 ++-- libraries/render-utils/src/model_unlit.slf | 4 ++-- libraries/render-utils/src/model_unlit_fade.slf | 4 ++-- libraries/render-utils/src/parabola.slv | 2 +- libraries/render-utils/src/sdf_text3D.slf | 4 ++-- libraries/render-utils/src/sdf_text3D_transparent.slf | 4 ++-- libraries/render-utils/src/simple.slf | 4 ++-- libraries/render-utils/src/simple_fade.slf | 4 ++-- libraries/render-utils/src/simple_opaque_web_browser.slf | 4 ++-- libraries/render-utils/src/simple_textured.slf | 4 ++-- libraries/render-utils/src/simple_textured_fade.slf | 4 ++-- libraries/render-utils/src/simple_textured_unlit.slf | 4 ++-- libraries/render-utils/src/simple_textured_unlit_fade.slf | 4 ++-- libraries/render-utils/src/simple_transparent.slf | 4 ++-- libraries/render-utils/src/simple_transparent_textured.slf | 4 ++-- .../render-utils/src/simple_transparent_textured_fade.slf | 4 ++-- .../render-utils/src/simple_transparent_textured_unlit.slf | 4 ++-- .../src/simple_transparent_textured_unlit_fade.slf | 4 ++-- libraries/render-utils/src/simple_transparent_web_browser.slf | 4 ++-- 48 files changed, 95 insertions(+), 95 deletions(-) diff --git a/libraries/render-utils/src/directional_ambient_light.slf b/libraries/render-utils/src/directional_ambient_light.slf index 3105b76bde..15d00f713e 100644 --- a/libraries/render-utils/src/directional_ambient_light.slf +++ b/libraries/render-utils/src/directional_ambient_light.slf @@ -23,8 +23,8 @@ <$declareEvalAmbientSphereGlobalColor(supportScattering)$> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/directional_ambient_light_shadow.slf b/libraries/render-utils/src/directional_ambient_light_shadow.slf index 88c0188048..d6cdf78f19 100644 --- a/libraries/render-utils/src/directional_ambient_light_shadow.slf +++ b/libraries/render-utils/src/directional_ambient_light_shadow.slf @@ -21,8 +21,8 @@ <$declareEvalAmbientSphereGlobalColor(isScattering)$> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/directional_skybox_light.slf b/libraries/render-utils/src/directional_skybox_light.slf index 56a7cd1883..b27d759dd4 100644 --- a/libraries/render-utils/src/directional_skybox_light.slf +++ b/libraries/render-utils/src/directional_skybox_light.slf @@ -20,8 +20,8 @@ <$declareEvalSkyboxGlobalColor(isScattering)$> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/directional_skybox_light_shadow.slf b/libraries/render-utils/src/directional_skybox_light_shadow.slf index 6eaa989c6b..292f7348e3 100644 --- a/libraries/render-utils/src/directional_skybox_light_shadow.slf +++ b/libraries/render-utils/src/directional_skybox_light_shadow.slf @@ -21,8 +21,8 @@ <$declareEvalSkyboxGlobalColor(isScattering)$> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/forward_model.slf b/libraries/render-utils/src/forward_model.slf index 82d776602f..f77ab358f2 100644 --- a/libraries/render-utils/src/forward_model.slf +++ b/libraries/render-utils/src/forward_model.slf @@ -27,8 +27,8 @@ layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; diff --git a/libraries/render-utils/src/forward_model_normal_map.slf b/libraries/render-utils/src/forward_model_normal_map.slf index 21ed0b9359..73fae33fb0 100644 --- a/libraries/render-utils/src/forward_model_normal_map.slf +++ b/libraries/render-utils/src/forward_model_normal_map.slf @@ -25,8 +25,8 @@ layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; diff --git a/libraries/render-utils/src/forward_model_translucent.slf b/libraries/render-utils/src/forward_model_translucent.slf index 74d200542f..d247b589c7 100644 --- a/libraries/render-utils/src/forward_model_translucent.slf +++ b/libraries/render-utils/src/forward_model_translucent.slf @@ -24,8 +24,8 @@ <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, METALLIC, EMISSIVE, OCCLUSION)$> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; diff --git a/libraries/render-utils/src/forward_model_unlit.slf b/libraries/render-utils/src/forward_model_unlit.slf index daad2ee6b9..19b40d884c 100644 --- a/libraries/render-utils/src/forward_model_unlit.slf +++ b/libraries/render-utils/src/forward_model_unlit.slf @@ -20,8 +20,8 @@ <$declareMaterialTextures(ALBEDO)$> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=0) out vec4 _fragColor0; diff --git a/libraries/render-utils/src/forward_simple.slf b/libraries/render-utils/src/forward_simple.slf index 09365635cf..2c1be14080 100644 --- a/libraries/render-utils/src/forward_simple.slf +++ b/libraries/render-utils/src/forward_simple.slf @@ -22,8 +22,8 @@ layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; diff --git a/libraries/render-utils/src/forward_simple_textured.slf b/libraries/render-utils/src/forward_simple_textured.slf index 532d12dd17..8570ae6183 100644 --- a/libraries/render-utils/src/forward_simple_textured.slf +++ b/libraries/render-utils/src/forward_simple_textured.slf @@ -28,8 +28,8 @@ layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=0) out vec4 _fragColor0; diff --git a/libraries/render-utils/src/forward_simple_textured_transparent.slf b/libraries/render-utils/src/forward_simple_textured_transparent.slf index 98dc0bb368..11c44c18a2 100644 --- a/libraries/render-utils/src/forward_simple_textured_transparent.slf +++ b/libraries/render-utils/src/forward_simple_textured_transparent.slf @@ -28,8 +28,8 @@ layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=0) out vec4 _fragColor0; diff --git a/libraries/render-utils/src/forward_simple_textured_unlit.slf b/libraries/render-utils/src/forward_simple_textured_unlit.slf index 7d3bf5912a..8ca46da499 100644 --- a/libraries/render-utils/src/forward_simple_textured_unlit.slf +++ b/libraries/render-utils/src/forward_simple_textured_unlit.slf @@ -24,8 +24,8 @@ layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw void main(void) { vec4 texel = texture(originalTexture, _texCoord0.st); diff --git a/libraries/render-utils/src/forward_simple_transparent.slf b/libraries/render-utils/src/forward_simple_transparent.slf index a47d5963a2..f8390d6253 100644 --- a/libraries/render-utils/src/forward_simple_transparent.slf +++ b/libraries/render-utils/src/forward_simple_transparent.slf @@ -21,8 +21,8 @@ layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; diff --git a/libraries/render-utils/src/hmd_ui.slf b/libraries/render-utils/src/hmd_ui.slf index b8bca889bf..eebeb2e060 100644 --- a/libraries/render-utils/src/hmd_ui.slf +++ b/libraries/render-utils/src/hmd_ui.slf @@ -24,8 +24,8 @@ layout(std140, binding=0) uniform hudBuffer { }; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=0) out vec4 fragColor0; diff --git a/libraries/render-utils/src/local_lights_drawOutline.slf b/libraries/render-utils/src/local_lights_drawOutline.slf index ff6476e21c..fc1d416f96 100644 --- a/libraries/render-utils/src/local_lights_drawOutline.slf +++ b/libraries/render-utils/src/local_lights_drawOutline.slf @@ -34,8 +34,8 @@ layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/local_lights_shading.slf b/libraries/render-utils/src/local_lights_shading.slf index 14cecd1815..538bdacc99 100644 --- a/libraries/render-utils/src/local_lights_shading.slf +++ b/libraries/render-utils/src/local_lights_shading.slf @@ -22,8 +22,8 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=0) out vec4 _fragColor; void main(void) { diff --git a/libraries/render-utils/src/model.slf b/libraries/render-utils/src/model.slf index 70b71e0d22..2c42ed6083 100644 --- a/libraries/render-utils/src/model.slf +++ b/libraries/render-utils/src/model.slf @@ -20,8 +20,8 @@ <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, METALLIC, EMISSIVE, OCCLUSION, SCATTERING)$> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; diff --git a/libraries/render-utils/src/model_fade.slf b/libraries/render-utils/src/model_fade.slf index 23c629ddb0..b5a2c8d3ef 100644 --- a/libraries/render-utils/src/model_fade.slf +++ b/libraries/render-utils/src/model_fade.slf @@ -26,8 +26,8 @@ layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; diff --git a/libraries/render-utils/src/model_lightmap.slf b/libraries/render-utils/src/model_lightmap.slf index 34da0a8a05..efc36cc14a 100644 --- a/libraries/render-utils/src/model_lightmap.slf +++ b/libraries/render-utils/src/model_lightmap.slf @@ -22,8 +22,8 @@ layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; diff --git a/libraries/render-utils/src/model_lightmap_fade.slf b/libraries/render-utils/src/model_lightmap_fade.slf index 6f6dd9c413..4cbf3dcdea 100644 --- a/libraries/render-utils/src/model_lightmap_fade.slf +++ b/libraries/render-utils/src/model_lightmap_fade.slf @@ -26,8 +26,8 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; diff --git a/libraries/render-utils/src/model_lightmap_normal_map.slf b/libraries/render-utils/src/model_lightmap_normal_map.slf index 362c331f63..ebafc6dfe2 100644 --- a/libraries/render-utils/src/model_lightmap_normal_map.slf +++ b/libraries/render-utils/src/model_lightmap_normal_map.slf @@ -22,8 +22,8 @@ layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; diff --git a/libraries/render-utils/src/model_lightmap_normal_map_fade.slf b/libraries/render-utils/src/model_lightmap_normal_map_fade.slf index bbeade488e..a9bac0e051 100644 --- a/libraries/render-utils/src/model_lightmap_normal_map_fade.slf +++ b/libraries/render-utils/src/model_lightmap_normal_map_fade.slf @@ -27,8 +27,8 @@ layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; diff --git a/libraries/render-utils/src/model_normal_map.slf b/libraries/render-utils/src/model_normal_map.slf index 4e89dfb3e8..5f30830511 100644 --- a/libraries/render-utils/src/model_normal_map.slf +++ b/libraries/render-utils/src/model_normal_map.slf @@ -21,8 +21,8 @@ layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; diff --git a/libraries/render-utils/src/model_normal_map_fade.slf b/libraries/render-utils/src/model_normal_map_fade.slf index 16b8138efe..499f376efa 100644 --- a/libraries/render-utils/src/model_normal_map_fade.slf +++ b/libraries/render-utils/src/model_normal_map_fade.slf @@ -25,8 +25,8 @@ layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; diff --git a/libraries/render-utils/src/model_translucent.slf b/libraries/render-utils/src/model_translucent.slf index 7fe81ab992..564150cebd 100644 --- a/libraries/render-utils/src/model_translucent.slf +++ b/libraries/render-utils/src/model_translucent.slf @@ -27,8 +27,8 @@ <$declareMaterialTextures(ALBEDO, ROUGHNESS, _SCRIBE_NULL, _SCRIBE_NULL, EMISSIVE, OCCLUSION)$> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; diff --git a/libraries/render-utils/src/model_translucent_fade.slf b/libraries/render-utils/src/model_translucent_fade.slf index b9df51fcb9..3cebc59ea7 100644 --- a/libraries/render-utils/src/model_translucent_fade.slf +++ b/libraries/render-utils/src/model_translucent_fade.slf @@ -25,8 +25,8 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; diff --git a/libraries/render-utils/src/model_translucent_normal_map.slf b/libraries/render-utils/src/model_translucent_normal_map.slf index c023f78e25..36ea50c321 100644 --- a/libraries/render-utils/src/model_translucent_normal_map.slf +++ b/libraries/render-utils/src/model_translucent_normal_map.slf @@ -29,8 +29,8 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; diff --git a/libraries/render-utils/src/model_translucent_normal_map_fade.slf b/libraries/render-utils/src/model_translucent_normal_map_fade.slf index 992993edb3..24922c4e43 100644 --- a/libraries/render-utils/src/model_translucent_normal_map_fade.slf +++ b/libraries/render-utils/src/model_translucent_normal_map_fade.slf @@ -33,8 +33,8 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; diff --git a/libraries/render-utils/src/model_translucent_unlit.slf b/libraries/render-utils/src/model_translucent_unlit.slf index 8f823e010a..87a712b239 100644 --- a/libraries/render-utils/src/model_translucent_unlit.slf +++ b/libraries/render-utils/src/model_translucent_unlit.slf @@ -21,8 +21,8 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=0) out vec4 _fragColor; diff --git a/libraries/render-utils/src/model_translucent_unlit_fade.slf b/libraries/render-utils/src/model_translucent_unlit_fade.slf index 2c72780976..74dee12ec8 100644 --- a/libraries/render-utils/src/model_translucent_unlit_fade.slf +++ b/libraries/render-utils/src/model_translucent_unlit_fade.slf @@ -24,8 +24,8 @@ <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; diff --git a/libraries/render-utils/src/model_unlit.slf b/libraries/render-utils/src/model_unlit.slf index 0e93022b83..b14a807eb5 100644 --- a/libraries/render-utils/src/model_unlit.slf +++ b/libraries/render-utils/src/model_unlit.slf @@ -21,8 +21,8 @@ <$declareMaterialTextures(ALBEDO)$> layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; diff --git a/libraries/render-utils/src/model_unlit_fade.slf b/libraries/render-utils/src/model_unlit_fade.slf index 1172bd5556..cb5c72bdf2 100644 --- a/libraries/render-utils/src/model_unlit_fade.slf +++ b/libraries/render-utils/src/model_unlit_fade.slf @@ -25,8 +25,8 @@ layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; diff --git a/libraries/render-utils/src/parabola.slv b/libraries/render-utils/src/parabola.slv index 46d6924191..50b5999450 100644 --- a/libraries/render-utils/src/parabola.slv +++ b/libraries/render-utils/src/parabola.slv @@ -27,7 +27,7 @@ layout(location=0) out vec4 _color; void main(void) { _color = color; - float t = parabolicDistance * (floor(gl_VertexID / 2) / float(numSections)); + float t = parabolicDistance * (float(gl_VertexID / 2) / float(numSections)); vec4 pos = vec4(velocity * t + 0.5 * acceleration * t * t, 1); const float EPSILON = 0.00001; diff --git a/libraries/render-utils/src/sdf_text3D.slf b/libraries/render-utils/src/sdf_text3D.slf index 999fb9e1a9..2fbaa03900 100644 --- a/libraries/render-utils/src/sdf_text3D.slf +++ b/libraries/render-utils/src/sdf_text3D.slf @@ -20,8 +20,8 @@ layout(location=RENDER_UTILS_UNIFORM_TEXT_COLOR) uniform vec4 Color; // the interpolated normal layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw #define TAA_TEXTURE_LOD_BIAS -3.0 diff --git a/libraries/render-utils/src/sdf_text3D_transparent.slf b/libraries/render-utils/src/sdf_text3D_transparent.slf index fbf4c4c372..218236c26b 100644 --- a/libraries/render-utils/src/sdf_text3D_transparent.slf +++ b/libraries/render-utils/src/sdf_text3D_transparent.slf @@ -20,8 +20,8 @@ layout(location=RENDER_UTILS_UNIFORM_TEXT_COLOR) uniform vec4 Color; // the interpolated normal layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw const float gamma = 2.2; const float smoothing = 32.0; diff --git a/libraries/render-utils/src/simple.slf b/libraries/render-utils/src/simple.slf index a699a10cad..04ffade2fa 100644 --- a/libraries/render-utils/src/simple.slf +++ b/libraries/render-utils/src/simple.slf @@ -21,8 +21,8 @@ layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; diff --git a/libraries/render-utils/src/simple_fade.slf b/libraries/render-utils/src/simple_fade.slf index 00d81cadc9..e9f94c29bc 100644 --- a/libraries/render-utils/src/simple_fade.slf +++ b/libraries/render-utils/src/simple_fade.slf @@ -24,8 +24,8 @@ layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; diff --git a/libraries/render-utils/src/simple_opaque_web_browser.slf b/libraries/render-utils/src/simple_opaque_web_browser.slf index 27a0781eef..cf4828d3b3 100644 --- a/libraries/render-utils/src/simple_opaque_web_browser.slf +++ b/libraries/render-utils/src/simple_opaque_web_browser.slf @@ -24,8 +24,8 @@ layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw void main(void) { vec4 texel = texture(originalTexture, _texCoord0.st); diff --git a/libraries/render-utils/src/simple_textured.slf b/libraries/render-utils/src/simple_textured.slf index f1a60bdc5a..7676844084 100644 --- a/libraries/render-utils/src/simple_textured.slf +++ b/libraries/render-utils/src/simple_textured.slf @@ -23,8 +23,8 @@ layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw void main(void) { vec4 texel = texture(originalTexture, _texCoord0); diff --git a/libraries/render-utils/src/simple_textured_fade.slf b/libraries/render-utils/src/simple_textured_fade.slf index a1476939d1..600f19be0f 100644 --- a/libraries/render-utils/src/simple_textured_fade.slf +++ b/libraries/render-utils/src/simple_textured_fade.slf @@ -26,8 +26,8 @@ layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; // Declare after all samplers to prevent sampler location mix up with originalTexture diff --git a/libraries/render-utils/src/simple_textured_unlit.slf b/libraries/render-utils/src/simple_textured_unlit.slf index fcdf118732..e3d9b9daf6 100644 --- a/libraries/render-utils/src/simple_textured_unlit.slf +++ b/libraries/render-utils/src/simple_textured_unlit.slf @@ -24,8 +24,8 @@ layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw void main(void) { vec4 texel = texture(originalTexture, _texCoord0.st); diff --git a/libraries/render-utils/src/simple_textured_unlit_fade.slf b/libraries/render-utils/src/simple_textured_unlit_fade.slf index 2007f0f684..bffadbe819 100644 --- a/libraries/render-utils/src/simple_textured_unlit_fade.slf +++ b/libraries/render-utils/src/simple_textured_unlit_fade.slf @@ -26,8 +26,8 @@ layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; // Declare after all samplers to prevent sampler location mix up with originalTexture diff --git a/libraries/render-utils/src/simple_transparent.slf b/libraries/render-utils/src/simple_transparent.slf index d2ba332566..f81c06390c 100644 --- a/libraries/render-utils/src/simple_transparent.slf +++ b/libraries/render-utils/src/simple_transparent.slf @@ -21,8 +21,8 @@ layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; diff --git a/libraries/render-utils/src/simple_transparent_textured.slf b/libraries/render-utils/src/simple_transparent_textured.slf index ffd715215a..0e6198de68 100644 --- a/libraries/render-utils/src/simple_transparent_textured.slf +++ b/libraries/render-utils/src/simple_transparent_textured.slf @@ -23,8 +23,8 @@ layout(location=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw void main(void) { vec4 texel = texture(originalTexture, _texCoord0); diff --git a/libraries/render-utils/src/simple_transparent_textured_fade.slf b/libraries/render-utils/src/simple_transparent_textured_fade.slf index 8e530f41aa..44a3fe2e01 100644 --- a/libraries/render-utils/src/simple_transparent_textured_fade.slf +++ b/libraries/render-utils/src/simple_transparent_textured_fade.slf @@ -32,8 +32,8 @@ layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; // Declare after all samplers to prevent sampler location mix up with originalTexture diff --git a/libraries/render-utils/src/simple_transparent_textured_unlit.slf b/libraries/render-utils/src/simple_transparent_textured_unlit.slf index d05ca02560..9d43e41c2f 100644 --- a/libraries/render-utils/src/simple_transparent_textured_unlit.slf +++ b/libraries/render-utils/src/simple_transparent_textured_unlit.slf @@ -21,8 +21,8 @@ layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=0) out vec4 _fragColor0; diff --git a/libraries/render-utils/src/simple_transparent_textured_unlit_fade.slf b/libraries/render-utils/src/simple_transparent_textured_unlit_fade.slf index 53006b508d..43c28c41c3 100644 --- a/libraries/render-utils/src/simple_transparent_textured_unlit_fade.slf +++ b/libraries/render-utils/src/simple_transparent_textured_unlit_fade.slf @@ -23,8 +23,8 @@ layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; layout(location=0) out vec4 _fragColor0; diff --git a/libraries/render-utils/src/simple_transparent_web_browser.slf b/libraries/render-utils/src/simple_transparent_web_browser.slf index 156339b702..df92d238bf 100644 --- a/libraries/render-utils/src/simple_transparent_web_browser.slf +++ b/libraries/render-utils/src/simple_transparent_web_browser.slf @@ -24,8 +24,8 @@ layout(binding=0) uniform sampler2D originalTexture; layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -vec2 _texCoord0 = _texCoord01.xy; -vec2 _texCoord1 = _texCoord01.zw; +#define _texCoord0 _texCoord01.xy +#define _texCoord1 _texCoord01.zw void main(void) { vec4 texel = texture(originalTexture, _texCoord0.st); From 40889c8f09a10fdd8100895b9c22f154a781377e Mon Sep 17 00:00:00 2001 From: MuteTab Date: Mon, 6 Aug 2018 15:35:54 -0700 Subject: [PATCH 176/332] Added getWorldFeetPosition() function to Avatar --- .../avatars-renderer/src/avatars-renderer/Avatar.cpp | 8 ++++++++ libraries/avatars-renderer/src/avatars-renderer/Avatar.h | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 69356cdfaa..873fc94021 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -1577,6 +1577,14 @@ void Avatar::getCapsule(glm::vec3& start, glm::vec3& end, float& radius) { radius = halfExtents.x; } +glm::vec3 Avatar::getWorldFeetPosition() { + ShapeInfo shapeInfo; + computeShapeInfo(shapeInfo); + glm::vec3 halfExtents = shapeInfo.getHalfExtents(); // x = radius, y = halfHeight + glm::vec3 localFeet(0.0f, shapeInfo.getOffset().y - halfExtents.y - halfExtents.x, 0.0f); + return getWorldOrientation() * localFeet + getWorldPosition(); +} + float Avatar::computeMass() { float radius; glm::vec3 start, end; diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index 157f7b2ec6..5a12e0ffef 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -249,6 +249,12 @@ public: virtual void computeShapeInfo(ShapeInfo& shapeInfo); void getCapsule(glm::vec3& start, glm::vec3& end, float& radius); float computeMass(); + /**jsdoc + * Get the position of the current avatar's feet (or rather, bottom of its collision capsule) in world coordinates. + * @function MyAvatar.getWorldFeetPosition() + * @returns {Vec3} + */ + Q_INVOKABLE glm::vec3 getWorldFeetPosition(); void setPositionViaScript(const glm::vec3& position) override; void setOrientationViaScript(const glm::quat& orientation) override; From a7dec8fb75fa417400e3594b6e689bc05a6f4f9b Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 6 Aug 2018 15:49:52 -0700 Subject: [PATCH 177/332] parabola and particle shader fixes --- .../src/textured_particle.slv | 2 +- .../src/procedural/proceduralSkybox.slf | 3 --- libraries/render-utils/src/parabola.slv | 22 +++++++++++-------- .../render/src/render/DrawSceneOctree.cpp | 19 ---------------- libraries/render/src/render/DrawStatus.cpp | 7 ------ 5 files changed, 14 insertions(+), 39 deletions(-) diff --git a/libraries/entities-renderer/src/textured_particle.slv b/libraries/entities-renderer/src/textured_particle.slv index 60bca6e9bd..3eacaec3b5 100644 --- a/libraries/entities-renderer/src/textured_particle.slv +++ b/libraries/entities-renderer/src/textured_particle.slv @@ -149,7 +149,7 @@ void main(void) { vec3 UP = vec3(0, 1, 0); vec3 modelUpWorld; <$transformModelToWorldDir(cam, obj, UP, modelUpWorld)$> - vec3 upWorld = mix(UP, normalize(modelUpWorld), particle.rotateWithEntity); + vec3 upWorld = mix(UP, normalize(modelUpWorld), float(particle.rotateWithEntity)); vec3 upEye = normalize(view3 * upWorld); vec3 FORWARD = vec3(0, 0, -1); vec3 particleRight = normalize(cross(FORWARD, upEye)); diff --git a/libraries/procedural/src/procedural/proceduralSkybox.slf b/libraries/procedural/src/procedural/proceduralSkybox.slf index 9960698ff0..e18b7abef6 100644 --- a/libraries/procedural/src/procedural/proceduralSkybox.slf +++ b/libraries/procedural/src/procedural/proceduralSkybox.slf @@ -39,7 +39,4 @@ void main(void) { // Procedural Shaders are expected to be Gamma corrected so let's bring back the RGB in linear space for the rest of the pipeline color = pow(color, vec3(2.2)); _fragColor = vec4(color, 0.0); - - // FIXME: scribe does not yet scrub out else statements - return; } diff --git a/libraries/render-utils/src/parabola.slv b/libraries/render-utils/src/parabola.slv index 50b5999450..0948b2ab47 100644 --- a/libraries/render-utils/src/parabola.slv +++ b/libraries/render-utils/src/parabola.slv @@ -12,7 +12,7 @@ <@include gpu/Transform.slh@> <$declareStandardTransform()$> -layout(std140, binding=0) uniform parabolaData { +struct ParabolaData { vec3 velocity; float parabolicDistance; vec3 acceleration; @@ -20,34 +20,38 @@ layout(std140, binding=0) uniform parabolaData { vec4 color; int numSections; ivec3 spare; +} + +layout(std140, binding=0) uniform parabolaData { + ParabolaData _parabolaData; }; layout(location=0) out vec4 _color; void main(void) { - _color = color; + _color = _parabolaData.color; - float t = parabolicDistance * (float(gl_VertexID / 2) / float(numSections)); + float t = _parabolaData.parabolicDistance * (float(gl_VertexID / 2) / float(_parabolaData.numSections)); - vec4 pos = vec4(velocity * t + 0.5 * acceleration * t * t, 1); + vec4 pos = vec4(_parabolaData.velocity * t + 0.5 * _parabolaData.acceleration * t * t, 1); const float EPSILON = 0.00001; vec4 normal; TransformCamera cam = getTransformCamera(); TransformObject obj = getTransformObject(); - if (dot(acceleration, acceleration) < EPSILON) { + if (dot(_parabolaData.acceleration, _parabolaData.acceleration) < EPSILON) { // Handle case where acceleration == (0, 0, 0) vec3 eyeUp = vec3(0, 1, 0); vec3 worldUp; <$transformEyeToWorldDir(cam, eyeUp, worldUp)$> - normal = vec4(normalize(cross(velocity, worldUp)), 0); + normal = vec4(normalize(cross(_parabolaData.velocity, worldUp)), 0); } else { - normal = vec4(normalize(cross(velocity, acceleration)), 0); + normal = vec4(normalize(cross(_parabolaData.velocity, _parabolaData.acceleration)), 0); } if (gl_VertexID % 2 == 0) { - pos += 0.5 * width * normal; + pos += 0.5 * _parabolaData.width * normal; } else { - pos -= 0.5 * width * normal; + pos -= 0.5 * _parabolaData.width * normal; } <$transformModelToClipPos(cam, obj, pos, gl_Position)$> diff --git a/libraries/render/src/render/DrawSceneOctree.cpp b/libraries/render/src/render/DrawSceneOctree.cpp index b8014b4e4f..f733fa5eb1 100644 --- a/libraries/render/src/render/DrawSceneOctree.cpp +++ b/libraries/render/src/render/DrawSceneOctree.cpp @@ -142,10 +142,6 @@ const gpu::PipelinePointer DrawItemSelection::getDrawItemBoundPipeline() { if (!_drawItemBoundPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawItemBounds); - //_drawItemBoundPosLoc = program->getUniforms().findLocation("inBoundPos"); - //_drawItemBoundDimLoc = program->getUniforms().findLocation("inBoundDim"); - //_drawCellLocationLoc = program->getUniforms().findLocation("inCellLocation"); - auto state = std::make_shared(); state->setDepthTest(true, false, gpu::LESS_EQUAL); @@ -194,10 +190,6 @@ void DrawItemSelection::run(const RenderContextPointer& renderContext, const Ite auto itemCell = scene->getSpatialTree().getCellLocation(item.getCell()); glm::ivec4 cellLocation(0, 0, 0, itemCell.depth); - //batch._glUniform4iv(_drawCellLocationLoc, 1, ((const int*)(&cellLocation))); - //batch._glUniform3fv(_drawItemBoundPosLoc, 1, (const float*)(&itemBound.getCorner())); - //batch._glUniform3fv(_drawItemBoundDimLoc, 1, (const float*)(&itemBound.getScale())); - batch.draw(gpu::LINES, 24, 0); } } @@ -209,10 +201,6 @@ void DrawItemSelection::run(const RenderContextPointer& renderContext, const Ite auto itemCell = scene->getSpatialTree().getCellLocation(item.getCell()); glm::ivec4 cellLocation(0, 0, 1, itemCell.depth); - //batch._glUniform4iv(_drawCellLocationLoc, 1, ((const int*)(&cellLocation))); - //batch._glUniform3fv(_drawItemBoundPosLoc, 1, (const float*)(&itemBound.getCorner())); - //batch._glUniform3fv(_drawItemBoundDimLoc, 1, (const float*)(&itemBound.getScale())); - batch.draw(gpu::LINES, 24, 0); } } @@ -224,10 +212,6 @@ void DrawItemSelection::run(const RenderContextPointer& renderContext, const Ite auto itemCell = scene->getSpatialTree().getCellLocation(item.getCell()); glm::ivec4 cellLocation(0, 0, 0, itemCell.depth); - //batch._glUniform4iv(_drawCellLocationLoc, 1, ((const int*)(&cellLocation))); - //batch._glUniform3fv(_drawItemBoundPosLoc, 1, (const float*)(&itemBound.getCorner())); - //batch._glUniform3fv(_drawItemBoundDimLoc, 1, (const float*)(&itemBound.getScale())); - batch.draw(gpu::LINES, 24, 0); } } @@ -238,9 +222,6 @@ void DrawItemSelection::run(const RenderContextPointer& renderContext, const Ite auto itemBound = item.getBound(); auto itemCell = scene->getSpatialTree().getCellLocation(item.getCell()); glm::ivec4 cellLocation(0, 0, 1, itemCell.depth); - //batch._glUniform4iv(_drawCellLocationLoc, 1, ((const int*)(&cellLocation))); - //batch._glUniform3fv(_drawItemBoundPosLoc, 1, (const float*)(&itemBound.getCorner())); - //batch._glUniform3fv(_drawItemBoundDimLoc, 1, (const float*)(&itemBound.getScale())); batch.draw(gpu::LINES, 24, 0); } diff --git a/libraries/render/src/render/DrawStatus.cpp b/libraries/render/src/render/DrawStatus.cpp index 2894a85a30..1c5ab27507 100644 --- a/libraries/render/src/render/DrawStatus.cpp +++ b/libraries/render/src/render/DrawStatus.cpp @@ -33,9 +33,6 @@ void DrawStatusConfig::dirtyHelper() { const gpu::PipelinePointer DrawStatus::getDrawItemBoundsPipeline() { if (!_drawItemBoundsPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawItemBounds); - //_drawItemBoundPosLoc = program->getUniforms().findLocation("inBoundPos"); - //_drawItemBoundDimLoc = program->getUniforms().findLocation("inBoundDim"); - //_drawItemCellLocLoc = program->getUniforms().findLocation("inCellLocation"); auto state = std::make_shared(); @@ -55,10 +52,6 @@ const gpu::PipelinePointer DrawStatus::getDrawItemBoundsPipeline() { const gpu::PipelinePointer DrawStatus::getDrawItemStatusPipeline() { if (!_drawItemStatusPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::blurGaussianDepthAwareV); - //_drawItemStatusPosLoc = program->getUniforms().findLocation(""); - //_drawItemStatusDimLoc = program->getUniforms().findLocation(""); - //_drawItemStatusValue0Loc = program->getUniforms().findLocation(""); - //_drawItemStatusValue1Loc = program->getUniforms().findLocation(""); auto state = std::make_shared(); From de5c7f6dcd47585110e243778b100e279882eb25 Mon Sep 17 00:00:00 2001 From: MuteTab Date: Mon, 6 Aug 2018 16:02:00 -0700 Subject: [PATCH 178/332] Change lambda for address manager position getter. --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 9b2498138e..82d50c33ab 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1247,7 +1247,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo accountManager->setAuthURL(NetworkingConstants::METAVERSE_SERVER_URL()); // use our MyAvatar position and quat for address manager path - addressManager->setPositionGetter([this]{ return getMyAvatar()->getWorldPosition(); }); + addressManager->setPositionGetter([this]{ return getMyAvatar()->getWorldFeetPosition(); }); addressManager->setOrientationGetter([this]{ return getMyAvatar()->getWorldOrientation(); }); connect(addressManager.data(), &AddressManager::hostChanged, this, &Application::updateWindowTitle); From e5abd9d57da6cd9c000dffa188d20387c117e9b1 Mon Sep 17 00:00:00 2001 From: David Back Date: Mon, 6 Aug 2018 17:03:32 -0700 Subject: [PATCH 179/332] fix server script status event, use [ Getting status ] --- scripts/system/edit.js | 1 + scripts/system/html/js/entityProperties.js | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 90be8f18c6..a24e96cce5 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -2042,6 +2042,7 @@ var PropertiesTool = function (opts) { function updateScriptStatus(info) { info.type = "server_script_status"; webView.emitScriptEvent(JSON.stringify(info)); + createToolsWindow.emitScriptEvent(JSON.stringify(info)); } function resetScriptStatus() { diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index d2cea2d394..8597f4c1bb 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -1671,7 +1671,7 @@ function loaded() { elServerScripts.addEventListener('change', createEmitTextPropertyUpdateFunction('serverScripts')); elServerScripts.addEventListener('change', function() { // invalidate the current status (so that same-same updates can still be observed visually) - elServerScriptStatus.innerText = '[' + elServerScriptStatus.innerText + ']'; + elServerScriptStatus.innerText = "[ Getting status ]"; }); elClearUserData.addEventListener("click", function() { @@ -2145,7 +2145,7 @@ function loaded() { }); elReloadServerScriptsButton.addEventListener("click", function() { // invalidate the current status (so that same-same updates can still be observed visually) - elServerScriptStatus.innerText = '[' + elServerScriptStatus.innerText + ']'; + elServerScriptStatus.innerText = "[ Getting status ]"; EventBridge.emitWebEvent(JSON.stringify({ type: "action", action: "reloadServerScripts" From f9e25d36e7d7f74c3dad7e3d74afa2c00c2c1a8e Mon Sep 17 00:00:00 2001 From: David Back Date: Mon, 6 Aug 2018 17:52:27 -0700 Subject: [PATCH 180/332] use wrapper emitScriptEvent, change to Fetching --- scripts/system/edit.js | 11 +++++++---- scripts/system/html/js/entityProperties.js | 6 ++++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index a24e96cce5..3efa043e5b 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -2038,11 +2038,15 @@ var PropertiesTool = function (opts) { }; that.setVisible(false); + + function emitScriptEvent(data) { + webView.emitScriptEvent(JSON.stringify(data)); + createToolsWindow.emitScriptEvent(JSON.stringify(data)); + } function updateScriptStatus(info) { info.type = "server_script_status"; - webView.emitScriptEvent(JSON.stringify(info)); - createToolsWindow.emitScriptEvent(JSON.stringify(info)); + emitScriptEvent(info); } function resetScriptStatus() { @@ -2095,8 +2099,7 @@ var PropertiesTool = function (opts) { } data.selections = selections; - webView.emitScriptEvent(JSON.stringify(data)); - createToolsWindow.emitScriptEvent(JSON.stringify(data)); + emitScriptEvent(data); } selectionManager.addEventListener(updateSelections); diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index 8597f4c1bb..a21e991596 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -36,6 +36,8 @@ var lastEntityID = null; var MATERIAL_PREFIX_STRING = "mat::"; +var INVALIDATE_SCRIPT_STATUS = "[ Fetching status ]"; + function debugPrint(message) { EventBridge.emitWebEvent( JSON.stringify({ @@ -1671,7 +1673,7 @@ function loaded() { elServerScripts.addEventListener('change', createEmitTextPropertyUpdateFunction('serverScripts')); elServerScripts.addEventListener('change', function() { // invalidate the current status (so that same-same updates can still be observed visually) - elServerScriptStatus.innerText = "[ Getting status ]"; + elServerScriptStatus.innerText = INVALIDATE_SCRIPT_STATUS; }); elClearUserData.addEventListener("click", function() { @@ -2145,7 +2147,7 @@ function loaded() { }); elReloadServerScriptsButton.addEventListener("click", function() { // invalidate the current status (so that same-same updates can still be observed visually) - elServerScriptStatus.innerText = "[ Getting status ]"; + elServerScriptStatus.innerText = INVALIDATE_SCRIPT_STATUS; EventBridge.emitWebEvent(JSON.stringify({ type: "action", action: "reloadServerScripts" From 1ad6b041cd0ebb46eebfd31880ddd797c0db2f61 Mon Sep 17 00:00:00 2001 From: amantley Date: Mon, 6 Aug 2018 18:36:32 -0700 Subject: [PATCH 181/332] updated the elipes equation code for determining the forward speed of the avatar. We can now set the max forward == walkSpeed, max side and backwards == walkBackwardsSpeed and the sprint speed == sprintSpeed --- .../resources/avatar/avatar-animation.json | 10 +++---- interface/src/avatar/MyAvatar.cpp | 30 ++++++++++++++----- interface/src/avatar/MyAvatar.h | 5 ++++ interface/src/ui/Stats.cpp | 3 -- libraries/animation/src/AnimBlendLinear.cpp | 25 +++++++--------- .../animation/src/AnimBlendLinearMove.cpp | 16 ++++++---- libraries/animation/src/Rig.cpp | 13 -------- 7 files changed, 53 insertions(+), 49 deletions(-) diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index 10e841f05d..982d9ab8d2 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -654,7 +654,7 @@ "interpDuration": 6, "interpType": "snapshotPrev", "transitions": [ - { "var": "isNotMoving", "state": "idle" }, + { "var": "isNotMoving", "state": "idleSettle" }, { "var": "isMovingBackward", "state": "walkBwd" }, { "var": "isMovingRight", "state": "strafeRight" }, { "var": "isMovingLeft", "state": "strafeLeft" }, @@ -675,7 +675,7 @@ "interpDuration": 6, "interpType": "snapshotPrev", "transitions": [ - { "var": "isNotMoving", "state": "idle" }, + { "var": "isNotMoving", "state": "idleSettle" }, { "var": "isMovingForward", "state": "walkFwd" }, { "var": "isMovingRight", "state": "strafeRight" }, { "var": "isMovingLeft", "state": "strafeLeft" }, @@ -696,7 +696,7 @@ "interpDuration": 8, "interpType": "snapshotPrev", "transitions": [ - { "var": "isNotMoving", "state": "idle" }, + { "var": "isNotMoving", "state": "idleSettle" }, { "var": "isMovingForward", "state": "walkFwd" }, { "var": "isMovingBackward", "state": "walkBwd" }, { "var": "isMovingLeft", "state": "strafeLeft" }, @@ -717,7 +717,7 @@ "interpDuration": 6, "interpType": "snapshotPrev", "transitions": [ - { "var": "isNotMoving", "state": "idle" }, + { "var": "isNotMoving", "state": "idleSettle" }, { "var": "isMovingForward", "state": "walkFwd" }, { "var": "isMovingBackward", "state": "walkBwd" }, { "var": "isMovingRight", "state": "strafeRight" }, @@ -821,7 +821,7 @@ "interpTarget": 6, "interpDuration": 6, "transitions": [ - { "var": "isNotFlying", "state": "idle" } + { "var": "isNotFlying", "state": "idleSettle" } ] }, { diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index ac6790d241..dff14e8d40 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2336,13 +2336,19 @@ void MyAvatar::updateOrientation(float deltaTime) { } } -static float scaleSpeedByDirection(glm::vec2 velocityDirection, float speed) { - float scale = 1.0f; - float x = sqrtf(1.0f - (velocityDirection.y * velocityDirection.y) / 3.0f); - if (velocityDirection.y > 0.0f) { - scale = 0.5f; +static float scaleSpeedByDirection(glm::vec2 velocityDirection, float forwardSpeed, float backwardSpeed) { + // for the elipse function --> (x^2)*(1/backwardSpeed*backwardSpeed) + y^2/(forwardSpeed*forwardSpeed) = 1, scale == y^2 when x is 0 + float fwdScale = forwardSpeed * forwardSpeed; + float backScale = 1.0f / (backwardSpeed * backwardSpeed); + float scaledX = velocityDirection.x * backwardSpeed; + float scaledSpeed = backwardSpeed; + if (velocityDirection.y < 0.0f) { + float yValue = sqrtf(fwdScale * (1.0f - (scaledX * scaledX * backScale))); + scaledSpeed = sqrtf((scaledX * scaledX) + (yValue * yValue)); + } else { + scaledSpeed = backwardSpeed; } - return scale * speed; + return scaledSpeed; } void MyAvatar::updateActionMotor(float deltaTime) { @@ -2407,8 +2413,7 @@ void MyAvatar::updateActionMotor(float deltaTime) { } else { // we're interacting with a floor --> simple horizontal speed and exponential decay const glm::vec2 currentVel = { direction.x, direction.z }; - float wspd = _walkSpeed.get(); - float scaledSpeed = scaleSpeedByDirection(currentVel, wspd); + float scaledSpeed = scaleSpeedByDirection(currentVel, _walkSpeed.get(), _walkBackwardSpeed.get()); _actionMotorVelocity = getSensorToWorldScale() * (scaledSpeed * _walkSpeedScalar) * direction; } @@ -3418,6 +3423,10 @@ float MyAvatar::getWalkSpeed() const { return _walkSpeed.get() * _walkSpeedScalar; } +float MyAvatar::getWalkBackwardSpeed() const { + return _walkSpeed.get() * _walkSpeedScalar; +} + bool MyAvatar::isReadyForPhysics() const { return qApp->isServerlessMode() || _haveReceivedHeightLimitsFromDomain; } @@ -3430,6 +3439,11 @@ void MyAvatar::setWalkSpeed(float value) { _walkSpeed.set(value); } +void MyAvatar::setWalkBackwardSpeed(float value) { + _walkBackwardSpeed.set(value); +} + + void MyAvatar::setSprintSpeed(float speed) { _sprintSpeed.set(speed); } diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 486e4479be..d1ad22d2aa 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -138,6 +138,7 @@ class MyAvatar : public Avatar { * where MyAvatar.sessionUUID is not available (e.g., if not connected to a domain). Note: Likely to be deprecated. * Read-only. * @property {number} walkSpeed + * @property {number} walkBackwardSpeed * @property {number} sprintSpeed * * @property {Vec3} skeletonOffset - Can be used to apply a translation offset between the avatar's position and the @@ -234,6 +235,7 @@ class MyAvatar : public Avatar { Q_PROPERTY(QUuid SELF_ID READ getSelfID CONSTANT) Q_PROPERTY(float walkSpeed READ getWalkSpeed WRITE setWalkSpeed); + Q_PROPERTY(float walkBackwardSpeed READ getWalkBackwardSpeed WRITE setWalkBackwardSpeed); Q_PROPERTY(float sprintSpeed READ getSprintSpeed WRITE setSprintSpeed); const QString DOMINANT_LEFT_HAND = "left"; @@ -1076,6 +1078,8 @@ public: void setWalkSpeed(float value); float getWalkSpeed() const; + void setWalkBackwardSpeed(float value); + float getWalkBackwardSpeed() const; void setSprintSpeed(float speed); float getSprintSpeed() const; @@ -1735,6 +1739,7 @@ private: // max unscaled forward movement speed ThreadSafeValueCache _walkSpeed { DEFAULT_AVATAR_MAX_WALKING_SPEED }; + ThreadSafeValueCache _walkBackwardSpeed{ 0.5 * DEFAULT_AVATAR_MAX_WALKING_SPEED }; ThreadSafeValueCache _sprintSpeed { AVATAR_SPRINT_SPEED_SCALAR }; float _walkSpeedScalar { AVATAR_WALK_SPEED_SCALAR }; diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index 99ce8b4f03..d94a5bf6fe 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -34,7 +34,6 @@ #include "Util.h" #include "SequenceNumberStats.h" #include "StatTracker.h" -#include "InterfaceLogging.h" HIFI_QML_DEF(Stats) @@ -194,12 +193,10 @@ void Stats::updateStats(bool force) { auto myAvatar = avatarManager->getMyAvatar(); auto rigCopy = myAvatar->getSkeletonModel(); auto animStack = rigCopy->getRig().getAnimStack(); - qCDebug(interfaceapp) << "Animation Stack Begin: "; //check to see if the anim stack has changed _animStackNames.clear(); for (auto animStackIterator = animStack.begin(); animStackIterator != animStack.end(); ++animStackIterator) { - qCDebug(interfaceapp) << "---" << animStackIterator->first << " " << animStackIterator->second; _animStackNames << animStackIterator->first + ": " + QString::number(animStackIterator->second,'f',3); } emit animStackNamesChanged(); diff --git a/libraries/animation/src/AnimBlendLinear.cpp b/libraries/animation/src/AnimBlendLinear.cpp index 50fdb166fc..e2d79f864d 100644 --- a/libraries/animation/src/AnimBlendLinear.cpp +++ b/libraries/animation/src/AnimBlendLinear.cpp @@ -37,27 +37,24 @@ const AnimPoseVec& AnimBlendLinear::evaluate(const AnimVariantMap& animVars, con _poses = _children[0]->evaluate(animVars, context, dt, triggersOut); _animStack[_children[0]->getID()] = parentAlpha; } else { - float clampedAlpha = glm::clamp(_alpha, 0.0f, (float)(_children.size() - 1)); size_t prevPoseIndex = glm::floor(clampedAlpha); size_t nextPoseIndex = glm::ceil(clampedAlpha); - if (prevPoseIndex == nextPoseIndex) { - if (nextPoseIndex == 0) { - nextPoseIndex = 1; - } else { - prevPoseIndex = (nextPoseIndex - 1); - } - } - float alpha = clampedAlpha - (float)prevPoseIndex; + auto alpha = glm::fract(clampedAlpha); evaluateAndBlendChildren(animVars, context, triggersOut, alpha, prevPoseIndex, nextPoseIndex, dt); - float weight2 = _alpha - (float)prevPoseIndex; - float weight1 = 1.0f - weight2; - _animStack[_children[prevPoseIndex]->getID()] = weight1 * parentAlpha; - if (nextPoseIndex < _children.size()) { + // weights are for animation stack debug purposes only. + float weight1 = 0.0f; + float weight2 = 0.0f; + if (prevPoseIndex == nextPoseIndex) { + weight2 = 1.0f; + _animStack[_children[nextPoseIndex]->getID()] = weight2 * parentAlpha; + } else { + weight2 = alpha; + weight1 = 1.0f - weight2; + _animStack[_children[prevPoseIndex]->getID()] = weight1 * parentAlpha; _animStack[_children[nextPoseIndex]->getID()] = weight2 * parentAlpha; } - } processOutputJoints(triggersOut); diff --git a/libraries/animation/src/AnimBlendLinearMove.cpp b/libraries/animation/src/AnimBlendLinearMove.cpp index f17ac3defe..5084a45f68 100644 --- a/libraries/animation/src/AnimBlendLinearMove.cpp +++ b/libraries/animation/src/AnimBlendLinearMove.cpp @@ -67,8 +67,6 @@ const AnimPoseVec& AnimBlendLinearMove::evaluate(const AnimVariantMap& animVars, _animStack["speed"] = speed; - qCDebug(animation) << "speed is now: " << speed; - if (_children.size() == 0) { for (auto&& pose : _poses) { pose = AnimPose::identity; @@ -90,10 +88,16 @@ const AnimPoseVec& AnimBlendLinearMove::evaluate(const AnimVariantMap& animVars, setFrameAndPhase(dt, alpha, prevPoseIndex, nextPoseIndex, &prevDeltaTime, &nextDeltaTime, triggersOut); evaluateAndBlendChildren(animVars, context, triggersOut, alpha, prevPoseIndex, nextPoseIndex, prevDeltaTime, nextDeltaTime); - float weight2 = alpha; - float weight1 = 1.0f - weight2; - _animStack[_children[prevPoseIndex]->getID()] = weight1 * parentAlpha; - if ((int)nextPoseIndex < _children.size()) { + // weights are for animation stack debug purposes only. + float weight1 = 0.0f; + float weight2 = 0.0f; + if (prevPoseIndex == nextPoseIndex) { + weight2 = 1.0f; + _animStack[_children[nextPoseIndex]->getID()] = weight2 * parentAlpha; + } else { + weight2 = alpha; + weight1 = 1.0f - weight2; + _animStack[_children[prevPoseIndex]->getID()] = weight1 * parentAlpha; _animStack[_children[nextPoseIndex]->getID()] = weight2 * parentAlpha; } } diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 3ab8dfe8ff..5c3305e05c 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -815,19 +815,6 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isInAirRun", false); _animVars.set("isNotInAir", true); - if (false) { - // if we are changing anim states. - //reset the average speed to the current reading of speed - qCDebug(animation) << "reset the average movement speeds"; - _averageForwardSpeed.reset(); - _averageLateralSpeed.reset(); - _averageForwardSpeed.updateAverage(forwardSpeed); - _averageLateralSpeed.updateAverage(lateralSpeed); - _animVars.set("moveForwardSpeed", _averageForwardSpeed.getAverage()); - _animVars.set("moveBackwardSpeed", -_averageForwardSpeed.getAverage()); - _animVars.set("moveLateralSpeed", fabsf(_averageLateralSpeed.getAverage())); - } - } else if (_state == RigRole::Turn) { if (turningSpeed > 0.0f) { // turning right From d04ac2b8edbd46125e9d795145162edd5f576f14 Mon Sep 17 00:00:00 2001 From: MuteTab Date: Mon, 6 Aug 2018 19:40:47 -0700 Subject: [PATCH 182/332] Fixed jsdoc comments for Avatar::getWorldFeetPosition --- libraries/avatars-renderer/src/avatars-renderer/Avatar.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index 5a12e0ffef..919a13095f 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -251,8 +251,8 @@ public: float computeMass(); /**jsdoc * Get the position of the current avatar's feet (or rather, bottom of its collision capsule) in world coordinates. - * @function MyAvatar.getWorldFeetPosition() - * @returns {Vec3} + * @function MyAvatar.getWorldFeetPosition + * @returns {Vec3} The position of the Avatar's feet in world coordinates. */ Q_INVOKABLE glm::vec3 getWorldFeetPosition(); From b590ff793a867169a03d6c518c7b736f7faecb1f Mon Sep 17 00:00:00 2001 From: MuteTab Date: Mon, 6 Aug 2018 20:26:44 -0700 Subject: [PATCH 183/332] New function for changing location in domains such that the AVatar's leg-length is taken into account. --- interface/src/avatar/MyAvatar.cpp | 50 ++++++++++++++++++++++++++++++- interface/src/avatar/MyAvatar.h | 14 +++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 3f738ea4cb..5a5d99d6f0 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -154,7 +154,7 @@ MyAvatar::MyAvatar(QThread* thread) : // connect to AddressManager signal for location jumps connect(DependencyManager::get().data(), &AddressManager::locationChangeRequired, - this, static_cast(&MyAvatar::goToLocation)); + this, static_cast(&MyAvatar::goToFeetLocation)); // handle scale constraints imposed on us by the domain-server auto& domainHandler = DependencyManager::get()->getDomainHandler(); @@ -2623,6 +2623,54 @@ void MyAvatar::goToLocation(const QVariant& propertiesVar) { } } +void MyAvatar::goToFeetLocation(const glm::vec3& newPosition, + bool hasOrientation, const glm::quat& newOrientation, + bool shouldFaceLocation) { + + qCDebug(interfaceapp).nospace() << "MyAvatar goToFeetLocation - moving to " << newPosition.x << ", " + << newPosition.y << ", " << newPosition.z; + + ShapeInfo shapeInfo; + computeShapeInfo(shapeInfo); + glm::vec3 halfExtents = shapeInfo.getHalfExtents(); + glm::vec3 localFeetPos = shapeInfo.getOffset() - glm::vec3(0.0f, halfExtents.y + halfExtents.x, 0.0f); + glm::mat4 localFeet = createMatFromQuatAndPos(Quaternions::IDENTITY, localFeetPos); + + glm::mat4 worldFeet; + if (hasOrientation) { + worldFeet = createMatFromQuatAndPos(newOrientation, newPosition); + } else { + worldFeet = createMatFromQuatAndPos(Quaternions::IDENTITY, newPosition); + } + + glm::mat4 avatarMat = worldFeet * glm::inverse(localFeet); + + glm::vec3 adjustedPosition = extractTranslation(avatarMat); + + _goToPending = true; + _goToPosition = adjustedPosition; + _goToOrientation = getWorldOrientation(); + if (hasOrientation) { + qCDebug(interfaceapp).nospace() << "MyAvatar goToFeetLocation - new orientation is " + << newOrientation.x << ", " << newOrientation.y << ", " << newOrientation.z << ", " << newOrientation.w; + + // orient the user to face the target + glm::quat quatOrientation = cancelOutRollAndPitch(newOrientation); + + if (shouldFaceLocation) { + quatOrientation = newOrientation * glm::angleAxis(PI, Vectors::UP); + + // move the user a couple units away + const float DISTANCE_TO_USER = 2.0f; + _goToPosition = adjustedPosition - quatOrientation * IDENTITY_FORWARD * DISTANCE_TO_USER; + } + + _goToOrientation = quatOrientation; + } + + emit transformChanged(); +} + void MyAvatar::goToLocation(const glm::vec3& newPosition, bool hasOrientation, const glm::quat& newOrientation, bool shouldFaceLocation) { diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index d36e43ca25..b34eb4386d 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -1133,6 +1133,20 @@ public slots: */ float getGravity(); + /**jsdoc + * Move the avatar to a new position and/or orientation in the domain, while taking into account Avatar leg-length. + * @function MyAvatar.goToFeetLocation + * @param {Vec3} position - The new position for the avatar, in world coordinates. + * @param {boolean} [hasOrientation=false] - Set to true to set the orientation of the avatar. + * @param {Quat} [orientation=Quat.IDENTITY] - The new orientation for the avatar. + * @param {boolean} [shouldFaceLocation=false] - Set to true to position the avatar a short distance away from + * the new position and orientate the avatar to face the position. + */ + + void goToFeetLocation(const glm::vec3& newPosition, + bool hasOrientation, const glm::quat& newOrientation, + bool shouldFaceLocation); + /**jsdoc * Move the avatar to a new position and/or orientation in the domain. * @function MyAvatar.goToLocation From c9c23b8db3daad1296f531b4528d4354f441c24e Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 7 Aug 2018 15:34:17 +1200 Subject: [PATCH 184/332] Fix entity stay highlighted after hand leaves when far grabbing another --- .../controllers/controllerModules/nearParentGrabEntity.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/system/controllers/controllerModules/nearParentGrabEntity.js b/scripts/system/controllers/controllerModules/nearParentGrabEntity.js index a0a4608fbc..fe6497ff05 100644 --- a/scripts/system/controllers/controllerModules/nearParentGrabEntity.js +++ b/scripts/system/controllers/controllerModules/nearParentGrabEntity.js @@ -100,6 +100,7 @@ Script.include("/~/system/libraries/controllers.js"); this.startNearParentingGrabEntity = function (controllerData, targetProps) { Controller.triggerHapticPulse(HAPTIC_PULSE_STRENGTH, HAPTIC_PULSE_DURATION, this.hand); unhighlightTargetEntity(this.targetEntityID); + this.highlightedEntity = null; var message = { hand: this.hand, entityID: this.targetEntityID @@ -177,6 +178,7 @@ Script.include("/~/system/libraries/controllers.js"); joint: this.hand === RIGHT_HAND ? "RightHand" : "LeftHand" })); unhighlightTargetEntity(this.targetEntityID); + this.highlightedEntity = null; this.grabbing = false; this.targetEntityID = null; this.robbed = false; @@ -304,6 +306,10 @@ Script.include("/~/system/libraries/controllers.js"); return makeRunningValues(true, [this.targetEntityID], []); } } else { + if (this.highlightedEntity) { + unhighlightTargetEntity(this.highlightedEntity); + this.highlightedEntity = null; + } this.hapticTargetID = null; this.robbed = false; return makeRunningValues(false, [], []); @@ -322,6 +328,7 @@ Script.include("/~/system/libraries/controllers.js"); if (!props) { // entity was deleted unhighlightTargetEntity(this.targetEntityID); + this.highlightedEntity = NULL; this.grabbing = false; this.targetEntityID = null; this.hapticTargetID = null; @@ -344,6 +351,7 @@ Script.include("/~/system/libraries/controllers.js"); if (!readiness.active) { this.robbed = false; unhighlightTargetEntity(this.highlightedEntity); + this.highlightedEntity = null; return readiness; } if (controllerData.triggerClicks[this.hand] || controllerData.secondaryValues[this.hand] > BUMPER_ON_VALUE) { From 1aa9fcd41a4f20cd20f5720c79bd90c700c0e306 Mon Sep 17 00:00:00 2001 From: r3tk0n <39922250+r3tk0n@users.noreply.github.com> Date: Mon, 6 Aug 2018 21:23:06 -0700 Subject: [PATCH 185/332] Fix a typo In jsdoc comments for getWorldFeetPosition() in Avatar.h --- libraries/avatars-renderer/src/avatars-renderer/Avatar.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index 919a13095f..c6e8ac59f1 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -252,7 +252,7 @@ public: /**jsdoc * Get the position of the current avatar's feet (or rather, bottom of its collision capsule) in world coordinates. * @function MyAvatar.getWorldFeetPosition - * @returns {Vec3} The position of the Avatar's feet in world coordinates. + * @returns {Vec3} The position of the avatar's feet in world coordinates. */ Q_INVOKABLE glm::vec3 getWorldFeetPosition(); From 5bb9accd306cd737f03fcb30614eb2984d300637 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Tue, 7 Aug 2018 10:57:51 -0300 Subject: [PATCH 186/332] Fix low volume issue in Samsung Make Qt use QT_ANDROID_PRESET_VOICE_RECOGNITION device in order to set SL_ANDROID_RECORDING_PRESET_VOICE_RECOGNITION in OpenSL ES --- libraries/audio-client/src/AudioClient.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index 85ceece702..c6c6463cef 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -53,6 +53,7 @@ #include "AudioHelpers.h" #if defined(Q_OS_ANDROID) +#define VOICE_RECOGNITION "voicerecognition" #include #endif @@ -465,7 +466,16 @@ QAudioDeviceInfo defaultAudioDeviceForMode(QAudio::Mode mode) { return getNamedAudioDeviceForMode(mode, deviceName); #endif - +#if defined (Q_OS_ANDROID) + if (mode == QAudio::AudioInput) { + auto inputDevices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput); + for (auto inputDevice : inputDevices) { + if (inputDevice.deviceName() == VOICE_RECOGNITION) { + return inputDevice; + } + } + } +#endif // fallback for failed lookup is the default device return (mode == QAudio::AudioInput) ? QAudioDeviceInfo::defaultInputDevice() : QAudioDeviceInfo::defaultOutputDevice(); } @@ -486,15 +496,6 @@ bool nativeFormatForAudioDevice(const QAudioDeviceInfo& audioDevice, audioFormat.setSampleType(QAudioFormat::SignedInt); audioFormat.setByteOrder(QAudioFormat::LittleEndian); -#if defined(Q_OS_ANDROID) - // Using the HW sample rate (AUDIO_INPUT_FLAG_FAST) in some samsung phones causes a low volume at input stream - // Changing the sample rate forces a resampling that (in samsung) amplifies +18 dB - QAndroidJniObject brand = QAndroidJniObject::getStaticObjectField("android/os/Build", "BRAND"); - if (audioDevice == QAudioDeviceInfo::defaultInputDevice() && brand.toString().contains("samsung", Qt::CaseInsensitive)) { - audioFormat.setSampleRate(24000); - } -#endif - if (!audioDevice.isFormatSupported(audioFormat)) { qCWarning(audioclient) << "The native format is" << audioFormat << "but isFormatSupported() failed."; return false; From cb215d3190971bc7a9343dc136d8ed25efcd7f21 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Tue, 7 Aug 2018 11:49:56 -0300 Subject: [PATCH 187/332] Set audio buffer size to 20 ms for android CALLBACK_ACCELERATOR_RATIO = 0.5 --- libraries/audio-client/src/AudioClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index c6c6463cef..6ac30e7f73 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -1850,7 +1850,7 @@ const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 2.0f; #endif #ifdef Q_OS_ANDROID -const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 1.0f; +const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 0.5f; #elif defined(Q_OS_LINUX) const float AudioClient::CALLBACK_ACCELERATOR_RATIO = 2.0f; #endif From 95c32c8e4504ff0d56b43f82a546a094dde2f855 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Tue, 7 Aug 2018 17:23:49 +0200 Subject: [PATCH 188/332] fix reset triggerable checkbox --- scripts/system/html/js/entityProperties.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index d2cea2d394..daa5626ddb 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -980,7 +980,7 @@ function loaded() { elCollideOtherAvatar.checked = false; elGrabbable.checked = false; - elWantsTrigger.checked = false; + elTriggerable.checked = false; elIgnoreIK.checked = false; elCloneable.checked = false; From 82029b4cb011df2cb85a1e1bb3813b267879426e Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 6 Aug 2018 18:34:57 -0700 Subject: [PATCH 189/332] fix v1 and transparent procedurals --- .../src/RenderableShapeEntityItem.cpp | 4 +- libraries/render-utils/src/forward_simple.slf | 4 +- .../src/forward_simple_transparent.slf | 93 ------------------- libraries/render-utils/src/simple.slf | 4 +- .../render-utils/src/simple_transparent.slf | 32 ++++--- 5 files changed, 25 insertions(+), 112 deletions(-) delete mode 100644 libraries/render-utils/src/forward_simple_transparent.slf diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp index a1b0eaf9e6..02dc6008a3 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp @@ -35,9 +35,7 @@ ShapeEntityRenderer::ShapeEntityRenderer(const EntityItemPointer& entity) : Pare _procedural._vertexSource = gpu::Shader::getVertexShaderSource(shader::render_utils::vertex::simple); // FIXME: Setup proper uniform slots and use correct pipelines for forward rendering _procedural._opaquefragmentSource = gpu::Shader::getFragmentShaderSource(shader::render_utils::fragment::simple); - // FIXME: Transparent procedural entities only seem to work if they use the opaque pipelines - //_procedural._transparentfragmentSource = simple_transparent_frag::getSource(); - _procedural._transparentfragmentSource = _procedural._opaquefragmentSource; + _procedural._transparentfragmentSource = gpu::Shader::getFragmentShaderSource(shader::render_utils::fragment::simple_transparent); _procedural._opaqueState->setCullMode(gpu::State::CULL_NONE); _procedural._opaqueState->setDepthTest(true, true, gpu::LESS_EQUAL); PrepareStencil::testMaskDrawShape(*_procedural._opaqueState); diff --git a/libraries/render-utils/src/forward_simple.slf b/libraries/render-utils/src/forward_simple.slf index 2c1be14080..ca3a13c024 100644 --- a/libraries/render-utils/src/forward_simple.slf +++ b/libraries/render-utils/src/forward_simple.slf @@ -51,9 +51,9 @@ void main(void) { #ifdef PROCEDURAL #ifdef PROCEDURAL_V1 - specular = getProceduralColor().rgb; + diffuse = getProceduralColor().rgb; // Procedural Shaders are expected to be Gamma corrected so let's bring back the RGB in linear space for the rest of the pipeline - //specular = pow(specular, vec3(2.2)); + //diffuse = pow(diffuse, vec3(2.2)); emissiveAmount = 1.0; #else emissiveAmount = getProceduralColors(diffuse, specular, shininess); diff --git a/libraries/render-utils/src/forward_simple_transparent.slf b/libraries/render-utils/src/forward_simple_transparent.slf deleted file mode 100644 index f8390d6253..0000000000 --- a/libraries/render-utils/src/forward_simple_transparent.slf +++ /dev/null @@ -1,93 +0,0 @@ -<@include gpu/Config.slh@> -<$VERSION_HEADER$> -// Generated on <$_SCRIBE_DATE$> -// -// forward_simple_transparent.frag -// fragment shader -// -// Created by Andrzej Kapolka on 9/15/14. -// Copyright 2014 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// -<@include DefaultMaterials.slh@> - -<@include ForwardGlobalLight.slh@> -<$declareEvalGlobalLightingAlphaBlended()$> - -// the interpolated normal -layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; -#define _texCoord0 _texCoord01.xy -#define _texCoord1 _texCoord01.zw -layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; -layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; - -// For retro-compatibility -#define _normal _normalWS -#define _modelNormal _normalMS -#define _position _positionMS -#define _eyePosition _positionES - -layout(location=0) out vec4 _fragColor0; - -//PROCEDURAL_COMMON_BLOCK - -#line 1001 -//PROCEDURAL_BLOCK - -#line 2030 -void main(void) { - vec3 normal = normalize(_normalWS.xyz); - vec3 diffuse = _color.rgb; - vec3 specular = DEFAULT_SPECULAR; - float shininess = DEFAULT_SHININESS; - float emissiveAmount = 0.0; - -#ifdef PROCEDURAL - -#ifdef PROCEDURAL_V1 - specular = getProceduralColor().rgb; - // Procedural Shaders are expected to be Gamma corrected so let's bring back the RGB in linear space for the rest of the pipeline - //specular = pow(specular, vec3(2.2)); - emissiveAmount = 1.0; -#else - emissiveAmount = getProceduralColors(diffuse, specular, shininess); -#endif - -#endif - - TransformCamera cam = getTransformCamera(); - vec3 fragPosition = _positionES.xyz; - - if (emissiveAmount > 0.0) { - _fragColor0 = vec4(evalGlobalLightingAlphaBlendedWithHaze( - cam._viewInverse, - 1.0, - DEFAULT_OCCLUSION, - fragPosition, - normal, - specular, - DEFAULT_FRESNEL, - DEFAULT_METALLIC, - DEFAULT_EMISSIVE, - DEFAULT_ROUGHNESS, _color.a), - _color.a); - } else { - _fragColor0 = vec4(evalGlobalLightingAlphaBlendedWithHaze( - cam._viewInverse, - 1.0, - DEFAULT_OCCLUSION, - fragPosition, - normal, - diffuse, - DEFAULT_FRESNEL, - DEFAULT_METALLIC, - DEFAULT_EMISSIVE, - DEFAULT_ROUGHNESS, _color.a), - _color.a); - } -} diff --git a/libraries/render-utils/src/simple.slf b/libraries/render-utils/src/simple.slf index 04ffade2fa..a7f5151880 100644 --- a/libraries/render-utils/src/simple.slf +++ b/libraries/render-utils/src/simple.slf @@ -48,9 +48,9 @@ void main(void) { #ifdef PROCEDURAL #ifdef PROCEDURAL_V1 - specular = getProceduralColor().rgb; + diffuse = getProceduralColor().rgb; // Procedural Shaders are expected to be Gamma corrected so let's bring back the RGB in linear space for the rest of the pipeline - //specular = pow(specular, vec3(2.2)); + //diffuse = pow(diffuse, vec3(2.2)); emissiveAmount = 1.0; #else emissiveAmount = getProceduralColors(diffuse, specular, shininess); diff --git a/libraries/render-utils/src/simple_transparent.slf b/libraries/render-utils/src/simple_transparent.slf index f81c06390c..5db54aa770 100644 --- a/libraries/render-utils/src/simple_transparent.slf +++ b/libraries/render-utils/src/simple_transparent.slf @@ -11,8 +11,10 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include DefaultMaterials.slh@> -<@include DeferredBufferWrite.slh@> +<@include DeferredGlobalLight.slh@> +<$declareEvalGlobalLightingAlphaBlendedWithHaze()$> <@include render-utils/ShaderConstants.h@> @@ -26,6 +28,8 @@ layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; +layout(location=0) out vec4 _fragColor0; + // For retro-compatibility #define _normal _normalWS #define _modelNormal _normalMS @@ -48,9 +52,9 @@ void main(void) { #ifdef PROCEDURAL #ifdef PROCEDURAL_V1 - specular = getProceduralColor().rgb; + diffuse = getProceduralColor().rgb; // Procedural Shaders are expected to be Gamma corrected so let's bring back the RGB in linear space for the rest of the pipeline - //specular = pow(specular, vec3(2.2)); + //diffuse = pow(diffuse, vec3(2.2)); emissiveAmount = 1.0; #else emissiveAmount = getProceduralColors(diffuse, specular, shininess); @@ -58,19 +62,23 @@ void main(void) { #endif + TransformCamera cam = getTransformCamera(); + vec3 fragPosition = _positionES.xyz; + if (emissiveAmount > 0.0) { - packDeferredFragmentTranslucent( - normal, - _color.a, - specular, - DEFAULT_FRESNEL, - DEFAULT_ROUGHNESS); + _fragColor0 = vec4(diffuse, _color.a); } else { - packDeferredFragmentTranslucent( + _fragColor0 = vec4(evalGlobalLightingAlphaBlendedWithHaze( + cam._viewInverse, + 1.0, + DEFAULT_OCCLUSION, + fragPosition, normal, - _color.a, diffuse, DEFAULT_FRESNEL, - DEFAULT_ROUGHNESS); + length(specular), + DEFAULT_EMISSIVE, + max(0.0, 1.0 - shininess / 128.0), _color.a), + _color.a); } } From 61fdce9c116522b5ae90065d66fc5c10c313711a Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 7 Aug 2018 09:46:10 -0700 Subject: [PATCH 190/332] Fix duplicating multiple entities causing infinite looping --- scripts/system/libraries/entitySelectionTool.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/system/libraries/entitySelectionTool.js b/scripts/system/libraries/entitySelectionTool.js index 61e4a53887..b04f7f981b 100644 --- a/scripts/system/libraries/entitySelectionTool.js +++ b/scripts/system/libraries/entitySelectionTool.js @@ -260,8 +260,8 @@ SelectionManager = (function() { // Re-apply actions from the original entity var actionIDs = Entities.getActionIDs(properties.id); - for (var i = 0; i < actionIDs.length; ++i) { - var actionID = actionIDs[i]; + for (var j = 0; j < actionIDs.length; ++j) { + var actionID = actionIDs[j]; var actionArguments = Entities.getActionArguments(properties.id, actionID); if (actionArguments) { var type = actionArguments.type; From 174519e86e3e30918144f519f3da1f5e62065d25 Mon Sep 17 00:00:00 2001 From: David Back Date: Tue, 7 Aug 2018 09:56:51 -0700 Subject: [PATCH 191/332] fix reselecting same entity in list --- scripts/system/html/js/entityList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/html/js/entityList.js b/scripts/system/html/js/entityList.js index a8c0e22ae6..626529d62d 100644 --- a/scripts/system/html/js/entityList.js +++ b/scripts/system/html/js/entityList.js @@ -91,7 +91,7 @@ function loaded() { function onRowClicked(clickEvent) { var id = this.dataset.entityId; var selection = [this.dataset.entityId]; - if (clickEvent.ctrlKey) { + if (clickEvent.ctrlKey && selectedEntities.indexOf(id) === -1) { selection = selection.concat(selectedEntities); } else if (clickEvent.shiftKey && selectedEntities.length > 0) { var previousItemFound = -1; From d88615219c6444af2214f89542bfd4ba9752ea3a Mon Sep 17 00:00:00 2001 From: David Back Date: Tue, 7 Aug 2018 10:19:48 -0700 Subject: [PATCH 192/332] CR changes --- scripts/system/edit.js | 5 +++-- scripts/system/html/js/entityProperties.js | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 3efa043e5b..fe790480f6 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -2040,8 +2040,9 @@ var PropertiesTool = function (opts) { that.setVisible(false); function emitScriptEvent(data) { - webView.emitScriptEvent(JSON.stringify(data)); - createToolsWindow.emitScriptEvent(JSON.stringify(data)); + var dataString = JSON.stringify(data); + webView.emitScriptEvent(dataString); + createToolsWindow.emitScriptEvent(dataString); } function updateScriptStatus(info) { diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index a21e991596..ac0bf6ff1e 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -36,7 +36,7 @@ var lastEntityID = null; var MATERIAL_PREFIX_STRING = "mat::"; -var INVALIDATE_SCRIPT_STATUS = "[ Fetching status ]"; +var PENDING_SCRIPT_STATUS = "[ Fetching status ]"; function debugPrint(message) { EventBridge.emitWebEvent( @@ -1673,7 +1673,7 @@ function loaded() { elServerScripts.addEventListener('change', createEmitTextPropertyUpdateFunction('serverScripts')); elServerScripts.addEventListener('change', function() { // invalidate the current status (so that same-same updates can still be observed visually) - elServerScriptStatus.innerText = INVALIDATE_SCRIPT_STATUS; + elServerScriptStatus.innerText = PENDING_SCRIPT_STATUS; }); elClearUserData.addEventListener("click", function() { @@ -2147,7 +2147,7 @@ function loaded() { }); elReloadServerScriptsButton.addEventListener("click", function() { // invalidate the current status (so that same-same updates can still be observed visually) - elServerScriptStatus.innerText = INVALIDATE_SCRIPT_STATUS; + elServerScriptStatus.innerText = PENDING_SCRIPT_STATUS; EventBridge.emitWebEvent(JSON.stringify({ type: "action", action: "reloadServerScripts" From 9c96a10f6cf0c60eb39cab3ea3e7460d0dcda0a5 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Tue, 7 Aug 2018 19:35:49 +0200 Subject: [PATCH 193/332] Fix for angularVelocity zeroing out on duplication or undo --- scripts/system/libraries/entitySelectionTool.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/scripts/system/libraries/entitySelectionTool.js b/scripts/system/libraries/entitySelectionTool.js index 61e4a53887..683ef6e1dc 100644 --- a/scripts/system/libraries/entitySelectionTool.js +++ b/scripts/system/libraries/entitySelectionTool.js @@ -28,6 +28,17 @@ Script.include([ SelectionManager = (function() { var that = {}; + /** + * @description Removes known to be broken properties from a properties object + * @param properties + * @return properties + */ + var fixRemoveBrokenProperties = function (properties) { + // Reason: Entity property is always set to 0,0,0 which causes it to override angularVelocity (see MS17131) + delete properties.localAngularVelocity; + return properties; + } + // FUNCTION: SUBSCRIBE TO UPDATE MESSAGES function subscribeToUpdateMessages() { Messages.subscribe("entityToolUpdates"); @@ -118,7 +129,7 @@ SelectionManager = (function() { that.savedProperties = {}; for (var i = 0; i < that.selections.length; i++) { var entityID = that.selections[i]; - that.savedProperties[entityID] = Entities.getEntityProperties(entityID); + that.savedProperties[entityID] = fixRemoveBrokenProperties(Entities.getEntityProperties(entityID)); } }; @@ -246,7 +257,7 @@ SelectionManager = (function() { var originalEntityID = entitiesToDuplicate[i]; var properties = that.savedProperties[originalEntityID]; if (properties === undefined) { - properties = Entities.getEntityProperties(originalEntityID); + properties = fixRemoveBrokenProperties(Entities.getEntityProperties(originalEntityID)); } if (!properties.locked && (!properties.clientOnly || properties.owningAvatarID === MyAvatar.sessionUUID)) { if (nonDynamicEntityIsBeingGrabbedByAvatar(properties)) { From 84619e7adc4642c5df0e42cb0b4213b2ce72b4db Mon Sep 17 00:00:00 2001 From: amantley Date: Tue, 7 Aug 2018 10:40:11 -0700 Subject: [PATCH 194/332] cleaned up to match coding standards --- interface/src/avatar/MyAvatar.cpp | 19 ++++++----- interface/src/avatar/MyAvatar.h | 4 +-- interface/src/ui/Stats.cpp | 6 ++-- libraries/animation/src/AnimNode.h | 2 +- libraries/animation/src/AnimStateMachine.cpp | 3 +- libraries/animation/src/Rig.cpp | 34 +++++--------------- 6 files changed, 26 insertions(+), 42 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index dff14e8d40..17771f562c 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2336,15 +2336,17 @@ void MyAvatar::updateOrientation(float deltaTime) { } } -static float scaleSpeedByDirection(glm::vec2 velocityDirection, float forwardSpeed, float backwardSpeed) { - // for the elipse function --> (x^2)*(1/backwardSpeed*backwardSpeed) + y^2/(forwardSpeed*forwardSpeed) = 1, scale == y^2 when x is 0 +static float scaleSpeedByDirection(const glm::vec2 velocityDirection, const float forwardSpeed, const float backwardSpeed) { + // for the elipse function --> (x^2)/(backwardSpeed*backwardSpeed) + y^2/(forwardSpeed*forwardSpeed) = 1, scale == y^2 when x is 0 float fwdScale = forwardSpeed * forwardSpeed; - float backScale = 1.0f / (backwardSpeed * backwardSpeed); + float backScale = backwardSpeed * backwardSpeed; float scaledX = velocityDirection.x * backwardSpeed; - float scaledSpeed = backwardSpeed; + float scaledSpeed = forwardSpeed; if (velocityDirection.y < 0.0f) { - float yValue = sqrtf(fwdScale * (1.0f - (scaledX * scaledX * backScale))); - scaledSpeed = sqrtf((scaledX * scaledX) + (yValue * yValue)); + if (backScale > 0.0f) { + float yValue = sqrtf(fwdScale * (1.0f - ((scaledX * scaledX) / backScale))); + scaledSpeed = sqrtf((scaledX * scaledX) + (yValue * yValue)); + } } else { scaledSpeed = backwardSpeed; } @@ -2414,6 +2416,7 @@ void MyAvatar::updateActionMotor(float deltaTime) { // we're interacting with a floor --> simple horizontal speed and exponential decay const glm::vec2 currentVel = { direction.x, direction.z }; float scaledSpeed = scaleSpeedByDirection(currentVel, _walkSpeed.get(), _walkBackwardSpeed.get()); + // _walkSpeedScalar is a multiplier if we are in sprint mode, otherwise 1.0 _actionMotorVelocity = getSensorToWorldScale() * (scaledSpeed * _walkSpeedScalar) * direction; } @@ -3444,8 +3447,8 @@ void MyAvatar::setWalkBackwardSpeed(float value) { } -void MyAvatar::setSprintSpeed(float speed) { - _sprintSpeed.set(speed); +void MyAvatar::setSprintSpeed(float value) { + _sprintSpeed.set(value); } float MyAvatar::getSprintSpeed() const { diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index d1ad22d2aa..a1f2524228 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -1080,7 +1080,7 @@ public: float getWalkSpeed() const; void setWalkBackwardSpeed(float value); float getWalkBackwardSpeed() const; - void setSprintSpeed(float speed); + void setSprintSpeed(float value); float getSprintSpeed() const; QVector getScriptUrls(); @@ -1739,7 +1739,7 @@ private: // max unscaled forward movement speed ThreadSafeValueCache _walkSpeed { DEFAULT_AVATAR_MAX_WALKING_SPEED }; - ThreadSafeValueCache _walkBackwardSpeed{ 0.5 * DEFAULT_AVATAR_MAX_WALKING_SPEED }; + ThreadSafeValueCache _walkBackwardSpeed{ DEFAULT_AVATAR_MAX_WALKING_SPEED }; ThreadSafeValueCache _sprintSpeed { AVATAR_SPRINT_SPEED_SCALAR }; float _walkSpeedScalar { AVATAR_WALK_SPEED_SCALAR }; diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index d94a5bf6fe..ce5cfd57fa 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -191,13 +191,11 @@ void Stats::updateStats(bool force) { // Third column, avatar stats auto myAvatar = avatarManager->getMyAvatar(); - auto rigCopy = myAvatar->getSkeletonModel(); - auto animStack = rigCopy->getRig().getAnimStack(); + auto animStack = myAvatar->getSkeletonModel()->getRig().getAnimStack(); - //check to see if the anim stack has changed _animStackNames.clear(); for (auto animStackIterator = animStack.begin(); animStackIterator != animStack.end(); ++animStackIterator) { - _animStackNames << animStackIterator->first + ": " + QString::number(animStackIterator->second,'f',3); + _animStackNames << animStackIterator->first + ": " + QString::number(animStackIterator->second,'f',3); } emit animStackNamesChanged(); diff --git a/libraries/animation/src/AnimNode.h b/libraries/animation/src/AnimNode.h index 6efdd2d0c0..1f14889ce4 100644 --- a/libraries/animation/src/AnimNode.h +++ b/libraries/animation/src/AnimNode.h @@ -127,7 +127,7 @@ protected: std::weak_ptr _parent; std::vector _outputJointNames; - //global available to Stats.h + // global available to Stats.h static std::map _animStack; // no copies diff --git a/libraries/animation/src/AnimStateMachine.cpp b/libraries/animation/src/AnimStateMachine.cpp index a9f5e62e3a..90fd425ae5 100644 --- a/libraries/animation/src/AnimStateMachine.cpp +++ b/libraries/animation/src/AnimStateMachine.cpp @@ -33,6 +33,7 @@ const AnimPoseVec& AnimStateMachine::evaluate(const AnimVariantMap& animVars, co bool foundState = false; for (auto& state : _states) { if (state->getID() == desiredStateID) { + // parenthesis means previous state, which is a snapshot. _previousStateID = "(" + _currentState->getID() + ")"; switchState(animVars, context, state); foundState = true; @@ -47,7 +48,7 @@ const AnimPoseVec& AnimStateMachine::evaluate(const AnimVariantMap& animVars, co // evaluate currentState transitions auto desiredState = evaluateTransitions(animVars); if (desiredState != _currentState) { - //parenthesis means snapshot of this state. + // parenthesis means previous state, which is a snapshot. _previousStateID = "(" + _currentState->getID() + ")"; switchState(animVars, context, desiredState); } diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 5c3305e05c..6ed4e93a78 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -641,10 +641,6 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos float lateralSpeed = glm::dot(localVel, IDENTITY_RIGHT); float turningSpeed = glm::orientedAngle(forward, _lastForward, IDENTITY_UP) / deltaTime; - glm::vec3 lastVel = glm::inverse(worldRotation) * _lastVelocity; - float lastForwardSpeed = glm::dot(lastVel, IDENTITY_FORWARD); - float lastLateralSpeed = glm::dot(lastVel, IDENTITY_RIGHT); - // filter speeds using a simple moving average. _averageForwardSpeed.updateAverage(forwardSpeed); _averageLateralSpeed.updateAverage(lateralSpeed); @@ -729,16 +725,11 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _desiredStateAge += deltaTime; - bool resetVelocityAverage = false; - if (_state == RigRole::Move) { glm::vec3 horizontalVel = localVel - glm::vec3(0.0f, localVel.y, 0.0f); if (glm::length(horizontalVel) > MOVE_ENTER_SPEED_THRESHOLD) { if (fabsf(forwardSpeed) > 0.5f * fabsf(lateralSpeed)) { if (forwardSpeed > 0.0f) { - if (lastForwardSpeed < 0.0f) { - resetVelocityAverage = true; - } // forward _animVars.set("isMovingForward", true); _animVars.set("isMovingBackward", false); @@ -749,9 +740,6 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isNotMoving", false); } else { - if (lastForwardSpeed > 0.0f) { - resetVelocityAverage = true; - } // backward _animVars.set("isMovingBackward", true); _animVars.set("isMovingForward", false); @@ -763,9 +751,6 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos } } else { if (lateralSpeed > 0.0f) { - if (lastLateralSpeed < 0.0f) { - resetVelocityAverage = true; - } // right if (!_headEnabled) { _animVars.set("isMovingRight", true); @@ -782,9 +767,6 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isMovingBackward", false); _animVars.set("isNotMoving", false); } else { - if (lastLateralSpeed > 0.0f) { - resetVelocityAverage = true; - } // left if (!_headEnabled) { _animVars.set("isMovingRight", false); @@ -803,8 +785,8 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos } } } - _animVars.set("isTurningLeft", false); _animVars.set("isTurningRight", false); + _animVars.set("isTurningLeft", false); _animVars.set("isNotTurning", true); _animVars.set("isFlying", false); _animVars.set("isNotFlying", true); @@ -823,8 +805,8 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isNotTurning", false); } else { // turning left - _animVars.set("isTurningLeft", true); _animVars.set("isTurningRight", false); + _animVars.set("isTurningLeft", true); _animVars.set("isNotTurning", false); } _animVars.set("isMovingForward", false); @@ -852,8 +834,8 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isMovingRightHmd", false); _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotMoving", true); - _animVars.set("isTurningLeft", false); _animVars.set("isTurningRight", false); + _animVars.set("isTurningLeft", false); _animVars.set("isNotTurning", true); _animVars.set("isFlying", false); _animVars.set("isNotFlying", true); @@ -873,8 +855,8 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isMovingRightHmd", false); _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotMoving", true); - _animVars.set("isTurningLeft", false); _animVars.set("isTurningRight", false); + _animVars.set("isTurningLeft", false); _animVars.set("isNotTurning", true); _animVars.set("isFlying", true); _animVars.set("isNotFlying", false); @@ -889,13 +871,13 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos // jumping in-air _animVars.set("isMovingForward", false); _animVars.set("isMovingBackward", false); - _animVars.set("isMovingLeft", false); _animVars.set("isMovingRight", false); + _animVars.set("isMovingLeft", false); _animVars.set("isMovingRightHmd", false); _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotMoving", true); - _animVars.set("isTurningLeft", false); _animVars.set("isTurningRight", false); + _animVars.set("isTurningLeft", false); _animVars.set("isNotTurning", true); _animVars.set("isFlying", false); _animVars.set("isNotFlying", true); @@ -918,13 +900,13 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos // jumping in-air _animVars.set("isMovingForward", false); _animVars.set("isMovingBackward", false); - _animVars.set("isMovingLeft", false); _animVars.set("isMovingRight", false); + _animVars.set("isMovingLeft", false); _animVars.set("isMovingRightHmd", false); _animVars.set("isMovingLeftHmd", false); _animVars.set("isNotMoving", true); - _animVars.set("isTurningLeft", false); _animVars.set("isTurningRight", false); + _animVars.set("isTurningLeft", false); _animVars.set("isNotTurning", true); _animVars.set("isFlying", false); _animVars.set("isNotFlying", true); From d78c571df6f63e6a0df5dee36d25b8312c716999 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Tue, 7 Aug 2018 10:56:53 -0700 Subject: [PATCH 195/332] revert to use overlays instead of entities for tablet highlighting --- .../src/scripting/HMDScriptingInterface.h | 20 ++--- scripts/system/libraries/WebTablet.js | 88 ++++++++----------- scripts/system/libraries/utils.js | 8 +- scripts/system/marketplaces/marketplaces.js | 1 + scripts/system/tablet-ui/tabletUI.js | 9 +- 5 files changed, 59 insertions(+), 67 deletions(-) diff --git a/interface/src/scripting/HMDScriptingInterface.h b/interface/src/scripting/HMDScriptingInterface.h index 69b04173b2..a8fec839eb 100644 --- a/interface/src/scripting/HMDScriptingInterface.h +++ b/interface/src/scripting/HMDScriptingInterface.h @@ -56,8 +56,7 @@ class QScriptEngine; * @property {Uuid} tabletID - The UUID of the tablet body model overlay. * @property {Uuid} tabletScreenID - The UUID of the tablet's screen overlay. * @property {Uuid} homeButtonID - The UUID of the tablet's "home" button overlay. - * @property {Uuid} homeButtonHighlightMaterialID - The UUID of the material entity used to highlight tablet button - * @property {Uuid} homeButtonUnhighlightMaterialID - The UUID of the material entity use to unhighlight the entity + * @property {Uuid} homeButtonHighlightID - The UUID of the tablet's "home" button highlight overlay. */ class HMDScriptingInterface : public AbstractHMDScriptingInterface, public Dependency { Q_OBJECT @@ -69,11 +68,10 @@ class HMDScriptingInterface : public AbstractHMDScriptingInterface, public Depen Q_PROPERTY(QUuid tabletID READ getCurrentTabletFrameID WRITE setCurrentTabletFrameID) Q_PROPERTY(QUuid homeButtonID READ getCurrentHomeButtonID WRITE setCurrentHomeButtonID) Q_PROPERTY(QUuid tabletScreenID READ getCurrentTabletScreenID WRITE setCurrentTabletScreenID) - Q_PROPERTY(QUuid homeButtonHighlightMaterialID READ getCurrentHomeButtonHighlightMaterialID WRITE setCurrentHomeButtonHighlightMaterialID) - Q_PROPERTY(QUuid homeButtonUnhighlightMaterialID READ getCurrentHomeButtonUnhighlightMaterialID WRITE setCurrentHomeButtonUnhighlightMaterialID) + Q_PROPERTY(QUuid homeButtonHighlightID READ getCurrentHomeButtonHighlightID WRITE setCurrentHomeButtonHighlightID) public: - + /**jsdoc * Calculate the intersection of a ray with the HUD overlay. * @function HMD.calculateRayUICollisionPoint @@ -365,15 +363,12 @@ public: void setCurrentHomeButtonID(QUuid homeButtonID) { _homeButtonID = homeButtonID; } QUuid getCurrentHomeButtonID() const { return _homeButtonID; } + void setCurrentHomeButtonHighlightID(QUuid homeButtonHighlightID) { _homeButtonHighlightID = homeButtonHighlightID; } + QUuid getCurrentHomeButtonHighlightID() const { return _homeButtonHighlightID; } + void setCurrentTabletScreenID(QUuid tabletID) { _tabletScreenID = tabletID; } QUuid getCurrentTabletScreenID() const { return _tabletScreenID; } - void setCurrentHomeButtonHighlightMaterialID(QUuid homeButtonHighlightMaterialID) { _homeButtonHighlightMaterialID = homeButtonHighlightMaterialID; } - QUuid getCurrentHomeButtonHighlightMaterialID() { return _homeButtonHighlightMaterialID; } - - void setCurrentHomeButtonUnhighlightMaterialID(QUuid homeButtonUnhighlightMaterialID) { _homeButtonUnhighlightMaterialID = homeButtonUnhighlightMaterialID; } - QUuid getCurrentHomeButtonUnhighlightMaterialID() { return _homeButtonUnhighlightMaterialID; } - private: bool _showTablet { false }; bool _tabletContextualMode { false }; @@ -381,8 +376,7 @@ private: QUuid _tabletScreenID; // this is the overlayID which is part of (a child of) the tablet-ui. QUuid _homeButtonID; QUuid _tabletEntityID; - QUuid _homeButtonHighlightMaterialID; - QUuid _homeButtonUnhighlightMaterialID; + QUuid _homeButtonHighlightID; // Get the position of the HMD glm::vec3 getPosition() const; diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index f83f961438..5f172c081d 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -87,8 +87,7 @@ cleanUpOldMaterialEntities = function() { for (var entityID in avatarEntityData) { var entityName = Entities.getEntityProperties(entityID, ["name"]).name; - if (entityName === TABLET_MATERIAL_ENTITY_NAME && entityID !== HMD.homeButtonHighlightMaterialID && - entityID !== HMD.homeButtonUnhighlightMaterialID) { + if (entityName === TABLET_MATERIAL_ENTITY_NAME) { Entities.deleteEntity(entityID); } } @@ -194,45 +193,21 @@ WebTablet = function (url, width, dpi, hand, clientOnly, location, visible) { parentJointIndex: -1 }); - this.homeButtonUnhighlightMaterial = Entities.addEntity({ - type: "Material", - name: TABLET_MATERIAL_ENTITY_NAME, - materialURL: "materialData", - localPosition: { x: 0.0, y: 0.0, z: 0.0 }, - priority: HIGH_PRIORITY, - materialData: JSON.stringify({ - materials: { - albedoMap: LOCAL_NORMAL_BEZEL - } - - }), - userData: JSON.stringify({ - "grabbableKey": {"grabbable": false} - }), - visible: false, - parentMaterialName: SUBMESH, - parentID: this.tabletEntityID - }, true); - - this.homeButtonHighlightMaterial = Entities.addEntity({ - type: "Material", - name: TABLET_MATERIAL_ENTITY_NAME, - materialURL: "materialData", - localPosition: { x: 0.0, y: 0.0, z: 0.0 }, - priority: LOW_PRIORITY, - visible: false, - materialData: JSON.stringify({ - materials: { - emissiveMap: LOCAL_BEZEL_HIGHLIGHT - } - - }), - userData: JSON.stringify({ - "grabbableKey": {"grabbable": false} - }), - parentMaterialName: SUBMESH, - parentID: this.tabletEntityID - }, true); + this.homeButtonHighlightID = Overlays.addOverlay("circle3d", { + name: "homeButtonHighlight", + localPosition: { x: -HOME_BUTTON_X_OFFSET, y: HOME_BUTTON_Y_OFFSET, z: -HOME_BUTTON_Z_OFFSET }, + localRotation: { x: 0, y: 1, z: 0, w: 0}, + dimensions: { x: homeButtonDim, y: homeButtonDim, z: homeButtonDim }, + color: {red: 255, green: 255, blue: 255}, + solid: true, + innerRadius: 0.9, + ignoreIntersection: true, + alpha: 0.0, + visible: visible, + drawInFront: false, + parentID: this.tabletEntityID, + parentJointIndex: -1 + }); this.receive = function (channel, senderID, senderUUID, localOnly) { if (_this.homeButtonID === senderID) { @@ -387,8 +362,7 @@ WebTablet.prototype.destroy = function () { Overlays.deleteOverlay(this.webOverlayID); Overlays.deleteOverlay(this.tabletEntityID); Overlays.deleteOverlay(this.homeButtonID); - Entities.deleteEntity(this.homeButtonUnhighlightMaterial); - Entities.deleteEntity(this.homeButtonHighlightMaterial); + Overlays.deleteOverlay(this.homeButtonHighlightID); HMD.displayModeChanged.disconnect(this.myOnHmdChanged); Controller.mousePressEvent.disconnect(this.myMousePressEvent); @@ -482,22 +456,19 @@ WebTablet.prototype.calculateWorldAttitudeRelativeToCamera = function (windowPos WebTablet.prototype.onHoverEnterOverlay = function (overlayID, pointerEvent) { if (overlayID === this.homeButtonID) { - Entities.editEntity(this.homeButtonUnhighlightMaterial, {priority: LOW_PRIORITY}); - Entities.editEntity(this.homeButtonHighlightMaterial, {priority: HIGH_PRIORITY}); + Overlays.editOverlay(this.homeButtonHighlightID, { alpha: 1.0 }); } }; WebTablet.prototype.onHoverOverOverlay = function (overlayID, pointerEvent) { if (overlayID !== this.homeButtonID) { - Entities.editEntity(this.homeButtonUnhighlightMaterial, {priority: HIGH_PRIORITY}); - Entities.editEntity(this.homeButtonHighlightMaterial, {priority: LOW_PRIORITY}); + Overlays.editOverlay(this.homeButtonHighlightID, { alpha: 0.0 }); } }; WebTablet.prototype.onHoverLeaveOverlay = function (overlayID, pointerEvent) { if (overlayID === this.homeButtonID) { - Entities.editEntity(this.homeButtonUnhighlightMaterial, {priority: HIGH_PRIORITY}); - Entities.editEntity(this.homeButtonHighlightMaterial, {priority: LOW_PRIORITY}); + Overlays.editOverlay(this.homeButtonHighlightID, { alpha: 0.0 }); } }; @@ -627,6 +598,21 @@ WebTablet.prototype.scheduleMouseMoveProcessor = function() { } }; +WebTablet.prototype.handleMouseButtonHover = function(x, y) { + var pickRay = Camera.computePickRay(x, y); + var entityPickResults; + var homebuttonHovered = false; + entityPickResults = Overlays.findRayIntersection(pickRay, true, [this.tabletEntityID]); + if (entityPickResults.intersects && (entityPickResults.entityID === this.tabletEntityID || + entityPickResults.overlayID === this.tabletEntityID)) { + var overlayPickResults = Overlays.findRayIntersection(pickRay, true, [this.homeButtonID], []); + if (overlayPickResults.intersects && overlayPickResults.overlayID === this.homeButtonID) { + homebuttonHovered = true; + } + } + Overlays.editOverlay(this.homeButtonHighlightID, { alpha: homebuttonHovered ? 1.0 : 0.0 }); +}; + WebTablet.prototype.mouseMoveEvent = function (event) { if (this.dragging) { this.currentMouse = { @@ -634,6 +620,8 @@ WebTablet.prototype.mouseMoveEvent = function (event) { y: event.y }; this.scheduleMouseMoveProcessor(); + } else { + this.handleHomeButtonHover(event.x, event.y); } }; @@ -660,6 +648,8 @@ WebTablet.prototype.mouseMoveProcessor = function () { }); } this.scheduleMouseMoveProcessor(); + } else { + this.handleHomeButtonHover(this.currentMouse.x, this.currentMouse.y); } }; diff --git a/scripts/system/libraries/utils.js b/scripts/system/libraries/utils.js index 220ecd1959..f7b5f6db8d 100644 --- a/scripts/system/libraries/utils.js +++ b/scripts/system/libraries/utils.js @@ -370,7 +370,7 @@ getTabletWidthFromSettings = function () { resizeTablet = function (width, newParentJointIndex, sensorToWorldScaleOverride) { - if (!HMD.tabletID || !HMD.tabletScreenID || !HMD.homeButtonID) { + if (!HMD.tabletID || !HMD.tabletScreenID || !HMD.homeButtonID || !HMD.homeButtonHighlightID) { return; } var sensorScaleFactor = sensorToWorldScaleOverride || MyAvatar.sensorToWorldScale; @@ -422,6 +422,12 @@ resizeTablet = function (width, newParentJointIndex, sensorToWorldScaleOverride) localRotation: { x: 0, y: 1, z: 0, w: 0 }, dimensions: { x: homeButtonDim, y: homeButtonDim, z: homeButtonDim } }); + + Overlays.editOverlay(HMD.homeButtonHighlightID, { + localPosition: { x: -HOME_BUTTON_X_OFFSET, y: HOME_BUTTON_Y_OFFSET, z: -HOME_BUTTON_Z_OFFSET }, + localRotation: { x: 0, y: 1, z: 0, w: 0 }, + dimensions: { x: homeButtonDim, y: homeButtonDim, z: homeButtonDim } + }); }; getMainTabletIDs = function () { diff --git a/scripts/system/marketplaces/marketplaces.js b/scripts/system/marketplaces/marketplaces.js index fd7b9c703a..7b4f05193f 100644 --- a/scripts/system/marketplaces/marketplaces.js +++ b/scripts/system/marketplaces/marketplaces.js @@ -114,6 +114,7 @@ var selectionDisplay = null; // for gridTool.js to ignore Overlays.editOverlay(HMD.tabletID, { isVisibleInSecondaryCamera : visibleInSecondaryCam }); Overlays.editOverlay(HMD.homeButtonID, { isVisibleInSecondaryCamera : visibleInSecondaryCam }); + Overlays.editOverlay(HMD.homeButtonHighlightID, { isVisibleInSecondaryCamera : visibleInSecondaryCam }); Overlays.editOverlay(HMD.tabletScreenID, { isVisibleInSecondaryCamera : visibleInSecondaryCam }); } diff --git a/scripts/system/tablet-ui/tabletUI.js b/scripts/system/tablet-ui/tabletUI.js index bd6a9c69d5..f339475f72 100644 --- a/scripts/system/tablet-ui/tabletUI.js +++ b/scripts/system/tablet-ui/tabletUI.js @@ -112,8 +112,7 @@ HMD.tabletID = UIWebTablet.tabletEntityID; HMD.homeButtonID = UIWebTablet.homeButtonID; HMD.tabletScreenID = UIWebTablet.webOverlayID; - HMD.homeButtonHighlightMaterialID = UIWebTablet.homeButtonHighlightMaterial; - HMD.homeButtonUnhighlightMaterialID = UIWebTablet.homeButtonUnhighlightMaterial; + HMD.homeButtonHighlightID = UIWebTablet.homeButtonHighlightID; HMD.displayModeChanged.connect(onHmdChanged); MyAvatar.sensorToWorldScaleChanged.connect(onSensorToWorldScaleChanged); @@ -139,6 +138,7 @@ tabletProperties.visible = true; Overlays.editOverlay(HMD.tabletID, tabletProperties); Overlays.editOverlay(HMD.homeButtonID, { visible: true }); + Overlays.editOverlay(HMD.homeButtonHighlightID, { visible: true }); Overlays.editOverlay(HMD.tabletScreenID, { visible: true }); Overlays.editOverlay(HMD.tabletScreenID, { maxFPS: 90 }); updateTabletWidthFromSettings(true); @@ -159,6 +159,7 @@ Overlays.editOverlay(HMD.tabletID, { visible: false }); Overlays.editOverlay(HMD.homeButtonID, { visible: false }); + Overlays.editOverlay(HMD.homeButtonHighlightID, { visible: false }); Overlays.editOverlay(HMD.tabletScreenID, { visible: false }); Overlays.editOverlay(HMD.tabletScreenID, { maxFPS: 1 }); } @@ -179,6 +180,7 @@ UIWebTablet = null; HMD.tabletID = null; HMD.homeButtonID = null; + HMD.homeButtonHighlightID = null; HMD.tabletScreenID = null; } else if (debugTablet) { print("TABLET closeTabletUI, UIWebTablet is null"); @@ -331,9 +333,8 @@ Overlays.deleteOverlay(tabletID); HMD.tabletID = null; HMD.homeButtonID = null; + HMD.homeButtonHighlightID = null; HMD.tabletScreenID = null; - HMD.homeButtonHighlightMaterialID = null; - HMD.homeButtonUnhighlightMaterialID = null; }); Script.setTimeout(cleanupMaterialEntities, 100); }()); // END LOCAL_SCOPE From 8c5eefcc95ef5bea4a262697cdcc5c011e066e44 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Tue, 7 Aug 2018 10:58:45 -0700 Subject: [PATCH 196/332] some file and code cleanup --- interface/resources/images/buttonBezel.png | Bin 1530 -> 0 bytes .../resources/images/buttonBezel_highlight.png | Bin 1528 -> 0 bytes scripts/system/libraries/WebTablet.js | 2 -- 3 files changed, 2 deletions(-) delete mode 100644 interface/resources/images/buttonBezel.png delete mode 100644 interface/resources/images/buttonBezel_highlight.png diff --git a/interface/resources/images/buttonBezel.png b/interface/resources/images/buttonBezel.png deleted file mode 100644 index fe55855462bbd395ee3cc24095ea772c087dee13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1530 zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4iHr><-C@GfkCpwHKHUqKdq!Zu_%?nF(p4K zRlzeiF+DXXH8G{K@MNkD0|V+ zq9_4Vo(3q%KHzX5Gv;90U^Mv-L5dA>nB?d|bu^`EfC9fm9716nlB|74BqJNcwX-Z5 V--?n-85kHCJYD@<);T3K0RZp1r`iAj diff --git a/interface/resources/images/buttonBezel_highlight.png b/interface/resources/images/buttonBezel_highlight.png deleted file mode 100644 index ab0a99e4c566b7bcbdfb4d80edba8b0c454bcd28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1528 zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4iHr><-C@GfkCpwHKHUqKdq!Zu_%?nF(p4K zRlzeiF+DXXH8G{K@MNkD0|VbkP#_29j^UEeNJ(xd{ z;Q#}J0RsaM0|PTz%z@R;z)X?jDc630f}n$hIN2c&k1+Bg4z7(t?K}gV1P(B$3~(Bt zB>O-@pTaaip>_jAS|HP;A)bUNF9t|X0u8f86BsHJ+5XzR@GxLtU|{fc^>bP0l+XkK DqoAg_ diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index 5f172c081d..a5bc586f0d 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -39,8 +39,6 @@ var TABLET_NATURAL_DIMENSIONS = {x: 32.083, y: 48.553, z: 2.269}; var HOME_BUTTON_TEXTURE = Script.resourcesPath() + "images/button-close.png"; // var HOME_BUTTON_TEXTURE = Script.resourcesPath() + "meshes/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-close.png"; // var TABLET_MODEL_PATH = "http://hifi-content.s3.amazonaws.com/alan/dev/tablet-with-home-button.fbx"; -var LOCAL_BEZEL_HIGHLIGHT = Script.resourcesPath() + "images/buttonBezel_highlight.png"; -var LOCAL_NORMAL_BEZEL = Script.resourcesPath() + "images/buttonBezel.png"; var LOCAL_TABLET_MODEL_PATH = Script.resourcesPath() + "meshes/tablet-with-home-button-small-bezel.fbx"; var HIGH_PRIORITY = 1; From c7ce8e5ce017e2166ad33599f27ed9e1998db968 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 7 Aug 2018 10:58:13 -0700 Subject: [PATCH 197/332] check node data pointers in handleNodeIgnoreRequestPacket --- assignment-client/src/avatars/AvatarMixer.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp index 772c8643b3..bbc774eea6 100644 --- a/assignment-client/src/avatars/AvatarMixer.cpp +++ b/assignment-client/src/avatars/AvatarMixer.cpp @@ -643,6 +643,7 @@ void AvatarMixer::handleNodeIgnoreRequestPacket(QSharedPointer auto start = usecTimestampNow(); auto nodeList = DependencyManager::get(); AvatarMixerClientData* nodeData = reinterpret_cast(senderNode->getLinkedData()); + bool addToIgnore; message->readPrimitive(&addToIgnore); while (message->getBytesLeftToRead()) { @@ -650,17 +651,22 @@ void AvatarMixer::handleNodeIgnoreRequestPacket(QSharedPointer QUuid ignoredUUID = QUuid::fromRfc4122(message->readWithoutCopy(NUM_BYTES_RFC4122_UUID)); if (nodeList->nodeWithUUID(ignoredUUID)) { - // Reset the lastBroadcastTime for the ignored avatar to 0 - // so the AvatarMixer knows it'll have to send identity data about the ignored avatar - // to the ignorer if the ignorer unignores. - nodeData->setLastBroadcastTime(ignoredUUID, 0); + if (nodeData) { + // Reset the lastBroadcastTime for the ignored avatar to 0 + // so the AvatarMixer knows it'll have to send identity data about the ignored avatar + // to the ignorer if the ignorer unignores. + nodeData->setLastBroadcastTime(ignoredUUID, 0); + } + // Reset the lastBroadcastTime for the ignorer (FROM THE PERSPECTIVE OF THE IGNORED) to 0 // so the AvatarMixer knows it'll have to send identity data about the ignorer // to the ignored if the ignorer unignores. auto ignoredNode = nodeList->nodeWithUUID(ignoredUUID); AvatarMixerClientData* ignoredNodeData = reinterpret_cast(ignoredNode->getLinkedData()); - ignoredNodeData->setLastBroadcastTime(senderNode->getUUID(), 0); + if (ignoredNodeData) { + ignoredNodeData->setLastBroadcastTime(senderNode->getUUID(), 0); + } } if (addToIgnore) { From 07cb0db4252104bbab631ae6812a092305aa2612 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Tue, 7 Aug 2018 11:16:50 -0700 Subject: [PATCH 198/332] Fix bug with texel opaque and transparent cut off shader function --- libraries/graphics/src/graphics/MaterialTextures.slh | 9 ++++++++- libraries/render-utils/src/forward_model_translucent.slf | 2 +- libraries/render-utils/src/model_translucent.slf | 2 +- .../render-utils/src/model_translucent_normal_map.slf | 2 +- .../src/model_translucent_normal_map_fade.slf | 2 +- libraries/render-utils/src/model_translucent_unlit.slf | 2 +- .../render-utils/src/model_translucent_unlit_fade.slf | 2 +- 7 files changed, 14 insertions(+), 7 deletions(-) diff --git a/libraries/graphics/src/graphics/MaterialTextures.slh b/libraries/graphics/src/graphics/MaterialTextures.slh index e19b429684..f76d65da96 100644 --- a/libraries/graphics/src/graphics/MaterialTextures.slh +++ b/libraries/graphics/src/graphics/MaterialTextures.slh @@ -269,7 +269,14 @@ vec3 fetchLightmapMap(vec2 uv) { <@func discardTransparent(opacity)@> { - if (<$opacity$> < 1e-6) { + if (<$opacity$> < 1.0) { + discard; + } +} +<@endfunc@> +<@func discardInvisible(opacity)@> +{ + if (<$opacity$> < 1.e-6) { discard; } } diff --git a/libraries/render-utils/src/forward_model_translucent.slf b/libraries/render-utils/src/forward_model_translucent.slf index d247b589c7..5fb2c7c1a7 100644 --- a/libraries/render-utils/src/forward_model_translucent.slf +++ b/libraries/render-utils/src/forward_model_translucent.slf @@ -40,7 +40,7 @@ void main(void) { float opacity = getMaterialOpacity(mat) * _color.a; <$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; - <$discardTransparent(opacity)$>; + <$discardInvisible(opacity)$>; vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; diff --git a/libraries/render-utils/src/model_translucent.slf b/libraries/render-utils/src/model_translucent.slf index 564150cebd..00a871ace1 100644 --- a/libraries/render-utils/src/model_translucent.slf +++ b/libraries/render-utils/src/model_translucent.slf @@ -44,7 +44,7 @@ void main(void) { float opacity = getMaterialOpacity(mat) * _color.a; <$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; - <$discardTransparent(opacity)$>; + <$discardInvisible(opacity)$>; vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; diff --git a/libraries/render-utils/src/model_translucent_normal_map.slf b/libraries/render-utils/src/model_translucent_normal_map.slf index 36ea50c321..45eee9d160 100644 --- a/libraries/render-utils/src/model_translucent_normal_map.slf +++ b/libraries/render-utils/src/model_translucent_normal_map.slf @@ -47,7 +47,7 @@ void main(void) { float opacity = getMaterialOpacity(mat) * _color.a; <$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; - <$discardTransparent(opacity)$>; + <$discardInvisible(opacity)$>; vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; diff --git a/libraries/render-utils/src/model_translucent_normal_map_fade.slf b/libraries/render-utils/src/model_translucent_normal_map_fade.slf index 24922c4e43..2ede2bfbaa 100644 --- a/libraries/render-utils/src/model_translucent_normal_map_fade.slf +++ b/libraries/render-utils/src/model_translucent_normal_map_fade.slf @@ -57,7 +57,7 @@ void main(void) { float opacity = getMaterialOpacity(mat) * _color.a; <$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; - <$discardTransparent(opacity)$>; + <$discardInvisible(opacity)$>; vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; diff --git a/libraries/render-utils/src/model_translucent_unlit.slf b/libraries/render-utils/src/model_translucent_unlit.slf index 87a712b239..1e468791f4 100644 --- a/libraries/render-utils/src/model_translucent_unlit.slf +++ b/libraries/render-utils/src/model_translucent_unlit.slf @@ -34,7 +34,7 @@ void main(void) { float opacity = getMaterialOpacity(mat) * _color.a; <$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; - <$discardTransparent(opacity)$>; + <$discardInvisible(opacity)$>; vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; diff --git a/libraries/render-utils/src/model_translucent_unlit_fade.slf b/libraries/render-utils/src/model_translucent_unlit_fade.slf index 74dee12ec8..cbbaae8641 100644 --- a/libraries/render-utils/src/model_translucent_unlit_fade.slf +++ b/libraries/render-utils/src/model_translucent_unlit_fade.slf @@ -44,7 +44,7 @@ void main(void) { float opacity = getMaterialOpacity(mat) * _color.a; <$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; - <$discardTransparent(opacity)$>; + <$discardInvisible(opacity)$>; vec3 albedo = getMaterialAlbedo(mat); <$evalMaterialAlbedo(albedoTex, albedo, matKey, albedo)$>; From de10dfb03278c20120f9163af33239ad85e1666a Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 7 Aug 2018 11:17:18 -0700 Subject: [PATCH 199/332] don't bind materials during shadow pass --- .../src/RenderableMaterialEntityItem.cpp | 11 +++++++---- .../src/RenderableShapeEntityItem.cpp | 6 ++++-- libraries/render-utils/src/MeshPartPayload.cpp | 12 ++++++++---- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp index eabcb68e4f..d7a0cfd18d 100644 --- a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp @@ -112,11 +112,14 @@ void MaterialEntityRenderer::doRender(RenderArgs* args) { } batch.setModelTransform(renderTransform); - drawMaterial->setTextureTransforms(textureTransform); - // bind the material - RenderPipelines::bindMaterial(drawMaterial, batch, args->_enableTexturing); - args->_details._materialSwitches++; + if (args->_renderMode != render::Args::RenderMode::SHADOW_RENDER_MODE) { + drawMaterial->setTextureTransforms(textureTransform); + + // bind the material + RenderPipelines::bindMaterial(drawMaterial, batch, args->_enableTexturing); + args->_details._materialSwitches++; + } // Draw! DependencyManager::get()->renderSphere(batch); diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp index de26f846ae..530566ac97 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp @@ -268,8 +268,10 @@ void ShapeEntityRenderer::doRender(RenderArgs* args) { geometryCache->renderSolidShapeInstance(args, batch, geometryShape, outColor, pipeline); } } else { - RenderPipelines::bindMaterial(mat, batch, args->_enableTexturing); - args->_details._materialSwitches++; + if (args->_renderMode != render::Args::RenderMode::SHADOW_RENDER_MODE) { + RenderPipelines::bindMaterial(mat, batch, args->_enableTexturing); + args->_details._materialSwitches++; + } geometryCache->renderShape(batch, geometryShape); } diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 9e335c9213..ca6e736a65 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -157,8 +157,10 @@ void MeshPartPayload::render(RenderArgs* args) { bindMesh(batch); // apply material properties - RenderPipelines::bindMaterial(!_drawMaterials.empty() ? _drawMaterials.top().material : DEFAULT_MATERIAL, batch, args->_enableTexturing); - args->_details._materialSwitches++; + if (args->_renderMode != render::Args::RenderMode::SHADOW_RENDER_MODE) { + RenderPipelines::bindMaterial(!_drawMaterials.empty() ? _drawMaterials.top().material : DEFAULT_MATERIAL, batch, args->_enableTexturing); + args->_details._materialSwitches++; + } // Draw! { @@ -417,8 +419,10 @@ void ModelMeshPartPayload::render(RenderArgs* args) { bindMesh(batch); // apply material properties - RenderPipelines::bindMaterial(!_drawMaterials.empty() ? _drawMaterials.top().material : DEFAULT_MATERIAL, batch, args->_enableTexturing); - args->_details._materialSwitches++; + if (args->_renderMode != render::Args::RenderMode::SHADOW_RENDER_MODE) { + RenderPipelines::bindMaterial(!_drawMaterials.empty() ? _drawMaterials.top().material : DEFAULT_MATERIAL, batch, args->_enableTexturing); + args->_details._materialSwitches++; + } // Draw! { From 269afb9a49faa13263548d70c273b8567023ab4d Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Tue, 7 Aug 2018 11:19:22 -0700 Subject: [PATCH 200/332] remove tablet material entities code remove create --- .../controllerModules/inEditMode.js | 19 +++++-------------- scripts/system/libraries/entityList.js | 9 --------- 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/scripts/system/controllers/controllerModules/inEditMode.js b/scripts/system/controllers/controllerModules/inEditMode.js index 3e53d5af12..d590545532 100644 --- a/scripts/system/controllers/controllerModules/inEditMode.js +++ b/scripts/system/controllers/controllerModules/inEditMode.js @@ -19,7 +19,6 @@ Script.include("/~/system/libraries/utils.js"); (function () { var MARGIN = 25; - var TABLET_MATERIAL_ENTITY_NAME = 'Tablet-Material-Entity'; function InEditMode(hand) { this.hand = hand; this.triggerClicked = false; @@ -77,13 +76,11 @@ Script.include("/~/system/libraries/utils.js"); } } if (this.selectedTarget.type === Picks.INTERSECTED_ENTITY) { - if (!this.isTabletMaterialEntity(this.selectedTarget.objectID)) { - Messages.sendLocalMessage("entityToolUpdates", JSON.stringify({ - method: "selectEntity", - entityID: this.selectedTarget.objectID, - hand: hand - })); - } + Messages.sendLocalMessage("entityToolUpdates", JSON.stringify({ + method: "selectEntity", + entityID: this.selectedTarget.objectID, + hand: hand + })); } else if (this.selectedTarget.type === Picks.INTERSECTED_OVERLAY) { Messages.sendLocalMessage("entityToolUpdates", JSON.stringify({ method: "selectOverlay", @@ -98,12 +95,6 @@ Script.include("/~/system/libraries/utils.js"); this.sendPointingAtData(controllerData); }; - - this.isTabletMaterialEntity = function(entityID) { - return ((entityID === HMD.homeButtonHighlightMaterialID) || - (entityID === HMD.homeButtonUnhighlightMaterialID)); - }; - this.sendPointingAtData = function(controllerData) { var rayPick = controllerData.rayPicks[this.hand]; var hudRayPick = controllerData.hudRayPicks[this.hand]; diff --git a/scripts/system/libraries/entityList.js b/scripts/system/libraries/entityList.js index 24b90e3a44..fb876302dd 100644 --- a/scripts/system/libraries/entityList.js +++ b/scripts/system/libraries/entityList.js @@ -111,11 +111,6 @@ EntityListTool = function(shouldUseEditTabletApp) { return value !== undefined ? value : ""; } - function filterEntity(entityID) { - return ((entityID === HMD.homeButtonHighlightMaterialID) || - (entityID === HMD.homeButtonUnhighlightMaterialID)); - } - that.sendUpdate = function() { var entities = []; @@ -126,10 +121,6 @@ EntityListTool = function(shouldUseEditTabletApp) { ids = Entities.findEntities(MyAvatar.position, searchRadius); } - ids = ids.filter(function(id) { - return !filterEntity(id); - }); - var cameraPosition = Camera.position; for (var i = 0; i < ids.length; i++) { var id = ids[i]; From 4cee6b720a10a8ccfe26994140d91f5579fa0d74 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 7 Aug 2018 11:49:32 -0700 Subject: [PATCH 201/332] Implement auto-scrolling on Places cards (TODO for Connections) --- interface/resources/qml/hifi/Feed.qml | 49 +++++++++++++++++-- .../qml/hifi/tablet/TabletAddressDialog.qml | 2 + 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/hifi/Feed.qml b/interface/resources/qml/hifi/Feed.qml index 785b586dd2..4ff26b8057 100644 --- a/interface/resources/qml/hifi/Feed.qml +++ b/interface/resources/qml/hifi/Feed.qml @@ -41,6 +41,8 @@ Column { property var goFunction: null; property var http: null; + property bool autoScrollTimerEnabled; + HifiConstants { id: hifi } Component.onCompleted: suggestions.getFirstPage(); HifiModels.PSFListModel { @@ -102,9 +104,12 @@ Column { id: scroll; model: suggestions; orientation: ListView.Horizontal; - highlightFollowsCurrentItem: false - highlightMoveDuration: -1; - highlightMoveVelocity: -1; + highlightFollowsCurrentItem: true; + preferredHighlightBegin: 0; + preferredHighlightEnd: cardWidth; + highlightRangeMode: ListView.StrictlyEnforceRange; + highlightMoveDuration: 800; + highlightMoveVelocity: 1; currentIndex: -1; spacing: 12; @@ -137,5 +142,43 @@ Column { hoverThunk: function () { hovered = true } unhoverThunk: function () { hovered = false } } + + onCountChanged: { + if (scroll.currentIndex === -1 && scroll.count > 0 && root.autoScrollTimerEnabled) { + scroll.currentIndex = 0; + autoScrollTimer.start(); + } + } + + MouseArea { + id: feedMouseArea; + enabled: root.autoScrollTimerEnabled; + anchors.fill: parent; + hoverEnabled: true; + onEntered: { + if (autoScrollTimer.running) { + autoScrollTimer.stop(); + } + } + onExited: { + autoScrollTimer.restart(); + } + } + } + + Timer { + id: autoScrollTimer; + interval: 3000; + running: false; + repeat: true; + onTriggered: { + if (scroll.currentIndex !== -1) { + if (scroll.currentIndex === scroll.count - 1) { + scroll.currentIndex = 0; + } else { + scroll.currentIndex++; + } + } + } } } diff --git a/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml b/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml index 9a472de046..4a3f7ea905 100644 --- a/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml +++ b/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml @@ -325,6 +325,7 @@ StackView { filter: addressLine.text; goFunction: goCard; http: http; + autoScrollTimerEnabled: true; } Feed { id: places; @@ -337,6 +338,7 @@ StackView { filter: addressLine.text; goFunction: goCard; http: http; + autoScrollTimerEnabled: true; } Feed { id: snapshots; From af9dc8acca516c832808dce51b0175df8580548f Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 7 Aug 2018 11:51:38 -0700 Subject: [PATCH 202/332] Turn on only for Annoucements --- interface/resources/qml/hifi/Feed.qml | 2 +- interface/resources/qml/hifi/tablet/TabletAddressDialog.qml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/interface/resources/qml/hifi/Feed.qml b/interface/resources/qml/hifi/Feed.qml index 4ff26b8057..c81e3c2389 100644 --- a/interface/resources/qml/hifi/Feed.qml +++ b/interface/resources/qml/hifi/Feed.qml @@ -41,7 +41,7 @@ Column { property var goFunction: null; property var http: null; - property bool autoScrollTimerEnabled; + property bool autoScrollTimerEnabled: false; HifiConstants { id: hifi } Component.onCompleted: suggestions.getFirstPage(); diff --git a/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml b/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml index 4a3f7ea905..5dce74f2dd 100644 --- a/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml +++ b/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml @@ -338,7 +338,6 @@ StackView { filter: addressLine.text; goFunction: goCard; http: http; - autoScrollTimerEnabled: true; } Feed { id: snapshots; From a905a76c7077acebf202de5748b3ffe60ec317dc Mon Sep 17 00:00:00 2001 From: David Back Date: Tue, 7 Aug 2018 11:53:11 -0700 Subject: [PATCH 203/332] reload script cache with reload content --- interface/src/Application.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 0bbd2b1c17..09b7a757ef 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5285,6 +5285,7 @@ void Application::reloadResourceCaches() { queryOctree(NodeType::EntityServer, PacketType::EntityQuery); DependencyManager::get()->clearCache(); + DependencyManager::get()->clearCache(); DependencyManager::get()->refreshAll(); DependencyManager::get()->refreshAll(); From df9c65e41070489a6897407d935225d050b28b23 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Tue, 7 Aug 2018 12:08:10 -0700 Subject: [PATCH 204/332] Move back RecordingScriptingInterface destruction --- assignment-client/src/Agent.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index b9d1db2b3e..8c94cc1148 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -497,7 +497,7 @@ void Agent::executeScript() { Frame::clearFrameHandler(AUDIO_FRAME_TYPE); Frame::clearFrameHandler(AVATAR_FRAME_TYPE); - + DependencyManager::destroy(); setFinished(true); } @@ -847,7 +847,6 @@ void Agent::aboutToFinish() { DependencyManager::destroy(); DependencyManager::destroy(); DependencyManager::destroy(); - DependencyManager::destroy(); DependencyManager::destroy(); QMetaObject::invokeMethod(&_avatarAudioTimer, "stop"); From 4ad73fd82197a7da68d1c2f51700f41fb1eaf40f Mon Sep 17 00:00:00 2001 From: amantley Date: Tue, 7 Aug 2018 12:51:23 -0700 Subject: [PATCH 205/332] removed whitespace --- libraries/animation/src/AnimBlendLinearMove.cpp | 2 -- libraries/animation/src/Rig.cpp | 1 - libraries/animation/src/Rig.h | 1 - 3 files changed, 4 deletions(-) diff --git a/libraries/animation/src/AnimBlendLinearMove.cpp b/libraries/animation/src/AnimBlendLinearMove.cpp index 5084a45f68..6313d4cbe9 100644 --- a/libraries/animation/src/AnimBlendLinearMove.cpp +++ b/libraries/animation/src/AnimBlendLinearMove.cpp @@ -26,7 +26,6 @@ AnimBlendLinearMove::~AnimBlendLinearMove() { } - static float calculateAlpha(const float speed, const std::vector& characteristicSpeeds) { assert(characteristicSpeeds.size() > 0); @@ -112,7 +111,6 @@ const AnimPoseVec& AnimBlendLinearMove::getPosesInternal() const { return _poses; } - void AnimBlendLinearMove::evaluateAndBlendChildren(const AnimVariantMap& animVars, const AnimContext& context, AnimVariantMap& triggersOut, float alpha, size_t prevPoseIndex, size_t nextPoseIndex, float prevDeltaTime, float nextDeltaTime) { diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 933c7c5fec..c3e679096b 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -940,7 +940,6 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos } } _lastEnableInverseKinematics = _enableInverseKinematics; - } _lastForward = forward; diff --git a/libraries/animation/src/Rig.h b/libraries/animation/src/Rig.h index a29a78f1cc..accbcccbbc 100644 --- a/libraries/animation/src/Rig.h +++ b/libraries/animation/src/Rig.h @@ -225,7 +225,6 @@ public: const std::map getAnimStack() { return _animNode->getAnimStack(); } void toggleSmoothPoleVectors() { _smoothPoleVectors = !_smoothPoleVectors; }; - signals: void onLoadComplete(); From 1353406254dd03b187ac0cead922331a95c6b642 Mon Sep 17 00:00:00 2001 From: amantley Date: Tue, 7 Aug 2018 12:56:28 -0700 Subject: [PATCH 206/332] more whitespace --- interface/src/avatar/MyAvatar.cpp | 3 --- libraries/animation/src/AnimDefaultPose.cpp | 1 - libraries/animation/src/AnimDefaultPose.h | 1 - 3 files changed, 5 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 17771f562c..fda2afcb2e 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -3446,7 +3446,6 @@ void MyAvatar::setWalkBackwardSpeed(float value) { _walkBackwardSpeed.set(value); } - void MyAvatar::setSprintSpeed(float value) { _sprintSpeed.set(value); } @@ -3455,8 +3454,6 @@ float MyAvatar::getSprintSpeed() const { return _sprintSpeed.get(); } - - QVector MyAvatar::getScriptUrls() { QVector scripts = _skeletonModel->isLoaded() ? _skeletonModel->getFBXGeometry().scripts : QVector(); return scripts; diff --git a/libraries/animation/src/AnimDefaultPose.cpp b/libraries/animation/src/AnimDefaultPose.cpp index a4fdc15605..3ed2ff6cca 100644 --- a/libraries/animation/src/AnimDefaultPose.cpp +++ b/libraries/animation/src/AnimDefaultPose.cpp @@ -21,7 +21,6 @@ AnimDefaultPose::~AnimDefaultPose() { } const AnimPoseVec& AnimDefaultPose::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) { - if (_skeleton) { _poses = _skeleton->getRelativeDefaultPoses(); } else { diff --git a/libraries/animation/src/AnimDefaultPose.h b/libraries/animation/src/AnimDefaultPose.h index 2b5812948a..13143f8d92 100644 --- a/libraries/animation/src/AnimDefaultPose.h +++ b/libraries/animation/src/AnimDefaultPose.h @@ -22,7 +22,6 @@ public: virtual ~AnimDefaultPose() override; virtual const AnimPoseVec& evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) override; - protected: // for AnimDebugDraw rendering virtual const AnimPoseVec& getPosesInternal() const override; From a7170a5892c4806ffa4645b8a1daef4b186b6b03 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 8 Aug 2018 08:49:29 +1200 Subject: [PATCH 207/332] Fix typo --- .../controllers/controllerModules/nearParentGrabEntity.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/controllers/controllerModules/nearParentGrabEntity.js b/scripts/system/controllers/controllerModules/nearParentGrabEntity.js index fe6497ff05..0e379d1a3b 100644 --- a/scripts/system/controllers/controllerModules/nearParentGrabEntity.js +++ b/scripts/system/controllers/controllerModules/nearParentGrabEntity.js @@ -328,7 +328,7 @@ Script.include("/~/system/libraries/controllers.js"); if (!props) { // entity was deleted unhighlightTargetEntity(this.targetEntityID); - this.highlightedEntity = NULL; + this.highlightedEntity = null; this.grabbing = false; this.targetEntityID = null; this.hapticTargetID = null; From cce17eb181178459222a8cc2df86186d05f3193a Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 7 Aug 2018 14:20:45 -0700 Subject: [PATCH 208/332] Added tabbed interface. --- tools/auto-tester/src/Test.cpp | 4 +- tools/auto-tester/src/Test.h | 2 + tools/auto-tester/src/ui/AutoTester.cpp | 15 +- tools/auto-tester/src/ui/AutoTester.h | 2 + tools/auto-tester/src/ui/AutoTester.ui | 513 +++++++++++++----------- 5 files changed, 292 insertions(+), 244 deletions(-) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 37d1f9ca0f..171ccfd075 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -27,8 +27,8 @@ Test::Test() { _mismatchWindow.setModal(true); if (autoTester) { - autoTester->setUserText("highfidelity"); - autoTester->setBranchText("master"); + autoTester->setUserText(GIT_HUB_DEFAULT_USER); + autoTester->setBranchText(GIT_HUB_DEFAULT_BRANCH); } } diff --git a/tools/auto-tester/src/Test.h b/tools/auto-tester/src/Test.h index 07facdd10a..853e9c98e2 100644 --- a/tools/auto-tester/src/Test.h +++ b/tools/auto-tester/src/Test.h @@ -117,6 +117,8 @@ private: QStringList _resultImagesFullFilenames; // Used for accessing GitHub + const QString GIT_HUB_DEFAULT_USER{ "highfidelity" }; + const QString GIT_HUB_DEFAULT_BRANCH{ "master" }; const QString GIT_HUB_REPOSITORY{ "hifi_tests" }; const QString DATETIME_FORMAT{ "yyyy-MM-dd_hh-mm-ss" }; diff --git a/tools/auto-tester/src/ui/AutoTester.cpp b/tools/auto-tester/src/ui/AutoTester.cpp index 7534604afb..1cf5526ee0 100644 --- a/tools/auto-tester/src/ui/AutoTester.cpp +++ b/tools/auto-tester/src/ui/AutoTester.cpp @@ -17,8 +17,10 @@ AutoTester::AutoTester(QWidget *parent) : QMainWindow(parent) { _ui.setupUi(this); + _ui.checkBoxInteractiveMode->setChecked(true); _ui.progressBar->setVisible(false); + _ui.tabWidget->setCurrentIndex(0); _signalMapper = new QSignalMapper(); @@ -26,8 +28,7 @@ AutoTester::AutoTester(QWidget *parent) : QMainWindow(parent) { connect(_ui.actionAbout, &QAction::triggered, this, &AutoTester::about); #ifndef Q_OS_WIN - _ui.hideTaskbarButton->setVisible(false); - _ui.showTaskbarButton->setVisible(false); + _ui.tabWidget->setTabEnabled(3, false); #endif } @@ -40,6 +41,16 @@ void AutoTester::runFromCommandLine(const QString& testFolder, const QString& br _test->startTestsEvaluation(testFolder, branch, user); } +void AutoTester::on_tabWidget_currentChanged(int index) { + if (index == 1 || index == 2) { + _ui.userTextEdit->setDisabled(false); + _ui.branchTextEdit->setDisabled(false); + } else { + _ui.userTextEdit->setDisabled(true); + _ui.branchTextEdit->setDisabled(true); + } +} + void AutoTester::on_evaluateTestsButton_clicked() { _test->startTestsEvaluation(); } diff --git a/tools/auto-tester/src/ui/AutoTester.h b/tools/auto-tester/src/ui/AutoTester.h index a42c76bb4d..1acde4b118 100644 --- a/tools/auto-tester/src/ui/AutoTester.h +++ b/tools/auto-tester/src/ui/AutoTester.h @@ -38,6 +38,8 @@ public: QString getSelectedBranch(); private slots: + void on_tabWidget_currentChanged(int index); + void on_evaluateTestsButton_clicked(); void on_createRecursiveScriptButton_clicked(); void on_createAllRecursiveScriptsButton_clicked(); diff --git a/tools/auto-tester/src/ui/AutoTester.ui b/tools/auto-tester/src/ui/AutoTester.ui index badd91a2c0..ab9ebcdc25 100644 --- a/tools/auto-tester/src/ui/AutoTester.ui +++ b/tools/auto-tester/src/ui/AutoTester.ui @@ -6,8 +6,8 @@ 0 0 - 645 - 814 + 432 + 734 @@ -17,9 +17,9 @@ - 380 - 620 - 101 + 166 + 610 + 100 40 @@ -27,157 +27,258 @@ Close - + - 20 - 30 - 220 - 40 + 12 + 140 + 408 + 461 - - Create Tests + + 3 + + + Create Tests + + + + + 96 + 20 + 220 + 40 + + + + Create Tests + + + + + + 96 + 100 + 220 + 40 + + + + Create MD file + + + + + + 96 + 150 + 220 + 40 + + + + Create all MD files + + + + + + 96 + 230 + 220 + 40 + + + + Create Tests Outline + + + + + + 96 + 310 + 220 + 40 + + + + Create Recursive Script + + + + + + 96 + 360 + 220 + 40 + + + + Create all Recursive Scripts + + + + + + Evaluate Results + + + + + 90 + 100 + 255 + 23 + + + + 24 + + + + + + 90 + 50 + 131 + 20 + + + + <html><head/><body><p>If unchecked, will not show results during evaluation</p></body></html> + + + Interactive Mode + + + + + + 200 + 40 + 101 + 40 + + + + Evaluate Test + + + + + + TestRail Interface + + + + + 180 + 160 + 161 + 40 + + + + Update TestRail Run Results + + + + + + 80 + 40 + 95 + 20 + + + + Python + + + true + + + + + + 180 + 100 + 161 + 40 + + + + Create TestRail Run + + + + + + 180 + 40 + 161 + 40 + + + + Create TestRail Test Cases + + + + + + 80 + 60 + 95 + 20 + + + + XML + + + + + + Windows Taskbar + + + + + 100 + 100 + 211 + 40 + + + + Hide Windows Taskbar + + + + + + 100 + 170 + 211 + 40 + + + + Show Windows Taskbar + + + - + - 430 - 490 - 101 - 40 - - - - Evaluate Test - - - - - - 330 - 340 - 220 - 40 - - - - Create Recursive Script - - - - - - 320 - 500 - 131 - 20 - - - - <html><head/><body><p>If unchecked, will not show results during evaluation</p></body></html> - - - Interactive Mode - - - - - - 320 - 550 - 255 - 23 - - - - 24 - - - - - - 330 - 400 - 220 - 40 - - - - Create all Recursive Scripts - - - - - - 20 - 110 - 220 - 40 - - - - Create MD file - - - - - - 20 - 160 - 220 - 40 - - - - Create all MD files - - - - - - 20 - 250 - 220 - 40 - - - - Create Tests Outline - - - - - - 10 - 440 - 211 - 40 - - - - Show Windows Taskbar - - - - - - 10 - 390 - 211 - 40 - - - - Hide Windows Taskbar - - - - - - 330 - 55 + 110 + 90 81 16 @@ -191,11 +292,31 @@ GitHub Branch - + - 330 - 15 + 200 + 85 + 140 + 24 + + + + + + + 200 + 47 + 140 + 24 + + + + + + + 110 + 50 81 16 @@ -209,101 +330,13 @@ GitHub User - - - - 420 - 12 - 140 - 24 - - - - - - - 420 - 50 - 140 - 24 - - - - - - - 410 - 100 - 161 - 40 - - - - Create TestRail Test Cases - - - - - - 310 - 100 - 95 - 20 - - - - Python - - - true - - - - - - 310 - 120 - 95 - 20 - - - - XML - - - - - - 410 - 160 - 161 - 40 - - - - Create TestRail Run - - - - - - 410 - 220 - 161 - 40 - - - - Update TestRail Run Results - - 0 0 - 645 + 432 21 From 32165dff406b20bf474dd5d518971abfdc858de7 Mon Sep 17 00:00:00 2001 From: r3tk0n Date: Tue, 7 Aug 2018 14:31:48 -0700 Subject: [PATCH 209/332] Fixed rotations in MyAvatar::goToFeetLocation() --- interface/src/avatar/MyAvatar.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 5a5d99d6f0..0d7b00da78 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2636,12 +2636,7 @@ void MyAvatar::goToFeetLocation(const glm::vec3& newPosition, glm::vec3 localFeetPos = shapeInfo.getOffset() - glm::vec3(0.0f, halfExtents.y + halfExtents.x, 0.0f); glm::mat4 localFeet = createMatFromQuatAndPos(Quaternions::IDENTITY, localFeetPos); - glm::mat4 worldFeet; - if (hasOrientation) { - worldFeet = createMatFromQuatAndPos(newOrientation, newPosition); - } else { - worldFeet = createMatFromQuatAndPos(Quaternions::IDENTITY, newPosition); - } + glm::mat4 worldFeet = createMatFromQuatAndPos(Quaternions::IDENTITY, newPosition); glm::mat4 avatarMat = worldFeet * glm::inverse(localFeet); From 6ff0b9d41777c0d848d9c71f239445e7b209fb0b Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 7 Aug 2018 15:25:56 -0700 Subject: [PATCH 210/332] fix debug tools --- .../render/src/render/DrawSceneOctree.cpp | 117 ++++++++---------- libraries/render/src/render/DrawSceneOctree.h | 5 +- libraries/render/src/render/DrawStatus.cpp | 57 ++++----- libraries/render/src/render/DrawStatus.h | 7 +- libraries/render/src/render/Item.h | 1 + .../render/src/render/drawCellBounds.slv | 1 - .../render/src/render/drawItemBounds.slv | 4 - .../developer/utilities/render/culling.qml | 16 ++- 8 files changed, 90 insertions(+), 118 deletions(-) diff --git a/libraries/render/src/render/DrawSceneOctree.cpp b/libraries/render/src/render/DrawSceneOctree.cpp index f733fa5eb1..2cb8a5d8ef 100644 --- a/libraries/render/src/render/DrawSceneOctree.cpp +++ b/libraries/render/src/render/DrawSceneOctree.cpp @@ -22,10 +22,8 @@ #include "Args.h" - using namespace render; - const gpu::PipelinePointer DrawSceneOctree::getDrawCellBoundsPipeline() { if (!_drawCellBoundsPipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawCellBounds); @@ -71,7 +69,6 @@ void DrawSceneOctree::run(const RenderContextPointer& renderContext, const ItemS std::static_pointer_cast(renderContext->jobConfig)->numAllocatedCells = (int)scene->getSpatialTree().getNumAllocatedCells(); std::static_pointer_cast(renderContext->jobConfig)->numFreeCells = (int)scene->getSpatialTree().getNumFreeCells(); - gpu::doInBatch("DrawSceneOctree::run", args->_context, [&](gpu::Batch& batch) { glm::mat4 projMat; Transform viewMat; @@ -86,44 +83,30 @@ void DrawSceneOctree::run(const RenderContextPointer& renderContext, const ItemS // bind the one gpu::Pipeline we need batch.setPipeline(getDrawCellBoundsPipeline()); - if (_showVisibleCells) { - - for (const auto& cellID : inSelection.cellSelection.insideCells) { + auto drawCellBounds = [this, &scene, &batch](const std::vector& cells) { + for (const auto& cellID : cells) { auto cell = scene->getSpatialTree().getConcreteCell(cellID); auto cellLoc = cell.getlocation(); glm::ivec4 cellLocation(cellLoc.pos.x, cellLoc.pos.y, cellLoc.pos.z, cellLoc.depth); - bool doDraw = true; - if (cell.isBrickEmpty() || !cell.hasBrick()) { + bool empty = cell.isBrickEmpty() || !cell.hasBrick(); + if (empty) { if (!_showEmptyCells) { - doDraw = false; + continue; } - cellLocation.w *= -1; + cellLocation.w *= -1.0; + } else if (!empty && !_showVisibleCells) { + continue; } - if (doDraw) { - batch._glUniform4iv(gpu::slot::uniform::Extra0, 1, ((const int*)(&cellLocation))); - batch.draw(gpu::LINES, 24, 0); - } - } - for (const auto& cellID : inSelection.cellSelection.partialCells) { - auto cell = scene->getSpatialTree().getConcreteCell(cellID); - auto cellLoc = cell.getlocation(); - glm::ivec4 cellLocation(cellLoc.pos.x, cellLoc.pos.y, cellLoc.pos.z, cellLoc.depth); - - bool doDraw = true; - if (cell.isBrickEmpty() || !cell.hasBrick()) { - if (!_showEmptyCells) { - doDraw = false; - } - cellLocation.w *= -1; - } - if (doDraw) { - batch._glUniform4iv(gpu::slot::uniform::Extra0, 1, ((const int*)(&cellLocation))); - batch.draw(gpu::LINES, 24, 0); - } + batch._glUniform4iv(gpu::slot::uniform::Extra0, 1, ((const int*)(&cellLocation))); + batch.draw(gpu::LINES, 24, 0); } - } + }; + + drawCellBounds(inSelection.cellSelection.insideCells); + drawCellBounds(inSelection.cellSelection.partialCells); + // Draw the LOD Reticle { float angle = glm::degrees(getPerspectiveAccuracyAngle(args->_sizeScale, args->_boundaryLevelAdjust)); @@ -169,6 +152,19 @@ void DrawItemSelection::run(const RenderContextPointer& renderContext, const Ite RenderArgs* args = renderContext->args; auto& scene = renderContext->_scene; + if (!_boundsBufferInside) { + _boundsBufferInside = std::make_shared(sizeof(render::ItemBound)); + } + if (!_boundsBufferInsideSubcell) { + _boundsBufferInsideSubcell = std::make_shared(sizeof(render::ItemBound)); + } + if (!_boundsBufferPartial) { + _boundsBufferPartial = std::make_shared(sizeof(render::ItemBound)); + } + if (!_boundsBufferPartialSubcell) { + _boundsBufferPartialSubcell = std::make_shared(sizeof(render::ItemBound)); + } + gpu::doInBatch("DrawItemSelection::run", args->_context, [&](gpu::Batch& batch) { glm::mat4 projMat; Transform viewMat; @@ -183,48 +179,35 @@ void DrawItemSelection::run(const RenderContextPointer& renderContext, const Ite // bind the one gpu::Pipeline we need batch.setPipeline(getDrawItemBoundPipeline()); + auto drawItemBounds = [&](const render::ItemIDs itemIDs, const gpu::BufferPointer buffer) { + render::ItemBounds itemBounds; + for (const auto& itemID : itemIDs) { + auto& item = scene->getItem(itemID); + auto itemBound = item.getBound(); + if (!itemBound.isInvalid()) { + itemBounds.emplace_back(itemID, itemBound); + } + } + + if (itemBounds.size() > 0) { + buffer->setData(itemBounds.size() * sizeof(render::ItemBound), (const gpu::Byte*) itemBounds.data()); + batch.setResourceBuffer(0, buffer); + batch.draw(gpu::LINES, (gpu::uint32) itemBounds.size() * 24, 0); + } + }; + if (_showInsideItems) { - for (const auto& itemID : inSelection.insideItems) { - auto& item = scene->getItem(itemID); - auto itemBound = item.getBound(); - auto itemCell = scene->getSpatialTree().getCellLocation(item.getCell()); - glm::ivec4 cellLocation(0, 0, 0, itemCell.depth); - - batch.draw(gpu::LINES, 24, 0); - } + drawItemBounds(inSelection.insideItems, _boundsBufferInside); } - if (_showInsideSubcellItems) { - for (const auto& itemID : inSelection.insideSubcellItems) { - auto& item = scene->getItem(itemID); - auto itemBound = item.getBound(); - auto itemCell = scene->getSpatialTree().getCellLocation(item.getCell()); - glm::ivec4 cellLocation(0, 0, 1, itemCell.depth); - - batch.draw(gpu::LINES, 24, 0); - } + drawItemBounds(inSelection.insideSubcellItems, _boundsBufferInsideSubcell); } - if (_showPartialItems) { - for (const auto& itemID : inSelection.partialItems) { - auto& item = scene->getItem(itemID); - auto itemBound = item.getBound(); - auto itemCell = scene->getSpatialTree().getCellLocation(item.getCell()); - glm::ivec4 cellLocation(0, 0, 0, itemCell.depth); - - batch.draw(gpu::LINES, 24, 0); - } + drawItemBounds(inSelection.partialItems, _boundsBufferPartial); } - if (_showPartialSubcellItems) { - for (const auto& itemID : inSelection.partialSubcellItems) { - auto& item = scene->getItem(itemID); - auto itemBound = item.getBound(); - auto itemCell = scene->getSpatialTree().getCellLocation(item.getCell()); - glm::ivec4 cellLocation(0, 0, 1, itemCell.depth); - - batch.draw(gpu::LINES, 24, 0); - } + drawItemBounds(inSelection.partialSubcellItems, _boundsBufferPartialSubcell); } + batch.setResourceBuffer(0, 0); }); } diff --git a/libraries/render/src/render/DrawSceneOctree.h b/libraries/render/src/render/DrawSceneOctree.h index 54c14e45f2..0b2cd6f685 100644 --- a/libraries/render/src/render/DrawSceneOctree.h +++ b/libraries/render/src/render/DrawSceneOctree.h @@ -52,7 +52,6 @@ namespace render { class DrawSceneOctree { gpu::PipelinePointer _drawCellBoundsPipeline; - gpu::BufferPointer _cells; gpu::PipelinePointer _drawLODReticlePipeline; gpu::PipelinePointer _drawItemBoundPipeline; @@ -107,6 +106,10 @@ namespace render { class DrawItemSelection { gpu::PipelinePointer _drawItemBoundPipeline; + gpu::BufferPointer _boundsBufferInside; + gpu::BufferPointer _boundsBufferInsideSubcell; + gpu::BufferPointer _boundsBufferPartial; + gpu::BufferPointer _boundsBufferPartialSubcell; bool _showInsideItems; // initialized by Config bool _showInsideSubcellItems; // initialized by Config diff --git a/libraries/render/src/render/DrawStatus.cpp b/libraries/render/src/render/DrawStatus.cpp index 1c5ab27507..9b7d4ace2b 100644 --- a/libraries/render/src/render/DrawStatus.cpp +++ b/libraries/render/src/render/DrawStatus.cpp @@ -51,7 +51,7 @@ const gpu::PipelinePointer DrawStatus::getDrawItemBoundsPipeline() { const gpu::PipelinePointer DrawStatus::getDrawItemStatusPipeline() { if (!_drawItemStatusPipeline) { - gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::blurGaussianDepthAwareV); + gpu::ShaderPointer program = gpu::Shader::createProgram(shader::render::program::drawItemStatus); auto state = std::make_shared(); @@ -92,36 +92,30 @@ void DrawStatus::run(const RenderContextPointer& renderContext, const Input& inp const auto& inItems = input.get0(); const auto jitter = input.get1(); - // FIrst thing, we collect the bound and the status for all the items we want to render + // First thing, we collect the bound and the status for all the items we want to render int nbItems = 0; + render::ItemBounds itemBounds; + std::vector> itemStatus; { - _itemBounds.resize(inItems.size()); - _itemStatus.resize(inItems.size()); - _itemCells.resize(inItems.size()); - -// AABox* itemAABox = reinterpret_cast (_itemBounds->editData()); -// glm::ivec4* itemStatus = reinterpret_cast (_itemStatus->editData()); -// Octree::Location* itemCell = reinterpret_cast (_itemCells->editData()); for (size_t i = 0; i < inItems.size(); ++i) { const auto& item = inItems[i]; if (!item.bound.isInvalid()) { if (!item.bound.isNull()) { - _itemBounds[i] = item.bound; + itemBounds.emplace_back(render::ItemBound(item.id, item.bound)); } else { - _itemBounds[i].setBox(item.bound.getCorner(), 0.1f); + itemBounds.emplace_back(item.id, AABox(item.bound.getCorner(), 0.1f)); } - auto& itemScene = scene->getItem(item.id); - _itemCells[i] = scene->getSpatialTree().getCellLocation(itemScene.getCell()); auto itemStatusPointer = itemScene.getStatus(); if (itemStatusPointer) { + itemStatus.push_back(std::pair()); // Query the current status values, this is where the statusGetter lambda get called auto&& currentStatusValues = itemStatusPointer->getCurrentValues(); int valueNum = 0; for (int vec4Num = 0; vec4Num < NUM_STATUS_VEC4_PER_ITEM; vec4Num++) { - auto& value = (vec4Num ? _itemStatus[i].first : _itemStatus[i].second); + auto& value = (vec4Num ? itemStatus[nbItems].first : itemStatus[nbItems].second); value = glm::ivec4(Item::Status::Value::INVALID.getPackedData()); for (int component = 0; component < VEC4_LENGTH; component++) { valueNum = vec4Num * VEC4_LENGTH + component; @@ -131,7 +125,8 @@ void DrawStatus::run(const RenderContextPointer& renderContext, const Input& inp } } } else { - _itemStatus[i].first = _itemStatus[i].second = glm::ivec4(Item::Status::Value::INVALID.getPackedData()); + auto invalid = glm::ivec4(Item::Status::Value::INVALID.getPackedData()); + itemStatus.emplace_back(invalid, invalid); } nbItems++; } @@ -142,7 +137,11 @@ void DrawStatus::run(const RenderContextPointer& renderContext, const Input& inp return; } - // Allright, something to render let's do it + if (!_boundsBuffer) { + _boundsBuffer = std::make_shared(sizeof(render::ItemBound)); + } + + // Alright, something to render let's do it gpu::doInBatch("DrawStatus::run", args->_context, [&](gpu::Batch& batch) { glm::mat4 projMat; Transform viewMat; @@ -158,32 +157,24 @@ void DrawStatus::run(const RenderContextPointer& renderContext, const Input& inp // bind the one gpu::Pipeline we need batch.setPipeline(getDrawItemBoundsPipeline()); - //AABox* itemAABox = reinterpret_cast (_itemBounds->editData()); - //glm::ivec4* itemStatus = reinterpret_cast (_itemStatus->editData()); - //Octree::Location* itemCell = reinterpret_cast (_itemCells->editData()); - - const unsigned int VEC3_ADRESS_OFFSET = 3; + _boundsBuffer->setData(itemBounds.size() * sizeof(render::ItemBound), (const gpu::Byte*) itemBounds.data()); if (_showDisplay) { - for (int i = 0; i < nbItems; i++) { - //batch._glUniform3fv(gpu::slot::uniform::Extra0, 1, (const float*)&(_itemBounds[i])); - //batch._glUniform3fv(gpu::slot::uniform::Extra1, 1, ((const float*)&(_itemBounds[i])) + VEC3_ADRESS_OFFSET); - //glm::ivec4 cellLocation(_itemCells[i].pos, _itemCells[i].depth); - //batch._glUniform4iv(_drawItemCellLocLoc, 1, ((const int*)(&cellLocation))); - batch.draw(gpu::LINES, 24, 0); - } + batch.setResourceBuffer(0, _boundsBuffer); + batch.draw(gpu::LINES, (gpu::uint32) itemBounds.size() * 24, 0); } + batch.setResourceBuffer(0, 0); batch.setResourceTexture(0, gpu::TextureView(getStatusIconMap(), 0)); batch.setPipeline(getDrawItemStatusPipeline()); if (_showNetwork) { - for (int i = 0; i < nbItems; i++) { - batch._glUniform3fv(gpu::slot::uniform::Extra0, 1, (const float*)&(_itemBounds[i])); - batch._glUniform3fv(gpu::slot::uniform::Extra1, 1, ((const float*)&(_itemBounds[i])) + VEC3_ADRESS_OFFSET); - batch._glUniform4iv(gpu::slot::uniform::Extra2, 1, (const int*)&(_itemStatus[i].first)); - batch._glUniform4iv(gpu::slot::uniform::Extra3, 1, (const int*)&(_itemStatus[i].second)); + for (size_t i = 0; i < itemBounds.size(); i++) { + batch._glUniform3fv(gpu::slot::uniform::Extra0, 1, (const float*)&itemBounds[i].bound.getCorner()); + batch._glUniform3fv(gpu::slot::uniform::Extra1, 1, ((const float*)&itemBounds[i].bound.getScale())); + batch._glUniform4iv(gpu::slot::uniform::Extra2, 1, (const int*)&(itemStatus[i].first)); + batch._glUniform4iv(gpu::slot::uniform::Extra3, 1, (const int*)&(itemStatus[i].second)); batch.draw(gpu::TRIANGLES, 24 * NUM_STATUS_VEC4_PER_ITEM, 0); } } diff --git a/libraries/render/src/render/DrawStatus.h b/libraries/render/src/render/DrawStatus.h index 4228d1bd8d..96269fda4d 100644 --- a/libraries/render/src/render/DrawStatus.h +++ b/libraries/render/src/render/DrawStatus.h @@ -62,12 +62,7 @@ namespace render { gpu::PipelinePointer _drawItemBoundsPipeline; gpu::PipelinePointer _drawItemStatusPipeline; - std::vector _itemBounds; - std::vector> _itemStatus; - std::vector _itemCells; - //gpu::BufferPointer _itemBounds; - //gpu::BufferPointer _itemCells; - //gpu::BufferPointer _itemStatus; + gpu::BufferPointer _boundsBuffer; gpu::TexturePointer _statusIconMap; }; } diff --git a/libraries/render/src/render/Item.h b/libraries/render/src/render/Item.h index 28994d82b6..5ecfba2da8 100644 --- a/libraries/render/src/render/Item.h +++ b/libraries/render/src/render/Item.h @@ -321,6 +321,7 @@ inline QDebug operator<<(QDebug debug, const ItemFilter& me) { // Handy type to just pass the ID and the bound of an item class ItemBound { public: + ItemBound() {} ItemBound(ItemID id) : id(id) { } ItemBound(ItemID id, const AABox& bound) : id(id), bound(bound) { } diff --git a/libraries/render/src/render/drawCellBounds.slv b/libraries/render/src/render/drawCellBounds.slv index 8336885365..f3cc4c6411 100644 --- a/libraries/render/src/render/drawCellBounds.slv +++ b/libraries/render/src/render/drawCellBounds.slv @@ -24,7 +24,6 @@ layout(location=GPU_UNIFORM_EXTRA0) uniform ivec4 inCellLocation; layout(location=0) out vec4 varColor; - void main(void) { const vec4 UNIT_BOX[8] = vec4[8]( vec4(0.0, 0.0, 0.0, 1.0), diff --git a/libraries/render/src/render/drawItemBounds.slv b/libraries/render/src/render/drawItemBounds.slv index 059538de47..8925009160 100644 --- a/libraries/render/src/render/drawItemBounds.slv +++ b/libraries/render/src/render/drawItemBounds.slv @@ -20,10 +20,8 @@ <@include gpu/Color.slh@> <$declareColorWheel()$> - layout(location=GPU_UNIFORM_COLOR) uniform vec4 inColor; - struct ItemBound { vec4 id_boundPos; vec4 boundDim_s; @@ -48,8 +46,6 @@ ItemBound getItemBound(int i) { } #endif - - layout(location=0) out vec4 varColor; layout(location=1) out vec2 varTexcoord; diff --git a/scripts/developer/utilities/render/culling.qml b/scripts/developer/utilities/render/culling.qml index 2ce3cc1dea..801cb5b573 100644 --- a/scripts/developer/utilities/render/culling.qml +++ b/scripts/developer/utilities/render/culling.qml @@ -19,7 +19,7 @@ Column { Component.onCompleted: { sceneOctree.enabled = true; - itemSelection.enabled = true; + itemSelection.enabled = true; sceneOctree.showVisibleCells = false; sceneOctree.showEmptyCells = false; itemSelection.showInsideItems = false; @@ -29,9 +29,9 @@ Column { } Component.onDestruction: { sceneOctree.enabled = false; - itemSelection.enabled = false; + itemSelection.enabled = false; Render.getConfig("RenderMainView.FetchSceneSelection").freezeFrustum = false; - Render.getConfig("RenderMainView.CullSceneSelection").freezeFrustum = false; + Render.getConfig("RenderMainView.CullSceneSelection").freezeFrustum = false; } GroupBox { @@ -44,7 +44,7 @@ Column { CheckBox { text: "Freeze Culling Frustum" checked: false - onCheckedChanged: { + onCheckedChanged: { Render.getConfig("RenderMainView.FetchSceneSelection").freezeFrustum = checked; Render.getConfig("RenderMainView.CullSceneSelection").freezeFrustum = checked; } @@ -88,15 +88,19 @@ Column { text: "Partial Sub-cell Items" checked: false onCheckedChanged: { root.itemSelection.showPartialSubcellItems = checked } - } + } } } - } + } GroupBox { title: "Render Items" + anchors.left: parent.left; + anchors.right: parent.right; Column{ + anchors.left: parent.left; + anchors.right: parent.right; Repeater { model: [ "Opaque:RenderMainView.DrawOpaqueDeferred", "Transparent:RenderMainView.DrawTransparentDeferred", "Light:RenderMainView.DrawLight", "Opaque Overlays:RenderMainView.DrawOverlay3DOpaque", "Transparent Overlays:RenderMainView.DrawOverlay3DTransparent" ] From cd186aa657b09e612b55a62ec67300b2893e24c3 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 7 Aug 2018 15:56:49 -0700 Subject: [PATCH 211/332] Removed unneeded MD file. --- tools/auto-tester/ReadMe.md | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 tools/auto-tester/ReadMe.md diff --git a/tools/auto-tester/ReadMe.md b/tools/auto-tester/ReadMe.md deleted file mode 100644 index 57ec7ea623..0000000000 --- a/tools/auto-tester/ReadMe.md +++ /dev/null @@ -1,7 +0,0 @@ -After building auto-tester, it needs to be deployed to Amazon SW - -* In folder hifi/build/tools/auto-tester - * Right click on the Release folder - * Select 7-Zip -> Add to archive - * Select Option ```Create SFX archive``` to create Release.exe -* Use Cyberduck (or any other AWS S3 client) to copy Release.exe to hifi-content/nissim/autoTester/ \ No newline at end of file From b8c7971ebe5ed8a997fce4a4270ab4d91a8db6c5 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 7 Aug 2018 17:03:44 -0700 Subject: [PATCH 212/332] WIP - working on Help. --- tools/auto-tester/CMakeLists.txt | 2 +- tools/auto-tester/README.md | 83 +++++++++++++++++++++++++ tools/auto-tester/src/ui/AutoTester.cpp | 6 ++ tools/auto-tester/src/ui/AutoTester.h | 1 + tools/auto-tester/src/ui/AutoTester.ui | 6 ++ tools/auto-tester/src/ui/BusyWindow.cpp | 4 -- 6 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 tools/auto-tester/README.md diff --git a/tools/auto-tester/CMakeLists.txt b/tools/auto-tester/CMakeLists.txt index 1546a35f4c..940de5d7bb 100644 --- a/tools/auto-tester/CMakeLists.txt +++ b/tools/auto-tester/CMakeLists.txt @@ -5,7 +5,7 @@ project(${TARGET_NAME}) SET (CMAKE_AUTOUIC ON) SET (CMAKE_AUTOMOC ON) -setup_hifi_project (Core Widgets Network Xml) +setup_hifi_project (Core Widgets Network Xml WebEngineWidgets) link_hifi_libraries () # FIX: Qt was built with -reduce-relocations diff --git a/tools/auto-tester/README.md b/tools/auto-tester/README.md new file mode 100644 index 0000000000..aa2cea9352 --- /dev/null +++ b/tools/auto-tester/README.md @@ -0,0 +1,83 @@ +# Auto Tester + +The auto-tester is a stand alone application that provides a mechanism for regression testing. The general idea is simple: +* Each test folder has a script that produces a set of snapshots. +* The snapshots are compared to a 'canonical' set of images that have been produced beforehand. +* The result, if any test failed, is a zipped folder describing the failure. + +Auto-tester has 4 functions, separated into 4 tabs: +1. Creating tests, MD files and recursive scripts +2. Evaluating the results of running tests +3. TestRail interface +4. Windows task bar utility (Windows only) + + +## Evaluation - general +A checkbox is provided for de-selecting interactive mode. If this checkbox ix selected then each error will be displayed to the user; otherwise, the evaluation will procede till completion. In both cases, all errors are logged to file. +For each failed test, a zipped folder is created within the test folder, named *TestResults*. This folder contains a folder for each failed test named *Failure_n*, numbered sequentially. Each folder contains 4 files: +1. Expected Image +2. Actual Image +3. Difference Image +4. TestResults - a text file providing details of the test folder, the original image names, and the size of the mismatch. +### Evaluate Test +Evaluating a test is performed after running a **test.js** script to create new snapshots. After selecting the folder, the images are compared in lexical order. If the similarity between any image pair does not pass a fixed threshold, the image pair is displayed and the user can select to accept the difference, fail this specific test case, or abort testing. +![](./autoTesterMismatchExample.png) +### Evaluate Tests Recursively +This is a recursive version of the previous function. Auto-tester will recurse through all folders from the selected folder. A test will be evaluated if the following is true: +* The folder contains a **test.js** script +* The number of actual and expected snapshots is the same (see Create Test for an explanation) +### Create a recursive test script +Auto-tester will create a script named **allTests.js** that will call all **test.js** scripts found in the folder, and any subfolders. An example of the script created is: +``` +// This is an automatically generated file, created by auto-tester +var test1 = Script.require("file:///D:/GitHub/hifi-tests/tests/content/entity/zone/ambientLightInheritance/test.js"); +var test2 = Script.require("file:///D:/GitHub/hifi-tests/tests/content/entity/zone/create/test.js"); +var test3 = Script.require("file:///D:/GitHub/hifi-tests/tests/content/entity/zone/createMultipleZones/test.js"); + +var test1HasNotStarted = true; +var test2HasNotStarted = true; +var test3HasNotStarted = true; + +// Check every second if the current test is complete and the next test can be run +var testTimer = Script.setInterval( + function() { + if (test1HasNotStarted) { + test1HasNotStarted = false; + test1.test(); + print("******started test 1******"); + } + + if (test1.complete && test2HasNotStarted) { + test2HasNotStarted = false; + test2.test(); + print("******started test 2******"); + } + + if (test2.complete && test3HasNotStarted) { + test3HasNotStarted = false; + test3.test(); + print("******started test 3******"); + } + + if (test3.complete) { + print("******stopping******"); + Script.stop(); + } + + }, + + 1000 +); + +// Stop the timer and clear the module cache +Script.scriptEnding.connect( + function() { + Script.clearInterval(testTimer); + Script.require.cache = {}; + } +); +``` +### Create a Test Case +A test case is created after running the test script. Running the script produces a series of snapshots, named **hifi-snap-by-**_user name_**-on-YYYY-MM-DD_HH-MM-SS.jpg**. This function simply renames these files to **ExpectedImage_1.jpg**, **ExpectedImage_2.jpg** and so on. These files can be added to version control as they are a fixed asset of the test. +### Delete old snapshots +This button recursively deletes all snapshots created for testign (not the Expected Images). diff --git a/tools/auto-tester/src/ui/AutoTester.cpp b/tools/auto-tester/src/ui/AutoTester.cpp index 1cf5526ee0..60fb28583e 100644 --- a/tools/auto-tester/src/ui/AutoTester.cpp +++ b/tools/auto-tester/src/ui/AutoTester.cpp @@ -26,6 +26,7 @@ AutoTester::AutoTester(QWidget *parent) : QMainWindow(parent) { connect(_ui.actionClose, &QAction::triggered, this, &AutoTester::on_closeButton_clicked); connect(_ui.actionAbout, &QAction::triggered, this, &AutoTester::about); + connect(_ui.actionContent, &QAction::triggered, this, &AutoTester::content); #ifndef Q_OS_WIN _ui.tabWidget->setTabEnabled(3, false); @@ -184,6 +185,11 @@ void AutoTester::about() { QMessageBox::information(0, "About", QString("Built ") + __DATE__ + " : " + __TIME__); } +void AutoTester::content() { + // BrowserWindow browserWindow; + // browserWindow.show(); +} + void AutoTester::setUserText(const QString& user) { _ui.userTextEdit->setText(user); } diff --git a/tools/auto-tester/src/ui/AutoTester.h b/tools/auto-tester/src/ui/AutoTester.h index 1acde4b118..75acff0de0 100644 --- a/tools/auto-tester/src/ui/AutoTester.h +++ b/tools/auto-tester/src/ui/AutoTester.h @@ -65,6 +65,7 @@ private slots: void saveImage(int index); void about(); + void content(); private: Ui::AutoTesterClass _ui; diff --git a/tools/auto-tester/src/ui/AutoTester.ui b/tools/auto-tester/src/ui/AutoTester.ui index ab9ebcdc25..e37c7c86be 100644 --- a/tools/auto-tester/src/ui/AutoTester.ui +++ b/tools/auto-tester/src/ui/AutoTester.ui @@ -351,6 +351,7 @@ Help + @@ -374,6 +375,11 @@ About + + + Content + + diff --git a/tools/auto-tester/src/ui/BusyWindow.cpp b/tools/auto-tester/src/ui/BusyWindow.cpp index 904dc47d75..8066d576f8 100644 --- a/tools/auto-tester/src/ui/BusyWindow.cpp +++ b/tools/auto-tester/src/ui/BusyWindow.cpp @@ -9,10 +9,6 @@ // #include "BusyWindow.h" -#include - -#include - BusyWindow::BusyWindow(QWidget *parent) { setupUi(this); } From 76e0e8d3fa5ba083cfbb90eccfaf3424211c9e67 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 7 Aug 2018 17:13:34 -0700 Subject: [PATCH 213/332] WIP - working on Help. --- tools/auto-tester/src/ui/AutoTester.cpp | 6 +- tools/auto-tester/src/ui/HelpWindow.cpp | 14 ++++ tools/auto-tester/src/ui/HelpWindow.h | 22 +++++ tools/auto-tester/src/ui/HelpWindow.ui | 102 ++++++++++++++++++++++++ 4 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 tools/auto-tester/src/ui/HelpWindow.cpp create mode 100644 tools/auto-tester/src/ui/HelpWindow.h create mode 100644 tools/auto-tester/src/ui/HelpWindow.ui diff --git a/tools/auto-tester/src/ui/AutoTester.cpp b/tools/auto-tester/src/ui/AutoTester.cpp index 60fb28583e..36ba36e55e 100644 --- a/tools/auto-tester/src/ui/AutoTester.cpp +++ b/tools/auto-tester/src/ui/AutoTester.cpp @@ -10,6 +10,8 @@ // #include "AutoTester.h" +#include "HelpWindow.h" + #ifdef Q_OS_WIN #include #include @@ -186,8 +188,8 @@ void AutoTester::about() { } void AutoTester::content() { - // BrowserWindow browserWindow; - // browserWindow.show(); + HelpWindow helpWindow; + helpWindow.show(); } void AutoTester::setUserText(const QString& user) { diff --git a/tools/auto-tester/src/ui/HelpWindow.cpp b/tools/auto-tester/src/ui/HelpWindow.cpp new file mode 100644 index 0000000000..00dcf5de01 --- /dev/null +++ b/tools/auto-tester/src/ui/HelpWindow.cpp @@ -0,0 +1,14 @@ +// +// HelpWindow.cpp +// +// Created by Nissim Hadar on 7 Aug 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include "HelpWindow.h" + +HelpWindow::HelpWindow(QWidget *parent) { + setupUi(this); +} diff --git a/tools/auto-tester/src/ui/HelpWindow.h b/tools/auto-tester/src/ui/HelpWindow.h new file mode 100644 index 0000000000..5cda62f116 --- /dev/null +++ b/tools/auto-tester/src/ui/HelpWindow.h @@ -0,0 +1,22 @@ +// +// BusyWindow.h +// +// Created by Nissim Hadar on 7 Aug 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#ifndef hifi_HelpWindow_h +#define hifi_HelpWindow_h + +#include "ui_HelpWindow.h" + +class HelpWindow : public QDialog, public Ui::HelpWindow { + Q_OBJECT + +public: + HelpWindow(QWidget* parent = Q_NULLPTR); +}; + +#endif \ No newline at end of file diff --git a/tools/auto-tester/src/ui/HelpWindow.ui b/tools/auto-tester/src/ui/HelpWindow.ui new file mode 100644 index 0000000000..203017b508 --- /dev/null +++ b/tools/auto-tester/src/ui/HelpWindow.ui @@ -0,0 +1,102 @@ + + + HelpWindow + + + Qt::ApplicationModal + + + + 0 + 0 + 800 + 600 + + + + MarkDown Editor + + + + + 0 + 0 + 3 + 18 + + + + + + + 15 + 11 + 771 + 581 + + + + + + &Open... + + + Open document + + + Ctrl+O + + + + + &Save + + + Save current document + + + Ctrl+S + + + + + E&xit + + + Exit editor + + + Ctrl+Q + + + + + Save &As... + + + Save document under different name + + + + + &New + + + Create new document + + + Ctrl+N + + + + + + QWebEngineView + QWidget +

      qwebengineview.h
      + 1 + + + + + From 69812d04ae148e1080f6cf2cb8cb411f856683ca Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 7 Aug 2018 17:42:38 -0700 Subject: [PATCH 214/332] Reduce scope of CollisionPick shapeType to primitive shapes --- interface/src/raypick/PickScriptingInterface.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index 5d6151fe47..72606c8da6 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -242,11 +242,13 @@ unsigned int PickScriptingInterface::createParabolaPick(const QVariant& properti * A Shape defines a physical volume. * * @typedef {object} Shape -* @property {ShapeType} shapeType The type of shape to use. -* @property {string} modelURL - If shapeType is one of: "compound", "simple-hull", "simple-compound", or "static-mesh", this defines the model to load to generate the collision volume. +* @property {string} shapeType The type of shape to use. Can be one of the following: "box", "sphere", "capsule-x", "capsule-y", "capsule-z", "cylinder-x", "cylinder-y", "cylinder-z", "plane" * @property {Vec3} dimensions - The size to scale the shape to. */ +// TODO: Add this property to the Shape jsdoc above once model picks work properly +// * @property {string} modelURL - If shapeType is one of: "compound", "simple-hull", "simple-compound", or "static-mesh", this defines the model to load to generate the collision volume. + /**jsdoc * A set of properties that can be passed to {@link Picks.createPick} to create a new Collision Pick. From 1f4c0ebeb5b513abb50a9de4083a3daf695ff150 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 7 Aug 2018 22:55:45 -0700 Subject: [PATCH 215/332] WIP - working on Help. --- tools/auto-tester/src/ui/AutoTester.cpp | 4 - tools/auto-tester/src/ui/HelpWindow.cpp | 14 ---- tools/auto-tester/src/ui/HelpWindow.h | 22 ----- tools/auto-tester/src/ui/HelpWindow.ui | 102 ------------------------ 4 files changed, 142 deletions(-) delete mode 100644 tools/auto-tester/src/ui/HelpWindow.cpp delete mode 100644 tools/auto-tester/src/ui/HelpWindow.h delete mode 100644 tools/auto-tester/src/ui/HelpWindow.ui diff --git a/tools/auto-tester/src/ui/AutoTester.cpp b/tools/auto-tester/src/ui/AutoTester.cpp index 36ba36e55e..0be757b80c 100644 --- a/tools/auto-tester/src/ui/AutoTester.cpp +++ b/tools/auto-tester/src/ui/AutoTester.cpp @@ -10,8 +10,6 @@ // #include "AutoTester.h" -#include "HelpWindow.h" - #ifdef Q_OS_WIN #include #include @@ -188,8 +186,6 @@ void AutoTester::about() { } void AutoTester::content() { - HelpWindow helpWindow; - helpWindow.show(); } void AutoTester::setUserText(const QString& user) { diff --git a/tools/auto-tester/src/ui/HelpWindow.cpp b/tools/auto-tester/src/ui/HelpWindow.cpp deleted file mode 100644 index 00dcf5de01..0000000000 --- a/tools/auto-tester/src/ui/HelpWindow.cpp +++ /dev/null @@ -1,14 +0,0 @@ -// -// HelpWindow.cpp -// -// Created by Nissim Hadar on 7 Aug 2017. -// Copyright 2013 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// -#include "HelpWindow.h" - -HelpWindow::HelpWindow(QWidget *parent) { - setupUi(this); -} diff --git a/tools/auto-tester/src/ui/HelpWindow.h b/tools/auto-tester/src/ui/HelpWindow.h deleted file mode 100644 index 5cda62f116..0000000000 --- a/tools/auto-tester/src/ui/HelpWindow.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// BusyWindow.h -// -// Created by Nissim Hadar on 7 Aug 2017. -// Copyright 2013 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// -#ifndef hifi_HelpWindow_h -#define hifi_HelpWindow_h - -#include "ui_HelpWindow.h" - -class HelpWindow : public QDialog, public Ui::HelpWindow { - Q_OBJECT - -public: - HelpWindow(QWidget* parent = Q_NULLPTR); -}; - -#endif \ No newline at end of file diff --git a/tools/auto-tester/src/ui/HelpWindow.ui b/tools/auto-tester/src/ui/HelpWindow.ui deleted file mode 100644 index 203017b508..0000000000 --- a/tools/auto-tester/src/ui/HelpWindow.ui +++ /dev/null @@ -1,102 +0,0 @@ - - - HelpWindow - - - Qt::ApplicationModal - - - - 0 - 0 - 800 - 600 - - - - MarkDown Editor - - - - - 0 - 0 - 3 - 18 - - - - - - - 15 - 11 - 771 - 581 - - - - - - &Open... - - - Open document - - - Ctrl+O - - - - - &Save - - - Save current document - - - Ctrl+S - - - - - E&xit - - - Exit editor - - - Ctrl+Q - - - - - Save &As... - - - Save document under different name - - - - - &New - - - Create new document - - - Ctrl+N - - - - - - QWebEngineView - QWidget -
      qwebengineview.h
      - 1 -
      -
      - - -
      From 65d4a061a25fa04bf58866f8e7380a83f1ecd44f Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Wed, 8 Aug 2018 08:25:12 -0700 Subject: [PATCH 216/332] WIP - working on help. --- tools/auto-tester/src/ui/AutoTester.cpp | 14 +- tools/auto-tester/src/ui/AutoTester.h | 4 + tools/auto-tester/src/ui/HelpWindow.cpp | 189 +++++++++++++++++++++++ tools/auto-tester/src/ui/HelpWindow.h | 90 +++++++++++ tools/auto-tester/src/ui/HelpWindow.ui | 115 ++++++++++++++ tools/auto-tester/src/ui/document.cpp | 59 +++++++ tools/auto-tester/src/ui/document.h | 73 +++++++++ tools/auto-tester/src/ui/previewpage.cpp | 64 ++++++++ tools/auto-tester/src/ui/previewpage.h | 66 ++++++++ 9 files changed, 667 insertions(+), 7 deletions(-) create mode 100644 tools/auto-tester/src/ui/HelpWindow.cpp create mode 100644 tools/auto-tester/src/ui/HelpWindow.h create mode 100644 tools/auto-tester/src/ui/HelpWindow.ui create mode 100644 tools/auto-tester/src/ui/document.cpp create mode 100644 tools/auto-tester/src/ui/document.h create mode 100644 tools/auto-tester/src/ui/previewpage.cpp create mode 100644 tools/auto-tester/src/ui/previewpage.h diff --git a/tools/auto-tester/src/ui/AutoTester.cpp b/tools/auto-tester/src/ui/AutoTester.cpp index 0be757b80c..aa9c1ffdfb 100644 --- a/tools/auto-tester/src/ui/AutoTester.cpp +++ b/tools/auto-tester/src/ui/AutoTester.cpp @@ -15,7 +15,7 @@ #include #endif -AutoTester::AutoTester(QWidget *parent) : QMainWindow(parent) { +AutoTester::AutoTester(QWidget* parent) : QMainWindow(parent) { _ui.setupUi(this); _ui.checkBoxInteractiveMode->setChecked(true); @@ -65,7 +65,7 @@ void AutoTester::on_createAllRecursiveScriptsButton_clicked() { } void AutoTester::on_createTestsButton_clicked() { - _test->createTests(); + _test->createTests(); } void AutoTester::on_createMDFileButton_clicked() { @@ -130,7 +130,7 @@ void AutoTester::on_createXMLScriptRadioButton_clicked() { void AutoTester::downloadImage(const QUrl& url) { _downloaders.emplace_back(new Downloader(url, this)); - connect(_downloaders[_index], SIGNAL (downloaded()), _signalMapper, SLOT (map())); + connect(_downloaders[_index], SIGNAL(downloaded()), _signalMapper, SLOT(map())); _signalMapper->setMapping(_downloaders[_index], _index); @@ -156,7 +156,7 @@ void AutoTester::downloadImages(const QStringList& URLs, const QString& director downloadImage(imageURL); } - connect(_signalMapper, SIGNAL (mapped(int)), this, SLOT (saveImage(int))); + connect(_signalMapper, SIGNAL(mapped(int)), this, SLOT(saveImage(int))); } void AutoTester::saveImage(int index) { @@ -174,7 +174,7 @@ void AutoTester::saveImage(int index) { ++_numberOfImagesDownloaded; if (_numberOfImagesDownloaded == _numberOfImagesToDownload) { - disconnect(_signalMapper, SIGNAL (mapped(int)), this, SLOT (saveImage(int))); + disconnect(_signalMapper, SIGNAL(mapped(int)), this, SLOT(saveImage(int))); _test->finishTestsEvaluation(_isRunningFromCommandline, _ui.checkBoxInteractiveMode->isChecked(), _ui.progressBar); } else { _ui.progressBar->setValue(_numberOfImagesDownloaded); @@ -186,14 +186,14 @@ void AutoTester::about() { } void AutoTester::content() { + helpWindow.show(); } void AutoTester::setUserText(const QString& user) { _ui.userTextEdit->setText(user); } -QString AutoTester::getSelectedUser() -{ +QString AutoTester::getSelectedUser() { return _ui.userTextEdit->toPlainText(); } diff --git a/tools/auto-tester/src/ui/AutoTester.h b/tools/auto-tester/src/ui/AutoTester.h index 75acff0de0..e29da5b716 100644 --- a/tools/auto-tester/src/ui/AutoTester.h +++ b/tools/auto-tester/src/ui/AutoTester.h @@ -18,6 +18,8 @@ #include "../Downloader.h" #include "../Test.h" +#include "HelpWindow.h" + class AutoTester : public QMainWindow { Q_OBJECT @@ -85,6 +87,8 @@ private: int _index { 0 }; bool _isRunningFromCommandline { false }; + + HelpWindow helpWindow; }; #endif // hifi_AutoTester_h \ No newline at end of file diff --git a/tools/auto-tester/src/ui/HelpWindow.cpp b/tools/auto-tester/src/ui/HelpWindow.cpp new file mode 100644 index 0000000000..c6f3fcd2ee --- /dev/null +++ b/tools/auto-tester/src/ui/HelpWindow.cpp @@ -0,0 +1,189 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "helpwindow.h" +#include "previewpage.h" +#include "ui_helpwindow.h" + +#include +#include +#include +#include +#include +#include + +HelpWindow::HelpWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::HelpWindow) +{ + ui->setupUi(this); + ui->editor->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); + ui->preview->setContextMenuPolicy(Qt::NoContextMenu); + + PreviewPage *page = new PreviewPage(this); + ui->preview->setPage(page); + + connect(ui->editor, &QPlainTextEdit::textChanged, + [this]() { m_content.setText(ui->editor->toPlainText()); }); + + QWebChannel *channel = new QWebChannel(this); + channel->registerObject(QStringLiteral("content"), &m_content); + page->setWebChannel(channel); + + ui->preview->setUrl(QUrl("qrc:/index.html")); + + connect(ui->actionNew, &QAction::triggered, this, &HelpWindow::onFileNew); + connect(ui->actionOpen, &QAction::triggered, this, &HelpWindow::onFileOpen); + connect(ui->actionSave, &QAction::triggered, this, &HelpWindow::onFileSave); + connect(ui->actionSaveAs, &QAction::triggered, this, &HelpWindow::onFileSaveAs); + connect(ui->actionExit, &QAction::triggered, this, &HelpWindow::onExit); + + connect(ui->editor->document(), &QTextDocument::modificationChanged, + ui->actionSave, &QAction::setEnabled); + + QFile defaultTextFile(":/default.md"); + defaultTextFile.open(QIODevice::ReadOnly); + ui->editor->setPlainText(defaultTextFile.readAll()); +} + +HelpWindow::~HelpWindow() +{ + delete ui; +} + +void HelpWindow::openFile(const QString &path) +{ + QFile f(path); + if (!f.open(QIODevice::ReadOnly)) { + QMessageBox::warning(this, windowTitle(), + tr("Could not open file %1: %2").arg( + QDir::toNativeSeparators(path), f.errorString())); + return; + } + m_filePath = path; + ui->editor->setPlainText(f.readAll()); +} + +bool HelpWindow::isModified() const +{ + return ui->editor->document()->isModified(); +} + +void HelpWindow::onFileNew() +{ + if (isModified()) { + QMessageBox::StandardButton button = QMessageBox::question(this, windowTitle(), + tr("You have unsaved changes. Do you want to create a new document anyway?")); + if (button != QMessageBox::Yes) + return; + } + + m_filePath.clear(); + ui->editor->setPlainText(tr("## New document")); + ui->editor->document()->setModified(false); +} + +void HelpWindow::onFileOpen() +{ + if (isModified()) { + QMessageBox::StandardButton button = QMessageBox::question(this, windowTitle(), + tr("You have unsaved changes. Do you want to open a new document anyway?")); + if (button != QMessageBox::Yes) + return; + } + + QString path = QFileDialog::getOpenFileName(this, + tr("Open MarkDown File"), "", tr("MarkDown File (*.md)")); + if (path.isEmpty()) + return; + + openFile(path); +} + +void HelpWindow::onFileSave() +{ + if (m_filePath.isEmpty()) { + onFileSaveAs(); + return; + } + + QFile f(m_filePath); + if (!f.open(QIODevice::WriteOnly | QIODevice::Text)) { + QMessageBox::warning(this, windowTitle(), + tr("Could not write to file %1: %2").arg( + QDir::toNativeSeparators(m_filePath), f.errorString())); + return; + } + QTextStream str(&f); + str << ui->editor->toPlainText(); + + ui->editor->document()->setModified(false); +} + +void HelpWindow::onFileSaveAs() +{ + QString path = QFileDialog::getSaveFileName(this, + tr("Save MarkDown File"), "", tr("MarkDown File (*.md, *.markdown)")); + if (path.isEmpty()) + return; + m_filePath = path; + onFileSave(); +} + +void HelpWindow::onExit() +{ + if (isModified()) { + QMessageBox::StandardButton button = QMessageBox::question(this, windowTitle(), + tr("You have unsaved changes. Do you want to exit anyway?")); + if (button != QMessageBox::Yes) + return; + } + close(); +} diff --git a/tools/auto-tester/src/ui/HelpWindow.h b/tools/auto-tester/src/ui/HelpWindow.h new file mode 100644 index 0000000000..7b4c99c9a3 --- /dev/null +++ b/tools/auto-tester/src/ui/HelpWindow.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include "document.h" + +#include +#include + +QT_BEGIN_NAMESPACE +namespace Ui { +class HelpWindow; +} +QT_END_NAMESPACE + +class HelpWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit HelpWindow(QWidget *parent = nullptr); + ~HelpWindow(); + + void openFile(const QString &path); + +private slots: + void onFileNew(); + void onFileOpen(); + void onFileSave(); + void onFileSaveAs(); + void onExit(); + +private: + bool isModified() const; + + Ui::HelpWindow *ui; + QString m_filePath; + Document m_content; +}; + +#endif // MAINWINDOW_H diff --git a/tools/auto-tester/src/ui/HelpWindow.ui b/tools/auto-tester/src/ui/HelpWindow.ui new file mode 100644 index 0000000000..774e1a8651 --- /dev/null +++ b/tools/auto-tester/src/ui/HelpWindow.ui @@ -0,0 +1,115 @@ + + + HelpWindow + + + + 0 + 0 + 800 + 600 + + + + MarkDown Editor + + + + + + + Qt::Horizontal + + + + + + + + + + + 0 + 0 + 800 + 26 + + + + + &File + + + + + + + + + + + + + + &Open... + + + Open document + + + Ctrl+O + + + + + &Save + + + Save current document + + + Ctrl+S + + + + + E&xit + + + Exit editor + + + Ctrl+Q + + + + + Save &As... + + + Save document under different name + + + + + &New + + + Create new document + + + Ctrl+N + + + + + + QWebEngineView + QWidget +
      qwebengineview.h
      + 1 +
      +
      + + +
      diff --git a/tools/auto-tester/src/ui/document.cpp b/tools/auto-tester/src/ui/document.cpp new file mode 100644 index 0000000000..20e6b6be9a --- /dev/null +++ b/tools/auto-tester/src/ui/document.cpp @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "document.h" + +void Document::setText(const QString &text) +{ + if (text == m_text) + return; + m_text = text; + emit textChanged(m_text); +} diff --git a/tools/auto-tester/src/ui/document.h b/tools/auto-tester/src/ui/document.h new file mode 100644 index 0000000000..785ce228f2 --- /dev/null +++ b/tools/auto-tester/src/ui/document.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef DOCUMENT_H +#define DOCUMENT_H + +#include +#include + +class Document : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString text MEMBER m_text NOTIFY textChanged FINAL) +public: + explicit Document(QObject *parent = nullptr) : QObject(parent) {} + + void setText(const QString &text); + +signals: + void textChanged(const QString &text); + +private: + QString m_text; +}; + +#endif // DOCUMENT_H diff --git a/tools/auto-tester/src/ui/previewpage.cpp b/tools/auto-tester/src/ui/previewpage.cpp new file mode 100644 index 0000000000..1d81d700c0 --- /dev/null +++ b/tools/auto-tester/src/ui/previewpage.cpp @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "previewpage.h" + +#include + +bool PreviewPage::acceptNavigationRequest(const QUrl &url, + QWebEnginePage::NavigationType /*type*/, + bool /*isMainFrame*/) +{ + // Only allow qrc:/index.html. + if (url.scheme() == QString("qrc")) + return true; + QDesktopServices::openUrl(url); + return false; +} diff --git a/tools/auto-tester/src/ui/previewpage.h b/tools/auto-tester/src/ui/previewpage.h new file mode 100644 index 0000000000..eb7d7ab00f --- /dev/null +++ b/tools/auto-tester/src/ui/previewpage.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef PREVIEWPAGE_H +#define PREVIEWPAGE_H + +#include + +class PreviewPage : public QWebEnginePage +{ + Q_OBJECT +public: + explicit PreviewPage(QObject *parent = nullptr) : QWebEnginePage(parent) {} + +protected: + bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame); +}; + +#endif // PREVIEWPAGE_H From 4ffe164569b2b1d26194cef187403ce76ac14679 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 8 Aug 2018 08:56:35 -0700 Subject: [PATCH 217/332] Address Mac/Linux build warnings --- libraries/physics/src/PhysicsEngine.cpp | 4 ++-- libraries/shared/src/ShapeInfo.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index d55fbf7e34..fe12350124 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -845,8 +845,8 @@ struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { desiredObjectType(desiredObjectType), collisionObject(), contacts(), - btCollisionWorld::ContactResultCallback(), - myAvatarCollisionObject(myAvatarCollisionObject) { + myAvatarCollisionObject(myAvatarCollisionObject), + btCollisionWorld::ContactResultCallback() { const btCollisionShape* collisionShape = ObjectMotionState::getShapeManager()->getShape(shapeInfo); collisionObject.setCollisionShape(const_cast(collisionShape)); diff --git a/libraries/shared/src/ShapeInfo.cpp b/libraries/shared/src/ShapeInfo.cpp index 24942c0043..152e305bf2 100644 --- a/libraries/shared/src/ShapeInfo.cpp +++ b/libraries/shared/src/ShapeInfo.cpp @@ -75,7 +75,7 @@ QString ShapeInfo::getNameForShapeType(ShapeType type) { } ShapeType ShapeInfo::getShapeTypeForName(QString string) { - for (int i = 0; i < SHAPETYPE_NAME_COUNT; i++) { + for (int i = 0; i < (int)SHAPETYPE_NAME_COUNT; i++) { auto name = shapeTypeNames[i]; if (name == string) { return (ShapeType)i; From 49a1d0a18a54dc4d0b7235f9b3f2d8b4596a23aa Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Fri, 27 Jul 2018 17:20:37 -0700 Subject: [PATCH 218/332] MyAvatar RigidBody ignores backfacing triangles --- libraries/physics/src/CharacterController.cpp | 8 ++++--- libraries/physics/src/PhysicsEngine.cpp | 23 +++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/libraries/physics/src/CharacterController.cpp b/libraries/physics/src/CharacterController.cpp index cee0e6a1fa..b716d5c0d1 100755 --- a/libraries/physics/src/CharacterController.cpp +++ b/libraries/physics/src/CharacterController.cpp @@ -121,6 +121,8 @@ void CharacterController::setDynamicsWorld(btDynamicsWorld* world) { _dynamicsWorld->addAction(this); // restore gravity settings because adding an object to the world overwrites its gravity setting _rigidBody->setGravity(_currentGravity * _currentUp); + // set flag to enable custom contactAddedCallback + _rigidBody->setCollisionFlags(btCollisionObject::CF_CUSTOM_MATERIAL_CALLBACK); btCollisionShape* shape = _rigidBody->getCollisionShape(); assert(shape && shape->getShapeType() == CONVEX_HULL_SHAPE_PROXYTYPE); _ghost.setCharacterShape(static_cast(shape)); @@ -294,14 +296,14 @@ void CharacterController::playerStep(btCollisionWorld* collisionWorld, btScalar // compute the angle we will resolve for this dt, but don't overshoot float angle = 2.0f * acosf(qDot); - if ( dt < _followTimeRemaining) { + if (dt < _followTimeRemaining) { angle *= dt / _followTimeRemaining; } - + // accumulate rotation deltaRot = btQuaternion(axis, angle); _followAngularDisplacement = (deltaRot * _followAngularDisplacement).normalize(); - + // in order to accumulate displacement of avatar position, we need to take _shapeLocalOffset into account. btVector3 shapeLocalOffset = glmToBullet(_shapeLocalOffset); diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index 66a4edb486..eca8324e9f 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include "CharacterController.h" #include "ObjectMotionState.h" @@ -26,6 +27,25 @@ #include "ThreadSafeDynamicsWorld.h" #include "PhysicsLogging.h" + +static bool flipNormalsMyAvatarVsBackfacingTriangles( btManifoldPoint& cp, + const btCollisionObjectWrapper* colObj0Wrap, int partId0, int index0, + const btCollisionObjectWrapper* colObj1Wrap, int partId1, int index1) { + if (colObj1Wrap->getCollisionShape()->getShapeType() == TRIANGLE_SHAPE_PROXYTYPE) { + auto triShape = static_cast(colObj1Wrap->getCollisionShape()); + const btVector3* v = triShape->m_vertices1; + btVector3 faceNormal = colObj1Wrap->getWorldTransform().getBasis() * btCross(v[1] - v[0], v[2] - v[0]); + float nDotF = btDot(faceNormal, cp.m_normalWorldOnB); + if (nDotF <= 0.0f) { + faceNormal.normalize(); + // flip the contact normal to be aligned with the face normal + cp.m_normalWorldOnB += -2.0f * nDotF * faceNormal; + } + } + // return value is currently ignored but to be future-proof: return false when not modifying friction + return false; +} + PhysicsEngine::PhysicsEngine(const glm::vec3& offset) : _originOffset(offset), _myAvatarController(nullptr) { @@ -68,6 +88,9 @@ void PhysicsEngine::init() { // in order for its broadphase collision queries to work correctly. Look at how we use // _activeStaticBodies to track and update the Aabb's of moved static objects. _dynamicsWorld->setForceUpdateAllAabbs(false); + + // register contact filter to help MyAvatar pass through backfacing triangles + gContactAddedCallback = flipNormalsMyAvatarVsBackfacingTriangles; } } From c4c3581285bb4a26a762b377f0a80c52f7787288 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Tue, 7 Aug 2018 18:03:03 -0700 Subject: [PATCH 219/332] Fix memory corruption in PerformanceTimer when Stats are active PerformanceTimer was neither thread safe nor re-entrant. Because it was being used increasingly on render and worker threads it has increased the likelihood of heap corruption. I was able to identify this by enabling full page heap verification using the gflags app. https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/enable-page-heap --- interface/src/ui/Stats.cpp | 6 +++--- libraries/shared/src/PerfStat.cpp | 23 +++++++++++++++++++---- libraries/shared/src/PerfStat.h | 5 +++-- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index 6bb615948c..c3b1b0c819 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -431,7 +431,7 @@ void Stats::updateStats(bool force) { // a new Map sorted by average time... bool onlyDisplayTopTen = Menu::getInstance()->isOptionChecked(MenuOption::OnlyDisplayTopTen); QMap sortedRecords; - const QMap& allRecords = PerformanceTimer::getAllTimerRecords(); + auto allRecords = PerformanceTimer::getAllTimerRecords(); QMapIterator i(allRecords); while (i.hasNext()) { @@ -479,7 +479,7 @@ void Stats::updateStats(bool force) { bool operator<(const SortableStat& other) const { return priority < other.priority; } }; - const QMap& allRecords = PerformanceTimer::getAllTimerRecords(); + auto allRecords = PerformanceTimer::getAllTimerRecords(); std::priority_queue idleUpdateStats; auto itr = allRecords.find("/idle/update"); if (itr != allRecords.end()) { @@ -496,7 +496,7 @@ void Stats::updateStats(bool force) { }; for (int32_t j = 0; j < categories.size(); ++j) { QString recordKey = "/idle/update/" + categories[j]; - auto record = PerformanceTimer::getTimerRecord(recordKey); + auto& record = allRecords[recordKey]; if (record.getCount()) { float dt = (float) record.getMovingAverage() / (float)USECS_PER_MSEC; QString message = QString("\n %1 = %2").arg(categories[j]).arg(dt); diff --git a/libraries/shared/src/PerfStat.cpp b/libraries/shared/src/PerfStat.cpp index c3bc44b7d3..2fc1fb3c9b 100644 --- a/libraries/shared/src/PerfStat.cpp +++ b/libraries/shared/src/PerfStat.cpp @@ -80,16 +80,19 @@ void PerformanceTimerRecord::tallyResult(const quint64& now) { // ---------------------------------------------------------------------------- std::atomic PerformanceTimer::_isActive(false); +std::mutex PerformanceTimer::_mutex; QHash PerformanceTimer::_fullNames; QMap PerformanceTimer::_records; - PerformanceTimer::PerformanceTimer(const QString& name) { if (_isActive) { _name = name; - QString& fullName = _fullNames[QThread::currentThread()]; - fullName.append("/"); - fullName.append(_name); + { + std::lock_guard guard(_mutex); + QString& fullName = _fullNames[QThread::currentThread()]; + fullName.append("/"); + fullName.append(_name); + } _start = usecTimestampNow(); } } @@ -97,6 +100,7 @@ PerformanceTimer::PerformanceTimer(const QString& name) { PerformanceTimer::~PerformanceTimer() { if (_isActive && _start != 0) { quint64 elapsedUsec = (usecTimestampNow() - _start); + std::lock_guard guard(_mutex); QString& fullName = _fullNames[QThread::currentThread()]; PerformanceTimerRecord& namedRecord = _records[fullName]; namedRecord.accumulateResult(elapsedUsec); @@ -111,11 +115,13 @@ bool PerformanceTimer::isActive() { // static QString PerformanceTimer::getContextName() { + std::lock_guard guard(_mutex); return _fullNames[QThread::currentThread()]; } // static void PerformanceTimer::addTimerRecord(const QString& fullName, quint64 elapsedUsec) { + std::lock_guard guard(_mutex); PerformanceTimerRecord& namedRecord = _records[fullName]; namedRecord.accumulateResult(elapsedUsec); } @@ -125,6 +131,7 @@ void PerformanceTimer::setActive(bool active) { if (active != _isActive) { _isActive.store(active); if (!active) { + std::lock_guard guard(_mutex); _fullNames.clear(); _records.clear(); } @@ -133,8 +140,15 @@ void PerformanceTimer::setActive(bool active) { } } +// static +QMap PerformanceTimer::getAllTimerRecords() { + std::lock_guard guard(_mutex); + return _records; +}; + // static void PerformanceTimer::tallyAllTimerRecords() { + std::lock_guard guard(_mutex); QMap::iterator recordsItr = _records.begin(); QMap::const_iterator recordsEnd = _records.end(); quint64 now = usecTimestampNow(); @@ -150,6 +164,7 @@ void PerformanceTimer::tallyAllTimerRecords() { } void PerformanceTimer::dumpAllTimerRecords() { + std::lock_guard guard(_mutex); QMapIterator i(_records); while (i.hasNext()) { i.next(); diff --git a/libraries/shared/src/PerfStat.h b/libraries/shared/src/PerfStat.h index b09cb38808..f9ff6960b0 100644 --- a/libraries/shared/src/PerfStat.h +++ b/libraries/shared/src/PerfStat.h @@ -84,8 +84,7 @@ public: static QString getContextName(); static void addTimerRecord(const QString& fullName, quint64 elapsedUsec); - static const PerformanceTimerRecord& getTimerRecord(const QString& name) { return _records[name]; }; - static const QMap& getAllTimerRecords() { return _records; }; + static QMap getAllTimerRecords(); static void tallyAllTimerRecords(); static void dumpAllTimerRecords(); @@ -93,6 +92,8 @@ private: quint64 _start = 0; QString _name; static std::atomic _isActive; + + static std::mutex _mutex; // used to guard multi-threaded access to _fullNames and _records static QHash _fullNames; static QMap _records; }; From 9ea08f18500ef26b1ce559a27d493a25c86165b7 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 12 Jul 2018 16:45:04 -0700 Subject: [PATCH 220/332] Add ETC2 support to Oven --- libraries/baking/src/TextureBaker.cpp | 71 +-- libraries/image/src/image/Image.cpp | 538 +++++++++--------- libraries/image/src/image/Image.h | 48 +- .../src/model-networking/TextureCache.cpp | 15 +- 4 files changed, 348 insertions(+), 324 deletions(-) diff --git a/libraries/baking/src/TextureBaker.cpp b/libraries/baking/src/TextureBaker.cpp index ecfe724441..24fc331a3b 100644 --- a/libraries/baking/src/TextureBaker.cpp +++ b/libraries/baking/src/TextureBaker.cpp @@ -138,7 +138,7 @@ void TextureBaker::processTexture() { // IMPORTANT: _originalTexture is empty past this point _originalTexture.clear(); _outputFiles.push_back(originalCopyFilePath); - meta.original = _metaTexturePathPrefix +_textureURL.fileName(); + meta.original = _metaTexturePathPrefix + _textureURL.fileName(); } auto buffer = std::static_pointer_cast(std::make_shared(originalCopyFilePath)); @@ -149,49 +149,56 @@ void TextureBaker::processTexture() { // Compressed KTX if (_compressionEnabled) { - auto processedTexture = image::processImage(buffer, _textureURL.toString().toStdString(), - ABSOLUTE_MAX_TEXTURE_NUM_PIXELS, _textureType, true, _abortProcessing); - if (!processedTexture) { - handleError("Could not process texture " + _textureURL.toString()); - return; - } - processedTexture->setSourceHash(hash); + constexpr std::array BACKEND_TARGETS { + image::BackendTarget::GL, + image::BackendTarget::GLES + }; + for (auto target : BACKEND_TARGETS) { + auto processedTexture = image::processImage(buffer, _textureURL.toString().toStdString(), + ABSOLUTE_MAX_TEXTURE_NUM_PIXELS, _textureType, true, + target, _abortProcessing); + if (!processedTexture) { + handleError("Could not process texture " + _textureURL.toString()); + return; + } + processedTexture->setSourceHash(hash); - if (shouldStop()) { - return; - } + if (shouldStop()) { + return; + } - auto memKTX = gpu::Texture::serialize(*processedTexture); - if (!memKTX) { - handleError("Could not serialize " + _textureURL.toString() + " to KTX"); - return; - } + auto memKTX = gpu::Texture::serialize(*processedTexture); + if (!memKTX) { + handleError("Could not serialize " + _textureURL.toString() + " to KTX"); + return; + } - const char* name = khronos::gl::texture::toString(memKTX->_header.getGLInternaFormat()); - if (name == nullptr) { - handleError("Could not determine internal format for compressed KTX: " + _textureURL.toString()); - return; - } + const char* name = khronos::gl::texture::toString(memKTX->_header.getGLInternaFormat()); + if (name == nullptr) { + handleError("Could not determine internal format for compressed KTX: " + _textureURL.toString()); + return; + } - const char* data = reinterpret_cast(memKTX->_storage->data()); - const size_t length = memKTX->_storage->size(); + const char* data = reinterpret_cast(memKTX->_storage->data()); + const size_t length = memKTX->_storage->size(); - auto fileName = _baseFilename + "_" + name + ".ktx"; - auto filePath = _outputDirectory.absoluteFilePath(fileName); - QFile bakedTextureFile { filePath }; - if (!bakedTextureFile.open(QIODevice::WriteOnly) || bakedTextureFile.write(data, length) == -1) { - handleError("Could not write baked texture for " + _textureURL.toString()); - return; + auto fileName = _baseFilename + "_" + name + ".ktx"; + auto filePath = _outputDirectory.absoluteFilePath(fileName); + QFile bakedTextureFile { filePath }; + if (!bakedTextureFile.open(QIODevice::WriteOnly) || bakedTextureFile.write(data, length) == -1) { + handleError("Could not write baked texture for " + _textureURL.toString()); + return; + } + _outputFiles.push_back(filePath); + meta.availableTextureTypes[memKTX->_header.getGLInternaFormat()] = _metaTexturePathPrefix + fileName; } - _outputFiles.push_back(filePath); - meta.availableTextureTypes[memKTX->_header.getGLInternaFormat()] = _metaTexturePathPrefix + fileName; } // Uncompressed KTX if (_textureType == image::TextureUsage::Type::CUBE_TEXTURE) { buffer->reset(); auto processedTexture = image::processImage(std::move(buffer), _textureURL.toString().toStdString(), - ABSOLUTE_MAX_TEXTURE_NUM_PIXELS, _textureType, false, _abortProcessing); + ABSOLUTE_MAX_TEXTURE_NUM_PIXELS, _textureType, false, image::BackendTarget::GL, _abortProcessing); if (!processedTexture) { handleError("Could not process texture " + _textureURL.toString()); return; diff --git a/libraries/image/src/image/Image.cpp b/libraries/image/src/image/Image.cpp index 7fc3a73f87..eaf8eacfce 100644 --- a/libraries/image/src/image/Image.cpp +++ b/libraries/image/src/image/Image.cpp @@ -31,17 +31,13 @@ using namespace gpu; #define CPU_MIPMAPS 1 #include -#ifdef USE_GLES +#undef _CRT_SECURE_NO_WARNINGS #include #include -#endif static const glm::uvec2 SPARSE_PAGE_SIZE(128); -#ifdef Q_OS_ANDROID -static const glm::uvec2 MAX_TEXTURE_SIZE(2048); -#else -static const glm::uvec2 MAX_TEXTURE_SIZE(4096); -#endif +static const glm::uvec2 MAX_TEXTURE_SIZE_GLES(2048); +static const glm::uvec2 MAX_TEXTURE_SIZE_GL(4096); bool DEV_DECIMATE_TEXTURES = false; std::atomic DECIMATED_TEXTURE_COUNT{ 0 }; std::atomic RECTIFIED_TEXTURE_COUNT{ 0 }; @@ -83,11 +79,12 @@ const QStringList getSupportedFormats() { // On GLES, we don't use HDR skyboxes -#ifndef USE_GLES -QImage::Format QIMAGE_HDR_FORMAT = QImage::Format_RGB30; -#else -QImage::Format QIMAGE_HDR_FORMAT = QImage::Format_RGB32; -#endif +QImage::Format hdrFormatForTarget(BackendTarget target) { + if (target == BackendTarget::GLES) { + return QImage::Format_RGB32; + } + return QImage::Format_RGB30; +} TextureUsage::TextureLoader TextureUsage::getTextureLoaderForType(Type type, const QVariantMap& options) { switch (type) { @@ -123,63 +120,63 @@ TextureUsage::TextureLoader TextureUsage::getTextureLoaderForType(Type type, con } gpu::TexturePointer TextureUsage::createStrict2DTextureFromImage(QImage&& srcImage, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing) { - return process2DTextureColorFromImage(std::move(srcImage), srcImageName, compress, true, abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing) { + return process2DTextureColorFromImage(std::move(srcImage), srcImageName, compress, target, true, abortProcessing); } gpu::TexturePointer TextureUsage::create2DTextureFromImage(QImage&& srcImage, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing) { - return process2DTextureColorFromImage(std::move(srcImage), srcImageName, compress, false, abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing) { + return process2DTextureColorFromImage(std::move(srcImage), srcImageName, compress, target, false, abortProcessing); } gpu::TexturePointer TextureUsage::createAlbedoTextureFromImage(QImage&& srcImage, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing) { - return process2DTextureColorFromImage(std::move(srcImage), srcImageName, compress, false, abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing) { + return process2DTextureColorFromImage(std::move(srcImage), srcImageName, compress, target, false, abortProcessing); } gpu::TexturePointer TextureUsage::createEmissiveTextureFromImage(QImage&& srcImage, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing) { - return process2DTextureColorFromImage(std::move(srcImage), srcImageName, compress, false, abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing) { + return process2DTextureColorFromImage(std::move(srcImage), srcImageName, compress, target, false, abortProcessing); } gpu::TexturePointer TextureUsage::createLightmapTextureFromImage(QImage&& srcImage, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing) { - return process2DTextureColorFromImage(std::move(srcImage), srcImageName, compress, false, abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing) { + return process2DTextureColorFromImage(std::move(srcImage), srcImageName, compress, target, false, abortProcessing); } gpu::TexturePointer TextureUsage::createNormalTextureFromNormalImage(QImage&& srcImage, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing) { - return process2DTextureNormalMapFromImage(std::move(srcImage), srcImageName, compress, false, abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing) { + return process2DTextureNormalMapFromImage(std::move(srcImage), srcImageName, compress, target, false, abortProcessing); } gpu::TexturePointer TextureUsage::createNormalTextureFromBumpImage(QImage&& srcImage, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing) { - return process2DTextureNormalMapFromImage(std::move(srcImage), srcImageName, compress, true, abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing) { + return process2DTextureNormalMapFromImage(std::move(srcImage), srcImageName, compress, target, true, abortProcessing); } gpu::TexturePointer TextureUsage::createRoughnessTextureFromImage(QImage&& srcImage, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing) { - return process2DTextureGrayscaleFromImage(std::move(srcImage), srcImageName, compress, false, abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing) { + return process2DTextureGrayscaleFromImage(std::move(srcImage), srcImageName, compress, target, false, abortProcessing); } gpu::TexturePointer TextureUsage::createRoughnessTextureFromGlossImage(QImage&& srcImage, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing) { - return process2DTextureGrayscaleFromImage(std::move(srcImage), srcImageName, compress, true, abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing) { + return process2DTextureGrayscaleFromImage(std::move(srcImage), srcImageName, compress, target, true, abortProcessing); } gpu::TexturePointer TextureUsage::createMetallicTextureFromImage(QImage&& srcImage, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing) { - return process2DTextureGrayscaleFromImage(std::move(srcImage), srcImageName, compress, false, abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing) { + return process2DTextureGrayscaleFromImage(std::move(srcImage), srcImageName, compress, target, false, abortProcessing); } gpu::TexturePointer TextureUsage::createCubeTextureFromImage(QImage&& srcImage, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing) { - return processCubeTextureColorFromImage(std::move(srcImage), srcImageName, compress, true, abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing) { + return processCubeTextureColorFromImage(std::move(srcImage), srcImageName, compress, target, true, abortProcessing); } gpu::TexturePointer TextureUsage::createCubeTextureFromImageWithoutIrradiance(QImage&& srcImage, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing) { - return processCubeTextureColorFromImage(std::move(srcImage), srcImageName, compress, false, abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing) { + return processCubeTextureColorFromImage(std::move(srcImage), srcImageName, compress, target, false, abortProcessing); } static float denormalize(float value, const float minValue) { @@ -228,7 +225,7 @@ QImage processRawImageData(QIODevice& content, const std::string& filename) { gpu::TexturePointer processImage(std::shared_ptr content, const std::string& filename, int maxNumPixels, TextureUsage::Type textureType, - bool compress, const std::atomic& abortProcessing) { + bool compress, BackendTarget target, const std::atomic& abortProcessing) { QImage image = processRawImageData(*content.get(), filename); // Texture content can take up a lot of memory. Here we release our ownership of that content @@ -259,12 +256,12 @@ gpu::TexturePointer processImage(std::shared_ptr content, const std:: } auto loader = TextureUsage::getTextureLoaderForType(textureType); - auto texture = loader(std::move(image), filename, compress, abortProcessing); + auto texture = loader(std::move(image), filename, compress, target, abortProcessing); return texture; } -QImage processSourceImage(QImage&& srcImage, bool cubemap) { +QImage processSourceImage(QImage&& srcImage, bool cubemap, BackendTarget target) { PROFILE_RANGE(resource_parse, "processSourceImage"); // Take a local copy to force move construction @@ -274,7 +271,8 @@ QImage processSourceImage(QImage&& srcImage, bool cubemap) { const glm::uvec2 srcImageSize = toGlm(localCopy.size()); glm::uvec2 targetSize = srcImageSize; - while (glm::any(glm::greaterThan(targetSize, MAX_TEXTURE_SIZE))) { + const auto maxTextureSize = target == BackendTarget::GL ? MAX_TEXTURE_SIZE_GL : MAX_TEXTURE_SIZE_GLES; + while (glm::any(glm::greaterThan(targetSize, maxTextureSize))) { targetSize /= 2; } if (targetSize != srcImageSize) { @@ -406,12 +404,12 @@ public: } }; -void generateHDRMips(gpu::Texture* texture, QImage&& image, const std::atomic& abortProcessing, int face) { +void generateHDRMips(gpu::Texture* texture, QImage&& image, BackendTarget target, const std::atomic& abortProcessing, int face) { // Take a local copy to force move construction // https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f18-for-consume-parameters-pass-by-x-and-stdmove-the-parameter QImage localCopy = std::move(image); - assert(localCopy.format() == QIMAGE_HDR_FORMAT); + assert(localCopy.format() == hdrFormatForTarget(target)); const int width = localCopy.width(), height = localCopy.height(); std::vector data; @@ -503,220 +501,219 @@ void generateHDRMips(gpu::Texture* texture, QImage&& image, const std::atomic& abortProcessing, int face) { +void generateLDRMips(gpu::Texture* texture, QImage&& image, BackendTarget target, const std::atomic& abortProcessing, int face) { // Take a local copy to force move construction // https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f18-for-consume-parameters-pass-by-x-and-stdmove-the-parameter QImage localCopy = std::move(image); - if (localCopy.format() != QImage::Format_ARGB32 && localCopy.format() != QIMAGE_HDR_FORMAT) { + if (localCopy.format() != QImage::Format_ARGB32 && localCopy.format() != hdrFormatForTarget(target)) { localCopy = localCopy.convertToFormat(QImage::Format_ARGB32); } const int width = localCopy.width(), height = localCopy.height(); auto mipFormat = texture->getStoredMipFormat(); -#ifndef USE_GLES - const void* data = static_cast(localCopy.constBits()); - nvtt::TextureType textureType = nvtt::TextureType_2D; - nvtt::InputFormat inputFormat = nvtt::InputFormat_BGRA_8UB; - nvtt::WrapMode wrapMode = nvtt::WrapMode_Mirror; - nvtt::RoundMode roundMode = nvtt::RoundMode_None; - nvtt::AlphaMode alphaMode = nvtt::AlphaMode_None; + if (target != BackendTarget::GLES) { + const void* data = static_cast(localCopy.constBits()); + nvtt::TextureType textureType = nvtt::TextureType_2D; + nvtt::InputFormat inputFormat = nvtt::InputFormat_BGRA_8UB; + nvtt::WrapMode wrapMode = nvtt::WrapMode_Mirror; + nvtt::RoundMode roundMode = nvtt::RoundMode_None; + nvtt::AlphaMode alphaMode = nvtt::AlphaMode_None; - float inputGamma = 2.2f; - float outputGamma = 2.2f; + float inputGamma = 2.2f; + float outputGamma = 2.2f; - nvtt::InputOptions inputOptions; - inputOptions.setTextureLayout(textureType, width, height); + nvtt::InputOptions inputOptions; + inputOptions.setTextureLayout(textureType, width, height); - inputOptions.setMipmapData(data, width, height); - // setMipmapData copies the memory, so free up the memory afterward to avoid bloating the heap - data = nullptr; - localCopy = QImage(); // QImage doesn't have a clear function, so override it with an empty one. + inputOptions.setMipmapData(data, width, height); + // setMipmapData copies the memory, so free up the memory afterward to avoid bloating the heap + data = nullptr; + localCopy = QImage(); // QImage doesn't have a clear function, so override it with an empty one. - inputOptions.setFormat(inputFormat); - inputOptions.setGamma(inputGamma, outputGamma); - inputOptions.setAlphaMode(alphaMode); - inputOptions.setWrapMode(wrapMode); - inputOptions.setRoundMode(roundMode); + inputOptions.setFormat(inputFormat); + inputOptions.setGamma(inputGamma, outputGamma); + inputOptions.setAlphaMode(alphaMode); + inputOptions.setWrapMode(wrapMode); + inputOptions.setRoundMode(roundMode); - inputOptions.setMipmapGeneration(true); - inputOptions.setMipmapFilter(nvtt::MipmapFilter_Box); + inputOptions.setMipmapGeneration(true); + inputOptions.setMipmapFilter(nvtt::MipmapFilter_Box); - nvtt::CompressionOptions compressionOptions; - compressionOptions.setQuality(nvtt::Quality_Production); + nvtt::CompressionOptions compressionOptions; + compressionOptions.setQuality(nvtt::Quality_Production); - if (mipFormat == gpu::Element::COLOR_COMPRESSED_BCX_SRGB) { - compressionOptions.setFormat(nvtt::Format_BC1); - } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_BCX_SRGBA_MASK) { - alphaMode = nvtt::AlphaMode_Transparency; - compressionOptions.setFormat(nvtt::Format_BC1a); - } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_BCX_SRGBA) { - alphaMode = nvtt::AlphaMode_Transparency; - compressionOptions.setFormat(nvtt::Format_BC3); - } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_BCX_RED) { - compressionOptions.setFormat(nvtt::Format_BC4); - } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_BCX_XY) { - compressionOptions.setFormat(nvtt::Format_BC5); - } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_BCX_SRGBA_HIGH) { - alphaMode = nvtt::AlphaMode_Transparency; - compressionOptions.setFormat(nvtt::Format_BC7); - } else if (mipFormat == gpu::Element::COLOR_RGBA_32) { - compressionOptions.setFormat(nvtt::Format_RGBA); - compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); - compressionOptions.setPitchAlignment(4); - compressionOptions.setPixelFormat(32, - 0x000000FF, - 0x0000FF00, - 0x00FF0000, - 0xFF000000); - inputGamma = 1.0f; - outputGamma = 1.0f; - } else if (mipFormat == gpu::Element::COLOR_BGRA_32) { - compressionOptions.setFormat(nvtt::Format_RGBA); - compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); - compressionOptions.setPitchAlignment(4); - compressionOptions.setPixelFormat(32, - 0x00FF0000, - 0x0000FF00, - 0x000000FF, - 0xFF000000); - inputGamma = 1.0f; - outputGamma = 1.0f; - } else if (mipFormat == gpu::Element::COLOR_SRGBA_32) { - compressionOptions.setFormat(nvtt::Format_RGBA); - compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); - compressionOptions.setPitchAlignment(4); - compressionOptions.setPixelFormat(32, - 0x000000FF, - 0x0000FF00, - 0x00FF0000, - 0xFF000000); - } else if (mipFormat == gpu::Element::COLOR_SBGRA_32) { - compressionOptions.setFormat(nvtt::Format_RGBA); - compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); - compressionOptions.setPitchAlignment(4); - compressionOptions.setPixelFormat(32, - 0x00FF0000, - 0x0000FF00, - 0x000000FF, - 0xFF000000); - } else if (mipFormat == gpu::Element::COLOR_R_8) { - compressionOptions.setFormat(nvtt::Format_RGB); - compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); - compressionOptions.setPitchAlignment(4); - compressionOptions.setPixelFormat(8, 0, 0, 0); - } else if (mipFormat == gpu::Element::VEC2NU8_XY) { - inputOptions.setNormalMap(true); - compressionOptions.setFormat(nvtt::Format_RGBA); - compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); - compressionOptions.setPitchAlignment(4); - compressionOptions.setPixelFormat(8, 8, 0, 0); - } else { - qCWarning(imagelogging) << "Unknown mip format"; - Q_UNREACHABLE(); - return; - } - - nvtt::OutputOptions outputOptions; - outputOptions.setOutputHeader(false); - OutputHandler outputHandler(texture, face); - outputOptions.setOutputHandler(&outputHandler); - MyErrorHandler errorHandler; - outputOptions.setErrorHandler(&errorHandler); - - SequentialTaskDispatcher dispatcher(abortProcessing); - nvtt::Compressor compressor; - compressor.setTaskDispatcher(&dispatcher); - compressor.process(inputOptions, compressionOptions, outputOptions); - -#else - int numMips = 1 + (int)log2(std::max(width, height)); - Etc::RawImage *mipMaps = new Etc::RawImage[numMips]; - Etc::Image::Format etcFormat = Etc::Image::Format::DEFAULT; - - if (mipFormat == gpu::Element::COLOR_COMPRESSED_ETC2_RGB) { - etcFormat = Etc::Image::Format::RGB8; - } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_ETC2_SRGB) { - etcFormat = Etc::Image::Format::SRGB8; - } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_ETC2_RGB_PUNCHTHROUGH_ALPHA) { - etcFormat = Etc::Image::Format::RGB8A1; - } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_ETC2_SRGB_PUNCHTHROUGH_ALPHA) { - etcFormat = Etc::Image::Format::SRGB8A1; - } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_ETC2_RGBA) { - etcFormat = Etc::Image::Format::RGBA8; - } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_ETC2_SRGBA) { - etcFormat = Etc::Image::Format::SRGBA8; - } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_EAC_RED) { - etcFormat = Etc::Image::Format::R11; - } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_EAC_RED_SIGNED) { - etcFormat = Etc::Image::Format::SIGNED_R11; - } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_EAC_XY) { - etcFormat = Etc::Image::Format::RG11; - } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_EAC_XY_SIGNED) { - etcFormat = Etc::Image::Format::SIGNED_RG11; - } else { - qCWarning(imagelogging) << "Unknown mip format"; - Q_UNREACHABLE(); - return; - } - - const Etc::ErrorMetric errorMetric = Etc::ErrorMetric::RGBA; - const float effort = 1.0f; - const int numEncodeThreads = 4; - int encodingTime; - const float MAX_COLOR = 255.0f; - - std::vector floatData; - floatData.resize(width * height); - for (int y = 0; y < height; y++) { - QRgb *line = (QRgb *) localCopy.scanLine(y); - for (int x = 0; x < width; x++) { - QRgb &pixel = line[x]; - floatData[x + y * width] = vec4(qRed(pixel), qGreen(pixel), qBlue(pixel), qAlpha(pixel)) / MAX_COLOR; + if (mipFormat == gpu::Element::COLOR_COMPRESSED_BCX_SRGB) { + compressionOptions.setFormat(nvtt::Format_BC1); + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_BCX_SRGBA_MASK) { + alphaMode = nvtt::AlphaMode_Transparency; + compressionOptions.setFormat(nvtt::Format_BC1a); + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_BCX_SRGBA) { + alphaMode = nvtt::AlphaMode_Transparency; + compressionOptions.setFormat(nvtt::Format_BC3); + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_BCX_RED) { + compressionOptions.setFormat(nvtt::Format_BC4); + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_BCX_XY) { + compressionOptions.setFormat(nvtt::Format_BC5); + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_BCX_SRGBA_HIGH) { + alphaMode = nvtt::AlphaMode_Transparency; + compressionOptions.setFormat(nvtt::Format_BC7); + } else if (mipFormat == gpu::Element::COLOR_RGBA_32) { + compressionOptions.setFormat(nvtt::Format_RGBA); + compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); + compressionOptions.setPitchAlignment(4); + compressionOptions.setPixelFormat(32, + 0x000000FF, + 0x0000FF00, + 0x00FF0000, + 0xFF000000); + inputGamma = 1.0f; + outputGamma = 1.0f; + } else if (mipFormat == gpu::Element::COLOR_BGRA_32) { + compressionOptions.setFormat(nvtt::Format_RGBA); + compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); + compressionOptions.setPitchAlignment(4); + compressionOptions.setPixelFormat(32, + 0x00FF0000, + 0x0000FF00, + 0x000000FF, + 0xFF000000); + inputGamma = 1.0f; + outputGamma = 1.0f; + } else if (mipFormat == gpu::Element::COLOR_SRGBA_32) { + compressionOptions.setFormat(nvtt::Format_RGBA); + compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); + compressionOptions.setPitchAlignment(4); + compressionOptions.setPixelFormat(32, + 0x000000FF, + 0x0000FF00, + 0x00FF0000, + 0xFF000000); + } else if (mipFormat == gpu::Element::COLOR_SBGRA_32) { + compressionOptions.setFormat(nvtt::Format_RGBA); + compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); + compressionOptions.setPitchAlignment(4); + compressionOptions.setPixelFormat(32, + 0x00FF0000, + 0x0000FF00, + 0x000000FF, + 0xFF000000); + } else if (mipFormat == gpu::Element::COLOR_R_8) { + compressionOptions.setFormat(nvtt::Format_RGB); + compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); + compressionOptions.setPitchAlignment(4); + compressionOptions.setPixelFormat(8, 0, 0, 0); + } else if (mipFormat == gpu::Element::VEC2NU8_XY) { + inputOptions.setNormalMap(true); + compressionOptions.setFormat(nvtt::Format_RGBA); + compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); + compressionOptions.setPitchAlignment(4); + compressionOptions.setPixelFormat(8, 8, 0, 0); + } else { + qCWarning(imagelogging) << "Unknown mip format"; + Q_UNREACHABLE(); + return; } - } - // free up the memory afterward to avoid bloating the heap - localCopy = QImage(); // QImage doesn't have a clear function, so override it with an empty one. + nvtt::OutputOptions outputOptions; + outputOptions.setOutputHeader(false); + OutputHandler outputHandler(texture, face); + outputOptions.setOutputHandler(&outputHandler); + MyErrorHandler errorHandler; + outputOptions.setErrorHandler(&errorHandler); - Etc::EncodeMipmaps( - (float *)floatData.data(), width, height, - etcFormat, errorMetric, effort, - numEncodeThreads, numEncodeThreads, - numMips, Etc::FILTER_WRAP_NONE, - mipMaps, &encodingTime - ); + SequentialTaskDispatcher dispatcher(abortProcessing); + nvtt::Compressor compressor; + compressor.setTaskDispatcher(&dispatcher); + compressor.process(inputOptions, compressionOptions, outputOptions); + } else { + int numMips = 1 + (int)log2(std::max(width, height)); + Etc::RawImage *mipMaps = new Etc::RawImage[numMips]; + Etc::Image::Format etcFormat = Etc::Image::Format::DEFAULT; - for (int i = 0; i < numMips; i++) { - if (mipMaps[i].paucEncodingBits.get()) { - if (face >= 0) { - texture->assignStoredMipFace(i, face, mipMaps[i].uiEncodingBitsBytes, static_cast(mipMaps[i].paucEncodingBits.get())); - } else { - texture->assignStoredMip(i, mipMaps[i].uiEncodingBitsBytes, static_cast(mipMaps[i].paucEncodingBits.get())); + if (mipFormat == gpu::Element::COLOR_COMPRESSED_ETC2_RGB) { + etcFormat = Etc::Image::Format::RGB8; + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_ETC2_SRGB) { + etcFormat = Etc::Image::Format::SRGB8; + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_ETC2_RGB_PUNCHTHROUGH_ALPHA) { + etcFormat = Etc::Image::Format::RGB8A1; + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_ETC2_SRGB_PUNCHTHROUGH_ALPHA) { + etcFormat = Etc::Image::Format::SRGB8A1; + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_ETC2_RGBA) { + etcFormat = Etc::Image::Format::RGBA8; + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_ETC2_SRGBA) { + etcFormat = Etc::Image::Format::SRGBA8; + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_EAC_RED) { + etcFormat = Etc::Image::Format::R11; + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_EAC_RED_SIGNED) { + etcFormat = Etc::Image::Format::SIGNED_R11; + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_EAC_XY) { + etcFormat = Etc::Image::Format::RG11; + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_EAC_XY_SIGNED) { + etcFormat = Etc::Image::Format::SIGNED_RG11; + } else { + qCWarning(imagelogging) << "Unknown mip format"; + Q_UNREACHABLE(); + return; + } + + const Etc::ErrorMetric errorMetric = Etc::ErrorMetric::RGBA; + const float effort = 1.0f; + const int numEncodeThreads = 4; + int encodingTime; + const float MAX_COLOR = 255.0f; + + std::vector floatData; + floatData.resize(width * height); + for (int y = 0; y < height; y++) { + QRgb *line = (QRgb *)localCopy.scanLine(y); + for (int x = 0; x < width; x++) { + QRgb &pixel = line[x]; + floatData[x + y * width] = vec4(qRed(pixel), qGreen(pixel), qBlue(pixel), qAlpha(pixel)) / MAX_COLOR; } } - } - delete[] mipMaps; -#endif + // free up the memory afterward to avoid bloating the heap + localCopy = QImage(); // QImage doesn't have a clear function, so override it with an empty one. + + Etc::EncodeMipmaps( + (float *)floatData.data(), width, height, + etcFormat, errorMetric, effort, + numEncodeThreads, numEncodeThreads, + numMips, Etc::FILTER_WRAP_NONE, + mipMaps, &encodingTime + ); + + for (int i = 0; i < numMips; i++) { + if (mipMaps[i].paucEncodingBits.get()) { + if (face >= 0) { + texture->assignStoredMipFace(i, face, mipMaps[i].uiEncodingBitsBytes, static_cast(mipMaps[i].paucEncodingBits.get())); + } else { + texture->assignStoredMip(i, mipMaps[i].uiEncodingBitsBytes, static_cast(mipMaps[i].paucEncodingBits.get())); + } + } + } + + delete[] mipMaps; + } } #endif -void generateMips(gpu::Texture* texture, QImage&& image, const std::atomic& abortProcessing = false, int face = -1) { +void generateMips(gpu::Texture* texture, QImage&& image, BackendTarget target, const std::atomic& abortProcessing = false, int face = -1) { #if CPU_MIPMAPS PROFILE_RANGE(resource_parse, "generateMips"); -#ifndef USE_GLES - if (image.format() == QIMAGE_HDR_FORMAT) { - generateHDRMips(texture, std::move(image), abortProcessing, face); - } else { - generateLDRMips(texture, std::move(image), abortProcessing, face); + if (target == BackendTarget::GLES) { + generateLDRMips(texture, std::move(image), target, abortProcessing, face); + } else { + if (image.format() == hdrFormatForTarget(target)) { + generateHDRMips(texture, std::move(image), target, abortProcessing, face); + } else { + generateLDRMips(texture, std::move(image), target, abortProcessing, face); + } } -#else - generateLDRMips(texture, std::move(image), abortProcessing, face); -#endif #else texture->setAutoGenerateMips(true); #endif @@ -750,9 +747,9 @@ void processTextureAlpha(const QImage& srcImage, bool& validAlpha, bool& alphaAs } gpu::TexturePointer TextureUsage::process2DTextureColorFromImage(QImage&& srcImage, const std::string& srcImageName, bool compress, - bool isStrict, const std::atomic& abortProcessing) { + BackendTarget target, bool isStrict, const std::atomic& abortProcessing) { PROFILE_RANGE(resource_parse, "process2DTextureColorFromImage"); - QImage image = processSourceImage(std::move(srcImage), false); + QImage image = processSourceImage(std::move(srcImage), false, target); bool validAlpha = image.hasAlphaChannel(); bool alphaAsMask = false; @@ -770,7 +767,11 @@ gpu::TexturePointer TextureUsage::process2DTextureColorFromImage(QImage&& srcIma if ((image.width() > 0) && (image.height() > 0)) { gpu::Element formatMip; gpu::Element formatGPU; - if (compress) { + if (target == BackendTarget::GLES) { + // GLES does not support GL_BGRA + formatGPU = gpu::Element::COLOR_COMPRESSED_ETC2_SRGBA; + formatMip = formatGPU; + } else if (compress) { if (validAlpha) { // NOTE: This disables BC1a compression because it was producing odd artifacts on text textures // for the tutorial. Instead we use BC3 (which is larger) but doesn't produce the same artifacts). @@ -780,14 +781,8 @@ gpu::TexturePointer TextureUsage::process2DTextureColorFromImage(QImage&& srcIma } formatMip = formatGPU; } else { -#ifdef USE_GLES - // GLES does not support GL_BGRA - formatGPU = gpu::Element::COLOR_COMPRESSED_ETC2_SRGBA; - formatMip = formatGPU; -#else formatGPU = gpu::Element::COLOR_SRGBA_32; formatMip = gpu::Element::COLOR_SBGRA_32; -#endif } if (isStrict) { @@ -806,7 +801,7 @@ gpu::TexturePointer TextureUsage::process2DTextureColorFromImage(QImage&& srcIma theTexture->setUsage(usage.build()); theTexture->setStoredMipFormat(formatMip); theTexture->assignStoredMip(0, image.byteCount(), image.constBits()); - generateMips(theTexture.get(), std::move(image), abortProcessing); + generateMips(theTexture.get(), std::move(image), target, abortProcessing); } return theTexture; @@ -887,10 +882,10 @@ QImage processBumpMap(QImage&& image) { return result; } gpu::TexturePointer TextureUsage::process2DTextureNormalMapFromImage(QImage&& srcImage, const std::string& srcImageName, - bool compress, bool isBumpMap, + bool compress, BackendTarget target, bool isBumpMap, const std::atomic& abortProcessing) { PROFILE_RANGE(resource_parse, "process2DTextureNormalMapFromImage"); - QImage image = processSourceImage(std::move(srcImage), false); + QImage image = processSourceImage(std::move(srcImage), false, target); if (isBumpMap) { image = processBumpMap(std::move(image)); @@ -908,11 +903,11 @@ gpu::TexturePointer TextureUsage::process2DTextureNormalMapFromImage(QImage&& sr if (compress) { formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_XY; } else { -#ifdef USE_GLES - formatGPU = gpu::Element::COLOR_COMPRESSED_EAC_XY; -#else - formatGPU = gpu::Element::VEC2NU8_XY; -#endif + if (target == BackendTarget::GLES) { + formatGPU = gpu::Element::COLOR_COMPRESSED_EAC_XY; + } else { + formatGPU = gpu::Element::VEC2NU8_XY; + } } formatMip = formatGPU; @@ -920,17 +915,17 @@ gpu::TexturePointer TextureUsage::process2DTextureNormalMapFromImage(QImage&& sr theTexture->setSource(srcImageName); theTexture->setStoredMipFormat(formatMip); theTexture->assignStoredMip(0, image.byteCount(), image.constBits()); - generateMips(theTexture.get(), std::move(image), abortProcessing); + generateMips(theTexture.get(), std::move(image), target, abortProcessing); } return theTexture; } gpu::TexturePointer TextureUsage::process2DTextureGrayscaleFromImage(QImage&& srcImage, const std::string& srcImageName, - bool compress, bool isInvertedPixels, + bool compress, BackendTarget target, bool isInvertedPixels, const std::atomic& abortProcessing) { PROFILE_RANGE(resource_parse, "process2DTextureGrayscaleFromImage"); - QImage image = processSourceImage(std::move(srcImage), false); + QImage image = processSourceImage(std::move(srcImage), false, target); if (image.format() != QImage::Format_ARGB32) { image = image.convertToFormat(QImage::Format_ARGB32); @@ -948,11 +943,11 @@ gpu::TexturePointer TextureUsage::process2DTextureGrayscaleFromImage(QImage&& sr if (compress) { formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_RED; } else { -#ifdef USE_GLES - formatGPU = gpu::Element::COLOR_COMPRESSED_EAC_RED; -#else - formatGPU = gpu::Element::COLOR_R_8; -#endif + if (target == BackendTarget::GLES) { + formatGPU = gpu::Element::COLOR_COMPRESSED_EAC_RED; + } else { + formatGPU = gpu::Element::COLOR_R_8; + } } formatMip = formatGPU; @@ -960,7 +955,7 @@ gpu::TexturePointer TextureUsage::process2DTextureGrayscaleFromImage(QImage&& sr theTexture->setSource(srcImageName); theTexture->setStoredMipFormat(formatMip); theTexture->assignStoredMip(0, image.byteCount(), image.constBits()); - generateMips(theTexture.get(), std::move(image), abortProcessing); + generateMips(theTexture.get(), std::move(image), target, abortProcessing); } return theTexture; @@ -1233,12 +1228,12 @@ const int CubeLayout::NUM_CUBEMAP_LAYOUTS = sizeof(CubeLayout::CUBEMAP_LAYOUTS) //#define DEBUG_COLOR_PACKING -QImage convertToHDRFormat(QImage&& srcImage, gpu::Element format) { +QImage convertToHDRFormat(QImage&& srcImage, gpu::Element format, BackendTarget target) { // Take a local copy to force move construction // https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f18-for-consume-parameters-pass-by-x-and-stdmove-the-parameter QImage localCopy = std::move(srcImage); - QImage hdrImage(localCopy.width(), localCopy.height(), (QImage::Format)QIMAGE_HDR_FORMAT); + QImage hdrImage(localCopy.width(), localCopy.height(), hdrFormatForTarget(target)); std::function packFunc; #ifdef DEBUG_COLOR_PACKING std::function unpackFunc; @@ -1292,7 +1287,7 @@ QImage convertToHDRFormat(QImage&& srcImage, gpu::Element format) { } gpu::TexturePointer TextureUsage::processCubeTextureColorFromImage(QImage&& srcImage, const std::string& srcImageName, - bool compress, bool generateIrradiance, + bool compress, BackendTarget target, bool generateIrradiance, const std::atomic& abortProcessing) { PROFILE_RANGE(resource_parse, "processCubeTextureColorFromImage"); @@ -1308,14 +1303,14 @@ gpu::TexturePointer TextureUsage::processCubeTextureColorFromImage(QImage&& srcI gpu::TexturePointer theTexture = nullptr; - QImage image = processSourceImage(std::move(localCopy), true); + QImage image = processSourceImage(std::move(localCopy), true, target); - if (image.format() != QIMAGE_HDR_FORMAT) { -#ifndef USE_GLES - image = convertToHDRFormat(std::move(image), HDR_FORMAT); -#else - image = image.convertToFormat(QImage::Format_RGB32); -#endif + if (image.format() != hdrFormatForTarget(target)) { + if (target == BackendTarget::GLES) { + image = image.convertToFormat(QImage::Format_RGB32); + } else { + image = convertToHDRFormat(std::move(image), HDR_FORMAT, target); + } } gpu::Element formatMip; @@ -1323,11 +1318,11 @@ gpu::TexturePointer TextureUsage::processCubeTextureColorFromImage(QImage&& srcI if (compress) { formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_HDR_RGB; } else { -#ifdef USE_GLES - formatGPU = gpu::Element::COLOR_COMPRESSED_ETC2_SRGB; -#else - formatGPU = HDR_FORMAT; -#endif + if (target == BackendTarget::GLES) { + formatGPU = gpu::Element::COLOR_COMPRESSED_ETC2_SRGB; + } else { + formatGPU = HDR_FORMAT; + } } formatMip = formatGPU; @@ -1378,11 +1373,12 @@ gpu::TexturePointer TextureUsage::processCubeTextureColorFromImage(QImage&& srcI PROFILE_RANGE(resource_parse, "generateIrradiance"); gpu::Element irradianceFormat; // TODO: we could locally compress the irradiance texture on Android, but we don't need to -#ifndef USE_GLES - irradianceFormat = HDR_FORMAT; -#else - irradianceFormat = gpu::Element::COLOR_SRGBA_32; -#endif + if (target == BackendTarget::GLES) { + irradianceFormat = gpu::Element::COLOR_SRGBA_32; + } else { + irradianceFormat = HDR_FORMAT; + } + auto irradianceTexture = gpu::Texture::createCube(irradianceFormat, faces[0].width(), gpu::Texture::MAX_NUM_MIPS, gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_MIP_LINEAR, gpu::Sampler::WRAP_CLAMP)); irradianceTexture->setSource(srcImageName); irradianceTexture->setStoredMipFormat(irradianceFormat); @@ -1397,7 +1393,7 @@ gpu::TexturePointer TextureUsage::processCubeTextureColorFromImage(QImage&& srcI } for (uint8 face = 0; face < faces.size(); ++face) { - generateMips(theTexture.get(), std::move(faces[face]), abortProcessing, face); + generateMips(theTexture.get(), std::move(faces[face]), target, abortProcessing, face); } } diff --git a/libraries/image/src/image/Image.h b/libraries/image/src/image/Image.h index ccf4845fca..43b1b613ad 100644 --- a/libraries/image/src/image/Image.h +++ b/libraries/image/src/image/Image.h @@ -21,6 +21,11 @@ class QImage; namespace image { +enum class BackendTarget { + GL, + GLES +}; + namespace TextureUsage { enum Type { @@ -41,42 +46,41 @@ enum Type { UNUSED_TEXTURE }; -using TextureLoader = std::function&)>; +using TextureLoader = std::function&)>; TextureLoader getTextureLoaderForType(Type type, const QVariantMap& options = QVariantMap()); gpu::TexturePointer create2DTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createStrict2DTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createAlbedoTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createEmissiveTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createNormalTextureFromNormalImage(QImage&& image, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createNormalTextureFromBumpImage(QImage&& image, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createRoughnessTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createRoughnessTextureFromGlossImage(QImage&& image, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createMetallicTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createCubeTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createCubeTextureFromImageWithoutIrradiance(QImage&& image, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing); + bool compress, BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createLightmapTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, const std::atomic& abortProcessing); - + bool compress, BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer process2DTextureColorFromImage(QImage&& srcImage, const std::string& srcImageName, bool compress, - bool isStrict, const std::atomic& abortProcessing); + BackendTarget target, bool isStrict, const std::atomic& abortProcessing); gpu::TexturePointer process2DTextureNormalMapFromImage(QImage&& srcImage, const std::string& srcImageName, bool compress, - bool isBumpMap, const std::atomic& abortProcessing); + BackendTarget target, bool isBumpMap, const std::atomic& abortProcessing); gpu::TexturePointer process2DTextureGrayscaleFromImage(QImage&& srcImage, const std::string& srcImageName, bool compress, - bool isInvertedPixels, const std::atomic& abortProcessing); + BackendTarget target, bool isInvertedPixels, const std::atomic& abortProcessing); gpu::TexturePointer processCubeTextureColorFromImage(QImage&& srcImage, const std::string& srcImageName, bool compress, - bool generateIrradiance, const std::atomic& abortProcessing); + BackendTarget target, bool generateIrradiance, const std::atomic& abortProcessing); } // namespace TextureUsage @@ -84,7 +88,13 @@ const QStringList getSupportedFormats(); gpu::TexturePointer processImage(std::shared_ptr content, const std::string& url, int maxNumPixels, TextureUsage::Type textureType, - bool compress = false, const std::atomic& abortProcessing = false); + bool compress = false, +#ifdef USE_GLES + BackendTarget target = BackendTarget::GLES, +#else + BackendTarget target = BackendTarget::GL, +#endif + const std::atomic& abortProcessing = false); } // namespace image diff --git a/libraries/model-networking/src/model-networking/TextureCache.cpp b/libraries/model-networking/src/model-networking/TextureCache.cpp index 40b31cac53..1485766aa2 100644 --- a/libraries/model-networking/src/model-networking/TextureCache.cpp +++ b/libraries/model-networking/src/model-networking/TextureCache.cpp @@ -279,7 +279,12 @@ gpu::TexturePointer TextureCache::getImageTexture(const QString& path, image::Te return nullptr; } auto loader = image::TextureUsage::getTextureLoaderForType(type, options); - return gpu::TexturePointer(loader(std::move(image), path.toStdString(), false, false)); +#ifdef USE_GLES + image::BackendTarget target = image::BackendTarget::GLES; +#else + image::BackendTarget target = image::BackendTarget::GL; +#endif + return gpu::TexturePointer(loader(std::move(image), path.toStdString(), false, target, false)); } QSharedPointer TextureCache::createResource(const QUrl& url, const QSharedPointer& fallback, @@ -1160,7 +1165,13 @@ void ImageReader::read() { // IMPORTANT: _content is empty past this point auto buffer = std::shared_ptr((QIODevice*)new OwningBuffer(std::move(_content))); - texture = image::processImage(std::move(buffer), _url.toString().toStdString(), _maxNumPixels, networkTexture->getTextureType()); + +#ifdef USE_GLES + constexpr bool shouldCompress = true; +#else + constexpr bool shouldCompress = false; +#endif + texture = image::processImage(std::move(buffer), _url.toString().toStdString(), _maxNumPixels, networkTexture->getTextureType(), shouldCompress); if (!texture) { qCWarning(modelnetworking) << "Could not process:" << _url; From f1e63f489b8eae069c21d66d90482398a0066157 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Mon, 16 Jul 2018 08:47:17 -0700 Subject: [PATCH 221/332] Update image::processImage to use compress flag for GLES --- libraries/image/src/image/Image.cpp | 53 ++++++++++++++++------------- libraries/image/src/image/Image.h | 8 +---- 2 files changed, 31 insertions(+), 30 deletions(-) diff --git a/libraries/image/src/image/Image.cpp b/libraries/image/src/image/Image.cpp index eaf8eacfce..a35aa064ae 100644 --- a/libraries/image/src/image/Image.cpp +++ b/libraries/image/src/image/Image.cpp @@ -767,22 +767,28 @@ gpu::TexturePointer TextureUsage::process2DTextureColorFromImage(QImage&& srcIma if ((image.width() > 0) && (image.height() > 0)) { gpu::Element formatMip; gpu::Element formatGPU; - if (target == BackendTarget::GLES) { - // GLES does not support GL_BGRA - formatGPU = gpu::Element::COLOR_COMPRESSED_ETC2_SRGBA; - formatMip = formatGPU; - } else if (compress) { - if (validAlpha) { - // NOTE: This disables BC1a compression because it was producing odd artifacts on text textures - // for the tutorial. Instead we use BC3 (which is larger) but doesn't produce the same artifacts). - formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_SRGBA; + if (compress) { + if (target == BackendTarget::GLES) { + // GLES does not support GL_BGRA + formatGPU = gpu::Element::COLOR_COMPRESSED_ETC2_SRGBA; + formatMip = formatGPU; } else { - formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_SRGB; + if (validAlpha) { + // NOTE: This disables BC1a compression because it was producing odd artifacts on text textures + // for the tutorial. Instead we use BC3 (which is larger) but doesn't produce the same artifacts). + formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_SRGBA; + } else { + formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_SRGB; + } + formatMip = formatGPU; } - formatMip = formatGPU; } else { - formatGPU = gpu::Element::COLOR_SRGBA_32; - formatMip = gpu::Element::COLOR_SBGRA_32; + if (target == BackendTarget::GLES) { + static_assert(false); + } else { + formatGPU = gpu::Element::COLOR_SRGBA_32; + formatMip = gpu::Element::COLOR_SBGRA_32; + } } if (isStrict) { @@ -901,13 +907,13 @@ gpu::TexturePointer TextureUsage::process2DTextureNormalMapFromImage(QImage&& sr gpu::Element formatMip; gpu::Element formatGPU; if (compress) { - formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_XY; - } else { if (target == BackendTarget::GLES) { formatGPU = gpu::Element::COLOR_COMPRESSED_EAC_XY; } else { - formatGPU = gpu::Element::VEC2NU8_XY; + formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_XY; } + } else { + formatGPU = gpu::Element::VEC2NU8_XY; } formatMip = formatGPU; @@ -941,13 +947,13 @@ gpu::TexturePointer TextureUsage::process2DTextureGrayscaleFromImage(QImage&& sr gpu::Element formatMip; gpu::Element formatGPU; if (compress) { - formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_RED; - } else { if (target == BackendTarget::GLES) { formatGPU = gpu::Element::COLOR_COMPRESSED_EAC_RED; } else { - formatGPU = gpu::Element::COLOR_R_8; - } + formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_RED; + } + } else { + formatGPU = gpu::Element::COLOR_R_8; } formatMip = formatGPU; @@ -1316,14 +1322,15 @@ gpu::TexturePointer TextureUsage::processCubeTextureColorFromImage(QImage&& srcI gpu::Element formatMip; gpu::Element formatGPU; if (compress) { - formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_HDR_RGB; - } else { if (target == BackendTarget::GLES) { formatGPU = gpu::Element::COLOR_COMPRESSED_ETC2_SRGB; } else { - formatGPU = HDR_FORMAT; + formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_HDR_RGB; } + } else { + formatGPU = HDR_FORMAT; } + formatMip = formatGPU; // Find the layout of the cubemap in the 2D image diff --git a/libraries/image/src/image/Image.h b/libraries/image/src/image/Image.h index 43b1b613ad..9e56369ad3 100644 --- a/libraries/image/src/image/Image.h +++ b/libraries/image/src/image/Image.h @@ -88,13 +88,7 @@ const QStringList getSupportedFormats(); gpu::TexturePointer processImage(std::shared_ptr content, const std::string& url, int maxNumPixels, TextureUsage::Type textureType, - bool compress = false, -#ifdef USE_GLES - BackendTarget target = BackendTarget::GLES, -#else - BackendTarget target = BackendTarget::GL, -#endif - const std::atomic& abortProcessing = false); + bool compress, BackendTarget target, const std::atomic& abortProcessing = false); } // namespace image From 140b9be1c43b196dfa576941234bd0a1eabbc180 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Mon, 16 Jul 2018 10:00:11 -0700 Subject: [PATCH 222/332] Update BackendTarget to include version --- libraries/baking/src/TextureBaker.cpp | 6 ++--- libraries/image/src/image/Image.cpp | 23 +++++++++---------- libraries/image/src/image/Image.h | 5 ++-- .../src/model-networking/TextureCache.cpp | 11 ++++++--- 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/libraries/baking/src/TextureBaker.cpp b/libraries/baking/src/TextureBaker.cpp index 24fc331a3b..66c86d8c5f 100644 --- a/libraries/baking/src/TextureBaker.cpp +++ b/libraries/baking/src/TextureBaker.cpp @@ -150,8 +150,8 @@ void TextureBaker::processTexture() { // Compressed KTX if (_compressionEnabled) { constexpr std::array BACKEND_TARGETS { - image::BackendTarget::GL, - image::BackendTarget::GLES + image::BackendTarget::GL45, + image::BackendTarget::GLES32 }; for (auto target : BACKEND_TARGETS) { auto processedTexture = image::processImage(buffer, _textureURL.toString().toStdString(), @@ -198,7 +198,7 @@ void TextureBaker::processTexture() { if (_textureType == image::TextureUsage::Type::CUBE_TEXTURE) { buffer->reset(); auto processedTexture = image::processImage(std::move(buffer), _textureURL.toString().toStdString(), - ABSOLUTE_MAX_TEXTURE_NUM_PIXELS, _textureType, false, image::BackendTarget::GL, _abortProcessing); + ABSOLUTE_MAX_TEXTURE_NUM_PIXELS, _textureType, false, image::BackendTarget::GL45, _abortProcessing); if (!processedTexture) { handleError("Could not process texture " + _textureURL.toString()); return; diff --git a/libraries/image/src/image/Image.cpp b/libraries/image/src/image/Image.cpp index a35aa064ae..2c9255d215 100644 --- a/libraries/image/src/image/Image.cpp +++ b/libraries/image/src/image/Image.cpp @@ -80,7 +80,7 @@ const QStringList getSupportedFormats() { // On GLES, we don't use HDR skyboxes QImage::Format hdrFormatForTarget(BackendTarget target) { - if (target == BackendTarget::GLES) { + if (target == BackendTarget::GLES32) { return QImage::Format_RGB32; } return QImage::Format_RGB30; @@ -271,7 +271,7 @@ QImage processSourceImage(QImage&& srcImage, bool cubemap, BackendTarget target) const glm::uvec2 srcImageSize = toGlm(localCopy.size()); glm::uvec2 targetSize = srcImageSize; - const auto maxTextureSize = target == BackendTarget::GL ? MAX_TEXTURE_SIZE_GL : MAX_TEXTURE_SIZE_GLES; + const auto maxTextureSize = target == BackendTarget::GLES32 ? MAX_TEXTURE_SIZE_GLES : MAX_TEXTURE_SIZE_GL; while (glm::any(glm::greaterThan(targetSize, maxTextureSize))) { targetSize /= 2; } @@ -513,7 +513,7 @@ void generateLDRMips(gpu::Texture* texture, QImage&& image, BackendTarget target const int width = localCopy.width(), height = localCopy.height(); auto mipFormat = texture->getStoredMipFormat(); - if (target != BackendTarget::GLES) { + if (target != BackendTarget::GLES32) { const void* data = static_cast(localCopy.constBits()); nvtt::TextureType textureType = nvtt::TextureType_2D; nvtt::InputFormat inputFormat = nvtt::InputFormat_BGRA_8UB; @@ -705,7 +705,7 @@ void generateMips(gpu::Texture* texture, QImage&& image, BackendTarget target, c #if CPU_MIPMAPS PROFILE_RANGE(resource_parse, "generateMips"); - if (target == BackendTarget::GLES) { + if (target == BackendTarget::GLES32) { generateLDRMips(texture, std::move(image), target, abortProcessing, face); } else { if (image.format() == hdrFormatForTarget(target)) { @@ -768,7 +768,7 @@ gpu::TexturePointer TextureUsage::process2DTextureColorFromImage(QImage&& srcIma gpu::Element formatMip; gpu::Element formatGPU; if (compress) { - if (target == BackendTarget::GLES) { + if (target == BackendTarget::GLES32) { // GLES does not support GL_BGRA formatGPU = gpu::Element::COLOR_COMPRESSED_ETC2_SRGBA; formatMip = formatGPU; @@ -783,8 +783,7 @@ gpu::TexturePointer TextureUsage::process2DTextureColorFromImage(QImage&& srcIma formatMip = formatGPU; } } else { - if (target == BackendTarget::GLES) { - static_assert(false); + if (target == BackendTarget::GLES32) { } else { formatGPU = gpu::Element::COLOR_SRGBA_32; formatMip = gpu::Element::COLOR_SBGRA_32; @@ -907,7 +906,7 @@ gpu::TexturePointer TextureUsage::process2DTextureNormalMapFromImage(QImage&& sr gpu::Element formatMip; gpu::Element formatGPU; if (compress) { - if (target == BackendTarget::GLES) { + if (target == BackendTarget::GLES32) { formatGPU = gpu::Element::COLOR_COMPRESSED_EAC_XY; } else { formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_XY; @@ -947,7 +946,7 @@ gpu::TexturePointer TextureUsage::process2DTextureGrayscaleFromImage(QImage&& sr gpu::Element formatMip; gpu::Element formatGPU; if (compress) { - if (target == BackendTarget::GLES) { + if (target == BackendTarget::GLES32) { formatGPU = gpu::Element::COLOR_COMPRESSED_EAC_RED; } else { formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_RED; @@ -1312,7 +1311,7 @@ gpu::TexturePointer TextureUsage::processCubeTextureColorFromImage(QImage&& srcI QImage image = processSourceImage(std::move(localCopy), true, target); if (image.format() != hdrFormatForTarget(target)) { - if (target == BackendTarget::GLES) { + if (target == BackendTarget::GLES32) { image = image.convertToFormat(QImage::Format_RGB32); } else { image = convertToHDRFormat(std::move(image), HDR_FORMAT, target); @@ -1322,7 +1321,7 @@ gpu::TexturePointer TextureUsage::processCubeTextureColorFromImage(QImage&& srcI gpu::Element formatMip; gpu::Element formatGPU; if (compress) { - if (target == BackendTarget::GLES) { + if (target == BackendTarget::GLES32) { formatGPU = gpu::Element::COLOR_COMPRESSED_ETC2_SRGB; } else { formatGPU = gpu::Element::COLOR_COMPRESSED_BCX_HDR_RGB; @@ -1380,7 +1379,7 @@ gpu::TexturePointer TextureUsage::processCubeTextureColorFromImage(QImage&& srcI PROFILE_RANGE(resource_parse, "generateIrradiance"); gpu::Element irradianceFormat; // TODO: we could locally compress the irradiance texture on Android, but we don't need to - if (target == BackendTarget::GLES) { + if (target == BackendTarget::GLES32) { irradianceFormat = gpu::Element::COLOR_SRGBA_32; } else { irradianceFormat = HDR_FORMAT; diff --git a/libraries/image/src/image/Image.h b/libraries/image/src/image/Image.h index 9e56369ad3..e633cfc600 100644 --- a/libraries/image/src/image/Image.h +++ b/libraries/image/src/image/Image.h @@ -22,8 +22,9 @@ class QImage; namespace image { enum class BackendTarget { - GL, - GLES + GL41, + GL45, + GLES32 }; namespace TextureUsage { diff --git a/libraries/model-networking/src/model-networking/TextureCache.cpp b/libraries/model-networking/src/model-networking/TextureCache.cpp index 1485766aa2..1f536e8f09 100644 --- a/libraries/model-networking/src/model-networking/TextureCache.cpp +++ b/libraries/model-networking/src/model-networking/TextureCache.cpp @@ -280,9 +280,9 @@ gpu::TexturePointer TextureCache::getImageTexture(const QString& path, image::Te } auto loader = image::TextureUsage::getTextureLoaderForType(type, options); #ifdef USE_GLES - image::BackendTarget target = image::BackendTarget::GLES; + image::BackendTarget target = image::BackendTarget::GLES32; #else - image::BackendTarget target = image::BackendTarget::GL; + image::BackendTarget target = image::BackendTarget::GL45; #endif return gpu::TexturePointer(loader(std::move(image), path.toStdString(), false, target, false)); } @@ -1171,7 +1171,12 @@ void ImageReader::read() { #else constexpr bool shouldCompress = false; #endif - texture = image::processImage(std::move(buffer), _url.toString().toStdString(), _maxNumPixels, networkTexture->getTextureType(), shouldCompress); + #ifdef USE_GLES + image::BackendTarget target = image::BackendTarget::GLES32; + #else + image::BackendTarget target = image::BackendTarget::GL45; + #endif + texture = image::processImage(std::move(buffer), _url.toString().toStdString(), _maxNumPixels, networkTexture->getTextureType(), shouldCompress, target); if (!texture) { qCWarning(modelnetworking) << "Could not process:" << _url; From 26e69de81ea0cea5da17d2f24329c0203f6cbda9 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 24 Jul 2018 16:37:34 -0700 Subject: [PATCH 223/332] Add braces around std::array intialization to suppress warning --- libraries/baking/src/TextureBaker.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/baking/src/TextureBaker.cpp b/libraries/baking/src/TextureBaker.cpp index 66c86d8c5f..17bdf6fa7d 100644 --- a/libraries/baking/src/TextureBaker.cpp +++ b/libraries/baking/src/TextureBaker.cpp @@ -149,10 +149,10 @@ void TextureBaker::processTexture() { // Compressed KTX if (_compressionEnabled) { - constexpr std::array BACKEND_TARGETS { + constexpr std::array BACKEND_TARGETS {{ image::BackendTarget::GL45, image::BackendTarget::GLES32 - }; + }}; for (auto target : BACKEND_TARGETS) { auto processedTexture = image::processImage(buffer, _textureURL.toString().toStdString(), ABSOLUTE_MAX_TEXTURE_NUM_PIXELS, _textureType, true, From 6be0c43fca4f07180901adae8b6c9ba57cbf2ff5 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 26 Jul 2018 16:40:05 -0700 Subject: [PATCH 224/332] Update generateIrradiance to take a BackendTarget --- libraries/baking/src/TextureBaker.cpp | 8 +-- libraries/gpu/src/gpu/Texture.cpp | 72 +++++++++---------- libraries/gpu/src/gpu/Texture.h | 9 ++- libraries/image/src/image/Image.cpp | 2 +- libraries/image/src/image/Image.h | 42 +++++------ .../src/model-networking/TextureCache.cpp | 8 +-- 6 files changed, 70 insertions(+), 71 deletions(-) diff --git a/libraries/baking/src/TextureBaker.cpp b/libraries/baking/src/TextureBaker.cpp index 17bdf6fa7d..2516323c37 100644 --- a/libraries/baking/src/TextureBaker.cpp +++ b/libraries/baking/src/TextureBaker.cpp @@ -149,9 +149,9 @@ void TextureBaker::processTexture() { // Compressed KTX if (_compressionEnabled) { - constexpr std::array BACKEND_TARGETS {{ - image::BackendTarget::GL45, - image::BackendTarget::GLES32 + constexpr std::array BACKEND_TARGETS {{ + gpu::BackendTarget::GL45, + gpu::BackendTarget::GLES32 }}; for (auto target : BACKEND_TARGETS) { auto processedTexture = image::processImage(buffer, _textureURL.toString().toStdString(), @@ -198,7 +198,7 @@ void TextureBaker::processTexture() { if (_textureType == image::TextureUsage::Type::CUBE_TEXTURE) { buffer->reset(); auto processedTexture = image::processImage(std::move(buffer), _textureURL.toString().toStdString(), - ABSOLUTE_MAX_TEXTURE_NUM_PIXELS, _textureType, false, image::BackendTarget::GL45, _abortProcessing); + ABSOLUTE_MAX_TEXTURE_NUM_PIXELS, _textureType, false, gpu::BackendTarget::GL45, _abortProcessing); if (!processedTexture) { handleError("Could not process texture " + _textureURL.toString()); return; diff --git a/libraries/gpu/src/gpu/Texture.cpp b/libraries/gpu/src/gpu/Texture.cpp index 34262b0cd9..d34fa954c8 100755 --- a/libraries/gpu/src/gpu/Texture.cpp +++ b/libraries/gpu/src/gpu/Texture.cpp @@ -510,7 +510,7 @@ void Texture::setSampler(const Sampler& sampler) { } -bool Texture::generateIrradiance() { +bool Texture::generateIrradiance(gpu::BackendTarget target) { if (getType() != TEX_CUBE) { return false; } @@ -521,7 +521,7 @@ bool Texture::generateIrradiance() { _irradiance = std::make_shared(); } - _irradiance->evalFromTexture(*this); + _irradiance->evalFromTexture(*this, target); return true; } @@ -684,7 +684,7 @@ void sphericalHarmonicsEvaluateDirection(float * result, int order, const glm:: result[8] = P_2_2 * ((double)dir.x * (double)dir.x - (double)dir.y * (double)dir.y); } -bool sphericalHarmonicsFromTexture(const gpu::Texture& cubeTexture, std::vector & output, const uint order) { +bool sphericalHarmonicsFromTexture(const gpu::Texture& cubeTexture, std::vector & output, const uint order, gpu::BackendTarget target) { int width = cubeTexture.getWidth(); if(width != cubeTexture.getHeight()) { return false; @@ -692,22 +692,6 @@ bool sphericalHarmonicsFromTexture(const gpu::Texture& cubeTexture, std::vector< PROFILE_RANGE(render_gpu, "sphericalHarmonicsFromTexture"); -#ifndef USE_GLES - auto mipFormat = cubeTexture.getStoredMipFormat(); - std::function unpackFunc; - switch (mipFormat.getSemantic()) { - case gpu::R11G11B10: - unpackFunc = glm::unpackF2x11_1x10; - break; - case gpu::RGB9E5: - unpackFunc = glm::unpackF3x9_E1x5; - break; - default: - assert(false); - break; - } -#endif - const uint sqOrder = order*order; // allocate memory for calculations @@ -741,11 +725,7 @@ bool sphericalHarmonicsFromTexture(const gpu::Texture& cubeTexture, std::vector< for(int face=0; face < gpu::Texture::NUM_CUBE_FACES; face++) { PROFILE_RANGE(render_gpu, "ProcessFace"); -#ifndef USE_GLES - auto data = reinterpret_cast( cubeTexture.accessStoredMipFace(0, face)->readData() ); -#else auto data = cubeTexture.accessStoredMipFace(0, face)->readData(); -#endif if (data == nullptr) { continue; } @@ -827,20 +807,40 @@ bool sphericalHarmonicsFromTexture(const gpu::Texture& cubeTexture, std::vector< // get color from texture glm::vec3 color{ 0.0f, 0.0f, 0.0f }; - for (int i = 0; i < stride; ++i) { - for (int j = 0; j < stride; ++j) { -#ifndef USE_GLES - int k = (int)(x + i - halfStride + (y + j - halfStride) * width); - color += unpackFunc(data[k]); -#else - const int NUM_COMPONENTS_PER_PIXEL = 4; - int k = NUM_COMPONENTS_PER_PIXEL * (int)(x + i - halfStride + (y + j - halfStride) * width); - // BGRA -> RGBA - color += glm::pow(glm::vec3(data[k + 2], data[k + 1], data[k]) / 255.0f, glm::vec3(2.2f)); -#endif + + if (target != gpu::BackendTarget::GLES32) { + auto mipFormat = cubeTexture.getStoredMipFormat(); + std::function unpackFunc; + switch (mipFormat.getSemantic()) { + case gpu::R11G11B10: + unpackFunc = glm::unpackF2x11_1x10; + break; + case gpu::RGB9E5: + unpackFunc = glm::unpackF3x9_E1x5; + break; + default: + assert(false); + break; + } + auto data32 = reinterpret_cast(data); + for (int i = 0; i < stride; ++i) { + for (int j = 0; j < stride; ++j) { + int k = (int)(x + i - halfStride + (y + j - halfStride) * width); + color += unpackFunc(data32[k]); + } + } + } else { + // BGRA -> RGBA + const int NUM_COMPONENTS_PER_PIXEL = 4; + for (int i = 0; i < stride; ++i) { + for (int j = 0; j < stride; ++j) { + int k = NUM_COMPONENTS_PER_PIXEL * (int)(x + i - halfStride + (y + j - halfStride) * width); + color += glm::pow(glm::vec3(data[k + 2], data[k + 1], data[k]) / 255.0f, glm::vec3(2.2f)); + } } } + // scale color and add to previously accumulated coefficients // red sphericalHarmonicsScale(shBuffB.data(), order, shBuff.data(), color.r * fDiffSolid); @@ -869,10 +869,10 @@ bool sphericalHarmonicsFromTexture(const gpu::Texture& cubeTexture, std::vector< return true; } -void SphericalHarmonics::evalFromTexture(const Texture& texture) { +void SphericalHarmonics::evalFromTexture(const Texture& texture, gpu::BackendTarget target) { if (texture.isDefined()) { std::vector< glm::vec3 > coefs; - sphericalHarmonicsFromTexture(texture, coefs, 3); + sphericalHarmonicsFromTexture(texture, coefs, 3, target); L00 = coefs[0]; L1m1 = coefs[1]; diff --git a/libraries/gpu/src/gpu/Texture.h b/libraries/gpu/src/gpu/Texture.h index 9ad5dc0816..73ed1b15dc 100755 --- a/libraries/gpu/src/gpu/Texture.h +++ b/libraries/gpu/src/gpu/Texture.h @@ -43,6 +43,11 @@ namespace khronos { namespace gl { namespace texture { namespace gpu { +enum class BackendTarget { + GL41, + GL45, + GLES32 +}; const std::string SOURCE_HASH_KEY { "hifi.sourceHash" }; @@ -82,7 +87,7 @@ public: void assignPreset(int p); - void evalFromTexture(const Texture& texture); + void evalFromTexture(const Texture& texture, gpu::BackendTarget target); }; typedef std::shared_ptr< SphericalHarmonics > SHPointer; @@ -541,7 +546,7 @@ public: Usage getUsage() const { return _usage; } // For Cube Texture, it's possible to generate the irradiance spherical harmonics and make them availalbe with the texture - bool generateIrradiance(); + bool generateIrradiance(gpu::BackendTarget target); const SHPointer& getIrradiance(uint16 slice = 0) const { return _irradiance; } void overrideIrradiance(SHPointer irradiance) { _irradiance = irradiance; } bool isIrradianceValid() const { return _isIrradianceValid; } diff --git a/libraries/image/src/image/Image.cpp b/libraries/image/src/image/Image.cpp index 2c9255d215..1355a24bf4 100644 --- a/libraries/image/src/image/Image.cpp +++ b/libraries/image/src/image/Image.cpp @@ -1392,7 +1392,7 @@ gpu::TexturePointer TextureUsage::processCubeTextureColorFromImage(QImage&& srcI irradianceTexture->assignStoredMipFace(0, face, faces[face].byteCount(), faces[face].constBits()); } - irradianceTexture->generateIrradiance(); + irradianceTexture->generateIrradiance(target); auto irradiance = irradianceTexture->getIrradiance(); theTexture->overrideIrradiance(irradiance); diff --git a/libraries/image/src/image/Image.h b/libraries/image/src/image/Image.h index e633cfc600..ae72a183b3 100644 --- a/libraries/image/src/image/Image.h +++ b/libraries/image/src/image/Image.h @@ -21,12 +21,6 @@ class QImage; namespace image { -enum class BackendTarget { - GL41, - GL45, - GLES32 -}; - namespace TextureUsage { enum Type { @@ -47,41 +41,41 @@ enum Type { UNUSED_TEXTURE }; -using TextureLoader = std::function&)>; +using TextureLoader = std::function&)>; TextureLoader getTextureLoaderForType(Type type, const QVariantMap& options = QVariantMap()); gpu::TexturePointer create2DTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, BackendTarget target, const std::atomic& abortProcessing); + bool compress, gpu::BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createStrict2DTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, BackendTarget target, const std::atomic& abortProcessing); + bool compress, gpu::BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createAlbedoTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, BackendTarget target, const std::atomic& abortProcessing); + bool compress, gpu::BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createEmissiveTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, BackendTarget target, const std::atomic& abortProcessing); + bool compress, gpu::BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createNormalTextureFromNormalImage(QImage&& image, const std::string& srcImageName, - bool compress, BackendTarget target, const std::atomic& abortProcessing); + bool compress, gpu::BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createNormalTextureFromBumpImage(QImage&& image, const std::string& srcImageName, - bool compress, BackendTarget target, const std::atomic& abortProcessing); + bool compress, gpu::BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createRoughnessTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, BackendTarget target, const std::atomic& abortProcessing); + bool compress, gpu::BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createRoughnessTextureFromGlossImage(QImage&& image, const std::string& srcImageName, - bool compress, BackendTarget target, const std::atomic& abortProcessing); + bool compress, gpu::BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createMetallicTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, BackendTarget target, const std::atomic& abortProcessing); + bool compress, gpu::BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createCubeTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, BackendTarget target, const std::atomic& abortProcessing); + bool compress, gpu::BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createCubeTextureFromImageWithoutIrradiance(QImage&& image, const std::string& srcImageName, - bool compress, BackendTarget target, const std::atomic& abortProcessing); + bool compress, gpu::BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer createLightmapTextureFromImage(QImage&& image, const std::string& srcImageName, - bool compress, BackendTarget target, const std::atomic& abortProcessing); + bool compress, gpu::BackendTarget target, const std::atomic& abortProcessing); gpu::TexturePointer process2DTextureColorFromImage(QImage&& srcImage, const std::string& srcImageName, bool compress, - BackendTarget target, bool isStrict, const std::atomic& abortProcessing); + gpu::BackendTarget target, bool isStrict, const std::atomic& abortProcessing); gpu::TexturePointer process2DTextureNormalMapFromImage(QImage&& srcImage, const std::string& srcImageName, bool compress, - BackendTarget target, bool isBumpMap, const std::atomic& abortProcessing); + gpu::BackendTarget target, bool isBumpMap, const std::atomic& abortProcessing); gpu::TexturePointer process2DTextureGrayscaleFromImage(QImage&& srcImage, const std::string& srcImageName, bool compress, - BackendTarget target, bool isInvertedPixels, const std::atomic& abortProcessing); + gpu::BackendTarget target, bool isInvertedPixels, const std::atomic& abortProcessing); gpu::TexturePointer processCubeTextureColorFromImage(QImage&& srcImage, const std::string& srcImageName, bool compress, - BackendTarget target, bool generateIrradiance, const std::atomic& abortProcessing); + gpu::BackendTarget target, bool generateIrradiance, const std::atomic& abortProcessing); } // namespace TextureUsage @@ -89,7 +83,7 @@ const QStringList getSupportedFormats(); gpu::TexturePointer processImage(std::shared_ptr content, const std::string& url, int maxNumPixels, TextureUsage::Type textureType, - bool compress, BackendTarget target, const std::atomic& abortProcessing = false); + bool compress, gpu::BackendTarget target, const std::atomic& abortProcessing = false); } // namespace image diff --git a/libraries/model-networking/src/model-networking/TextureCache.cpp b/libraries/model-networking/src/model-networking/TextureCache.cpp index 1f536e8f09..7f435838b6 100644 --- a/libraries/model-networking/src/model-networking/TextureCache.cpp +++ b/libraries/model-networking/src/model-networking/TextureCache.cpp @@ -280,9 +280,9 @@ gpu::TexturePointer TextureCache::getImageTexture(const QString& path, image::Te } auto loader = image::TextureUsage::getTextureLoaderForType(type, options); #ifdef USE_GLES - image::BackendTarget target = image::BackendTarget::GLES32; + gpu::BackendTarget target = gpu::BackendTarget::GLES32; #else - image::BackendTarget target = image::BackendTarget::GL45; + gpu::BackendTarget target = gpu::BackendTarget::GL45; #endif return gpu::TexturePointer(loader(std::move(image), path.toStdString(), false, target, false)); } @@ -1172,9 +1172,9 @@ void ImageReader::read() { constexpr bool shouldCompress = false; #endif #ifdef USE_GLES - image::BackendTarget target = image::BackendTarget::GLES32; + gpu::BackendTarget target = gpu::BackendTarget::GLES32; #else - image::BackendTarget target = image::BackendTarget::GL45; + gpu::BackendTarget target = gpu::BackendTarget::GL45; #endif texture = image::processImage(std::move(buffer), _url.toString().toStdString(), _maxNumPixels, networkTexture->getTextureType(), shouldCompress, target); From 6249d1c3aa5e9ec802ee5d414598d75ede18cbf3 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 8 Aug 2018 10:32:26 -0700 Subject: [PATCH 225/332] Initialize btCollisionWorld::ContactResultCallback BEFORE AllContactsCallback variables --- libraries/physics/src/PhysicsEngine.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index fe12350124..95004f8b2a 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -842,11 +842,11 @@ void PhysicsEngine::setShowBulletConstraintLimits(bool value) { struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { AllContactsCallback(MotionStateType desiredObjectType, const ShapeInfo& shapeInfo, const Transform& transform, btCollisionObject* myAvatarCollisionObject) : + btCollisionWorld::ContactResultCallback(), desiredObjectType(desiredObjectType), collisionObject(), contacts(), - myAvatarCollisionObject(myAvatarCollisionObject), - btCollisionWorld::ContactResultCallback() { + myAvatarCollisionObject(myAvatarCollisionObject) { const btCollisionShape* collisionShape = ObjectMotionState::getShapeManager()->getShape(shapeInfo); collisionObject.setCollisionShape(const_cast(collisionShape)); From 22142a84b89281b491b222ffa6376a08e0cbff01 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 8 Aug 2018 10:42:26 -0700 Subject: [PATCH 226/332] Remove JS documentation on 'loaded' parameter referencing unsupported model collision pick --- interface/src/raypick/PickScriptingInterface.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 908f0eb48a..e1431c3937 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -151,9 +151,11 @@ public: * @property {EntityItersection[]} entityIntersections The collision information of entities which intersect with the CollisionRegion. There may be multiple intersections with the same entity which represent distinct collision points. * @property {EntityItersection[]} avatarIntersections The collision information of avatars which intersect with the CollisionRegion. There may be multiple intersections with the same entity which represent distinct collision points. * @property {CollisionRegion} collisionRegion The CollisionRegion that was used. Valid even if there was no intersection. - * @property {boolean} loaded If the CollisionRegion was successfully loaded (may be false if a model was used) */ + // TODO: Add this to the CollisionPickResult jsdoc once model collision picks are working + //* @property {boolean} loaded If the CollisionRegion was successfully loaded (may be false if a model was used) + /**jsdoc * A pair of intersection points between a CollisionPick and an entity/avatar. * From 5b6916177c542e053fdd1eb76ad9afcefe8e1db8 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 8 Aug 2018 10:47:13 -0700 Subject: [PATCH 227/332] Add support for rotation as CollisionRegion parameter and make it the default --- interface/src/raypick/PickScriptingInterface.cpp | 2 +- libraries/shared/src/RegisteredMetaTypes.h | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index 72606c8da6..28bffb487e 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -255,7 +255,7 @@ unsigned int PickScriptingInterface::createParabolaPick(const QVariant& properti * @typedef {object} Picks.CollisionPickProperties * @property {Shape} shape - The information about the collision region's size and shape. * @property {Vec3} position - The position of the collision region. -* @property {Quat} orientation - The orientation of the collision region. +* @property {Quat} rotation - The orientation of the collision region. */ unsigned int PickScriptingInterface::createCollisionPick(const QVariant& properties) { QVariantMap propMap = properties.toMap(); diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index 204ee04baa..5f842ef066 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -282,7 +282,9 @@ public: if (pickVariant["position"].isValid()) { transform.setTranslation(vec3FromVariant(pickVariant["position"])); } - if (pickVariant["orientation"].isValid()) { + if (pickVariant["rotation"].isValid()) { + transform.setRotation(quatFromVariant(pickVariant["rotation"])); + } else if (pickVariant["orientation"].isValid()) { transform.setRotation(quatFromVariant(pickVariant["orientation"])); } } From 4cdc6196e40dfe743e067248ee299baaff9c1d4a Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Wed, 8 Aug 2018 11:07:21 -0700 Subject: [PATCH 228/332] WIP - adding help. --- tools/auto-tester/CMakeLists.txt | 2 +- tools/auto-tester/src/ui/AutoTester.cpp | 2 + tools/auto-tester/src/ui/HelpWindow.cpp | 199 ++--------------------- tools/auto-tester/src/ui/HelpWindow.h | 98 ++--------- tools/auto-tester/src/ui/HelpWindow.ui | 117 +++---------- tools/auto-tester/src/ui/document.cpp | 59 ------- tools/auto-tester/src/ui/document.h | 73 --------- tools/auto-tester/src/ui/previewpage.cpp | 64 -------- tools/auto-tester/src/ui/previewpage.h | 66 -------- 9 files changed, 54 insertions(+), 626 deletions(-) delete mode 100644 tools/auto-tester/src/ui/document.cpp delete mode 100644 tools/auto-tester/src/ui/document.h delete mode 100644 tools/auto-tester/src/ui/previewpage.cpp delete mode 100644 tools/auto-tester/src/ui/previewpage.h diff --git a/tools/auto-tester/CMakeLists.txt b/tools/auto-tester/CMakeLists.txt index 940de5d7bb..1546a35f4c 100644 --- a/tools/auto-tester/CMakeLists.txt +++ b/tools/auto-tester/CMakeLists.txt @@ -5,7 +5,7 @@ project(${TARGET_NAME}) SET (CMAKE_AUTOUIC ON) SET (CMAKE_AUTOMOC ON) -setup_hifi_project (Core Widgets Network Xml WebEngineWidgets) +setup_hifi_project (Core Widgets Network Xml) link_hifi_libraries () # FIX: Qt was built with -reduce-relocations diff --git a/tools/auto-tester/src/ui/AutoTester.cpp b/tools/auto-tester/src/ui/AutoTester.cpp index aa9c1ffdfb..13bda4853f 100644 --- a/tools/auto-tester/src/ui/AutoTester.cpp +++ b/tools/auto-tester/src/ui/AutoTester.cpp @@ -31,6 +31,8 @@ AutoTester::AutoTester(QWidget* parent) : QMainWindow(parent) { #ifndef Q_OS_WIN _ui.tabWidget->setTabEnabled(3, false); #endif + + // helpWindow.textBrowser->setText() } void AutoTester::setup() { diff --git a/tools/auto-tester/src/ui/HelpWindow.cpp b/tools/auto-tester/src/ui/HelpWindow.cpp index c6f3fcd2ee..21c5d9d375 100644 --- a/tools/auto-tester/src/ui/HelpWindow.cpp +++ b/tools/auto-tester/src/ui/HelpWindow.cpp @@ -1,189 +1,14 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// +// HelpWindow.cpp +// +// Created by Nissim Hadar on 8 Aug 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include "HelpWindow.h" -#include "helpwindow.h" -#include "previewpage.h" -#include "ui_helpwindow.h" - -#include -#include -#include -#include -#include -#include - -HelpWindow::HelpWindow(QWidget *parent) : - QMainWindow(parent), - ui(new Ui::HelpWindow) -{ - ui->setupUi(this); - ui->editor->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); - ui->preview->setContextMenuPolicy(Qt::NoContextMenu); - - PreviewPage *page = new PreviewPage(this); - ui->preview->setPage(page); - - connect(ui->editor, &QPlainTextEdit::textChanged, - [this]() { m_content.setText(ui->editor->toPlainText()); }); - - QWebChannel *channel = new QWebChannel(this); - channel->registerObject(QStringLiteral("content"), &m_content); - page->setWebChannel(channel); - - ui->preview->setUrl(QUrl("qrc:/index.html")); - - connect(ui->actionNew, &QAction::triggered, this, &HelpWindow::onFileNew); - connect(ui->actionOpen, &QAction::triggered, this, &HelpWindow::onFileOpen); - connect(ui->actionSave, &QAction::triggered, this, &HelpWindow::onFileSave); - connect(ui->actionSaveAs, &QAction::triggered, this, &HelpWindow::onFileSaveAs); - connect(ui->actionExit, &QAction::triggered, this, &HelpWindow::onExit); - - connect(ui->editor->document(), &QTextDocument::modificationChanged, - ui->actionSave, &QAction::setEnabled); - - QFile defaultTextFile(":/default.md"); - defaultTextFile.open(QIODevice::ReadOnly); - ui->editor->setPlainText(defaultTextFile.readAll()); -} - -HelpWindow::~HelpWindow() -{ - delete ui; -} - -void HelpWindow::openFile(const QString &path) -{ - QFile f(path); - if (!f.open(QIODevice::ReadOnly)) { - QMessageBox::warning(this, windowTitle(), - tr("Could not open file %1: %2").arg( - QDir::toNativeSeparators(path), f.errorString())); - return; - } - m_filePath = path; - ui->editor->setPlainText(f.readAll()); -} - -bool HelpWindow::isModified() const -{ - return ui->editor->document()->isModified(); -} - -void HelpWindow::onFileNew() -{ - if (isModified()) { - QMessageBox::StandardButton button = QMessageBox::question(this, windowTitle(), - tr("You have unsaved changes. Do you want to create a new document anyway?")); - if (button != QMessageBox::Yes) - return; - } - - m_filePath.clear(); - ui->editor->setPlainText(tr("## New document")); - ui->editor->document()->setModified(false); -} - -void HelpWindow::onFileOpen() -{ - if (isModified()) { - QMessageBox::StandardButton button = QMessageBox::question(this, windowTitle(), - tr("You have unsaved changes. Do you want to open a new document anyway?")); - if (button != QMessageBox::Yes) - return; - } - - QString path = QFileDialog::getOpenFileName(this, - tr("Open MarkDown File"), "", tr("MarkDown File (*.md)")); - if (path.isEmpty()) - return; - - openFile(path); -} - -void HelpWindow::onFileSave() -{ - if (m_filePath.isEmpty()) { - onFileSaveAs(); - return; - } - - QFile f(m_filePath); - if (!f.open(QIODevice::WriteOnly | QIODevice::Text)) { - QMessageBox::warning(this, windowTitle(), - tr("Could not write to file %1: %2").arg( - QDir::toNativeSeparators(m_filePath), f.errorString())); - return; - } - QTextStream str(&f); - str << ui->editor->toPlainText(); - - ui->editor->document()->setModified(false); -} - -void HelpWindow::onFileSaveAs() -{ - QString path = QFileDialog::getSaveFileName(this, - tr("Save MarkDown File"), "", tr("MarkDown File (*.md, *.markdown)")); - if (path.isEmpty()) - return; - m_filePath = path; - onFileSave(); -} - -void HelpWindow::onExit() -{ - if (isModified()) { - QMessageBox::StandardButton button = QMessageBox::question(this, windowTitle(), - tr("You have unsaved changes. Do you want to exit anyway?")); - if (button != QMessageBox::Yes) - return; - } - close(); +HelpWindow::HelpWindow(QWidget *parent) { + setupUi(this); } diff --git a/tools/auto-tester/src/ui/HelpWindow.h b/tools/auto-tester/src/ui/HelpWindow.h index 7b4c99c9a3..5ce91b360d 100644 --- a/tools/auto-tester/src/ui/HelpWindow.h +++ b/tools/auto-tester/src/ui/HelpWindow.h @@ -1,90 +1,22 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// +// HelpWindow.h +// +// Created by Nissim Hadar on 8 Aug 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#ifndef hifi_HelpWindow_h +#define hifi_HelpWindow_h -#ifndef MAINWINDOW_H -#define MAINWINDOW_H +#include "ui_HelpWindow.h" -#include "document.h" - -#include -#include - -QT_BEGIN_NAMESPACE -namespace Ui { -class HelpWindow; -} -QT_END_NAMESPACE - -class HelpWindow : public QMainWindow -{ +class HelpWindow : public QDialog, public Ui::HelpWindow { Q_OBJECT public: - explicit HelpWindow(QWidget *parent = nullptr); - ~HelpWindow(); - - void openFile(const QString &path); - -private slots: - void onFileNew(); - void onFileOpen(); - void onFileSave(); - void onFileSaveAs(); - void onExit(); - -private: - bool isModified() const; - - Ui::HelpWindow *ui; - QString m_filePath; - Document m_content; + HelpWindow(QWidget* parent = Q_NULLPTR); }; -#endif // MAINWINDOW_H +#endif \ No newline at end of file diff --git a/tools/auto-tester/src/ui/HelpWindow.ui b/tools/auto-tester/src/ui/HelpWindow.ui index 774e1a8651..d2aa0da0d4 100644 --- a/tools/auto-tester/src/ui/HelpWindow.ui +++ b/tools/auto-tester/src/ui/HelpWindow.ui @@ -1,115 +1,46 @@ HelpWindow - + + + Qt::ApplicationModal + 0 0 - 800 - 600 + 696 + 546 - MarkDown Editor + AutoTester Help - - - - - - Qt::Horizontal - - - - - - - - + - 0 - 0 - 800 - 26 + 50 + 50 + 581 + 381 - - - &File - - - - - - - - - - - + + + + 300 + 460 + 93 + 28 + + - &Open... + Close - - Open document - - - Ctrl+O - - - - - &Save - - - Save current document - - - Ctrl+S - - - - - E&xit - - - Exit editor - - - Ctrl+Q - - - - - Save &As... - - - Save document under different name - - - - - &New - - - Create new document - - - Ctrl+N - - + - - - QWebEngineView - QWidget -
      qwebengineview.h
      - 1 -
      -
      +
      diff --git a/tools/auto-tester/src/ui/document.cpp b/tools/auto-tester/src/ui/document.cpp deleted file mode 100644 index 20e6b6be9a..0000000000 --- a/tools/auto-tester/src/ui/document.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "document.h" - -void Document::setText(const QString &text) -{ - if (text == m_text) - return; - m_text = text; - emit textChanged(m_text); -} diff --git a/tools/auto-tester/src/ui/document.h b/tools/auto-tester/src/ui/document.h deleted file mode 100644 index 785ce228f2..0000000000 --- a/tools/auto-tester/src/ui/document.h +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef DOCUMENT_H -#define DOCUMENT_H - -#include -#include - -class Document : public QObject -{ - Q_OBJECT - Q_PROPERTY(QString text MEMBER m_text NOTIFY textChanged FINAL) -public: - explicit Document(QObject *parent = nullptr) : QObject(parent) {} - - void setText(const QString &text); - -signals: - void textChanged(const QString &text); - -private: - QString m_text; -}; - -#endif // DOCUMENT_H diff --git a/tools/auto-tester/src/ui/previewpage.cpp b/tools/auto-tester/src/ui/previewpage.cpp deleted file mode 100644 index 1d81d700c0..0000000000 --- a/tools/auto-tester/src/ui/previewpage.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "previewpage.h" - -#include - -bool PreviewPage::acceptNavigationRequest(const QUrl &url, - QWebEnginePage::NavigationType /*type*/, - bool /*isMainFrame*/) -{ - // Only allow qrc:/index.html. - if (url.scheme() == QString("qrc")) - return true; - QDesktopServices::openUrl(url); - return false; -} diff --git a/tools/auto-tester/src/ui/previewpage.h b/tools/auto-tester/src/ui/previewpage.h deleted file mode 100644 index eb7d7ab00f..0000000000 --- a/tools/auto-tester/src/ui/previewpage.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef PREVIEWPAGE_H -#define PREVIEWPAGE_H - -#include - -class PreviewPage : public QWebEnginePage -{ - Q_OBJECT -public: - explicit PreviewPage(QObject *parent = nullptr) : QWebEnginePage(parent) {} - -protected: - bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame); -}; - -#endif // PREVIEWPAGE_H From 1a261bea04c5c4065d17dcd08e16f9eff5691e68 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Wed, 8 Aug 2018 15:41:28 -0300 Subject: [PATCH 229/332] Android - People screen renaming --- .../io/highfidelity/hifiinterface/MainActivity.java | 12 ++++++------ android/app/src/main/res/menu/menu_navigation.xml | 4 ++-- android/app/src/main/res/values/strings.xml | 1 + 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java index d1ac6d5ec8..220a69381d 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java @@ -115,8 +115,8 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On case "Privacy Policy": loadPrivacyPolicyFragment(); break; - case "Friends": - loadFriendsFragment(); + case "People": + loadPeopleFragment(); break; default: Log.e(TAG, "Unknown fragment " + fragment); @@ -141,10 +141,10 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On loadFragment(fragment, getString(R.string.privacyPolicy), true); } - private void loadFriendsFragment() { + private void loadPeopleFragment() { Fragment fragment = FriendsFragment.newInstance(); - loadFragment(fragment, getString(R.string.friends), true); + loadFragment(fragment, getString(R.string.people), true); } private void loadFragment(Fragment fragment, String title, boolean addToBackStack) { @@ -212,8 +212,8 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On case R.id.action_home: loadHomeFragment(); return true; - case R.id.action_friends: - loadFriendsFragment(); + case R.id.action_people: + loadPeopleFragment(); return true; } return false; diff --git a/android/app/src/main/res/menu/menu_navigation.xml b/android/app/src/main/res/menu/menu_navigation.xml index de496bc4cb..3cce64f9f5 100644 --- a/android/app/src/main/res/menu/menu_navigation.xml +++ b/android/app/src/main/res/menu/menu_navigation.xml @@ -6,7 +6,7 @@ android:title="@string/home" /> diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index e29252c2c0..9fe7f0cbee 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -2,6 +2,7 @@ Interface Home Friends + People Open in browser Share link Shared a link From a04ffd969efb59e611442911441abf655bc80973 Mon Sep 17 00:00:00 2001 From: David Back Date: Wed, 8 Aug 2018 13:32:38 -0700 Subject: [PATCH 230/332] deselect when reselecting same entity, fix indents --- scripts/system/html/js/entityList.js | 786 ++++++++++++++------------- 1 file changed, 396 insertions(+), 390 deletions(-) diff --git a/scripts/system/html/js/entityList.js b/scripts/system/html/js/entityList.js index 626529d62d..5cd5f6d610 100644 --- a/scripts/system/html/js/entityList.js +++ b/scripts/system/html/js/entityList.js @@ -28,436 +28,442 @@ debugPrint = function (message) { }; function loaded() { - openEventBridge(function() { - entityList = new List('entity-list', { valueNames: ['name', 'type', 'url', 'locked', 'visible'], page: MAX_ITEMS}); - entityList.clear(); - elEntityTable = document.getElementById("entity-table"); - elEntityTableBody = document.getElementById("entity-table-body"); - elRefresh = document.getElementById("refresh"); - elToggleLocked = document.getElementById("locked"); - elToggleVisible = document.getElementById("visible"); - elDelete = document.getElementById("delete"); - elFilter = document.getElementById("filter"); - elInView = document.getElementById("in-view") - elRadius = document.getElementById("radius"); - elExport = document.getElementById("export"); - elPal = document.getElementById("pal"); - elEntityTable = document.getElementById("entity-table"); - elInfoToggle = document.getElementById("info-toggle"); - elInfoToggleGlyph = elInfoToggle.firstChild; - elFooter = document.getElementById("footer-text"); - elNoEntitiesMessage = document.getElementById("no-entities"); - elNoEntitiesInView = document.getElementById("no-entities-in-view"); - elNoEntitiesRadius = document.getElementById("no-entities-radius"); - elEntityTableScroll = document.getElementById("entity-table-scroll"); + openEventBridge(function() { + entityList = new List('entity-list', { valueNames: ['name', 'type', 'url', 'locked', 'visible'], page: MAX_ITEMS}); + entityList.clear(); + elEntityTable = document.getElementById("entity-table"); + elEntityTableBody = document.getElementById("entity-table-body"); + elRefresh = document.getElementById("refresh"); + elToggleLocked = document.getElementById("locked"); + elToggleVisible = document.getElementById("visible"); + elDelete = document.getElementById("delete"); + elFilter = document.getElementById("filter"); + elInView = document.getElementById("in-view") + elRadius = document.getElementById("radius"); + elExport = document.getElementById("export"); + elPal = document.getElementById("pal"); + elEntityTable = document.getElementById("entity-table"); + elInfoToggle = document.getElementById("info-toggle"); + elInfoToggleGlyph = elInfoToggle.firstChild; + elFooter = document.getElementById("footer-text"); + elNoEntitiesMessage = document.getElementById("no-entities"); + elNoEntitiesInView = document.getElementById("no-entities-in-view"); + elNoEntitiesRadius = document.getElementById("no-entities-radius"); + elEntityTableScroll = document.getElementById("entity-table-scroll"); - document.getElementById("entity-name").onclick = function() { - setSortColumn('name'); - }; - document.getElementById("entity-type").onclick = function() { - setSortColumn('type'); - }; - document.getElementById("entity-url").onclick = function() { - setSortColumn('url'); - }; - document.getElementById("entity-locked").onclick = function () { - setSortColumn('locked'); - }; - document.getElementById("entity-visible").onclick = function () { - setSortColumn('visible'); - }; - document.getElementById("entity-verticesCount").onclick = function () { - setSortColumn('verticesCount'); - }; - document.getElementById("entity-texturesCount").onclick = function () { - setSortColumn('texturesCount'); - }; - document.getElementById("entity-texturesSize").onclick = function () { - setSortColumn('texturesSize'); - }; - document.getElementById("entity-hasTransparent").onclick = function () { - setSortColumn('hasTransparent'); - }; - document.getElementById("entity-isBaked").onclick = function () { - setSortColumn('isBaked'); - }; - document.getElementById("entity-drawCalls").onclick = function () { - setSortColumn('drawCalls'); - }; - document.getElementById("entity-hasScript").onclick = function () { - setSortColumn('hasScript'); - }; + document.getElementById("entity-name").onclick = function() { + setSortColumn('name'); + }; + document.getElementById("entity-type").onclick = function() { + setSortColumn('type'); + }; + document.getElementById("entity-url").onclick = function() { + setSortColumn('url'); + }; + document.getElementById("entity-locked").onclick = function () { + setSortColumn('locked'); + }; + document.getElementById("entity-visible").onclick = function () { + setSortColumn('visible'); + }; + document.getElementById("entity-verticesCount").onclick = function () { + setSortColumn('verticesCount'); + }; + document.getElementById("entity-texturesCount").onclick = function () { + setSortColumn('texturesCount'); + }; + document.getElementById("entity-texturesSize").onclick = function () { + setSortColumn('texturesSize'); + }; + document.getElementById("entity-hasTransparent").onclick = function () { + setSortColumn('hasTransparent'); + }; + document.getElementById("entity-isBaked").onclick = function () { + setSortColumn('isBaked'); + }; + document.getElementById("entity-drawCalls").onclick = function () { + setSortColumn('drawCalls'); + }; + document.getElementById("entity-hasScript").onclick = function () { + setSortColumn('hasScript'); + }; - function onRowClicked(clickEvent) { - var id = this.dataset.entityId; - var selection = [this.dataset.entityId]; - if (clickEvent.ctrlKey && selectedEntities.indexOf(id) === -1) { - selection = selection.concat(selectedEntities); - } else if (clickEvent.shiftKey && selectedEntities.length > 0) { - var previousItemFound = -1; - var clickedItemFound = -1; - for (var entity in entityList.visibleItems) { - if (clickedItemFound === -1 && this.dataset.entityId == entityList.visibleItems[entity].values().id) { - clickedItemFound = entity; - } else if(previousItemFound === -1 && selectedEntities[0] == entityList.visibleItems[entity].values().id) { - previousItemFound = entity; - } - } - if (previousItemFound !== -1 && clickedItemFound !== -1) { - var betweenItems = []; - var toItem = Math.max(previousItemFound, clickedItemFound); - // skip first and last item in this loop, we add them to selection after the loop - for (var i = (Math.min(previousItemFound, clickedItemFound) + 1); i < toItem; i++) { - entityList.visibleItems[i].elm.className = 'selected'; - betweenItems.push(entityList.visibleItems[i].values().id); - } - if (previousItemFound > clickedItemFound) { - // always make sure that we add the items in the right order - betweenItems.reverse(); - } - selection = selection.concat(betweenItems, selectedEntities); - } - } + function onRowClicked(clickEvent) { + var id = this.dataset.entityId; + var selection = [this.dataset.entityId]; + if (clickEvent.ctrlKey) { + var selectedIndex = selectedEntities.indexOf(id); + if (selectedIndex >= 0) { + selection = selectedEntities; + selection.splice(selectedIndex, 1) + } else { + selection = selection.concat(selectedEntities); + } + } else if (clickEvent.shiftKey && selectedEntities.length > 0) { + var previousItemFound = -1; + var clickedItemFound = -1; + for (var entity in entityList.visibleItems) { + if (clickedItemFound === -1 && this.dataset.entityId == entityList.visibleItems[entity].values().id) { + clickedItemFound = entity; + } else if(previousItemFound === -1 && selectedEntities[0] == entityList.visibleItems[entity].values().id) { + previousItemFound = entity; + } + } + if (previousItemFound !== -1 && clickedItemFound !== -1) { + var betweenItems = []; + var toItem = Math.max(previousItemFound, clickedItemFound); + // skip first and last item in this loop, we add them to selection after the loop + for (var i = (Math.min(previousItemFound, clickedItemFound) + 1); i < toItem; i++) { + entityList.visibleItems[i].elm.className = 'selected'; + betweenItems.push(entityList.visibleItems[i].values().id); + } + if (previousItemFound > clickedItemFound) { + // always make sure that we add the items in the right order + betweenItems.reverse(); + } + selection = selection.concat(betweenItems, selectedEntities); + } + } - selectedEntities = selection; + selectedEntities = selection; - this.className = 'selected'; + this.className = 'selected'; - EventBridge.emitWebEvent(JSON.stringify({ - type: "selectionUpdate", - focus: false, - entityIds: selection, - })); + EventBridge.emitWebEvent(JSON.stringify({ + type: "selectionUpdate", + focus: false, + entityIds: selection, + })); - refreshFooter(); - } + refreshFooter(); + } - function onRowDoubleClicked() { - EventBridge.emitWebEvent(JSON.stringify({ - type: "selectionUpdate", - focus: true, - entityIds: [this.dataset.entityId], - })); - } + function onRowDoubleClicked() { + EventBridge.emitWebEvent(JSON.stringify({ + type: "selectionUpdate", + focus: true, + entityIds: [this.dataset.entityId], + })); + } - const BYTES_PER_MEGABYTE = 1024 * 1024; + const BYTES_PER_MEGABYTE = 1024 * 1024; - function decimalMegabytes(number) { - return number ? (number / BYTES_PER_MEGABYTE).toFixed(1) : ""; - } + function decimalMegabytes(number) { + return number ? (number / BYTES_PER_MEGABYTE).toFixed(1) : ""; + } - function displayIfNonZero(number) { - return number ? number : ""; - } + function displayIfNonZero(number) { + return number ? number : ""; + } - function addEntity(id, name, type, url, locked, visible, verticesCount, texturesCount, texturesSize, hasTransparent, - isBaked, drawCalls, hasScript) { + function addEntity(id, name, type, url, locked, visible, verticesCount, texturesCount, texturesSize, hasTransparent, + isBaked, drawCalls, hasScript) { - var urlParts = url.split('/'); - var filename = urlParts[urlParts.length - 1]; + var urlParts = url.split('/'); + var filename = urlParts[urlParts.length - 1]; - var IMAGE_MODEL_NAME = 'default-image-model.fbx'; + var IMAGE_MODEL_NAME = 'default-image-model.fbx'; - if (filename === IMAGE_MODEL_NAME) { - type = "Image"; - } + if (filename === IMAGE_MODEL_NAME) { + type = "Image"; + } - if (entities[id] === undefined) { - entityList.add([{ - id: id, name: name, type: type, url: filename, locked: locked, visible: visible, - verticesCount: displayIfNonZero(verticesCount), texturesCount: displayIfNonZero(texturesCount), - texturesSize: decimalMegabytes(texturesSize), hasTransparent: hasTransparent, - isBaked: isBaked, drawCalls: displayIfNonZero(drawCalls), hasScript: hasScript - }], - function (items) { - var currentElement = items[0].elm; - var id = items[0]._values.id; - entities[id] = { - id: id, - name: name, - el: currentElement, - item: items[0] - }; - currentElement.setAttribute('id', 'entity_' + id); - currentElement.setAttribute('title', url); - currentElement.dataset.entityId = id; - currentElement.onclick = onRowClicked; - currentElement.ondblclick = onRowDoubleClicked; - }); - } else { - var item = entities[id].item; - item.values({ name: name, url: filename, locked: locked, visible: visible }); - } - } + if (entities[id] === undefined) { + entityList.add([{ + id: id, name: name, type: type, url: filename, locked: locked, visible: visible, + verticesCount: displayIfNonZero(verticesCount), texturesCount: displayIfNonZero(texturesCount), + texturesSize: decimalMegabytes(texturesSize), hasTransparent: hasTransparent, + isBaked: isBaked, drawCalls: displayIfNonZero(drawCalls), hasScript: hasScript + }], + function (items) { + var currentElement = items[0].elm; + var id = items[0]._values.id; + entities[id] = { + id: id, + name: name, + el: currentElement, + item: items[0] + }; + currentElement.setAttribute('id', 'entity_' + id); + currentElement.setAttribute('title', url); + currentElement.dataset.entityId = id; + currentElement.onclick = onRowClicked; + currentElement.ondblclick = onRowDoubleClicked; + }); + } else { + var item = entities[id].item; + item.values({ name: name, url: filename, locked: locked, visible: visible }); + } + } - function removeEntities(deletedIDs) { - for (i = 0, length = deletedIDs.length; i < length; i++) { - delete entities[deletedIDs[i]]; - entityList.remove("id", deletedIDs[i]); - } - } + function removeEntities(deletedIDs) { + for (i = 0, length = deletedIDs.length; i < length; i++) { + delete entities[deletedIDs[i]]; + entityList.remove("id", deletedIDs[i]); + } + } - function scheduleRefreshEntityList() { - var REFRESH_DELAY = 50; - if (refreshEntityListTimer) { - clearTimeout(refreshEntityListTimer); - } - refreshEntityListTimer = setTimeout(refreshEntityListObject, REFRESH_DELAY); - } + function scheduleRefreshEntityList() { + var REFRESH_DELAY = 50; + if (refreshEntityListTimer) { + clearTimeout(refreshEntityListTimer); + } + refreshEntityListTimer = setTimeout(refreshEntityListObject, REFRESH_DELAY); + } - function clearEntities() { - entities = {}; - entityList.clear(); - refreshFooter(); - } + function clearEntities() { + entities = {}; + entityList.clear(); + refreshFooter(); + } - var elSortOrder = { - name: document.querySelector('#entity-name .sort-order'), - type: document.querySelector('#entity-type .sort-order'), - url: document.querySelector('#entity-url .sort-order'), - locked: document.querySelector('#entity-locked .sort-order'), - visible: document.querySelector('#entity-visible .sort-order'), - verticesCount: document.querySelector('#entity-verticesCount .sort-order'), - texturesCount: document.querySelector('#entity-texturesCount .sort-order'), - texturesSize: document.querySelector('#entity-texturesSize .sort-order'), - hasTransparent: document.querySelector('#entity-hasTransparent .sort-order'), - isBaked: document.querySelector('#entity-isBaked .sort-order'), - drawCalls: document.querySelector('#entity-drawCalls .sort-order'), - hasScript: document.querySelector('#entity-hasScript .sort-order'), - } - function setSortColumn(column) { - if (currentSortColumn == column) { - currentSortOrder = currentSortOrder == "asc" ? "desc" : "asc"; - } else { - elSortOrder[currentSortColumn].innerHTML = ""; - currentSortColumn = column; - currentSortOrder = "asc"; - } - elSortOrder[column].innerHTML = currentSortOrder == "asc" ? ASCENDING_STRING : DESCENDING_STRING; - entityList.sort(currentSortColumn, { order: currentSortOrder }); - } - setSortColumn('type'); + var elSortOrder = { + name: document.querySelector('#entity-name .sort-order'), + type: document.querySelector('#entity-type .sort-order'), + url: document.querySelector('#entity-url .sort-order'), + locked: document.querySelector('#entity-locked .sort-order'), + visible: document.querySelector('#entity-visible .sort-order'), + verticesCount: document.querySelector('#entity-verticesCount .sort-order'), + texturesCount: document.querySelector('#entity-texturesCount .sort-order'), + texturesSize: document.querySelector('#entity-texturesSize .sort-order'), + hasTransparent: document.querySelector('#entity-hasTransparent .sort-order'), + isBaked: document.querySelector('#entity-isBaked .sort-order'), + drawCalls: document.querySelector('#entity-drawCalls .sort-order'), + hasScript: document.querySelector('#entity-hasScript .sort-order'), + } + function setSortColumn(column) { + if (currentSortColumn == column) { + currentSortOrder = currentSortOrder == "asc" ? "desc" : "asc"; + } else { + elSortOrder[currentSortColumn].innerHTML = ""; + currentSortColumn = column; + currentSortOrder = "asc"; + } + elSortOrder[column].innerHTML = currentSortOrder == "asc" ? ASCENDING_STRING : DESCENDING_STRING; + entityList.sort(currentSortColumn, { order: currentSortOrder }); + } + setSortColumn('type'); - function refreshEntities() { - clearEntities(); - EventBridge.emitWebEvent(JSON.stringify({ type: 'refresh' })); - } + function refreshEntities() { + clearEntities(); + EventBridge.emitWebEvent(JSON.stringify({ type: 'refresh' })); + } - function refreshFooter() { - if (selectedEntities.length > 1) { - elFooter.firstChild.nodeValue = selectedEntities.length + " entities selected"; - } else if (selectedEntities.length === 1) { - elFooter.firstChild.nodeValue = "1 entity selected"; - } else if (entityList.visibleItems.length === 1) { - elFooter.firstChild.nodeValue = "1 entity found"; - } else { - elFooter.firstChild.nodeValue = entityList.visibleItems.length + " entities found"; - } - } + function refreshFooter() { + if (selectedEntities.length > 1) { + elFooter.firstChild.nodeValue = selectedEntities.length + " entities selected"; + } else if (selectedEntities.length === 1) { + elFooter.firstChild.nodeValue = "1 entity selected"; + } else if (entityList.visibleItems.length === 1) { + elFooter.firstChild.nodeValue = "1 entity found"; + } else { + elFooter.firstChild.nodeValue = entityList.visibleItems.length + " entities found"; + } + } - function refreshEntityListObject() { - refreshEntityListTimer = null; - entityList.sort(currentSortColumn, { order: currentSortOrder }); - entityList.search(elFilter.value); - refreshFooter(); - } + function refreshEntityListObject() { + refreshEntityListTimer = null; + entityList.sort(currentSortColumn, { order: currentSortOrder }); + entityList.search(elFilter.value); + refreshFooter(); + } - function updateSelectedEntities(selectedIDs) { - var notFound = false; - for (var id in entities) { - entities[id].el.className = ''; - } + function updateSelectedEntities(selectedIDs) { + var notFound = false; + for (var id in entities) { + entities[id].el.className = ''; + } - selectedEntities = []; - for (var i = 0; i < selectedIDs.length; i++) { - var id = selectedIDs[i]; - selectedEntities.push(id); - if (id in entities) { - var entity = entities[id]; - entity.el.className = 'selected'; - } else { - notFound = true; - } - } + selectedEntities = []; + for (var i = 0; i < selectedIDs.length; i++) { + var id = selectedIDs[i]; + selectedEntities.push(id); + if (id in entities) { + var entity = entities[id]; + entity.el.className = 'selected'; + } else { + notFound = true; + } + } - refreshFooter(); + refreshFooter(); - return notFound; - } + return notFound; + } - elRefresh.onclick = function() { - refreshEntities(); - } - elToggleLocked.onclick = function () { - EventBridge.emitWebEvent(JSON.stringify({ type: 'toggleLocked' })); - } - elToggleVisible.onclick = function () { - EventBridge.emitWebEvent(JSON.stringify({ type: 'toggleVisible' })); - } - elExport.onclick = function() { - EventBridge.emitWebEvent(JSON.stringify({ type: 'export'})); - } - elPal.onclick = function () { - EventBridge.emitWebEvent(JSON.stringify({ type: 'pal' })); - } - elDelete.onclick = function() { - EventBridge.emitWebEvent(JSON.stringify({ type: 'delete' })); - } + elRefresh.onclick = function() { + refreshEntities(); + } + elToggleLocked.onclick = function () { + EventBridge.emitWebEvent(JSON.stringify({ type: 'toggleLocked' })); + } + elToggleVisible.onclick = function () { + EventBridge.emitWebEvent(JSON.stringify({ type: 'toggleVisible' })); + } + elExport.onclick = function() { + EventBridge.emitWebEvent(JSON.stringify({ type: 'export'})); + } + elPal.onclick = function () { + EventBridge.emitWebEvent(JSON.stringify({ type: 'pal' })); + } + elDelete.onclick = function() { + EventBridge.emitWebEvent(JSON.stringify({ type: 'delete' })); + } - document.addEventListener("keydown", function (keyDownEvent) { - if (keyDownEvent.target.nodeName === "INPUT") { - return; - } - var keyCode = keyDownEvent.keyCode; - if (keyCode === DELETE) { - EventBridge.emitWebEvent(JSON.stringify({ type: 'delete' })); - refreshEntities(); - } - if (keyDownEvent.keyCode === KEY_P && keyDownEvent.ctrlKey) { - if (keyDownEvent.shiftKey) { - EventBridge.emitWebEvent(JSON.stringify({ type: 'unparent' })); - } else { - EventBridge.emitWebEvent(JSON.stringify({ type: 'parent' })); - } - } - }, false); + document.addEventListener("keydown", function (keyDownEvent) { + if (keyDownEvent.target.nodeName === "INPUT") { + return; + } + var keyCode = keyDownEvent.keyCode; + if (keyCode === DELETE) { + EventBridge.emitWebEvent(JSON.stringify({ type: 'delete' })); + refreshEntities(); + } + if (keyDownEvent.keyCode === KEY_P && keyDownEvent.ctrlKey) { + if (keyDownEvent.shiftKey) { + EventBridge.emitWebEvent(JSON.stringify({ type: 'unparent' })); + } else { + EventBridge.emitWebEvent(JSON.stringify({ type: 'parent' })); + } + } + }, false); - var isFilterInView = false; - var FILTER_IN_VIEW_ATTRIBUTE = "pressed"; - elNoEntitiesInView.style.display = "none"; - elInView.onclick = function () { - isFilterInView = !isFilterInView; - if (isFilterInView) { - elInView.setAttribute(FILTER_IN_VIEW_ATTRIBUTE, FILTER_IN_VIEW_ATTRIBUTE); - elNoEntitiesInView.style.display = "inline"; - } else { - elInView.removeAttribute(FILTER_IN_VIEW_ATTRIBUTE); - elNoEntitiesInView.style.display = "none"; - } - EventBridge.emitWebEvent(JSON.stringify({ type: "filterInView", filterInView: isFilterInView })); - refreshEntities(); - } + var isFilterInView = false; + var FILTER_IN_VIEW_ATTRIBUTE = "pressed"; + elNoEntitiesInView.style.display = "none"; + elInView.onclick = function () { + isFilterInView = !isFilterInView; + if (isFilterInView) { + elInView.setAttribute(FILTER_IN_VIEW_ATTRIBUTE, FILTER_IN_VIEW_ATTRIBUTE); + elNoEntitiesInView.style.display = "inline"; + } else { + elInView.removeAttribute(FILTER_IN_VIEW_ATTRIBUTE); + elNoEntitiesInView.style.display = "none"; + } + EventBridge.emitWebEvent(JSON.stringify({ type: "filterInView", filterInView: isFilterInView })); + refreshEntities(); + } - elRadius.onchange = function () { - elRadius.value = Math.max(elRadius.value, 0); - EventBridge.emitWebEvent(JSON.stringify({ type: 'radius', radius: elRadius.value })); - refreshEntities(); - elNoEntitiesRadius.firstChild.nodeValue = elRadius.value; - } + elRadius.onchange = function () { + elRadius.value = Math.max(elRadius.value, 0); + EventBridge.emitWebEvent(JSON.stringify({ type: 'radius', radius: elRadius.value })); + refreshEntities(); + elNoEntitiesRadius.firstChild.nodeValue = elRadius.value; + } - if (window.EventBridge !== undefined) { - EventBridge.scriptEventReceived.connect(function(data) { - data = JSON.parse(data); + if (window.EventBridge !== undefined) { + EventBridge.scriptEventReceived.connect(function(data) { + data = JSON.parse(data); - if (data.type === "clearEntityList") { - clearEntities(); - } else if (data.type == "selectionUpdate") { - var notFound = updateSelectedEntities(data.selectedIDs); - if (notFound) { - refreshEntities(); - } - } else if (data.type === "update" && data.selectedIDs !== undefined) { - var newEntities = data.entities; - if (newEntities && newEntities.length == 0) { - elNoEntitiesMessage.style.display = "block"; - elFooter.firstChild.nodeValue = "0 entities found"; - } else if (newEntities) { - elNoEntitiesMessage.style.display = "none"; - for (var i = 0; i < newEntities.length; i++) { - var id = newEntities[i].id; - addEntity(id, newEntities[i].name, newEntities[i].type, newEntities[i].url, - newEntities[i].locked ? LOCKED_GLYPH : null, - newEntities[i].visible ? VISIBLE_GLYPH : null, - newEntities[i].verticesCount, newEntities[i].texturesCount, newEntities[i].texturesSize, - newEntities[i].hasTransparent ? TRANSPARENCY_GLYPH : null, - newEntities[i].isBaked ? BAKED_GLYPH : null, - newEntities[i].drawCalls, - newEntities[i].hasScript ? SCRIPT_GLYPH : null); - } - updateSelectedEntities(data.selectedIDs); - scheduleRefreshEntityList(); - resize(); - } - } else if (data.type === "removeEntities" && data.deletedIDs !== undefined && data.selectedIDs !== undefined) { - removeEntities(data.deletedIDs); - updateSelectedEntities(data.selectedIDs); - scheduleRefreshEntityList(); - } else if (data.type === "deleted" && data.ids) { - removeEntities(data.ids); - refreshFooter(); - } - }); - setTimeout(refreshEntities, 1000); - } + if (data.type === "clearEntityList") { + clearEntities(); + } else if (data.type == "selectionUpdate") { + var notFound = updateSelectedEntities(data.selectedIDs); + if (notFound) { + refreshEntities(); + } + } else if (data.type === "update" && data.selectedIDs !== undefined) { + var newEntities = data.entities; + if (newEntities && newEntities.length == 0) { + elNoEntitiesMessage.style.display = "block"; + elFooter.firstChild.nodeValue = "0 entities found"; + } else if (newEntities) { + elNoEntitiesMessage.style.display = "none"; + for (var i = 0; i < newEntities.length; i++) { + var id = newEntities[i].id; + addEntity(id, newEntities[i].name, newEntities[i].type, newEntities[i].url, + newEntities[i].locked ? LOCKED_GLYPH : null, + newEntities[i].visible ? VISIBLE_GLYPH : null, + newEntities[i].verticesCount, newEntities[i].texturesCount, newEntities[i].texturesSize, + newEntities[i].hasTransparent ? TRANSPARENCY_GLYPH : null, + newEntities[i].isBaked ? BAKED_GLYPH : null, + newEntities[i].drawCalls, + newEntities[i].hasScript ? SCRIPT_GLYPH : null); + } + updateSelectedEntities(data.selectedIDs); + scheduleRefreshEntityList(); + resize(); + } + } else if (data.type === "removeEntities" && data.deletedIDs !== undefined && data.selectedIDs !== undefined) { + removeEntities(data.deletedIDs); + updateSelectedEntities(data.selectedIDs); + scheduleRefreshEntityList(); + } else if (data.type === "deleted" && data.ids) { + removeEntities(data.ids); + refreshFooter(); + } + }); + setTimeout(refreshEntities, 1000); + } - function resize() { - // Take up available window space - elEntityTableScroll.style.height = window.innerHeight - 207; + function resize() { + // Take up available window space + elEntityTableScroll.style.height = window.innerHeight - 207; - var SCROLLABAR_WIDTH = 21; - var tds = document.querySelectorAll("#entity-table-body tr:first-child td"); - var ths = document.querySelectorAll("#entity-table thead th"); - if (tds.length >= ths.length) { - // Update the widths of the header cells to match the body - for (var i = 0; i < ths.length; i++) { - ths[i].width = tds[i].offsetWidth; - } - } else { - // Reasonable widths if nothing is displayed - var tableWidth = document.getElementById("entity-table").offsetWidth - SCROLLABAR_WIDTH; - if (showExtraInfo) { - ths[0].width = 0.10 * tableWidth; - ths[1].width = 0.20 * tableWidth; - ths[2].width = 0.20 * tableWidth; - ths[3].width = 0.04 * tableWidth; - ths[4].width = 0.04 * tableWidth; - ths[5].width = 0.08 * tableWidth; - ths[6].width = 0.08 * tableWidth; - ths[7].width = 0.10 * tableWidth; - ths[8].width = 0.04 * tableWidth; - ths[9].width = 0.08 * tableWidth; - ths[10].width = 0.04 * tableWidth + SCROLLABAR_WIDTH; - } else { - ths[0].width = 0.16 * tableWidth; - ths[1].width = 0.34 * tableWidth; - ths[2].width = 0.34 * tableWidth; - ths[3].width = 0.08 * tableWidth; - ths[4].width = 0.08 * tableWidth; - } - } - }; + var SCROLLABAR_WIDTH = 21; + var tds = document.querySelectorAll("#entity-table-body tr:first-child td"); + var ths = document.querySelectorAll("#entity-table thead th"); + if (tds.length >= ths.length) { + // Update the widths of the header cells to match the body + for (var i = 0; i < ths.length; i++) { + ths[i].width = tds[i].offsetWidth; + } + } else { + // Reasonable widths if nothing is displayed + var tableWidth = document.getElementById("entity-table").offsetWidth - SCROLLABAR_WIDTH; + if (showExtraInfo) { + ths[0].width = 0.10 * tableWidth; + ths[1].width = 0.20 * tableWidth; + ths[2].width = 0.20 * tableWidth; + ths[3].width = 0.04 * tableWidth; + ths[4].width = 0.04 * tableWidth; + ths[5].width = 0.08 * tableWidth; + ths[6].width = 0.08 * tableWidth; + ths[7].width = 0.10 * tableWidth; + ths[8].width = 0.04 * tableWidth; + ths[9].width = 0.08 * tableWidth; + ths[10].width = 0.04 * tableWidth + SCROLLABAR_WIDTH; + } else { + ths[0].width = 0.16 * tableWidth; + ths[1].width = 0.34 * tableWidth; + ths[2].width = 0.34 * tableWidth; + ths[3].width = 0.08 * tableWidth; + ths[4].width = 0.08 * tableWidth; + } + } + }; - window.onresize = resize; - elFilter.onchange = resize; - elFilter.onblur = refreshFooter; + window.onresize = resize; + elFilter.onchange = resize; + elFilter.onblur = refreshFooter; - var showExtraInfo = false; - var COLLAPSE_EXTRA_INFO = "E"; - var EXPAND_EXTRA_INFO = "D"; + var showExtraInfo = false; + var COLLAPSE_EXTRA_INFO = "E"; + var EXPAND_EXTRA_INFO = "D"; - function toggleInfo(event) { - showExtraInfo = !showExtraInfo; - if (showExtraInfo) { - elEntityTable.className = "showExtraInfo"; - elInfoToggleGlyph.innerHTML = COLLAPSE_EXTRA_INFO; - } else { - elEntityTable.className = ""; - elInfoToggleGlyph.innerHTML = EXPAND_EXTRA_INFO; - } - resize(); - event.stopPropagation(); - } - elInfoToggle.addEventListener("click", toggleInfo, true); + function toggleInfo(event) { + showExtraInfo = !showExtraInfo; + if (showExtraInfo) { + elEntityTable.className = "showExtraInfo"; + elInfoToggleGlyph.innerHTML = COLLAPSE_EXTRA_INFO; + } else { + elEntityTable.className = ""; + elInfoToggleGlyph.innerHTML = EXPAND_EXTRA_INFO; + } + resize(); + event.stopPropagation(); + } + elInfoToggle.addEventListener("click", toggleInfo, true); - resize(); - }); + resize(); + }); - augmentSpinButtons(); + augmentSpinButtons(); - // Disable right-click context menu which is not visible in the HMD and makes it seem like the app has locked - document.addEventListener("contextmenu", function (event) { - event.preventDefault(); - }, false); + // Disable right-click context menu which is not visible in the HMD and makes it seem like the app has locked + document.addEventListener("contextmenu", function (event) { + event.preventDefault(); + }, false); } From 3fa3cd8cfdb9be2ec3f4d1c160e000a35c9cceb8 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Wed, 8 Aug 2018 13:44:26 -0700 Subject: [PATCH 231/332] In CCD IK chains, remove the LeftHand and RightHand constraint completely. When used in combination with the elbow pole vector, this was causing the hand to never properly reach its rotation target. It was also having side effects causing the elbow to never straighten properly to reach its position target. There is possibly a bug in how this tip constraint is enforced and I've verified that there are no ill effects in removing it. --- .../animation/src/AnimInverseKinematics.cpp | 66 +------------------ 1 file changed, 1 insertion(+), 65 deletions(-) diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index c8d36db58f..71094cc6e1 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -481,29 +481,6 @@ void AnimInverseKinematics::solveTargetWithCCD(const AnimContext& context, const // reduce angle by a flexCoefficient angle *= target.getFlexCoefficient(chainDepth); deltaRotation = glm::angleAxis(angle, axis); - - // The swing will re-orient the tip but there will tend to be be a non-zero delta between the tip's - // new orientation and its target. This is the final parent-relative orientation that the tip joint have - // make to achieve its target orientation. - glm::quat tipRelativeRotation = glm::inverse(deltaRotation * tipParentOrientation) * target.getRotation(); - - // enforce tip's constraint - RotationConstraint* constraint = getConstraint(tipIndex); - if (constraint) { - bool constrained = constraint->apply(tipRelativeRotation); - if (constrained) { - // The tip's final parent-relative rotation would violate its constraint - // so we try to pre-twist this pivot to compensate. - glm::quat constrainedTipRotation = deltaRotation * tipParentOrientation * tipRelativeRotation; - glm::quat missingRotation = target.getRotation() * glm::inverse(constrainedTipRotation); - glm::quat swingPart; - glm::quat twistPart; - glm::vec3 axis = glm::normalize(deltaRotation * leverArm); - swingTwistDecomposition(missingRotation, axis, swingPart, twistPart); - const float LIMIT_LEAK_FRACTION = 0.1f; - deltaRotation = safeLerp(glm::quat(), twistPart, LIMIT_LEAK_FRACTION); - } - } } } } else if (targetType == IKTarget::Type::HmdHead) { @@ -1255,48 +1232,7 @@ void AnimInverseKinematics::initConstraints() { constraint = static_cast(stConstraint); } else if (0 == baseName.compare("Hand", Qt::CaseSensitive)) { - SwingTwistConstraint* stConstraint = new SwingTwistConstraint(); - stConstraint->setReferenceRotation(_defaultRelativePoses[i].rot()); - stConstraint->setTwistLimits(0.0f, 0.0f); // max == min, disables twist limits - - /* KEEP THIS CODE for future experimentation -- twist limits for hands - const float MAX_HAND_TWIST = 3.0f * PI / 5.0f; - const float MIN_HAND_TWIST = -PI / 2.0f; - if (isLeft) { - stConstraint->setTwistLimits(-MAX_HAND_TWIST, -MIN_HAND_TWIST); - } else { - stConstraint->setTwistLimits(MIN_HAND_TWIST, MAX_HAND_TWIST); - } - */ - - /* KEEP THIS CODE for future experimentation -- non-symmetrical swing limits for wrist - * a more complicated wrist with asymmetric cone - // these directions are approximate swing limits in parent-frame - // NOTE: they don't need to be normalized - std::vector swungDirections; - swungDirections.push_back(glm::vec3(1.0f, 1.0f, 0.0f)); - swungDirections.push_back(glm::vec3(0.75f, 1.0f, -1.0f)); - swungDirections.push_back(glm::vec3(-0.75f, 1.0f, -1.0f)); - swungDirections.push_back(glm::vec3(-1.0f, 1.0f, 0.0f)); - swungDirections.push_back(glm::vec3(-0.75f, 1.0f, 1.0f)); - swungDirections.push_back(glm::vec3(0.75f, 1.0f, 1.0f)); - - // rotate directions into joint-frame - glm::quat invRelativeRotation = glm::inverse(_defaultRelativePoses[i].rot); - int numDirections = (int)swungDirections.size(); - for (int j = 0; j < numDirections; ++j) { - swungDirections[j] = invRelativeRotation * swungDirections[j]; - } - stConstraint->setSwingLimits(swungDirections); - */ - - // simple cone - std::vector minDots; - const float MAX_HAND_SWING = PI / 2.0f; - minDots.push_back(cosf(MAX_HAND_SWING)); - stConstraint->setSwingLimits(minDots); - - constraint = static_cast(stConstraint); + // hand/wrist constraints have been disabled. } else if (baseName.startsWith("Shoulder", Qt::CaseSensitive)) { SwingTwistConstraint* stConstraint = new SwingTwistConstraint(); stConstraint->setReferenceRotation(_defaultRelativePoses[i].rot()); From 9b0dcb45ba637a57c91a66b3c3f431a4878e896e Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 8 Aug 2018 14:00:44 -0700 Subject: [PATCH 232/332] don't update fading avatars --- interface/src/avatar/AvatarManager.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index dbafd06611..d21f9de554 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -365,8 +365,6 @@ void AvatarManager::simulateAvatarFades(float deltaTime) { } avatarItr = _avatarsToFade.erase(avatarItr); } else { - const bool inView = true; // HACK - avatar->simulate(deltaTime, inView); ++avatarItr; } } From 2ba2c4b68a0b9f730a1d62ca9da98f02bdebd39b Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 8 Aug 2018 14:06:34 -0700 Subject: [PATCH 233/332] Fix TextureCache not compressing textures on Android --- .../src/model-networking/TextureCache.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/libraries/model-networking/src/model-networking/TextureCache.cpp b/libraries/model-networking/src/model-networking/TextureCache.cpp index 7f435838b6..b9def7f5b7 100644 --- a/libraries/model-networking/src/model-networking/TextureCache.cpp +++ b/libraries/model-networking/src/model-networking/TextureCache.cpp @@ -281,10 +281,12 @@ gpu::TexturePointer TextureCache::getImageTexture(const QString& path, image::Te auto loader = image::TextureUsage::getTextureLoaderForType(type, options); #ifdef USE_GLES gpu::BackendTarget target = gpu::BackendTarget::GLES32; + bool shouldCompress = true; #else gpu::BackendTarget target = gpu::BackendTarget::GL45; + bool shouldCompress = false; #endif - return gpu::TexturePointer(loader(std::move(image), path.toStdString(), false, target, false)); + return gpu::TexturePointer(loader(std::move(image), path.toStdString(), shouldCompress, target, false)); } QSharedPointer TextureCache::createResource(const QUrl& url, const QSharedPointer& fallback, @@ -1168,14 +1170,11 @@ void ImageReader::read() { #ifdef USE_GLES constexpr bool shouldCompress = true; + gpu::BackendTarget target = gpu::BackendTarget::GLES32; #else constexpr bool shouldCompress = false; -#endif - #ifdef USE_GLES - gpu::BackendTarget target = gpu::BackendTarget::GLES32; - #else gpu::BackendTarget target = gpu::BackendTarget::GL45; - #endif +#endif texture = image::processImage(std::move(buffer), _url.toString().toStdString(), _maxNumPixels, networkTexture->getTextureType(), shouldCompress, target); if (!texture) { From bf53f2491851ad88243f48ddfb0cb59ee5fcb6db Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Wed, 8 Aug 2018 14:51:30 -0700 Subject: [PATCH 234/332] WIP -documentation --- tools/auto-tester/Create.PNG | Bin 0 -> 12052 bytes tools/auto-tester/Evaluate.PNG | Bin 0 -> 9334 bytes tools/auto-tester/README.md | 148 +++++++++++++++---------- tools/auto-tester/TestRail.PNG | Bin 0 -> 11223 bytes tools/auto-tester/Windows.PNG | Bin 0 -> 9842 bytes tools/auto-tester/src/ui/AutoTester.ui | 16 ++- 6 files changed, 98 insertions(+), 66 deletions(-) create mode 100644 tools/auto-tester/Create.PNG create mode 100644 tools/auto-tester/Evaluate.PNG create mode 100644 tools/auto-tester/TestRail.PNG create mode 100644 tools/auto-tester/Windows.PNG diff --git a/tools/auto-tester/Create.PNG b/tools/auto-tester/Create.PNG new file mode 100644 index 0000000000000000000000000000000000000000..d82d4873a211e0a21e42a97f772c929da823cfeb GIT binary patch literal 12052 zcmeHtdsxz0yEZd5m8Mx^nx<)_qtjTP%44Y$rea0Y^?80RSqpHZS^p0{{TzB93`R0RZ1#S^0d$^4E?901RI`A3bt5)|WpNmZi%) zG9Zjs{!SanhCW4`6kPlM>q0##wQn%T zxA$$;N~)1dZNC5AHN^|ki;yUR89rO*#qTdCOKjbJhJ0os>L+;fvS&^H^(C(E(Sn|N z!MK*xa7oCtbj1C}%vXR)M+yMosRIN2T)NE^@MHfbb-?Zry%e6& z(x?%3Syr5Yr`s*%ET54z7cbQ=yw{GepI>-+(hf%w*DMpPHv<5YuJ;(?bd+{^yv!nj zAdW#Sge>z3C0WbUIIy<#!vvSpG(AB(xj4(=*3e0{UmmfUXMjsASc|7cgaj$gt?9h< z4leGQ5DSqVui_hs=vnB+dnHW^*rxM&-vEs7v|lvotlKs@u3RwJ#_iSfW20FTMUXg( zCRpxG<6ZOFSjJ zkuaC#2*ro6!|Hl(@g%nM#k3~r2)G13Pg*{W?o#r0XD@ylqA?D!+|lHdHZNIm9Fg9+ z0vRtL7bBxC&)lOiZKryt$jSmjJW?KHm&_crqVlqmoA@60Z1Gd%?_NRxa!Z}d>YVl%gZ#NpE{8YlcjVcK&QdN5qm5^`4+ zy`*VA*T_9#?!gXP5kz`Hw4{W7j1fw3#1jLg@66t#hoYB#0#s&c4yEpr#_bbg(j5W(vKN>PN-_n});nu6A`uVFvZ53GQ)VzkVQGLSA z$w*h1x`Mi)84M$dN3flDqBX?}vOL&RI&844DkdRD)D32P%F+tv#N0!Wt1+Su4V(oK z#ji2i2lj`@RV>Ud$#$d(dia;GzQpf5pz?YkgOA@3ULFv*witT~!%0fGdj1s1qB{K!{ z{oDq->2g{yZ>Ae=7{4@A0M|;PzKI_hcZx~e=dy4^?VyH~R{As_-&WNL+}squ%mCX#h~gyrLltnyTt*ueJsEYP z^e(&UJee0o3kbIJN?6W@%;CHeWVWUEJNA4#+Djx3w1w21Zm9j_P$*@m)R4ujNsYA5 zV=yGtW9$}Ay*)xA8svjE49B0N+Bf8BjN~Jde&97wrTLnb%S(3gO$!<9c_P;WJ`7(J z3*5DrpFv)-VmTQ!PXM46qL;!GEKLd?E=yk;CCqnOOk*LkV38zYS%R$s03w=Pwx|OD zQAhs+a!gbJV9Y=p0F<5oR}TGS*h7uP(D?#!)-v{KcfwHJJWiLe?C{=xk)BQPfxfPh z(R05VzQjoe=GuRsr~r8NnUABCfN2D!%pevblzpr5g@m>7%w&=O?4XWh;R@P&#$zvF zw?VjCrMbdSMh~si+x$4vsj1O?P{md45Qz^eHbHd1&&hq}mBdpUuzSbbG78e5@J`qC zP_~?;LNw?#8QtEOX5It%+54Dgr4)I{#J>d{N)+Ekg~j^XSgV)d9PA*7SSy1w6~ zY7OE{=+}a)~)#Jp&<-Tn%8r_%?NT>{fTQ@vUa}B*bCF`EZwEZpp(Qk9kCkDx1+9v zP<$I>-O#f|+Watm=gZ-l$@|py=)rV5>l(~py3QYm11WKijro(3!LQu*WGq;%Z}H6X{^Z_WdC zoc+r%*}7F8|I>#l$4z*#kGmpxf~|dfVei+szF+Thgt7&P$yVNO>f-SKZVB(&miO#X zDoLSsh>3CX>d*JUQot17ZwqYVPVHAst5MSOpgu%LMkEW>(|UjZaYz>yQ`d7?Q<2e^ z791(OA{ySnQOIPpMY~t5x@@ujF-jxyjip-aV+Cy`0^iy;PWzi;x!x)7GE{lhHVzUJ z#kv&N@S{1orun>2!dO(39U+BRSbxp|QE~o6`;j2_58lZ0X1Pve8=O`ip6qk>q!Tsr zJZ@kRqnHWNs@3d^LsJ(P)8HkB^^pcGHr0|e)aO0;FqvoH?~15s$Yi6-MYr}MVtE(5 zlwV|55F@_1=jWwmf#|ssuIQ^f$bFAyac>fuKu>>zv-p!Q3JS{ri#TlxX+l$l3B1YEf*QCl`W z7F90JpQs>0w##LQh!t&hLOSxYAa)f5IZxS%Su6LckHConC^G<7;|D$TT(+}?#)Gpv z6dF9pd(=UQ*d*R}k%P;b`)m!520$pmMFfe~;W#z^X0ijFsd4AhFa2b4FEhHlnY5p3 zP*VhK*w!21=LFp%nVQyFITaK+)(^0uTY=-3lcEnVG+AChyNNNPVtV;{3?%!>_C(&4 zyt>s9VC&hxuhnd9m3?NH^ibQC&&>1>bI<$r z;Nu)_obWMnE;N+=u2D+V+x!LBD?I+$wL(VgM%u-SbJAfyQ7L1`$v6X3 zmXU!^tYE5k)~5|ix0N@|`DiDxgmiBvE2-YT^)T)!_A zKKlIyE8r?`l!n(6wvoM0jG|f(;=|~|5vloh5y$_I*<(AJ+!TF;>k;@<3iBbk*9!E05UOFXmaD=r#ZcC*8WppJ zabY_2UG(B)R7Qfh=4xJsibqU-Eb6d-i%pnM-lSUJq3{NRoM+?0p!YMIGDFbg!l*>( zAm>oxzC$ZV({pkQNIVxuZ?n4uDnKqqurHfc+rWA&h{FohzVI~m5;J<}ld%6zf2N5B zITM9d@f^@@ug&mUtd(=0iJepT46`I)E~Ts>wri-@oq|tIc%5h~nyWx7+xH(r)Z!32 z$Al)(vGX>Q#BQ|)=$noTPG+)#+UICPTyKtj#bTy0^_He&B!Xx(Oy=G{P0%6tcs0yK z6<0tBkMu3mXL>jmf|$hvm0{55dtvu)eP##eN8%=(w5-j&>bbvdWInvPk2*g*(i#Y{ zG^}U!7%OBA?dWTsv9i3zl~9z!YPZ6}LIMp8C66#xAb!&#uAfzoiy{ z@2WhRu+Z0TCAP-sW=-UQJiY}v-kv#2(R*9|`dGNNxf3SkG(~STB|4}RccWXm7z+d5dGam^hkwDW$K)t&krz;^mzY73l!CcSqWf< zCG8ja<3(dwG+}t$p{6#r9vQK$DM}FuuZo68s)Xo`<`d2nnK+Jjfs`}j5WN%|#|CaU z)ne)-@q(f&wv{89<3-kR0<0W}62C%jZLb$D3g;@Ajos_Lv+9J=da(rOiO6W%xcxh+ zSaK0rDZSv#oUJvvoIb{A-PjfBw1r`8IT9(L28tHzrC|ht8|7TRlN@8lshC+bv*;F$ zM4rzxSN`20j}ZGoRg0b&7@ac^B>FUOnmz$_?0A=bD2dnH%4H0YUb6hZ&eWHoW=VQw z#-8kPD^WgV)B79Tk*ZGvCh!?+N0z8gQV@lvD)neEZ>H=X`nZ&s{tQ)(2}5g`B<{O) zQZVoezV+Aegz7y^i;w2-P?QZ%#`TI`5!0rFFNf<7XP8XLWG2Gb`YyjvOH!0Z$z4K% zi4Vnb(j?w@49>SJW`%6a7f|kJ(*@>F0*NzGS<8mMvkT~ww=#8eY66eikm)0hD{OM= z4h|P-YX6S&(x?=PMZ%Gqa7l{5V##DH2@fr7f}Bw?)nYy3Y>7AHjc@otlp92N zKZ+yyAS#@i2U2DK#J_B+s0`M)GliS!9*E9C!!K&cG47i1D~9k9F0}<-E*@nsLFR}o z4TFrid2){6E^T07Vh3dAIZIZDgQ`rH$x?obIvM%CQ0lYXT4aZiNiNJQ{TxwVh6|E3 zPC%*J{f1NqtJMd51=ImW{eq#rWGtyOcEf)| zZNq~fU=4yu8wNbNbcyuf<~`g9iEc#tc!GFujP)*N*KJk-G*;8$`+9Z-Mg(bCy0y>N z*48j_W~6m+N~vH9DV}^1EwYy2`Cv+HXqH-KW9=Er;A6a4uXu^$KYc5cfAZHZ=a4#F z{?kJ0S@Vu7bVcR3!{rF**SX;(7*PRpS}T|CFN)<@DeBGpe+wrN#sbMTIEci$T)@#| zQKN9sUKTyrD@MRK>6M9>%S)FU!DHua$y1UGyPD_BCdwLH>k7#uwPG!E-!a6SqeH|slw9m*edS( zX(Y#zW8ET*4PQ%o%^&k4?@fOM`FF20<+e8-^7E3gak38+;i<964{L=bc zWI{4$1yu{uiLRUvq9mTLO6BY(&yh`xFk(rMd5b&T%i&1^?C*^M%a zO4Xro?*3P@sBsq1K0H@g;H%IZhygWUas3sg>9*NORS0$5er}O#7@{EG_?Lynb^nd zh*$Y*d{QWri)ET`Vz5xdx?k{ks8zQK<$%vTChgju7xr^uSSuzYGl;6qE3Y_j7R_eE z96TCyU?{=0ob6vs8xpEBcJBf19)hngSI7<|L|;oSG&O%75SM{`H$AWmxOt2vQD^*c zflnt&esz}jL?)I-B=QV93PSdW=`Cf@PAz(#3ESkPd{>0m+wJGQs_iv$`!hn;Zv=*r z5o76DK6N^R8pE-c8-`6K zCh(3bsjnhqcghMf#!=qQeU^2y_X@O4;CebDG{;hVG1 zB}by)Q0@<82)n}i>=FMKAF(7^)Rsv&XAqS?<8xhhdyUvDNx8}>*rp@f3s@B=4ld-x z66{=Nv1n;WTL%XPamow}wXd-jxGPtGC<*nVjG{D#%xlF1vJ`4xJ@swvmw>mBoQjm( z3f*;Gykn0w^X5_J;HK&^&0T%@cD0w{1R-&8p)m^47QS?Z63i|X-?9?T6z(V>gG^@tp(#iWttCeJIA zz0^(T7gO^3KO=Bz#vn z&dyte&*|dU$GlT)bh~gj`Nwyb`4$Qv8Sd5l(}#9cWn;oLTi4k8xDumBr9*Tn`ts?G z&%K)43<&P)AMUPZeioM>s{XyWq$k)i_gsy}%g1V#`b#M@f%d9spGSFRS>r8s{Q0|2 z*H(ZiO$1R2J8NS?2MGJs+|0BKgthqjEG2X-0CoeDv|9me<2M>kh;F{AH(y}_-2$ybz2h!zFd64- zgkuY!f;hj>hC*&$0I{AMhHEPLw(`$OK&sxZv%=$r57IXRnREOO<7t6hIf}-Q&s@YzHyzROm&DBcy23`qE!6VgH1= zoE=QJ?^gBa>W%-I!u8)3psbqk-~Dp5FVL=5bk+lE-imzI*3vaZ6!WBdyjqt>i-Fy z7=Z;PqmEMKixV;YM;M$DHYX>C`_wb?kvo`p$1B!byU)ulY197JT3dgZ3(t`<2<;$? zJdObIH=LKbp(-sSM6yIZ6Q^wx*nZf+RLyh+~uJrUy|A#M5nwYlDj zSA(2>gI=P9X#KoF68NseX3NUVwUWROOrNN!N51~6n%4s+TCaJcx|Nz(Pjjpev)q>T zS?^~0lph@&NY6k?jU9FSs*gcERjkE4l|+AR1+NYhpp`-)*OXsI(8<&lf%&YV)tVtgb=t*u&~C zm~G_-|3t9{Q_Hjn@jYE(_X1?Ju^y?`0E_v_##O;HcE8g)$+xR|X|E2f`O=$Fm174| z;cdH@-n}q)!TY_<=rB``RDL>Tndk>|iQ_jv9ZI|~QHy4BG2wEajV-~@iY<)b1OW@d zmQ33g$%bkiJNWXRahc+sL^|B;<9DlRj5Ds3*zFs)8M&6@b?=HyN^G{bQ`Gzh3WDqQu-%>$*nYgk6V{9rk{f z!JT%n6)jzOeqTRp@9yZIRRh2r>2pgn*od_xnrbn%F#SH9iW75r2%Ll!!WPvOtV+N~ zjrN~$`t%Q+9)?lsClbe2w6{{`gC~-0EoJiR;i(uE*B&6#>ZLElLtkH?=3EtQi7iJO z5T~VPYS65C5qR zqMML)g4>HWB)1z>ezGk>X|lkvvWGK{OtJ0QHGV;JU~KXi2**mNNKEK~v!62(IZ>3s zO|$y-H10*?R74IU=H2DD;e?Db`HqgZa1FN9TCK0nB*+MC2&F49k;)0iTI|wtd}3*o zsD5@bq>evb+H`qH^e6={F-K-8+pGGLEBHTwB}2@+_f~1P(O%WNW1p|XL1ke_qE>?V zjE3GD<48x&!_Ml|bLq19l>QJl;xSu&KbW54RC`IK~q)y=uC@-?*-8KaspJ^I z9#w%l7zQvhm|_`_lwJj2zw8s~Chy?1eGJriIf)H{4=?UQo zV1qT*)euLPTq;?8hak=#;p3CPucZBAn6fcYN2vr8DegG{1JgV;%43-XBph z?O|CZ^A@I`o`2+%F_{L2fdhJP?LQh`)5Pq5q~puTa|a9S{0rCS^tQ)G(`w`yQ}@M@ zH<=9D!W=7-evj6P|53|r)gYEP7}k0rI$ItBHmDTWh9{|pg2NA-UiCmsCNOteonee< zRXLAZJlW4gHRnEAGk-?GGeW&8){M43h#CMB;y*;*V8_q)@42dzlwK7>0vb5|Q$6+% zZGncKn-;smPUG^He@+3$Ur>&Bs9lw4ggcaWKN%y9x*tYpsfm?PvtPP4<6XoAr zmzse3ruV{?g^aKBC>Qw>Z1$R{{L?9sHm}07J|yg8e4kvy*@v&u2B#zs$wv%nerR^^ zP<3WmQ3Lmu?2=GdB~Rb!m%Hvk8Vm5nmoT%h&yvh9J~sye%0Z5RZ=H~UAJ4D=AI2#u zctr`3YLxR$OTQTB8co~q^VN)l2t!tt#D0Jz2|DPG2f?E{DG8M(%Bn+O}J zs)iqdtCy+xh}uS6y>`KgYRFKQ%F|IxI{?`a+S=S|1}6E+DSKinR{SV^WE(=g3ATh2 z+Y&W948Q0gC1YAy(A_rrOr99pCI3uZ1zp~sCY^k$oU0WDaUr@`Ew8QXW<>e|PHcV&$+Dv6%1MCPQP&-(KQLVdyLr^W#giPoU z5n|ynrPuM|T11e^7#>vNW_m+Bgf`yPi36DOfD{{CkhTa2EsG$CpQPO{OPwxCV;R*V zJw9#5r_A3*KRdAjC=evN?=7r&+WpNY#_pEq5W{p;c`1)viL&2FYo5r^O7CeBH^aN^CSUb!@p zo!T|sH8@k~zjjUnu(M^foj~?GbiOoym7H^|l}EuZm^@33>_&#Yp?Lz~2Q|tN2cZiH zBE&GchTtmHy;@V#e7|5o-R0)B1vhoGU{HV|mOz%L$Q7crH$Q+S*`YBn&l$#}5!M~` zE)go0(mQ5qVk#?742o1uXyp8yM{;TMveEL!Y2$_$AMbox$p3ygMrIq&GEUYKi;VL+ z;uiV>pXgx7QX5aC4H{A^h^lgGp!~ucy7+EEL|vxz@`f^MSrJ_+RHkt8PWU(KpwP7f zxV-PGX7SYikQ^U*Yudx&=G)bJvS$a*If*)EGnt+#PzfD2rHYJ+fPx#MP&>!z!tiMC zU8Yw?O=Z0clBj)9HNeo-r&JL&#*|7o(=@k&Xc$2UWioU;C5D>LmBvcjwFoT zQ~RxGM>CSGqFmEhi%h`yuLh-CU#oain-MKUg?N9>?k)FYMQJv z=>~`dDz}j2y_L+=_hqRrusJWc<#BxbP3lN?Q>ne$BIoI2R+7vKSGR;|?M+ZAT=K{IAhWt)J{NkN3?G?85XF7KjW8x#yxc9z@cWJRTtTt zypT}+I8b8JRfi(*$@LLLgGzbF#&Gt%h?xTpB3XbB*_2hE6oXfP;r#DOcR&uB zT8KKv!Q&==sl;^fyaKU*te0q&D!^o?#+y`UE|#2OgKZ;sn1cWxuPCnT9^||P$9##v z#&)gSR~;|>(V_8<<$j&+JOyT zDJIoX^}fA2wG zF{S=%r#S6@NpfIFk}ExrU?-{=T4`=l7`ganie-+))Y-nIt`_|esdR)8SDb1M?| zZCU+Ai{>}=$lZFmkK&j6t=nECbh#TiH_Z3T4L)@!Q~KhLkND|!s`P}t-;rpGwQxIf zAvkaA&9MP+-qt^Vn*p1~A#*Es?6z_gZOPku;A{fxe3#EQzn`AJ`%m)EUFQzl=J!Wo zIt!vG;`-*UvqK?sE1rWK{f^9<7j6A>(qBwU!FgLRb5=m0SX=$do&KMjReVaHk3;8q zyD3q=`~q;E_YKjlljg8igL#qjm$2Srq*xuuF?v5KyUARzRe?zFs6U#-kOm>?+{@Gk2@EZ5bhF71z^K;hyRHnEhS@?AP zxv!Erv2%4Z=acZM)MsZ)!5$uvV_pe;B&l?-)#lAro(KA@qxvaqdFQD;?T{7Zv{^6D zgF4$a<)G|L@mWT4ZwOFyVD%sa|GM=~k0wfH<8{l5FTXug?GE=06ps5z9zIcJZl~+0 zlVqrfXSEp6cGHRWDY=aYDguvuw1Nk&Tmb?#mn341vO&ko1YFHG%T)P0L+RCgcWWalhOx4*^r833j|2y}=X7E(z~E%4{Um zJpp~+X>6iP<}Ph|h(eytP^lb5k zsVt55%xula;x7>UI)ijf4L%If8Vg-pf?~B&!C4V#R^ZyuobOC*(+`*6sp+QHC6=;t zHnk=ValFo^DkXfTwVU~`|8ys~r zy~39XqErp2=HFJ%3roGVfYvQ$Xn;B0uO>3%!(5Q`5i^9kF70uRQ`0olIG=2oVT{>1 zAxoPppPeSv={5?TXqYhP6_}ipL#Wev&e0q|`}*G!Yk3&Io~K!SL+cg;pFQ8$(kLlA z9bihHd_ECUzqwQ#6Kjg1Xq$@pCxmSZ;DJTfP@AgDCqyJqSk^SQ_nE_0c|3LXc?l4% zcF4z*>vkdpqg5IQU??7^INhHhR$iMs>RTF&#~b5V zf!m|e=iNIW2b^4)awpi!b2tcx!(}az2YR%vOC=Xf7Wi2Ug0#fwK0zVJ(OYYJ^2#R~ zYLg=*3BS8_`&oR&sxpt4ygd_!9yPcr%iWfn&{|10O#Ujb2h*rd3!8bc)@?6x=tC?2 znz_WXioxay0T(#1AW$wnxd1%jrV%(7i6Vs1(z_EGOH&64{TUfgFq4uU#Vax2l?Ega z7@xU`rvvnn?!)M@t(a6_(%9<}z6x#gaDE4QKYLdKF9sKUx4Esa&nrH&awVoJ`Z&z(hoh*)$Ebifo^l@R%P1DPM)_n)u)Z|rtYGS+sZJq zSL1fc-uY;BPNGx%e4py@P=QXgrS=&)j`fSf3I`6L-|j*REKP-O$|fdI=z5;z&Rjy* zy1V(#N0F>!uAsbNtS%Ut)RR4O%oO0V99s8bPf2Riv+cd4X z>cQ=Dgp=PemK1wH!!C{_`5*ancq(g{2xDAzh@IshY-=l5n?;AkAz7pb#z#}+oXEBX zcAw=^0wKIbVlMc}TyUP`AMm#tKY?h2e(rlACE+_Vz~AQ~Hq5)jT5so=uUutcjU2+w zZ>wsy^y%oQ996@0sk~1X)rQGE^EO_ayW;lWCG>C4#EIV`ms{hItQHA&FA_NTf}plA z?nFCk0?x@-{v2v;0(EL2#?QWBUD5Xl0;?Pu3nax(iT2u9-!&NKKI6ii>4UH^vPsr8~)ooOTYqHP03b7P`|PhpdGk(m~iw3Q6ULfo~)Zb}iv$s2F;Ko)m5plo?LfYc-Lo)^&r|4Rn~-}F&TrK!88)|b2A#|G^7t=ANpI^U6F@GhZncwV$$82(<5or zvxm^3IL7#0bD*)NX@I zDRFeDDbwfZATu_i=O}m9ya*d!jzYqSid#3)eax1I65;^Y8uJ#yo@jiL41~KlsES@K zAQz^(GzA-NYq_jNkT8jrFRa3QyD~;dv1u$jEna4_wkJTmEUAo7?KRCWG>J>MB&}E7 zq)#q5ufECn^%%Zxp3h68&vWyprS(ux_LNbT#rTz7cBkVO_YaB*>$1sJx9B8eBL-u- z4sx9DC^d&GrUwlb@O0XP%sS1lh|PS%kEIN7D@2?r!xXu?BAeZ=rq&;==H?IE=B>Gx z9E)PjEu4$5HH&dYW~hsxXcG>3)biMa0H9z_)cmBxpaItsA{d_riEb1a1he{M&}nVl zq(vt|I7I1RbIyH7=KQDU=wszziE%iY%Nl03k^6d5lY);@+d~*-rTpj4x@6gjlthw$ zXS@$AzvLQRXYtUuUuFSUTy=-q5f`U|-tr7{K|GCUr^0ghG2Wf))sSN@uz0YNEj;JW z%M%baZWNc-DEhTTQo=kd<8LC#Fb(`OWB03wvXRCp<8VpT@y0fTgIyPuXB@32SfOC9 zUS}4XQo8b4%@m+=^P~7MG}w0m`b!+cy5yQ{&&fPyh8>?Qq3(P_5 z`YAWBgKbN|89#t%j*iIFPRPT1U?JY5x>%C=AJ4F!vHq1aTG(q&sYmEfLWlRB;xE-^ zUk8uue&0p9eh)J7cSmg(!C8Ip-FJS#v$~`A(+$To4nf_Jl6|GpyHCZ^U(D9+L#pMK z9%^fI5f)mX?<0Lb_6^fdgaPL_*7YW<8?sXxW5x zuT`)OvwJ}x{plbcojV2Up|;=0mPkA%lt zz}1?P?id6$6FsTOX?XyaSUfg#;>0q8K*eT0O4%;N?V&eV7h=@#(J^|EZkH_;?&YhN zwb%#AMRGmGVzkk4BE-X_53OWcu={!TcSdA-kL4JpYas{yvcR&>dsi5aHH{t~ zbSlQ;fS4Xmvb**{Oc!L*TCd}5$`E(NGsNX~b2lh`tW`iMWygEeuZdf5 zNRlBygz&+IXB+I(yRJ8!W=*4)1}mek``k`dG?Gv!rPDp>>PE&w2B!vwwTW;tl!iWI}eVbM+Px}Ha^vBIq-l65Sa%G zH1vwxw?U0>`fE-nuqqp?yE>AEuNAzu{(eM{)c>4OA!a7XG&31|dRKe;_)5T>Xf>Ye z*zjYhJ;!Z)oDQ1HRYECchiphe{d*hheGHuQVrl>aYkRD@26Gu8(HLe+9#S ztYqE;HD`J63UfiKN_0|mkE&#e1}>pSPDK`#F7(SnZA6wdZDR3AZ6&N}lAxNJOZ0%{ z+nmDok3KexXdBC0H`3}b`7Y2_gV*D8FVDcRa&6um zK7$Jxn(ZgWzJ(}e*jof$h@sqZF%YiSRH|dBcT0(7vWf7o-X+C6=R51>?bP)1*y#47 zuwK>3GDUo3MNDX6uXjcvS=fJ}wK@F6do2;{rZ8uBHhKIvrRBe_Q}^{|HIBDW{H+4f z|E(y$D^mRf!$0Ei_j6GAM=t)6i+@{4|9jG?mQstNt$rov&c^g6iNSeWtAG5j*Geki z;Pea3qhG@qZbv=>Iev~He1=!fUdI-KzkdpH{G19N!IS*ILa~C=NwI2>i)kTnFbnOcGA{Z7b zj3d?Jg{3(0C2(GAG5Gt1n|qN!na~fHA_tD~AX_?#ZOOg)KJi$czC-IUjKZc28kV9y z&wV!!L^Z5cSr_AqG(;8mrH;zR5SvB&WZm>6l;CUG9$00r6LM$QJrvT=T}%!(CStvL zo86$WJ{MH{2dCd7dqc_5Si^}@E$S?Lfe{`q0zLYJ6LRN1SmhgA4D0-$Lku-wC?ly` z%^KzhkR=9*590U@-ZM(|@-r*iNZ$WKJpa?F)C2@~qG#3KJHadEx&M!~w<{2nhRcmX zpjlh}z>e>$g#$VL6u;b`>WF4M#we1t)$ah$rolM14Ytj1C(W3kvUmHv@>pFMQhMoq y+o68b??#nJdxqZid{=>FXZq(>6nfn>LP?y-tm()*9smFU;CCQ!f5W#YfB0vY{?A_*aPp;q_$?w{M${e8FZ`d0tQT4(L|efQaW zpZz>%pPc>E2_Mf*YTMNS0Kg`%qlZrc0Bi67z&9)FRR910ZB2d=003A6JLTyHzz!J9 z004mhh(2`u5CBl0yK(v4IsgE$;qp;13;_5`;_7eBc$D!~0KhcH>+qq|SHlEj(1KlH z)ctw%#530$RL@%~AFjpkxaHp4b9WT|>fL(#L!S(B+k$TAXPj88^5*tgb4Z-I-sbbV zb>E-TUq7b8+rG22C_Cfjb9@BwY@^v|XhZ8W{mbQhYViAPOlzE4oolR>Hq<@uf5P@4 z!)Fh|sxP%jSGd8H`$zBIxuj)lDsT36+Z+3_M4I2C7c7QY$M_662xpak)p! z(shov@p5AqGLygD^y#JnhCa8+8^Is7CyU-LjHhk{+&4m$xBLiV^Ggk?(JF zCc8_1VpH=$%E0jBu1nW_AGgEP_PU6$%2M>?g3b_+BNi_B87nTx2E_Eo@o94QOfW|l zkg~EgJ*2b3;XEcO2lfo9#-k3pBpsp&D~#?D9?nL%W~e_;KR%fkIs2}fV^r#$$){64 zau;rPfy&XJ45|0gpQvr73ZAsh#6>h-u;6DbFSLfxLGqX_gy=z6#SnZjJWYXiQncq* zX`_VF8nPQA+UOma=DbvYj7@@u(`=>l_bPug^9 z1Wnjj>C-1I-oo0J%V@C<8LqwHfiCbQc!tUw(0O7FF}GiL@ePS=2nfkPhz&W6iS7L5 zcF;-?)#X638Vj>BtTUvawphOq5BgZNu$3yZnc<)&s|H`;ln~jHFBuNfN4BI+zaR2- z4IQWBN)(c%D*FsGOkV2_{CR8zCS4PY3?De`m{uf*`-97OQ;~BdEmK=nE}U*200aIV{n4?I1akwDwxf z7F$T!jmGTziyC0GTw!0C;^ZQ(i|)}2j6{3Bx2G=kTL%!>zFJoDC|Sxo``c`cOrWfn z2&9P4*IM}oxgA4Uk!@2pjS~|dyR?0R(lljzLkTD~(@%!EIpuL$R=rYn(gf6xs@shBIK zqGvO8!kX?`k{3?NUTC6M$pz3p=nMe>j%@+11!Q>80DzyjSOdPlkf9FPy!}s#nh(>W z(nhH(fnL2-VaQ71=3FoWWn3#_aL3E{|H> zNX*`^zP4E)^{Nnbb#`{ zXps9|h(rHhWtn$&>77}fGvNO(5%SZNJ+*`%%cO56RpsTo^rdfosS0G1-8>{GXfJjC z`%$N9im9Ps?C2hNE5qfgnx1SYq&1Lcw0W-b%~2#0=^bDGsFmB2a(Q%q=JrX>_o2HX zOh@_wzB+3uVbmFf;WYn;zQozJ5~XAq+Tp^HJ@1=TtE5x#{n~CsWF~*jW$pThi8Vw% z<7D8j(fKByvld%_;gv^k58Dlq`e@pz#)Z;^6;IOBhwk|`2z60z#1Xjr{(6^;7^xaK zajx=_zJB_NbrW$;%_qz13*WWw-7i=)O$dA?}0J38M7}B;UDG(h$pJWACmk#ndG9SFBF@=Wzal6y*7*hmIX* z$AcJGI!}|xu~4wyuQ@3FcRd5Y*|D*_`)pV&t@_7%=fF3s=eKdn#S>>}3_fXuBGx5b z<+dUaS}pH=oM;=T<*!{WBy}#aU{{Tsp0s3K-Vu@(KG?JD{A;6S%k_Po0yb|p|041g zLM_v;UIWHHB~{8=FX75gVZHeFkMLMK~`I9KtyISkxmW8{RQ7y z`}FNTAk^rgqe<|^SE(3Tm&danFe||c8+C0&?MoIsE6=p83=7dIPd?Fd{zN#VJhFe> zkd^f2x9nFXp%IGy9o+hAsD&i9?c^>`YzQ+YyY|i8ukz(!$v&WI-0QHao-h!kKcW_y zUAy11R`L`yb-9pNQ)MNtULuZc|1w2AM`=+i6M%_{yF*cfJaYWGg?A86>Y!7}~b=DexD^QJf-s1qwu6=v%l)mRP^VI~@ zW3}_>w2#krtRjMD^anQn{?XKnpZL(P$lT>_3fa~DQccgxy1~uku6kYGpB1s%v9801 zumoQ8k8D30&1mYyh7aj^f-s;7axdgV);~6y&>|P+Na7w9w1)DYOfBM)pg?C=A7t0G z*!k+_M-5$+rJh)gCww)YtvyAq1p9IyEybZsi%+b2M zpDq6@?wQZWj9#{?e4?bUM81DHDq+0pS&U=$hCoRbK+~OxmqUU&mmDfM&J`Tc(JE;a zuXtV3iwmT269dY}NF?)KPwy#ODqw(*S z>V8c8arQLZfA4KM*Q^Fr+rvoM&OGQk@PvNu+tfy}9iu-Yw60g0D@tg^HjY+dpzZ+Vht;F5FZ zIey_`oT@I{x{8Xpk*fN!6x?6%GCnk^D7i8R_TW+%jeVMJxfy@?3ucLK$-E0g&pFZG z&$XhEV=;COAV_1Z{)>yoRc8XyWbs1?sFXR-V8VJ}}e^>=S(*}|q%jT&C-Z;&9!V411v#a!YaU;=@>^Nt4mBi2X z8v%O3K@&3_No&(6s8>TNi;?|c27fF+w9EX>rxrgZ5t>sF+l82r)G*nK?W`7*?7Od7 zi~OE1RnlhJ+z*MHKGa1<9*$aN_fx^eq?(HO2;EV3*tQ|YG%WG8Q#?wJl{dl)Pqtpb zWNBG199dnQe3xy1deoP`mBqwjfN{S6D{BI>Vz8LG@!g5N5Pq!D^ZblE<@cEy zU`6=T)Q=rzkeE?hyS&ybd3j0ZX(twTgqBjZ_nSa@ychLa_>BuYLia&zmX94+TzosC z##)z>XQ74HL+>t?rCg55iEW!CeL?8ea#C*KZHcT1+`!VN7%??jcMXcYJs%t5XOs14>51>& zd1!#09hT4&$OFpCF_-3qr*jo~^XK4?^2UDfG<~F#F>CpL=M4HC~J4_tVC6e~9mAPVWfi8pGT=Z;hRF zBhH7HbDxJFeA|0{uPcpbLt07)X%1$+nDuaKcHTH~r7Q=9{lIWzsP&)Ue`e`TRBz9k zxJV3FHU(lYrNr1kvgJ~rp+j4qiYLeo7yO?X;jm{LgA8ChfzV~MZKT}Wb2IOeLFn8T z3g-yFnof|wP7h4=a62L%e;N+}23v&3VT|L4Wt|Z?8KPRbT#F2eJ3(_GKFo{}P!EdJ z$#x@l#D3lx&4v!y>>*YJrq|&pt@_Y;A%9f#+#gjrMtCKgW~>+xdJjEAVt%F?vDLvj z0SagX{Bo&~`=Ea=5O@Z4DM8Z0-g&hVH7h^96Ve#Oo%34MEEXXPsFuU@?-g?LRkH)q z&=rHemHfN8!=FGpj5O`2-mKVMAGPSNTI{;CL z?xH?Q&xq+?s<{qve7TLpOpO!Jty|@5RoXm4Q+Gd2 zt$6-|!sN+{&E*%;R>R6!G!n4{J1KN^^-OT3eG8`pcKVA?@F;=FwiDsd130 zW+^wl4)oDdMc$FzuNo7^LBE6xVE!aM{45N+l389{Cw~*5O5{>s!WS1uqG-3jZDi8a zvbGOLU*rbP*CvOvLLUI*XTaFgnL@cCuHKf@_<==i|E}^ zu2TQA_{eLsxX=L3+%hV5xwenW$?o!5aSZZ!wv4D|3>$kc1vSbMt+U%_<*#uyIJeGv zLo0~Y-+^c~mb&ZK<0uygqFeHHqetGEF*h+kJ)syGuuX57DL;zdZ6)O88;oNa3-f1y zYXN81|05^bfA}c;|LQ}PNr`|xxfj&8p0)P(K#Hhv0ShOal2;aSzBoib^ao?q!mBIb zuv>xx)q8U3T!FJcEyL{K>ZvnD&gN92Kiop^MNOI*dxa}z1Bav(DS2>D<<(z8ikRfZ zy7=Q9g%CcCJg2{2uj>RY!|Z_L`S{cc{UK-0(!hdZE-j6cSlA{Un?u8!W5-q5hiDEr z-F8EMMzGoA0UovQ2P&LrHpO3cPZ{Hd1(wFA31OHr+;J`uA-O5o0Woj~ZpA;FWRgXG zH;0e$>${A+<#Kt&R8mP>?09qyuB5`aiaa4+s<^cgIH9Xnl9%}{^(PbRN?|tvi@i47 zPiQa~wC-t^TxZZ#13E>lOF#2i!uYrK4MF#%VGc z2o9oDqz8<5vke}xu&RWJKJc4x0_t$aort{C$q&W z(@bh*s;GOR#}xNSCp@)2HNrEjh`IFm1>2KGe9JmFN<~y54ZSmu(TsGjG>H26`JP5z zxRl|Vo+@o|>sB#-WBAtg9WnM0_+YPrcA?tH?d!eD7c&JQ$|wn{D4mF;s!fm^N5?kDQtS#QbK59T<>;M>`uzl{TfODC?( zTqhgiI~>K+4Vbv`r?G7A5455%dCK;-{-VO^YLLZ1^TH^TFfw-o zH($yNHnN|CziMV0AOT-gN6{FYrXp#V(yv6Y+pxCREEv;=k}1MpQ2W@-SB)IjyD+DN zHG)8A-{{TNf++?LH(%cv8o|cOQP`>|c@VFb2sI`#n@NxIHt6lwo#>|(`KEDS!1S_y zYqN;=3l7j|YFtBxVP-$sveOkurY~Wl5lB0e5Oon0i;Y?_g-sLVwaFQ-vkW^HkZ<1-I)L1!%3vmE308?l)&6Fhswv)ar(nlu6Udm~6q zWY!C+-2=E_DAL)WOj;Hm?qaaW=I(GU^TM`LI=e*okK<4-f<-8$bM8Y6g<)qr0}~D; zF#}imW|7314hI*eDc}E%VWtGq)^kW;?|{mvj4JEBPSC;^!pFIXoHfTA6+PFlS_RXr zW=5(Kge5iUpJvgECEY!UGh4d5g3WL_Ck27)YGq9h(}U1(UqO%!Gd0^88_#V*4Un%; z&TX>>ZtT}p0=M&6aWq<7<}sSv(2AD7PCluhU>~FUS27V6VyxdB*a}@u@~izZ&VR7M zqU*#JJrM}OS$w^6HtNXAro|=FFg>jorO<>F@g!5!!=G+&N|g^x{y?Mh*;FJ=K8dpT zQ*M$@&otfk)2mKDQyazRM!M~W7fI-z}ro?F&(# z>rRW{SI1L1%hK*BLS5tBnUD?srjX%yyS*+xnnRqs+SWNg=WPIAz>1825ralFzN*a* zKWS_Jcfc&z3 zb3603HO(lwo#Smy8#fj8qedr$9ICJI^k*vh;-8B8&AbHl&p_V%IT(8Tb-zSmt%~~> z*PfsKk~r$R>VNnF{G1uqXaAHER>nc+V{-esL>%(@Hf!Kom55ScYeAfF?lGDC`0t{_ z@IabHLitg(lDswPR^+_?^MeM@vLfa7LlvFL#n0fhqN%13r|p6~^MMlADn+8$Czfr& z%;e*{Haz&uEq)tW=aUEPg)0?h7t^Tgk2yMb6CTO>VnNWJwaQcpK2Srp2xgR`oI*CS z)=fL5`iT#kt~moo5hA(G)wx-)0a7@;e3UuEzl^9Qx3_Z}L#B-Z!KY~%>biHnyBQ-m zw)a-8Hl~w^2sOQywb*z_`CmCO*PAk?5zsjHMz&}RVvvI2<+5fqePD2E_LbCDx(m^5 zH{|)*-^=pNqjep3^&X<^$C*ZuLIT$P;uJLv8lHy|-IHH6k4}TfEBn{$ya1RnQ9p(va2 ziDgB$Hzdf<=Z!fZy@ub8) zk;BpmnZgMCysURrEg{~p5DS;*O!|;Rw8kX51yMzeE%sMG(`$h$&w4Xxl^J8dUT^;n z=M7*ZU1`>@W>K4aStrM%h_yk~a5lO=*60C`P}??Fkw_RJqH2jXK;8%rjcvELr4Q-8 z6x$~9{nkAS3OMrieco`6-^NbXJ5dnw)~#OXMO3Ia(@^{yy?!LR9U+aUL@Yv2aNrbr zlGbOYfdhlFHQx}fI$=XV`q$Vt_#<~NrN^6`SZaf+j3m=qB*7)?7^+LM9h9g}KPsiO zOP0*b@pBD4X9CIIpHz7^64;Vr9{f4C{v?JKz>GpN};MSX8eR%*3 zj)uPc_W#^soHyvPPW=y1frrrvnpNukKZV^te-Hd`_5bu$`oBZ??-2fDO&I?RGbgGc zFMpTgz0kUui9&aeyOZ0tt+p-vnHGhKNis@qx92QVdb9k7TW5Ef>MOZ)4t6;6j$Z)H z0g)M#`Y#@}XY#)m6BfU^b$(|GDQ_Fv#HvVyrCACD=H_d6fBuikXZ+$#zL{abyJ|}| zwM4jHuh}p2P67NjuoVV#6&O|~VQc8L0S%}P(V%%r)`1u4E|!d)bE+|h?o`vOs?AFf z`Pf3B(V^nJM$%K^bdzDFIVnB{J{>h0u0z|RW$gn7PE2MynLt&cTb?c_fJ|zL!F@0B z!+o)Ce|&ERL4}z>yRa_qHALmn`nD}?8}>oU@ot^n&i#3j(N;C|Cp|ktKW+!3STU`P zR%4gOqhUV)CnhW6Xhuf=;voNRnZ-ML<^{6xJiotn!TgzY`q%cwtXIC(TseCV)x3Ho zzW3`bx#;?7+R?iO4K8b;9NaeRyOXb4tc%%<$a}V=#9RL6TcpdRMjCDJE<39l}uA^oE literal 0 HcmV?d00001 diff --git a/tools/auto-tester/Windows.PNG b/tools/auto-tester/Windows.PNG new file mode 100644 index 0000000000000000000000000000000000000000..bf7b76ba02f009f17c9753c4953eddc1bbb05bc4 GIT binary patch literal 9842 zcmeI2dsNc-y8mhV?VR6?mzlF?$~!|jb~8=QyT}wXnUh(WXXn}IcuNa@9cf{S!@6CUF*BP zJnQp$KF{-czdo0T-yaGIH2cW}GXU^`;lp(R0D!gT@-+YeuqHD! za1VeoY%2x;0RIQE`@n7h;2!bg)f2w~0093teP3iI0PrtaZ=W?&3Ba=efTKy!*So{c z#>x1`Ob0YpkfFcwt>ODsVEs67IW2wL$%=0at^mXC{2}zt>e^^?XRG+=_8H{0Z5J}m zLBn_UT@bD$2!AYC{FfP*fl)_?X(gK0XA^&EX5qMe<&1Oan+$wT4Wbj1lMuBjsZ%h{ ztd>MJXaYu(bjTf*L&Fd(^W&f^x9W
      j0lxxdHaL!vWtXumB$pk=A^29klj~UC?!3 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 + + + 0 + 0 + + AutoTester @@ -37,11 +43,11 @@ - 3 + 0 - Create Tests + Create @@ -124,7 +130,7 @@ - Evaluate Results + Evaluate @@ -171,7 +177,7 @@ - TestRail Interface + TestRail @@ -244,7 +250,7 @@ - Windows Taskbar + Windows From 8db0711b5b06b73d830e88da0023e8aec73d0ae1 Mon Sep 17 00:00:00 2001 From: David Back Date: Wed, 8 Aug 2018 16:33:47 -0700 Subject: [PATCH 235/332] set grabbable user data in addModelEntity, pass grabbable from asset browser --- interface/resources/qml/hifi/AssetServer.qml | 6 ++++-- interface/resources/qml/hifi/dialogs/TabletAssetServer.qml | 6 ++++-- interface/src/Application.cpp | 1 - libraries/entities/src/EntityScriptingInterface.cpp | 5 ++++- libraries/entities/src/EntityScriptingInterface.h | 5 ++++- 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/interface/resources/qml/hifi/AssetServer.qml b/interface/resources/qml/hifi/AssetServer.qml index 526ea6aad0..1a7f5bac40 100644 --- a/interface/resources/qml/hifi/AssetServer.qml +++ b/interface/resources/qml/hifi/AssetServer.qml @@ -186,6 +186,8 @@ Windows.ScrollingWindow { return; } + var grabbable = MenuInterface.isOptionChecked("Create Entities As Grabbable (except Zones, Particles, and Lights)"); + if (defaultURL.endsWith(".jpg") || defaultURL.endsWith(".png")) { var name = assetProxyModel.data(treeView.selection.currentIndex); var modelURL = "https://hifi-content.s3.amazonaws.com/DomainContent/production/default-image-model.fbx"; @@ -195,7 +197,7 @@ Windows.ScrollingWindow { var collisionless = true; var position = Vec3.sum(MyAvatar.position, Vec3.multiply(2, Quat.getForward(MyAvatar.orientation))); var gravity = Vec3.multiply(Vec3.fromPolar(Math.PI / 2, 0), 0); - Entities.addModelEntity(name, modelURL, textures, shapeType, dynamic, collisionless, position, gravity); + Entities.addModelEntity(name, modelURL, textures, shapeType, dynamic, collisionless, grabbable, position, gravity); } else { var SHAPE_TYPE_NONE = 0; var SHAPE_TYPE_SIMPLE_HULL = 1; @@ -281,7 +283,7 @@ Windows.ScrollingWindow { print("Asset browser - adding asset " + url + " (" + name + ") to world."); // Entities.addEntity doesn't work from QML, so we use this. - Entities.addModelEntity(name, url, "", shapeType, dynamic, collisionless, addPosition, gravity); + Entities.addModelEntity(name, url, "", shapeType, dynamic, collisionless, grabbable, addPosition, gravity); } } }); diff --git a/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml b/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml index 6bf8f8a5d5..0eeb252049 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml @@ -186,6 +186,8 @@ Rectangle { return; } + var grabbable = MenuInterface.isOptionChecked("Create Entities As Grabbable (except Zones, Particles, and Lights)"); + if (defaultURL.endsWith(".jpg") || defaultURL.endsWith(".png")) { var name = assetProxyModel.data(treeView.selection.currentIndex); var modelURL = "https://hifi-content.s3.amazonaws.com/DomainContent/production/default-image-model.fbx"; @@ -195,7 +197,7 @@ Rectangle { var collisionless = true; var position = Vec3.sum(MyAvatar.position, Vec3.multiply(2, Quat.getForward(MyAvatar.orientation))); var gravity = Vec3.multiply(Vec3.fromPolar(Math.PI / 2, 0), 0); - Entities.addModelEntity(name, modelURL, textures, shapeType, dynamic, collisionless, position, gravity); + Entities.addModelEntity(name, modelURL, textures, shapeType, dynamic, collisionless, grabbable, position, gravity); } else { var SHAPE_TYPE_NONE = 0; var SHAPE_TYPE_SIMPLE_HULL = 1; @@ -281,7 +283,7 @@ Rectangle { print("Asset browser - adding asset " + url + " (" + name + ") to world."); // Entities.addEntity doesn't work from QML, so we use this. - Entities.addModelEntity(name, url, "", shapeType, dynamic, collisionless, addPosition, gravity); + Entities.addModelEntity(name, url, "", shapeType, dynamic, collisionless, grabbable, addPosition, gravity); } } }); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 0bbd2b1c17..a39652cf14 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7325,7 +7325,6 @@ void Application::addAssetToWorldCheckModelSize() { auto name = properties.getName(); auto dimensions = properties.getDimensions(); - const QString GRABBABLE_USER_DATA = "{\"grabbableKey\":{\"grabbable\":true}}"; bool doResize = false; const glm::vec3 DEFAULT_DIMENSIONS = glm::vec3(0.1f, 0.1f, 0.1f); diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 8fd87e068a..ff636f0877 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -38,6 +38,8 @@ #include #include +const QString GRABBABLE_USER_DATA = "{\"grabbableKey\":{\"grabbable\":true}}"; +const QString NOT_GRABBABLE_USER_DATA = "{\"grabbableKey\":{\"grabbable\":false}}"; EntityScriptingInterface::EntityScriptingInterface(bool bidOnSimulationOwnership) : _entityTree(NULL), @@ -303,7 +305,7 @@ bool EntityScriptingInterface::addLocalEntityCopy(EntityItemProperties& properti } QUuid EntityScriptingInterface::addModelEntity(const QString& name, const QString& modelUrl, const QString& textures, - const QString& shapeType, bool dynamic, bool collisionless, + const QString& shapeType, bool dynamic, bool collisionless, bool grabbable, const glm::vec3& position, const glm::vec3& gravity) { _activityTracking.addedEntityCount++; @@ -314,6 +316,7 @@ QUuid EntityScriptingInterface::addModelEntity(const QString& name, const QStrin properties.setShapeTypeFromString(shapeType); properties.setDynamic(dynamic); properties.setCollisionless(collisionless); + properties.setUserData(grabbable ? GRABBABLE_USER_DATA : NOT_GRABBABLE_USER_DATA); properties.setPosition(position); properties.setGravity(gravity); if (!textures.isEmpty()) { diff --git a/libraries/entities/src/EntityScriptingInterface.h b/libraries/entities/src/EntityScriptingInterface.h index a166d513d3..3e0f040fd6 100644 --- a/libraries/entities/src/EntityScriptingInterface.h +++ b/libraries/entities/src/EntityScriptingInterface.h @@ -39,6 +39,9 @@ class EntityTree; class MeshProxy; +extern const QString GRABBABLE_USER_DATA; +extern const QString NOT_GRABBABLE_USER_DATA; + // helper factory to compose standardized, async metadata queries for "magic" Entity properties // like .script and .serverScripts. This is used for automated testing of core scripting features // as well as to provide early adopters a self-discoverable, consistent way to diagnose common @@ -237,7 +240,7 @@ public slots: /// temporary method until addEntity can be used from QJSEngine /// Deliberately not adding jsdoc, only used internally. Q_INVOKABLE QUuid addModelEntity(const QString& name, const QString& modelUrl, const QString& textures, const QString& shapeType, bool dynamic, - bool collisionless, const glm::vec3& position, const glm::vec3& gravity); + bool collisionless, bool grabbable, const glm::vec3& position, const glm::vec3& gravity); /**jsdoc * Create a clone of an entity. A clone can be created by a client that doesn't have rez permissions in the current domain. From 8153e660bf2bc8951ddaf90c8c16dd0c01e636a6 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 9 Aug 2018 08:54:28 -0700 Subject: [PATCH 236/332] don't simulate/animateScaleChanges for fading avatars --- interface/src/avatar/AvatarManager.cpp | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index d21f9de554..bb598f0261 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -277,21 +277,6 @@ void AvatarManager::updateOtherAvatars(float deltaTime) { sortedAvatars.pop(); } - if (_shouldRender) { - if (!_avatarsToFade.empty()) { - QReadLocker lock(&_hashLock); - QVector::iterator itr = _avatarsToFade.begin(); - while (itr != _avatarsToFade.end() && usecTimestampNow() > updateExpiry) { - auto avatar = std::static_pointer_cast(*itr); - avatar->animateScaleChanges(deltaTime); - avatar->simulate(deltaTime, true); - avatar->updateRenderItem(transaction); - ++itr; - } - } - qApp->getMain3DScene()->enqueueTransaction(transaction); - } - _numAvatarsUpdated = numAvatarsUpdated; _numAvatarsNotUpdated = numAVatarsNotUpdated; From 4248f342b44275f842731aad88a24e02ac4c9581 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 9 Aug 2018 10:22:09 -0700 Subject: [PATCH 237/332] Fix MS17469: Fix conditionals for needing more paginated results when ListView changes --- interface/resources/qml/hifi/models/PSFListModel.qml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/models/PSFListModel.qml b/interface/resources/qml/hifi/models/PSFListModel.qml index ad9fbcc8ef..71b253fb27 100644 --- a/interface/resources/qml/hifi/models/PSFListModel.qml +++ b/interface/resources/qml/hifi/models/PSFListModel.qml @@ -57,9 +57,9 @@ ListModel { // Not normally set directly, but rather by giving a truthy argument to getFirstPage(true); property bool delayedClear: false; function resetModel() { - if (!delayedClear) { root.clear(); } currentPageToRetrieve = 1; retrievedAtLeastOnePage = false; + if (!delayedClear) { root.clear(); } totalPages = 0; totalEntries = 0; } @@ -94,11 +94,13 @@ ListModel { function needsMoreHorizontalResults() { return flickable && currentPageToRetrieve > 0 + && retrievedAtLeastOnePage && flickable.contentWidth < flickable.width; } function needsMoreVerticalResults() { return flickable && currentPageToRetrieve > 0 + && retrievedAtLeastOnePage && flickable.contentHeight < flickable.height; } function getNextPageIfNotEnoughHorizontalResults() { From a6d944e0347f3f4b94be658ff49d45d7e5daa2a6 Mon Sep 17 00:00:00 2001 From: David Back Date: Thu, 9 Aug 2018 10:32:34 -0700 Subject: [PATCH 238/332] use alpha 1 for edit handles --- scripts/system/libraries/entitySelectionTool.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/system/libraries/entitySelectionTool.js b/scripts/system/libraries/entitySelectionTool.js index b04f7f981b..7f004ae455 100644 --- a/scripts/system/libraries/entitySelectionTool.js +++ b/scripts/system/libraries/entitySelectionTool.js @@ -494,6 +494,7 @@ SelectionDisplay = (function() { that.replaceCollisionsAfterStretch = false; var handlePropertiesTranslateArrowCones = { + alpha: 1, shape: "Cone", solid: true, visible: false, @@ -501,6 +502,7 @@ SelectionDisplay = (function() { drawInFront: true }; var handlePropertiesTranslateArrowCylinders = { + alpha: 1, shape: "Cylinder", solid: true, visible: false, @@ -577,6 +579,7 @@ SelectionDisplay = (function() { }); var handlePropertiesStretchSpheres = { + alpha: 1, shape: "Sphere", solid: true, visible: false, @@ -606,6 +609,7 @@ SelectionDisplay = (function() { Overlays.editOverlay(handleStretchZPanel, { color: COLOR_BLUE }); var handlePropertiesScaleCubes = { + alpha: 1, size: 0.025, color: COLOR_SCALE_CUBE, solid: true, @@ -624,6 +628,7 @@ SelectionDisplay = (function() { var handleScaleRTFCube = Overlays.addOverlay("cube", handlePropertiesScaleCubes); // ( x, y, z) var handlePropertiesScaleEdge = { + alpha: 1, color: COLOR_SCALE_EDGE, visible: false, ignoreRayIntersection: true, @@ -644,6 +649,7 @@ SelectionDisplay = (function() { var handleScaleFLEdge = Overlays.addOverlay("line3d", handlePropertiesScaleEdge); var handleCloner = Overlays.addOverlay("cube", { + alpha: 1, size: 0.05, color: COLOR_GREEN, solid: true, From 8c121a531d3ac70fdaf0ace6cf229ebb03bcd206 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Thu, 9 Aug 2018 10:35:15 -0700 Subject: [PATCH 239/332] Turn attachments into avatar entities --- interface/src/avatar/MyAvatar.cpp | 175 +++++++++++++++++++++++++---- interface/src/avatar/MyAvatar.h | 18 ++- libraries/avatars/src/AvatarData.h | 10 +- 3 files changed, 176 insertions(+), 27 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 3f738ea4cb..bd05bb284e 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1688,16 +1688,6 @@ void MyAvatar::useFullAvatarURL(const QUrl& fullAvatarURL, const QString& modelN markIdentityDataChanged(); } -void MyAvatar::setAttachmentData(const QVector& attachmentData) { - if (QThread::currentThread() != thread()) { - BLOCKING_INVOKE_METHOD(this, "setAttachmentData", - Q_ARG(const QVector, attachmentData)); - return; - } - Avatar::setAttachmentData(attachmentData); - emit attachmentsChanged(); -} - glm::vec3 MyAvatar::getSkeletonPosition() const { CameraMode mode = qApp->getCamera().getMode(); if (mode == CAMERA_MODE_THIRD_PERSON || mode == CAMERA_MODE_INDEPENDENT) { @@ -1968,20 +1958,165 @@ void MyAvatar::attach(const QString& modelURL, const QString& jointName, float scale, bool isSoft, bool allowDuplicates, bool useSaved) { if (QThread::currentThread() != thread()) { - Avatar::attach(modelURL, jointName, translation, rotation, scale, isSoft, allowDuplicates, useSaved); + BLOCKING_INVOKE_METHOD(this, "attach", + Q_ARG(const QString&, modelURL), + Q_ARG(const QString&, jointName), + Q_ARG(const glm::vec3&, translation), + Q_ARG(const glm::quat&, rotation), + Q_ARG(float, scale), + Q_ARG(bool, isSoft), + Q_ARG(bool, allowDuplicates), + Q_ARG(bool, useSaved) + ); return; } - if (useSaved) { - AttachmentData attachment = loadAttachmentData(modelURL, jointName); - if (attachment.isValid()) { - Avatar::attach(modelURL, attachment.jointName, - attachment.translation, attachment.rotation, - attachment.scale, attachment.isSoft, - allowDuplicates, useSaved); - return; + AttachmentData data; + data.modelURL = modelURL; + data.jointName = jointName; + data.translation = translation; + data.rotation = rotation; + data.scale = scale; + data.isSoft = isSoft; + EntityItemProperties properties; + attachmentDataToEntityProperties(data, properties); + DependencyManager::get()->addEntity(properties, true); + emit attachmentsChanged(); +} + +void MyAvatar::detachOne(const QString& modelURL, const QString& jointName) { + if (QThread::currentThread() != thread()) { + BLOCKING_INVOKE_METHOD(this, "detachOne", + Q_ARG(const QString&, modelURL), + Q_ARG(const QString&, jointName) + ); + return; + } + QUuid entityID; + if (findAvatarEntity(modelURL, jointName, entityID)) { + DependencyManager::get()->deleteEntity(entityID); + } + emit attachmentsChanged(); +} + +void MyAvatar::detachAll(const QString& modelURL, const QString& jointName) { + if (QThread::currentThread() != thread()) { + BLOCKING_INVOKE_METHOD(this, "detachAll", + Q_ARG(const QString&, modelURL), + Q_ARG(const QString&, jointName) + ); + return; + } + QUuid entityID; + while (findAvatarEntity(modelURL, jointName, entityID)) { + DependencyManager::get()->deleteEntity(entityID); + } + emit attachmentsChanged(); +} + +void MyAvatar::setAttachmentData(const QVector& attachmentData) { + if (QThread::currentThread() != thread()) { + BLOCKING_INVOKE_METHOD(this, "setAttachmentData", + Q_ARG(const QVector&, attachmentData)); + return; + } + std::vector newEntitiesProperties; + for (auto& data : attachmentData) { + QUuid entityID; + EntityItemProperties properties; + if (findAvatarEntity(data.modelURL.toString(), data.jointName, entityID)) { + properties = DependencyManager::get()->getEntityProperties(entityID); + } + attachmentDataToEntityProperties(data, properties); + newEntitiesProperties.push_back(properties); + } + removeAvatarEntities(); + for (auto& properties : newEntitiesProperties) { + DependencyManager::get()->addEntity(properties, true); + } + emit attachmentsChanged(); +} + +QVector MyAvatar::getAttachmentData() const { + QVector avatarData; + auto avatarEntities = getAvatarEntityData(); + AvatarEntityMap::const_iterator dataItr = avatarEntities.begin(); + while (dataItr != avatarEntities.end()) { + QUuid entityID = dataItr.key(); + auto properties = DependencyManager::get()->getEntityProperties(entityID); + AttachmentData data = entityPropertiesToAttachmentData(properties); + avatarData.append(data); + dataItr++; + } + return avatarData; +} + +QVariantList MyAvatar::getAttachmentsVariant() const { + QVariantList result; + for (const auto& attachment : getAttachmentData()) { + result.append(attachment.toVariant()); + } + return result; +} + +void MyAvatar::setAttachmentsVariant(const QVariantList& variant) { + if (QThread::currentThread() != thread()) { + BLOCKING_INVOKE_METHOD(this, "setAttachmentsVariant", + Q_ARG(const QVariantList&, variant)); + return; + } + QVector newAttachments; + newAttachments.reserve(variant.size()); + for (const auto& attachmentVar : variant) { + AttachmentData attachment; + if (attachment.fromVariant(attachmentVar)) { + newAttachments.append(attachment); } } - Avatar::attach(modelURL, jointName, translation, rotation, scale, isSoft, allowDuplicates, useSaved); + setAttachmentData(newAttachments); +} + +bool MyAvatar::findAvatarEntity(const QString& modelURL, const QString& jointName, QUuid& entityID) { + auto avatarEntities = getAvatarEntityData(); + AvatarEntityMap::const_iterator dataItr = avatarEntities.begin(); + while (dataItr != avatarEntities.end()) { + entityID = dataItr.key(); + auto props = DependencyManager::get()->getEntityProperties(entityID); + if (props.getModelURL() == modelURL && + (jointName.isEmpty() || props.getParentJointIndex() == getJointIndex(jointName))) { + return true; + } + dataItr++; + } + return false; +} + +AttachmentData MyAvatar::entityPropertiesToAttachmentData(const EntityItemProperties& properties) const { + AttachmentData data; + data.modelURL = properties.getModelURL(); + data.translation = properties.getLocalPosition(); + data.rotation = properties.getLocalRotation(); + data.isSoft = properties.getRelayParentJoints(); + quint16 jointIndex = properties.getParentJointIndex(); + if (jointIndex > -1 && jointIndex < getJointNames().size()) { + data.jointName = getJointNames()[jointIndex]; + } + return data; +} + +void MyAvatar::attachmentDataToEntityProperties(const AttachmentData& data, EntityItemProperties& properties) { + QString url = data.modelURL.toString(); + properties.setName(QFileInfo(url).baseName()); + properties.setType(EntityTypes::Model); + properties.setParentID(getID()); + properties.setOwningAvatarID(getID()); + properties.setLocalPosition(data.translation); + properties.setLocalRotation(data.rotation); + if (!data.isSoft) { + properties.setParentJointIndex(getJointIndex(data.jointName)); + } else { + properties.setRelayParentJoints(true); + } + properties.setModelURL(url); } void MyAvatar::initHeadBones() { diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index d36e43ca25..bda6a817ff 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -865,8 +865,6 @@ public: void resetFullAvatarURL(); - virtual void setAttachmentData(const QVector& attachmentData) override; - MyCharacterController* getCharacterController() { return &_characterController; } const MyCharacterController* getCharacterController() const { return &_characterController; } @@ -1082,6 +1080,12 @@ public: float computeStandingHeightMode(const controller::Pose& head); glm::quat computeAverageHeadRotation(const controller::Pose& head); + virtual void setAttachmentData(const QVector& attachmentData) override; + virtual QVector getAttachmentData() const override; + + virtual QVariantList getAttachmentsVariant() const override; + virtual void setAttachmentsVariant(const QVariantList& variant) override; + public slots: /**jsdoc @@ -1506,11 +1510,21 @@ private: void setScriptedMotorTimescale(float timescale); void setScriptedMotorFrame(QString frame); void setScriptedMotorMode(QString mode); + + // Attachments virtual void attach(const QString& modelURL, const QString& jointName = QString(), const glm::vec3& translation = glm::vec3(), const glm::quat& rotation = glm::quat(), float scale = 1.0f, bool isSoft = false, bool allowDuplicates = false, bool useSaved = true) override; + virtual void detachOne(const QString& modelURL, const QString& jointName = QString()) override; + virtual void detachAll(const QString& modelURL, const QString& jointName = QString()) override; + + // Attachments/Avatar Entity + void attachmentDataToEntityProperties(const AttachmentData& data, EntityItemProperties& properties); + AttachmentData entityPropertiesToAttachmentData(const EntityItemProperties& properties) const; + bool findAvatarEntity(const QString& modelURL, const QString& jointName, QUuid& entityID); + bool cameraInsideHead(const glm::vec3& cameraPosition) const; void updateEyeContactTarget(float deltaTime); diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 0f850aaf24..147d303871 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -895,14 +895,14 @@ public: * @returns {object} */ // FIXME: Can this name be improved? Can it be deprecated? - Q_INVOKABLE QVariantList getAttachmentsVariant() const; + Q_INVOKABLE virtual QVariantList getAttachmentsVariant() const; /**jsdoc * @function MyAvatar.setAttachmentsVariant * @param {object} variant */ // FIXME: Can this name be improved? Can it be deprecated? - Q_INVOKABLE void setAttachmentsVariant(const QVariantList& variant); + Q_INVOKABLE virtual void setAttachmentsVariant(const QVariantList& variant); /**jsdoc @@ -969,7 +969,7 @@ public: * print (attachments[i].modelURL); * } */ - Q_INVOKABLE QVector getAttachmentData() const; + Q_INVOKABLE virtual QVector getAttachmentData() const; /**jsdoc * Set all models currently attached to your avatar. For example, if you retrieve attachment data using @@ -1040,7 +1040,7 @@ public: * @param {string} [jointName=""] - The name of the joint to detach the model from. If "", then the most * recently attached model is removed from which ever joint it was attached to. */ - Q_INVOKABLE void detachOne(const QString& modelURL, const QString& jointName = QString()); + Q_INVOKABLE virtual void detachOne(const QString& modelURL, const QString& jointName = QString()); /**jsdoc * Detach all instances of a particular model from either a specific joint or all joints. @@ -1049,7 +1049,7 @@ public: * @param {string} [jointName=""] - The name of the joint to detach the model from. If "", then the model is * detached from all joints. */ - Q_INVOKABLE void detachAll(const QString& modelURL, const QString& jointName = QString()); + Q_INVOKABLE virtual void detachAll(const QString& modelURL, const QString& jointName = QString()); QString getSkeletonModelURLFromScript() const { return _skeletonModelURL.toString(); } void setSkeletonModelURLFromScript(const QString& skeletonModelString) { setSkeletonModelURL(QUrl(skeletonModelString)); } From 2a6ff90a2ce320118e3a33f0a4fb05a1d91a4fcb Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Thu, 9 Aug 2018 11:30:10 -0700 Subject: [PATCH 240/332] fixing web tablet error --- scripts/system/libraries/WebTablet.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index a5bc586f0d..c201a251d0 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -596,7 +596,7 @@ WebTablet.prototype.scheduleMouseMoveProcessor = function() { } }; -WebTablet.prototype.handleMouseButtonHover = function(x, y) { +WebTablet.prototype.handleHomeButtonHover = function(x, y) { var pickRay = Camera.computePickRay(x, y); var entityPickResults; var homebuttonHovered = false; From e00dbcecc6e39103ca696b7eef44de864f49b2b5 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 9 Aug 2018 11:33:26 -0700 Subject: [PATCH 241/332] Fix MS17495: Initially wire sendMessage to ignore in appUi module --- scripts/modules/appUi.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/modules/appUi.js b/scripts/modules/appUi.js index db81af3755..0657b57826 100644 --- a/scripts/modules/appUi.js +++ b/scripts/modules/appUi.js @@ -91,7 +91,7 @@ function AppUi(properties) { icon: that.normalButton, activeIcon: that.activeButton, text: that.buttonName, - sortOrder: that.sortOrder + sortOrder: that.sortOrder || undefined }); that.ignore = function ignore() { }; @@ -126,6 +126,7 @@ function AppUi(properties) { // (Although injected javascript still has to use JSON.stringify/JSON.parse.) that.sendToHtml = function (messageObject) { that.tablet.emitScriptEvent(JSON.stringify(messageObject)); }; that.fromHtml = function (messageString) { that.onMessage(JSON.parse(messageString)); }; + that.sendMessage = that.ignore; that.wireEventBridge = function wireEventBridge(on) { // Uniquivocally sets that.sendMessage(messageObject) to do the right thing. // Sets hasEventBridge and wires onMessage to eventSignal as appropriate, IFF onMessage defined. From 394f93f39c0fa850d9373562807528906e625e31 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 9 Aug 2018 11:42:48 -0700 Subject: [PATCH 242/332] Fix SortOrder --- scripts/modules/appUi.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/scripts/modules/appUi.js b/scripts/modules/appUi.js index 0657b57826..6d2986768a 100644 --- a/scripts/modules/appUi.js +++ b/scripts/modules/appUi.js @@ -87,12 +87,18 @@ function AppUi(properties) { defaultButton('activeButton', 'a.svg'); defaultButton('normalMessagesButton', 'i-msg.svg'); defaultButton('activeMessagesButton', 'a-msg.svg'); - that.button = that.tablet.addButton({ + var buttonOptions = { icon: that.normalButton, activeIcon: that.activeButton, - text: that.buttonName, - sortOrder: that.sortOrder || undefined - }); + text: that.buttonName + }; + // `TabletScriptingInterface` looks for the presence of a `sortOrder` key. + // What it SHOULD do is look to see if the value inside that key is defined. + // To get around the current code, we do this instead. + if (that.sortOrder) { + buttonOptions.sortOrder = that.sortOrder; + } + that.button = that.tablet.addButton(buttonOptions); that.ignore = function ignore() { }; // Handlers From c0e2b3a24026d7642a66fbf0dfcbadce52877abf Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 9 Aug 2018 11:49:29 -0700 Subject: [PATCH 243/332] Happening Now -> Featured --- interface/resources/qml/hifi/Pal.qml | 1 + interface/resources/qml/hifi/tablet/TabletAddressDialog.qml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/Pal.qml b/interface/resources/qml/hifi/Pal.qml index 915213508c..dc5aa9dade 100644 --- a/interface/resources/qml/hifi/Pal.qml +++ b/interface/resources/qml/hifi/Pal.qml @@ -1046,6 +1046,7 @@ Rectangle { enabled: myData.userName !== "Unknown user" && !userInfoViewer.visible; hoverEnabled: true; onClicked: { + // TODO: Change language from "Happening Now" to something else (or remove entirely) popupComboDialog("Set your availability:", availabilityComboBox.availabilityStrings, ["Your username will be visible in everyone's 'Nearby' list. Anyone will be able to jump to your location from within the 'Nearby' list.", diff --git a/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml b/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml index 5dce74f2dd..c9d05aea51 100644 --- a/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml +++ b/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml @@ -320,7 +320,7 @@ StackView { width: parent.width; cardWidth: 312 + (2 * 4); cardHeight: 163 + (2 * 4); - labelText: 'HAPPENING NOW'; + labelText: 'FEATURED'; actions: 'announcement'; filter: addressLine.text; goFunction: goCard; From 9ca0ee05dcf83ee74d3c2af493fa5fe5548ca74d Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Thu, 9 Aug 2018 12:13:03 -0700 Subject: [PATCH 244/332] Fix wanings --- interface/src/avatar/MyAvatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index bd05bb284e..7067c1c791 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2096,7 +2096,7 @@ AttachmentData MyAvatar::entityPropertiesToAttachmentData(const EntityItemProper data.translation = properties.getLocalPosition(); data.rotation = properties.getLocalRotation(); data.isSoft = properties.getRelayParentJoints(); - quint16 jointIndex = properties.getParentJointIndex(); + int jointIndex = (int)properties.getParentJointIndex(); if (jointIndex > -1 && jointIndex < getJointNames().size()) { data.jointName = getJointNames()[jointIndex]; } From bd4a3a5b327aa996cffe8f36f0a37f5d9de87d0f Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Thu, 9 Aug 2018 12:20:36 -0700 Subject: [PATCH 245/332] remove unused uniform buffer from polylines --- .../src/RenderablePolyLineEntityItem.cpp | 12 ------------ .../src/RenderablePolyLineEntityItem.h | 1 - libraries/entities-renderer/src/paintStroke.slf | 11 ----------- libraries/entities-renderer/src/paintStroke.slv | 4 +--- 4 files changed, 1 insertion(+), 27 deletions(-) diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp index 25e8e859aa..743df477ac 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp @@ -29,18 +29,12 @@ using namespace render::entities; static uint8_t CUSTOM_PIPELINE_NUMBER { 0 }; static const int32_t PAINTSTROKE_TEXTURE_SLOT { 0 }; -// FIXME: This is interfering with the uniform buffers in DeferredLightingEffect.cpp, so use 12 to avoid collisions -static const int32_t PAINTSTROKE_UNIFORM_SLOT { 12 }; static gpu::Stream::FormatPointer polylineFormat; static gpu::PipelinePointer polylinePipeline; #ifdef POLYLINE_ENTITY_USE_FADE_EFFECT static gpu::PipelinePointer polylineFadePipeline; #endif -struct PolyLineUniforms { - glm::vec3 color; -}; - static render::ShapePipelinePointer shapePipelineFactory(const render::ShapePlumber& plumber, const render::ShapeKey& key, gpu::Batch& batch) { if (!polylinePipeline) { gpu::ShaderPointer program = gpu::Shader::createProgram(shader::entities_renderer::program::paintStroke); @@ -84,8 +78,6 @@ PolyLineEntityRenderer::PolyLineEntityRenderer(const EntityItemPointer& entity) polylineFormat->setAttribute(gpu::Stream::COLOR, 0, gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::RGB), offsetof(Vertex, color)); }); - PolyLineUniforms uniforms; - _uniformBuffer = std::make_shared(sizeof(PolyLineUniforms), (const gpu::Byte*) &uniforms); _verticesBuffer = std::make_shared(); } @@ -126,9 +118,6 @@ void PolyLineEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& } void PolyLineEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPointer& entity) { - PolyLineUniforms uniforms; - uniforms.color = toGlm(entity->getXColor()); - memcpy(&_uniformBuffer.edit(), &uniforms, sizeof(PolyLineUniforms)); auto pointsChanged = entity->pointsChanged(); auto strokeWidthsChanged = entity->strokeWidthsChanged(); auto normalsChanged = entity->normalsChanged(); @@ -274,7 +263,6 @@ void PolyLineEntityRenderer::doRender(RenderArgs* args) { gpu::Batch& batch = *args->_batch; batch.setModelTransform(_polylineTransform); - batch.setUniformBuffer(PAINTSTROKE_UNIFORM_SLOT, _uniformBuffer); if (_texture && _texture->isLoaded()) { batch.setResourceTexture(PAINTSTROKE_TEXTURE_SLOT, _texture->getGPUTexture()); diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.h b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.h index f460baac59..3ba26c74df 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.h +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.h @@ -65,7 +65,6 @@ protected: QVector _lastStrokeColors; QVector _lastStrokeWidths; gpu::BufferPointer _verticesBuffer; - gpu::BufferView _uniformBuffer; uint32_t _numVertices { 0 }; bool _empty{ true }; diff --git a/libraries/entities-renderer/src/paintStroke.slf b/libraries/entities-renderer/src/paintStroke.slf index 718e4608b0..211685a9ba 100644 --- a/libraries/entities-renderer/src/paintStroke.slf +++ b/libraries/entities-renderer/src/paintStroke.slf @@ -14,7 +14,6 @@ <@include DeferredBufferWrite.slh@> - // the albedo texture layout(binding=0) uniform sampler2D originalTexture; @@ -23,17 +22,7 @@ layout(location=0) in vec3 interpolatedNormal; layout(location=1) in vec2 varTexcoord; layout(location=2) in vec4 varColor; -struct PolyLineUniforms { - vec3 color; -}; - -layout(binding=0) uniform polyLineBuffer { - PolyLineUniforms polyline; -}; - void main(void) { - - vec4 texel = texture(originalTexture, varTexcoord); int frontCondition = 1 -int(gl_FrontFacing) * 2; vec3 color = varColor.rgb; diff --git a/libraries/entities-renderer/src/paintStroke.slv b/libraries/entities-renderer/src/paintStroke.slv index 5e7d9f0ae3..ecf52d61cf 100644 --- a/libraries/entities-renderer/src/paintStroke.slv +++ b/libraries/entities-renderer/src/paintStroke.slv @@ -26,13 +26,11 @@ layout(location=1) out vec2 varTexcoord; layout(location=2) out vec4 varColor; void main(void) { - varTexcoord = inTexCoord0.st; - + // pass along the diffuse color varColor = color_sRGBAToLinear(inColor); - // standard transform TransformCamera cam = getTransformCamera(); TransformObject obj = getTransformObject(); From 44a9b1df0eb6be8f3d1cf72516ad46d4bce0d8b1 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 9 Aug 2018 12:30:42 -0700 Subject: [PATCH 246/332] Fix choice of target backend in TextureCache on OSX --- .../model-networking/src/model-networking/TextureCache.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/model-networking/src/model-networking/TextureCache.cpp b/libraries/model-networking/src/model-networking/TextureCache.cpp index b9def7f5b7..aa00116200 100644 --- a/libraries/model-networking/src/model-networking/TextureCache.cpp +++ b/libraries/model-networking/src/model-networking/TextureCache.cpp @@ -1173,7 +1173,11 @@ void ImageReader::read() { gpu::BackendTarget target = gpu::BackendTarget::GLES32; #else constexpr bool shouldCompress = false; +#ifdef Q_OS_MAC + gpu::BackendTarget target = gpu::BackendTarget::GL41; +#else gpu::BackendTarget target = gpu::BackendTarget::GL45; +#endif #endif texture = image::processImage(std::move(buffer), _url.toString().toStdString(), _maxNumPixels, networkTexture->getTextureType(), shouldCompress, target); From a0dfd76f064dd5f53d8c9bf2aa387755cfa03f32 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 6 Aug 2018 15:13:00 -0700 Subject: [PATCH 247/332] variable texture support --- .../src/gpu/gles/GLESBackendTexture.cpp | 157 +++--------------- 1 file changed, 23 insertions(+), 134 deletions(-) diff --git a/libraries/gpu-gles/src/gpu/gles/GLESBackendTexture.cpp b/libraries/gpu-gles/src/gpu/gles/GLESBackendTexture.cpp index 911dfb8bb8..23dc271af9 100644 --- a/libraries/gpu-gles/src/gpu/gles/GLESBackendTexture.cpp +++ b/libraries/gpu-gles/src/gpu/gles/GLESBackendTexture.cpp @@ -65,20 +65,24 @@ GLTexture* GLESBackend::syncGPUObject(const TexturePointer& texturePointer) { object = new GLESAttachmentTexture(shared_from_this(), texture); break; - case TextureUsageType::RESOURCE: -// FIXME disabling variable allocation textures for now, while debugging android rendering -// and crashes -#if 0 - qCDebug(gpugllogging) << "variable / Strict texture " << texture.source().c_str(); - object = new GLESResourceTexture(shared_from_this(), texture); - GLVariableAllocationSupport::addMemoryManagedTexture(texturePointer); - break; -#endif case TextureUsageType::STRICT_RESOURCE: qCDebug(gpugllogging) << "Strict texture " << texture.source().c_str(); object = new GLESStrictResourceTexture(shared_from_this(), texture); break; + case TextureUsageType::RESOURCE: { + auto &transferEngine = _textureManagement._transferEngine; + if (transferEngine->allowCreate()) { + object = new GLESResourceTexture(shared_from_this(), texture); + transferEngine->addMemoryManagedTexture(texturePointer); + } else { + auto fallback = texturePointer->getFallbackTexture(); + if (fallback) { + object = static_cast(syncGPUObject(fallback)); + } + } + break; + } default: Q_UNREACHABLE(); } @@ -195,7 +199,6 @@ Size GLESTexture::copyMipFaceLinesFromTexture(uint16_t mip, uint8_t face, const glTexSubImage2D(target, mip, 0, yOffset, size.x, size.y, format, type, sourcePointer); } } else { - // TODO: implement for android assert(false); amountCopied = 0; } @@ -385,7 +388,6 @@ void GLESVariableAllocationTexture::allocateStorage(uint16 allocatedMip) { const auto totalMips = _gpuObject.getNumMips(); const auto mips = totalMips - _allocatedMip; withPreservedTexture([&] { - // FIXME technically GL 4.2, but OSX includes the ARB_texture_storage extension glTexStorage2D(_target, mips, texelFormat.internalFormat, dimensions.x, dimensions.y); CHECK_GL_ERROR(); }); auto mipLevels = _gpuObject.getNumMips(); @@ -426,139 +428,26 @@ void GLESVariableAllocationTexture::syncSampler() const { }); } - -void copyUncompressedTexGPUMem(const gpu::Texture& texture, GLenum texTarget, GLuint srcId, GLuint destId, uint16_t numMips, uint16_t srcMipOffset, uint16_t destMipOffset, uint16_t populatedMips) { - // DestID must be bound to the GLESBackend::RESOURCE_TRANSFER_TEX_UNIT - - GLuint fbo { 0 }; - glGenFramebuffers(1, &fbo); - glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo); - - uint16_t mips = numMips; - // copy pre-existing mips - for (uint16_t mip = populatedMips; mip < mips; ++mip) { +void copyTexGPUMem(const gpu::Texture& texture, GLenum texTarget, GLuint srcId, GLuint destId, uint16_t numMips, uint16_t srcMipOffset, uint16_t destMipOffset, uint16_t populatedMips) { + for (uint16_t mip = populatedMips; mip < numMips; ++mip) { auto mipDimensions = texture.evalMipDimensions(mip); uint16_t targetMip = mip - destMipOffset; uint16_t sourceMip = mip - srcMipOffset; - for (GLenum target : GLTexture::getFaceTargets(texTarget)) { - glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, target, srcId, sourceMip); - (void)CHECK_GL_ERROR(); - glCopyTexSubImage2D(target, targetMip, 0, 0, 0, 0, mipDimensions.x, mipDimensions.y); + auto faces = GLTexture::getFaceCount(texTarget); + for (uint8_t face = 0; face < faces; ++face) { + glCopyImageSubData( + srcId, texTarget, sourceMip, 0, 0, face, + destId, texTarget, targetMip, 0, 0, face, + mipDimensions.x, mipDimensions.y, 1 + ); (void)CHECK_GL_ERROR(); } } - - // destroy the transfer framebuffer - glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); - glDeleteFramebuffers(1, &fbo); -} - -void copyCompressedTexGPUMem(const gpu::Texture& texture, GLenum texTarget, GLuint srcId, GLuint destId, uint16_t numMips, uint16_t srcMipOffset, uint16_t destMipOffset, uint16_t populatedMips) { - // DestID must be bound to the GLESBackend::RESOURCE_TRANSFER_TEX_UNIT - - struct MipDesc { - GLint _faceSize; - GLint _size; - GLint _offset; - GLint _width; - GLint _height; - }; - std::vector sourceMips(numMips); - - std::vector bytes; - - glActiveTexture(GL_TEXTURE0 + GLESBackend::RESOURCE_TRANSFER_EXTRA_TEX_UNIT); - glBindTexture(texTarget, srcId); - const auto& faceTargets = GLTexture::getFaceTargets(texTarget); - GLint internalFormat { 0 }; - - // Collect the mip description from the source texture - GLint bufferOffset { 0 }; - for (uint16_t mip = populatedMips; mip < numMips; ++mip) { - auto& sourceMip = sourceMips[mip]; - - uint16_t sourceLevel = mip - srcMipOffset; - - // Grab internal format once - if (internalFormat == 0) { - glGetTexLevelParameteriv(faceTargets[0], sourceLevel, GL_TEXTURE_INTERNAL_FORMAT, &internalFormat); - } - - // Collect the size of the first face, and then compute the total size offset needed for this mip level - auto mipDimensions = texture.evalMipDimensions(mip); - sourceMip._width = mipDimensions.x; - sourceMip._height = mipDimensions.y; -#ifdef DEBUG_COPY - glGetTexLevelParameteriv(faceTargets.front(), sourceLevel, GL_TEXTURE_WIDTH, &sourceMip._width); - glGetTexLevelParameteriv(faceTargets.front(), sourceLevel, GL_TEXTURE_HEIGHT, &sourceMip._height); -#endif - // TODO: retrieve the size of a compressed image - assert(false); - //glGetTexLevelParameteriv(faceTargets.front(), sourceLevel, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &sourceMip._faceSize); - sourceMip._size = (GLint)faceTargets.size() * sourceMip._faceSize; - sourceMip._offset = bufferOffset; - bufferOffset += sourceMip._size; - } - (void)CHECK_GL_ERROR(); - - // Allocate the PBO to accomodate for all the mips to copy - GLuint pbo { 0 }; - glGenBuffers(1, &pbo); - glBindBuffer(GL_PIXEL_PACK_BUFFER, pbo); - glBufferData(GL_PIXEL_PACK_BUFFER, bufferOffset, nullptr, GL_STATIC_COPY); - (void)CHECK_GL_ERROR(); - - // Transfer from source texture to pbo - for (uint16_t mip = populatedMips; mip < numMips; ++mip) { - auto& sourceMip = sourceMips[mip]; - - uint16_t sourceLevel = mip - srcMipOffset; - - for (GLint f = 0; f < (GLint)faceTargets.size(); f++) { - // TODO: implement for android - //glGetCompressedTexImage(faceTargets[f], sourceLevel, BUFFER_OFFSET(sourceMip._offset + f * sourceMip._faceSize)); - } - (void)CHECK_GL_ERROR(); - } - - // Now populate the new texture from the pbo - glBindTexture(texTarget, 0); - glBindBuffer(GL_PIXEL_PACK_BUFFER, 0); - glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pbo); - - glActiveTexture(GL_TEXTURE0 + GLESBackend::RESOURCE_TRANSFER_TEX_UNIT); - - // Transfer from pbo to new texture - for (uint16_t mip = populatedMips; mip < numMips; ++mip) { - auto& sourceMip = sourceMips[mip]; - - uint16_t destLevel = mip - destMipOffset; - - for (GLint f = 0; f < (GLint)faceTargets.size(); f++) { -#ifdef DEBUG_COPY - GLint destWidth, destHeight, destSize; - glGetTexLevelParameteriv(faceTargets.front(), destLevel, GL_TEXTURE_WIDTH, &destWidth); - glGetTexLevelParameteriv(faceTargets.front(), destLevel, GL_TEXTURE_HEIGHT, &destHeight); - glGetTexLevelParameteriv(faceTargets.front(), destLevel, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &destSize); -#endif - glCompressedTexSubImage2D(faceTargets[f], destLevel, 0, 0, sourceMip._width, sourceMip._height, internalFormat, - sourceMip._faceSize, BUFFER_OFFSET(sourceMip._offset + f * sourceMip._faceSize)); - } - } - - glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); - glDeleteBuffers(1, &pbo); } void GLESVariableAllocationTexture::copyTextureMipsInGPUMem(GLuint srcId, GLuint destId, uint16_t srcMipOffset, uint16_t destMipOffset, uint16_t populatedMips) { uint16_t numMips = _gpuObject.getNumMips(); - withPreservedTexture([&] { - if (_texelFormat.isCompressed()) { - copyCompressedTexGPUMem(_gpuObject, _target, srcId, destId, numMips, srcMipOffset, destMipOffset, populatedMips); - } else { - copyUncompressedTexGPUMem(_gpuObject, _target, srcId, destId, numMips, srcMipOffset, destMipOffset, populatedMips); - } - }); + copyTexGPUMem(_gpuObject, _target, srcId, destId, numMips, srcMipOffset, destMipOffset, populatedMips); } size_t GLESVariableAllocationTexture::promote() { From b573591462bebc9c171b250cfb3b84407f669fb5 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Thu, 9 Aug 2018 13:03:56 -0700 Subject: [PATCH 248/332] Updated README.md and minor changes in Auto-tester to match. --- tools/auto-tester/README.md | 78 ++++++++++++++++++++++++- tools/auto-tester/TestRail.PNG | Bin 11223 -> 10972 bytes tools/auto-tester/TestRailSelector.PNG | Bin 0 -> 10626 bytes tools/auto-tester/src/Test.cpp | 4 +- tools/auto-tester/src/ui/AutoTester.ui | 6 +- 5 files changed, 80 insertions(+), 8 deletions(-) create mode 100644 tools/auto-tester/TestRailSelector.PNG diff --git a/tools/auto-tester/README.md b/tools/auto-tester/README.md index f1a2cbddb4..e1a2eeb957 100644 --- a/tools/auto-tester/README.md +++ b/tools/auto-tester/README.md @@ -14,6 +14,7 @@ Auto-tester has 4 functions, separated into 4 tabs: # Create ![](./Create.png) + The Create tab provides functions to create tests from snapshots, MD files, a test outline and recursive scripts. ## Create Tests ### Usage @@ -80,6 +81,7 @@ In this case all recursive scripts, from the selected folder down, are created. Running this function in the tests root folder will create (or update) all the recursive scripts. # Evaluate ![](./Evaluate.png) + The Evaluate tab provides a single function - evaluating the results of a test run. A checkbox (defaulting to checked) runs the evaluation in interactive mode. In this mode - every failure is shown to the user, who can then decide whether to pass the test, fail it or abort the whole evaluation. @@ -102,8 +104,80 @@ Evaluation proceeds in a number of steps: 1. If not in interactive mode, or the user has defined the results as an error, an error is written into the error folder. The error itself is a folder with the 3 images and a small text file containing details. -1. At the end of the test, the folder is zipped and the original folder is deleted. If there are no errors, then there will be no zipped folder. +1. At the end of the test, the folder is zipped and the original folder is deleted. If there are no errors then the zipped folder will be empty. # TestRail ![](./TestRail.png) + +Before updating TestRail, make sure the GitHub user and branch are set correctly. The user should not normally be changed, but the branch may need to be set to the appropriate RC. + +Any access to TestRail will require the TestRail account (default is High Fidelity's account), a user-name and a password: + +![](./TestRailSelector.png) + +- The default test rail user is shown, and can be changed as needed. +- The username is usually the user's email. +- The Project ID defaults to 14 - Interface. +- The Suite ID defaults to 1147 - Renderong. +- The TestRail page provides 3 functions for writing to TestRail. +## Create Test Cases +### Usage +This function can either create an XML file that can then be imported into TestRail through TestRail itself, or automatically create the appropriate TestRail Sections. + +The user will be first asked for the tests root folder and a folder to store temporary files (this is the output folder). + +If XML has been selected, then the XML file will be created in the output folder. + +If Python is selected, the user will then be prompted for TestRail data. After pressing `Accept` - the Release combo will be populated (as it needs to be read from TestRail). + +After selecting the appropriate Release, press OK. The Python script will be created in the output folder, and the user will be prompted to run it. + +A busy window will appear until the process is complete. +### Details +A number of Python scripts are created: +- `testrail.py` is the TestRail interface code. +- `stack.py` is a simple stack class +- `getReleases.py` reads the release names from TestRail +- `addTestCases` is the script that writes to TestRail. + +In addition - a file containing all the releases will be created - `releases.txt` +## Create Run +A Run is created from previously created Test Cases. + +The user will first be prompted for a temporary folder (for the Python scripts). + +After entering TestRail data and pressing `Accept` - the Sections combo will be populated (as it needs to be read from TestRail). + +After selecting the appropriate Section, press OK. The Python script will be created in the output folder, and the user will be prompted to run it. + +A busy window will appear until the process is complete. +### Details +A number of Python scripts are created: +- `testrail.py` is the TestRail interface code. +- `stack.py` is a simple stack class +- `getSections.py` reads the release names from TestRail +- `addRun` is the script that writes to TestRail. + +In addition - a file containing all the releases will be created - `sections.txt` +## Update Run Results +This function updates a Run with the results of an automated test. + +The user will first be prompted to enter the zipped results folder and a folder to store temporary files (this is the output folder). + +After entering TestRail data and pressing `Accept` - the Run combo will be populated (as it needs to be read from TestRail). + +After selecting the appropriate Run, press OK. The Python script will be created in the output folder, and the user will be prompted to run it. + +A busy window will appear until the process is complete. +### Details +A number of Python scripts are created: +- `testrail.py` is the TestRail interface code. +- `getRuns.py` reads the release names from TestRail +- `addRun` is the script that writes to TestRail. + +In addition - a file containing all the releases will be created - `runs.txt` # Windows -![](./Windows.png) \ No newline at end of file +![](./Windows.png) + +This tab is Windows-specific. It provides buttons to hide and show the task bar. + +The task bar should be hidden for all tests that use the primary camera. This is required to ensure that the snapshots are the right size. \ No newline at end of file diff --git a/tools/auto-tester/TestRail.PNG b/tools/auto-tester/TestRail.PNG index cfdf521247966eb0a30cdfff592c6e189aaa7610..042d0cf1cb76b3d308e38e1f3f9e60914fb21d58 100644 GIT binary patch literal 10972 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 diff --git a/tools/auto-tester/TestRailSelector.PNG b/tools/auto-tester/TestRailSelector.PNG new file mode 100644 index 0000000000000000000000000000000000000000..00bcb360edd684517668151b0d87b9f29c673332 GIT binary patch literal 10626 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 I%dfuwKNN!y-v9sr literal 0 HcmV?d00001 diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 171ccfd075..3da789f405 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -49,9 +49,7 @@ void Test::zipAndDeleteTestResultsFolder() { } QDir testResultsFolder(_testResultsFolderPath); - if (!testResultsFolder.isEmpty()) { - JlCompress::compressDir(_testResultsFolderPath + ".zip", _testResultsFolderPath); - } + JlCompress::compressDir(_testResultsFolderPath + ".zip", _testResultsFolderPath); testResultsFolder.removeRecursively(); diff --git a/tools/auto-tester/src/ui/AutoTester.ui b/tools/auto-tester/src/ui/AutoTester.ui index 1a1482fb37..ac8fcf5e86 100644 --- a/tools/auto-tester/src/ui/AutoTester.ui +++ b/tools/auto-tester/src/ui/AutoTester.ui @@ -189,7 +189,7 @@ - Update TestRail Run Results + Update Run Results @@ -218,7 +218,7 @@ - Create TestRail Run + Create Run @@ -231,7 +231,7 @@ - Create TestRail Test Cases + Create Test Cases From 37ddd59c4040fc52edb2594b96bff5e3a12e0d81 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Thu, 9 Aug 2018 13:10:30 -0700 Subject: [PATCH 249/332] Use correct case. --- tools/auto-tester/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/auto-tester/README.md b/tools/auto-tester/README.md index e1a2eeb957..12056ba4c5 100644 --- a/tools/auto-tester/README.md +++ b/tools/auto-tester/README.md @@ -13,7 +13,7 @@ Auto-tester has 4 functions, separated into 4 tabs: # Create -![](./Create.png) +![](./Create.PNG) The Create tab provides functions to create tests from snapshots, MD files, a test outline and recursive scripts. ## Create Tests @@ -80,7 +80,7 @@ In this case all recursive scripts, from the selected folder down, are created. Running this function in the tests root folder will create (or update) all the recursive scripts. # Evaluate -![](./Evaluate.png) +![](./Evaluate.PNG) The Evaluate tab provides a single function - evaluating the results of a test run. @@ -106,13 +106,13 @@ Evaluation proceeds in a number of steps: 1. At the end of the test, the folder is zipped and the original folder is deleted. If there are no errors then the zipped folder will be empty. # TestRail -![](./TestRail.png) +![](./TestRail.PNG) Before updating TestRail, make sure the GitHub user and branch are set correctly. The user should not normally be changed, but the branch may need to be set to the appropriate RC. Any access to TestRail will require the TestRail account (default is High Fidelity's account), a user-name and a password: -![](./TestRailSelector.png) +![](./TestRailSelector.PNG) - The default test rail user is shown, and can be changed as needed. - The username is usually the user's email. @@ -176,7 +176,7 @@ A number of Python scripts are created: In addition - a file containing all the releases will be created - `runs.txt` # Windows -![](./Windows.png) +![](./Windows.PNG) This tab is Windows-specific. It provides buttons to hide and show the task bar. From f816c3794073ecf457a3ca442b36e7134677ffdf Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Thu, 9 Aug 2018 13:34:25 -0700 Subject: [PATCH 250/332] Updated MD --- tools/auto-tester/README.md | 10 +++++++--- .../auto-tester/autoTesterMismatchExample.PNG | Bin 0 -> 487562 bytes tools/auto-tester/setup_7z.PNG | Bin 0 -> 4104 bytes 3 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 tools/auto-tester/autoTesterMismatchExample.PNG create mode 100644 tools/auto-tester/setup_7z.PNG diff --git a/tools/auto-tester/README.md b/tools/auto-tester/README.md index 12056ba4c5..6a45f7a7fa 100644 --- a/tools/auto-tester/README.md +++ b/tools/auto-tester/README.md @@ -10,8 +10,11 @@ Auto-tester has 4 functions, separated into 4 tabs: 2. Evaluating the results of running tests 3. TestRail interface 4. Windows task bar utility (Windows only) - - +## Installation +1. Download the installer by browsing to [here](). +2. Double click on the installer and install to a convenient location +![](./setup_7z.png) +3. To run the auto-tester, double click **auto-tester.exe**. # Create ![](./Create.PNG) @@ -100,7 +103,8 @@ Evaluation proceeds in a number of steps: 1. The images are then pair-wise compared, using the SSIM algorithm. A fixed threshold is used to define a mismatch. -1. In interactive mode - a window is opened showing the expected image, actual image, difference image and error. +1. In interactive mode - a window is opened showing the expected image, actual image, difference image and error: +![](./autoTesterMismatchExample.png) 1. If not in interactive mode, or the user has defined the results as an error, an error is written into the error folder. The error itself is a folder with the 3 images and a small text file containing details. diff --git a/tools/auto-tester/autoTesterMismatchExample.PNG b/tools/auto-tester/autoTesterMismatchExample.PNG new file mode 100644 index 0000000000000000000000000000000000000000..ddabd2ed7ffa955bde0c85283104fb374c238b32 GIT binary patch literal 487562 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

      m>Vm2Am2v?5BNYK^}x`7JRWe#17$zC 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 z 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 diff --git a/interface/resources/avatar/animations/walk_fwd_fast.fbx b/interface/resources/avatar/animations/walk_fwd_fast.fbx index 4f1d0e60aa6eb583fbb8d46ab32b0e5851ce180b..1ba94a798f327383e23d6f86e11f866a2aa0a27a 100644 GIT binary patch literal 1008352 zcmcGX2Uru!*Tx4MRs_Y~qGE4gZ;%Dof`Xz^Y^VeX7=;8wK(R)zy<+c*y?e1=yI0ytAk1zrqZu1}0RU>ScIN4z zjn(-U1OUicd-M6LHL-e?Z$1D(PxgL=Dpacp^DPem(6jaz@>fSjs$<|Um*=)rg|=k$ zmo)$Yj^;wOIz<%#0ON>)?$m(!Hy|=LLam9B#X)st4c$GO)%Wnq4?r%a%K(4^icpnC z<*NzTDoOwV+DB?bl#$GT0*BwfVT$e%qtekzy|Pp;SbPxxKpsZ+Y`=9!zh%tL5;%ZOmltc2vZM3{r*a&A(XB`b9qPSp7h)&b;5m z+MmCZDt@R|7Zzjw%`NtCx~byS%;+=!<^$_Dj%~D2Q7R2gl5O)~4f4VPI&HK{r&p_D znz@h64Tp9QX6ytg3IPCUZD=ghN)KJ6!Vv(_Nuk%NH4zF%5@sLMu!1q8P0OHx>Tq>E zrA8fP9=Ji_A;W@(DkBFE2p<|YAY2)vuOA*V>>*0g3#MR3pF$TZbr#n=0OSDxxWOz; zy-I-oLxK7RwG+iKPGl9*rBgH*e6;-J`k8qghM$rY##buiv6! z!(`Mna@K|2bUSsVilbBk4f||0YNe^Dr zq%0&>9U11?(A}e{hr4^TuFP>3ZBB5WRH*cNwI(8_dV$|31X;5lb6P>OVzSK=aRs0o zwV)f!DM62D?_uf~^Q55G=*{Z;YV@iI6`aa^nG>5GD2#F6Awa>LVW2Q|goZoxB?_$z zLmBAX>9iU>cT(mwp;kfIS9ci6O#HtibIcoxqFH&{Xtla9?!1i7tE}_>j?6J{8j5DT zb_g&}l9r=1AEm1nf<-rh;l)_E@Ks!mnrIH2D9V_nQR@|<%1Bi^WhisL#`qqljSY!Z znSbmY8x?}=rr}7-kncmSpracz)U)ak-dd5u05AuX4zN#!nb|ffM6J^3+h`-TI&}1p z)atsm_faq>ad0=&8Pp@(4}pcDSgl~I%m|_3QKyYEN~Kd04kZj6%&AVxaBXCyc4!-A z)D+YZnwglB0cJM!*M_OghkKPKHtP35(0nFsLLrDGrXnUJK&RDfL$#5(FlJDHLt$uG zGUg~W%IGedb~+_FA)`a9BCyy-zl$}mFQSzig4m>i zH&|sE2Y;U6HFJWcH-<6H=}DVdold3EvqG7(TI>NVGcz;OqJi}`k+A@61+wO{(N4dQ zta;mLV>Np7aWK9pTu?Blg!wIh?3b|RK-Yy10KgH#j9&8+rZcPMYzN^lPT3@2hK@oT zs|!_ifh!A!PVMhShPheqqS=OeaRwmsbnUHCM=A8m(7_yMEavg79ITSLyEBKS-&R27pgAekBBXe&gk!qplzvnGzYjdEHo z)!wsyfiz#77XZo`_K_*MAXLb_{9`E2J{>kff627WGA-Lyy%@PQMoRNa!K~+4d~0P; z1I!?FMhmd`?y9KhNCp7L%XT5dvP>z=9Kg|*Z45ZLKtJoiA#Gl+sbWHPYV&0U!hwrv zNR9&0tjO@=rwvs`@;e5MM9~dkTJtG5jOI81SPD3Zf)R#{0a@PjOP`5aU>(C)E%4|9 z&+U;b510Lv@hV*evh$BIa}70+qs!(-PPzW>S2mZQ7K1L=hH{&)z^K#_1NDDSy9(wk z%NtE~y{Qt#VH|U&?hpW19I<*h7lmlGXz9)*HBSw+^`9%Wky>*c=FelS|J+X-I+*n5 zhl|6x+Z%R!@Cju{696*=eIiwwFw$hpRN2B6>VeLRn8R;3t=`P4 zcW7vARBWXAXRapVQ4?tPV@~?bXGDDCle2e$IRIvL+b2F+853hJrH7wZ6T$pHoD7)G zXYs>xYg-ZyUgprjKHxE@H_Y+bTd&utLt^!+swLnbvc@iRZJ;@dXO2bIM=0hjtX;^k z&ash^b(lpa+OiGX-6bS-{A~&79$GyxXD15va2{t1y{U>Ntw8Y8YT;1*FkD;!^Ac`sSK=^wHRSHtk(1*)p{tW z$lj#L?>R;GAw@PR%h_AyFk)}DIYknCyD6tgVs9UyNHq1cf$E|QQ|ZiAVhFER4pzxr zIC2OuU!b&rsEAgEs@iFFe(ET-zKbR@o}`opwSm^f%tVsahF%>Wu2IFr^fDhDI2UUG z?Bmf;Z$1q%7tff3DOZpB@M*{kHH1!onc0lFqT{F1sA43hL#BIV?FnQXm|yyDlL7n;V6{K(W>}EkYhzyB}1(WWJ#3d15N-6s|gPr%-HtT3{>gVaJfu4 zp_q)KScfSzk8+Q(yOrP=YY($AXHqE6h9TBaMr@Sd2+NRXUBArwVW14k$Z&x+`2!#Nk!2GO>poql@B-BK9zjD~i~|tCgWKU7_2|a<{!o8>Q0g)S;|12C)ZF zk1DWvbnlBf>&j~0ax@Uz_H@)Xx@*eZ;K^zmjRQVS<3?6$73dq9s+lR?U#+2)QPJI$ zng|uI8P>HbXB)gG*IwLh@S0bbVcJj*6IM$acN@HFadWfQgVhgSwG2jWw1A_Pu^joL z(Cbv12>n1_*6hr&8D15A&9NC?MN!qDFzlkBFoKGjlw&iziaMWTGrWo_UL6+I3_8V} z;sof-my^T1H4%~g5bBjfBfJV)ojbo+*R7NxT)!hG93K&1<1o;Dh& zj8-XPqocJtJ*k!B*;`>QqoG@FS(l}JHDRh@+_z&sqgJXy-nC%eWPHtRQwnpr&M!1l#-6Nj`-w^f_C8A?+N%7!jCF=uIk>KJv1I#R8V|MNdFEgnMg zZDF67>xIALW$5%$sR>na{mR@f^FKl^(VeahFVQjgo!OV@n6+%yeVR70x;Pbcy{#Vl zYu5F;!wvwXpxw+UwZ0O{fQIhXWHpq;K!~<%7w*>7hLBc(N-#i?o>}6#DeJ-tnTy%% z3Yq&{ZM2b*s!-;3S=(Wuk+CuAIF)l9tBbu%C%U6nm{T(A5}6_1E@T+3j){&`#+&a| zv}fIx%U0p0I&l0+beaD~9YIH@0(Gqb=RP8|v<~1tBJkY)MuOsQH)bDrtI=Pw23-r* z)27y23Bb$R*YH)$MRl}g zv$Iz{EB#4V&Mom-+xU8LtTFdy3NSZY+eIoPVzP2({T;J~*M|i#;QUbl)pV^tu>j^; zi=R3wgej{jbGa35*@~!D9~L3t&cT+=%;wHKw(@)HT^|<2oT9S|V)~#Mtcq0WwalY& zzqecDqD)nI7IjWw&dv>pLW24{b9y%rR_9@IPJtc;-AMFlWcc#5zrUkA0qvh1GeGoRcce zv(6m?b2e;3tP?cjnX_6GVRf$O$XShN&cyIaXlK zT+N7eQZ;zy{3tMI966`Km1jE;G0CQ9fA%Qu4yohxgI`Yif#7kJ6dpUCY^US$PV9wfd za-B5KoE7B4>Rdt23EJ_@Ia^@PVid7XQyZQ+^HRd~E&I!}{x8rt)$GeuxduQtRwsZKm| zdbAN%=T45C9eCzkCopGqnpmfaFDqqeVRbGc=LCF@Lo)>CbZSei6LjIJtwUR3b&ezF zG_Dv3G?Zt~dL4w-xt*Mo8pAW^DuFqx_!8>`eCsUXE3D21 z965t{);UFB&Vn6@b(%);%=uGb&e7zYR6Ng|Lplo6_B}bLX*kcEPXy)+??lwr5Xv)W z?@q$%yhY9lR6KK@6PUBJAF)ml$TO$6pRhU)bL8YZZubbx+0>s{CpD61owfXh)w!9R z(=eK6&gBAgR_siy6KHtmbm=Ut&N<|qCca~6g20^lx)AH6qIlN%RbbBH=7WW&U)Q`=ge#VG^n5K@w$BG2U(bhg3NCYQR?)n zD0K{QF#kc;lQH{HF6NP--!J3=06b%!oJU)>CtM12g-^H$`j8Lv;FlZ)vOd<3!^b_C zsCixCLtdDVZSebq1@?JJ)D`q(sfcGnEz)FdKf6NHm{+DaDh4XU)S8Gky=C3tUgm)) z$2PH%%*RO0PcfpOyM%{lwZLpOyF)7(agmkouaT9^(|=j-9X7x+ zCuBYIC~XIIbQZmA*W*zhE7#Kkk>$)=z}PQdJkwpI>kd7{xE|QU4z4dlU9ru^uc&KX z;4`wg=c{r17)2Ef=-zecxLUW){CNGJkb0t0>G-dkn+`;FzYULv6iM1jH%rCWO00jhVX zE4D$^xi{>Z4Nw6vXL-vNRgLsO2a{*PX>Jtl9zMACs5ZCc>rmsOpbFe`Y<}ySH7GhD zI!~8NeV-fYlhd~DK6}TBdWxDA4OPuPl0wy~4-P5~+ROKB;$lAt6*IIfP&wQL<`YBa z!D2I19=KD9^C*)QRnz(rsPgP9o~r*!%{L5vTEIkqITTv<&bnp)(w)Y=*-`hSr#!B& zNUFA?Kw(rl1lfVA_Cc@)+o)QLx@Hqq0K`{v_o6p8pE7l85jTnkz)*EU_&TresBuwL zh3xf@$|zlwqIcJ6J?U)xZaH0H?yFhu!_UiG_k(hZrfPIQNvT@Z4@cEew3jzk!B$jJ z^)>`$r>Y^2D!2YHzcp3C1ghftiyi+cP~i9wsrgm zOFRC9vEv`@!tLc>MYw<+37RvYIffoQ@Dl02l}Zg%QwWpdAQU zin?MO0bfwpY#_h^0NMCCPVj|A)-8Idj!;WFR9C2RL-i2a%lAM% zED{b?=Ivi-sHS~FL)HBD3{^O3q*fUOJ76_Z8?rv1ob6bxA0%?5ZbpH^Mr!6DJB-w} zgJBJ}jnvhHVb^RJsm#$}%o-2~M=JA4bTm@k-Owoo^G*upl%l&fdO%wZ_RJy`rL!8XX{-;PXB(|mqC}3?UMNu5 zXx$cNhtc{0b;Y*P8laJ6v;y!v**r*_UGspW6@ZNWvr*%sN9$#cq@(qd1~*#EXyIPI zqjj7Pj#lQq3TU)~0%)`{_pq7cs$!rvHZn}5!<`6^LHVqPYik|hG~kUEnj~g%c_Xdk zo(J`MnrOF9zxuY=-i@N;ldp6iqYkHPM2m!=9|{x(!OmzqK=1{1#Wo0f46zx4@gwdu zob#eEMazykF8R^LjiLjNj=a@r+#BOo)VQd{J zr*A~PM$L+5tAS2Zwz}zXY{jCzeA&7gYjw`zTnw>gIcM?KMd7fzhEiE!H8+-kRofWx zSS1vgy2Sf{14aKZ-v=1knjY98u*Qu8RjAQ1BC*5aOsp3gk1P&6=X))c<1H|CCob&JC4!>1`D@{IALXw}~QhK-TADB5Y< zx|?qwJeAX^S%@(u*j=TPv7b2(6-icjfoY|V90kyv0i;ikzf7G}rw0g^pE4PKcG17}i zcHLRHUAmFh?mHB$t(a5w>$x`fQ&;`#Z?#wf;#f=XYqqEQhMM@A{^baW86I6juu0 zE6%3|7o+G`rxxW=EUZq^k$HC|1PyniKBHzubJb#`q+A7!#BntS?d8kWi!qQZ=DP^c zDl1ry&IFl%fHcmK6QTd_s7qHT}$g zaruK8$Y-Wr%_(~rP62N!>n(}r3g zc}f2Fa@R4iZc%itYEiRz%w@TWu72@NT+tbYDf*Yw#nvgsDw%qqW<}GraEzpM9Tn_^Mm#z+fS<#hn3e8$pbYUM5X=@;y6XyDhK-X@Ac)Au3FElqwtXjC4Z4XO~ddLd@J1v3^iBZ=()1 zE{d+lCo?VwCe@JBgD7vP;3a=D-vAT&K za@4olwmm=PbiJ+*YCqUOQ7#ihJe_AxNuhLZW;SdvnDij5fbnIb6$qo&|6NJM-2Vo+#?6$a5AFc_G> zF#@|l%0HEW!LjL*?>Xdusx4Q_sMH_VOFT5IbO5S8TtXtG1|tZpYDq0z!Zm?6+OxPGhI@;ZcoS2^$YFgOP4yqiY`M}5?$B@ zQuqu4T~!kZbX}bxo~}18UthdD;LM`SlEi7INV;egD2%SfGwndvebg1(PT^Y5f?czL zE>QZQZshaXMmlkwX-nCe`6wD>6s_NDOE2SG)VL_Rwx)jdzmwjaq79vlZ9TnQO!Uc= zwc{H!G0Cr>W<}FgGC@+hS|s4;3POAN(sg346(a~5M*5LQTxKt2epAD_u+O6D z($AHYu7z`PbR9r@`OE%`LGB{=~{}qVjEpwP}gjky8uWGTjbzrmN~tzgZW$`_+sTK&lU@8 z#9+h%NikTl0EfXLw3jai^_D;kJbvFnN_~y4!ZBaAX1RmpuMP`~#DBK9_Cf*&&lXz- z?H{wu;)UWlcvJDojslgw$?0$ATS!64boC88OC5I1M_pPdl7sw<#Bk7WksUZ#gSuiH z2VgPmnhhL`zLsZqm#fc=blU6&jr$L*NYS8q@$NIPGVF-s(mr6Tc)K!L)hndGH*z$@1>Sc7eN4OnI~UWREC z8Z=(8!APe~{66K>B=c47$5Zq}f{c4nETusyylvQE z-z(#1)U0T{S}d0oub|~PyvCrteDQjjXoZ*a8X{iUHPUmG(h9G2i3GfQt`Lt`M%^8^ znl!46StBK^5Q*1u6etX@ax3kCmvW^PcpXGtvtjn4Rs?MfnRiT1o7$HeTXRls=5V(1 z;MIfP#uACJZc%tuzo*b`YvD=J_p03=)gt1Jkxt*-xBl5l59EQUS3t3={e zZ8Z!OhS%`bcEHPox?1H~90yO)UcMXzY=9gz_`OIJAZurX+%q;$Yk2BV87j!Or=a8*NUW|&N?v^7}nW=g5#(wwoy=Zz0DNdQ^&9G zUgDLU4hYtlU9_wMMH>tQx3{ly$T%D|E^3lFzM%Q&XNB8Pv?688R%c}iioRFpm2T$o zGNyk~v!dbpxn5GZWE*gBwLyFN!nJL)62On|G*M)7b(rcVs- z(Y!Qffz)lINVq1WKw(qNT~vgm*Ws#ef;HF%mtm95Z~;SNg_wOKa$r=xJGTp z!Ig;i@`bD5b}P72M-$+}E{`0y5N58U+X!&QZ4nPw(8*D==e{bASswkpMI>BLP@pil zT5g3!ND7x>s}ykEMP0Mu{LP@5+Uktk4ms_fS<1qGm(4K;J2I?cusB6{*61i-gMu1qy>};oo+E>n`ewZ8KNP zB-k|@;9?d>%f@{*KVm0a*4=#V0mvQ~>gPEEH7=Thlq5+hNK3*|kb4K*%a;PpZb$*^ zGe{W;hywPfBm&f$!SUGD(O{I(>IAOlZp)bcV|8?EhjswOv zlZIX^U0q61^x|nBuK8ZdMK#+8`z)HS_-qsn>H2m6M^}Y^;adcA)DQ>WXc2^-Y0YvxP1IO#k$} z*V-)enngd&=L#~}#2%i@P~)O8xR)X+1`Y>t7`UOmd@-1P2x8Fi_uV7+z^!nSDTVGH zq4x@P(?&*Omq;^FPAd>P9kPttKbA;84~hpN;?R(u2V7ss>H1eI?OPDE-AJE$VlviQ zC!?AgMS>8C0)>Ha$Y=);98ItW+dv32NdST&bL-Aq2hs6{d2bg0M~~k)dGKGDYW1cNR%IFQ+r=HLL8FG|2b^H7lAguS1gZr96b=YdqS^m#=q6t@ujJ zL*@&+NP2^ETJg2zD1onjhsE<1PULIBVUc{DMS;Tjs(i!_d_^3Qg0G{fYqm`^Y`z-) z=BwOMShpy?*6cmpHr!!{oIcpzHKs(`Jvl8qdFJBW3d4;-s9Di`tvD(vUx$w3_+@0Ja3(O?!tYJ-1ivlgcVvzCkSXQJth)@izrYS1l5n*0fNZm zQb2GDbNDFnw);2=mxd-+13I0GSIJpzjGX&)Lisbgpa)eLgeueu@`d836#?Q?8=MMR7H|Sai49@qQFNcw^-I6T@B` z=|W|x&C?GTFqJ$H`z)HPUgss{YQ%XQS1Zt7zFaw8f?Tm)!Y}hjTrn@}DO5;2i z2y@n>PN7h&C^*b1*Y{@>LhxlFWE zseb(us<~2h`;x8qcvr7r(xGNWv$gx8q-#B^5zzIa}Bw zz0n(g{3Z?lG9HE&hHo)>qO+a|3>S76s{0gL$}qS`N0X!lu}@@ep$#?02)b1G_F6j%xC@=y=-)l78$ zlcj;fTvroqGK3DAxTm`53~E+1SVgW%3YPm-99RmpmoHex8xSnkC(?t{&|M?uBeUj7 zivf%LKv6PEX?0E*e}jNmoonLpTHv^0`d^pW4-~EL?fN+GW?d@mnn=8spg>`Gy+uVx zI&U?(4r{OtuQ}Ik#w*w{udMyT+$Q>;CuM@;oXb%(*w%ck)0Q*xbkw*gyqfKm`8A1d zOVO1|j6V?$Oj6!_(7oPZS-wDH5-*C{P$)oo~S+B*kmqEh+GNhq`9N z?3L*Cp?v6vjYgU(**JLo74s8C0JI8r@ak|I)-4LJ{rB!P`m2c#MVDOgL|tupMH4;j zz{2pp3ksR0pk_tmb>_CDc)hue!^`Ck+{+iQQTMIzicTlaUf4&9hNF~LvsbhG1iaGk zh{r1>ZugHi8*q;lRkQUrkM#5>OosBuwvtzNaGe3Xfz=smOBMg7#4G|}}No=zPy<%97#YF0E}weL%c zm;ZenUeRbTU%Vzfw8m>VarVMKQ*;xhw8BgNkbqZ*H1T*@n*9Ak-)56bjVj}A8k;5( zuYD*`7+!@R*a5F@4`27j z^eQp)ml1vOOJp*A`Q45i=_gB3lOKu1;2;VVhC%VicEF(bV<|A$i@Ih528O4_5*t^0 zWuz%Z8E|uH1&RhMpN(#M+hi>A1lBETmO0>}Y29iRP0_t_KMdMat)z+GReSv2qW_en zI-_Pq)0OZ8 z2KSltr%y%FRsI=1m;Pt`J}xnriSD(tLz{wi-Wj)|W<}HW=DDPFxuoOhYK->s zrEBFYE4mDSk?6v%kd~p0R&@1#MWCzD3-NS~4j&ygdoS)o>GTVcbPY#=!sxnyijedI zM2VNM2HWV;y|kUKhyP@5D3xTS4UrXsXZArCAi$C|&r_&zQFQgI5WlZ=k){+~_}_`A z%T4-Zq_yL!E*z73U0(1N?6YXP{9Z{)m-ZEot~qEgU%J-6wW2FwI*Bgq0_hvdXhm1> zTLN9`*W&52H2M37-fIG4_iU(WTK!riT{lpmFuLl!fkjA4SIiqJ=t@Ohvt{lAz*J*p z5%U5`rt1$sl@2!7>FDY5);z8KBzS-buL%*>;Ir}N|QZp7nbnr~3!G#*VC4o*IIh6+O-DdM_zo*WTm!`il1QyEBq?7_KjHZ5jrQ{8>-bkIz7pq?`NA%fj-Z@YCvt|b1il)67SGqWYc6S;rnpxd z5B@BYuT>~e7+;@I5t5$Bwf+KYu#K<9Uu@^=OFl~W_^6RK)GCu!WEMJ+GgQCjnSmM? z#aDNa8~2{JYDUrRw$+bUo_;K+uRL7fwX)_@qsLd+XVHAce3g{11z&M|?MHk0@^#^d z6#rR=C3I~2z<@?CY~=#lfQpxeD2JAo&PK2nQtQba`+Adh4B^m9Tp)e zU&~NeY~$-I>Y6R{7XXI)F$K(D0AuRw0^e;ci@(<^rR5JBK^XZ%QV>@Dz=3cW?d1zX zec%9c1HgXV&iN_=A=~pny;`gB4%MsUREj(RfDo-VQo;1e{6D@-4+o+^Vbe^C11v() zX(o3rSc7eN1?PfYvjH!Vu=LC0tCQulsZ$FOJB#^_Oy*_!!yUc$p~gkwH6ghC+i+hW ziav8@QQxw$OuCEP;80*X%qZ@j8J5h2d2`uO09T$twk3M$|Q1@VfH% ziZU<$meZzL6+zMxbTi5D@8Wru&4Y)wbuS zdZK1UHeVQdV(XB4!s#j;yJ2`!3 z-@omzuFXdsM9qrE3lxzQuc}3Gc(p@&`Qo+H*$S_W!$iEWi=@9%N~>um(wTr)MJMri zZ7LU5x!$Nen6tQ^P9pJ|fdYk1GY?S_k}i^J7KJs~hS!9mHsb{bzHta~JSV497dj@! zx)wt3E}{;l+(C_t!mGvdQZ0l!RTg0Waot5N#V2Gv7%Hj=m1evsc>l27jfDM~#c-;CM+%IY=*w_HY%XmF5;9O%Y$L(Hj1(l8H*~IrIAG+;H#N(xxVvN*t^&|bb1&FuDavGtpMv51z5$kHx_Fq$C>CZk9W-&I@*b%KgVCa^k8%x)ebc)8nDR~ zBn50s1sq`K(O$lQJ&-}bSntbA%7XyQdS4#LtBxC2guSq0YpIOD*2Ib;DM&_v!YFX5 zWCsd*R+55(-Kc9eQ;^^KRmUlXWHwM>piAG|HYSdu)zOM6Hy7lkXs<3C!oQ4(qx?{_ zqA8dulazuTG8_e0&|bb2%yNSiu-dZbfL~09_{WMPTj98608zcV4yIt234^GSV^cW zwoNZZs=}_>09H(H#lwk1DpGXth%-G$pDbgdpH^N|sF=%FV;E{&)b!%!{z-Nv-HW29 zJssAv*w)-8y5F2biasM{)PB?~y6#el8FitNGDWB|Qmu)w`fp~YQ!oz_c-NuNhAVDKU8(0OYC%^1irj*m~S9gEbF|jR0gJ6$Z8mqZAB*kiP4IEZC(O$k-dDVefv0h1@RtaInw83E2 zPOH`9=D=1p33K3=+61mP*A&my_flTx0|)t1^xz-cy0`KDBBy;OHK?rJxGecmO_5xc zsRaXtaiytc2d;LbuGq$vOKsRSo48U_uRDdv=_38A>k6tEuC{kuHOnhOJ`go7imP$W zWK*;Ua+~M@^wPQ^0cmpjV4svV5l3B2n^3c&xq4Y!Qm&lp;JETYd--y;xIW~H^<^@K zbab)Y@?|pJwJINFj0%U=0+h~b%2L!Ppq00-c(kgl`FG8Tx*aImGugF#-n6?$x~g}% zL1ovEO!lfP5-mLn6o%F*RD`7Wp^DanHQ0t$WIfx_0`5;=f4^~%uDPwn%LBz~F&E06 zTe{V~aPSCfTohVuia%Tt_VbvRcc*ZMyp+YNzqc*$DuVH?d6Nsat|xC zs6aGjvCtaORuhIp>m5pGg;q}w0$RZh#G{o_KI(k<<>{^I292j5T^V1-M9=x&@pR~M zS88zsk!W2&fx^&obB9Gpiq;@^DbPBBx@OC)W!^I2cWox;gIC@S&u^|w&hKF(106ji zWgyA}$3Ozw%a?(*jUfZ9uW5=-L(>cM#5!}@X1;d8eA6b5g3ly?If7_Vg;NiklBHiBKVdAw#Fsv9#?!LV!dXQz6dM~#b`3Q|wHeeEAx(MUgE z^iec{nm`rBT*K?kC_UC~6l$6ZziGuQA^k3X)ktH@Vl&1SG}QDjXC za10E4TbZKUt~$8mNYmR!x_j$&O`pGZq(-4;MO?$XV7Z3(q(8cb_Yz&hJBS(;edY$5 zONwjN<~Us2p}l-@-O>u;%DUJPFo1Qj!Tho!!bQA|D3=wis#XM8OSKRWtLwg91vbnp zl=a}Nfxb9>b&0>mJ}?Hf5DDu<6etYV+o%XhPunWDlmgb#Eup?PzzTq2f84xNUUcki zm-NWh%*6&k_21lMr`J`~xF}c$^>O;U>opG({khkkxjWaiqUfjXlO_i|d?GK|3ieqv zSG`(E%GHQgIIdQpy?nXKBZpkE?qnr?M`wds-_b<6is#T8cEJj)gI)x%qFajxDBSjskKP3?xR3qU^VuHMMw(Pa8D_~x{kVL3s}i@?)~UJ#YpSj z4uDF*3|M*VC#oiHlGpcwb&CSaIivc<{(+S#def2;TQACLn&>-ao1PrJuoR_5&58zV zhnJ*aUGc(!^%?Eu3s$fX1dH{cMDRc~VP!oi!EqU{pPax}SswyhXXWDA0)4OO&6n}$ zF{hKC+`lWQsgOl#<}zMhN+esYP@pij5-2;cbq#gJw##^pykXaDVGD$H>-X-#K{}yQ z;nnNSm+=f|r-GZ+jutmC#w;$!Rnzv5T1hxvb5lMkJ3KT}cf;M)b;124F zZ4|ViC7^)W(vq3^n~FUsGe7msyi_Q8IBHzum;-(>Amv?(ux2VJRa#_N)o}c%7(d#oa2h93hhoaq2R84Q?v(IZB zYF0D{N83xv!L#-_4hnV<#z6sJ$U$`gfRndI9c6wojzX^t9qbp7PW4^r0D$@2sJn8o zO6KnF0UVgWGXH`30j3`v2%~*_2Usq1P1_+rQGmIOtqoO1D)icD1p`f|?&>J`@*VRJ z%+bcr`R=W*%wN7m!7Q=6slrt{=8Y}98X#}IP{lQ}RqUsXSLyuR!TCPsikXY<%*|Z$ zZdkJUM{_T;ZN)o60huz3WeM0ORu`x0tPNB7rIz%DB9;dLgsUT?LbSuW$49GtY1nMm zUz(fF*O8#+S6`?mb7|Be!2B#n*vM?nnKe}m)avx+mK01w-o3N+^^ff?>UvW`*WKSB z|Em&SnuDt#l~lozj@gDk^OCl(kvv|-W3Gc?nPXejiQ5F(XH*F<6Q*?{m@vAN^d^M( z!LE}`h<+!+gdTo`3Oe}N&x8v8+$I=`3L(MSpHM<>f9XwlhPqBNAs{#Ex)2g>kt#Tc zDnPHKl9Ytiow-d&cqN2{`JD+SOzteb36Wj6Nl45PLBfD8gbKQKu^$OF0=P{`eJjL- zvH^q=iUde+!aLM;5(!C8B1m{ls^B`Rz#b%Q?aFNe5HvBb>`E|UPFLwoi0j5pLdFXb zB&fR)DhTRkKN36?+$LnW2$>Vy%qIhI%l78TQVQu!_>Q_xA|dUm2ov6rDtLe@um=fy zyK|e6SW1Wqo4OOm(X#H+n_%d{O+xfz5hld+AXE_E!+s>R3gk8+;j552p?)Btgvx=^ zn~=9Bw+Yk}5hi>gRqzs3U=I>Zs1nj*E%B!i6L$3^n6SR5^d?O0#chHtkBEtRR4+mW z(Y@?PLfhWlBqTi(VnXxYgc9oXmfnP-eYj0XDT1W9i~nSR_RWQaK& z74Aogx&+VNpSuk z96UMRN-0iQ&eAPXf_P(0LrCOk)# zkVpVOgphEXRKj^wf|Mle4C6K-_?rk5)`byFSQKVI6QWeyB%}&5Ay`EyL7|eKgl6H~ zCOC^(C)5rnR8S$@ekQy}m5@k?{w0KjC!`W?pc14cAvuEE1S(Sm34ccrOjsRZKNE%y zTG4J4G%Z=m!fc&oWhaL+Gd#oSm;sGx@0ekS}tm5@kC6J)|$QV9=H2~v`9 zd=R$@Ne&`R*guG1!q!3dGhystZW2-p2q8f~m{3B*VChNd6v=IZA(sdfydnt|ctqOI zgnUulCYXu|G2ttzgjc8pDM?60T_@etNh~PBgd!8qwnc!Ro5A|a`!2ooNVD!76wum=g7hUQ>GGa)7{ z8%i)?)==q9h#AIBf^%aLCWH?oRM2~v{Ya=E&uv0NOCcsyjwh7h8ZW&GUr^UcBqYd0 znDCNR!97%gJxJI!oZEyn%W&fLX#D!&1QQkym)?X?Be+ROs3*dN=n;epLPyw-gyti; zO-N`jgoHXH2_;kZAtop$6G~_|S$Yy`PvJHpxUvWn zDoi0%;5@~CCOkovkVr@>C&Yvsq!P}c5~L*I@2T7-q=`8kt)5CSVg6M6nJ{P?HwmV8 zLQLp4jZi|sH0eobJe}Kw49hu%kPnmBm`~#B?@D^16lwdy-M$hIZA%GTQ!jRd7 z62fLnPeO+|+$JQti7=tn96|;4=h)AL+;h22$grGj^SYn#iBv*5DnUvT&Y`Z8ZtA33 zuDA#}9GT`4OxQKoekM$w$8CbFjt~+?%p;VbnI}C7-R5(XkZQRKFT{kl^9dC+pKm`C ziY(wZA<;{S319)Cgb%0$DM`4Fx=tb?S}x*nbedE_$^!eDFlQmR3C@=1MtB{LCNM95 z!@Xc+*h1+^2wKEVLWTumAtZEJM5w@Lk^M|4wKxY8yoHcZa515TpQr>WNqB&|P9lM# zM38WWRKbbG_A_DG5^fXH1eq{v3BiPMOQa_ud?_~x0To1;(0eJN0>7p9GokV_ZWEGx zgplC6j8KB(GU-itiMmcAA-IDG6Yh~JxQHsS$4#B}%ehSe9fg>%csap@>C2@zA$kQj z38|K@3z-u_R}d-)Twy;F>a658A+eJX6DqDGl;E;bdJ{gPu9HZJE-iwD=cEd5qYCUn zLQ*2P2^p4${CS-ntw|)9upm)-6NaziCLv*j2os`K5h@5?Wj_*{tmZZ$b+ix?YOW@f zP;RyKCS;xB1{;% zmQcZ!Gz80r8i;b25u8%@ghtZyMa)FeuMo;@ZHEwLO_2ZCbZs2D51ed=}joUiQ5GC zQ6fypw~0`}S5$#LNH~uwA(0RrBgBM5q!M;-lHP}^d?l;%58!vN`wi{TL~59-fBM+ZlFqtB!mkw;S8ySgQx^4FW{}- z#%)5dR)h)jw-HR3yv=?l^xK{T34?{05U`z4LYwWOn~*q0gbAB=5lmRN z%YG&d+09LYY=96G!gdo%=($^Z5?bxyHX%dIVy*rjLIsug*w2Jds1gzhl)n%Y(n%%U zK_y5@f@v?e3C^8Gkg#hn!G!gD?PtP>ecU9Z_7q}*W*?yhZ8cOfPW zJ3uI5@B!&b=<+W&2^nJUC;0qJsG!Ne_A{YqGOUCdqPVYp1eO&~82~__Iz}C$j#TU8 zao?DjE1A&$kJ_2lK8QXu$;nW!b z&>h$9k|~64uS|xrGheXj5TM9y?shLlJ^(=H*r*T{{1Q$0y^eHTty^b)y#CL41sBwt z5R}h9dR_RnTZ-&UNaBoSOCB_yZS2 z(&R*|do4E3aH2en0yODgIK6Mlbp=fp1+2G1CT{iAF*RbwhHh~()&2a{*PX>L^BLzqk?_T9q=*B;g8 z7RNYmbeLO{49mq6BKy@36Eyi7*Hf}4%$6a4j0+-Z0*7dZyv$(%nplG1zqqaa5pGQa zy0XRzmi?AT2$~$h^^~MZ;GSdiTi2{XeZd8hGzo~#)8$g%=f-+R1ZZ+{+Sc7??>JF7 zHQ?rWl$(7+Ki=$rBZ>1Gb=e;5mpjJosdFsLQ!M*V#|WM-Jc?18-@0I32se-d$2UYvfuOsK@%gcrzA~6_WDO} zNoV7C%WItwph<XSg*uTJKX4yxD(G66Xo( zvOU-@evaEyst?OkEc^M+5j>rB7Na!DQ(&sL`%RTH@}syQlBe#^idXAjp#k+37epNA z_dlsO&Np&+TH`#oCTZ+*AuRi4&l5CRb54jR<}E{h0~bWn#1d5GJSG!S6O;-5i`!aV z;MT<1@`xt04#Kiu{{lgieYl>I#>v>jtLn;@*D}4r1(7rfxv*E=yxw(V0jzv zW{r(!IW+l>G$FB{VYvyH^LqacNt_3$%l2Tu=tXW%!H}HT&vlXD>9kag(j-s8qD6V1 z?&@GP;etq>8tN4|Ij3P&>LV_QG|n%U{kn1fzIPm+R=vcni7A++36}kmmk64yyeLEy z^OhmMf(s&PVhJj636qJWi6sdBi`$xA=GMg7^6UbU{o0oan(V^$lr&DRMa>

      F#8D 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

      9e7~#~VqBNeS!Hy& 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 K^SHEMlN$i5Zv&tJ diff --git a/scripts/developer/spin2App.js b/scripts/developer/spin2App.js new file mode 100644 index 0000000000..b4f63356de --- /dev/null +++ b/scripts/developer/spin2App.js @@ -0,0 +1,175 @@ +/* global Script, Vec3, MyAvatar, Tablet, Messages, Quat, +DebugDraw, Mat4, Entities, Xform, Controller, Camera, console, document*/ + +Script.registerValue("ROTATEAPP", true); + +var TABLET_BUTTON_NAME = "ROTATE"; +var CHANGE_OF_BASIS_ROTATION = { x: 0, y: 1, z: 0, w: 0 }; +var HEAD_TURN_THRESHOLD = 25.0; +var LOADING_DELAY = 500; +var AVERAGING_RATE = 0.03; +var headPoseAverageOrientation = { x: 0, y: 0, z: 0, w: 1 }; + +// define state readings constructor +function StateReading(headPose, rhandPose, lhandPose, diffFromAverageEulers) { + this.headPose = headPose; + this.rhandPose = rhandPose; + this.lhandPose = lhandPose; + this.diffFromAverageEulers = diffFromAverageEulers; +} + +//define current state readings object for holding tracker readings and current differences from averages +var currentStateReadings = new StateReading(Controller.getPoseValue(Controller.Standard.Head), + Controller.getPoseValue(Controller.Standard.RightHand), Controller.getPoseValue(Controller.Standard.LeftHand), + { x: 0, y: 0, z: 0 }); + +//declare the checkbox constructor +function AppCheckbox(type,id,eventType,isChecked) { + this.type = type; + this.id = id; + this.eventType = eventType; + this.data = {value: isChecked}; +} + +// declare the html slider constructor +function AppProperty(name, type, eventType, signalType, setFunction, initValue, convertToThreshold, convertToSlider, signalOn) { + this.name = name; + this.type = type; + this.eventType = eventType; + this.signalType = signalType; + this.setValue = setFunction; + this.value = initValue; + this.get = function () { + return this.value; + }; + this.convertToThreshold = convertToThreshold; + this.convertToSlider = convertToSlider; +} + +var HTML_URL = Script.resolvePath("file:///c:/dev/high fidelity/hifi/scripts/developer/stepAppExtra.html"); +var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + +function manageClick() { + if (activated) { + tablet.gotoHomeScreen(); + } else { + tablet.gotoWebScreen(HTML_URL); + } +} + +var tabletButton = tablet.addButton({ + text: TABLET_BUTTON_NAME, + icon: Script.resolvePath("http://hifi-content.s3.amazonaws.com/angus/stepApp/foot.svg"), + activeIcon: Script.resolvePath("http://hifi-content.s3.amazonaws.com/angus/stepApp/foot.svg") +}); + +function onKeyPress(event) { + if (event.text === "'") { + // when the sensors are reset, then reset the mode. + RESET_MODE = false; + } +} + +function onWebEventReceived(msg) { + var message = JSON.parse(msg); + print(" we have a message from html dialog " + message.type); + propArray.forEach(function (prop) { + if (prop.eventType === message.type) { + prop.setValue(prop.convertToThreshold(message.data.value)); + print("message from " + prop.name); + // break; + } + }); + checkBoxArray.forEach(function(cbox) { + if (cbox.eventType === message.type) { + cbox.data.value = message.data.value; + // break; + } + }); +} + +function initAppForm() { + print("step app is loaded: " + documentLoaded); + propArray.forEach(function (prop) { + print(prop.name); + tablet.emitScriptEvent(JSON.stringify({ + "type": "trigger", + "id": prop.signalType, + "data": { "value": "green" } + })); + tablet.emitScriptEvent(JSON.stringify({ + "type": "slider", + "id": prop.name, + "data": { "value": prop.convertToSlider(prop.value) } + })); + }); + checkBoxArray.forEach(function(cbox) { + tablet.emitScriptEvent(JSON.stringify({ + "type": "checkboxtick", + "id": cbox.id, + "data": { value: cbox.data.value } + })); + }); + +} + +function onScreenChanged(type, url) { + print("Screen changed"); + if (type === "Web" && url === HTML_URL) { + if (!activated) { + // hook up to event bridge + tablet.webEventReceived.connect(onWebEventReceived); + print("after connect web event"); + MyAvatar.hmdLeanRecenterEnabled = false; + Script.setTimeout(initAppForm, LOADING_DELAY); + } + activated = true; + } else { + if (activated) { + // disconnect from event bridge + tablet.webEventReceived.disconnect(onWebEventReceived); + } + activated = false; + } +} + +function update(dt) { + + // Update head information + currentStateReadings.headPose = Controller.getPoseValue(Controller.Standard.Head); + currentStateReadings.rhandPose = Controller.getPoseValue(Controller.Standard.RightHand); + currentStateReadings.lhandPose = Controller.getPoseValue(Controller.Standard.LeftHand); + + var headPoseRigSpace = Quat.multiply(CHANGE_OF_BASIS_ROTATION, currentStateReadings.headPose.rotation); + headPoseAverageOrientation = Quat.slerp(headPoseAverageOrientation, headPoseRigSpace, AVERAGING_RATE); + var headPoseAverageEulers = Quat.safeEulerAngles(headPoseAverageOrientation); + + if (Math.abs(headPoseAverageEulers.y) > HEAD_TURN_THRESHOLD) { + // Turn feet + MyAvatar.triggerRotationRecenter(); + headPoseAverageOrientation = { x: 0, y: 0, z: 0, w: 1 }; + } + +} + +function shutdownTabletApp() { + tablet.removeButton(tabletButton); + if (activated) { + tablet.webEventReceived.disconnect(onWebEventReceived); + tablet.gotoHomeScreen(); + } + tablet.screenChanged.disconnect(onScreenChanged); +} + +tabletButton.clicked.connect(manageClick); +tablet.screenChanged.connect(onScreenChanged); + +Script.update.connect(update); + +Controller.keyPressEvent.connect(onKeyPress); + +Script.scriptEnding.connect(function () { + MyAvatar.hmdLeanRecenterEnabled = true; + Script.update.disconnect(update); + shutdownTabletApp(); +}); \ No newline at end of file From 8b5f96a023a74cdc38a66f4873215dbb0e871917 Mon Sep 17 00:00:00 2001 From: amantley Date: Wed, 15 Aug 2018 10:23:23 -0700 Subject: [PATCH 316/332] removed spin2App.js --- scripts/developer/spin2App.js | 175 ---------------------------------- 1 file changed, 175 deletions(-) delete mode 100644 scripts/developer/spin2App.js diff --git a/scripts/developer/spin2App.js b/scripts/developer/spin2App.js deleted file mode 100644 index b4f63356de..0000000000 --- a/scripts/developer/spin2App.js +++ /dev/null @@ -1,175 +0,0 @@ -/* global Script, Vec3, MyAvatar, Tablet, Messages, Quat, -DebugDraw, Mat4, Entities, Xform, Controller, Camera, console, document*/ - -Script.registerValue("ROTATEAPP", true); - -var TABLET_BUTTON_NAME = "ROTATE"; -var CHANGE_OF_BASIS_ROTATION = { x: 0, y: 1, z: 0, w: 0 }; -var HEAD_TURN_THRESHOLD = 25.0; -var LOADING_DELAY = 500; -var AVERAGING_RATE = 0.03; -var headPoseAverageOrientation = { x: 0, y: 0, z: 0, w: 1 }; - -// define state readings constructor -function StateReading(headPose, rhandPose, lhandPose, diffFromAverageEulers) { - this.headPose = headPose; - this.rhandPose = rhandPose; - this.lhandPose = lhandPose; - this.diffFromAverageEulers = diffFromAverageEulers; -} - -//define current state readings object for holding tracker readings and current differences from averages -var currentStateReadings = new StateReading(Controller.getPoseValue(Controller.Standard.Head), - Controller.getPoseValue(Controller.Standard.RightHand), Controller.getPoseValue(Controller.Standard.LeftHand), - { x: 0, y: 0, z: 0 }); - -//declare the checkbox constructor -function AppCheckbox(type,id,eventType,isChecked) { - this.type = type; - this.id = id; - this.eventType = eventType; - this.data = {value: isChecked}; -} - -// declare the html slider constructor -function AppProperty(name, type, eventType, signalType, setFunction, initValue, convertToThreshold, convertToSlider, signalOn) { - this.name = name; - this.type = type; - this.eventType = eventType; - this.signalType = signalType; - this.setValue = setFunction; - this.value = initValue; - this.get = function () { - return this.value; - }; - this.convertToThreshold = convertToThreshold; - this.convertToSlider = convertToSlider; -} - -var HTML_URL = Script.resolvePath("file:///c:/dev/high fidelity/hifi/scripts/developer/stepAppExtra.html"); -var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - -function manageClick() { - if (activated) { - tablet.gotoHomeScreen(); - } else { - tablet.gotoWebScreen(HTML_URL); - } -} - -var tabletButton = tablet.addButton({ - text: TABLET_BUTTON_NAME, - icon: Script.resolvePath("http://hifi-content.s3.amazonaws.com/angus/stepApp/foot.svg"), - activeIcon: Script.resolvePath("http://hifi-content.s3.amazonaws.com/angus/stepApp/foot.svg") -}); - -function onKeyPress(event) { - if (event.text === "'") { - // when the sensors are reset, then reset the mode. - RESET_MODE = false; - } -} - -function onWebEventReceived(msg) { - var message = JSON.parse(msg); - print(" we have a message from html dialog " + message.type); - propArray.forEach(function (prop) { - if (prop.eventType === message.type) { - prop.setValue(prop.convertToThreshold(message.data.value)); - print("message from " + prop.name); - // break; - } - }); - checkBoxArray.forEach(function(cbox) { - if (cbox.eventType === message.type) { - cbox.data.value = message.data.value; - // break; - } - }); -} - -function initAppForm() { - print("step app is loaded: " + documentLoaded); - propArray.forEach(function (prop) { - print(prop.name); - tablet.emitScriptEvent(JSON.stringify({ - "type": "trigger", - "id": prop.signalType, - "data": { "value": "green" } - })); - tablet.emitScriptEvent(JSON.stringify({ - "type": "slider", - "id": prop.name, - "data": { "value": prop.convertToSlider(prop.value) } - })); - }); - checkBoxArray.forEach(function(cbox) { - tablet.emitScriptEvent(JSON.stringify({ - "type": "checkboxtick", - "id": cbox.id, - "data": { value: cbox.data.value } - })); - }); - -} - -function onScreenChanged(type, url) { - print("Screen changed"); - if (type === "Web" && url === HTML_URL) { - if (!activated) { - // hook up to event bridge - tablet.webEventReceived.connect(onWebEventReceived); - print("after connect web event"); - MyAvatar.hmdLeanRecenterEnabled = false; - Script.setTimeout(initAppForm, LOADING_DELAY); - } - activated = true; - } else { - if (activated) { - // disconnect from event bridge - tablet.webEventReceived.disconnect(onWebEventReceived); - } - activated = false; - } -} - -function update(dt) { - - // Update head information - currentStateReadings.headPose = Controller.getPoseValue(Controller.Standard.Head); - currentStateReadings.rhandPose = Controller.getPoseValue(Controller.Standard.RightHand); - currentStateReadings.lhandPose = Controller.getPoseValue(Controller.Standard.LeftHand); - - var headPoseRigSpace = Quat.multiply(CHANGE_OF_BASIS_ROTATION, currentStateReadings.headPose.rotation); - headPoseAverageOrientation = Quat.slerp(headPoseAverageOrientation, headPoseRigSpace, AVERAGING_RATE); - var headPoseAverageEulers = Quat.safeEulerAngles(headPoseAverageOrientation); - - if (Math.abs(headPoseAverageEulers.y) > HEAD_TURN_THRESHOLD) { - // Turn feet - MyAvatar.triggerRotationRecenter(); - headPoseAverageOrientation = { x: 0, y: 0, z: 0, w: 1 }; - } - -} - -function shutdownTabletApp() { - tablet.removeButton(tabletButton); - if (activated) { - tablet.webEventReceived.disconnect(onWebEventReceived); - tablet.gotoHomeScreen(); - } - tablet.screenChanged.disconnect(onScreenChanged); -} - -tabletButton.clicked.connect(manageClick); -tablet.screenChanged.connect(onScreenChanged); - -Script.update.connect(update); - -Controller.keyPressEvent.connect(onKeyPress); - -Script.scriptEnding.connect(function () { - MyAvatar.hmdLeanRecenterEnabled = true; - Script.update.disconnect(update); - shutdownTabletApp(); -}); \ No newline at end of file From 6b2de050651c74fd3755e50e06c0eb67c4b03f49 Mon Sep 17 00:00:00 2001 From: Cristian Duarte Date: Wed, 15 Aug 2018 14:50:53 -0300 Subject: [PATCH 317/332] Android - People - Bigger touch area for friend star --- .../hifiinterface/view/UserListAdapter.java | 21 ++++++++----------- android/app/src/main/res/layout/user_item.xml | 21 ++++++++++++------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java index 7e6ccc10d6..b92c0dd97a 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -105,19 +105,16 @@ public class UserListAdapter extends RecyclerView.Adapter toggle()); } private void refreshUI() { @@ -136,7 +133,7 @@ public class UserListAdapter extends RecyclerView.Adapter - + android:layout_marginEnd="5.5dp"> + + + \ No newline at end of file From dd5bd0229af41014b5f3b95c0da1d0c18501561c Mon Sep 17 00:00:00 2001 From: Cristian Duarte Date: Wed, 15 Aug 2018 14:51:37 -0300 Subject: [PATCH 318/332] Android - People - Hide visit option if user is offline --- .../io/highfidelity/hifiinterface/fragment/FriendsFragment.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java index 2cd80bcca9..37576a0e2f 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java @@ -13,6 +13,7 @@ import android.view.ViewGroup; import com.sothree.slidinguppanel.SlidingUpPanelLayout; import io.highfidelity.hifiinterface.R; +import io.highfidelity.hifiinterface.provider.UsersProvider; import io.highfidelity.hifiinterface.view.UserListAdapter; public class FriendsFragment extends Fragment { @@ -61,6 +62,7 @@ public class FriendsFragment extends Fragment { // .. // 2. adapt options // .. + rootView.findViewById(R.id.userActionVisit).setVisibility(user.online?View.VISIBLE:View.GONE); // 3. show mSlidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); } From 81e24bb28ed02c3bb74d9ac0db2549eb44db7426 Mon Sep 17 00:00:00 2001 From: Cristian Duarte Date: Wed, 15 Aug 2018 17:29:28 -0300 Subject: [PATCH 319/332] Android - People - Remove connection (from People) working with API --- .../fragment/FriendsFragment.java | 46 ++++++++++++++++++- .../hifiinterface/view/UserListAdapter.java | 6 +-- 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java index 37576a0e2f..306b965501 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java @@ -2,7 +2,9 @@ package io.highfidelity.hifiinterface.fragment; import android.app.Fragment; +import android.content.DialogInterface; import android.os.Bundle; +import android.support.v7.app.AlertDialog; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; @@ -13,6 +15,7 @@ import android.view.ViewGroup; import com.sothree.slidinguppanel.SlidingUpPanelLayout; import io.highfidelity.hifiinterface.R; +import io.highfidelity.hifiinterface.provider.EndpointUsersProvider; import io.highfidelity.hifiinterface.provider.UsersProvider; import io.highfidelity.hifiinterface.view.UserListAdapter; @@ -26,6 +29,8 @@ public class FriendsFragment extends Fragment { private View mUserActions; private UserListAdapter mUsersAdapter; private SlidingUpPanelLayout mSlidingUpPanelLayout; + private EndpointUsersProvider mUsersProvider; + private String mSelectedUsername; public FriendsFragment() { // Required empty public constructor @@ -42,6 +47,7 @@ public class FriendsFragment extends Fragment { View rootView = inflater.inflate(R.layout.fragment_friends, container, false); String accessToken = nativeGetAccessToken(); + mUsersProvider = new EndpointUsersProvider(accessToken); Log.d("[USERS]", "token : [" + accessToken + "]"); @@ -49,16 +55,21 @@ public class FriendsFragment extends Fragment { int numberOfColumns = 1; GridLayoutManager gridLayoutMgr = new GridLayoutManager(getContext(), numberOfColumns); mUsersView.setLayoutManager(gridLayoutMgr); - mUsersAdapter = new UserListAdapter(getContext(), accessToken); + + mUsersAdapter = new UserListAdapter(getContext(), mUsersProvider); mUserActions = rootView.findViewById(R.id.userActionsLayout); mSlidingUpPanelLayout = rootView.findViewById(R.id.sliding_layout); mSlidingUpPanelLayout.setPanelHeight(0); + + rootView.findViewById(R.id.userActionDelete).setOnClickListener(view -> onRemoveConnectionClick()); + mUsersAdapter.setClickListener(new UserListAdapter.ItemClickListener() { @Override public void onItemClick(View view, int position, UserListAdapter.User user) { // 1. 'select' user + mSelectedUsername = user.name; // .. // 2. adapt options // .. @@ -73,12 +84,44 @@ public class FriendsFragment extends Fragment { @Override public void onClick(View view) { mSlidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); + mSelectedUsername = null; } }); return rootView; } + private void onRemoveConnectionClick() { + if (mSelectedUsername == null) return; + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setMessage("Remove this user from People?"); + builder.setPositiveButton("Remove", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + mUsersProvider.removeConnection(mSelectedUsername, new UsersProvider.UserActionCallback() { + @Override + public void requestOk() { + // CLD: Show success message + mUsersAdapter.loadUsers(); + } + + @Override + public void requestError(Exception e, String message) { + // CLD: Show error message? + } + }); + } + }); + builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + // Cancelled, nothing to do + } + }); + builder.show(); + } + /** * Processes the back pressed event and returns true if it was managed by this Fragment * @return @@ -86,6 +129,7 @@ public class FriendsFragment extends Fragment { public boolean onBackPressed() { if (mSlidingUpPanelLayout.getPanelState().equals(SlidingUpPanelLayout.PanelState.EXPANDED)) { mSlidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); + mSelectedUsername = null; return true; } else { return false; diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java index b92c0dd97a..c1ea698b08 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -38,14 +38,14 @@ public class UserListAdapter extends RecyclerView.Adapter mUsers = new ArrayList<>(); private ItemClickListener mClickListener; - public UserListAdapter(Context c, String accessToken) { + public UserListAdapter(Context c, UsersProvider usersProvider) { mContext = c; mInflater = LayoutInflater.from(mContext); - mProvider = new EndpointUsersProvider(accessToken); + mProvider = usersProvider; loadUsers(); } - private void loadUsers() { + public void loadUsers() { mProvider.retrieve(new UsersProvider.UsersCallback() { @Override public void retrieveOk(List users) { From 5d44877f5655cd421c763ae17c8bfbe69505d26c Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 15 Aug 2018 13:32:58 -0700 Subject: [PATCH 320/332] Fix functionality sometimes getting stuck if window loses focus --- interface/src/Application.cpp | 20 ++++++++++++++------ interface/src/Application.h | 2 +- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index b5c2800ff1..45a0be98ef 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3705,7 +3705,10 @@ static bool _altPressed{ false }; void Application::keyPressEvent(QKeyEvent* event) { _altPressed = event->key() == Qt::Key_Alt; - _keysPressed.insert(event->key()); + + if (!event->isAutoRepeat()) { + _keysPressed.insert(event->key(), *event); + } _controllerScriptingInterface->emitKeyPressEvent(event); // send events to any registered scripts // if one of our scripts have asked to capture this event, then stop processing it @@ -3916,7 +3919,9 @@ void Application::keyPressEvent(QKeyEvent* event) { } void Application::keyReleaseEvent(QKeyEvent* event) { - _keysPressed.remove(event->key()); + if (!event->isAutoRepeat()) { + _keysPressed.remove(event->key()); + } #if defined(Q_OS_ANDROID) if (event->key() == Qt::Key_Back) { @@ -3952,11 +3957,14 @@ void Application::focusOutEvent(QFocusEvent* event) { #endif // synthesize events for keys currently pressed, since we may not get their release events - foreach (int key, _keysPressed) { - QKeyEvent keyEvent(QEvent::KeyRelease, key, Qt::NoModifier); - keyReleaseEvent(&keyEvent); + // Because our key event handlers may manipulate _keysPressed, lets swap the keys pressed into a local copy, + // clearing the existing list. + QHash keysPressed; + std::swap(keysPressed, _keysPressed); + for (auto& ev : keysPressed) { + QKeyEvent synthesizedEvent { QKeyEvent::KeyRelease, ev.key(), Qt::NoModifier, ev.text() }; + keyReleaseEvent(&synthesizedEvent); } - _keysPressed.clear(); } void Application::maybeToggleMenuVisible(QMouseEvent* event) const { diff --git a/interface/src/Application.h b/interface/src/Application.h index 94e561e550..66388afbde 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -621,7 +621,7 @@ private: float _mirrorYawOffset; float _raiseMirror; - QSet _keysPressed; + QHash _keysPressed; bool _enableProcessOctreeThread; From 24af22a52f37b66296507cc2cae3bb23e61ca6b4 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 15 Aug 2018 13:56:44 -0700 Subject: [PATCH 321/332] Fix edit orbit camera getting stuck zooming --- scripts/system/libraries/entityCameraTool.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/system/libraries/entityCameraTool.js b/scripts/system/libraries/entityCameraTool.js index ebaeb1acb5..73e73d67a6 100644 --- a/scripts/system/libraries/entityCameraTool.js +++ b/scripts/system/libraries/entityCameraTool.js @@ -145,6 +145,10 @@ CameraManager = function() { }); } + for (var action in actions) { + actions[action] = 0; + } + that.enabled = true; that.mode = MODE_INACTIVE; From 2f833f16d8c1795638354b723d611af05fa4caf6 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 15 Aug 2018 14:19:20 -0700 Subject: [PATCH 322/332] Force entity list tool to refresh when opened --- scripts/system/edit.js | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index c4c5561236..2499a244b8 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -871,6 +871,7 @@ var toolBar = (function () { } UserActivityLogger.enabledEdit(); entityListTool.setVisible(true); + entityListTool.sendUpdate(); gridTool.setVisible(true); grid.setEnabled(true); propertiesTool.setVisible(true); From 3217f61a53bf749e93bbe5d299b1abe375552ffd Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Wed, 15 Aug 2018 20:21:34 -0300 Subject: [PATCH 323/332] Android - People - Visit Online connections working --- android/app/src/main/cpp/native.cpp | 5 ++++ .../hifiinterface/InterfaceActivity.java | 5 ++++ .../hifiinterface/MainActivity.java | 16 ++++++++++- .../fragment/FriendsFragment.java | 27 +++++++++++++++++++ .../provider/EndpointUsersProvider.java | 14 ++++++++++ .../hifiinterface/view/UserListAdapter.java | 6 ++++- android/app/src/main/res/layout/user_item.xml | 1 + 7 files changed, 72 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/cpp/native.cpp b/android/app/src/main/cpp/native.cpp index 9f0e088157..ce5af01f29 100644 --- a/android/app/src/main/cpp/native.cpp +++ b/android/app/src/main/cpp/native.cpp @@ -209,6 +209,11 @@ JNIEXPORT void Java_io_highfidelity_hifiinterface_InterfaceActivity_nativeGotoUr DependencyManager::get()->loadSettings(jniUrl.toString()); } +JNIEXPORT void Java_io_highfidelity_hifiinterface_InterfaceActivity_nativeGoToUser(JNIEnv* env, jobject obj, jstring username) { + QAndroidJniObject jniUsername("java/lang/String", "(Ljava/lang/String;)V", username); + DependencyManager::get()->goToUser(jniUsername.toString(), false); +} + JNIEXPORT void Java_io_highfidelity_hifiinterface_InterfaceActivity_nativeOnPause(JNIEnv* env, jobject obj) { } diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java index 8fd8b9d0e6..f161783d6a 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java @@ -48,6 +48,7 @@ import com.google.vr.ndk.base.GvrApi;*/ public class InterfaceActivity extends QtActivity implements WebViewFragment.OnWebViewInteractionListener { public static final String DOMAIN_URL = "url"; + public static final String EXTRA_GOTO_USERNAME = "gotousername"; private static final String TAG = "Interface"; private static final int WEB_DRAWER_RIGHT_MARGIN = 262; private static final int WEB_DRAWER_BOTTOM_MARGIN = 150; @@ -59,6 +60,7 @@ public class InterfaceActivity extends QtActivity implements WebViewFragment.OnW private native long nativeOnCreate(InterfaceActivity instance, AssetManager assetManager); private native void nativeOnDestroy(); private native void nativeGotoUrl(String url); + private native void nativeGoToUser(String username); private native void nativeBeforeEnterBackground(); private native void nativeEnterBackground(); private native void nativeEnterForeground(); @@ -280,6 +282,9 @@ public class InterfaceActivity extends QtActivity implements WebViewFragment.OnW if (intent.hasExtra(DOMAIN_URL)) { webSlidingDrawer.setVisibility(View.GONE); nativeGotoUrl(intent.getStringExtra(DOMAIN_URL)); + } else if (intent.hasExtra(EXTRA_GOTO_USERNAME)) { + webSlidingDrawer.setVisibility(View.GONE); + nativeGoToUser(intent.getStringExtra(EXTRA_GOTO_USERNAME)); } } diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java index d259e18ee7..1916962756 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java @@ -37,7 +37,8 @@ import io.highfidelity.hifiinterface.task.DownloadProfileImageTask; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, LoginFragment.OnLoginInteractionListener, - HomeFragment.OnHomeInteractionListener { + HomeFragment.OnHomeInteractionListener, + FriendsFragment.OnHomeInteractionListener { private static final int PROFILE_PICTURE_PLACEHOLDER = R.drawable.default_profile_avatar; public static final String DEFAULT_FRAGMENT = "Home"; @@ -251,6 +252,14 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On startActivity(intent); } + private void goToUser(String username) { + Intent intent = new Intent(this, InterfaceActivity.class); + intent.putExtra(InterfaceActivity.EXTRA_GOTO_USERNAME, username); + finish(); + intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); + startActivity(intent); + } + @Override public void onLoginCompleted() { loadHomeFragment(); @@ -280,6 +289,11 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On loadPrivacyPolicyFragment(); } + @Override + public void onVisitUserSelected(String username) { + goToUser(username); + } + private class RoundProfilePictureCallback implements Callback { @Override public void onSuccess() { diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java index 306b965501..4d48743883 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java @@ -2,6 +2,7 @@ package io.highfidelity.hifiinterface.fragment; import android.app.Fragment; +import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.support.v7.app.AlertDialog; @@ -32,6 +33,8 @@ public class FriendsFragment extends Fragment { private EndpointUsersProvider mUsersProvider; private String mSelectedUsername; + private OnHomeInteractionListener mListener; + public FriendsFragment() { // Required empty public constructor } @@ -65,6 +68,15 @@ public class FriendsFragment extends Fragment { rootView.findViewById(R.id.userActionDelete).setOnClickListener(view -> onRemoveConnectionClick()); + rootView.findViewById(R.id.userActionVisit).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (mListener != null && mSelectedUsername != null) { + mListener.onVisitUserSelected(mSelectedUsername); + } + } + }); + mUsersAdapter.setClickListener(new UserListAdapter.ItemClickListener() { @Override public void onItemClick(View view, int position, UserListAdapter.User user) { @@ -135,4 +147,19 @@ public class FriendsFragment extends Fragment { return false; } } + + @Override + public void onAttach(Context context) { + super.onAttach(context); + if (context instanceof OnHomeInteractionListener) { + mListener = (OnHomeInteractionListener) context; + } else { + throw new RuntimeException(context.toString() + + " must implement OnHomeInteractionListener"); + } + } + + public interface OnHomeInteractionListener { + void onVisitUserSelected(String username); + } } diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java index 102d0995ee..af5a441737 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java @@ -85,6 +85,10 @@ public class EndpointUsersProvider implements UsersProvider { adapterUser.imageUrl = user.images.thumbnail; adapterUser.name = user.username; adapterUser.online = user.online; + adapterUser.locationName = (user.location != null ? + (user.location.root != null ? user.location.root.name : + (user.location.domain != null ? user.location.domain.name : "")) + : ""); adapterUsers.add(adapterUser); } usersCallback.retrieveOk(adapterUsers); @@ -199,6 +203,7 @@ public class EndpointUsersProvider implements UsersProvider { boolean online; String connection; Images images; + LocationData location; } class Images { @@ -208,4 +213,13 @@ public class EndpointUsersProvider implements UsersProvider { String tiny; } + class LocationData { + public LocationData() {} + NameContainer root; + NameContainer domain; + } + class NameContainer { + String name; + } + } diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java index c1ea698b08..c1a69639c0 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -70,10 +70,12 @@ public class UserListAdapter extends RecyclerView.Adapter From 1a343c1c3313732321c97f364a9ac32ff935c518 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Wed, 15 Aug 2018 20:57:04 -0300 Subject: [PATCH 324/332] Android - People - Hide People menu if the user is not logged in --- .../java/io/highfidelity/hifiinterface/MainActivity.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java index 1916962756..1d34470146 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java @@ -58,6 +58,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On private View mLoginPanel; private View mProfilePanel; private TextView mLogoutOption; + private MenuItem mPeopleMenuItem; private boolean backToScene; @@ -77,6 +78,8 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On mDisplayName = mNavigationView.getHeaderView(0).findViewById(R.id.displayName); mProfilePicture = mNavigationView.getHeaderView(0).findViewById(R.id.profilePicture); + mPeopleMenuItem = mNavigationView.getMenu().findItem(R.id.action_people); + Toolbar toolbar = findViewById(R.id.toolbar); toolbar.setTitleTextAppearance(this, R.style.HomeActionBarTitleStyle); setSupportActionBar(toolbar); @@ -167,11 +170,13 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On mLoginPanel.setVisibility(View.GONE); mProfilePanel.setVisibility(View.VISIBLE); mLogoutOption.setVisibility(View.VISIBLE); + mPeopleMenuItem.setVisible(true); updateProfileHeader(); } else { mLoginPanel.setVisibility(View.VISIBLE); mProfilePanel.setVisibility(View.GONE); mLogoutOption.setVisibility(View.GONE); + mPeopleMenuItem.setVisible(false); mDisplayName.setText(""); } } From 6f83c7bff0dd157d641502503a07a25fedcde260 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Wed, 15 Aug 2018 21:01:42 -0300 Subject: [PATCH 325/332] Android - People - Show name of user to delete in confirmation --- .../io/highfidelity/hifiinterface/fragment/FriendsFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java index 4d48743883..35e64aae2f 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java @@ -107,7 +107,7 @@ public class FriendsFragment extends Fragment { if (mSelectedUsername == null) return; AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - builder.setMessage("Remove this user from People?"); + builder.setMessage("Remove '" + mSelectedUsername + "' from People?"); builder.setPositiveButton("Remove", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { From 43b2a862242dc2b2539197fcf7746844d6edb6cf Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Wed, 15 Aug 2018 21:36:11 -0300 Subject: [PATCH 326/332] Android - People - Make list refreshable --- .../fragment/FriendsFragment.java | 25 +++++++++++++++++++ .../hifiinterface/view/UserListAdapter.java | 21 ++++++++++++++-- .../src/main/res/layout/fragment_friends.xml | 17 ++++++++----- 3 files changed, 55 insertions(+), 8 deletions(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java index 35e64aae2f..b30b387f4b 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java @@ -5,6 +5,7 @@ import android.app.Fragment; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; +import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AlertDialog; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; @@ -34,6 +35,7 @@ public class FriendsFragment extends Fragment { private String mSelectedUsername; private OnHomeInteractionListener mListener; + private SwipeRefreshLayout mSwipeRefreshLayout; public FriendsFragment() { // Required empty public constructor @@ -54,12 +56,15 @@ public class FriendsFragment extends Fragment { Log.d("[USERS]", "token : [" + accessToken + "]"); + mSwipeRefreshLayout = rootView.findViewById(R.id.swipeRefreshLayout); + mUsersView = rootView.findViewById(R.id.rvUsers); int numberOfColumns = 1; GridLayoutManager gridLayoutMgr = new GridLayoutManager(getContext(), numberOfColumns); mUsersView.setLayoutManager(gridLayoutMgr); mUsersAdapter = new UserListAdapter(getContext(), mUsersProvider); + mSwipeRefreshLayout.setRefreshing(true); mUserActions = rootView.findViewById(R.id.userActionsLayout); @@ -90,6 +95,24 @@ public class FriendsFragment extends Fragment { mSlidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); } }); + + mUsersAdapter.setListener(new UserListAdapter.AdapterListener() { + @Override + public void onEmptyAdapter() { + mSwipeRefreshLayout.setRefreshing(false); + } + + @Override + public void onNonEmptyAdapter() { + mSwipeRefreshLayout.setRefreshing(false); + } + + @Override + public void onError(Exception e, String message) { + mSwipeRefreshLayout.setRefreshing(false); + } + }); + mUsersView.setAdapter(mUsersAdapter); mSlidingUpPanelLayout.setFadeOnClickListener(new View.OnClickListener() { @@ -100,6 +123,8 @@ public class FriendsFragment extends Fragment { } }); + mSwipeRefreshLayout.setOnRefreshListener(() -> mUsersAdapter.loadUsers()); + return rootView; } diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java index c1a69639c0..2f1f1c8a82 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -2,7 +2,6 @@ package io.highfidelity.hifiinterface.view; import android.content.Context; import android.graphics.Bitmap; -import android.graphics.PorterDuff; import android.graphics.drawable.BitmapDrawable; import android.net.Uri; import android.support.v4.content.ContextCompat; @@ -23,7 +22,6 @@ import java.util.ArrayList; import java.util.List; import io.highfidelity.hifiinterface.R; -import io.highfidelity.hifiinterface.provider.EndpointUsersProvider; import io.highfidelity.hifiinterface.provider.UsersProvider; /** @@ -37,6 +35,7 @@ public class UserListAdapter extends RecyclerView.Adapter mUsers = new ArrayList<>(); private ItemClickListener mClickListener; + private AdapterListener mAdapterListener; public UserListAdapter(Context c, UsersProvider usersProvider) { mContext = c; @@ -45,17 +44,29 @@ public class UserListAdapter extends RecyclerView.Adapter users) { mUsers = new ArrayList<>(users); notifyDataSetChanged(); + if (mAdapterListener != null) { + if (mUsers.isEmpty()) { + mAdapterListener.onEmptyAdapter(); + } else { + mAdapterListener.onNonEmptyAdapter(); + } + } } @Override public void retrieveError(Exception e, String message) { Log.e("[USERS]", message, e); + if (mAdapterListener != null) mAdapterListener.onError(e, message); } }); } @@ -219,4 +230,10 @@ public class UserListAdapter extends RecyclerView.Adapter - + android:layout_height="match_parent"> + + Date: Thu, 16 Aug 2018 12:36:25 -0300 Subject: [PATCH 327/332] delete access token log --- .../hifiinterface/provider/EndpointUsersProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java index af5a441737..7c32a8e8fb 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java @@ -53,7 +53,7 @@ public class EndpointUsersProvider implements UsersProvider { return chain.proceed(request); } }); - Log.d("[USERZ]", "Authorization: Bearer " + accessToken);// CLD DELETE THIS LINE! + OkHttpClient client = httpClient.build(); mRetrofit = new Retrofit.Builder() From 99760e2b401454cc2da9e37a2a6abe77a36caa85 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Thu, 16 Aug 2018 17:29:25 -0300 Subject: [PATCH 328/332] Android - People - Better navigation after logged in prevents log in screen to appear after pressing back --- .../hifiinterface/MainActivity.java | 74 +++++++++++++++---- android/app/src/main/res/values/strings.xml | 3 + 2 files changed, 64 insertions(+), 13 deletions(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java index 1d34470146..28af228541 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java @@ -7,6 +7,7 @@ import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; +import android.os.Handler; import android.support.annotation.NonNull; import android.support.design.widget.NavigationView; import android.support.v4.content.ContextCompat; @@ -114,7 +115,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On loadLoginFragment(); break; case "Home": - loadHomeFragment(); + loadHomeFragment(true); break; case "Privacy Policy": loadPrivacyPolicyFragment(); @@ -128,33 +129,57 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On } - private void loadHomeFragment() { + private void loadHomeFragment(boolean addToBackStack) { Fragment fragment = HomeFragment.newInstance(); - loadFragment(fragment, getString(R.string.home), true); + loadFragment(fragment, getString(R.string.home), getString(R.string.tagFragmentHome), addToBackStack); } private void loadLoginFragment() { Fragment fragment = LoginFragment.newInstance(); - loadFragment(fragment, getString(R.string.login), true); + loadFragment(fragment, getString(R.string.login), getString(R.string.tagFragmentLogin), true); } private void loadPrivacyPolicyFragment() { Fragment fragment = PolicyFragment.newInstance(); - loadFragment(fragment, getString(R.string.privacyPolicy), true); + loadFragment(fragment, getString(R.string.privacyPolicy), getString(R.string.tagFragmentPolicy), true); } private void loadPeopleFragment() { Fragment fragment = FriendsFragment.newInstance(); - loadFragment(fragment, getString(R.string.people), true); + loadFragment(fragment, getString(R.string.people), getString(R.string.tagFragmentPeople), true); } - private void loadFragment(Fragment fragment, String title, boolean addToBackStack) { + private void loadFragment(Fragment fragment, String title, String tag, boolean addToBackStack) { FragmentManager fragmentManager = getFragmentManager(); + + + // check if it's the same fragment + String currentFragmentName = fragmentManager.getBackStackEntryCount() > 0 + ? fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount() - 1).getName() + : ""; + + Log.d("[BACK]", "Before it's " + currentFragmentName + ", now adding " + title + " (before) backstackCount " + fragmentManager.getBackStackEntryCount()); + + // check if it's the same fragment than the one being shown + if (currentFragmentName.equals(title)) { + mDrawerLayout.closeDrawer(mNavigationView); + return;// cancel as we are already in that fragment + } + + // go back until first transaction + int backStackEntryCount = fragmentManager.getBackStackEntryCount(); + for (int i = 0; i < backStackEntryCount - 1; i++) { + fragmentManager.popBackStackImmediate(); + } + + // this case is when we wanted to go home.. rollback already did that! + // But asking for a new Home fragment makes it easier to have an updated list so we let it to continue + FragmentTransaction ft = fragmentManager.beginTransaction(); - ft.replace(R.id.content_frame, fragment, getString(R.string.tagFragmentPeople)); + ft.replace(R.id.content_frame, fragment, tag); if (addToBackStack) { ft.addToBackStack(title); @@ -162,6 +187,14 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On ft.commit(); setTitle(title); mDrawerLayout.closeDrawer(mNavigationView); + final Handler handler = new Handler(); + handler.postDelayed(new Runnable() { + @Override + public void run() { + //Do something after 100ms + Log.d("[BACK]", "added " + title + " backstackCount " + fragmentManager.getBackStackEntryCount()); + } + }, 100); } @@ -217,7 +250,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch(item.getItemId()) { case R.id.action_home: - loadHomeFragment(); + loadHomeFragment(false); return true; case R.id.action_people: loadPeopleFragment(); @@ -239,6 +272,19 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On public void onLogoutClicked(View view) { nativeLogout(); updateLoginMenu(); + exitLoggedInFragment(); + + } + + private void exitLoggedInFragment() { + // If we are in a "logged in" fragment (like People), go back to home. This could be expanded to multiple fragments + FragmentManager fragmentManager = getFragmentManager(); + String currentFragmentName = fragmentManager.getBackStackEntryCount() > 0 + ? fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount() - 1).getName() + : ""; + if (currentFragmentName.equals(getString(R.string.people))) { + loadHomeFragment(false); + } } public void onSelectedDomain(String domainUrl) { @@ -267,7 +313,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On @Override public void onLoginCompleted() { - loadHomeFragment(); + loadHomeFragment(false); updateLoginMenu(); if (backToScene) { backToScene = false; @@ -319,6 +365,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On public void onBackPressed() { // if a fragment needs to internally manage back presses.. FragmentManager fm = getFragmentManager(); + Log.d("[BACK]", "getBackStackEntryCount " + fm.getBackStackEntryCount()); Fragment friendsFragment = fm.findFragmentByTag(getString(R.string.tagFragmentPeople)); if (friendsFragment != null && friendsFragment instanceof FriendsFragment) { if (((FriendsFragment) friendsFragment).onBackPressed()) { @@ -326,19 +373,20 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On } } - int index = getFragmentManager().getBackStackEntryCount() - 1; + int index = fm.getBackStackEntryCount() - 1; + if (index > 0) { super.onBackPressed(); index--; if (index > -1) { - setTitle(getFragmentManager().getBackStackEntryAt(index).getName()); + setTitle(fm.getBackStackEntryAt(index).getName()); } if (backToScene) { backToScene = false; goToLastLocation(); } } else { - finishAffinity(); + finishAffinity(); } } diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index ea4e59a35a..dae4fe26f9 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -26,5 +26,8 @@ Online + tagFragmentHome + tagFragmentLogin + tagFragmentPolicy tagFragmentPeople From a3927f4d4c0a83151d1bc37b623440cca71ef6b2 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Thu, 16 Aug 2018 17:31:31 -0300 Subject: [PATCH 329/332] Android - People - Remove fragments and stack related logs --- .../highfidelity/hifiinterface/MainActivity.java | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java index 28af228541..db6f0fca24 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java @@ -7,7 +7,6 @@ import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; -import android.os.Handler; import android.support.annotation.NonNull; import android.support.design.widget.NavigationView; import android.support.v4.content.ContextCompat; @@ -155,18 +154,13 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On private void loadFragment(Fragment fragment, String title, String tag, boolean addToBackStack) { FragmentManager fragmentManager = getFragmentManager(); - // check if it's the same fragment String currentFragmentName = fragmentManager.getBackStackEntryCount() > 0 ? fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount() - 1).getName() : ""; - - Log.d("[BACK]", "Before it's " + currentFragmentName + ", now adding " + title + " (before) backstackCount " + fragmentManager.getBackStackEntryCount()); - - // check if it's the same fragment than the one being shown if (currentFragmentName.equals(title)) { mDrawerLayout.closeDrawer(mNavigationView); - return;// cancel as we are already in that fragment + return; // cancel as we are already in that fragment } // go back until first transaction @@ -187,14 +181,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On ft.commit(); setTitle(title); mDrawerLayout.closeDrawer(mNavigationView); - final Handler handler = new Handler(); - handler.postDelayed(new Runnable() { - @Override - public void run() { - //Do something after 100ms - Log.d("[BACK]", "added " + title + " backstackCount " + fragmentManager.getBackStackEntryCount()); - } - }, 100); } From 90429f07cb59a37d1bec3c2c8e0fda7196baf929 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 16 Aug 2018 14:38:32 -0700 Subject: [PATCH 330/332] don't forget to use enqueue the Transaction --- interface/src/avatar/AvatarManager.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index bb517f4d60..09fa6dc573 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -277,6 +277,9 @@ void AvatarManager::updateOtherAvatars(float deltaTime) { sortedAvatars.pop(); } + if (_shouldRender) { + qApp->getMain3DScene()->enqueueTransaction(transaction); + } _numAvatarsUpdated = numAvatarsUpdated; _numAvatarsNotUpdated = numAVatarsNotUpdated; From 4851b44de1720ff2dcb1ea76b7a6f9c07ee18500 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Thu, 16 Aug 2018 19:39:44 -0300 Subject: [PATCH 331/332] Android - People - Hide actions panel after remove --- .../highfidelity/hifiinterface/fragment/FriendsFragment.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java index b30b387f4b..a313b3591e 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java @@ -139,7 +139,8 @@ public class FriendsFragment extends Fragment { mUsersProvider.removeConnection(mSelectedUsername, new UsersProvider.UserActionCallback() { @Override public void requestOk() { - // CLD: Show success message + mSlidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); + mSelectedUsername = null; mUsersAdapter.loadUsers(); } From ccb5bae4b6c942acb304176a2feabb0ab440bfad Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Fri, 17 Aug 2018 14:24:04 -0300 Subject: [PATCH 332/332] Android - People - Code review --- .../hifiinterface/fragment/FriendsFragment.java | 6 ++++-- .../hifiinterface/view/UserListAdapter.java | 16 ++++++++++++---- android/app/src/main/res/values/strings.xml | 1 - 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java index a313b3591e..2a008d7950 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java @@ -90,7 +90,7 @@ public class FriendsFragment extends Fragment { // .. // 2. adapt options // .. - rootView.findViewById(R.id.userActionVisit).setVisibility(user.online?View.VISIBLE:View.GONE); + rootView.findViewById(R.id.userActionVisit).setVisibility(user.online ? View.VISIBLE : View.GONE); // 3. show mSlidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); } @@ -129,7 +129,9 @@ public class FriendsFragment extends Fragment { } private void onRemoveConnectionClick() { - if (mSelectedUsername == null) return; + if (mSelectedUsername == null) { + return; + } AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage("Remove '" + mSelectedUsername + "' from People?"); diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java index 2f1f1c8a82..9f62b21250 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -66,7 +66,9 @@ public class UserListAdapter extends RecyclerView.Adapter Interface Home - Friends People Open in browser Share link

      odfr`WG-GKwz4N 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 Date: Thu, 9 Aug 2018 13:35:55 -0700 Subject: [PATCH 251/332] tweak rotation ring size --- scripts/system/libraries/entitySelectionTool.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/libraries/entitySelectionTool.js b/scripts/system/libraries/entitySelectionTool.js index b04f7f981b..189eab7332 100644 --- a/scripts/system/libraries/entitySelectionTool.js +++ b/scripts/system/libraries/entitySelectionTool.js @@ -413,7 +413,7 @@ SelectionDisplay = (function() { var ROTATE_CTRL_SNAP_ANGLE = 22.5; var ROTATE_DEFAULT_SNAP_ANGLE = 1; var ROTATE_DEFAULT_TICK_MARKS_ANGLE = 5; - var ROTATE_RING_IDLE_INNER_RADIUS = 0.95; + var ROTATE_RING_IDLE_INNER_RADIUS = 0.92; var ROTATE_RING_SELECTED_INNER_RADIUS = 0.9; // These are multipliers for sizing the rotation degrees display while rotating an entity From 08acfb6bf048508ba99a54e6f254467247d7ee64 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Thu, 9 Aug 2018 13:37:28 -0700 Subject: [PATCH 252/332] Use correct case. --- tools/auto-tester/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/auto-tester/README.md b/tools/auto-tester/README.md index 6a45f7a7fa..fd6bc7e519 100644 --- a/tools/auto-tester/README.md +++ b/tools/auto-tester/README.md @@ -13,7 +13,7 @@ Auto-tester has 4 functions, separated into 4 tabs: ## Installation 1. Download the installer by browsing to [here](). 2. Double click on the installer and install to a convenient location -![](./setup_7z.png) +![](./setup_7z.PNG) 3. To run the auto-tester, double click **auto-tester.exe**. # Create ![](./Create.PNG) @@ -104,7 +104,7 @@ Evaluation proceeds in a number of steps: 1. The images are then pair-wise compared, using the SSIM algorithm. A fixed threshold is used to define a mismatch. 1. In interactive mode - a window is opened showing the expected image, actual image, difference image and error: -![](./autoTesterMismatchExample.png) +![](./autoTesterMismatchExample.PNG) 1. If not in interactive mode, or the user has defined the results as an error, an error is written into the error folder. The error itself is a folder with the 3 images and a small text file containing details. From 60338f98991e6de42957942a7fe28062d0d757d8 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Thu, 9 Aug 2018 17:54:07 -0300 Subject: [PATCH 253/332] Android - People - Swipe to reveal delete + layout adaptations for design --- .../hifiinterface/view/SwipeRevealLayout.java | 729 ++++++++++++++++++ .../hifiinterface/view/UserListAdapter.java | 14 +- android/app/src/main/res/layout/user_item.xml | 78 +- android/app/src/main/res/values/attrs.xml | 9 + 4 files changed, 810 insertions(+), 20 deletions(-) create mode 100644 android/app/src/main/java/io/highfidelity/hifiinterface/view/SwipeRevealLayout.java create mode 100644 android/app/src/main/res/values/attrs.xml diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/SwipeRevealLayout.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/SwipeRevealLayout.java new file mode 100644 index 0000000000..06ac4ac3ec --- /dev/null +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/SwipeRevealLayout.java @@ -0,0 +1,729 @@ +package io.highfidelity.hifiinterface.view; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.graphics.Rect; +import android.os.Bundle; +import android.os.Parcelable; +import android.support.annotation.Nullable; +import android.support.v4.view.GestureDetectorCompat; +import android.support.v4.view.ViewCompat; +import android.support.v4.widget.ViewDragHelper; +import android.util.AttributeSet; +import android.util.DisplayMetrics; +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; + +import io.highfidelity.hifiinterface.R; + +/** + * Created by Mark O'Sullivan on 25th February 2018. + + MIT License + + Copyright (c) 2018 Mark O'Sullivan + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + + */ + +@SuppressLint("RtlHardcoded") +public class SwipeRevealLayout extends ViewGroup { + + private static final String SUPER_INSTANCE_STATE = "saved_instance_state_parcelable"; + + private static final int DEFAULT_MIN_FLING_VELOCITY = 300; // dp per second + private static final int DEFAULT_MIN_DIST_REQUEST_DISALLOW_PARENT = 1; // dp + + public static final int DRAG_EDGE_LEFT = 0x1; + public static final int DRAG_EDGE_RIGHT = 0x1 << 1; + + /** + * The secondary view will be under the main view. + */ + public static final int MODE_NORMAL = 0; + + /** + * The secondary view will stick the edge of the main view. + */ + public static final int MODE_SAME_LEVEL = 1; + + /** + * Main view is the view which is shown when the layout is closed. + */ + private View mMainView; + + /** + * Secondary view is the view which is shown when the layout is opened. + */ + private View mSecondaryView; + + /** + * The rectangle position of the main view when the layout is closed. + */ + private Rect mRectMainClose = new Rect(); + + /** + * The rectangle position of the main view when the layout is opened. + */ + private Rect mRectMainOpen = new Rect(); + + /** + * The rectangle position of the secondary view when the layout is closed. + */ + private Rect mRectSecClose = new Rect(); + + /** + * The rectangle position of the secondary view when the layout is opened. + */ + private Rect mRectSecOpen = new Rect(); + + /** + * The minimum distance (px) to the closest drag edge that the SwipeRevealLayout + * will disallow the parent to intercept touch event. + */ + private int mMinDistRequestDisallowParent = 0; + + private boolean mIsOpenBeforeInit = false; + private volatile boolean mIsScrolling = false; + private volatile boolean mLockDrag = false; + + private int mMinFlingVelocity = DEFAULT_MIN_FLING_VELOCITY; + private int mMode = MODE_NORMAL; + + private int mDragEdge = DRAG_EDGE_LEFT; + + private float mDragDist = 0; + private float mPrevX = -1; + + private ViewDragHelper mDragHelper; + private GestureDetectorCompat mGestureDetector; + + public SwipeRevealLayout(Context context) { + super(context); + init(context, null); + } + + public SwipeRevealLayout(Context context, AttributeSet attrs) { + super(context, attrs); + init(context, attrs); + } + + public SwipeRevealLayout(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Nullable + @Override + protected Parcelable onSaveInstanceState() { + Bundle bundle = new Bundle(); + bundle.putParcelable(SUPER_INSTANCE_STATE, super.onSaveInstanceState()); + return super.onSaveInstanceState(); + } + + @Override + protected void onRestoreInstanceState(Parcelable state) { + Bundle bundle = (Bundle) state; + state = bundle.getParcelable(SUPER_INSTANCE_STATE); + super.onRestoreInstanceState(state); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + mGestureDetector.onTouchEvent(event); + mDragHelper.processTouchEvent(event); + return true; + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + if (isDragLocked()) { + return super.onInterceptTouchEvent(ev); + } + + mDragHelper.processTouchEvent(ev); + mGestureDetector.onTouchEvent(ev); + accumulateDragDist(ev); + + boolean couldBecomeClick = couldBecomeClick(ev); + boolean settling = mDragHelper.getViewDragState() == ViewDragHelper.STATE_SETTLING; + boolean idleAfterScrolled = mDragHelper.getViewDragState() == ViewDragHelper.STATE_IDLE + && mIsScrolling; + + // must be placed as the last statement + mPrevX = ev.getX(); + + // return true => intercept, cannot trigger onClick event + return !couldBecomeClick && (settling || idleAfterScrolled); + } + + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + + // get views + if (getChildCount() >= 2) { + mSecondaryView = getChildAt(0); + mMainView = getChildAt(1); + } + else if (getChildCount() == 1) { + mMainView = getChildAt(0); + } + } + + /** + * {@inheritDoc} + */ + @SuppressWarnings("ConstantConditions") + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + for (int index = 0; index < getChildCount(); index++) { + final View child = getChildAt(index); + + int left, right, top, bottom; + left = right = top = bottom = 0; + + final int minLeft = getPaddingLeft(); + final int maxRight = Math.max(r - getPaddingRight() - l, 0); + final int minTop = getPaddingTop(); + final int maxBottom = Math.max(b - getPaddingBottom() - t, 0); + + int measuredChildHeight = child.getMeasuredHeight(); + int measuredChildWidth = child.getMeasuredWidth(); + + // need to take account if child size is match_parent + final LayoutParams childParams = child.getLayoutParams(); + boolean matchParentHeight = false; + boolean matchParentWidth = false; + + if (childParams != null) { + matchParentHeight = (childParams.height == LayoutParams.MATCH_PARENT) || + (childParams.height == LayoutParams.FILL_PARENT); + matchParentWidth = (childParams.width == LayoutParams.MATCH_PARENT) || + (childParams.width == LayoutParams.FILL_PARENT); + } + + if (matchParentHeight) { + measuredChildHeight = maxBottom - minTop; + childParams.height = measuredChildHeight; + } + + if (matchParentWidth) { + measuredChildWidth = maxRight - minLeft; + childParams.width = measuredChildWidth; + } + + switch (mDragEdge) { + case DRAG_EDGE_RIGHT: + left = Math.max(r - measuredChildWidth - getPaddingRight() - l, minLeft); + top = Math.min(getPaddingTop(), maxBottom); + right = Math.max(r - getPaddingRight() - l, minLeft); + bottom = Math.min(measuredChildHeight + getPaddingTop(), maxBottom); + break; + + case DRAG_EDGE_LEFT: + left = Math.min(getPaddingLeft(), maxRight); + top = Math.min(getPaddingTop(), maxBottom); + right = Math.min(measuredChildWidth + getPaddingLeft(), maxRight); + bottom = Math.min(measuredChildHeight + getPaddingTop(), maxBottom); + break; + } + + child.layout(left, top, right, bottom); + } + + // taking account offset when mode is SAME_LEVEL + if (mMode == MODE_SAME_LEVEL) { + switch (mDragEdge) { + case DRAG_EDGE_LEFT: + mSecondaryView.offsetLeftAndRight(-mSecondaryView.getWidth()); + break; + + case DRAG_EDGE_RIGHT: + mSecondaryView.offsetLeftAndRight(mSecondaryView.getWidth()); + break; + } + } + + initRects(); + + if (mIsOpenBeforeInit) { + open(false); + } else { + close(false); + } + + } + + /** + * {@inheritDoc} + */ + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (getChildCount() < 2) { + throw new RuntimeException("Layout must have two children"); + } + + final LayoutParams params = getLayoutParams(); + + final int widthMode = MeasureSpec.getMode(widthMeasureSpec); + final int heightMode = MeasureSpec.getMode(heightMeasureSpec); + + int desiredWidth = 0; + int desiredHeight = 0; + + // first find the largest child + for (int i = 0; i < getChildCount(); i++) { + final View child = getChildAt(i); + measureChild(child, widthMeasureSpec, heightMeasureSpec); + desiredWidth = Math.max(child.getMeasuredWidth(), desiredWidth); + desiredHeight = Math.max(child.getMeasuredHeight(), desiredHeight); + } + // create new measure spec using the largest child width + widthMeasureSpec = MeasureSpec.makeMeasureSpec(desiredWidth, widthMode); + heightMeasureSpec = MeasureSpec.makeMeasureSpec(desiredHeight, heightMode); + + final int measuredWidth = MeasureSpec.getSize(widthMeasureSpec); + final int measuredHeight = MeasureSpec.getSize(heightMeasureSpec); + + for (int i = 0; i < getChildCount(); i++) { + final View child = getChildAt(i); + final LayoutParams childParams = child.getLayoutParams(); + + if (childParams != null) { + if (childParams.height == LayoutParams.MATCH_PARENT) { + child.setMinimumHeight(measuredHeight); + } + + if (childParams.width == LayoutParams.MATCH_PARENT) { + child.setMinimumWidth(measuredWidth); + } + } + + measureChild(child, widthMeasureSpec, heightMeasureSpec); + desiredWidth = Math.max(child.getMeasuredWidth(), desiredWidth); + desiredHeight = Math.max(child.getMeasuredHeight(), desiredHeight); + } + + // taking accounts of padding + desiredWidth += getPaddingLeft() + getPaddingRight(); + desiredHeight += getPaddingTop() + getPaddingBottom(); + + // adjust desired width + if (widthMode == MeasureSpec.EXACTLY) { + desiredWidth = measuredWidth; + } else { + if (params.width == LayoutParams.MATCH_PARENT) { + desiredWidth = measuredWidth; + } + + if (widthMode == MeasureSpec.AT_MOST) { + desiredWidth = (desiredWidth > measuredWidth)? measuredWidth : desiredWidth; + } + } + + // adjust desired height + if (heightMode == MeasureSpec.EXACTLY) { + desiredHeight = measuredHeight; + } else { + if (params.height == LayoutParams.MATCH_PARENT) { + desiredHeight = measuredHeight; + } + + if (heightMode == MeasureSpec.AT_MOST) { + desiredHeight = (desiredHeight > measuredHeight)? measuredHeight : desiredHeight; + } + } + + setMeasuredDimension(desiredWidth, desiredHeight); + } + + @Override + public void computeScroll() { + if (mDragHelper.continueSettling(true)) { + ViewCompat.postInvalidateOnAnimation(this); + } + } + + /** + * Open the panel to show the secondary view + */ + public void open(boolean animation) { + mIsOpenBeforeInit = true; + + if (animation) { + mDragHelper.smoothSlideViewTo(mMainView, mRectMainOpen.left, mRectMainOpen.top); + } else { + mDragHelper.abort(); + + mMainView.layout( + mRectMainOpen.left, + mRectMainOpen.top, + mRectMainOpen.right, + mRectMainOpen.bottom + ); + + mSecondaryView.layout( + mRectSecOpen.left, + mRectSecOpen.top, + mRectSecOpen.right, + mRectSecOpen.bottom + ); + } + + ViewCompat.postInvalidateOnAnimation(this); + } + + /** + * Close the panel to hide the secondary view + */ + public void close(boolean animation) { + mIsOpenBeforeInit = false; + + if (animation) { + mDragHelper.smoothSlideViewTo(mMainView, mRectMainClose.left, mRectMainClose.top); + } else { + mDragHelper.abort(); + mMainView.layout( + mRectMainClose.left, + mRectMainClose.top, + mRectMainClose.right, + mRectMainClose.bottom + ); + mSecondaryView.layout( + mRectSecClose.left, + mRectSecClose.top, + mRectSecClose.right, + mRectSecClose.bottom + ); + } + + ViewCompat.postInvalidateOnAnimation(this); + } + + /** + * @return true if the drag/swipe motion is currently locked. + */ + public boolean isDragLocked() { + return mLockDrag; + } + + private int getMainOpenLeft() { + switch (mDragEdge) { + case DRAG_EDGE_LEFT: + return mRectMainClose.left + mSecondaryView.getWidth(); + + case DRAG_EDGE_RIGHT: + return mRectMainClose.left - mSecondaryView.getWidth(); + + + default: + return 0; + } + } + + private int getMainOpenTop() { + switch (mDragEdge) { + case DRAG_EDGE_LEFT: + return mRectMainClose.top; + + case DRAG_EDGE_RIGHT: + return mRectMainClose.top; + + + default: + return 0; + } + } + + private int getSecOpenLeft() { + return mRectSecClose.left; + } + + private int getSecOpenTop() { + return mRectSecClose.top; + } + + private void initRects() { + // close position of main view + mRectMainClose.set( + mMainView.getLeft(), + mMainView.getTop(), + mMainView.getRight(), + mMainView.getBottom() + ); + + // close position of secondary view + mRectSecClose.set( + mSecondaryView.getLeft(), + mSecondaryView.getTop(), + mSecondaryView.getRight(), + mSecondaryView.getBottom() + ); + + // open position of the main view + mRectMainOpen.set( + getMainOpenLeft(), + getMainOpenTop(), + getMainOpenLeft() + mMainView.getWidth(), + getMainOpenTop() + mMainView.getHeight() + ); + + // open position of the secondary view + mRectSecOpen.set( + getSecOpenLeft(), + getSecOpenTop(), + getSecOpenLeft() + mSecondaryView.getWidth(), + getSecOpenTop() + mSecondaryView.getHeight() + ); + } + + private boolean couldBecomeClick(MotionEvent ev) { + return isInMainView(ev) && !shouldInitiateADrag(); + } + + private boolean isInMainView(MotionEvent ev) { + float x = ev.getX(); + float y = ev.getY(); + + boolean withinVertical = mMainView.getTop() <= y && y <= mMainView.getBottom(); + boolean withinHorizontal = mMainView.getLeft() <= x && x <= mMainView.getRight(); + + return withinVertical && withinHorizontal; + } + + private boolean shouldInitiateADrag() { + float minDistToInitiateDrag = mDragHelper.getTouchSlop(); + return mDragDist >= minDistToInitiateDrag; + } + + private void accumulateDragDist(MotionEvent ev) { + final int action = ev.getAction(); + if (action == MotionEvent.ACTION_DOWN) { + mDragDist = 0; + return; + } + + float dragged = Math.abs(ev.getX() - mPrevX); + + mDragDist += dragged; + } + + private void init(Context context, AttributeSet attrs) { + if (attrs != null && context != null) { + TypedArray a = context.getTheme().obtainStyledAttributes( + attrs, + R.styleable.SwipeRevealLayout, + 0, 0 + ); + + mDragEdge = a.getInteger(R.styleable.SwipeRevealLayout_dragFromEdge, DRAG_EDGE_LEFT); + mMode = MODE_NORMAL; + mMinFlingVelocity = DEFAULT_MIN_FLING_VELOCITY; + mMinDistRequestDisallowParent = DEFAULT_MIN_DIST_REQUEST_DISALLOW_PARENT; + } + + mDragHelper = ViewDragHelper.create(this, 1.0f, mDragHelperCallback); + mDragHelper.setEdgeTrackingEnabled(ViewDragHelper.EDGE_ALL); + + mGestureDetector = new GestureDetectorCompat(context, mGestureListener); + } + + private final GestureDetector.OnGestureListener mGestureListener = new GestureDetector.SimpleOnGestureListener() { + boolean hasDisallowed = false; + + @Override + public boolean onDown(MotionEvent e) { + mIsScrolling = false; + hasDisallowed = false; + return true; + } + + @Override + public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { + mIsScrolling = true; + return false; + } + + @Override + public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { + mIsScrolling = true; + + if (getParent() != null) { + boolean shouldDisallow; + + if (!hasDisallowed) { + shouldDisallow = getDistToClosestEdge() >= mMinDistRequestDisallowParent; + if (shouldDisallow) { + hasDisallowed = true; + } + } else { + shouldDisallow = true; + } + + // disallow parent to intercept touch event so that the layout will work + // properly on RecyclerView or view that handles scroll gesture. + getParent().requestDisallowInterceptTouchEvent(shouldDisallow); + } + + return false; + } + }; + + private int getDistToClosestEdge() { + switch (mDragEdge) { + case DRAG_EDGE_LEFT: + final int pivotRight = mRectMainClose.left + mSecondaryView.getWidth(); + + return Math.min( + mMainView.getLeft() - mRectMainClose.left, + pivotRight - mMainView.getLeft() + ); + + case DRAG_EDGE_RIGHT: + final int pivotLeft = mRectMainClose.right - mSecondaryView.getWidth(); + + return Math.min( + mMainView.getRight() - pivotLeft, + mRectMainClose.right - mMainView.getRight() + ); + } + + return 0; + } + + private int getHalfwayPivotHorizontal() { + if (mDragEdge == DRAG_EDGE_LEFT) { + return mRectMainClose.left + mSecondaryView.getWidth() / 2; + } else { + return mRectMainClose.right - mSecondaryView.getWidth() / 2; + } + } + + private final ViewDragHelper.Callback mDragHelperCallback = new ViewDragHelper.Callback() { + @Override + public boolean tryCaptureView(View child, int pointerId) { + + if (mLockDrag) + return false; + + mDragHelper.captureChildView(mMainView, pointerId); + return false; + } + + @Override + public int clampViewPositionHorizontal(View child, int left, int dx) { + switch (mDragEdge) { + case DRAG_EDGE_RIGHT: + return Math.max( + Math.min(left, mRectMainClose.left), + mRectMainClose.left - mSecondaryView.getWidth() + ); + + case DRAG_EDGE_LEFT: + return Math.max( + Math.min(left, mRectMainClose.left + mSecondaryView.getWidth()), + mRectMainClose.left + ); + + default: + return child.getLeft(); + } + } + + @Override + public void onViewReleased(View releasedChild, float xvel, float yvel) { + final boolean velRightExceeded = pxToDp((int) xvel) >= mMinFlingVelocity; + final boolean velLeftExceeded = pxToDp((int) xvel) <= -mMinFlingVelocity; + + final int pivotHorizontal = getHalfwayPivotHorizontal(); + + switch (mDragEdge) { + case DRAG_EDGE_RIGHT: + if (velRightExceeded) { + close(true); + } else if (velLeftExceeded) { + open(true); + } else { + if (mMainView.getRight() < pivotHorizontal) { + open(true); + } else { + close(true); + } + } + break; + + case DRAG_EDGE_LEFT: + if (velRightExceeded) { + open(true); + } else if (velLeftExceeded) { + close(true); + } else { + if (mMainView.getLeft() < pivotHorizontal) { + close(true); + } else { + open(true); + } + } + break; + } + } + + @Override + public void onEdgeDragStarted(int edgeFlags, int pointerId) { + super.onEdgeDragStarted(edgeFlags, pointerId); + + if (mLockDrag) { + return; + } + + boolean edgeStartLeft = (mDragEdge == DRAG_EDGE_RIGHT) + && edgeFlags == ViewDragHelper.EDGE_LEFT; + + boolean edgeStartRight = (mDragEdge == DRAG_EDGE_LEFT) + && edgeFlags == ViewDragHelper.EDGE_RIGHT; + + if (edgeStartLeft || edgeStartRight) { + mDragHelper.captureChildView(mMainView, pointerId); + } + } + + @Override + public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) { + super.onViewPositionChanged(changedView, left, top, dx, dy); + if (mMode == MODE_SAME_LEVEL) { + if (mDragEdge == DRAG_EDGE_LEFT || mDragEdge == DRAG_EDGE_RIGHT) { + mSecondaryView.offsetLeftAndRight(dx); + } else { + mSecondaryView.offsetTopAndBottom(dy); + } + } + ViewCompat.postInvalidateOnAnimation(SwipeRevealLayout.this); + } + }; + + private int pxToDp(int px) { + Resources resources = getContext().getResources(); + DisplayMetrics metrics = resources.getDisplayMetrics(); + return (int) (px / ((float)metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT)); + } +} \ No newline at end of file diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java index 32993500fe..79a931d93b 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -7,8 +7,11 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; +import android.widget.Toast; import com.squareup.picasso.Picasso; @@ -62,7 +65,14 @@ public class UserListAdapter extends RecyclerView.Adapter - + android:layout_gravity="center_vertical" + app:dragFromEdge="right"> - - + android:layout_height="match_parent" + android:background="@android:color/holo_red_dark"> + - + + + - \ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/values/attrs.xml b/android/app/src/main/res/values/attrs.xml new file mode 100644 index 0000000000..c12f28ccde --- /dev/null +++ b/android/app/src/main/res/values/attrs.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file From 3b7d1cb6cfdab27c24d018ac33d08604ef68936c Mon Sep 17 00:00:00 2001 From: David Kelly Date: Thu, 9 Aug 2018 13:56:42 -0700 Subject: [PATCH 254/332] Only update gain if it really changed and only fire UserActivity if we really do change the gain --- interface/resources/qml/hifi/NameCard.qml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/interface/resources/qml/hifi/NameCard.qml b/interface/resources/qml/hifi/NameCard.qml index c7c2174e9f..780679d183 100644 --- a/interface/resources/qml/hifi/NameCard.qml +++ b/interface/resources/qml/hifi/NameCard.qml @@ -526,12 +526,15 @@ Item { anchors.left: nameCardVUMeter.left; // Properties visible: (isMyCard || (selected && pal.activeTab == "nearbyTab")) && isPresent; - value: Users.getAvatarGain(uuid) minimumValue: -60.0 maximumValue: 20.0 stepSize: 5 updateValueWhileDragging: true + Component.onCompleted: { + value = Users.getAvatarGain(uuid); + } onValueChanged: { + console.log("onValueChanged:" + uuid + ", value="+value); updateGainFromQML(uuid, value, false); } onPressedChanged: { @@ -587,9 +590,11 @@ Item { } function updateGainFromQML(avatarUuid, sliderValue, isReleased) { - Users.setAvatarGain(avatarUuid, sliderValue); - if (isReleased) { - UserActivityLogger.palAction("avatar_gain_changed", avatarUuid); + if (Users.getAvatarGain(avatarUuid) != sliderValue) { + Users.setAvatarGain(avatarUuid, sliderValue); + if (isReleased) { + UserActivityLogger.palAction("avatar_gain_changed", avatarUuid); + } } } From 4d31863484cbe2b85f9e4fc0a54ad74562177db5 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 9 Aug 2018 15:08:27 -0700 Subject: [PATCH 255/332] Fix missing jsdoc note for getPrevPickResult on existence of ParabolaPickResult --- interface/src/raypick/PickScriptingInterface.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index e1431c3937..982210e8e7 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -169,7 +169,7 @@ public: * Get the most recent pick result from this Pick. This will be updated as long as the Pick is enabled. * @function Picks.getPrevPickResult * @param {number} uid The ID of the Pick, as returned by {@link Picks.createPick}. - * @returns {RayPickResult|StylusPickResult|CollisionPickResult} The most recent intersection result. This will be different for different PickTypes. + * @returns {RayPickResult|StylusPickResult|ParabolaPickResult|CollisionPickResult} The most recent intersection result. This will be different for different PickTypes. */ Q_INVOKABLE QVariantMap getPrevPickResult(unsigned int uid); From 4f077080b02ad7e3508db7baf938ae7402089de1 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 9 Aug 2018 15:29:21 -0700 Subject: [PATCH 256/332] Change API naming for intersectingObjects in CollisionPickResult and update docs --- interface/src/raypick/CollisionPick.cpp | 6 +++--- .../src/raypick/PickScriptingInterface.h | 21 ++++++++++++------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index d5b1949f31..bef93f8efc 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -47,8 +47,8 @@ QVariantMap CollisionPickResult::toVariantMap() const { } QVariantMap collisionPointPair; - collisionPointPair["pick"] = vec3toVariant(objectIntersection.testCollisionPoint); - collisionPointPair["object"] = vec3toVariant(objectIntersection.foundCollisionPoint); + collisionPointPair["pickContactPoint"] = vec3toVariant(objectIntersection.testCollisionPoint); + collisionPointPair["objectContactPoint"] = vec3toVariant(objectIntersection.foundCollisionPoint); collisionPointPairs[objectIntersection.foundID].append(collisionPointPair); } @@ -59,7 +59,7 @@ QVariantMap CollisionPickResult::toVariantMap() const { const QUuid& id = intersectionKeyVal.first; QVariantMap& intersection = intersectionKeyVal.second; - intersection["collisionPointPairs"] = collisionPointPairs[id]; + intersection["contactPointPairs"] = collisionPointPairs[id]; qIntersectingObjects.append(intersection); } diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 982210e8e7..a13e7551d9 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -148,21 +148,28 @@ public: * * @typedef {object} CollisionPickResult * @property {boolean} intersects If there was at least one valid intersection (entityIntersections.length + avatarIntersections.length > 0) - * @property {EntityItersection[]} entityIntersections The collision information of entities which intersect with the CollisionRegion. There may be multiple intersections with the same entity which represent distinct collision points. - * @property {EntityItersection[]} avatarIntersections The collision information of avatars which intersect with the CollisionRegion. There may be multiple intersections with the same entity which represent distinct collision points. + * @property {IntersectingObject[]} intersectingObjects The collision information of each object which intersect with the CollisionRegion. * @property {CollisionRegion} collisionRegion The CollisionRegion that was used. Valid even if there was no intersection. */ // TODO: Add this to the CollisionPickResult jsdoc once model collision picks are working //* @property {boolean} loaded If the CollisionRegion was successfully loaded (may be false if a model was used) + /**jsdoc + * Information about the Collision Pick's intersection with an object + * + * @typedef {object} IntersectingObject + * @property {QUuid} id The ID of the object. + * @property {number} type The type of the object, either Picks.INTERSECTED_ENTITY() or Picks.INTERSECTED_AVATAR() + * @property {ContactPointPair[]} contactPointPairs Pairs of points representing penetration information between the pick and the object + */ + /**jsdoc - * A pair of intersection points between a CollisionPick and an entity/avatar. + * A pair of points that represents part of an overlap between a Collision Pick and an object in the physics engine. Points which are further apart represent deeper overlap * - * @typedef {object} EntityIntersection - * @property {QUuid} id The ID of the object. - * @property {Vec3} pickCollisionPoint A point within the volume of the CollisionPick which corresponds to a point on the surface of the collided entity, in world space. - * @property {Vec3} entityCollisionPoint A point within the volume of the collided entity which corresponds to a point on the surface of the CollisionPick, in world space. + * @typedef {object} ContactPointPair + * @property {Vec3} pickContactPoint A point representing a penetration of the object's surface into the volume of the pick, in world space. + * @property {Vec3} objectContactPoint A point representing a penetration of the pick's surface into the volume of the found object, in world space. */ /**jsdoc From 5fd3862c9421c30a8c30efd09dd7dfea2b7ec9ca Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 10 Aug 2018 00:45:25 +0200 Subject: [PATCH 257/332] FIx shader error on mac in shadow.slh --- libraries/render-utils/src/Shadow.slh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/Shadow.slh b/libraries/render-utils/src/Shadow.slh index c3583a01ad..85a30d5889 100644 --- a/libraries/render-utils/src/Shadow.slh +++ b/libraries/render-utils/src/Shadow.slh @@ -104,7 +104,7 @@ float evalShadowAttenuation(vec3 worldLightDir, vec4 worldPosition, float viewDe vec3 cascadeMix; bvec4 isPixelOnCascade; int cascadeIndex; - const float oneMinusNdotL = 1.0 - clamp(dot(worldLightDir, worldNormal), 0, 1); + float oneMinusNdotL = 1.0 - clamp(dot(worldLightDir, worldNormal), 0, 1); for (cascadeIndex=0 ; cascadeIndex Date: Thu, 9 Aug 2018 16:00:36 -0700 Subject: [PATCH 258/332] Adding icon states to emote app, active state --- .../icons/tablet-icons/EmoteAppIcon.svg | 39 ------------------- .../resources/icons/tablet-icons/emote-a.svg | 30 ++++++++++++++ .../resources/icons/tablet-icons/emote-i.svg | 33 ++++++++++++++++ scripts/system/emote.js | 3 +- 4 files changed, 65 insertions(+), 40 deletions(-) delete mode 100644 interface/resources/icons/tablet-icons/EmoteAppIcon.svg create mode 100644 interface/resources/icons/tablet-icons/emote-a.svg create mode 100644 interface/resources/icons/tablet-icons/emote-i.svg diff --git a/interface/resources/icons/tablet-icons/EmoteAppIcon.svg b/interface/resources/icons/tablet-icons/EmoteAppIcon.svg deleted file mode 100644 index cef6e8771b..0000000000 --- a/interface/resources/icons/tablet-icons/EmoteAppIcon.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - diff --git a/interface/resources/icons/tablet-icons/emote-a.svg b/interface/resources/icons/tablet-icons/emote-a.svg new file mode 100644 index 0000000000..981bb77566 --- /dev/null +++ b/interface/resources/icons/tablet-icons/emote-a.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + diff --git a/interface/resources/icons/tablet-icons/emote-i.svg b/interface/resources/icons/tablet-icons/emote-i.svg new file mode 100644 index 0000000000..57a957052e --- /dev/null +++ b/interface/resources/icons/tablet-icons/emote-i.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + diff --git a/scripts/system/emote.js b/scripts/system/emote.js index d484078b7b..6dfd1ae1ef 100644 --- a/scripts/system/emote.js +++ b/scripts/system/emote.js @@ -46,7 +46,8 @@ var activeTimer = false; // Used to cancel active timer if a user plays an anima var activeEmote = false; // To keep track of the currently playing emote button = tablet.addButton({ - icon: "icons/tablet-icons/EmoteAppIcon.svg", + icon: "icons/tablet-icons/emote-i.svg", + activeIcon: "icons/tablet-icons/emote-a.svg", text: EMOTE_LABEL, sortOrder: EMOTE_APP_SORT_ORDER }); From c5e9f02372c25bea79823bf0f01f974ffcc414f4 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 9 Aug 2018 16:59:23 -0700 Subject: [PATCH 259/332] Finalize Collision Pick API naming convention for intersectingObjects --- interface/src/raypick/CollisionPick.cpp | 6 +++--- interface/src/raypick/PickScriptingInterface.h | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index bef93f8efc..73d2dfe67a 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -47,8 +47,8 @@ QVariantMap CollisionPickResult::toVariantMap() const { } QVariantMap collisionPointPair; - collisionPointPair["pickContactPoint"] = vec3toVariant(objectIntersection.testCollisionPoint); - collisionPointPair["objectContactPoint"] = vec3toVariant(objectIntersection.foundCollisionPoint); + collisionPointPair["pointOnPick"] = vec3toVariant(objectIntersection.testCollisionPoint); + collisionPointPair["pointOnObject"] = vec3toVariant(objectIntersection.foundCollisionPoint); collisionPointPairs[objectIntersection.foundID].append(collisionPointPair); } @@ -59,7 +59,7 @@ QVariantMap CollisionPickResult::toVariantMap() const { const QUuid& id = intersectionKeyVal.first; QVariantMap& intersection = intersectionKeyVal.second; - intersection["contactPointPairs"] = collisionPointPairs[id]; + intersection["collisionContacts"] = collisionPointPairs[id]; qIntersectingObjects.append(intersection); } diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index a13e7551d9..1ba1c248bc 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -161,15 +161,15 @@ public: * @typedef {object} IntersectingObject * @property {QUuid} id The ID of the object. * @property {number} type The type of the object, either Picks.INTERSECTED_ENTITY() or Picks.INTERSECTED_AVATAR() - * @property {ContactPointPair[]} contactPointPairs Pairs of points representing penetration information between the pick and the object + * @property {CollisionContact[]} collisionContacts Pairs of points representing penetration information between the pick and the object */ /**jsdoc * A pair of points that represents part of an overlap between a Collision Pick and an object in the physics engine. Points which are further apart represent deeper overlap * - * @typedef {object} ContactPointPair - * @property {Vec3} pickContactPoint A point representing a penetration of the object's surface into the volume of the pick, in world space. - * @property {Vec3} objectContactPoint A point representing a penetration of the pick's surface into the volume of the found object, in world space. + * @typedef {object} CollisionContact + * @property {Vec3} pointOnPick A point representing a penetration of the object's surface into the volume of the pick, in world space. + * @property {Vec3} pointOnObject A point representing a penetration of the pick's surface into the volume of the found object, in world space. */ /**jsdoc From ad36e23c34bb4e002d2e44562c50202a2f10b7e3 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 9 Aug 2018 17:00:54 -0700 Subject: [PATCH 260/332] Return early when colliding MyAvatar is found in AllContactsCallback --- libraries/physics/src/PhysicsEngine.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index 95004f8b2a..bcd717b9e9 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -888,6 +888,7 @@ struct AllContactsCallback : public btCollisionWorld::ContactResultCallback { // TODO: Give MyAvatar a motion state so we don't have to do this if (desiredObjectType == MOTIONSTATE_TYPE_AVATAR && myAvatarCollisionObject && myAvatarCollisionObject == otherBody) { contacts.emplace_back(Physics::getSessionUUID(), bulletToGLM(penetrationPoint), bulletToGLM(otherPenetrationPoint)); + return 0; } if (!(otherBody->getInternalType() & btCollisionObject::CO_RIGID_BODY)) { From 26ae688d593bec38aff76a44ff176254186bee0b Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 9 Aug 2018 17:11:32 -0700 Subject: [PATCH 261/332] Refactor CollisionPickResult::toVariantMap --- interface/src/raypick/CollisionPick.cpp | 52 +++++++++++-------------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index 73d2dfe67a..503832c0eb 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -23,36 +23,8 @@ QVariantMap CollisionPickResult::toVariantMap() const { std::unordered_map intersections; std::unordered_map collisionPointPairs; - IntersectionType intersectionTypesToCheck[] = { ENTITY, AVATAR }; - for (int i = 0; i < 2; i++) { - IntersectionType intersectionType = intersectionTypesToCheck[i]; - - const std::vector* objectIntersections; - if (intersectionType == ENTITY) { - objectIntersections = &entityIntersections; - } - else { - objectIntersections = &avatarIntersections; - } - - for (auto& objectIntersection : *objectIntersections) { - auto at = intersections.find(objectIntersection.foundID); - if (at == intersections.end()) { - QVariantMap intersectingObject; - intersectingObject["id"] = objectIntersection.foundID; - intersectingObject["type"] = intersectionType; - intersections[objectIntersection.foundID] = intersectingObject; - - collisionPointPairs[objectIntersection.foundID] = QVariantList(); - } - - QVariantMap collisionPointPair; - collisionPointPair["pointOnPick"] = vec3toVariant(objectIntersection.testCollisionPoint); - collisionPointPair["pointOnObject"] = vec3toVariant(objectIntersection.foundCollisionPoint); - - collisionPointPairs[objectIntersection.foundID].append(collisionPointPair); - } - } + buildObjectIntersectionsMap(ENTITY, entityIntersections, intersections, collisionPointPairs); + buildObjectIntersectionsMap(AVATAR, avatarIntersections, intersections, collisionPointPairs); QVariantList qIntersectingObjects; for (auto& intersectionKeyVal : intersections) { @@ -70,6 +42,26 @@ QVariantMap CollisionPickResult::toVariantMap() const { return variantMap; } +void buildObjectIntersectionsMap(IntersectionType intersectionType, const std::vector& objectIntersections, std::unordered_map& intersections, std::unordered_map& collisionPointPairs) { + for (auto& objectIntersection : objectIntersections) { + auto at = intersections.find(objectIntersection.foundID); + if (at == intersections.end()) { + QVariantMap intersectingObject; + intersectingObject["id"] = objectIntersection.foundID; + intersectingObject["type"] = intersectionType; + intersections[objectIntersection.foundID] = intersectingObject; + + collisionPointPairs[objectIntersection.foundID] = QVariantList(); + } + + QVariantMap collisionPointPair; + collisionPointPair["pointOnPick"] = vec3toVariant(objectIntersection.testCollisionPoint); + collisionPointPair["pointOnObject"] = vec3toVariant(objectIntersection.foundCollisionPoint); + + collisionPointPairs[objectIntersection.foundID].append(collisionPointPair); + } +} + bool CollisionPick::isShapeInfoReady() { if (_mathPick.shouldComputeShapeInfo()) { if (_cachedResource && _cachedResource->isLoaded()) { From b32b811fff967bada1eb41a7d5cb14769f0286fe Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 9 Aug 2018 17:24:09 -0700 Subject: [PATCH 262/332] Move up buildObjectIntersectionsMap in CollisionPick.cpp --- interface/src/raypick/CollisionPick.cpp | 40 ++++++++++++------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index 503832c0eb..87c8c91e6d 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -15,6 +15,26 @@ #include "ScriptEngineLogging.h" #include "UUIDHasher.h" +void buildObjectIntersectionsMap(IntersectionType intersectionType, const std::vector& objectIntersections, std::unordered_map& intersections, std::unordered_map& collisionPointPairs) { + for (auto& objectIntersection : objectIntersections) { + auto at = intersections.find(objectIntersection.foundID); + if (at == intersections.end()) { + QVariantMap intersectingObject; + intersectingObject["id"] = objectIntersection.foundID; + intersectingObject["type"] = intersectionType; + intersections[objectIntersection.foundID] = intersectingObject; + + collisionPointPairs[objectIntersection.foundID] = QVariantList(); + } + + QVariantMap collisionPointPair; + collisionPointPair["pointOnPick"] = vec3toVariant(objectIntersection.testCollisionPoint); + collisionPointPair["pointOnObject"] = vec3toVariant(objectIntersection.foundCollisionPoint); + + collisionPointPairs[objectIntersection.foundID].append(collisionPointPair); + } +} + QVariantMap CollisionPickResult::toVariantMap() const { QVariantMap variantMap; @@ -42,26 +62,6 @@ QVariantMap CollisionPickResult::toVariantMap() const { return variantMap; } -void buildObjectIntersectionsMap(IntersectionType intersectionType, const std::vector& objectIntersections, std::unordered_map& intersections, std::unordered_map& collisionPointPairs) { - for (auto& objectIntersection : objectIntersections) { - auto at = intersections.find(objectIntersection.foundID); - if (at == intersections.end()) { - QVariantMap intersectingObject; - intersectingObject["id"] = objectIntersection.foundID; - intersectingObject["type"] = intersectionType; - intersections[objectIntersection.foundID] = intersectingObject; - - collisionPointPairs[objectIntersection.foundID] = QVariantList(); - } - - QVariantMap collisionPointPair; - collisionPointPair["pointOnPick"] = vec3toVariant(objectIntersection.testCollisionPoint); - collisionPointPair["pointOnObject"] = vec3toVariant(objectIntersection.foundCollisionPoint); - - collisionPointPairs[objectIntersection.foundID].append(collisionPointPair); - } -} - bool CollisionPick::isShapeInfoReady() { if (_mathPick.shouldComputeShapeInfo()) { if (_cachedResource && _cachedResource->isLoaded()) { From 4c367fa44309c9d23b84fe16a8b836529506d738 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 9 Aug 2018 17:26:54 -0700 Subject: [PATCH 263/332] Fix outdated explanation of when CollisionPickResult.intersects is true --- interface/src/raypick/PickScriptingInterface.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 1ba1c248bc..b039a8c616 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -147,7 +147,7 @@ public: * An intersection result for a Collision Pick. * * @typedef {object} CollisionPickResult - * @property {boolean} intersects If there was at least one valid intersection (entityIntersections.length + avatarIntersections.length > 0) + * @property {boolean} intersects If there was at least one valid intersection (intersectingObjects.length > 0) * @property {IntersectingObject[]} intersectingObjects The collision information of each object which intersect with the CollisionRegion. * @property {CollisionRegion} collisionRegion The CollisionRegion that was used. Valid even if there was no intersection. */ From d533e3b341c6b657c3386d3a31b68ff0828749d0 Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Thu, 9 Aug 2018 17:29:13 -0700 Subject: [PATCH 264/332] adding domainLimitedScale property --- interface/src/avatar/MyAvatar.h | 5 +++-- libraries/avatars/src/AvatarData.h | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index b34eb4386d..a824da8232 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -143,7 +143,8 @@ class MyAvatar : public Avatar { * registration point of the 3D model. * * @property {Vec3} position - * @property {number} scale + * @property {number} scale - The target scale in which the avatar is set to by the user. + * @property {number} domainLimitedScale - The avatar's scale limited by the domain. * @property {number} density Read-only. * @property {Vec3} handPosition * @property {number} bodyYaw - The rotation left or right about an axis running from the head to the feet of the avatar. @@ -982,7 +983,7 @@ public: /**jsdoc * @function MyAvatar.getAvatarScale - * @returns {number} + * @returns {number} */ Q_INVOKABLE float getAvatarScale(); diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 0f850aaf24..72bdda34f3 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -364,6 +364,7 @@ class AvatarData : public QObject, public SpatiallyNestable { // The following properties have JSDoc in MyAvatar.h and ScriptableAvatar.h Q_PROPERTY(glm::vec3 position READ getWorldPosition WRITE setPositionViaScript) Q_PROPERTY(float scale READ getTargetScale WRITE setTargetScale) + Q_PROPERTY(float domainLimitedScale READ getDomainLimitedScale) Q_PROPERTY(float density READ getDensity) Q_PROPERTY(glm::vec3 handPosition READ getHandPosition WRITE setHandPosition) Q_PROPERTY(float bodyYaw READ getBodyYaw WRITE setBodyYaw) From c8a31bc59f88bc1ec486012ec645dd5c0e5e7aa4 Mon Sep 17 00:00:00 2001 From: amantley Date: Thu, 9 Aug 2018 17:38:57 -0700 Subject: [PATCH 265/332] created a backward walk speed constant 1.6m/s and changed the characteristic speed for strafe right left to 1.3 --- interface/resources/avatar/avatar-animation.json | 8 ++++---- interface/src/avatar/MyAvatar.h | 2 +- libraries/shared/src/AvatarConstants.h | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index 982d9ab8d2..1388e71e5c 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -713,8 +713,8 @@ }, { "id": "strafeLeft", - "interpTarget": 0, - "interpDuration": 6, + "interpTarget": 5, + "interpDuration": 8, "interpType": "snapshotPrev", "transitions": [ { "var": "isNotMoving", "state": "idleSettle" }, @@ -1120,7 +1120,7 @@ "data": { "alpha": 0.0, "desiredSpeed": 1.4, - "characteristicSpeeds": [0, 0.5, 1.5, 2.6, 3.0], + "characteristicSpeeds": [0, 0.5, 1.3, 2.6, 3.0], "alphaVar": "moveLateralAlpha", "desiredSpeedVar": "moveLateralSpeed" }, @@ -1193,7 +1193,7 @@ "data": { "alpha": 0.0, "desiredSpeed": 1.4, - "characteristicSpeeds": [0, 0.5, 1.5, 2.6, 3.0], + "characteristicSpeeds": [0, 0.5, 1.3, 2.6, 3.0], "alphaVar": "moveLateralAlpha", "desiredSpeedVar": "moveLateralSpeed" }, diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index a1f2524228..926d4cf1ef 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -1739,7 +1739,7 @@ private: // max unscaled forward movement speed ThreadSafeValueCache _walkSpeed { DEFAULT_AVATAR_MAX_WALKING_SPEED }; - ThreadSafeValueCache _walkBackwardSpeed{ DEFAULT_AVATAR_MAX_WALKING_SPEED }; + ThreadSafeValueCache _walkBackwardSpeed { DEFAULT_AVATAR_MAX_WALKING_BACKWARD_SPEED }; ThreadSafeValueCache _sprintSpeed { AVATAR_SPRINT_SPEED_SCALAR }; float _walkSpeedScalar { AVATAR_WALK_SPEED_SCALAR }; diff --git a/libraries/shared/src/AvatarConstants.h b/libraries/shared/src/AvatarConstants.h index d9b26927e2..2fd7b974a1 100644 --- a/libraries/shared/src/AvatarConstants.h +++ b/libraries/shared/src/AvatarConstants.h @@ -66,6 +66,7 @@ const glm::vec3 DEFAULT_AVATAR_RIGHTFOOT_POS { 0.08f, -0.96f, 0.029f }; const glm::quat DEFAULT_AVATAR_RIGHTFOOT_ROT { -0.4016716778278351f, 0.9154615998268127f, 0.0053307069465518f, 0.023696165531873703f }; const float DEFAULT_AVATAR_MAX_WALKING_SPEED = 2.6f; // meters / second +const float DEFAULT_AVATAR_MAX_WALKING_BACKWARD_SPEED = 1.6f; // meters / second const float DEFAULT_AVATAR_MAX_FLYING_SPEED = 30.0f; // meters / second const float DEFAULT_AVATAR_GRAVITY = -5.0f; // meters / second^2 From 769e7eab03da9e8a4cc0e2b3317b99ff9cd4a91a Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Thu, 9 Aug 2018 17:38:58 -0700 Subject: [PATCH 266/332] removing domainLimitedScale property and changing read property of scale --- interface/src/avatar/MyAvatar.h | 3 +-- libraries/avatars/src/AvatarData.h | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index a824da8232..92bb352499 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -143,8 +143,7 @@ class MyAvatar : public Avatar { * registration point of the 3D model. * * @property {Vec3} position - * @property {number} scale - The target scale in which the avatar is set to by the user. - * @property {number} domainLimitedScale - The avatar's scale limited by the domain. + * @property {number} scale - Returns the clamped scale of the avatar. * @property {number} density Read-only. * @property {Vec3} handPosition * @property {number} bodyYaw - The rotation left or right about an axis running from the head to the feet of the avatar. diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 72bdda34f3..2eeb5cae2a 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -363,8 +363,7 @@ class AvatarData : public QObject, public SpatiallyNestable { // The following properties have JSDoc in MyAvatar.h and ScriptableAvatar.h Q_PROPERTY(glm::vec3 position READ getWorldPosition WRITE setPositionViaScript) - Q_PROPERTY(float scale READ getTargetScale WRITE setTargetScale) - Q_PROPERTY(float domainLimitedScale READ getDomainLimitedScale) + Q_PROPERTY(float scale READ getDomainLimitedScale WRITE setTargetScale) Q_PROPERTY(float density READ getDensity) Q_PROPERTY(glm::vec3 handPosition READ getHandPosition WRITE setHandPosition) Q_PROPERTY(float bodyYaw READ getBodyYaw WRITE setBodyYaw) From 660178e5bb03c193224d4b514149a824402cbd57 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 9 Aug 2018 17:41:46 -0700 Subject: [PATCH 267/332] Remove 'plane' from list of supported Collision Pick shapeTypes, since it turns out ShapeFactory does not support it --- interface/src/raypick/PickScriptingInterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index 28bffb487e..e120010935 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -242,7 +242,7 @@ unsigned int PickScriptingInterface::createParabolaPick(const QVariant& properti * A Shape defines a physical volume. * * @typedef {object} Shape -* @property {string} shapeType The type of shape to use. Can be one of the following: "box", "sphere", "capsule-x", "capsule-y", "capsule-z", "cylinder-x", "cylinder-y", "cylinder-z", "plane" +* @property {string} shapeType The type of shape to use. Can be one of the following: "box", "sphere", "capsule-x", "capsule-y", "capsule-z", "cylinder-x", "cylinder-y", "cylinder-z" * @property {Vec3} dimensions - The size to scale the shape to. */ From cd7ca96c3add249a527e0fee8f4920af3d60b9eb Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 10 Aug 2018 02:42:45 +0200 Subject: [PATCH 268/332] Remove the separate depth buffer for in front overlay, only useful for debug and it breaks in mac --- libraries/render-utils/src/RenderDeferredTask.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 786e64d86f..9ea1669cc0 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -229,7 +229,7 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren const auto overlaysInFrontTransparent = filteredOverlaysTransparent.getN(0); // We don't want the overlay to clear the deferred frame buffer depth because we would like to keep it for debugging visualisation - task.addJob("SeparateDepthForOverlay", deferredFramebuffer); + // task.addJob("SeparateDepthForOverlay", deferredFramebuffer); const auto overlayInFrontOpaquesInputs = DrawOverlay3D::Inputs(overlaysInFrontOpaque, lightingModel, jitter).asVarying(); const auto overlayInFrontTransparentsInputs = DrawOverlay3D::Inputs(overlaysInFrontTransparent, lightingModel, jitter).asVarying(); From 925cfc9b23a21f4721c467e319c18e8e583d6489 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Fri, 10 Aug 2018 16:45:27 +0200 Subject: [PATCH 269/332] Set a max focus distance value of 14km to not lose the edit handles by far-clipping --- scripts/system/libraries/entityCameraTool.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/scripts/system/libraries/entityCameraTool.js b/scripts/system/libraries/entityCameraTool.js index f554f45722..01030c9d7d 100644 --- a/scripts/system/libraries/entityCameraTool.js +++ b/scripts/system/libraries/entityCameraTool.js @@ -28,7 +28,7 @@ var FOCUS_MIN_ZOOM = 0.5; var ZOOM_SCALING = 0.02; var MIN_ZOOM_DISTANCE = 0.01; -var MAX_ZOOM_DISTANCE = 200; +var MAX_ZOOM_DISTANCE = 14000; var MODE_INACTIVE = 'inactive'; var MODE_ORBIT = 'orbit'; @@ -255,14 +255,6 @@ CameraManager = function() { that.updateCamera(); } - that.getZoomPercentage = function() { - return (that.zoomDistance - MIN_ZOOM_DISTANCE) / MAX_ZOOM_DISTANCE; - } - - that.setZoomPercentage = function(pct) { - that.targetZoomDistance = pct * (MAX_ZOOM_DISTANCE - MIN_ZOOM_DISTANCE); - } - that.pan = function(offset) { var up = Quat.getUp(Camera.getOrientation()); var right = Quat.getRight(Camera.getOrientation()); From c0e25e64c0daa1557e717251c494a58da9687bc3 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Fri, 10 Aug 2018 08:50:37 -0700 Subject: [PATCH 270/332] Added Python installation instructions. --- tools/auto-tester/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/auto-tester/README.md b/tools/auto-tester/README.md index fd6bc7e519..0924e77f8b 100644 --- a/tools/auto-tester/README.md +++ b/tools/auto-tester/README.md @@ -11,10 +11,20 @@ Auto-tester has 4 functions, separated into 4 tabs: 3. TestRail interface 4. Windows task bar utility (Windows only) ## Installation +### Executable 1. Download the installer by browsing to [here](). 2. Double click on the installer and install to a convenient location ![](./setup_7z.PNG) 3. To run the auto-tester, double click **auto-tester.exe**. +### Python +The TestRail interface requires Python 3 to be installed. Auto-Tester has been tested with Python 3.7.0 but should work with newer versions. + +Python 3 can be downloaded from: +1. Windows installer +2. Linux (source) (**Gzipped source tarball**) +3. Mac (**macOS 64-bit/32-bit installer** or **macOS 64-bit/32-bit installer**) + +After installation - create an environment variable called PYTHON_PATH and set it to the folder containing the Python executable. # Create ![](./Create.PNG) From f902552309a726f1855d8e98c2a641eacae6bf4d Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 10 Aug 2018 08:55:29 -0700 Subject: [PATCH 271/332] Finalize on using 'rotation' in Collision Pick API and add missing jsdoc for CollisionRegion --- libraries/shared/src/RegisteredMetaTypes.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index 5f842ef066..a8f22ce691 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -253,6 +253,14 @@ public: } }; +/**jsdoc +* A CollisionPick defines a volume for checking collisions in the physics simulation. + +* @typedef {object} CollisionPick +* @property {Shape} shape - The information about the collision region's size and shape. +* @property {Vec3} position - The position of the collision region. +* @property {Quat} rotation - The orientation of the collision region. +*/ class CollisionRegion : public MathPick { public: CollisionRegion() { } @@ -284,8 +292,6 @@ public: } if (pickVariant["rotation"].isValid()) { transform.setRotation(quatFromVariant(pickVariant["rotation"])); - } else if (pickVariant["orientation"].isValid()) { - transform.setRotation(quatFromVariant(pickVariant["orientation"])); } } @@ -300,7 +306,7 @@ public: collisionRegion["shape"] = shape; collisionRegion["position"] = vec3toVariant(transform.getTranslation()); - collisionRegion["orientation"] = quatToVariant(transform.getRotation()); + collisionRegion["rotation"] = quatToVariant(transform.getRotation()); return collisionRegion; } From 1699d3ed6a23c196b64e2eac1a2cc4d553ae81d3 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Fri, 10 Aug 2018 09:35:40 -0700 Subject: [PATCH 272/332] Wording change in Availability --- interface/resources/qml/hifi/Pal.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/hifi/Pal.qml b/interface/resources/qml/hifi/Pal.qml index dc5aa9dade..cbab83ea28 100644 --- a/interface/resources/qml/hifi/Pal.qml +++ b/interface/resources/qml/hifi/Pal.qml @@ -1050,9 +1050,9 @@ Rectangle { popupComboDialog("Set your availability:", availabilityComboBox.availabilityStrings, ["Your username will be visible in everyone's 'Nearby' list. Anyone will be able to jump to your location from within the 'Nearby' list.", - "Your location will be visible in the 'Connections' list only for those with whom you are connected or friends. They'll be able to jump to your location if the domain allows.", - "Your location will be visible in the 'Connections' list only for those with whom you are friends. They'll be able to jump to your location if the domain allows. You will only receive 'Happening Now' notifications in 'Go To' from friends.", - "You will appear offline in the 'Connections' list, and you will not receive 'Happening Now' notifications in 'Go To'."], + "Your location will be visible in the 'Connections' list only for those with whom you are connected or friends. They'll be able to jump to your location if the domain allows, and you will see 'Snaps' Blasts from them in 'Go To'.", + "Your location will be visible in the 'Connections' list only for those with whom you are friends. They'll be able to jump to your location if the domain allows, and you will see 'Snaps' Blasts from them in 'Go To'", + "You will appear offline in the 'Connections' list, and you will not receive Snaps Blasts from connections or friends in 'Go To'."], ["all", "connections", "friends", "none"]); } onEntered: availabilityComboBox.color = hifi.colors.lightGrayText; From 74186b0162f7d0415099ac004fc9ca9fce9321e1 Mon Sep 17 00:00:00 2001 From: amantley Date: Fri, 10 Aug 2018 09:56:24 -0700 Subject: [PATCH 273/332] changed back speed to 2.2 m/s and the end frame for strafe left and right to 33, and the end frame for wlk_bkwd to 27 --- interface/resources/avatar/avatar-animation.json | 12 ++++++------ libraries/shared/src/AvatarConstants.h | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index 1388e71e5c..6ebbbf3000 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -1058,7 +1058,7 @@ "data": { "alpha": 0.0, "desiredSpeed": 1.4, - "characteristicSpeeds": [0.6, 2.0], + "characteristicSpeeds": [0.6, 1.7], "alphaVar": "moveBackwardAlpha", "desiredSpeedVar": "moveBackwardSpeed" }, @@ -1081,7 +1081,7 @@ "data": { "url": "qrc:///avatar/animations/walk_bwd_fast.fbx", "startFrame": 0.0, - "endFrame": 28.0, + "endFrame": 27.0, "timeScale": 1.0, "loopFlag": true }, @@ -1120,7 +1120,7 @@ "data": { "alpha": 0.0, "desiredSpeed": 1.4, - "characteristicSpeeds": [0, 0.5, 1.3, 2.6, 3.0], + "characteristicSpeeds": [0, 0.5, 1.5, 2.6, 3.0], "alphaVar": "moveLateralAlpha", "desiredSpeedVar": "moveLateralSpeed" }, @@ -1155,7 +1155,7 @@ "data": { "url": "qrc:///avatar/animations/walk_left.fbx", "startFrame": 0.0, - "endFrame": 35.0, + "endFrame": 33.0, "timeScale": 1.0, "loopFlag": true }, @@ -1193,7 +1193,7 @@ "data": { "alpha": 0.0, "desiredSpeed": 1.4, - "characteristicSpeeds": [0, 0.5, 1.3, 2.6, 3.0], + "characteristicSpeeds": [0, 0.5, 1.5, 2.6, 3.0], "alphaVar": "moveLateralAlpha", "desiredSpeedVar": "moveLateralSpeed" }, @@ -1229,7 +1229,7 @@ "data": { "url": "qrc:///avatar/animations/walk_left.fbx", "startFrame": 0.0, - "endFrame": 35.0, + "endFrame": 33.0, "timeScale": 1.0, "loopFlag": true, "mirrorFlag": true diff --git a/libraries/shared/src/AvatarConstants.h b/libraries/shared/src/AvatarConstants.h index 2fd7b974a1..39117de7ef 100644 --- a/libraries/shared/src/AvatarConstants.h +++ b/libraries/shared/src/AvatarConstants.h @@ -66,7 +66,7 @@ const glm::vec3 DEFAULT_AVATAR_RIGHTFOOT_POS { 0.08f, -0.96f, 0.029f }; const glm::quat DEFAULT_AVATAR_RIGHTFOOT_ROT { -0.4016716778278351f, 0.9154615998268127f, 0.0053307069465518f, 0.023696165531873703f }; const float DEFAULT_AVATAR_MAX_WALKING_SPEED = 2.6f; // meters / second -const float DEFAULT_AVATAR_MAX_WALKING_BACKWARD_SPEED = 1.6f; // meters / second +const float DEFAULT_AVATAR_MAX_WALKING_BACKWARD_SPEED = 2.2f; // meters / second const float DEFAULT_AVATAR_MAX_FLYING_SPEED = 30.0f; // meters / second const float DEFAULT_AVATAR_GRAVITY = -5.0f; // meters / second^2 From e39dd250cd1e5ddcd308482ce19c527c79aa020f Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Fri, 10 Aug 2018 10:01:09 -0700 Subject: [PATCH 274/332] Things will 'just work' once backend is in place --- interface/resources/qml/hifi/Feed.qml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/hifi/Feed.qml b/interface/resources/qml/hifi/Feed.qml index c81e3c2389..593ebdcbea 100644 --- a/interface/resources/qml/hifi/Feed.qml +++ b/interface/resources/qml/hifi/Feed.qml @@ -90,7 +90,9 @@ Column { online_users: data.details.connections || data.details.concurrency || 0, // Server currently doesn't give isStacked (undefined). Could give bool. drillDownToPlace: data.is_stacked || (data.action === 'concurrency'), - isStacked: !!data.is_stacked + isStacked: !!data.is_stacked, + + time_before_autoscroll_ms: data.hold_time || 3000 }; } @@ -146,6 +148,14 @@ Column { onCountChanged: { if (scroll.currentIndex === -1 && scroll.count > 0 && root.autoScrollTimerEnabled) { scroll.currentIndex = 0; + autoScrollTimer.interval = suggestions.get(scroll.currentIndex).time_before_autoscroll_ms; + autoScrollTimer.start(); + } + } + + onCurrentIndexChanged: { + if (root.autoScrollTimerEnabled) { + autoScrollTimer.interval = suggestions.get(scroll.currentIndex).time_before_autoscroll_ms; autoScrollTimer.start(); } } @@ -170,7 +180,7 @@ Column { id: autoScrollTimer; interval: 3000; running: false; - repeat: true; + repeat: false; onTriggered: { if (scroll.currentIndex !== -1) { if (scroll.currentIndex === scroll.count - 1) { From 2b5ecd6b5f6f6d1cd52488c07b8a5104ed2508aa Mon Sep 17 00:00:00 2001 From: David Kelly Date: Fri, 10 Aug 2018 10:12:32 -0700 Subject: [PATCH 275/332] remove extraneous log --- interface/resources/qml/hifi/NameCard.qml | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/resources/qml/hifi/NameCard.qml b/interface/resources/qml/hifi/NameCard.qml index 780679d183..abcceae295 100644 --- a/interface/resources/qml/hifi/NameCard.qml +++ b/interface/resources/qml/hifi/NameCard.qml @@ -534,7 +534,6 @@ Item { value = Users.getAvatarGain(uuid); } onValueChanged: { - console.log("onValueChanged:" + uuid + ", value="+value); updateGainFromQML(uuid, value, false); } onPressedChanged: { From d61aaa3bd76b907794dd3abccf8ecfcfad7b92b1 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Fri, 10 Aug 2018 14:16:44 -0300 Subject: [PATCH 276/332] Android - People - Round profile image --- .../hifiinterface/view/UserListAdapter.java | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java index 79a931d93b..f9df28d5ca 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -1,18 +1,22 @@ package io.highfidelity.hifiinterface.view; import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; import android.net.Uri; +import android.support.v4.graphics.drawable.RoundedBitmapDrawable; +import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; +import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; import java.util.ArrayList; @@ -74,7 +78,28 @@ public class UserListAdapter extends RecyclerView.Adapter Date: Fri, 10 Aug 2018 10:52:21 -0700 Subject: [PATCH 277/332] Use 'orientation' for Collision Pick API, not 'rotation' --- interface/src/raypick/PickScriptingInterface.cpp | 2 +- libraries/shared/src/RegisteredMetaTypes.h | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index e120010935..0ed35e5589 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -255,7 +255,7 @@ unsigned int PickScriptingInterface::createParabolaPick(const QVariant& properti * @typedef {object} Picks.CollisionPickProperties * @property {Shape} shape - The information about the collision region's size and shape. * @property {Vec3} position - The position of the collision region. -* @property {Quat} rotation - The orientation of the collision region. +* @property {Quat} orientation - The orientation of the collision region. */ unsigned int PickScriptingInterface::createCollisionPick(const QVariant& properties) { QVariantMap propMap = properties.toMap(); diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index a8f22ce691..e78dbafd75 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -259,7 +259,7 @@ public: * @typedef {object} CollisionPick * @property {Shape} shape - The information about the collision region's size and shape. * @property {Vec3} position - The position of the collision region. -* @property {Quat} rotation - The orientation of the collision region. +* @property {Quat} orientation - The orientation of the collision region. */ class CollisionRegion : public MathPick { public: @@ -290,8 +290,8 @@ public: if (pickVariant["position"].isValid()) { transform.setTranslation(vec3FromVariant(pickVariant["position"])); } - if (pickVariant["rotation"].isValid()) { - transform.setRotation(quatFromVariant(pickVariant["rotation"])); + if (pickVariant["orientation"].isValid()) { + transform.setRotation(quatFromVariant(pickVariant["orientation"])); } } @@ -306,7 +306,7 @@ public: collisionRegion["shape"] = shape; collisionRegion["position"] = vec3toVariant(transform.getTranslation()); - collisionRegion["rotation"] = quatToVariant(transform.getRotation()); + collisionRegion["orientation"] = quatToVariant(transform.getRotation()); return collisionRegion; } From 15070f63741e364ad906e6ab868e420f05acc256 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Fri, 10 Aug 2018 10:38:38 -0700 Subject: [PATCH 278/332] fixing fading --- .../entities-renderer/src/EntityTreeRenderer.cpp | 2 +- .../entities-renderer/src/RenderableEntityItem.cpp | 13 +++++-------- .../entities-renderer/src/RenderableEntityItem.h | 6 +++--- .../src/RenderableModelEntityItem.h | 3 +++ 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index e330427350..136fb281d5 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -40,7 +40,7 @@ #include -std::function EntityTreeRenderer::_entitiesShouldFadeFunction; +std::function EntityTreeRenderer::_entitiesShouldFadeFunction = []() { return true; }; QString resolveScriptURL(const QString& scriptUrl) { auto normalizedScriptUrl = DependencyManager::get()->normalizeURL(scriptUrl); diff --git a/libraries/entities-renderer/src/RenderableEntityItem.cpp b/libraries/entities-renderer/src/RenderableEntityItem.cpp index f04ee28d7f..a183101fff 100644 --- a/libraries/entities-renderer/src/RenderableEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableEntityItem.cpp @@ -14,7 +14,6 @@ #include -#include "EntityTreeRenderer.h" #include "RenderableLightEntityItem.h" #include "RenderableLineEntityItem.h" #include "RenderableModelEntityItem.h" @@ -44,8 +43,6 @@ enum class RenderItemStatusIcon { NONE = 255 }; -std::function EntityRenderer::_entitiesShouldFadeFunction = []() { return true; }; - void EntityRenderer::initEntityRenderers() { REGISTER_ENTITY_TYPE_WITH_FACTORY(Model, RenderableModelEntityItem::factory) REGISTER_ENTITY_TYPE_WITH_FACTORY(PolyVox, RenderablePolyVoxEntityItem::factory) @@ -385,13 +382,13 @@ void EntityRenderer::updateModelTransformAndBound() { void EntityRenderer::doRenderUpdateSynchronous(const ScenePointer& scene, Transaction& transaction, const EntityItemPointer& entity) { DETAILED_PROFILE_RANGE(simulation_physics, __FUNCTION__); withWriteLock([&] { - if (isFading()) { + auto transparent = isTransparent(); + auto fading = isFading(); + if (fading || _prevIsTransparent != transparent) { emit requestRenderUpdate(); } - - auto transparent = isTransparent(); - if (_prevIsTransparent && !transparent) { - _isFading = false; + if (fading) { + _isFading = Interpolate::calculateFadeRatio(_fadeStartTime) < 1.0f; } _prevIsTransparent = transparent; diff --git a/libraries/entities-renderer/src/RenderableEntityItem.h b/libraries/entities-renderer/src/RenderableEntityItem.h index 496649eb5f..9c4d10190c 100644 --- a/libraries/entities-renderer/src/RenderableEntityItem.h +++ b/libraries/entities-renderer/src/RenderableEntityItem.h @@ -19,6 +19,7 @@ #include "EntitiesRendererLogging.h" #include #include +#include "EntityTreeRenderer.h" class EntityTreeRenderer; @@ -96,7 +97,7 @@ protected: // Called by the `render` method after `needsRenderUpdate` virtual void doRender(RenderArgs* args) = 0; - bool isFading() const { return _isFading; } + virtual bool isFading() const { return _isFading; } void updateModelTransformAndBound(); virtual bool isTransparent() const { return _isFading ? Interpolate::calculateFadeRatio(_fadeStartTime) < 1.0f : false; } inline bool isValidRenderItem() const { return _renderItemID != Item::INVALID_ITEM_ID; } @@ -121,7 +122,6 @@ protected: static void makeStatusGetters(const EntityItemPointer& entity, Item::Status::Getters& statusGetters); - static std::function _entitiesShouldFadeFunction; const Transform& getModelTransform() const; Item::Bound _bound; @@ -131,7 +131,7 @@ protected: ItemIDs _subRenderItemIDs; uint64_t _fadeStartTime{ usecTimestampNow() }; uint64_t _updateTime{ usecTimestampNow() }; // used when sorting/throttling render updates - bool _isFading{ _entitiesShouldFadeFunction() }; + bool _isFading { EntityTreeRenderer::getEntitiesShouldFadeFunction()() }; bool _prevIsTransparent { false }; bool _visible { false }; bool _isVisibleInSecondaryCamera { false }; diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.h b/libraries/entities-renderer/src/RenderableModelEntityItem.h index 84591b8afe..45892fdd7f 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.h +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.h @@ -146,6 +146,9 @@ public: void addMaterial(graphics::MaterialLayer material, const std::string& parentMaterialName) override; void removeMaterial(graphics::MaterialPointer material, const std::string& parentMaterialName) override; + // FIXME: model mesh parts should fade individually + bool isFading() const override { return false; } + protected: virtual void removeFromScene(const ScenePointer& scene, Transaction& transaction) override; virtual void onRemoveFromSceneTyped(const TypedEntityPointer& entity) override; From 91365aeff4453ffe83780a3e1a2f94cae0d31bfa Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 10 Aug 2018 11:31:17 -0700 Subject: [PATCH 279/332] make avatar kill packets from mixer reliable --- assignment-client/src/avatars/AvatarMixer.cpp | 13 ++++++++----- .../src/avatars/AvatarMixerClientData.cpp | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp index bbc774eea6..8f1df9c321 100644 --- a/assignment-client/src/avatars/AvatarMixer.cpp +++ b/assignment-client/src/avatars/AvatarMixer.cpp @@ -447,18 +447,21 @@ void AvatarMixer::handleAvatarKilled(SharedNodePointer avatarNode) { // send a kill packet for it to our other nodes nodeList->eachMatchingNode([&](const SharedNodePointer& node) { // we relay avatar kill packets to agents that are not upstream - // and downstream avatar mixers, if the node that was just killed was being replicated - return (node->getType() == NodeType::Agent && !node->isUpstream()) || - (avatarNode->isReplicated() && shouldReplicateTo(*avatarNode, *node)); + // and downstream avatar mixers, if the node that was just killed was being replicatedConnectedAgent + return node->getActiveSocket() && + ((node->getType() == NodeType::Agent && !node->isUpstream()) || + (avatarNode->isReplicated() && shouldReplicateTo(*avatarNode, *node))); }, [&](const SharedNodePointer& node) { if (node->getType() == NodeType::Agent) { if (!killPacket) { - killPacket = NLPacket::create(PacketType::KillAvatar, NUM_BYTES_RFC4122_UUID + sizeof(KillAvatarReason)); + killPacket = NLPacket::create(PacketType::KillAvatar, NUM_BYTES_RFC4122_UUID + sizeof(KillAvatarReason), true); killPacket->write(avatarNode->getUUID().toRfc4122()); killPacket->writePrimitive(KillAvatarReason::AvatarDisconnected); } - nodeList->sendUnreliablePacket(*killPacket, *node); + auto killPacketCopy = NLPacket::createCopy(*killPacket); + + nodeList->sendPacket(std::move(killPacketCopy), *node); } else { // send a replicated kill packet to the downstream avatar mixer if (!replicatedKillPacket) { diff --git a/assignment-client/src/avatars/AvatarMixerClientData.cpp b/assignment-client/src/avatars/AvatarMixerClientData.cpp index e185fe9167..9aa3e88b52 100644 --- a/assignment-client/src/avatars/AvatarMixerClientData.cpp +++ b/assignment-client/src/avatars/AvatarMixerClientData.cpp @@ -108,7 +108,7 @@ uint16_t AvatarMixerClientData::getLastBroadcastSequenceNumber(const QUuid& node void AvatarMixerClientData::ignoreOther(SharedNodePointer self, SharedNodePointer other) { if (!isRadiusIgnoring(other->getUUID())) { addToRadiusIgnoringSet(other->getUUID()); - auto killPacket = NLPacket::create(PacketType::KillAvatar, NUM_BYTES_RFC4122_UUID + sizeof(KillAvatarReason)); + auto killPacket = NLPacket::create(PacketType::KillAvatar, NUM_BYTES_RFC4122_UUID + sizeof(KillAvatarReason), true); killPacket->write(other->getUUID().toRfc4122()); if (self->isIgnoreRadiusEnabled()) { killPacket->writePrimitive(KillAvatarReason::TheirAvatarEnteredYourBubble); @@ -116,7 +116,7 @@ void AvatarMixerClientData::ignoreOther(SharedNodePointer self, SharedNodePointe killPacket->writePrimitive(KillAvatarReason::YourAvatarEnteredTheirBubble); } setLastBroadcastTime(other->getUUID(), 0); - DependencyManager::get()->sendUnreliablePacket(*killPacket, *self); + DependencyManager::get()->sendPacket(std::move(killPacket), *self); } } From 45b9871fdb72f1a85dc60497360b7f5312ed5ffd Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 10 Aug 2018 12:10:49 -0700 Subject: [PATCH 280/332] when adding asset to world set grabbable --- interface/src/Application.cpp | 2 ++ interface/src/Menu.h | 1 + 2 files changed, 3 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index c37f973313..3f5d6d7d52 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7284,6 +7284,8 @@ void Application::addAssetToWorldAddEntity(QString filePath, QString mapping) { } properties.setCollisionless(true); // Temporarily set so that doesn't collide with avatar. properties.setVisible(false); // Temporarily set so that don't see at large unresized dimensions. + bool grabbable = (Menu::getInstance()->isOptionChecked(MenuOption::AnimDebugDrawDefaultPose)); + properties.setUserData(grabbable ? GRABBABLE_USER_DATA : NOT_GRABBABLE_USER_DATA); glm::vec3 positionOffset = getMyAvatar()->getWorldOrientation() * (getMyAvatar()->getSensorToWorldScale() * glm::vec3(0.0f, 0.0f, -2.0f)); properties.setPosition(getMyAvatar()->getWorldPosition() + positionOffset); properties.setRotation(getMyAvatar()->getWorldOrientation()); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 1ab7faa82b..a4fc283d54 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -76,6 +76,7 @@ namespace MenuOption { const QString CrashOutOfBoundsVectorAccessThreaded = "Out of Bounds Vector Access (threaded)"; const QString CrashNewFault = "New Fault"; const QString CrashNewFaultThreaded = "New Fault (threaded)"; + const QString CreateEntitiesGrabbable = "Create Entities As Grabbable (except Zones, Particles, and Lights)"; const QString DeadlockInterface = "Deadlock Interface"; const QString UnresponsiveInterface = "Unresponsive Interface"; const QString DecreaseAvatarSize = "Decrease Avatar Size"; From 8c185aa04e3c8e4924fa8d01d3f871e6aa04149c Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 10 Aug 2018 12:13:09 -0700 Subject: [PATCH 281/332] fix menu option --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 3f5d6d7d52..d8a48d51c0 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7284,7 +7284,7 @@ void Application::addAssetToWorldAddEntity(QString filePath, QString mapping) { } properties.setCollisionless(true); // Temporarily set so that doesn't collide with avatar. properties.setVisible(false); // Temporarily set so that don't see at large unresized dimensions. - bool grabbable = (Menu::getInstance()->isOptionChecked(MenuOption::AnimDebugDrawDefaultPose)); + bool grabbable = (Menu::getInstance()->isOptionChecked(MenuOption::CreateEntitiesGrabbable)); properties.setUserData(grabbable ? GRABBABLE_USER_DATA : NOT_GRABBABLE_USER_DATA); glm::vec3 positionOffset = getMyAvatar()->getWorldOrientation() * (getMyAvatar()->getSensorToWorldScale() * glm::vec3(0.0f, 0.0f, -2.0f)); properties.setPosition(getMyAvatar()->getWorldPosition() + positionOffset); From ef3ac6bba368b5873b031162ba0cf7db8c0a46b3 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Fri, 10 Aug 2018 17:36:32 -0300 Subject: [PATCH 282/332] Android - Friends - rollback swipe to reveal items --- .../hifiinterface/view/SwipeRevealLayout.java | 729 ------------------ .../hifiinterface/view/UserListAdapter.java | 10 - android/app/src/main/res/layout/user_item.xml | 83 +- android/app/src/main/res/values/attrs.xml | 9 - 4 files changed, 26 insertions(+), 805 deletions(-) delete mode 100644 android/app/src/main/java/io/highfidelity/hifiinterface/view/SwipeRevealLayout.java delete mode 100644 android/app/src/main/res/values/attrs.xml diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/SwipeRevealLayout.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/SwipeRevealLayout.java deleted file mode 100644 index 06ac4ac3ec..0000000000 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/SwipeRevealLayout.java +++ /dev/null @@ -1,729 +0,0 @@ -package io.highfidelity.hifiinterface.view; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.res.Resources; -import android.content.res.TypedArray; -import android.graphics.Rect; -import android.os.Bundle; -import android.os.Parcelable; -import android.support.annotation.Nullable; -import android.support.v4.view.GestureDetectorCompat; -import android.support.v4.view.ViewCompat; -import android.support.v4.widget.ViewDragHelper; -import android.util.AttributeSet; -import android.util.DisplayMetrics; -import android.view.GestureDetector; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; - -import io.highfidelity.hifiinterface.R; - -/** - * Created by Mark O'Sullivan on 25th February 2018. - - MIT License - - Copyright (c) 2018 Mark O'Sullivan - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - */ - -@SuppressLint("RtlHardcoded") -public class SwipeRevealLayout extends ViewGroup { - - private static final String SUPER_INSTANCE_STATE = "saved_instance_state_parcelable"; - - private static final int DEFAULT_MIN_FLING_VELOCITY = 300; // dp per second - private static final int DEFAULT_MIN_DIST_REQUEST_DISALLOW_PARENT = 1; // dp - - public static final int DRAG_EDGE_LEFT = 0x1; - public static final int DRAG_EDGE_RIGHT = 0x1 << 1; - - /** - * The secondary view will be under the main view. - */ - public static final int MODE_NORMAL = 0; - - /** - * The secondary view will stick the edge of the main view. - */ - public static final int MODE_SAME_LEVEL = 1; - - /** - * Main view is the view which is shown when the layout is closed. - */ - private View mMainView; - - /** - * Secondary view is the view which is shown when the layout is opened. - */ - private View mSecondaryView; - - /** - * The rectangle position of the main view when the layout is closed. - */ - private Rect mRectMainClose = new Rect(); - - /** - * The rectangle position of the main view when the layout is opened. - */ - private Rect mRectMainOpen = new Rect(); - - /** - * The rectangle position of the secondary view when the layout is closed. - */ - private Rect mRectSecClose = new Rect(); - - /** - * The rectangle position of the secondary view when the layout is opened. - */ - private Rect mRectSecOpen = new Rect(); - - /** - * The minimum distance (px) to the closest drag edge that the SwipeRevealLayout - * will disallow the parent to intercept touch event. - */ - private int mMinDistRequestDisallowParent = 0; - - private boolean mIsOpenBeforeInit = false; - private volatile boolean mIsScrolling = false; - private volatile boolean mLockDrag = false; - - private int mMinFlingVelocity = DEFAULT_MIN_FLING_VELOCITY; - private int mMode = MODE_NORMAL; - - private int mDragEdge = DRAG_EDGE_LEFT; - - private float mDragDist = 0; - private float mPrevX = -1; - - private ViewDragHelper mDragHelper; - private GestureDetectorCompat mGestureDetector; - - public SwipeRevealLayout(Context context) { - super(context); - init(context, null); - } - - public SwipeRevealLayout(Context context, AttributeSet attrs) { - super(context, attrs); - init(context, attrs); - } - - public SwipeRevealLayout(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - @Nullable - @Override - protected Parcelable onSaveInstanceState() { - Bundle bundle = new Bundle(); - bundle.putParcelable(SUPER_INSTANCE_STATE, super.onSaveInstanceState()); - return super.onSaveInstanceState(); - } - - @Override - protected void onRestoreInstanceState(Parcelable state) { - Bundle bundle = (Bundle) state; - state = bundle.getParcelable(SUPER_INSTANCE_STATE); - super.onRestoreInstanceState(state); - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - mGestureDetector.onTouchEvent(event); - mDragHelper.processTouchEvent(event); - return true; - } - - @Override - public boolean onInterceptTouchEvent(MotionEvent ev) { - if (isDragLocked()) { - return super.onInterceptTouchEvent(ev); - } - - mDragHelper.processTouchEvent(ev); - mGestureDetector.onTouchEvent(ev); - accumulateDragDist(ev); - - boolean couldBecomeClick = couldBecomeClick(ev); - boolean settling = mDragHelper.getViewDragState() == ViewDragHelper.STATE_SETTLING; - boolean idleAfterScrolled = mDragHelper.getViewDragState() == ViewDragHelper.STATE_IDLE - && mIsScrolling; - - // must be placed as the last statement - mPrevX = ev.getX(); - - // return true => intercept, cannot trigger onClick event - return !couldBecomeClick && (settling || idleAfterScrolled); - } - - @Override - protected void onFinishInflate() { - super.onFinishInflate(); - - // get views - if (getChildCount() >= 2) { - mSecondaryView = getChildAt(0); - mMainView = getChildAt(1); - } - else if (getChildCount() == 1) { - mMainView = getChildAt(0); - } - } - - /** - * {@inheritDoc} - */ - @SuppressWarnings("ConstantConditions") - @Override - protected void onLayout(boolean changed, int l, int t, int r, int b) { - for (int index = 0; index < getChildCount(); index++) { - final View child = getChildAt(index); - - int left, right, top, bottom; - left = right = top = bottom = 0; - - final int minLeft = getPaddingLeft(); - final int maxRight = Math.max(r - getPaddingRight() - l, 0); - final int minTop = getPaddingTop(); - final int maxBottom = Math.max(b - getPaddingBottom() - t, 0); - - int measuredChildHeight = child.getMeasuredHeight(); - int measuredChildWidth = child.getMeasuredWidth(); - - // need to take account if child size is match_parent - final LayoutParams childParams = child.getLayoutParams(); - boolean matchParentHeight = false; - boolean matchParentWidth = false; - - if (childParams != null) { - matchParentHeight = (childParams.height == LayoutParams.MATCH_PARENT) || - (childParams.height == LayoutParams.FILL_PARENT); - matchParentWidth = (childParams.width == LayoutParams.MATCH_PARENT) || - (childParams.width == LayoutParams.FILL_PARENT); - } - - if (matchParentHeight) { - measuredChildHeight = maxBottom - minTop; - childParams.height = measuredChildHeight; - } - - if (matchParentWidth) { - measuredChildWidth = maxRight - minLeft; - childParams.width = measuredChildWidth; - } - - switch (mDragEdge) { - case DRAG_EDGE_RIGHT: - left = Math.max(r - measuredChildWidth - getPaddingRight() - l, minLeft); - top = Math.min(getPaddingTop(), maxBottom); - right = Math.max(r - getPaddingRight() - l, minLeft); - bottom = Math.min(measuredChildHeight + getPaddingTop(), maxBottom); - break; - - case DRAG_EDGE_LEFT: - left = Math.min(getPaddingLeft(), maxRight); - top = Math.min(getPaddingTop(), maxBottom); - right = Math.min(measuredChildWidth + getPaddingLeft(), maxRight); - bottom = Math.min(measuredChildHeight + getPaddingTop(), maxBottom); - break; - } - - child.layout(left, top, right, bottom); - } - - // taking account offset when mode is SAME_LEVEL - if (mMode == MODE_SAME_LEVEL) { - switch (mDragEdge) { - case DRAG_EDGE_LEFT: - mSecondaryView.offsetLeftAndRight(-mSecondaryView.getWidth()); - break; - - case DRAG_EDGE_RIGHT: - mSecondaryView.offsetLeftAndRight(mSecondaryView.getWidth()); - break; - } - } - - initRects(); - - if (mIsOpenBeforeInit) { - open(false); - } else { - close(false); - } - - } - - /** - * {@inheritDoc} - */ - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - if (getChildCount() < 2) { - throw new RuntimeException("Layout must have two children"); - } - - final LayoutParams params = getLayoutParams(); - - final int widthMode = MeasureSpec.getMode(widthMeasureSpec); - final int heightMode = MeasureSpec.getMode(heightMeasureSpec); - - int desiredWidth = 0; - int desiredHeight = 0; - - // first find the largest child - for (int i = 0; i < getChildCount(); i++) { - final View child = getChildAt(i); - measureChild(child, widthMeasureSpec, heightMeasureSpec); - desiredWidth = Math.max(child.getMeasuredWidth(), desiredWidth); - desiredHeight = Math.max(child.getMeasuredHeight(), desiredHeight); - } - // create new measure spec using the largest child width - widthMeasureSpec = MeasureSpec.makeMeasureSpec(desiredWidth, widthMode); - heightMeasureSpec = MeasureSpec.makeMeasureSpec(desiredHeight, heightMode); - - final int measuredWidth = MeasureSpec.getSize(widthMeasureSpec); - final int measuredHeight = MeasureSpec.getSize(heightMeasureSpec); - - for (int i = 0; i < getChildCount(); i++) { - final View child = getChildAt(i); - final LayoutParams childParams = child.getLayoutParams(); - - if (childParams != null) { - if (childParams.height == LayoutParams.MATCH_PARENT) { - child.setMinimumHeight(measuredHeight); - } - - if (childParams.width == LayoutParams.MATCH_PARENT) { - child.setMinimumWidth(measuredWidth); - } - } - - measureChild(child, widthMeasureSpec, heightMeasureSpec); - desiredWidth = Math.max(child.getMeasuredWidth(), desiredWidth); - desiredHeight = Math.max(child.getMeasuredHeight(), desiredHeight); - } - - // taking accounts of padding - desiredWidth += getPaddingLeft() + getPaddingRight(); - desiredHeight += getPaddingTop() + getPaddingBottom(); - - // adjust desired width - if (widthMode == MeasureSpec.EXACTLY) { - desiredWidth = measuredWidth; - } else { - if (params.width == LayoutParams.MATCH_PARENT) { - desiredWidth = measuredWidth; - } - - if (widthMode == MeasureSpec.AT_MOST) { - desiredWidth = (desiredWidth > measuredWidth)? measuredWidth : desiredWidth; - } - } - - // adjust desired height - if (heightMode == MeasureSpec.EXACTLY) { - desiredHeight = measuredHeight; - } else { - if (params.height == LayoutParams.MATCH_PARENT) { - desiredHeight = measuredHeight; - } - - if (heightMode == MeasureSpec.AT_MOST) { - desiredHeight = (desiredHeight > measuredHeight)? measuredHeight : desiredHeight; - } - } - - setMeasuredDimension(desiredWidth, desiredHeight); - } - - @Override - public void computeScroll() { - if (mDragHelper.continueSettling(true)) { - ViewCompat.postInvalidateOnAnimation(this); - } - } - - /** - * Open the panel to show the secondary view - */ - public void open(boolean animation) { - mIsOpenBeforeInit = true; - - if (animation) { - mDragHelper.smoothSlideViewTo(mMainView, mRectMainOpen.left, mRectMainOpen.top); - } else { - mDragHelper.abort(); - - mMainView.layout( - mRectMainOpen.left, - mRectMainOpen.top, - mRectMainOpen.right, - mRectMainOpen.bottom - ); - - mSecondaryView.layout( - mRectSecOpen.left, - mRectSecOpen.top, - mRectSecOpen.right, - mRectSecOpen.bottom - ); - } - - ViewCompat.postInvalidateOnAnimation(this); - } - - /** - * Close the panel to hide the secondary view - */ - public void close(boolean animation) { - mIsOpenBeforeInit = false; - - if (animation) { - mDragHelper.smoothSlideViewTo(mMainView, mRectMainClose.left, mRectMainClose.top); - } else { - mDragHelper.abort(); - mMainView.layout( - mRectMainClose.left, - mRectMainClose.top, - mRectMainClose.right, - mRectMainClose.bottom - ); - mSecondaryView.layout( - mRectSecClose.left, - mRectSecClose.top, - mRectSecClose.right, - mRectSecClose.bottom - ); - } - - ViewCompat.postInvalidateOnAnimation(this); - } - - /** - * @return true if the drag/swipe motion is currently locked. - */ - public boolean isDragLocked() { - return mLockDrag; - } - - private int getMainOpenLeft() { - switch (mDragEdge) { - case DRAG_EDGE_LEFT: - return mRectMainClose.left + mSecondaryView.getWidth(); - - case DRAG_EDGE_RIGHT: - return mRectMainClose.left - mSecondaryView.getWidth(); - - - default: - return 0; - } - } - - private int getMainOpenTop() { - switch (mDragEdge) { - case DRAG_EDGE_LEFT: - return mRectMainClose.top; - - case DRAG_EDGE_RIGHT: - return mRectMainClose.top; - - - default: - return 0; - } - } - - private int getSecOpenLeft() { - return mRectSecClose.left; - } - - private int getSecOpenTop() { - return mRectSecClose.top; - } - - private void initRects() { - // close position of main view - mRectMainClose.set( - mMainView.getLeft(), - mMainView.getTop(), - mMainView.getRight(), - mMainView.getBottom() - ); - - // close position of secondary view - mRectSecClose.set( - mSecondaryView.getLeft(), - mSecondaryView.getTop(), - mSecondaryView.getRight(), - mSecondaryView.getBottom() - ); - - // open position of the main view - mRectMainOpen.set( - getMainOpenLeft(), - getMainOpenTop(), - getMainOpenLeft() + mMainView.getWidth(), - getMainOpenTop() + mMainView.getHeight() - ); - - // open position of the secondary view - mRectSecOpen.set( - getSecOpenLeft(), - getSecOpenTop(), - getSecOpenLeft() + mSecondaryView.getWidth(), - getSecOpenTop() + mSecondaryView.getHeight() - ); - } - - private boolean couldBecomeClick(MotionEvent ev) { - return isInMainView(ev) && !shouldInitiateADrag(); - } - - private boolean isInMainView(MotionEvent ev) { - float x = ev.getX(); - float y = ev.getY(); - - boolean withinVertical = mMainView.getTop() <= y && y <= mMainView.getBottom(); - boolean withinHorizontal = mMainView.getLeft() <= x && x <= mMainView.getRight(); - - return withinVertical && withinHorizontal; - } - - private boolean shouldInitiateADrag() { - float minDistToInitiateDrag = mDragHelper.getTouchSlop(); - return mDragDist >= minDistToInitiateDrag; - } - - private void accumulateDragDist(MotionEvent ev) { - final int action = ev.getAction(); - if (action == MotionEvent.ACTION_DOWN) { - mDragDist = 0; - return; - } - - float dragged = Math.abs(ev.getX() - mPrevX); - - mDragDist += dragged; - } - - private void init(Context context, AttributeSet attrs) { - if (attrs != null && context != null) { - TypedArray a = context.getTheme().obtainStyledAttributes( - attrs, - R.styleable.SwipeRevealLayout, - 0, 0 - ); - - mDragEdge = a.getInteger(R.styleable.SwipeRevealLayout_dragFromEdge, DRAG_EDGE_LEFT); - mMode = MODE_NORMAL; - mMinFlingVelocity = DEFAULT_MIN_FLING_VELOCITY; - mMinDistRequestDisallowParent = DEFAULT_MIN_DIST_REQUEST_DISALLOW_PARENT; - } - - mDragHelper = ViewDragHelper.create(this, 1.0f, mDragHelperCallback); - mDragHelper.setEdgeTrackingEnabled(ViewDragHelper.EDGE_ALL); - - mGestureDetector = new GestureDetectorCompat(context, mGestureListener); - } - - private final GestureDetector.OnGestureListener mGestureListener = new GestureDetector.SimpleOnGestureListener() { - boolean hasDisallowed = false; - - @Override - public boolean onDown(MotionEvent e) { - mIsScrolling = false; - hasDisallowed = false; - return true; - } - - @Override - public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { - mIsScrolling = true; - return false; - } - - @Override - public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { - mIsScrolling = true; - - if (getParent() != null) { - boolean shouldDisallow; - - if (!hasDisallowed) { - shouldDisallow = getDistToClosestEdge() >= mMinDistRequestDisallowParent; - if (shouldDisallow) { - hasDisallowed = true; - } - } else { - shouldDisallow = true; - } - - // disallow parent to intercept touch event so that the layout will work - // properly on RecyclerView or view that handles scroll gesture. - getParent().requestDisallowInterceptTouchEvent(shouldDisallow); - } - - return false; - } - }; - - private int getDistToClosestEdge() { - switch (mDragEdge) { - case DRAG_EDGE_LEFT: - final int pivotRight = mRectMainClose.left + mSecondaryView.getWidth(); - - return Math.min( - mMainView.getLeft() - mRectMainClose.left, - pivotRight - mMainView.getLeft() - ); - - case DRAG_EDGE_RIGHT: - final int pivotLeft = mRectMainClose.right - mSecondaryView.getWidth(); - - return Math.min( - mMainView.getRight() - pivotLeft, - mRectMainClose.right - mMainView.getRight() - ); - } - - return 0; - } - - private int getHalfwayPivotHorizontal() { - if (mDragEdge == DRAG_EDGE_LEFT) { - return mRectMainClose.left + mSecondaryView.getWidth() / 2; - } else { - return mRectMainClose.right - mSecondaryView.getWidth() / 2; - } - } - - private final ViewDragHelper.Callback mDragHelperCallback = new ViewDragHelper.Callback() { - @Override - public boolean tryCaptureView(View child, int pointerId) { - - if (mLockDrag) - return false; - - mDragHelper.captureChildView(mMainView, pointerId); - return false; - } - - @Override - public int clampViewPositionHorizontal(View child, int left, int dx) { - switch (mDragEdge) { - case DRAG_EDGE_RIGHT: - return Math.max( - Math.min(left, mRectMainClose.left), - mRectMainClose.left - mSecondaryView.getWidth() - ); - - case DRAG_EDGE_LEFT: - return Math.max( - Math.min(left, mRectMainClose.left + mSecondaryView.getWidth()), - mRectMainClose.left - ); - - default: - return child.getLeft(); - } - } - - @Override - public void onViewReleased(View releasedChild, float xvel, float yvel) { - final boolean velRightExceeded = pxToDp((int) xvel) >= mMinFlingVelocity; - final boolean velLeftExceeded = pxToDp((int) xvel) <= -mMinFlingVelocity; - - final int pivotHorizontal = getHalfwayPivotHorizontal(); - - switch (mDragEdge) { - case DRAG_EDGE_RIGHT: - if (velRightExceeded) { - close(true); - } else if (velLeftExceeded) { - open(true); - } else { - if (mMainView.getRight() < pivotHorizontal) { - open(true); - } else { - close(true); - } - } - break; - - case DRAG_EDGE_LEFT: - if (velRightExceeded) { - open(true); - } else if (velLeftExceeded) { - close(true); - } else { - if (mMainView.getLeft() < pivotHorizontal) { - close(true); - } else { - open(true); - } - } - break; - } - } - - @Override - public void onEdgeDragStarted(int edgeFlags, int pointerId) { - super.onEdgeDragStarted(edgeFlags, pointerId); - - if (mLockDrag) { - return; - } - - boolean edgeStartLeft = (mDragEdge == DRAG_EDGE_RIGHT) - && edgeFlags == ViewDragHelper.EDGE_LEFT; - - boolean edgeStartRight = (mDragEdge == DRAG_EDGE_LEFT) - && edgeFlags == ViewDragHelper.EDGE_RIGHT; - - if (edgeStartLeft || edgeStartRight) { - mDragHelper.captureChildView(mMainView, pointerId); - } - } - - @Override - public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) { - super.onViewPositionChanged(changedView, left, top, dx, dy); - if (mMode == MODE_SAME_LEVEL) { - if (mDragEdge == DRAG_EDGE_LEFT || mDragEdge == DRAG_EDGE_RIGHT) { - mSecondaryView.offsetLeftAndRight(dx); - } else { - mSecondaryView.offsetTopAndBottom(dy); - } - } - ViewCompat.postInvalidateOnAnimation(SwipeRevealLayout.this); - } - }; - - private int pxToDp(int px) { - Resources resources = getContext().getResources(); - DisplayMetrics metrics = resources.getDisplayMetrics(); - return (int) (px / ((float)metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT)); - } -} \ No newline at end of file diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java index f9df28d5ca..3489210b62 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -11,10 +11,8 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; -import android.widget.Toast; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; @@ -71,12 +69,6 @@ public class UserListAdapter extends RecyclerView.Adapter - + android:background="?attr/selectableItemBackground" + android:clickable="true"> - + - + - - - - - - - - - + - - - + android:layout_height="wrap_content" /> + - - - \ No newline at end of file + \ No newline at end of file diff --git a/android/app/src/main/res/values/attrs.xml b/android/app/src/main/res/values/attrs.xml deleted file mode 100644 index c12f28ccde..0000000000 --- a/android/app/src/main/res/values/attrs.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file From 9fadf58e7b561f555dda08e03407990a33a0cf1a Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 10 Aug 2018 13:56:48 -0700 Subject: [PATCH 283/332] Add threads lib to image lib --- libraries/image/CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libraries/image/CMakeLists.txt b/libraries/image/CMakeLists.txt index 6bc5c762f5..4db39f2152 100644 --- a/libraries/image/CMakeLists.txt +++ b/libraries/image/CMakeLists.txt @@ -3,3 +3,9 @@ setup_hifi_library() link_hifi_libraries(shared gpu) target_nvtt() target_etc2comp() + +if (UNIX AND NOT APPLE) + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_package(Threads REQUIRED) + target_link_libraries(image Threads::Threads) +endif() From b65f2d46a64d5bcda85938edd621bfec162c8c29 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Fri, 10 Aug 2018 18:18:24 -0300 Subject: [PATCH 284/332] Android - People - Letters styling in row --- .../hifiinterface/view/UserListAdapter.java | 8 +++++-- android/app/src/main/res/layout/user_item.xml | 21 +++++++++++++++---- android/app/src/main/res/values/colors.xml | 1 + android/app/src/main/res/values/strings.xml | 2 +- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java index 3489210b62..202fd82c8b 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -67,9 +67,9 @@ public class UserListAdapter extends RecyclerView.Adapter - + + android:layout_height="wrap_content"> + + + \ No newline at end of file diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml index 7e6cf52d36..9de0ae5347 100644 --- a/android/app/src/main/res/values/colors.xml +++ b/android/app/src/main/res/values/colors.xml @@ -18,4 +18,5 @@ #99000000 #292929 #23B2E7 + #62D5C6 diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 9fe7f0cbee..d5da2f857b 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -23,5 +23,5 @@ No places exist with that name Privacy Policy Your Last Location - + Online From 3a356de49fe08f58c89e817bd73cceef6d9c9aef Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 11 Aug 2018 09:46:11 +1200 Subject: [PATCH 285/332] Don't auto-action entry in HMD file dialog when single-click on it --- interface/resources/qml/dialogs/TabletFileDialog.qml | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/resources/qml/dialogs/TabletFileDialog.qml b/interface/resources/qml/dialogs/TabletFileDialog.qml index 4de0460796..6848c230e3 100644 --- a/interface/resources/qml/dialogs/TabletFileDialog.qml +++ b/interface/resources/qml/dialogs/TabletFileDialog.qml @@ -471,7 +471,6 @@ TabletModalWindow { bottomMargin: hifi.dimensions.contentSpacing.y + currentSelection.controlHeight - currentSelection.height } headerVisible: !selectDirectory - onClicked: navigateToRow(row); onDoubleClicked: navigateToRow(row); focus: true Keys.onReturnPressed: navigateToCurrentRow(); From 2e323efe1b0858c263aa01300ff8196e3f2f4291 Mon Sep 17 00:00:00 2001 From: Gabriel Calero Date: Fri, 10 Aug 2018 18:57:41 -0300 Subject: [PATCH 286/332] Test if this fixes the choppy audio --- libraries/audio-client/src/AudioClient.cpp | 91 +++++++++++++++++++++- libraries/audio-client/src/AudioClient.h | 12 +++ 2 files changed, 100 insertions(+), 3 deletions(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index 6ac30e7f73..52ad6751e7 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -57,6 +57,11 @@ #include #endif +Q_DECLARE_METATYPE(const void*); +Q_DECLARE_METATYPE(quint16); +Q_DECLARE_METATYPE(Transform); + + const int AudioClient::MIN_BUFFER_FRAMES = 1; const int AudioClient::MAX_BUFFER_FRAMES = 20; @@ -208,10 +213,18 @@ AudioClient::AudioClient() : _audioOutputIODevice(_localInjectorsStream, _receivedAudioStream, this), _stats(&_receivedAudioStream), _positionGetter(DEFAULT_POSITION_GETTER), + _audioSender(new AudioSender()), #if defined(Q_OS_ANDROID) _checkInputTimer(this), #endif _orientationGetter(DEFAULT_ORIENTATION_GETTER) { + + qRegisterMetaType("const void*"); + qRegisterMetaType("quint16"); + qRegisterMetaType("Transform"); + + _audioSender->start(); + // avoid putting a lock in the device callback assert(_localSamplesAvailable.is_lock_free()); @@ -1112,11 +1125,21 @@ void AudioClient::handleAudioInput(QByteArray& audioBuffer) { } else { encodedBuffer = audioBuffer; } + QMetaObject::invokeMethod(_audioSender, "emitAudioPacket", Qt::QueuedConnection, + Q_ARG(const void*, encodedBuffer.data()), +Q_ARG(size_t, encodedBuffer.size()), +Q_ARG(quint16, _outgoingAvatarAudioSequenceNumber++ ), + Q_ARG(bool,_isStereoInput), + Q_ARG(Transform, audioTransform), + Q_ARG(glm::vec3, avatarBoundingBoxCorner), + Q_ARG(glm::vec3, avatarBoundingBoxScale), + Q_ARG(PacketType, packetType), + Q_ARG(QString, _selectedCodecName)); - emitAudioPacket(encodedBuffer.data(), encodedBuffer.size(), _outgoingAvatarAudioSequenceNumber, _isStereoInput, + /* emitAudioPacket(encodedBuffer.data(), encodedBuffer.size(), _outgoingAvatarAudioSequenceNumber, _isStereoInput, audioTransform, avatarBoundingBoxCorner, avatarBoundingBoxScale, - packetType, _selectedCodecName); - _stats.sentPacket(); + packetType, _selectedCodecName); */ + //_stats.sentPacket(); } void AudioClient::handleMicAudioInput() { @@ -2051,3 +2074,65 @@ void AudioClient::setInputVolume(float volume, bool emitSignal) { } } } + +AudioSender::AudioSender() { + +} + +void AudioSender::start() { + moveToNewNamedThread(this, "Audio Sender Thread", [this] { }, QThread::HighestPriority); +} + + +void AudioSender::emitAudioPacket(const void* audioData, size_t bytes, quint16 sequenceNumber, bool isStereo, + const Transform& transform, glm::vec3 avatarBoundingBoxCorner, glm::vec3 avatarBoundingBoxScale, + PacketType packetType, QString codecName) { + static std::mutex _mutex; + using Locker = std::unique_lock; + auto nodeList = DependencyManager::get(); + SharedNodePointer audioMixer = nodeList->soloNodeOfType(NodeType::AudioMixer); + if (audioMixer && audioMixer->getActiveSocket()) { + Locker lock(_mutex); + auto audioPacket = NLPacket::create(packetType); + + // write sequence number + auto sequence = sequenceNumber; + audioPacket->writePrimitive(sequence); + + // write the codec + audioPacket->writeString(codecName); + + if (packetType == PacketType::SilentAudioFrame) { + // pack num silent samples + quint16 numSilentSamples = isStereo ? + AudioConstants::NETWORK_FRAME_SAMPLES_STEREO : + AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL; + audioPacket->writePrimitive(numSilentSamples); + } else { + // set the mono/stereo byte + quint8 channelFlag = isStereo ? 1 : 0; + audioPacket->writePrimitive(channelFlag); + } + + // at this point we'd better be sending the mixer a valid position, or it won't consider us for mixing + assert(!isNaN(transform.getTranslation())); + + // pack the three float positions + audioPacket->writePrimitive(transform.getTranslation()); + // pack the orientation + audioPacket->writePrimitive(transform.getRotation()); + + audioPacket->writePrimitive(avatarBoundingBoxCorner); + audioPacket->writePrimitive(avatarBoundingBoxScale); + + + if (audioPacket->getType() != PacketType::SilentAudioFrame) { + // audio samples have already been packed (written to networkAudioSamples) + int leadingBytes = audioPacket->getPayloadSize(); + audioPacket->setPayloadSize(leadingBytes + bytes); + memcpy(audioPacket->getPayload() + leadingBytes, audioData, bytes); + } + nodeList->flagTimeForConnectionStep(LimitedNodeList::ConnectionStep::SendAudioPacket); + nodeList->sendUnreliablePacket(*audioPacket, *audioMixer); + } +} \ No newline at end of file diff --git a/libraries/audio-client/src/AudioClient.h b/libraries/audio-client/src/AudioClient.h index 9ee7bcfeba..c9ef2e5c2c 100644 --- a/libraries/audio-client/src/AudioClient.h +++ b/libraries/audio-client/src/AudioClient.h @@ -71,6 +71,17 @@ class QIODevice; class Transform; class NLPacket; +class AudioSender : public QObject { + Q_OBJECT +public: + AudioSender(); + void start(); +public Q_SLOTS: + void emitAudioPacket(const void* audioData, size_t bytes, quint16 sequenceNumber, bool isStereo, + const Transform& transform, glm::vec3 avatarBoundingBoxCorner, glm::vec3 avatarBoundingBoxScale, + PacketType packetType, QString codecName = QString("")); +}; + class AudioClient : public AbstractAudioInterface, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY @@ -261,6 +272,7 @@ protected: virtual void customDeleter() override; private: + AudioSender *_audioSender; friend class CheckDevicesThread; friend class LocalInjectorsThread; From 610306c49c05353bd3f1c0b90aaa5db411272421 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Fri, 10 Aug 2018 19:02:01 -0300 Subject: [PATCH 287/332] Android - People - add friend star --- android/app/src/main/res/drawable/ic_star.xml | 4 ++++ android/app/src/main/res/layout/user_item.xml | 10 +++++++++- android/app/src/main/res/values/colors.xml | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 android/app/src/main/res/drawable/ic_star.xml diff --git a/android/app/src/main/res/drawable/ic_star.xml b/android/app/src/main/res/drawable/ic_star.xml new file mode 100644 index 0000000000..abd1798942 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_star.xml @@ -0,0 +1,4 @@ + + + diff --git a/android/app/src/main/res/layout/user_item.xml b/android/app/src/main/res/layout/user_item.xml index 703c99945e..dec9f04af8 100644 --- a/android/app/src/main/res/layout/user_item.xml +++ b/android/app/src/main/res/layout/user_item.xml @@ -44,5 +44,13 @@ android:fontFamily="@font/raleway_italic"/> - + \ No newline at end of file diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml index 9de0ae5347..ecca075298 100644 --- a/android/app/src/main/res/values/colors.xml +++ b/android/app/src/main/res/values/colors.xml @@ -19,4 +19,6 @@ #292929 #23B2E7 #62D5C6 + #FBD92A + #8A8A8A From 1a6a55680c169f8a149ec1c098024de58aa13a2a Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Fri, 10 Aug 2018 15:30:32 -0700 Subject: [PATCH 288/332] PropagateComposedEvents --- interface/resources/qml/hifi/Feed.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/interface/resources/qml/hifi/Feed.qml b/interface/resources/qml/hifi/Feed.qml index 593ebdcbea..0605c72f26 100644 --- a/interface/resources/qml/hifi/Feed.qml +++ b/interface/resources/qml/hifi/Feed.qml @@ -165,6 +165,7 @@ Column { enabled: root.autoScrollTimerEnabled; anchors.fill: parent; hoverEnabled: true; + propagateComposedEvents: true; onEntered: { if (autoScrollTimer.running) { autoScrollTimer.stop(); From 096be16bb10423ac3b4df62e07de3944a7164d3b Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Fri, 10 Aug 2018 15:32:31 -0700 Subject: [PATCH 289/332] Only restart timer if feedMouseArea doesn't contain mouse --- interface/resources/qml/hifi/Feed.qml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/Feed.qml b/interface/resources/qml/hifi/Feed.qml index 0605c72f26..e1c712db1f 100644 --- a/interface/resources/qml/hifi/Feed.qml +++ b/interface/resources/qml/hifi/Feed.qml @@ -156,7 +156,9 @@ Column { onCurrentIndexChanged: { if (root.autoScrollTimerEnabled) { autoScrollTimer.interval = suggestions.get(scroll.currentIndex).time_before_autoscroll_ms; - autoScrollTimer.start(); + if (!feedMouseArea.containsMouse) { + autoScrollTimer.start(); + } } } From 876079bb8139a4a380861150a4ace6709f84359a Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Sat, 11 Aug 2018 00:41:50 +0200 Subject: [PATCH 290/332] deactivate Create App when desktop windows are closed --- scripts/system/edit.js | 8 ++++++++ scripts/system/libraries/entityList.js | 5 +++++ scripts/system/modules/createWindow.js | 16 +++++++++++++++- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index fe790480f6..43d95b108b 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -806,6 +806,14 @@ var toolBar = (function () { addButton("newMaterialButton", createNewEntityDialogButtonCallback("Material")); + var deactiveCreateIfDesktopWindowsHidden = function() { + if (!shouldUseEditTabletApp() && !entityListTool.isVisible() && !createToolsWindow.isVisible()) { + that.setActive(false); + } + }; + entityListTool.interactiveWindowHidden.addListener(this, deactiveCreateIfDesktopWindowsHidden); + createToolsWindow.interactiveWindowHidden.addListener(this, deactiveCreateIfDesktopWindowsHidden); + that.setActive(false); } diff --git a/scripts/system/libraries/entityList.js b/scripts/system/libraries/entityList.js index fb876302dd..678b2eeb0b 100644 --- a/scripts/system/libraries/entityList.js +++ b/scripts/system/libraries/entityList.js @@ -59,6 +59,10 @@ EntityListTool = function(shouldUseEditTabletApp) { entityListWindow.setVisible(!shouldUseEditTabletApp() && visible); }; + that.isVisible = function() { + return entityListWindow.isVisible(); + }; + that.setVisible(false); function emitJSONScriptEvent(data) { @@ -244,6 +248,7 @@ EntityListTool = function(shouldUseEditTabletApp) { webView.webEventReceived.connect(onWebEventReceived); entityListWindow.webEventReceived.addListener(onWebEventReceived); + that.interactiveWindowHidden = entityListWindow.interactiveWindowHidden; return that; }; diff --git a/scripts/system/modules/createWindow.js b/scripts/system/modules/createWindow.js index 185991d2ef..7369cf91f8 100644 --- a/scripts/system/modules/createWindow.js +++ b/scripts/system/modules/createWindow.js @@ -75,6 +75,7 @@ module.exports = (function() { this.settingsKey = settingsKey; this.defaultRect = defaultRect; this.webEventReceived = new CallableEvent(); + this.interactiveWindowHidden = new CallableEvent(); this.fromQml = new CallableEvent(); if (createOnStartup) { this.createWindow(); @@ -108,10 +109,16 @@ module.exports = (function() { this.window.sizeChanged.connect(this, windowRectChanged); this.window.positionChanged.connect(this, windowRectChanged); - this.window.webEventReceived.connect(this, function (data) { + this.window.webEventReceived.connect(this, function(data) { this.webEventReceived.call(data); }); + this.window.visibleChanged.connect(this, function() { + if (!this.window.visible) { + this.interactiveWindowHidden.call(); + } + }); + this.window.fromQml.connect(this, function (data) { this.fromQml.call(data); }); @@ -133,6 +140,12 @@ module.exports = (function() { } } }, + isVisible: function() { + if (this.window) { + return this.window.visible; + } + return false; + }, emitScriptEvent: function(data) { if (this.window) { this.window.emitScriptEvent(data); @@ -144,6 +157,7 @@ module.exports = (function() { } }, webEventReceived: null, + interactiveWindowHidden: null, fromQml: null }; From dd93055d89d83237f02126c7b5739cc8d9d936d5 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Fri, 10 Aug 2018 16:15:30 -0700 Subject: [PATCH 291/332] Convert and load attachments when rig is ready --- interface/src/avatar/MyAvatar.cpp | 14 +++++++++----- libraries/avatars/src/AvatarData.h | 1 + 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 7067c1c791..837f67d9af 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -139,6 +139,12 @@ MyAvatar::MyAvatar(QThread* thread) : auto geometry = getSkeletonModel()->getFBXGeometry(); qApp->loadAvatarScripts(geometry.scripts); _shouldLoadScripts = false; + } + // Load and convert old attachments to avatar entities + if (_oldAttachmentData.size() > 0) { + setAttachmentData(_oldAttachmentData); + _oldAttachmentData.clear(); + _attachmentData.clear(); } }); connect(_skeletonModel.get(), &Model::rigReady, this, &Avatar::rigReady); @@ -1249,7 +1255,6 @@ void MyAvatar::loadData() { useFullAvatarURL(_fullAvatarURLFromPreferences, _fullAvatarModelName); - QVector attachmentData; int attachmentCount = settings.beginReadArray("attachmentData"); for (int i = 0; i < attachmentCount; i++) { settings.setArrayIndex(i); @@ -1266,10 +1271,10 @@ void MyAvatar::loadData() { attachment.rotation = glm::quat(eulers); attachment.scale = loadSetting(settings, "scale", 1.0f); attachment.isSoft = settings.value("isSoft").toBool(); - attachmentData.append(attachment); + // old attachments are stored and loaded/converted later when rig is ready + _oldAttachmentData.append(attachment); } settings.endArray(); - setAttachmentData(attachmentData); int avatarEntityCount = settings.beginReadArray("avatarEntityData"); for (int i = 0; i < avatarEntityCount; i++) { @@ -2107,8 +2112,7 @@ void MyAvatar::attachmentDataToEntityProperties(const AttachmentData& data, Enti QString url = data.modelURL.toString(); properties.setName(QFileInfo(url).baseName()); properties.setType(EntityTypes::Model); - properties.setParentID(getID()); - properties.setOwningAvatarID(getID()); + properties.setParentID(AVATAR_SELF_ID); properties.setLocalPosition(data.translation); properties.setLocalRotation(data.rotation); if (!data.isSoft) { diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 147d303871..e873f88aaa 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -1317,6 +1317,7 @@ protected: bool _firstSkeletonCheck { true }; QUrl _skeletonFBXURL; QVector _attachmentData; + QVector _oldAttachmentData; QString _displayName; QString _sessionDisplayName { }; bool _lookAtSnappingEnabled { true }; From f26188d5b8e193470d5e2ef904c1323852469075 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Sat, 11 Aug 2018 01:54:13 +0200 Subject: [PATCH 292/332] added comment for limit choice --- scripts/system/libraries/entityCameraTool.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/system/libraries/entityCameraTool.js b/scripts/system/libraries/entityCameraTool.js index 01030c9d7d..ebaeb1acb5 100644 --- a/scripts/system/libraries/entityCameraTool.js +++ b/scripts/system/libraries/entityCameraTool.js @@ -28,6 +28,8 @@ var FOCUS_MIN_ZOOM = 0.5; var ZOOM_SCALING = 0.02; var MIN_ZOOM_DISTANCE = 0.01; + +// The maximum usable zoom level is somewhere around 14km, further than that the edit handles will fade-out. (FIXME: MS17493) var MAX_ZOOM_DISTANCE = 14000; var MODE_INACTIVE = 'inactive'; From a20be5b50d0e7db89d7c56846974fd3b1de29c38 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Sat, 11 Aug 2018 02:28:01 +0200 Subject: [PATCH 293/332] remove rotation for newly created entities --- scripts/system/edit.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index fe790480f6..f9674b4414 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -314,8 +314,6 @@ var toolBar = (function () { direction = MyAvatar.orientation; } direction = Vec3.multiplyQbyV(direction, Vec3.UNIT_Z); - // Align entity with Avatar orientation. - properties.rotation = MyAvatar.orientation; var PRE_ADJUST_ENTITY_TYPES = ["Box", "Sphere", "Shape", "Text", "Web", "Material"]; if (PRE_ADJUST_ENTITY_TYPES.indexOf(properties.type) !== -1) { From 221dfb8979ae7acfc3e35bf5ffe0c36db9f962f7 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Sat, 11 Aug 2018 05:46:48 +0200 Subject: [PATCH 294/332] typo fix --- scripts/system/edit.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 43d95b108b..c4c5561236 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -806,13 +806,13 @@ var toolBar = (function () { addButton("newMaterialButton", createNewEntityDialogButtonCallback("Material")); - var deactiveCreateIfDesktopWindowsHidden = function() { + var deactivateCreateIfDesktopWindowsHidden = function() { if (!shouldUseEditTabletApp() && !entityListTool.isVisible() && !createToolsWindow.isVisible()) { that.setActive(false); } }; - entityListTool.interactiveWindowHidden.addListener(this, deactiveCreateIfDesktopWindowsHidden); - createToolsWindow.interactiveWindowHidden.addListener(this, deactiveCreateIfDesktopWindowsHidden); + entityListTool.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); + createToolsWindow.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); that.setActive(false); } From 8a22d0adc7debeb6bd6611c61b1ffb3709241eb8 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 11 Aug 2018 11:04:44 -0700 Subject: [PATCH 295/332] set grabbable user data in addAssetToWorldCheckModelSize --- interface/src/Application.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index d8a48d51c0..d0b6a604ee 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7371,7 +7371,8 @@ void Application::addAssetToWorldCheckModelSize() { if (!name.toLower().endsWith(PNG_EXTENSION) && !name.toLower().endsWith(JPG_EXTENSION)) { properties.setCollisionless(false); } - properties.setUserData(GRABBABLE_USER_DATA); + bool grabbable = (Menu::getInstance()->isOptionChecked(MenuOption::CreateEntitiesGrabbable)); + properties.setUserData(grabbable ? GRABBABLE_USER_DATA : NOT_GRABBABLE_USER_DATA); properties.setLastEdited(usecTimestampNow()); entityScriptingInterface->editEntity(entityID, properties); } From 86ba8c3d810a44da48667ea20c04375d7be831f6 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 13 Aug 2018 10:08:19 -0700 Subject: [PATCH 296/332] fix parabola shader --- libraries/render-utils/src/parabola.slv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/parabola.slv b/libraries/render-utils/src/parabola.slv index 0948b2ab47..31b3ab8fae 100644 --- a/libraries/render-utils/src/parabola.slv +++ b/libraries/render-utils/src/parabola.slv @@ -20,7 +20,7 @@ struct ParabolaData { vec4 color; int numSections; ivec3 spare; -} +}; layout(std140, binding=0) uniform parabolaData { ParabolaData _parabolaData; From b381a182bd66d0ee8c4d22dcbdf3042f0975e262 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Mon, 13 Aug 2018 14:31:20 -0300 Subject: [PATCH 297/332] Android - People - add padding to list --- android/app/src/main/res/layout/fragment_friends.xml | 3 +++ android/app/src/main/res/values/dimens.xml | 2 ++ 2 files changed, 5 insertions(+) diff --git a/android/app/src/main/res/layout/fragment_friends.xml b/android/app/src/main/res/layout/fragment_friends.xml index 8129f5d53c..4e4abb7f28 100644 --- a/android/app/src/main/res/layout/fragment_friends.xml +++ b/android/app/src/main/res/layout/fragment_friends.xml @@ -12,6 +12,9 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" + android:paddingTop="@dimen/list_vertical_padding" + android:paddingBottom="@dimen/list_vertical_padding" + android:clipToPadding="false" android:layout_width="0dp" android:layout_height="0dp" /> diff --git a/android/app/src/main/res/values/dimens.xml b/android/app/src/main/res/values/dimens.xml index bb5be1c070..d40132939b 100644 --- a/android/app/src/main/res/values/dimens.xml +++ b/android/app/src/main/res/values/dimens.xml @@ -37,4 +37,6 @@ 101dp 425dp + 8dp + From 4fa0c96046f63758d09734631b6b25a4f946eeb5 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Mon, 13 Aug 2018 11:57:48 -0700 Subject: [PATCH 298/332] fix desktop press-x handshake --- scripts/system/makeUserConnection.js | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/system/makeUserConnection.js b/scripts/system/makeUserConnection.js index 8642fc5ce6..5dee36d147 100644 --- a/scripts/system/makeUserConnection.js +++ b/scripts/system/makeUserConnection.js @@ -228,6 +228,7 @@ animationData.rightHandPosition.y += verticalOffset; } animationData.rightHandRotation = Quat.fromPitchYawRollDegrees(90, 0, 90); + animationData.rightHandType = 0; // RotationAndPosition, see IKTargets.h } function shakeHandsAnimation() { return animationData; From f910757ec443248b95adddafabc71a4576bb979a Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Mon, 13 Aug 2018 22:57:07 +0300 Subject: [PATCH 299/332] FB16914 - Avatar bookmarks missing from Avatar Favorites --- interface/src/AvatarBookmarks.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/interface/src/AvatarBookmarks.cpp b/interface/src/AvatarBookmarks.cpp index 3e0e643bd8..89097f3435 100644 --- a/interface/src/AvatarBookmarks.cpp +++ b/interface/src/AvatarBookmarks.cpp @@ -171,6 +171,13 @@ void AvatarBookmarks::loadBookmark(const QString& bookmarkName) { if (bookmarkEntry != _bookmarks.end()) { QVariantMap bookmark = bookmarkEntry.value().toMap(); + if (bookmark.empty()) { // compatibility with bookmarks like this: "Wooden Doll": "http://mpassets.highfidelity.com/7fe80a1e-f445-4800-9e89-40e677b03bee-v1/mannequin.fst?noDownload=false", + auto avatarUrl = bookmarkEntry.value().toString(); + if (!avatarUrl.isEmpty()) { + bookmark.insert(ENTRY_AVATAR_URL, avatarUrl); + } + } + if (!bookmark.empty()) { auto myAvatar = DependencyManager::get()->getMyAvatar(); auto treeRenderer = DependencyManager::get(); From fd9876cb63551c27bf256ebb6da822bcea157c49 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Mon, 13 Aug 2018 13:30:30 -0700 Subject: [PATCH 300/332] don't attempt physics with invalid modelURL --- libraries/entities/src/ModelEntityItem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/entities/src/ModelEntityItem.cpp b/libraries/entities/src/ModelEntityItem.cpp index cf89a73214..5d5344c9c8 100644 --- a/libraries/entities/src/ModelEntityItem.cpp +++ b/libraries/entities/src/ModelEntityItem.cpp @@ -371,7 +371,7 @@ void ModelEntityItem::setAnimationFPS(float value) { // virtual bool ModelEntityItem::shouldBePhysical() const { - return !isDead() && getShapeType() != SHAPE_TYPE_NONE; + return !isDead() && getShapeType() != SHAPE_TYPE_NONE && QUrl(_modelURL).isValid(); } void ModelEntityItem::resizeJointArrays(int newSize) { From 4b808fe38ef1c96af00b1c3bcd18fafaee263682 Mon Sep 17 00:00:00 2001 From: Gabriel Calero Date: Mon, 13 Aug 2018 18:29:05 -0300 Subject: [PATCH 301/332] Revert "Test if this fixes the choppy audio" This reverts commit 2e323efe1b0858c263aa01300ff8196e3f2f4291. --- libraries/audio-client/src/AudioClient.cpp | 91 +--------------------- libraries/audio-client/src/AudioClient.h | 12 --- 2 files changed, 3 insertions(+), 100 deletions(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index 52ad6751e7..6ac30e7f73 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -57,11 +57,6 @@ #include #endif -Q_DECLARE_METATYPE(const void*); -Q_DECLARE_METATYPE(quint16); -Q_DECLARE_METATYPE(Transform); - - const int AudioClient::MIN_BUFFER_FRAMES = 1; const int AudioClient::MAX_BUFFER_FRAMES = 20; @@ -213,18 +208,10 @@ AudioClient::AudioClient() : _audioOutputIODevice(_localInjectorsStream, _receivedAudioStream, this), _stats(&_receivedAudioStream), _positionGetter(DEFAULT_POSITION_GETTER), - _audioSender(new AudioSender()), #if defined(Q_OS_ANDROID) _checkInputTimer(this), #endif _orientationGetter(DEFAULT_ORIENTATION_GETTER) { - - qRegisterMetaType("const void*"); - qRegisterMetaType("quint16"); - qRegisterMetaType("Transform"); - - _audioSender->start(); - // avoid putting a lock in the device callback assert(_localSamplesAvailable.is_lock_free()); @@ -1125,21 +1112,11 @@ void AudioClient::handleAudioInput(QByteArray& audioBuffer) { } else { encodedBuffer = audioBuffer; } - QMetaObject::invokeMethod(_audioSender, "emitAudioPacket", Qt::QueuedConnection, - Q_ARG(const void*, encodedBuffer.data()), -Q_ARG(size_t, encodedBuffer.size()), -Q_ARG(quint16, _outgoingAvatarAudioSequenceNumber++ ), - Q_ARG(bool,_isStereoInput), - Q_ARG(Transform, audioTransform), - Q_ARG(glm::vec3, avatarBoundingBoxCorner), - Q_ARG(glm::vec3, avatarBoundingBoxScale), - Q_ARG(PacketType, packetType), - Q_ARG(QString, _selectedCodecName)); - /* emitAudioPacket(encodedBuffer.data(), encodedBuffer.size(), _outgoingAvatarAudioSequenceNumber, _isStereoInput, + emitAudioPacket(encodedBuffer.data(), encodedBuffer.size(), _outgoingAvatarAudioSequenceNumber, _isStereoInput, audioTransform, avatarBoundingBoxCorner, avatarBoundingBoxScale, - packetType, _selectedCodecName); */ - //_stats.sentPacket(); + packetType, _selectedCodecName); + _stats.sentPacket(); } void AudioClient::handleMicAudioInput() { @@ -2074,65 +2051,3 @@ void AudioClient::setInputVolume(float volume, bool emitSignal) { } } } - -AudioSender::AudioSender() { - -} - -void AudioSender::start() { - moveToNewNamedThread(this, "Audio Sender Thread", [this] { }, QThread::HighestPriority); -} - - -void AudioSender::emitAudioPacket(const void* audioData, size_t bytes, quint16 sequenceNumber, bool isStereo, - const Transform& transform, glm::vec3 avatarBoundingBoxCorner, glm::vec3 avatarBoundingBoxScale, - PacketType packetType, QString codecName) { - static std::mutex _mutex; - using Locker = std::unique_lock; - auto nodeList = DependencyManager::get(); - SharedNodePointer audioMixer = nodeList->soloNodeOfType(NodeType::AudioMixer); - if (audioMixer && audioMixer->getActiveSocket()) { - Locker lock(_mutex); - auto audioPacket = NLPacket::create(packetType); - - // write sequence number - auto sequence = sequenceNumber; - audioPacket->writePrimitive(sequence); - - // write the codec - audioPacket->writeString(codecName); - - if (packetType == PacketType::SilentAudioFrame) { - // pack num silent samples - quint16 numSilentSamples = isStereo ? - AudioConstants::NETWORK_FRAME_SAMPLES_STEREO : - AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL; - audioPacket->writePrimitive(numSilentSamples); - } else { - // set the mono/stereo byte - quint8 channelFlag = isStereo ? 1 : 0; - audioPacket->writePrimitive(channelFlag); - } - - // at this point we'd better be sending the mixer a valid position, or it won't consider us for mixing - assert(!isNaN(transform.getTranslation())); - - // pack the three float positions - audioPacket->writePrimitive(transform.getTranslation()); - // pack the orientation - audioPacket->writePrimitive(transform.getRotation()); - - audioPacket->writePrimitive(avatarBoundingBoxCorner); - audioPacket->writePrimitive(avatarBoundingBoxScale); - - - if (audioPacket->getType() != PacketType::SilentAudioFrame) { - // audio samples have already been packed (written to networkAudioSamples) - int leadingBytes = audioPacket->getPayloadSize(); - audioPacket->setPayloadSize(leadingBytes + bytes); - memcpy(audioPacket->getPayload() + leadingBytes, audioData, bytes); - } - nodeList->flagTimeForConnectionStep(LimitedNodeList::ConnectionStep::SendAudioPacket); - nodeList->sendUnreliablePacket(*audioPacket, *audioMixer); - } -} \ No newline at end of file diff --git a/libraries/audio-client/src/AudioClient.h b/libraries/audio-client/src/AudioClient.h index c9ef2e5c2c..9ee7bcfeba 100644 --- a/libraries/audio-client/src/AudioClient.h +++ b/libraries/audio-client/src/AudioClient.h @@ -71,17 +71,6 @@ class QIODevice; class Transform; class NLPacket; -class AudioSender : public QObject { - Q_OBJECT -public: - AudioSender(); - void start(); -public Q_SLOTS: - void emitAudioPacket(const void* audioData, size_t bytes, quint16 sequenceNumber, bool isStereo, - const Transform& transform, glm::vec3 avatarBoundingBoxCorner, glm::vec3 avatarBoundingBoxScale, - PacketType packetType, QString codecName = QString("")); -}; - class AudioClient : public AbstractAudioInterface, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY @@ -272,7 +261,6 @@ protected: virtual void customDeleter() override; private: - AudioSender *_audioSender; friend class CheckDevicesThread; friend class LocalInjectorsThread; From 1bfd6fe97dd1e73999f4db9995c1cc4958f14f3b Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Mon, 13 Aug 2018 20:32:45 -0300 Subject: [PATCH 302/332] Android - People - Sliding panel (for users actions) --- android/app/build.gradle | 2 + .../hifiinterface/MainActivity.java | 12 +++++- .../fragment/FriendsFragment.java | 39 +++++++++++++++++++ .../hifiinterface/view/UserListAdapter.java | 19 ++++++++- .../src/main/res/layout/fragment_friends.xml | 30 ++++++++------ android/app/src/main/res/values/strings.xml | 3 ++ android/build.gradle | 1 + 7 files changed, 93 insertions(+), 13 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index d5058a7f40..a32ab20f6c 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -144,5 +144,7 @@ dependencies { compile 'com.squareup.retrofit2:converter-gson:2.4.0' implementation 'com.squareup.picasso:picasso:2.71828' + compile 'com.sothree.slidinguppanel:library:3.4.0' + implementation fileTree(include: ['*.jar'], dir: 'libs') } diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java index 220a69381d..d259e18ee7 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java @@ -150,7 +150,8 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On private void loadFragment(Fragment fragment, String title, boolean addToBackStack) { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction ft = fragmentManager.beginTransaction(); - ft.replace(R.id.content_frame, fragment); + ft.replace(R.id.content_frame, fragment, getString(R.string.tagFragmentPeople)); + if (addToBackStack) { ft.addToBackStack(title); } @@ -297,6 +298,15 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On @Override public void onBackPressed() { + // if a fragment needs to internally manage back presses.. + FragmentManager fm = getFragmentManager(); + Fragment friendsFragment = fm.findFragmentByTag(getString(R.string.tagFragmentPeople)); + if (friendsFragment != null && friendsFragment instanceof FriendsFragment) { + if (((FriendsFragment) friendsFragment).onBackPressed()) { + return; + } + } + int index = getFragmentManager().getBackStackEntryCount() - 1; if (index > 0) { super.onBackPressed(); diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java index e70ecfbc57..2cd80bcca9 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java @@ -10,6 +10,8 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import com.sothree.slidinguppanel.SlidingUpPanelLayout; + import io.highfidelity.hifiinterface.R; import io.highfidelity.hifiinterface.view.UserListAdapter; @@ -20,7 +22,9 @@ public class FriendsFragment extends Fragment { public native String nativeGetAccessToken(); private RecyclerView mUsersView; + private View mUserActions; private UserListAdapter mUsersAdapter; + private SlidingUpPanelLayout mSlidingUpPanelLayout; public FriendsFragment() { // Required empty public constructor @@ -45,9 +49,44 @@ public class FriendsFragment extends Fragment { GridLayoutManager gridLayoutMgr = new GridLayoutManager(getContext(), numberOfColumns); mUsersView.setLayoutManager(gridLayoutMgr); mUsersAdapter = new UserListAdapter(getContext(), accessToken); + + mUserActions = rootView.findViewById(R.id.userActionsLayout); + + mSlidingUpPanelLayout = rootView.findViewById(R.id.sliding_layout); + mSlidingUpPanelLayout.setPanelHeight(0); + mUsersAdapter.setClickListener(new UserListAdapter.ItemClickListener() { + @Override + public void onItemClick(View view, int position, UserListAdapter.User user) { + // 1. 'select' user + // .. + // 2. adapt options + // .. + // 3. show + mSlidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); + } + }); mUsersView.setAdapter(mUsersAdapter); + mSlidingUpPanelLayout.setFadeOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mSlidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); + } + }); + return rootView; } + /** + * Processes the back pressed event and returns true if it was managed by this Fragment + * @return + */ + public boolean onBackPressed() { + if (mSlidingUpPanelLayout.getPanelState().equals(SlidingUpPanelLayout.PanelState.EXPANDED)) { + mSlidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); + return true; + } else { + return false; + } + } } diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java index 202fd82c8b..ad3a5cc136 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -34,6 +34,7 @@ public class UserListAdapter extends RecyclerView.Adapter mUsers = new ArrayList<>(); + private ItemClickListener mClickListener; public UserListAdapter(Context c, String accessToken) { mContext = c; @@ -99,7 +100,7 @@ public class UserListAdapter extends RecyclerView.Adapter - + android:gravity="bottom" + sothree:umanoShadowHeight="4dp" + android:background="@color/backgroundLight"> + + android:layout_width="match_parent" + android:layout_height="match_parent" /> - + + + + diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index d5da2f857b..ea4e59a35a 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -24,4 +24,7 @@ Privacy Policy Your Last Location Online + + + tagFragmentPeople diff --git a/android/build.gradle b/android/build.gradle index bc39c30472..6ecdd34542 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -28,6 +28,7 @@ allprojects { repositories { jcenter() google() + mavenCentral() } } From 0fcf1517a543e19446882ca42b4d2427c04198b8 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 10 Aug 2018 14:57:00 -0700 Subject: [PATCH 303/332] Fix TextureCache not correctly choosing gl41 when gl45 is disabled --- libraries/model-networking/CMakeLists.txt | 2 +- .../src/model-networking/TextureCache.cpp | 31 +++++++++++++------ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/libraries/model-networking/CMakeLists.txt b/libraries/model-networking/CMakeLists.txt index 696f4feb9a..9a4bc780a6 100644 --- a/libraries/model-networking/CMakeLists.txt +++ b/libraries/model-networking/CMakeLists.txt @@ -1,4 +1,4 @@ set(TARGET_NAME model-networking) setup_hifi_library() -link_hifi_libraries(shared networking graphics fbx ktx image) +link_hifi_libraries(shared networking graphics fbx ktx image gl) include_hifi_library_headers(gpu) diff --git a/libraries/model-networking/src/model-networking/TextureCache.cpp b/libraries/model-networking/src/model-networking/TextureCache.cpp index aa00116200..e8aec5e60e 100644 --- a/libraries/model-networking/src/model-networking/TextureCache.cpp +++ b/libraries/model-networking/src/model-networking/TextureCache.cpp @@ -31,6 +31,7 @@ #include #include +#include #include #include @@ -271,6 +272,20 @@ gpu::TexturePointer getFallbackTextureForType(image::TextureUsage::Type type) { return result; } +gpu::BackendTarget getBackendTarget() { +#if defined(USE_GLES) + gpu::BackendTarget target = gpu::BackendTarget::GLES32; +#elif defined(Q_OS_MAC) + gpu::BackendTarget target = gpu::BackendTarget::GL41; +#else + gpu::BackendTarget target = gpu::BackendTarget::GL45; + if (gl::disableGl45()) { + target = gpu::BackendTarget::GL41; + } +#endif + return target; +} + /// Returns a texture version of an image file gpu::TexturePointer TextureCache::getImageTexture(const QString& path, image::TextureUsage::Type type, QVariantMap options) { QImage image = QImage(path); @@ -279,13 +294,14 @@ gpu::TexturePointer TextureCache::getImageTexture(const QString& path, image::Te return nullptr; } auto loader = image::TextureUsage::getTextureLoaderForType(type, options); + #ifdef USE_GLES - gpu::BackendTarget target = gpu::BackendTarget::GLES32; - bool shouldCompress = true; + constexpr bool shouldCompress = true; #else - gpu::BackendTarget target = gpu::BackendTarget::GL45; - bool shouldCompress = false; + constexpr bool shouldCompress = false; #endif + auto target = getBackendTarget(); + return gpu::TexturePointer(loader(std::move(image), path.toStdString(), shouldCompress, target, false)); } @@ -1170,15 +1186,10 @@ void ImageReader::read() { #ifdef USE_GLES constexpr bool shouldCompress = true; - gpu::BackendTarget target = gpu::BackendTarget::GLES32; #else constexpr bool shouldCompress = false; -#ifdef Q_OS_MAC - gpu::BackendTarget target = gpu::BackendTarget::GL41; -#else - gpu::BackendTarget target = gpu::BackendTarget::GL45; -#endif #endif + auto target = getBackendTarget(); texture = image::processImage(std::move(buffer), _url.toString().toStdString(), _maxNumPixels, networkTexture->getTextureType(), shouldCompress, target); if (!texture) { From 2576d502ab1426073e20e85b5bc32e0a4cce70bc Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 13 Aug 2018 17:27:57 -0700 Subject: [PATCH 304/332] Remove unused getter for btCollisionWorld in PhysicsEngine --- libraries/physics/src/PhysicsEngine.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/libraries/physics/src/PhysicsEngine.h b/libraries/physics/src/PhysicsEngine.h index 91e4cd4578..c5ab0cfdee 100644 --- a/libraries/physics/src/PhysicsEngine.h +++ b/libraries/physics/src/PhysicsEngine.h @@ -95,8 +95,6 @@ public: const VectorOfMotionStates& getChangedMotionStates(); const VectorOfMotionStates& getDeactivatedMotionStates() const { return _dynamicsWorld->getDeactivatedMotionStates(); } - const ThreadSafeDynamicsWorld* getDynamicsWorld() { return _dynamicsWorld; } - /// \return reference to list of Collision events. The list is only valid until beginning of next simulation loop. const CollisionEvents& getCollisionEvents(); From 36e9c8ba3bceceb4995cd003cf34a3f61d5f80f7 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Tue, 14 Aug 2018 12:44:09 -0300 Subject: [PATCH 305/332] Android - People - UI changes to match design spec --- .../res/drawable/ic_delete_black_24dp.xml | 9 +++ .../app/src/main/res/drawable/ic_visit.xml | 9 +++ .../src/main/res/layout/fragment_friends.xml | 64 +++++++++++++++++-- android/app/src/main/res/layout/user_item.xml | 6 +- 4 files changed, 82 insertions(+), 6 deletions(-) create mode 100644 android/app/src/main/res/drawable/ic_delete_black_24dp.xml create mode 100644 android/app/src/main/res/drawable/ic_visit.xml diff --git a/android/app/src/main/res/drawable/ic_delete_black_24dp.xml b/android/app/src/main/res/drawable/ic_delete_black_24dp.xml new file mode 100644 index 0000000000..39e64d6980 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_delete_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/android/app/src/main/res/drawable/ic_visit.xml b/android/app/src/main/res/drawable/ic_visit.xml new file mode 100644 index 0000000000..0ecbf6838c --- /dev/null +++ b/android/app/src/main/res/drawable/ic_visit.xml @@ -0,0 +1,9 @@ + + + diff --git a/android/app/src/main/res/layout/fragment_friends.xml b/android/app/src/main/res/layout/fragment_friends.xml index f0f83089fc..3c8e0af6bc 100644 --- a/android/app/src/main/res/layout/fragment_friends.xml +++ b/android/app/src/main/res/layout/fragment_friends.xml @@ -1,12 +1,13 @@ - - + + + + + + + + diff --git a/android/app/src/main/res/layout/user_item.xml b/android/app/src/main/res/layout/user_item.xml index dec9f04af8..acdc6a8aea 100644 --- a/android/app/src/main/res/layout/user_item.xml +++ b/android/app/src/main/res/layout/user_item.xml @@ -26,7 +26,8 @@ android:id="@+id/userName" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:fontFamily="@font/raleway" /> + android:fontFamily="@font/raleway" + android:textColor="@color/menuOption"/> @@ -41,7 +42,8 @@ android:id="@+id/userLocation" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:fontFamily="@font/raleway_italic"/> + android:fontFamily="@font/raleway_italic" + android:textColor="@color/menuOption"/> Date: Tue, 7 Aug 2018 16:03:35 -0700 Subject: [PATCH 306/332] pseudo-joints for far-grab positions --- interface/src/avatar/MyAvatar.cpp | 133 +++- .../src/avatars-renderer/Avatar.cpp | 18 + libraries/avatars/src/AvatarData.cpp | 203 +++++- libraries/avatars/src/AvatarData.h | 27 +- .../networking/src/udt/PacketHeaders.cpp | 2 +- libraries/networking/src/udt/PacketHeaders.h | 3 +- libraries/shared/src/ThreadSafeValueCache.h | 15 + .../controllers/controllerDispatcher.js | 3 +- .../farActionGrabEntityDynOnly.js | 603 ++++++++++++++++ .../controllerModules/farParentGrabEntity.js | 646 ++++++++++++++++++ .../system/controllers/controllerScripts.js | 10 +- .../libraries/controllerDispatcherUtils.js | 40 +- scripts/system/libraries/pointersUtils.js | 11 +- 13 files changed, 1633 insertions(+), 81 deletions(-) create mode 100644 scripts/system/controllers/controllerModules/farActionGrabEntityDynOnly.js create mode 100644 scripts/system/controllers/controllerModules/farParentGrabEntity.js diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 5eee3f75cc..de0768b7ad 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1499,50 +1499,126 @@ void MyAvatar::setJointRotations(const QVector& jointRotations) { } void MyAvatar::setJointData(int index, const glm::quat& rotation, const glm::vec3& translation) { - if (QThread::currentThread() != thread()) { - QMetaObject::invokeMethod(this, "setJointData", Q_ARG(int, index), Q_ARG(const glm::quat&, rotation), - Q_ARG(const glm::vec3&, translation)); - return; + switch (index) { + case FARGRAB_RIGHTHAND_INDEX: { + _farGrabRightMatrixCache.set(createMatFromQuatAndPos(rotation, translation)); + break; + } + case FARGRAB_LEFTHAND_INDEX: { + _farGrabLeftMatrixCache.set(createMatFromQuatAndPos(rotation, translation)); + break; + } + case FARGRAB_MOUSE_INDEX: { + _farGrabMouseMatrixCache.set(createMatFromQuatAndPos(rotation, translation)); + break; + } + default: { + if (QThread::currentThread() != thread()) { + QMetaObject::invokeMethod(this, "setJointData", Q_ARG(int, index), Q_ARG(const glm::quat&, rotation), + Q_ARG(const glm::vec3&, translation)); + return; + } + // HACK: ATM only JS scripts call setJointData() on MyAvatar so we hardcode the priority + _skeletonModel->getRig().setJointState(index, true, rotation, translation, SCRIPT_PRIORITY); + } } - // HACK: ATM only JS scripts call setJointData() on MyAvatar so we hardcode the priority - _skeletonModel->getRig().setJointState(index, true, rotation, translation, SCRIPT_PRIORITY); } void MyAvatar::setJointRotation(int index, const glm::quat& rotation) { - if (QThread::currentThread() != thread()) { - QMetaObject::invokeMethod(this, "setJointRotation", Q_ARG(int, index), Q_ARG(const glm::quat&, rotation)); - return; + switch (index) { + case FARGRAB_RIGHTHAND_INDEX: { + glm::mat4 prevMat = _farGrabRightMatrixCache.get(); + glm::vec3 previousTranslation = extractTranslation(prevMat); + _farGrabRightMatrixCache.set(createMatFromQuatAndPos(rotation, previousTranslation)); + break; + } + case FARGRAB_LEFTHAND_INDEX: { + glm::mat4 prevMat = _farGrabLeftMatrixCache.get(); + glm::vec3 previousTranslation = extractTranslation(prevMat); + _farGrabLeftMatrixCache.set(createMatFromQuatAndPos(rotation, previousTranslation)); + break; + } + case FARGRAB_MOUSE_INDEX: { + glm::mat4 prevMat = _farGrabMouseMatrixCache.get(); + glm::vec3 previousTranslation = extractTranslation(prevMat); + _farGrabMouseMatrixCache.set(createMatFromQuatAndPos(rotation, previousTranslation)); + break; + } + default: { + if (QThread::currentThread() != thread()) { + QMetaObject::invokeMethod(this, "setJointRotation", Q_ARG(int, index), Q_ARG(const glm::quat&, rotation)); + return; + } + // HACK: ATM only JS scripts call setJointData() on MyAvatar so we hardcode the priority + _skeletonModel->getRig().setJointRotation(index, true, rotation, SCRIPT_PRIORITY); + } } - // HACK: ATM only JS scripts call setJointData() on MyAvatar so we hardcode the priority - _skeletonModel->getRig().setJointRotation(index, true, rotation, SCRIPT_PRIORITY); } void MyAvatar::setJointTranslation(int index, const glm::vec3& translation) { - if (QThread::currentThread() != thread()) { - QMetaObject::invokeMethod(this, "setJointTranslation", Q_ARG(int, index), Q_ARG(const glm::vec3&, translation)); - return; + switch (index) { + case FARGRAB_RIGHTHAND_INDEX: { + glm::mat4 prevMat = _farGrabRightMatrixCache.get(); + glm::quat previousRotation = extractRotation(prevMat); + _farGrabRightMatrixCache.set(createMatFromQuatAndPos(previousRotation, translation)); + break; + } + case FARGRAB_LEFTHAND_INDEX: { + glm::mat4 prevMat = _farGrabLeftMatrixCache.get(); + glm::quat previousRotation = extractRotation(prevMat); + _farGrabLeftMatrixCache.set(createMatFromQuatAndPos(previousRotation, translation)); + break; + } + case FARGRAB_MOUSE_INDEX: { + glm::mat4 prevMat = _farGrabMouseMatrixCache.get(); + glm::quat previousRotation = extractRotation(prevMat); + _farGrabMouseMatrixCache.set(createMatFromQuatAndPos(previousRotation, translation)); + break; + } + default: { + if (QThread::currentThread() != thread()) { + QMetaObject::invokeMethod(this, "setJointTranslation", + Q_ARG(int, index), Q_ARG(const glm::vec3&, translation)); + return; + } + // HACK: ATM only JS scripts call setJointData() on MyAvatar so we hardcode the priority + _skeletonModel->getRig().setJointTranslation(index, true, translation, SCRIPT_PRIORITY); + } } - // HACK: ATM only JS scripts call setJointData() on MyAvatar so we hardcode the priority - _skeletonModel->getRig().setJointTranslation(index, true, translation, SCRIPT_PRIORITY); } void MyAvatar::clearJointData(int index) { - if (QThread::currentThread() != thread()) { - QMetaObject::invokeMethod(this, "clearJointData", Q_ARG(int, index)); - return; + switch (index) { + case FARGRAB_RIGHTHAND_INDEX: { + _farGrabRightMatrixCache.invalidate(); + break; + } + case FARGRAB_LEFTHAND_INDEX: { + _farGrabLeftMatrixCache.invalidate(); + break; + } + case FARGRAB_MOUSE_INDEX: { + _farGrabMouseMatrixCache.invalidate(); + break; + } + default: { + if (QThread::currentThread() != thread()) { + QMetaObject::invokeMethod(this, "clearJointData", Q_ARG(int, index)); + return; + } + _skeletonModel->getRig().clearJointAnimationPriority(index); + } } - _skeletonModel->getRig().clearJointAnimationPriority(index); } void MyAvatar::setJointData(const QString& name, const glm::quat& rotation, const glm::vec3& translation) { if (QThread::currentThread() != thread()) { QMetaObject::invokeMethod(this, "setJointData", Q_ARG(QString, name), Q_ARG(const glm::quat&, rotation), - Q_ARG(const glm::vec3&, translation)); + Q_ARG(const glm::vec3&, translation)); return; } writeLockWithNamedJointIndex(name, [&](int index) { - // HACK: ATM only JS scripts call setJointData() on MyAvatar so we hardcode the priority - _skeletonModel->getRig().setJointState(index, true, rotation, translation, SCRIPT_PRIORITY); + setJointData(index, rotation, translation); }); } @@ -1552,8 +1628,7 @@ void MyAvatar::setJointRotation(const QString& name, const glm::quat& rotation) return; } writeLockWithNamedJointIndex(name, [&](int index) { - // HACK: ATM only JS scripts call setJointData() on MyAvatar so we hardcode the priority - _skeletonModel->getRig().setJointRotation(index, true, rotation, SCRIPT_PRIORITY); + setJointRotation(index, rotation); }); } @@ -1563,8 +1638,7 @@ void MyAvatar::setJointTranslation(const QString& name, const glm::vec3& transla return; } writeLockWithNamedJointIndex(name, [&](int index) { - // HACK: ATM only JS scripts call setJointData() on MyAvatar so we hardcode the priority - _skeletonModel->getRig().setJointTranslation(index, true, translation, SCRIPT_PRIORITY); + setJointTranslation(index, translation); }); } @@ -1574,7 +1648,7 @@ void MyAvatar::clearJointData(const QString& name) { return; } writeLockWithNamedJointIndex(name, [&](int index) { - _skeletonModel->getRig().clearJointAnimationPriority(index); + clearJointData(index); }); } @@ -1583,6 +1657,9 @@ void MyAvatar::clearJointsData() { QMetaObject::invokeMethod(this, "clearJointsData"); return; } + _farGrabRightMatrixCache.invalidate(); + _farGrabLeftMatrixCache.invalidate(); + _farGrabMouseMatrixCache.invalidate(); _skeletonModel->getRig().clearJointStates(); } diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 873fc94021..0b43fd5433 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -1184,6 +1184,15 @@ glm::quat Avatar::getAbsoluteJointRotationInObjectFrame(int index) const { } return Quaternions::Y_180 * rotation * Quaternions::Y_180; } + case FARGRAB_RIGHTHAND_INDEX: { + return extractRotation(_farGrabRightMatrixCache.get()); + } + case FARGRAB_LEFTHAND_INDEX: { + return extractRotation(_farGrabLeftMatrixCache.get()); + } + case FARGRAB_MOUSE_INDEX: { + return extractRotation(_farGrabMouseMatrixCache.get()); + } default: { glm::quat rotation; _skeletonModel->getAbsoluteJointRotationInRigFrame(index, rotation); @@ -1224,6 +1233,15 @@ glm::vec3 Avatar::getAbsoluteJointTranslationInObjectFrame(int index) const { } return Quaternions::Y_180 * translation * Quaternions::Y_180; } + case FARGRAB_RIGHTHAND_INDEX: { + return extractTranslation(_farGrabRightMatrixCache.get()); + } + case FARGRAB_LEFTHAND_INDEX: { + return extractTranslation(_farGrabLeftMatrixCache.get()); + } + case FARGRAB_MOUSE_INDEX: { + return extractTranslation(_farGrabMouseMatrixCache.get()); + } default: { glm::vec3 translation; _skeletonModel->getAbsoluteJointTranslationInRigFrame(index, translation); diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index abdac838b6..a2006d3503 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -62,7 +62,7 @@ size_t AvatarDataPacket::maxFaceTrackerInfoSize(size_t numBlendshapeCoefficients return FACE_TRACKER_INFO_SIZE + numBlendshapeCoefficients * sizeof(float); } -size_t AvatarDataPacket::maxJointDataSize(size_t numJoints) { +size_t AvatarDataPacket::maxJointDataSize(size_t numJoints, bool hasGrabJoints) { const size_t validityBitsSize = (size_t)std::ceil(numJoints / (float)BITS_IN_BYTE); size_t totalSize = sizeof(uint8_t); // numJoints @@ -73,7 +73,8 @@ size_t AvatarDataPacket::maxJointDataSize(size_t numJoints) { totalSize += numJoints * sizeof(SixByteTrans); // Translations size_t NUM_FAUX_JOINT = 2; - totalSize += NUM_FAUX_JOINT * (sizeof(SixByteQuat) + sizeof(SixByteTrans)); // faux joints + size_t num_grab_joints = (hasGrabJoints ? 2 : 0); + totalSize += (NUM_FAUX_JOINT + num_grab_joints) * (sizeof(SixByteQuat) + sizeof(SixByteTrans)); // faux joints return totalSize; } @@ -227,7 +228,8 @@ QByteArray AvatarData::toByteArrayStateful(AvatarDataDetail dataDetail, bool dro &_outboundDataRate); } -QByteArray AvatarData::toByteArray(AvatarDataDetail dataDetail, quint64 lastSentTime, const QVector& lastSentJointData, +QByteArray AvatarData::toByteArray(AvatarDataDetail dataDetail, quint64 lastSentTime, + const QVector& lastSentJointData, AvatarDataPacket::HasFlags& hasFlagsOut, bool dropFaceTracking, bool distanceAdjust, glm::vec3 viewerPosition, QVector* sentJointDataOut, AvatarDataRate* outboundDataRateOut) const { @@ -284,6 +286,11 @@ QByteArray AvatarData::toByteArray(AvatarDataDetail dataDetail, quint64 lastSent bool hasFaceTrackerInfo = false; bool hasJointData = false; bool hasJointDefaultPoseFlags = false; + bool hasGrabJoints = false; + + glm::mat4 leftFarGrabMatrix; + glm::mat4 rightFarGrabMatrix; + glm::mat4 mouseFarGrabMatrix; if (sendPALMinimum) { hasAudioLoudness = true; @@ -304,12 +311,30 @@ QByteArray AvatarData::toByteArray(AvatarDataDetail dataDetail, quint64 lastSent (sendAll || faceTrackerInfoChangedSince(lastSentTime)); hasJointData = sendAll || !sendMinimum; hasJointDefaultPoseFlags = hasJointData; + if (hasJointData) { + bool leftValid; + leftFarGrabMatrix = _farGrabLeftMatrixCache.get(leftValid); + if (!leftValid) { + leftFarGrabMatrix = glm::mat4(); + } + bool rightValid; + rightFarGrabMatrix = _farGrabRightMatrixCache.get(rightValid); + if (!rightValid) { + rightFarGrabMatrix = glm::mat4(); + } + bool mouseValid; + mouseFarGrabMatrix = _farGrabMouseMatrixCache.get(mouseValid); + if (!mouseValid) { + mouseFarGrabMatrix = glm::mat4(); + } + hasGrabJoints = (leftValid || rightValid || mouseValid); + } } const size_t byteArraySize = AvatarDataPacket::MAX_CONSTANT_HEADER_SIZE + (hasFaceTrackerInfo ? AvatarDataPacket::maxFaceTrackerInfoSize(_headData->getBlendshapeCoefficients().size()) : 0) + - (hasJointData ? AvatarDataPacket::maxJointDataSize(_jointData.size()) : 0) + + (hasJointData ? AvatarDataPacket::maxJointDataSize(_jointData.size(), hasGrabJoints) : 0) + (hasJointDefaultPoseFlags ? AvatarDataPacket::maxJointDefaultPoseFlagsSize(_jointData.size()) : 0); QByteArray avatarDataByteArray((int)byteArraySize, 0); @@ -330,7 +355,8 @@ QByteArray AvatarData::toByteArray(AvatarDataDetail dataDetail, quint64 lastSent | (hasAvatarLocalPosition ? AvatarDataPacket::PACKET_HAS_AVATAR_LOCAL_POSITION : 0) | (hasFaceTrackerInfo ? AvatarDataPacket::PACKET_HAS_FACE_TRACKER_INFO : 0) | (hasJointData ? AvatarDataPacket::PACKET_HAS_JOINT_DATA : 0) - | (hasJointDefaultPoseFlags ? AvatarDataPacket::PACKET_HAS_JOINT_DEFAULT_POSE_FLAGS : 0); + | (hasJointDefaultPoseFlags ? AvatarDataPacket::PACKET_HAS_JOINT_DEFAULT_POSE_FLAGS : 0) + | (hasGrabJoints ? AvatarDataPacket::PACKET_HAS_GRAB_JOINTS : 0); memcpy(destinationBuffer, &packetStateFlags, sizeof(packetStateFlags)); destinationBuffer += sizeof(packetStateFlags); @@ -668,6 +694,53 @@ QByteArray AvatarData::toByteArray(AvatarDataDetail dataDetail, quint64 lastSent destinationBuffer += packFloatVec3ToSignedTwoByteFixed(destinationBuffer, controllerRightHandTransform.getTranslation(), TRANSLATION_COMPRESSION_RADIX); + if (hasGrabJoints) { + // the far-grab joints may range further than 3 meters, so we can't use packFloatVec3ToSignedTwoByteFixed etc + auto startSection = destinationBuffer; + auto data = reinterpret_cast(destinationBuffer); + glm::vec3 leftFarGrabPosition = extractTranslation(leftFarGrabMatrix); + glm::quat leftFarGrabRotation = extractRotation(leftFarGrabMatrix); + glm::vec3 rightFarGrabPosition = extractTranslation(rightFarGrabMatrix); + glm::quat rightFarGrabRotation = extractRotation(rightFarGrabMatrix); + glm::vec3 mouseFarGrabPosition = extractTranslation(mouseFarGrabMatrix); + glm::quat mouseFarGrabRotation = extractRotation(mouseFarGrabMatrix); + + data->leftFarGrabPosition[0] = leftFarGrabPosition.x; + data->leftFarGrabPosition[1] = leftFarGrabPosition.y; + data->leftFarGrabPosition[2] = leftFarGrabPosition.z; + + data->leftFarGrabRotation[0] = leftFarGrabRotation.w; + data->leftFarGrabRotation[1] = leftFarGrabRotation.x; + data->leftFarGrabRotation[2] = leftFarGrabRotation.y; + data->leftFarGrabRotation[3] = leftFarGrabRotation.z; + + data->rightFarGrabPosition[0] = rightFarGrabPosition.x; + data->rightFarGrabPosition[1] = rightFarGrabPosition.y; + data->rightFarGrabPosition[2] = rightFarGrabPosition.z; + + data->rightFarGrabRotation[0] = rightFarGrabRotation.w; + data->rightFarGrabRotation[1] = rightFarGrabRotation.x; + data->rightFarGrabRotation[2] = rightFarGrabRotation.y; + data->rightFarGrabRotation[3] = rightFarGrabRotation.z; + + data->mouseFarGrabPosition[0] = mouseFarGrabPosition.x; + data->mouseFarGrabPosition[1] = mouseFarGrabPosition.y; + data->mouseFarGrabPosition[2] = mouseFarGrabPosition.z; + + data->mouseFarGrabRotation[0] = mouseFarGrabRotation.w; + data->mouseFarGrabRotation[1] = mouseFarGrabRotation.x; + data->mouseFarGrabRotation[2] = mouseFarGrabRotation.y; + data->mouseFarGrabRotation[3] = mouseFarGrabRotation.z; + + destinationBuffer += sizeof(AvatarDataPacket::FarGrabJoints); + + int numBytes = destinationBuffer - startSection; + + if (outboundDataRateOut) { + outboundDataRateOut->farGrabJointRate.increment(numBytes); + } + } + #ifdef WANT_DEBUG if (sendAll) { qCDebug(avatars) << "AvatarData::toByteArray" << cullSmallChanges << sendAll @@ -834,6 +907,7 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) { bool hasFaceTrackerInfo = HAS_FLAG(packetStateFlags, AvatarDataPacket::PACKET_HAS_FACE_TRACKER_INFO); bool hasJointData = HAS_FLAG(packetStateFlags, AvatarDataPacket::PACKET_HAS_JOINT_DATA); bool hasJointDefaultPoseFlags = HAS_FLAG(packetStateFlags, AvatarDataPacket::PACKET_HAS_JOINT_DEFAULT_POSE_FLAGS); + bool hasGrabJoints = HAS_FLAG(packetStateFlags, AvatarDataPacket::PACKET_HAS_GRAB_JOINTS); quint64 now = usecTimestampNow(); @@ -1195,6 +1269,34 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) { int numBytesRead = sourceBuffer - startSection; _jointDataRate.increment(numBytesRead); _jointDataUpdateRate.increment(); + + if (hasGrabJoints) { + auto startSection = sourceBuffer; + + PACKET_READ_CHECK(FarGrabJoints, sizeof(AvatarDataPacket::FarGrabJoints)); + auto data = reinterpret_cast(sourceBuffer); + glm::vec3 leftFarGrabPosition = glm::vec3(data->leftFarGrabPosition[0], data->leftFarGrabPosition[1], + data->leftFarGrabPosition[2]); + glm::quat leftFarGrabRotation = glm::quat(data->leftFarGrabRotation[0], data->leftFarGrabRotation[1], + data->leftFarGrabRotation[2], data->leftFarGrabRotation[3]); + glm::vec3 rightFarGrabPosition = glm::vec3(data->rightFarGrabPosition[0], data->rightFarGrabPosition[1], + data->rightFarGrabPosition[2]); + glm::quat rightFarGrabRotation = glm::quat(data->rightFarGrabRotation[0], data->rightFarGrabRotation[1], + data->rightFarGrabRotation[2], data->rightFarGrabRotation[3]); + glm::vec3 mouseFarGrabPosition = glm::vec3(data->mouseFarGrabPosition[0], data->mouseFarGrabPosition[1], + data->mouseFarGrabPosition[2]); + glm::quat mouseFarGrabRotation = glm::quat(data->mouseFarGrabRotation[0], data->mouseFarGrabRotation[1], + data->mouseFarGrabRotation[2], data->mouseFarGrabRotation[3]); + + _farGrabLeftMatrixCache.set(createMatFromQuatAndPos(leftFarGrabRotation, leftFarGrabPosition)); + _farGrabRightMatrixCache.set(createMatFromQuatAndPos(rightFarGrabRotation, rightFarGrabPosition)); + _farGrabMouseMatrixCache.set(createMatFromQuatAndPos(mouseFarGrabRotation, mouseFarGrabPosition)); + + sourceBuffer += sizeof(AvatarDataPacket::AvatarGlobalPosition); + int numBytesRead = sourceBuffer - startSection; + _farGrabJointRate.increment(numBytesRead); + _farGrabJointUpdateRate.increment(); + } } if (hasJointDefaultPoseFlags) { @@ -1261,6 +1363,8 @@ float AvatarData::getDataRate(const QString& rateName) const { return _jointDataRate.rate() / BYTES_PER_KILOBIT; } else if (rateName == "jointDefaultPoseFlagsRate") { return _jointDefaultPoseFlagsRate.rate() / BYTES_PER_KILOBIT; + } else if (rateName == "farGrabJointRate") { + return _farGrabJointRate.rate() / BYTES_PER_KILOBIT; } else if (rateName == "globalPositionOutbound") { return _outboundDataRate.globalPositionRate.rate() / BYTES_PER_KILOBIT; } else if (rateName == "localPositionOutbound") { @@ -1318,6 +1422,8 @@ float AvatarData::getUpdateRate(const QString& rateName) const { return _faceTrackerUpdateRate.rate(); } else if (rateName == "jointData") { return _jointDataUpdateRate.rate(); + } else if (rateName == "farGrabJointData") { + return _farGrabJointUpdateRate.rate(); } return 0.0f; } @@ -1344,7 +1450,7 @@ void AvatarData::setRawJointData(QVector data) { } void AvatarData::setJointData(int index, const glm::quat& rotation, const glm::vec3& translation) { - if (index == -1) { + if (index < 0 || index >= LOWEST_PSEUDO_JOINT_INDEX) { return; } QWriteLocker writeLock(&_jointDataLock); @@ -1359,7 +1465,7 @@ void AvatarData::setJointData(int index, const glm::quat& rotation, const glm::v } void AvatarData::clearJointData(int index) { - if (index == -1) { + if (index < 0 || index >= LOWEST_PSEUDO_JOINT_INDEX) { return; } QWriteLocker writeLock(&_jointDataLock); @@ -1371,27 +1477,72 @@ void AvatarData::clearJointData(int index) { } bool AvatarData::isJointDataValid(int index) const { - if (index == -1) { - return false; + switch (index) { + case FARGRAB_RIGHTHAND_INDEX: { + bool valid; + _farGrabRightMatrixCache.get(valid); + return valid; + } + case FARGRAB_LEFTHAND_INDEX: { + bool valid; + _farGrabLeftMatrixCache.get(valid); + return valid; + } + case FARGRAB_MOUSE_INDEX: { + bool valid; + _farGrabMouseMatrixCache.get(valid); + return valid; + } + default: { + if (index < 0 || index >= LOWEST_PSEUDO_JOINT_INDEX) { + return false; + } + QReadLocker readLock(&_jointDataLock); + return index < _jointData.size(); + } } - QReadLocker readLock(&_jointDataLock); - return index < _jointData.size(); } glm::quat AvatarData::getJointRotation(int index) const { - if (index == -1) { - return glm::quat(); + switch (index) { + case FARGRAB_RIGHTHAND_INDEX: { + return extractRotation(_farGrabRightMatrixCache.get()); + } + case FARGRAB_LEFTHAND_INDEX: { + return extractRotation(_farGrabLeftMatrixCache.get()); + } + case FARGRAB_MOUSE_INDEX: { + return extractRotation(_farGrabMouseMatrixCache.get()); + } + default: { + if (index < 0 || index >= LOWEST_PSEUDO_JOINT_INDEX) { + return glm::quat(); + } + QReadLocker readLock(&_jointDataLock); + return index < _jointData.size() ? _jointData.at(index).rotation : glm::quat(); + } } - QReadLocker readLock(&_jointDataLock); - return index < _jointData.size() ? _jointData.at(index).rotation : glm::quat(); } glm::vec3 AvatarData::getJointTranslation(int index) const { - if (index == -1) { - return glm::vec3(); + switch (index) { + case FARGRAB_RIGHTHAND_INDEX: { + return extractTranslation(_farGrabRightMatrixCache.get()); + } + case FARGRAB_LEFTHAND_INDEX: { + return extractTranslation(_farGrabLeftMatrixCache.get()); + } + case FARGRAB_MOUSE_INDEX: { + return extractTranslation(_farGrabMouseMatrixCache.get()); + } + default: { + if (index < 0 || index >= LOWEST_PSEUDO_JOINT_INDEX) { + return glm::vec3(); + } + QReadLocker readLock(&_jointDataLock); + return index < _jointData.size() ? _jointData.at(index).translation : glm::vec3(); + } } - QReadLocker readLock(&_jointDataLock); - return index < _jointData.size() ? _jointData.at(index).translation : glm::vec3(); } glm::vec3 AvatarData::getJointTranslation(const QString& name) const { @@ -1400,6 +1551,7 @@ glm::vec3 AvatarData::getJointTranslation(const QString& name) const { // return getJointTranslation(getJointIndex(name)); return readLockWithNamedJointIndex(name, [this](int index) { return _jointData.at(index).translation; + return getJointTranslation(index); }); } @@ -1437,7 +1589,7 @@ void AvatarData::setJointTranslation(const QString& name, const glm::vec3& trans } void AvatarData::setJointRotation(int index, const glm::quat& rotation) { - if (index == -1) { + if (index < 0 || index >= LOWEST_PSEUDO_JOINT_INDEX) { return; } QWriteLocker writeLock(&_jointDataLock); @@ -1450,7 +1602,7 @@ void AvatarData::setJointRotation(int index, const glm::quat& rotation) { } void AvatarData::setJointTranslation(int index, const glm::vec3& translation) { - if (index == -1) { + if (index < 0 || index >= LOWEST_PSEUDO_JOINT_INDEX) { return; } QWriteLocker writeLock(&_jointDataLock); @@ -1567,6 +1719,15 @@ int AvatarData::getFauxJointIndex(const QString& name) const { if (name == "_CAMERA_MATRIX") { return CAMERA_MATRIX_INDEX; } + if (name == "_FARGRAB_RIGHTHAND") { + return FARGRAB_RIGHTHAND_INDEX; + } + if (name == "_FARGRAB_LEFTHAND") { + return FARGRAB_LEFTHAND_INDEX; + } + if (name == "_FARGRAB_MOUSE") { + return FARGRAB_MOUSE_INDEX; + } return -1; } diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index a54f7927a3..fcc63fdc98 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -138,6 +138,7 @@ namespace AvatarDataPacket { const HasFlags PACKET_HAS_FACE_TRACKER_INFO = 1U << 10; const HasFlags PACKET_HAS_JOINT_DATA = 1U << 11; const HasFlags PACKET_HAS_JOINT_DEFAULT_POSE_FLAGS = 1U << 12; + const HasFlags PACKET_HAS_GRAB_JOINTS = 1U << 13; const size_t AVATAR_HAS_FLAGS_SIZE = 2; using SixByteQuat = uint8_t[6]; @@ -273,7 +274,7 @@ namespace AvatarDataPacket { SixByteTrans rightHandControllerTranslation; }; */ - size_t maxJointDataSize(size_t numJoints); + size_t maxJointDataSize(size_t numJoints, bool hasGrabJoints); /* struct JointDefaultPoseFlags { @@ -283,6 +284,17 @@ namespace AvatarDataPacket { }; */ size_t maxJointDefaultPoseFlagsSize(size_t numJoints); + + PACKED_BEGIN struct FarGrabJoints { + float leftFarGrabPosition[3]; // left controller far-grab joint position + float leftFarGrabRotation[4]; // left controller far-grab joint rotation + float rightFarGrabPosition[3]; // right controller far-grab joint position + float rightFarGrabRotation[4]; // right controller far-grab joint rotation + float mouseFarGrabPosition[3]; // mouse far-grab joint position + float mouseFarGrabRotation[4]; // mouse far-grab joint rotation + } PACKED_END; + const size_t FAR_GRAB_JOINTS_SIZE = 84; + static_assert(sizeof(FarGrabJoints) == FAR_GRAB_JOINTS_SIZE, "AvatarDataPacket::FarGrabJoints size doesn't match."); } const float MAX_AUDIO_LOUDNESS = 1000.0f; // close enough for mouth animation @@ -347,6 +359,7 @@ public: RateCounter<> faceTrackerRate; RateCounter<> jointDataRate; RateCounter<> jointDefaultPoseFlagsRate; + RateCounter<> farGrabJointRate; }; class AvatarPriority { @@ -1370,6 +1383,7 @@ protected: RateCounter<> _faceTrackerRate; RateCounter<> _jointDataRate; RateCounter<> _jointDefaultPoseFlagsRate; + RateCounter<> _farGrabJointRate; // Some rate data for incoming data updates RateCounter<> _parseBufferUpdateRate; @@ -1386,6 +1400,7 @@ protected: RateCounter<> _faceTrackerUpdateRate; RateCounter<> _jointDataUpdateRate; RateCounter<> _jointDefaultPoseFlagsUpdateRate; + RateCounter<> _farGrabJointUpdateRate; // Some rate data for outgoing data AvatarDataRate _outboundDataRate; @@ -1404,6 +1419,10 @@ protected: ThreadSafeValueCache _controllerLeftHandMatrixCache { glm::mat4() }; ThreadSafeValueCache _controllerRightHandMatrixCache { glm::mat4() }; + ThreadSafeValueCache _farGrabRightMatrixCache { glm::mat4() }; + ThreadSafeValueCache _farGrabLeftMatrixCache { glm::mat4() }; + ThreadSafeValueCache _farGrabMouseMatrixCache { glm::mat4() }; + int getFauxJointIndex(const QString& name) const; float _audioLoudness { 0.0f }; @@ -1561,5 +1580,11 @@ const int CONTROLLER_LEFTHAND_INDEX = 65532; // -4 const int CAMERA_RELATIVE_CONTROLLER_RIGHTHAND_INDEX = 65531; // -5 const int CAMERA_RELATIVE_CONTROLLER_LEFTHAND_INDEX = 65530; // -6 const int CAMERA_MATRIX_INDEX = 65529; // -7 +const int FARGRAB_RIGHTHAND_INDEX = 65528; // -8 +const int FARGRAB_LEFTHAND_INDEX = 65527; // -9 +const int FARGRAB_MOUSE_INDEX = 65526; // -10 + +const int LOWEST_PSEUDO_JOINT_INDEX = 65526; + #endif // hifi_AvatarData_h diff --git a/libraries/networking/src/udt/PacketHeaders.cpp b/libraries/networking/src/udt/PacketHeaders.cpp index 82e9820509..e902bb1954 100644 --- a/libraries/networking/src/udt/PacketHeaders.cpp +++ b/libraries/networking/src/udt/PacketHeaders.cpp @@ -40,7 +40,7 @@ PacketVersion versionForPacketType(PacketType packetType) { case PacketType::AvatarData: case PacketType::BulkAvatarData: case PacketType::KillAvatar: - return static_cast(AvatarMixerPacketVersion::ProceduralFaceMovementFlagsAndBlendshapes); + return static_cast(AvatarMixerPacketVersion::FarGrabJoints); case PacketType::MessagesData: return static_cast(MessageDataVersion::TextOrBinaryData); // ICE packets diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index 64c5bfe534..126dac7c8f 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -288,7 +288,8 @@ enum class AvatarMixerPacketVersion : PacketVersion { AvatarJointDefaultPoseFlags, FBXReaderNodeReparenting, FixMannequinDefaultAvatarFeet, - ProceduralFaceMovementFlagsAndBlendshapes + ProceduralFaceMovementFlagsAndBlendshapes, + FarGrabJoints }; enum class DomainConnectRequestVersion : PacketVersion { diff --git a/libraries/shared/src/ThreadSafeValueCache.h b/libraries/shared/src/ThreadSafeValueCache.h index 37a1258aa1..192300abbb 100644 --- a/libraries/shared/src/ThreadSafeValueCache.h +++ b/libraries/shared/src/ThreadSafeValueCache.h @@ -32,15 +32,30 @@ public: return _value; } + // returns atomic copy of the cached value and indicates validity + T get(bool& valid) const { + std::lock_guard guard(_mutex); + valid = _valid; + return _value; + } + // will reflect copy of value into the cache. void set(const T& v) { std::lock_guard guard(_mutex); _value = v; + _valid = true; + } + + // indicate that the value is not longer valid + void invalidate() { + std::lock_guard guard(_mutex); + _valid = false; } private: mutable std::mutex _mutex; T _value; + bool _valid { false }; // no copies ThreadSafeValueCache(const ThreadSafeValueCache&) = delete; diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js index 4002fd297b..7a916392b9 100644 --- a/scripts/system/controllers/controllerDispatcher.js +++ b/scripts/system/controllers/controllerDispatcher.js @@ -12,7 +12,8 @@ LEFT_HAND, RIGHT_HAND, NEAR_GRAB_PICK_RADIUS, DEFAULT_SEARCH_SPHERE_DISTANCE, DISPATCHER_PROPERTIES, getGrabPointSphereOffset, HMD, MyAvatar, Messages, findHandChildEntities, Picks, PickType, Pointers, COLORS_GRAB_SEARCHING_HALF_SQUEEZE COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, TRIGGER_ON_VALUE, PointerManager, print - Selection, DISPATCHER_HOVERING_LIST, DISPATCHER_HOVERING_STYLE + getGrabPointSphereOffset, HMD, MyAvatar, Messages, findHandChildEntities, Picks, PickType, Pointers, + PointerManager, print, Selection, DISPATCHER_HOVERING_LIST, DISPATCHER_HOVERING_STYLE */ controllerDispatcherPlugins = {}; diff --git a/scripts/system/controllers/controllerModules/farActionGrabEntityDynOnly.js b/scripts/system/controllers/controllerModules/farActionGrabEntityDynOnly.js new file mode 100644 index 0000000000..a080e75325 --- /dev/null +++ b/scripts/system/controllers/controllerModules/farActionGrabEntityDynOnly.js @@ -0,0 +1,603 @@ +"use strict"; + +// farActionGrabEntity.js +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html + +/* jslint bitwise: true */ + +/* global Script, Controller, RIGHT_HAND, LEFT_HAND, Mat4, MyAvatar, Vec3, Camera, Quat, getEnabledModuleByName, + makeRunningValues, Entities, enableDispatcherModule, disableDispatcherModule, entityIsGrabbable, + makeDispatcherModuleParameters, MSECS_PER_SEC, HAPTIC_PULSE_STRENGTH, HAPTIC_PULSE_DURATION, TRIGGER_OFF_VALUE, + TRIGGER_ON_VALUE, ZERO_VEC, getControllerWorldLocation, projectOntoEntityXYPlane, ContextOverlay, HMD, + Picks, makeLaserLockInfo, Xform, makeLaserParams, AddressManager, getEntityParents, Selection, DISPATCHER_HOVERING_LIST, + Uuid +*/ + +Script.include("/~/system/libraries/controllerDispatcherUtils.js"); +Script.include("/~/system/libraries/controllers.js"); +Script.include("/~/system/libraries/Xform.js"); + +(function() { + var GRABBABLE_PROPERTIES = [ + "position", + "registrationPoint", + "rotation", + "gravity", + "collidesWith", + "dynamic", + "collisionless", + "locked", + "name", + "shapeType", + "parentID", + "parentJointIndex", + "density", + "dimensions", + "userData" + ]; + + var MARGIN = 25; + + function TargetObject(entityID, entityProps) { + this.entityID = entityID; + this.entityProps = entityProps; + this.targetEntityID = null; + this.targetEntityProps = null; + this.previousCollisionStatus = null; + + this.getTargetEntity = function() { + var parentPropsLength = this.parentProps.length; + if (parentPropsLength !== 0) { + var targetEntity = { + id: this.parentProps[parentPropsLength - 1].id, + props: this.parentProps[parentPropsLength - 1]}; + this.targetEntityID = targetEntity.id; + this.targetEntityProps = targetEntity.props; + return targetEntity; + } + this.targetEntityID = this.entityID; + this.targetEntityProps = this.entityProps; + return { + id: this.entityID, + props: this.entityProps}; + }; + } + + function FarActionGrabEntity(hand) { + this.hand = hand; + this.grabbedThingID = null; + this.targetObject = null; + this.actionID = null; // action this script created... + this.entityToLockOnto = null; + this.potentialEntityWithContextOverlay = false; + this.entityWithContextOverlay = false; + this.contextOverlayTimer = false; + this.previousCollisionStatus = false; + this.locked = false; + this.highlightedEntity = null; + this.reticleMinX = MARGIN; + this.reticleMaxX = 0; + this.reticleMinY = MARGIN; + this.reticleMaxY = 0; + + var ACTION_TTL = 15; // seconds + + var DISTANCE_HOLDING_RADIUS_FACTOR = 3.5; // multiplied by distance between hand and object + var DISTANCE_HOLDING_ACTION_TIMEFRAME = 0.1; // how quickly objects move to their new position + var DISTANCE_HOLDING_UNITY_MASS = 1200; // The mass at which the distance holding action timeframe is unmodified + var DISTANCE_HOLDING_UNITY_DISTANCE = 6; // The distance at which the distance holding action timeframe is unmodified + + this.parameters = makeDispatcherModuleParameters( + 550, + this.hand === RIGHT_HAND ? ["rightHand"] : ["leftHand"], + [], + 100, + makeLaserParams(this.hand, false)); + + + this.handToController = function() { + return (this.hand === RIGHT_HAND) ? Controller.Standard.RightHand : Controller.Standard.LeftHand; + }; + + this.distanceGrabTimescale = function(mass, distance) { + var timeScale = DISTANCE_HOLDING_ACTION_TIMEFRAME * mass / + DISTANCE_HOLDING_UNITY_MASS * distance / + DISTANCE_HOLDING_UNITY_DISTANCE; + if (timeScale < DISTANCE_HOLDING_ACTION_TIMEFRAME) { + timeScale = DISTANCE_HOLDING_ACTION_TIMEFRAME; + } + return timeScale; + }; + + this.getMass = function(dimensions, density) { + return (dimensions.x * dimensions.y * dimensions.z) * density; + }; + + this.startFarGrabAction = function (controllerData, grabbedProperties) { + var controllerLocation = controllerData.controllerLocations[this.hand]; + var worldControllerPosition = controllerLocation.position; + var worldControllerRotation = controllerLocation.orientation; + + // transform the position into room space + var worldToSensorMat = Mat4.inverse(MyAvatar.getSensorToWorldMatrix()); + var roomControllerPosition = Mat4.transformPoint(worldToSensorMat, worldControllerPosition); + + var now = Date.now(); + + // add the action and initialize some variables + this.currentObjectPosition = grabbedProperties.position; + this.currentObjectRotation = grabbedProperties.rotation; + this.currentObjectTime = now; + this.currentCameraOrientation = Camera.orientation; + + this.grabRadius = this.grabbedDistance; + this.grabRadialVelocity = 0.0; + + // offset between controller vector at the grab radius and the entity position + var targetPosition = Vec3.multiply(this.grabRadius, Quat.getUp(worldControllerRotation)); + targetPosition = Vec3.sum(targetPosition, worldControllerPosition); + this.offsetPosition = Vec3.subtract(this.currentObjectPosition, targetPosition); + + // compute a constant based on the initial conditions which we use below to exaggerate hand motion + // onto the held object + this.radiusScalar = Math.log(this.grabRadius + 1.0); + if (this.radiusScalar < 1.0) { + this.radiusScalar = 1.0; + } + + // compute the mass for the purpose of energy and how quickly to move object + this.mass = this.getMass(grabbedProperties.dimensions, grabbedProperties.density); + var distanceToObject = Vec3.length(Vec3.subtract(MyAvatar.position, grabbedProperties.position)); + var timeScale = this.distanceGrabTimescale(this.mass, distanceToObject); + this.linearTimeScale = timeScale; + this.actionID = Entities.addAction("far-grab", this.grabbedThingID, { + targetPosition: this.currentObjectPosition, + linearTimeScale: timeScale, + targetRotation: this.currentObjectRotation, + angularTimeScale: timeScale, + tag: "far-grab-" + MyAvatar.sessionUUID, + ttl: ACTION_TTL + }); + if (this.actionID === Uuid.NULL) { + this.actionID = null; + } + + if (this.actionID !== null) { + var args = [this.hand === RIGHT_HAND ? "right" : "left", MyAvatar.sessionUUID]; + Entities.callEntityMethod(this.grabbedThingID, "startDistanceGrab", args); + } + + Controller.triggerHapticPulse(HAPTIC_PULSE_STRENGTH, HAPTIC_PULSE_DURATION, this.hand); + this.previousRoomControllerPosition = roomControllerPosition; + }; + + this.continueDistanceHolding = function(controllerData) { + var controllerLocation = controllerData.controllerLocations[this.hand]; + var worldControllerPosition = controllerLocation.position; + var worldControllerRotation = controllerLocation.orientation; + + // also transform the position into room space + var worldToSensorMat = Mat4.inverse(MyAvatar.getSensorToWorldMatrix()); + var roomControllerPosition = Mat4.transformPoint(worldToSensorMat, worldControllerPosition); + + var grabbedProperties = Entities.getEntityProperties(this.grabbedThingID, GRABBABLE_PROPERTIES); + var now = Date.now(); + var deltaObjectTime = (now - this.currentObjectTime) / MSECS_PER_SEC; // convert to seconds + this.currentObjectTime = now; + + // the action was set up when this.distanceHolding was called. update the targets. + var radius = Vec3.distance(this.currentObjectPosition, worldControllerPosition) * + this.radiusScalar * DISTANCE_HOLDING_RADIUS_FACTOR; + if (radius < 1.0) { + radius = 1.0; + } + + var roomHandDelta = Vec3.subtract(roomControllerPosition, this.previousRoomControllerPosition); + var worldHandDelta = Mat4.transformVector(MyAvatar.getSensorToWorldMatrix(), roomHandDelta); + var handMoved = Vec3.multiply(worldHandDelta, radius); + this.currentObjectPosition = Vec3.sum(this.currentObjectPosition, handMoved); + + var args = [this.hand === RIGHT_HAND ? "right" : "left", MyAvatar.sessionUUID]; + Entities.callEntityMethod(this.grabbedThingID, "continueDistanceGrab", args); + + // Update radialVelocity + var lastVelocity = Vec3.multiply(worldHandDelta, 1.0 / deltaObjectTime); + var delta = Vec3.normalize(Vec3.subtract(grabbedProperties.position, worldControllerPosition)); + var newRadialVelocity = Vec3.dot(lastVelocity, delta); + + var VELOCITY_AVERAGING_TIME = 0.016; + var blendFactor = deltaObjectTime / VELOCITY_AVERAGING_TIME; + if (blendFactor < 0.0) { + blendFactor = 0.0; + } else if (blendFactor > 1.0) { + blendFactor = 1.0; + } + this.grabRadialVelocity = blendFactor * newRadialVelocity + (1.0 - blendFactor) * this.grabRadialVelocity; + + var RADIAL_GRAB_AMPLIFIER = 10.0; + if (Math.abs(this.grabRadialVelocity) > 0.0) { + this.grabRadius = this.grabRadius + (this.grabRadialVelocity * deltaObjectTime * + this.grabRadius * RADIAL_GRAB_AMPLIFIER); + } + + // don't let grabRadius go all the way to zero, because it can't come back from that + var MINIMUM_GRAB_RADIUS = 0.1; + if (this.grabRadius < MINIMUM_GRAB_RADIUS) { + this.grabRadius = MINIMUM_GRAB_RADIUS; + } + var newTargetPosition = Vec3.multiply(this.grabRadius, Quat.getUp(worldControllerRotation)); + newTargetPosition = Vec3.sum(newTargetPosition, worldControllerPosition); + newTargetPosition = Vec3.sum(newTargetPosition, this.offsetPosition); + + // XXX + // this.maybeScale(grabbedProperties); + + var distanceToObject = Vec3.length(Vec3.subtract(MyAvatar.position, this.currentObjectPosition)); + + this.linearTimeScale = (this.linearTimeScale / 2); + if (this.linearTimeScale <= DISTANCE_HOLDING_ACTION_TIMEFRAME) { + this.linearTimeScale = DISTANCE_HOLDING_ACTION_TIMEFRAME; + } + var success = Entities.updateAction(this.grabbedThingID, this.actionID, { + targetPosition: newTargetPosition, + linearTimeScale: this.linearTimeScale, + targetRotation: this.currentObjectRotation, + angularTimeScale: this.distanceGrabTimescale(this.mass, distanceToObject), + ttl: ACTION_TTL + }); + if (!success) { + print("farActionGrabEntity continueDistanceHolding -- updateAction failed: " + this.actionID); + this.actionID = null; + } + + this.previousRoomControllerPosition = roomControllerPosition; + }; + + this.endFarGrabAction = function () { + this.distanceHolding = false; + this.distanceRotating = false; + Entities.deleteAction(this.grabbedThingID, this.actionID); + + var args = [this.hand === RIGHT_HAND ? "right" : "left", MyAvatar.sessionUUID]; + Entities.callEntityMethod(this.grabbedThingID, "releaseGrab", args); + this.actionID = null; + this.grabbedThingID = null; + this.targetObject = null; + this.potentialEntityWithContextOverlay = false; + }; + + this.updateRecommendedArea = function() { + var dims = Controller.getViewportDimensions(); + this.reticleMaxX = dims.x - MARGIN; + this.reticleMaxY = dims.y - MARGIN; + }; + + this.calculateNewReticlePosition = function(intersection) { + this.updateRecommendedArea(); + var point2d = HMD.overlayFromWorldPoint(intersection); + point2d.x = Math.max(this.reticleMinX, Math.min(point2d.x, this.reticleMaxX)); + point2d.y = Math.max(this.reticleMinY, Math.min(point2d.y, this.reticleMaxY)); + return point2d; + }; + + this.notPointingAtEntity = function(controllerData) { + var intersection = controllerData.rayPicks[this.hand]; + var entityProperty = Entities.getEntityProperties(intersection.objectID); + var entityType = entityProperty.type; + var hudRayPick = controllerData.hudRayPicks[this.hand]; + var point2d = this.calculateNewReticlePosition(hudRayPick.intersection); + if ((intersection.type === Picks.INTERSECTED_ENTITY && entityType === "Web") || + intersection.type === Picks.INTERSECTED_OVERLAY || Window.isPointOnDesktopWindow(point2d)) { + return true; + } + return false; + }; + + this.distanceRotate = function(otherFarGrabModule) { + this.distanceRotating = true; + this.distanceHolding = false; + + var worldControllerRotation = getControllerWorldLocation(this.handToController(), true).orientation; + var controllerRotationDelta = + Quat.multiply(worldControllerRotation, Quat.inverse(this.previousWorldControllerRotation)); + // Rotate entity by twice the delta rotation. + controllerRotationDelta = Quat.multiply(controllerRotationDelta, controllerRotationDelta); + + // Perform the rotation in the translation controller's action update. + otherFarGrabModule.currentObjectRotation = Quat.multiply(controllerRotationDelta, + otherFarGrabModule.currentObjectRotation); + + this.previousWorldControllerRotation = worldControllerRotation; + }; + + this.prepareDistanceRotatingData = function(controllerData) { + var intersection = controllerData.rayPicks[this.hand]; + + var controllerLocation = getControllerWorldLocation(this.handToController(), true); + var worldControllerPosition = controllerLocation.position; + var worldControllerRotation = controllerLocation.orientation; + + var grabbedProperties = Entities.getEntityProperties(intersection.objectID, GRABBABLE_PROPERTIES); + this.currentObjectPosition = grabbedProperties.position; + this.grabRadius = intersection.distance; + + // Offset between controller vector at the grab radius and the entity position. + var targetPosition = Vec3.multiply(this.grabRadius, Quat.getUp(worldControllerRotation)); + targetPosition = Vec3.sum(targetPosition, worldControllerPosition); + this.offsetPosition = Vec3.subtract(this.currentObjectPosition, targetPosition); + + // Initial controller rotation. + this.previousWorldControllerRotation = worldControllerRotation; + }; + + this.destroyContextOverlay = function(controllerData) { + if (this.entityWithContextOverlay) { + ContextOverlay.destroyContextOverlay(this.entityWithContextOverlay); + this.entityWithContextOverlay = false; + this.potentialEntityWithContextOverlay = false; + } + }; + + this.targetIsNull = function() { + var properties = Entities.getEntityProperties(this.grabbedThingID); + if (Object.keys(properties).length === 0 && this.distanceHolding) { + return true; + } + return false; + }; + + this.getTargetProps = function (controllerData) { + var targetEntityID = controllerData.rayPicks[this.hand].objectID; + if (targetEntityID) { + return Entities.getEntityProperties(targetEntityID); + } + return null; + }; + + this.isReady = function (controllerData) { + if (HMD.active) { + if (this.notPointingAtEntity(controllerData)) { + return makeRunningValues(false, [], []); + } + + this.distanceHolding = false; + this.distanceRotating = false; + + if (controllerData.triggerValues[this.hand] > TRIGGER_ON_VALUE) { + this.prepareDistanceRotatingData(controllerData); + return makeRunningValues(true, [], []); + } else { + this.destroyContextOverlay(); + return makeRunningValues(false, [], []); + } + } + return makeRunningValues(false, [], []); + }; + + this.run = function (controllerData) { + if (controllerData.triggerValues[this.hand] < TRIGGER_OFF_VALUE || + this.notPointingAtEntity(controllerData) || this.targetIsNull()) { + this.endFarGrabAction(); + Selection.removeFromSelectedItemsList(DISPATCHER_HOVERING_LIST, "entity", + this.highlightedEntity); + this.highlightedEntity = null; + return makeRunningValues(false, [], []); + } + this.intersectionDistance = controllerData.rayPicks[this.hand].distance; + + var otherModuleName = this.hand === RIGHT_HAND ? "LeftFarActionGrabEntity" : "RightFarActionGrabEntity"; + var otherFarGrabModule = getEnabledModuleByName(otherModuleName); + + // gather up the readiness of the near-grab modules + var nearGrabNames = [ + this.hand === RIGHT_HAND ? "RightScaleAvatar" : "LeftScaleAvatar", + this.hand === RIGHT_HAND ? "RightFarTriggerEntity" : "LeftFarTriggerEntity", + this.hand === RIGHT_HAND ? "RightNearActionGrabEntity" : "LeftNearActionGrabEntity", + this.hand === RIGHT_HAND ? "RightNearParentingGrabEntity" : "LeftNearParentingGrabEntity", + this.hand === RIGHT_HAND ? "RightNearParentingGrabOverlay" : "LeftNearParentingGrabOverlay" + ]; + + var nearGrabReadiness = []; + for (var i = 0; i < nearGrabNames.length; i++) { + var nearGrabModule = getEnabledModuleByName(nearGrabNames[i]); + var ready = nearGrabModule ? nearGrabModule.isReady(controllerData) : makeRunningValues(false, [], []); + nearGrabReadiness.push(ready); + } + + if (this.actionID) { + // if we are doing a distance grab and the object or tablet gets close enough to the controller, + // stop the far-grab so the near-grab or equip can take over. + for (var k = 0; k < nearGrabReadiness.length; k++) { + if (nearGrabReadiness[k].active && (nearGrabReadiness[k].targets[0] === this.grabbedThingID || + HMD.tabletID && nearGrabReadiness[k].targets[0] === HMD.tabletID)) { + this.endFarGrabAction(); + return makeRunningValues(false, [], []); + } + } + + this.continueDistanceHolding(controllerData); + } else { + // if we are doing a distance search and this controller moves into a position + // where it could near-grab something, stop searching. + for (var j = 0; j < nearGrabReadiness.length; j++) { + if (nearGrabReadiness[j].active) { + this.endFarGrabAction(); + return makeRunningValues(false, [], []); + } + } + + var rayPickInfo = controllerData.rayPicks[this.hand]; + if (rayPickInfo.type === Picks.INTERSECTED_ENTITY) { + if (controllerData.triggerClicks[this.hand]) { + var entityID = rayPickInfo.objectID; + Selection.removeFromSelectedItemsList(DISPATCHER_HOVERING_LIST, "entity", + this.highlightedEntity); + this.highlightedEntity = null; + var targetProps = Entities.getEntityProperties(entityID, [ + "dynamic", "shapeType", "position", + "rotation", "dimensions", "density", + "userData", "locked", "type", "href" + ]); + if (targetProps.href !== "") { + AddressManager.handleLookupString(targetProps.href); + return makeRunningValues(false, [], []); + } + + this.targetObject = new TargetObject(entityID, targetProps); + this.targetObject.parentProps = getEntityParents(targetProps); + + if (this.contextOverlayTimer) { + Script.clearTimeout(this.contextOverlayTimer); + } + this.contextOverlayTimer = false; + if (entityID === this.entityWithContextOverlay) { + this.destroyContextOverlay(); + } else { + Selection.removeFromSelectedItemsList("contextOverlayHighlightList", "entity", entityID); + } + + var targetEntity = this.targetObject.getTargetEntity(); + entityID = targetEntity.id; + targetProps = targetEntity.props; + + if (!targetProps.dynamic && !this.targetObject.entityProps.dynamic) { + // let farParentGrabEntity handle it + return makeRunningValues(false, [], []); + } + + if (entityIsGrabbable(targetProps) || entityIsGrabbable(this.targetObject.entityProps)) { + if (!this.distanceRotating) { + this.grabbedThingID = entityID; + this.grabbedDistance = rayPickInfo.distance; + } + + if (otherFarGrabModule.grabbedThingID === this.grabbedThingID && + otherFarGrabModule.distanceHolding) { + this.prepareDistanceRotatingData(controllerData); + this.distanceRotate(otherFarGrabModule); + } else { + this.distanceHolding = true; + this.distanceRotating = false; + this.startFarGrabAction(controllerData, targetProps); + } + } + } else { + var targetEntityID = rayPickInfo.objectID; + if (this.highlightedEntity !== targetEntityID) { + Selection.removeFromSelectedItemsList(DISPATCHER_HOVERING_LIST, "entity", + this.highlightedEntity); + var selectionTargetProps = Entities.getEntityProperties(targetEntityID, [ + "dynamic", "shapeType", "position", + "rotation", "dimensions", "density", + "userData", "locked", "type", "href" + ]); + + var selectionTargetObject = new TargetObject(targetEntityID, selectionTargetProps); + selectionTargetObject.parentProps = getEntityParents(selectionTargetProps); + var selectionTargetEntity = selectionTargetObject.getTargetEntity(); + + if (entityIsGrabbable(selectionTargetEntity.props) || + entityIsGrabbable(selectionTargetObject.entityProps)) { + + Selection.addToSelectedItemsList(DISPATCHER_HOVERING_LIST, "entity", rayPickInfo.objectID); + } + this.highlightedEntity = rayPickInfo.objectID; + } + + if (!this.entityWithContextOverlay) { + var _this = this; + + if (_this.potentialEntityWithContextOverlay !== rayPickInfo.objectID) { + if (_this.contextOverlayTimer) { + Script.clearTimeout(_this.contextOverlayTimer); + } + _this.contextOverlayTimer = false; + _this.potentialEntityWithContextOverlay = rayPickInfo.objectID; + } + + if (!_this.contextOverlayTimer) { + _this.contextOverlayTimer = Script.setTimeout(function () { + if (!_this.entityWithContextOverlay && + _this.contextOverlayTimer && + _this.potentialEntityWithContextOverlay === rayPickInfo.objectID) { + var pEvProps = Entities.getEntityProperties(rayPickInfo.objectID); + var pointerEvent = { + type: "Move", + id: _this.hand + 1, // 0 is reserved for hardware mouse + pos2D: projectOntoEntityXYPlane(rayPickInfo.objectID, + rayPickInfo.intersection, pEvProps), + pos3D: rayPickInfo.intersection, + normal: rayPickInfo.surfaceNormal, + direction: Vec3.subtract(ZERO_VEC, rayPickInfo.surfaceNormal), + button: "Secondary" + }; + if (ContextOverlay.createOrDestroyContextOverlay(rayPickInfo.objectID, pointerEvent)) { + _this.entityWithContextOverlay = rayPickInfo.objectID; + } + } + _this.contextOverlayTimer = false; + }, 500); + } + } + } + } else if (this.distanceRotating) { + this.distanceRotate(otherFarGrabModule); + } else if (this.highlightedEntity) { + Selection.removeFromSelectedItemsList(DISPATCHER_HOVERING_LIST, "entity", this.highlightedEntity); + this.highlightedEntity = null; + } + } + return this.exitIfDisabled(controllerData); + }; + + this.exitIfDisabled = function(controllerData) { + var moduleName = this.hand === RIGHT_HAND ? "RightDisableModules" : "LeftDisableModules"; + var disableModule = getEnabledModuleByName(moduleName); + if (disableModule) { + if (disableModule.disableModules) { + this.endFarGrabAction(); + Selection.removeFromSelectedItemsList(DISPATCHER_HOVERING_LIST, "entity", + this.highlightedEntity); + this.highlightedEntity = null; + return makeRunningValues(false, [], []); + } + } + var grabbedThing = (this.distanceHolding || this.distanceRotating) ? this.targetObject.entityID : null; + var offset = this.calculateOffset(controllerData); + var laserLockInfo = makeLaserLockInfo(grabbedThing, false, this.hand, offset); + return makeRunningValues(true, [], [], laserLockInfo); + }; + + this.calculateOffset = function(controllerData) { + if (this.distanceHolding || this.distanceRotating) { + var targetProps = Entities.getEntityProperties(this.targetObject.entityID, [ + "position", + "rotation" + ]); + var zeroVector = { x: 0, y: 0, z:0, w: 0 }; + var intersection = controllerData.rayPicks[this.hand].intersection; + var intersectionMat = new Xform(zeroVector, intersection); + var modelMat = new Xform(targetProps.rotation, targetProps.position); + var modelMatInv = modelMat.inv(); + var xformMat = Xform.mul(modelMatInv, intersectionMat); + var offsetMat = Mat4.createFromRotAndTrans(xformMat.rot, xformMat.pos); + return offsetMat; + } + return undefined; + }; + } + + var leftFarActionGrabEntity = new FarActionGrabEntity(LEFT_HAND); + var rightFarActionGrabEntity = new FarActionGrabEntity(RIGHT_HAND); + + enableDispatcherModule("LeftFarActionGrabEntity", leftFarActionGrabEntity); + enableDispatcherModule("RightFarActionGrabEntity", rightFarActionGrabEntity); + + function cleanup() { + disableDispatcherModule("LeftFarActionGrabEntity"); + disableDispatcherModule("RightFarActionGrabEntity"); + } + Script.scriptEnding.connect(cleanup); +}()); diff --git a/scripts/system/controllers/controllerModules/farParentGrabEntity.js b/scripts/system/controllers/controllerModules/farParentGrabEntity.js new file mode 100644 index 0000000000..439b5e5f51 --- /dev/null +++ b/scripts/system/controllers/controllerModules/farParentGrabEntity.js @@ -0,0 +1,646 @@ +"use strict"; + +// farParentGrabEntity.js +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html + +/* jslint bitwise: true */ + +/* global Script, Controller, RIGHT_HAND, LEFT_HAND, Mat4, MyAvatar, Vec3, Quat, getEnabledModuleByName, makeRunningValues, + Entities, enableDispatcherModule, disableDispatcherModule, entityIsGrabbable, makeDispatcherModuleParameters, MSECS_PER_SEC, + HAPTIC_PULSE_STRENGTH, HAPTIC_PULSE_DURATION, TRIGGER_OFF_VALUE, TRIGGER_ON_VALUE, ZERO_VEC, getControllerWorldLocation, + projectOntoEntityXYPlane, ContextOverlay, HMD, Picks, makeLaserLockInfo, Xform, makeLaserParams, AddressManager, + getEntityParents, Selection, DISPATCHER_HOVERING_LIST, unhighlightTargetEntity, Messages, Uuid, findGroupParent +*/ + +Script.include("/~/system/libraries/controllerDispatcherUtils.js"); +Script.include("/~/system/libraries/controllers.js"); +Script.include("/~/system/libraries/Xform.js"); + +(function() { + var GRABBABLE_PROPERTIES = [ + "position", + "registrationPoint", + "rotation", + "gravity", + "collidesWith", + "dynamic", + "collisionless", + "locked", + "name", + "shapeType", + "parentID", + "parentJointIndex", + "density", + "dimensions", + "userData" + ]; + + var MARGIN = 25; + + function TargetObject(entityID, entityProps) { + this.entityID = entityID; + this.entityProps = entityProps; + this.targetEntityID = null; + this.targetEntityProps = null; + + this.getTargetEntity = function() { + var parentPropsLength = this.parentProps.length; + if (parentPropsLength !== 0) { + var targetEntity = { + id: this.parentProps[parentPropsLength - 1].id, + props: this.parentProps[parentPropsLength - 1]}; + this.targetEntityID = targetEntity.id; + this.targetEntityProps = targetEntity.props; + return targetEntity; + } + this.targetEntityID = this.entityID; + this.targetEntityProps = this.entityProps; + return { + id: this.entityID, + props: this.entityProps}; + }; + } + + function FarParentGrabEntity(hand) { + this.hand = hand; + this.targetEntityID = null; + this.targetObject = null; + this.previousParentID = {}; + this.previousParentJointIndex = {}; + this.potentialEntityWithContextOverlay = false; + this.entityWithContextOverlay = false; + this.contextOverlayTimer = false; + this.highlightedEntity = null; + this.reticleMinX = MARGIN; + this.reticleMaxX = 0; + this.reticleMinY = MARGIN; + this.reticleMaxY = 0; + + var FAR_GRAB_JOINTS = [65527, 65528]; // FARGRAB_LEFTHAND_INDEX, FARGRAB_RIGHTHAND_INDEX + + var DISTANCE_HOLDING_RADIUS_FACTOR = 3.5; // multiplied by distance between hand and object + var DISTANCE_HOLDING_ACTION_TIMEFRAME = 0.1; // how quickly objects move to their new position + var DISTANCE_HOLDING_UNITY_MASS = 1200; // The mass at which the distance holding action timeframe is unmodified + var DISTANCE_HOLDING_UNITY_DISTANCE = 6; // The distance at which the distance holding action timeframe is unmodified + + this.parameters = makeDispatcherModuleParameters( + 540, + this.hand === RIGHT_HAND ? ["rightHand"] : ["leftHand"], + [], + 100, + makeLaserParams(this.hand, false)); + + + this.handToController = function() { + return (this.hand === RIGHT_HAND) ? Controller.Standard.RightHand : Controller.Standard.LeftHand; + }; + + this.distanceGrabTimescale = function(mass, distance) { + var timeScale = DISTANCE_HOLDING_ACTION_TIMEFRAME * mass / + DISTANCE_HOLDING_UNITY_MASS * distance / + DISTANCE_HOLDING_UNITY_DISTANCE; + if (timeScale < DISTANCE_HOLDING_ACTION_TIMEFRAME) { + timeScale = DISTANCE_HOLDING_ACTION_TIMEFRAME; + } + return timeScale; + }; + + this.getMass = function(dimensions, density) { + return (dimensions.x * dimensions.y * dimensions.z) * density; + }; + + this.thisFarGrabJointIsParent = function(isParentProps) { + if (!isParentProps) { + return false; + } + + if (isParentProps.parentID !== MyAvatar.sessionUUID && isParentProps.parentID !== MyAvatar.SELF_ID) { + return false; + } + + if (isParentProps.parentJointIndex === FAR_GRAB_JOINTS[this.hand]) { + return true; + } + + return false; + }; + + this.startFarParentGrab = function (controllerData, grabbedProperties) { + var controllerLocation = controllerData.controllerLocations[this.hand]; + var worldControllerPosition = controllerLocation.position; + var worldControllerRotation = controllerLocation.orientation; + // transform the position into room space + var worldToSensorMat = Mat4.inverse(MyAvatar.getSensorToWorldMatrix()); + var roomControllerPosition = Mat4.transformPoint(worldToSensorMat, worldControllerPosition); + + var now = Date.now(); + + // add the action and initialize some variables + this.currentObjectPosition = grabbedProperties.position; + this.currentObjectRotation = grabbedProperties.rotation; + this.currentObjectTime = now; + + this.grabRadius = this.grabbedDistance; + this.grabRadialVelocity = 0.0; + + // offset between controller vector at the grab radius and the entity position + var targetPosition = Vec3.multiply(this.grabRadius, Quat.getUp(worldControllerRotation)); + targetPosition = Vec3.sum(targetPosition, worldControllerPosition); + this.offsetPosition = Vec3.subtract(this.currentObjectPosition, targetPosition); + + // compute a constant based on the initial conditions which we use below to exaggerate hand motion + // onto the held object + this.radiusScalar = Math.log(this.grabRadius + 1.0); + if (this.radiusScalar < 1.0) { + this.radiusScalar = 1.0; + } + + // compute the mass for the purpose of energy and how quickly to move object + this.mass = this.getMass(grabbedProperties.dimensions, grabbedProperties.density); + + Controller.triggerHapticPulse(HAPTIC_PULSE_STRENGTH, HAPTIC_PULSE_DURATION, this.hand); + unhighlightTargetEntity(this.targetEntityID); + var message = { + hand: this.hand, + entityID: this.targetEntityID + }; + + Messages.sendLocalMessage('Hifi-unhighlight-entity', JSON.stringify(message)); + + var newTargetPosLocal = MyAvatar.worldToJointPoint(grabbedProperties.position); + MyAvatar.setJointTranslation(FAR_GRAB_JOINTS[this.hand], newTargetPosLocal); + + var args = [this.hand === RIGHT_HAND ? "right" : "left", MyAvatar.sessionUUID]; + Entities.callEntityMethod(grabbedProperties.id, "startNearGrab", args); + + var reparentProps = { + parentID: MyAvatar.SELF_ID, + parentJointIndex: FAR_GRAB_JOINTS[this.hand], + localVelocity: {x: 0, y: 0, z: 0}, + localAngularVelocity: {x: 0, y: 0, z: 0} + }; + + if (this.thisFarGrabJointIsParent(grabbedProperties)) { + // this should never happen, but if it does, don't set previous parent to be this hand. + this.previousParentID[grabbedProperties.id] = null; + this.previousParentJointIndex[grabbedProperties.id] = -1; + } else { + this.previousParentID[grabbedProperties.id] = grabbedProperties.parentID; + this.previousParentJointIndex[grabbedProperties.id] = grabbedProperties.parentJointIndex; + } + + this.targetEntityID = grabbedProperties.id; + Entities.editEntity(grabbedProperties.id, reparentProps); + + Messages.sendMessage('Hifi-Object-Manipulation', JSON.stringify({ + action: 'grab', + grabbedEntity: grabbedProperties.id, + joint: this.hand === RIGHT_HAND ? "RightHand" : "LeftHand" + })); + this.grabbing = true; + + this.previousRoomControllerPosition = roomControllerPosition; + }; + + this.continueDistanceHolding = function(controllerData) { + var controllerLocation = controllerData.controllerLocations[this.hand]; + var worldControllerPosition = controllerLocation.position; + var worldControllerRotation = controllerLocation.orientation; + + // also transform the position into room space + var worldToSensorMat = Mat4.inverse(MyAvatar.getSensorToWorldMatrix()); + var roomControllerPosition = Mat4.transformPoint(worldToSensorMat, worldControllerPosition); + + var grabbedProperties = Entities.getEntityProperties(this.targetEntityID, GRABBABLE_PROPERTIES); + var now = Date.now(); + var deltaObjectTime = (now - this.currentObjectTime) / MSECS_PER_SEC; // convert to seconds + this.currentObjectTime = now; + + // the action was set up when this.distanceHolding was called. update the targets. + var radius = Vec3.distance(this.currentObjectPosition, worldControllerPosition) * + this.radiusScalar * DISTANCE_HOLDING_RADIUS_FACTOR; + if (radius < 1.0) { + radius = 1.0; + } + + var roomHandDelta = Vec3.subtract(roomControllerPosition, this.previousRoomControllerPosition); + var worldHandDelta = Mat4.transformVector(MyAvatar.getSensorToWorldMatrix(), roomHandDelta); + var handMoved = Vec3.multiply(worldHandDelta, radius); + this.currentObjectPosition = Vec3.sum(this.currentObjectPosition, handMoved); + + var args = [this.hand === RIGHT_HAND ? "right" : "left", MyAvatar.sessionUUID]; + Entities.callEntityMethod(this.targetEntityID, "continueDistanceGrab", args); + + // Update radialVelocity + var lastVelocity = Vec3.multiply(worldHandDelta, 1.0 / deltaObjectTime); + var delta = Vec3.normalize(Vec3.subtract(grabbedProperties.position, worldControllerPosition)); + var newRadialVelocity = Vec3.dot(lastVelocity, delta); + + var VELOCITY_AVERAGING_TIME = 0.016; + var blendFactor = deltaObjectTime / VELOCITY_AVERAGING_TIME; + if (blendFactor < 0.0) { + blendFactor = 0.0; + } else if (blendFactor > 1.0) { + blendFactor = 1.0; + } + this.grabRadialVelocity = blendFactor * newRadialVelocity + (1.0 - blendFactor) * this.grabRadialVelocity; + + var RADIAL_GRAB_AMPLIFIER = 10.0; + if (Math.abs(this.grabRadialVelocity) > 0.0) { + this.grabRadius = this.grabRadius + (this.grabRadialVelocity * deltaObjectTime * + this.grabRadius * RADIAL_GRAB_AMPLIFIER); + } + + // don't let grabRadius go all the way to zero, because it can't come back from that + var MINIMUM_GRAB_RADIUS = 0.1; + if (this.grabRadius < MINIMUM_GRAB_RADIUS) { + this.grabRadius = MINIMUM_GRAB_RADIUS; + } + var newTargetPosition = Vec3.multiply(this.grabRadius, Quat.getUp(worldControllerRotation)); + newTargetPosition = Vec3.sum(newTargetPosition, worldControllerPosition); + newTargetPosition = Vec3.sum(newTargetPosition, this.offsetPosition); + + // MyAvatar.setJointTranslation(FAR_GRAB_JOINTS[this.hand], MyAvatar.worldToJointPoint(newTargetPosition)); + + // var newTargetPosLocal = Mat4.transformPoint(MyAvatar.getSensorToWorldMatrix(), newTargetPosition); + var newTargetPosLocal = MyAvatar.worldToJointPoint(newTargetPosition); + MyAvatar.setJointTranslation(FAR_GRAB_JOINTS[this.hand], newTargetPosLocal); + + this.previousRoomControllerPosition = roomControllerPosition; + }; + + this.endFarParentGrab = function (controllerData) { + this.hapticTargetID = null; + // var endProps = controllerData.nearbyEntityPropertiesByID[this.targetEntityID]; + var endProps = Entities.getEntityProperties(this.targetEntityID, GRABBABLE_PROPERTIES); + if (this.thisFarGrabJointIsParent(endProps)) { + Entities.editEntity(this.targetEntityID, { + parentID: this.previousParentID[this.targetEntityID], + parentJointIndex: this.previousParentJointIndex[this.targetEntityID] + }); + } + + var args = [this.hand === RIGHT_HAND ? "right" : "left", MyAvatar.sessionUUID]; + Entities.callEntityMethod(this.targetEntityID, "releaseGrab", args); + Messages.sendMessage('Hifi-Object-Manipulation', JSON.stringify({ + action: 'release', + grabbedEntity: this.targetEntityID, + joint: this.hand === RIGHT_HAND ? "RightHand" : "LeftHand" + })); + unhighlightTargetEntity(this.targetEntityID); + this.grabbing = false; + this.targetEntityID = null; + this.potentialEntityWithContextOverlay = false; + MyAvatar.clearJointData(FAR_GRAB_JOINTS[this.hand]); + }; + + this.updateRecommendedArea = function() { + var dims = Controller.getViewportDimensions(); + this.reticleMaxX = dims.x - MARGIN; + this.reticleMaxY = dims.y - MARGIN; + }; + + this.calculateNewReticlePosition = function(intersection) { + this.updateRecommendedArea(); + var point2d = HMD.overlayFromWorldPoint(intersection); + point2d.x = Math.max(this.reticleMinX, Math.min(point2d.x, this.reticleMaxX)); + point2d.y = Math.max(this.reticleMinY, Math.min(point2d.y, this.reticleMaxY)); + return point2d; + }; + + this.notPointingAtEntity = function(controllerData) { + var intersection = controllerData.rayPicks[this.hand]; + var entityProperty = Entities.getEntityProperties(intersection.objectID); + var entityType = entityProperty.type; + var hudRayPick = controllerData.hudRayPicks[this.hand]; + var point2d = this.calculateNewReticlePosition(hudRayPick.intersection); + if ((intersection.type === Picks.INTERSECTED_ENTITY && entityType === "Web") || + intersection.type === Picks.INTERSECTED_OVERLAY || Window.isPointOnDesktopWindow(point2d)) { + return true; + } + return false; + }; + + this.distanceRotate = function(otherFarGrabModule) { + this.distanceRotating = true; + this.distanceHolding = false; + + var worldControllerRotation = getControllerWorldLocation(this.handToController(), true).orientation; + var controllerRotationDelta = + Quat.multiply(worldControllerRotation, Quat.inverse(this.previousWorldControllerRotation)); + // Rotate entity by twice the delta rotation. + controllerRotationDelta = Quat.multiply(controllerRotationDelta, controllerRotationDelta); + + // Perform the rotation in the translation controller's action update. + otherFarGrabModule.currentObjectRotation = Quat.multiply(controllerRotationDelta, + otherFarGrabModule.currentObjectRotation); + + this.previousWorldControllerRotation = worldControllerRotation; + }; + + this.prepareDistanceRotatingData = function(controllerData) { + var intersection = controllerData.rayPicks[this.hand]; + + var controllerLocation = getControllerWorldLocation(this.handToController(), true); + var worldControllerPosition = controllerLocation.position; + var worldControllerRotation = controllerLocation.orientation; + + var grabbedProperties = Entities.getEntityProperties(intersection.objectID, GRABBABLE_PROPERTIES); + this.currentObjectPosition = grabbedProperties.position; + this.grabRadius = intersection.distance; + + // Offset between controller vector at the grab radius and the entity position. + var targetPosition = Vec3.multiply(this.grabRadius, Quat.getUp(worldControllerRotation)); + targetPosition = Vec3.sum(targetPosition, worldControllerPosition); + this.offsetPosition = Vec3.subtract(this.currentObjectPosition, targetPosition); + + // Initial controller rotation. + this.previousWorldControllerRotation = worldControllerRotation; + }; + + this.destroyContextOverlay = function(controllerData) { + if (this.entityWithContextOverlay) { + ContextOverlay.destroyContextOverlay(this.entityWithContextOverlay); + this.entityWithContextOverlay = false; + this.potentialEntityWithContextOverlay = false; + } + }; + + this.targetIsNull = function() { + var properties = Entities.getEntityProperties(this.targetEntityID, GRABBABLE_PROPERTIES); + if (Object.keys(properties).length === 0 && this.distanceHolding) { + return true; + } + return false; + }; + + this.getTargetProps = function (controllerData) { + var targetEntity = controllerData.rayPicks[this.hand].objectID; + if (targetEntity) { + var gtProps = Entities.getEntityProperties(targetEntity, GRABBABLE_PROPERTIES); + if (entityIsGrabbable(gtProps)) { + // give haptic feedback + if (gtProps.id !== this.hapticTargetID) { + Controller.triggerHapticPulse(HAPTIC_PULSE_STRENGTH, HAPTIC_PULSE_DURATION, this.hand); + this.hapticTargetID = gtProps.id; + } + // if we've attempted to grab a child, roll up to the root of the tree + var groupRootProps = findGroupParent(controllerData, gtProps); + if (entityIsGrabbable(groupRootProps)) { + return groupRootProps; + } + return gtProps; + } + } + return null; + }; + + this.isReady = function (controllerData) { + if (HMD.active) { + if (this.notPointingAtEntity(controllerData)) { + return makeRunningValues(false, [], []); + } + + this.distanceHolding = false; + this.distanceRotating = false; + + if (controllerData.triggerValues[this.hand] > TRIGGER_ON_VALUE) { + var targetProps = this.getTargetProps(controllerData); + if (targetProps && (targetProps.dynamic && targetProps.parentID === Uuid.NULL)) { + return makeRunningValues(false, [], []); // let farActionGrabEntity handle it + } else { + this.prepareDistanceRotatingData(controllerData); + return makeRunningValues(true, [], []); + } + } else { + this.destroyContextOverlay(); + return makeRunningValues(false, [], []); + } + } + return makeRunningValues(false, [], []); + }; + + this.run = function (controllerData) { + if (controllerData.triggerValues[this.hand] < TRIGGER_OFF_VALUE || + this.notPointingAtEntity(controllerData) || this.targetIsNull()) { + this.endFarParentGrab(controllerData); + Selection.removeFromSelectedItemsList(DISPATCHER_HOVERING_LIST, "entity", this.highlightedEntity); + this.highlightedEntity = null; + return makeRunningValues(false, [], []); + } + this.intersectionDistance = controllerData.rayPicks[this.hand].distance; + + var otherModuleName = this.hand === RIGHT_HAND ? "LeftFarParentGrabEntity" : "RightFarParentGrabEntity"; + var otherFarGrabModule = getEnabledModuleByName(otherModuleName); + + // gather up the readiness of the near-grab modules + var nearGrabNames = [ + this.hand === RIGHT_HAND ? "RightScaleAvatar" : "LeftScaleAvatar", + this.hand === RIGHT_HAND ? "RightFarTriggerEntity" : "LeftFarTriggerEntity", + this.hand === RIGHT_HAND ? "RightNearActionGrabEntity" : "LeftNearActionGrabEntity", + this.hand === RIGHT_HAND ? "RightNearParentingGrabEntity" : "LeftNearParentingGrabEntity", + this.hand === RIGHT_HAND ? "RightNearParentingGrabOverlay" : "LeftNearParentingGrabOverlay" + ]; + + var nearGrabReadiness = []; + for (var i = 0; i < nearGrabNames.length; i++) { + var nearGrabModule = getEnabledModuleByName(nearGrabNames[i]); + var ready = nearGrabModule ? nearGrabModule.isReady(controllerData) : makeRunningValues(false, [], []); + nearGrabReadiness.push(ready); + } + + if (this.targetEntityID) { + // if we are doing a distance grab and the object or tablet gets close enough to the controller, + // stop the far-grab so the near-grab or equip can take over. + for (var k = 0; k < nearGrabReadiness.length; k++) { + if (nearGrabReadiness[k].active && (nearGrabReadiness[k].targets[0] === this.targetEntityID || + HMD.tabletID && nearGrabReadiness[k].targets[0] === HMD.tabletID)) { + this.endFarParentGrab(controllerData); + return makeRunningValues(false, [], []); + } + } + + this.continueDistanceHolding(controllerData); + } else { + // if we are doing a distance search and this controller moves into a position + // where it could near-grab something, stop searching. + for (var j = 0; j < nearGrabReadiness.length; j++) { + if (nearGrabReadiness[j].active) { + this.endFarParentGrab(controllerData); + return makeRunningValues(false, [], []); + } + } + + var rayPickInfo = controllerData.rayPicks[this.hand]; + if (rayPickInfo.type === Picks.INTERSECTED_ENTITY) { + if (controllerData.triggerClicks[this.hand]) { + var entityID = rayPickInfo.objectID; + Selection.removeFromSelectedItemsList(DISPATCHER_HOVERING_LIST, "entity", this.highlightedEntity); + this.highlightedEntity = null; + var targetProps = Entities.getEntityProperties(entityID, [ + "dynamic", "shapeType", "position", + "rotation", "dimensions", "density", + "userData", "locked", "type", "href" + ]); + if (targetProps.href !== "") { + AddressManager.handleLookupString(targetProps.href); + return makeRunningValues(false, [], []); + } + + this.targetObject = new TargetObject(entityID, targetProps); + this.targetObject.parentProps = getEntityParents(targetProps); + + if (this.contextOverlayTimer) { + Script.clearTimeout(this.contextOverlayTimer); + } + this.contextOverlayTimer = false; + if (entityID === this.entityWithContextOverlay) { + this.destroyContextOverlay(); + } else { + Selection.removeFromSelectedItemsList("contextOverlayHighlightList", "entity", entityID); + } + + var targetEntity = this.targetObject.getTargetEntity(); + entityID = targetEntity.id; + targetProps = targetEntity.props; + + if (targetProps.dynamic || this.targetObject.entityProps.dynamic) { + // let farActionGrabEntity handle it + return makeRunningValues(false, [], []); + } + + if (entityIsGrabbable(targetProps) || entityIsGrabbable(this.targetObject.entityProps)) { + + if (!this.distanceRotating) { + this.targetEntityID = entityID; + this.grabbedDistance = rayPickInfo.distance; + } + + if (otherFarGrabModule.targetEntityID === this.targetEntityID && + otherFarGrabModule.distanceHolding) { + this.prepareDistanceRotatingData(controllerData); + this.distanceRotate(otherFarGrabModule); + } else { + this.distanceHolding = true; + this.distanceRotating = false; + this.startFarParentGrab(controllerData, targetProps); + } + } + } else { + var targetEntityID = rayPickInfo.objectID; + if (this.highlightedEntity !== targetEntityID) { + Selection.removeFromSelectedItemsList(DISPATCHER_HOVERING_LIST, "entity", this.highlightedEntity); + var selectionTargetProps = Entities.getEntityProperties(targetEntityID, [ + "dynamic", "shapeType", "position", + "rotation", "dimensions", "density", + "userData", "locked", "type", "href" + ]); + + var selectionTargetObject = new TargetObject(targetEntityID, selectionTargetProps); + selectionTargetObject.parentProps = getEntityParents(selectionTargetProps); + var selectionTargetEntity = selectionTargetObject.getTargetEntity(); + + if (entityIsGrabbable(selectionTargetEntity.props) || + entityIsGrabbable(selectionTargetObject.entityProps)) { + + Selection.addToSelectedItemsList(DISPATCHER_HOVERING_LIST, "entity", rayPickInfo.objectID); + } + this.highlightedEntity = rayPickInfo.objectID; + } + + if (!this.entityWithContextOverlay) { + var _this = this; + + if (_this.potentialEntityWithContextOverlay !== rayPickInfo.objectID) { + if (_this.contextOverlayTimer) { + Script.clearTimeout(_this.contextOverlayTimer); + } + _this.contextOverlayTimer = false; + _this.potentialEntityWithContextOverlay = rayPickInfo.objectID; + } + + if (!_this.contextOverlayTimer) { + _this.contextOverlayTimer = Script.setTimeout(function () { + if (!_this.entityWithContextOverlay && + _this.contextOverlayTimer && + _this.potentialEntityWithContextOverlay === rayPickInfo.objectID) { + var cotProps = Entities.getEntityProperties(rayPickInfo.objectID); + var pointerEvent = { + type: "Move", + id: _this.hand + 1, // 0 is reserved for hardware mouse + pos2D: projectOntoEntityXYPlane(rayPickInfo.objectID, + rayPickInfo.intersection, cotProps), + pos3D: rayPickInfo.intersection, + normal: rayPickInfo.surfaceNormal, + direction: Vec3.subtract(ZERO_VEC, rayPickInfo.surfaceNormal), + button: "Secondary" + }; + if (ContextOverlay.createOrDestroyContextOverlay(rayPickInfo.objectID, pointerEvent)) { + _this.entityWithContextOverlay = rayPickInfo.objectID; + } + } + _this.contextOverlayTimer = false; + }, 500); + } + } + } + } else if (this.distanceRotating) { + this.distanceRotate(otherFarGrabModule); + } else if (this.highlightedEntity) { + Selection.removeFromSelectedItemsList(DISPATCHER_HOVERING_LIST, "entity", this.highlightedEntity); + this.highlightedEntity = null; + } + } + return this.exitIfDisabled(controllerData); + }; + + this.exitIfDisabled = function(controllerData) { + var moduleName = this.hand === RIGHT_HAND ? "RightDisableModules" : "LeftDisableModules"; + var disableModule = getEnabledModuleByName(moduleName); + if (disableModule) { + if (disableModule.disableModules) { + this.endFarParentGrab(controllerData); + Selection.removeFromSelectedItemsList(DISPATCHER_HOVERING_LIST, "entity", this.highlightedEntity); + this.highlightedEntity = null; + return makeRunningValues(false, [], []); + } + } + var grabbedThing = (this.distanceHolding || this.distanceRotating) ? this.targetObject.entityID : null; + var offset = this.calculateOffset(controllerData); + var laserLockInfo = makeLaserLockInfo(grabbedThing, false, this.hand, offset); + return makeRunningValues(true, [], [], laserLockInfo); + }; + + this.calculateOffset = function(controllerData) { + if (this.distanceHolding || this.distanceRotating) { + var targetProps = Entities.getEntityProperties(this.targetObject.entityID, [ + "position", + "rotation" + ]); + var zeroVector = { x: 0, y: 0, z:0, w: 0 }; + var intersection = controllerData.rayPicks[this.hand].intersection; + var intersectionMat = new Xform(zeroVector, intersection); + var modelMat = new Xform(targetProps.rotation, targetProps.position); + var modelMatInv = modelMat.inv(); + var xformMat = Xform.mul(modelMatInv, intersectionMat); + var offsetMat = Mat4.createFromRotAndTrans(xformMat.rot, xformMat.pos); + return offsetMat; + } + return undefined; + }; + } + + var leftFarParentGrabEntity = new FarParentGrabEntity(LEFT_HAND); + var rightFarParentGrabEntity = new FarParentGrabEntity(RIGHT_HAND); + + enableDispatcherModule("LeftFarParentGrabEntity", leftFarParentGrabEntity); + enableDispatcherModule("RightFarParentGrabEntity", rightFarParentGrabEntity); + + function cleanup() { + disableDispatcherModule("LeftFarParentGrabEntity"); + disableDispatcherModule("RightFarParentGrabEntity"); + } + Script.scriptEnding.connect(cleanup); +}()); diff --git a/scripts/system/controllers/controllerScripts.js b/scripts/system/controllers/controllerScripts.js index ce93c6a010..6899577de2 100644 --- a/scripts/system/controllers/controllerScripts.js +++ b/scripts/system/controllers/controllerScripts.js @@ -19,7 +19,8 @@ var CONTOLLER_SCRIPTS = [ "controllerModules/nearParentGrabEntity.js", "controllerModules/nearParentGrabOverlay.js", "controllerModules/nearActionGrabEntity.js", - "controllerModules/farActionGrabEntity.js", + // "controllerModules/farActionGrabEntity.js", + // "controllerModules/farParentGrabEntity.js", "controllerModules/stylusInput.js", "controllerModules/equipEntity.js", "controllerModules/nearTrigger.js", @@ -37,6 +38,13 @@ var CONTOLLER_SCRIPTS = [ "controllerModules/mouseHighlightEntities.js" ]; +if (Settings.getValue("useFarGrabJoints", false)) { + CONTOLLER_SCRIPTS.push("controllerModules/farActionGrabEntityDynOnly.js"); + CONTOLLER_SCRIPTS.push("controllerModules/farParentGrabEntity.js"); +} else { + CONTOLLER_SCRIPTS.push("controllerModules/farActionGrabEntity.js"); +} + var DEBUG_MENU_ITEM = "Debug defaultScripts.js"; diff --git a/scripts/system/libraries/controllerDispatcherUtils.js b/scripts/system/libraries/controllerDispatcherUtils.js index 60c4553da7..a386dcf5b4 100644 --- a/scripts/system/libraries/controllerDispatcherUtils.js +++ b/scripts/system/libraries/controllerDispatcherUtils.js @@ -5,7 +5,6 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html - /* global module, Camera, HMD, MyAvatar, controllerDispatcherPlugins:true, Quat, Vec3, Overlays, Xform, Selection, Uuid, MSECS_PER_SEC:true , LEFT_HAND:true, RIGHT_HAND:true, FORBIDDEN_GRAB_TYPES:true, @@ -203,15 +202,15 @@ getEnabledModuleByName = function (moduleName) { return null; }; -getGrabbableData = function (props) { +getGrabbableData = function (ggdProps) { // look in userData for a "grabbable" key, return the value or some defaults var grabbableData = {}; var userDataParsed = null; try { - if (!props.userDataParsed) { - props.userDataParsed = JSON.parse(props.userData); + if (!ggdProps.userDataParsed) { + ggdProps.userDataParsed = JSON.parse(ggdProps.userData); } - userDataParsed = props.userDataParsed; + userDataParsed = ggdProps.userDataParsed; } catch (err) { userDataParsed = {}; } @@ -237,11 +236,11 @@ getGrabbableData = function (props) { return grabbableData; }; -entityIsGrabbable = function (props) { - var grabbable = getGrabbableData(props).grabbable; +entityIsGrabbable = function (eigProps) { + var grabbable = getGrabbableData(eigProps).grabbable; if (!grabbable || - props.locked || - FORBIDDEN_GRAB_TYPES.indexOf(props.type) >= 0) { + eigProps.locked || + FORBIDDEN_GRAB_TYPES.indexOf(eigProps.type) >= 0) { return false; } return true; @@ -259,13 +258,13 @@ unhighlightTargetEntity = function(entityID) { Selection.removeFromSelectedItemsList(DISPATCHER_HOVERING_LIST, "entity", entityID); }; -entityIsDistanceGrabbable = function(props) { - if (!entityIsGrabbable(props)) { +entityIsDistanceGrabbable = function(eidgProps) { + if (!entityIsGrabbable(eidgProps)) { return false; } // we can't distance-grab non-physical - var isPhysical = propsArePhysical(props); + var isPhysical = propsArePhysical(eidgProps); if (!isPhysical) { return false; } @@ -304,11 +303,11 @@ getControllerJointIndex = function (hand) { return -1; }; -propsArePhysical = function (props) { - if (!props.dynamic) { +propsArePhysical = function (papProps) { + if (!papProps.dynamic) { return false; } - var isPhysical = (props.shapeType && props.shapeType !== 'none'); + var isPhysical = (papProps.shapeType && papProps.shapeType !== 'none'); return isPhysical; }; @@ -328,8 +327,9 @@ projectOntoXYPlane = function (worldPos, position, rotation, dimensions, registr }; }; -projectOntoEntityXYPlane = function (entityID, worldPos, props) { - return projectOntoXYPlane(worldPos, props.position, props.rotation, props.dimensions, props.registrationPoint); +projectOntoEntityXYPlane = function (entityID, worldPos, popProps) { + return projectOntoXYPlane(worldPos, popProps.position, popProps.rotation, + popProps.dimensions, popProps.registrationPoint); }; projectOntoOverlayXYPlane = function projectOntoOverlayXYPlane(overlayID, worldPos) { @@ -348,9 +348,9 @@ entityHasActions = function (entityID) { ensureDynamic = function (entityID) { // if we distance hold something and keep it very still before releasing it, it ends up // non-dynamic in bullet. If it's too still, give it a little bounce so it will fall. - var props = Entities.getEntityProperties(entityID, ["velocity", "dynamic", "parentID"]); - if (props.dynamic && props.parentID === Uuid.NULL) { - var velocity = props.velocity; + var edProps = Entities.getEntityProperties(entityID, ["velocity", "dynamic", "parentID"]); + if (edProps.dynamic && edProps.parentID === Uuid.NULL) { + var velocity = edProps.velocity; if (Vec3.length(velocity) < 0.05) { // see EntityMotionState.cpp DYNAMIC_LINEAR_VELOCITY_THRESHOLD velocity = { x: 0.0, y: 0.2, z: 0.0 }; Entities.editEntity(entityID, { velocity: velocity }); diff --git a/scripts/system/libraries/pointersUtils.js b/scripts/system/libraries/pointersUtils.js index 53959b91f8..a2a1e674b1 100644 --- a/scripts/system/libraries/pointersUtils.js +++ b/scripts/system/libraries/pointersUtils.js @@ -7,17 +7,14 @@ /* jslint bitwise: true */ -/* global Script, Entities, Overlays, Controller, Vec3, Quat, getControllerWorldLocation, RayPick, - controllerDispatcherPlugins:true, controllerDispatcherPluginsNeedSort:true, - LEFT_HAND, RIGHT_HAND, NEAR_GRAB_PICK_RADIUS, DEFAULT_SEARCH_SPHERE_DISTANCE, DISPATCHER_PROPERTIES, - getGrabPointSphereOffset, HMD, MyAvatar, Messages, findHandChildEntities, Pointers, PickType, COLORS_GRAB_SEARCHING_HALF_SQUEEZE - COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, Picks, TRIGGER_ON_VALUE +/* global Script, Pointers, + DEFAULT_SEARCH_SPHERE_DISTANCE, COLORS_GRAB_SEARCHING_HALF_SQUEEZE, COLORS_GRAB_SEARCHING_FULL_SQUEEZE, + COLORS_GRAB_DISTANCE_HOLD, TRIGGER_ON_VALUE, + Pointer:true, PointerManager:true */ - Script.include("/~/system/libraries/controllerDispatcherUtils.js"); Pointer = function(hudLayer, pickType, pointerData) { - var _this = this; this.SEARCH_SPHERE_SIZE = 0.0132; this.dim = {x: this.SEARCH_SPHERE_SIZE, y: this.SEARCH_SPHERE_SIZE, z: this.SEARCH_SPHERE_SIZE}; this.halfPath = { From 955c15b6830f17cf57932a635a799d62de002e0e Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Tue, 14 Aug 2018 13:15:21 -0300 Subject: [PATCH 307/332] Android - People - swap-fix actions icons --- android/app/src/main/res/layout/fragment_friends.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/res/layout/fragment_friends.xml b/android/app/src/main/res/layout/fragment_friends.xml index 3c8e0af6bc..cc541e569e 100644 --- a/android/app/src/main/res/layout/fragment_friends.xml +++ b/android/app/src/main/res/layout/fragment_friends.xml @@ -39,7 +39,7 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginStart="@dimen/activity_horizontal_margin" - android:src="@drawable/ic_delete_black_24dp" + android:src="@drawable/ic_visit" android:tint="@color/white_opaque"/> Date: Tue, 14 Aug 2018 15:15:24 -0300 Subject: [PATCH 308/332] Android - People - Use designed icon for visit + add fade color --- .../src/main/res/drawable/ic_teleporticon.xml | 31 +++++++++++++++++++ .../app/src/main/res/drawable/ic_visit.xml | 9 ------ .../src/main/res/layout/fragment_friends.xml | 4 +-- android/app/src/main/res/values/colors.xml | 1 + 4 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 android/app/src/main/res/drawable/ic_teleporticon.xml delete mode 100644 android/app/src/main/res/drawable/ic_visit.xml diff --git a/android/app/src/main/res/drawable/ic_teleporticon.xml b/android/app/src/main/res/drawable/ic_teleporticon.xml new file mode 100644 index 0000000000..429e6b795d --- /dev/null +++ b/android/app/src/main/res/drawable/ic_teleporticon.xml @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/android/app/src/main/res/drawable/ic_visit.xml b/android/app/src/main/res/drawable/ic_visit.xml deleted file mode 100644 index 0ecbf6838c..0000000000 --- a/android/app/src/main/res/drawable/ic_visit.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/android/app/src/main/res/layout/fragment_friends.xml b/android/app/src/main/res/layout/fragment_friends.xml index cc541e569e..6cee738244 100644 --- a/android/app/src/main/res/layout/fragment_friends.xml +++ b/android/app/src/main/res/layout/fragment_friends.xml @@ -6,7 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom" - app:umanoFadeColor="@android:color/transparent" + app:umanoFadeColor="@color/slidingUpPanelFadeColor" app:umanoShadowHeight="4dp" android:background="@color/backgroundLight"> @@ -39,7 +39,7 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginStart="@dimen/activity_horizontal_margin" - android:src="@drawable/ic_visit" + android:src="@drawable/ic_teleporticon" android:tint="@color/white_opaque"/> #62D5C6 #FBD92A #8A8A8A + #40000000 From 4478733c27c4810775e6eb8ea9feced8357b450b Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Tue, 14 Aug 2018 21:18:54 +0300 Subject: [PATCH 309/332] fix coding conventions --- libraries/ui/src/ui/OffscreenQmlSurfaceCache.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/ui/src/ui/OffscreenQmlSurfaceCache.cpp b/libraries/ui/src/ui/OffscreenQmlSurfaceCache.cpp index aad90d0806..6911c34e2a 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurfaceCache.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurfaceCache.cpp @@ -48,8 +48,9 @@ QSharedPointer OffscreenQmlSurfaceCache::buildSurface(const auto surface = QSharedPointer(new OffscreenQmlSurface()); QObject::connect(surface.data(), &hifi::qml::OffscreenSurface::rootContextCreated, [this, rootSource](QQmlContext* surfaceContext) { - if (_onRootContextCreated) + if (_onRootContextCreated) { _onRootContextCreated(rootSource, surfaceContext); + } }); surface->load(rootSource); From 410873312884b4cb9ad4c24fc5fdc3398c13f105 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Tue, 14 Aug 2018 15:23:09 -0300 Subject: [PATCH 310/332] Android - People - tags spacing --- .../app/src/main/res/layout/fragment_friends.xml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/android/app/src/main/res/layout/fragment_friends.xml b/android/app/src/main/res/layout/fragment_friends.xml index 6cee738244..62b62b3caf 100644 --- a/android/app/src/main/res/layout/fragment_friends.xml +++ b/android/app/src/main/res/layout/fragment_friends.xml @@ -9,7 +9,7 @@ app:umanoFadeColor="@color/slidingUpPanelFadeColor" app:umanoShadowHeight="4dp" android:background="@color/backgroundLight"> - + + android:background="@color/backgroundDark"> + + android:tint="@color/white_opaque" /> + android:layout_marginStart="32dp" /> + android:tint="@color/white_opaque" /> + android:layout_marginStart="32dp" /> From 3032c7802b5494ef3ac71af7710fd9b1ba985bfa Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Tue, 14 Aug 2018 17:56:42 -0300 Subject: [PATCH 311/332] Android - People - Star for friends, toggle UI, use data from API for initial status. Change+Post is pending --- .../provider/EndpointUsersProvider.java | 5 ++- .../hifiinterface/provider/UsersProvider.java | 3 ++ .../hifiinterface/view/UserListAdapter.java | 37 +++++++++++++++++++ android/app/src/main/res/layout/user_item.xml | 3 ++ 4 files changed, 47 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java index 3e034b654b..d35249a476 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java @@ -1,5 +1,7 @@ package io.highfidelity.hifiinterface.provider; +import android.util.Log; + import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -47,6 +49,7 @@ public class EndpointUsersProvider implements UsersProvider { return chain.proceed(request); } }); + Log.d("[USERZ]", "Authorization: Bearer " + accessToken);// CLD DELETE THIS LINE! OkHttpClient client = httpClient.build(); mRetrofit = new Retrofit.Builder() @@ -60,7 +63,7 @@ public class EndpointUsersProvider implements UsersProvider { @Override public void retrieve(UsersCallback usersCallback) { Call friendsCall = mEndpointUsersProviderService.getUsers( - "friends", + CONNECTION_FILTER_CONNECTIONS, 400, null); friendsCall.enqueue(new Callback() { diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UsersProvider.java b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UsersProvider.java index 13ed812ce6..75f978800f 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UsersProvider.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UsersProvider.java @@ -10,6 +10,9 @@ import io.highfidelity.hifiinterface.view.UserListAdapter; public interface UsersProvider { + public static String CONNECTION_TYPE_FRIEND = "friend"; + public static String CONNECTION_FILTER_CONNECTIONS = "connections"; + void retrieve(UsersProvider.UsersCallback usersCallback); interface UsersCallback { diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java index ad3a5cc136..bcb379c501 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -2,8 +2,10 @@ package io.highfidelity.hifiinterface.view; import android.content.Context; import android.graphics.Bitmap; +import android.graphics.PorterDuff; import android.graphics.drawable.BitmapDrawable; import android.net.Uri; +import android.support.v4.content.ContextCompat; import android.support.v4.graphics.drawable.RoundedBitmapDrawable; import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory; import android.support.v7.widget.RecyclerView; @@ -69,6 +71,7 @@ public class UserListAdapter extends RecyclerView.Adapter Date: Tue, 14 Aug 2018 15:28:22 -0700 Subject: [PATCH 312/332] Fix 'hover-to-pause' functionality of AutoScroll Featured Stories list in the goto app --- interface/resources/qml/hifi/Feed.qml | 30 ++++++++------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/interface/resources/qml/hifi/Feed.qml b/interface/resources/qml/hifi/Feed.qml index e1c712db1f..135123595b 100644 --- a/interface/resources/qml/hifi/Feed.qml +++ b/interface/resources/qml/hifi/Feed.qml @@ -141,8 +141,14 @@ Column { textSizeSmall: root.textSizeSmall; stackShadowNarrowing: root.stackShadowNarrowing; shadowHeight: root.stackedCardShadowHeight; - hoverThunk: function () { hovered = true } - unhoverThunk: function () { hovered = false } + hoverThunk: function () { + hovered = true; + autoScrollTimer.stop(); + } + unhoverThunk: function () { + hovered = false; + autoScrollTimer.start(); + } } onCountChanged: { @@ -156,25 +162,7 @@ Column { onCurrentIndexChanged: { if (root.autoScrollTimerEnabled) { autoScrollTimer.interval = suggestions.get(scroll.currentIndex).time_before_autoscroll_ms; - if (!feedMouseArea.containsMouse) { - autoScrollTimer.start(); - } - } - } - - MouseArea { - id: feedMouseArea; - enabled: root.autoScrollTimerEnabled; - anchors.fill: parent; - hoverEnabled: true; - propagateComposedEvents: true; - onEntered: { - if (autoScrollTimer.running) { - autoScrollTimer.stop(); - } - } - onExited: { - autoScrollTimer.restart(); + autoScrollTimer.start(); } } } From d20c386102bb8057f62dc3e6e63e8bb22e191d35 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Tue, 14 Aug 2018 20:22:23 -0300 Subject: [PATCH 313/332] Android - People - Befriending working --- .../provider/EndpointUsersProvider.java | 78 +++++++++++++++++++ .../hifiinterface/provider/UsersProvider.java | 12 +++ .../hifiinterface/view/UserListAdapter.java | 51 ++++++++++-- 3 files changed, 135 insertions(+), 6 deletions(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java index d35249a476..102d0995ee 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/EndpointUsersProvider.java @@ -15,7 +15,11 @@ import retrofit2.Call; import retrofit2.Callback; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; +import retrofit2.http.Body; +import retrofit2.http.DELETE; import retrofit2.http.GET; +import retrofit2.http.POST; +import retrofit2.http.Path; import retrofit2.http.Query; /** @@ -93,11 +97,85 @@ public class EndpointUsersProvider implements UsersProvider { }); } + public class UserActionRetrofitCallback implements Callback { + + UserActionCallback callback; + + public UserActionRetrofitCallback(UserActionCallback callback) { + this.callback = callback; + } + + @Override + public void onResponse(Call call, retrofit2.Response response) { + if (!response.isSuccessful()) { + callback.requestError(new Exception("Error with " + + call.request().url().toString() + " " + + call.request().method() + " call " + response.message()), + response.message()); + return; + } + + if (response.body() == null || !"success".equals(response.body().status)) { + callback.requestError(new Exception("Error with " + + call.request().url().toString() + " " + + call.request().method() + " call " + response.message()), + response.message()); + return; + } + callback.requestOk(); + } + + @Override + public void onFailure(Call call, Throwable t) { + callback.requestError(new Exception(t), t.getMessage()); + } + } + + @Override + public void addFriend(String friendUserName, UserActionCallback callback) { + Call friendCall = mEndpointUsersProviderService.addFriend(new BodyAddFriend(friendUserName)); + friendCall.enqueue(new UserActionRetrofitCallback(callback)); + } + + @Override + public void removeFriend(String friendUserName, UserActionCallback callback) { + Call friendCall = mEndpointUsersProviderService.removeFriend(friendUserName); + friendCall.enqueue(new UserActionRetrofitCallback(callback)); + } + + @Override + public void removeConnection(String connectionUserName, UserActionCallback callback) { + Call connectionCall = mEndpointUsersProviderService.removeConnection(connectionUserName); + connectionCall.enqueue(new UserActionRetrofitCallback(callback)); + } + public interface EndpointUsersProviderService { @GET("api/v1/users") Call getUsers(@Query("filter") String filter, @Query("per_page") int perPage, @Query("online") Boolean online); + + @DELETE("api/v1/user/connections/{connectionUserName}") + Call removeConnection(@Path("connectionUserName") String connectionUserName); + + @DELETE("api/v1/user/friends/{friendUserName}") + Call removeFriend(@Path("friendUserName") String friendUserName); + + @POST("api/v1/user/friends") + Call addFriend(@Body BodyAddFriend friendUserName); + + /* response + { + "status": "success" + } + */ + } + + class BodyAddFriend { + String username; + public BodyAddFriend(String username) { + this.username = username; + } } class UsersResponse { diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UsersProvider.java b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UsersProvider.java index 75f978800f..0088506407 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UsersProvider.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UsersProvider.java @@ -20,4 +20,16 @@ public interface UsersProvider { void retrieveError(Exception e, String message); } + + void addFriend(String friendUserName, UserActionCallback callback); + + void removeFriend(String friendUserName, UserActionCallback callback); + + void removeConnection(String connectionUserName, UserActionCallback callback); + + interface UserActionCallback { + void requestOk(); + void requestError(Exception e, String message); + } + } diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java index bcb379c501..7e6ccc10d6 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -71,7 +71,7 @@ public class UserListAdapter extends RecyclerView.Adapter Date: Tue, 14 Aug 2018 16:32:56 -0700 Subject: [PATCH 314/332] Changes as requested by zfox23 - Start and stop timers on hover only if scroll is enabled. --- interface/resources/qml/hifi/Feed.qml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/hifi/Feed.qml b/interface/resources/qml/hifi/Feed.qml index 135123595b..346481fe1f 100644 --- a/interface/resources/qml/hifi/Feed.qml +++ b/interface/resources/qml/hifi/Feed.qml @@ -143,11 +143,15 @@ Column { shadowHeight: root.stackedCardShadowHeight; hoverThunk: function () { hovered = true; - autoScrollTimer.stop(); + if(root.autoScrollTimerEnabled) { + autoScrollTimer.stop(); + } } unhoverThunk: function () { hovered = false; - autoScrollTimer.start(); + if(root.autoScrollTimerEnabled) { + autoScrollTimer.start(); + } } } From 48e08276bf0711741bb941168f3f1a84245eb7cb Mon Sep 17 00:00:00 2001 From: amantley Date: Wed, 15 Aug 2018 10:20:17 -0700 Subject: [PATCH 315/332] added new jump_takeoff and jump_land to fix the tposing in the transition to and from flying --- .../resources/avatar/animations/jump_land.fbx | Bin 368320 -> 927728 bytes .../avatar/animations/jump_takeoff.fbx | Bin 588176 -> 690272 bytes .../resources/avatar/animations/walk_fwd.fbx | Bin 1158512 -> 1157312 bytes .../avatar/animations/walk_fwd_fast.fbx | Bin 990832 -> 1008352 bytes scripts/developer/spin2App.js | 175 ++++++++++++++++++ 5 files changed, 175 insertions(+) create mode 100644 scripts/developer/spin2App.js diff --git a/interface/resources/avatar/animations/jump_land.fbx b/interface/resources/avatar/animations/jump_land.fbx index 03b1d2c5f60222810b52f11fc8672de1b3d21235..c0034bd091c6c28848b5942acee3c06387e21b5c 100644 GIT binary patch literal 927728 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𝔄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 literal 368320 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%0AC|381!{H57g)DL!Ja5VCI}?X;aY*Ul&(od~@t; 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 diff --git a/interface/resources/avatar/animations/jump_takeoff.fbx b/interface/resources/avatar/animations/jump_takeoff.fbx index 2d72a1371f307a31425f6f471f7165878d46fbbc..4119b2417f72852c4c7860dcd9842e5ceb007c42 100644 GIT binary patch literal 690272 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

    Xz$cTg6g6Zk3@oB}YrC@pVE>h#w4vB!f4 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 dSB~|mSDKZiQkpNlJKUc1z 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

X4$G30bgD9QU5yo5Y{_5CJ_^{Cc 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 B>2v@9 literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/settle_to_idle.fbx b/interface/resources/avatar/animations/settle_to_idle.fbx new file mode 100644 index 0000000000000000000000000000000000000000..a5ccbfb4909e8a834387f361f2dc5a1225d85ae0 GIT binary patch literal 1379376 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%0D1ndnh?M4VF=vW#0dDQ!&g`@ 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%0DPq;et)CO=3wty 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 J8*xdw{{xbwAYuRj literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/side_step_left.fbx b/interface/resources/avatar/animations/side_step_left.fbx index 29fcea041f2d18f6f4da3504c794e3068481f354..4bface0c75aaf264103b96995b59bc920e8c0c3f 100644 GIT binary patch literal 832496 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Ⓢy(~vSqi+S?zMzSr>Qy+|!U+*@C>+@tz;P8|U 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 z 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 Zzdzi&2YmJG=eKPCp~|--?>n{f{|9orPM81y literal 471952 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