mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 03:58:07 +02:00
Merge branch 'master' of https://github.com/highfidelity/hifi into gpuStreamizing
This commit is contained in:
commit
a4520f6a07
9 changed files with 140 additions and 38 deletions
83
cmake/macros/AutoScribeShader.cmake
Executable file
83
cmake/macros/AutoScribeShader.cmake
Executable file
|
@ -0,0 +1,83 @@
|
||||||
|
#
|
||||||
|
# AutoScribeShader.cmake
|
||||||
|
#
|
||||||
|
# Created by Sam Gateau on 12/17/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
|
||||||
|
#
|
||||||
|
|
||||||
|
function(AUTOSCRIBE_SHADER SHADER_FILE)
|
||||||
|
|
||||||
|
# Grab include files
|
||||||
|
foreach(includeFile ${ARGN})
|
||||||
|
list(APPEND SHADER_INCLUDE_FILES ${includeFile})
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
#Extract the unique include shader paths
|
||||||
|
foreach(SHADER_INCLUDE ${SHADER_INCLUDE_FILES})
|
||||||
|
get_filename_component(INCLUDE_DIR ${SHADER_INCLUDE} PATH)
|
||||||
|
list(APPEND SHADER_INCLUDES_PATHS ${INCLUDE_DIR})
|
||||||
|
endforeach()
|
||||||
|
list(REMOVE_DUPLICATES SHADER_INCLUDES_PATHS)
|
||||||
|
|
||||||
|
# make the scribe include arguments
|
||||||
|
set(SCRIBE_INCLUDES)
|
||||||
|
foreach(INCLUDE_PATH ${SHADER_INCLUDES_PATHS})
|
||||||
|
set(SCRIBE_INCLUDES ${SCRIBE_INCLUDES} -I ${INCLUDE_PATH}/)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
# Define the final name of the generated shader file
|
||||||
|
get_filename_component(SHADER_TARGET ${SHADER_FILE} NAME_WE)
|
||||||
|
get_filename_component(SHADER_EXT ${SHADER_FILE} EXT)
|
||||||
|
if(SHADER_EXT STREQUAL .slv)
|
||||||
|
set(SHADER_TARGET ${SHADER_TARGET}_vert.h)
|
||||||
|
elseif(${SHADER_EXT} STREQUAL .slf)
|
||||||
|
set(SHADER_TARGET ${SHADER_TARGET}_frag.h)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Target dependant Custom rule on the SHADER_FILE
|
||||||
|
if (APPLE)
|
||||||
|
set(GLPROFILE MAC_GL)
|
||||||
|
set(SCRIBE_ARGS -c++ -D GLPROFILE ${GLPROFILE} ${SCRIBE_INCLUDES} -o ${SHADER_TARGET} ${SHADER_FILE})
|
||||||
|
|
||||||
|
add_custom_command(OUTPUT ${SHADER_TARGET} COMMAND scribe ${SCRIBE_ARGS} DEPENDS scribe ${SHADER_INCLUDE_FILES} ${SHADER_FILE})
|
||||||
|
else (APPLE)
|
||||||
|
set(GLPROFILE PC_GL)
|
||||||
|
set(SCRIBE_ARGS -c++ -D GLPROFILE ${GLPROFILE} ${SCRIBE_INCLUDES} -o ${SHADER_TARGET} ${SHADER_FILE})
|
||||||
|
|
||||||
|
add_custom_command(OUTPUT ${SHADER_TARGET} COMMAND scribe ${SCRIBE_ARGS} DEPENDS scribe ${SHADER_INCLUDE_FILES} ${SHADER_FILE})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#output the generated file name
|
||||||
|
set(AUTOSCRIBE_SHADER_RETURN ${SHADER_TARGET} PARENT_SCOPE)
|
||||||
|
|
||||||
|
file(GLOB INCLUDE_FILES ${SHADER_TARGET})
|
||||||
|
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
macro(AUTOSCRIBE_SHADER_LIB)
|
||||||
|
|
||||||
|
file(GLOB_RECURSE SHADER_INCLUDE_FILES src/*.slh)
|
||||||
|
file(GLOB_RECURSE SHADER_SOURCE_FILES src/*.slv src/*.slf)
|
||||||
|
|
||||||
|
#message(${SHADER_INCLUDE_FILES})
|
||||||
|
foreach(SHADER_FILE ${SHADER_SOURCE_FILES})
|
||||||
|
AUTOSCRIBE_SHADER(${SHADER_FILE} ${SHADER_INCLUDE_FILES})
|
||||||
|
list(APPEND AUTOSCRIBE_SHADER_SRC ${AUTOSCRIBE_SHADER_RETURN})
|
||||||
|
endforeach()
|
||||||
|
#message(${AUTOSCRIBE_SHADER_SRC})
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
source_group("Shaders" FILES ${SHADER_INCLUDE_FILES})
|
||||||
|
source_group("Shaders" FILES ${SHADER_SOURCE_FILES})
|
||||||
|
source_group("Shaders" 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})
|
||||||
|
|
||||||
|
endmacro()
|
|
@ -16,7 +16,7 @@ macro(SETUP_HIFI_LIBRARY)
|
||||||
set(LIB_SRCS ${LIB_SRCS})
|
set(LIB_SRCS ${LIB_SRCS})
|
||||||
|
|
||||||
# create a library and set the property so it can be referenced later
|
# create a library and set the property so it can be referenced later
|
||||||
add_library(${TARGET_NAME} ${LIB_SRCS} ${AUTOMTC_SRC})
|
add_library(${TARGET_NAME} ${LIB_SRCS} ${AUTOMTC_SRC} ${AUTOSCRIBE_SHADER_LIB_SRC})
|
||||||
|
|
||||||
set(${TARGET_NAME}_DEPENDENCY_QT_MODULES ${ARGN})
|
set(${TARGET_NAME}_DEPENDENCY_QT_MODULES ${ARGN})
|
||||||
list(APPEND ${TARGET_NAME}_DEPENDENCY_QT_MODULES Core)
|
list(APPEND ${TARGET_NAME}_DEPENDENCY_QT_MODULES Core)
|
||||||
|
|
|
@ -679,14 +679,16 @@ float Avatar::calculateDisplayNameScaleFactor(const glm::vec3& textPosition, boo
|
||||||
|
|
||||||
double textWindowHeight;
|
double textWindowHeight;
|
||||||
|
|
||||||
GLCanvas::SharedPointer glCanvas = DependencyManager::get<GLCanvas>();
|
GLint viewportMatrix[4];
|
||||||
float windowSizeX = glCanvas->getDeviceWidth();
|
glGetIntegerv(GL_VIEWPORT, viewportMatrix);
|
||||||
float windowSizeY = glCanvas->getDeviceHeight();
|
|
||||||
|
|
||||||
glm::dmat4 modelViewMatrix;
|
glm::dmat4 modelViewMatrix;
|
||||||
|
float windowSizeX = viewportMatrix[2] - viewportMatrix[0];
|
||||||
|
float windowSizeY = viewportMatrix[3] - viewportMatrix[1];
|
||||||
|
|
||||||
glm::dmat4 projectionMatrix;
|
glm::dmat4 projectionMatrix;
|
||||||
Application::getInstance()->getModelViewMatrix(&modelViewMatrix);
|
Application::getInstance()->getModelViewMatrix(&modelViewMatrix);
|
||||||
Application::getInstance()->getProjectionMatrix(&projectionMatrix);
|
Application::getInstance()->getProjectionMatrix(&projectionMatrix);
|
||||||
|
|
||||||
|
|
||||||
glm::dvec4 p0 = modelViewMatrix * glm::dvec4(testPoint0, 1.0);
|
glm::dvec4 p0 = modelViewMatrix * glm::dvec4(testPoint0, 1.0);
|
||||||
p0 = projectionMatrix * p0;
|
p0 = projectionMatrix * p0;
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
set(TARGET_NAME render-utils)
|
set(TARGET_NAME render-utils)
|
||||||
|
|
||||||
# use setup_hifi_library macro to setup our project and link appropriate Qt modules
|
AUTOSCRIBE_SHADER_LIB()
|
||||||
setup_hifi_library(Widgets OpenGL Network Script)
|
|
||||||
|
# use setup_hifi_library macro to setup our project and link appropriate Qt modules
|
||||||
include_glm()
|
setup_hifi_library(Widgets OpenGL Network Script)
|
||||||
|
|
||||||
link_hifi_libraries(animation fbx shared gpu)
|
include_glm()
|
||||||
|
|
||||||
# call macro to include our dependency includes and bubble them up via a property on our target
|
link_hifi_libraries(animation fbx shared gpu)
|
||||||
include_dependency_includes()
|
|
||||||
|
# call macro to include our dependency includes and bubble them up via a property on our target
|
||||||
|
include_dependency_includes()
|
22
libraries/render-utils/src/Config.slh
Executable file
22
libraries/render-utils/src/Config.slh
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
<!
|
||||||
|
// Config.slh
|
||||||
|
// interface/src
|
||||||
|
//
|
||||||
|
// Created by Sam Gateau on 12/17/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
|
||||||
|
!>
|
||||||
|
<@if not CONFIG_SLH@>
|
||||||
|
<@def CONFIG_SLH@>
|
||||||
|
|
||||||
|
<@if GLPROFILE == PC_GL @>
|
||||||
|
<@def VERSION_HEADER #version 330 compatibility@>
|
||||||
|
<@elif GLPROFILE == MAC_GL @>
|
||||||
|
<@def VERSION_HEADER #version 120@>
|
||||||
|
<@else@>
|
||||||
|
<@def VERSION_HEADER #version 120@>
|
||||||
|
<@endif@>
|
||||||
|
|
||||||
|
<@endif@>
|
|
@ -35,6 +35,8 @@
|
||||||
#include "GlowEffect.h"
|
#include "GlowEffect.h"
|
||||||
#include "Model.h"
|
#include "Model.h"
|
||||||
|
|
||||||
|
#include "model_vert.h"
|
||||||
|
#include "model_frag.h"
|
||||||
|
|
||||||
#define GLBATCH( call ) batch._##call
|
#define GLBATCH( call ) batch._##call
|
||||||
//#define GLBATCH( call ) call
|
//#define GLBATCH( call ) call
|
||||||
|
@ -233,8 +235,8 @@ void Model::initJointTransforms() {
|
||||||
|
|
||||||
void Model::init() {
|
void Model::init() {
|
||||||
if (!_program.isLinked()) {
|
if (!_program.isLinked()) {
|
||||||
_program.addShaderFromSourceFile(QGLShader::Vertex, PathUtils::resourcesPath() + "shaders/model.vert");
|
_program.addShaderFromSourceCode(QGLShader::Vertex, model_vert);
|
||||||
_program.addShaderFromSourceFile(QGLShader::Fragment, PathUtils::resourcesPath() + "shaders/model.frag");
|
_program.addShaderFromSourceCode(QGLShader::Fragment, model_frag);
|
||||||
|
|
||||||
initProgram(_program, _locations);
|
initProgram(_program, _locations);
|
||||||
|
|
||||||
|
@ -245,8 +247,7 @@ void Model::init() {
|
||||||
|
|
||||||
initProgram(_normalMapProgram, _normalMapLocations);
|
initProgram(_normalMapProgram, _normalMapLocations);
|
||||||
|
|
||||||
_specularMapProgram.addShaderFromSourceFile(QGLShader::Vertex,
|
_specularMapProgram.addShaderFromSourceCode(QGLShader::Vertex, model_vert);
|
||||||
PathUtils::resourcesPath() + "shaders/model.vert");
|
|
||||||
_specularMapProgram.addShaderFromSourceFile(QGLShader::Fragment,
|
_specularMapProgram.addShaderFromSourceFile(QGLShader::Fragment,
|
||||||
PathUtils::resourcesPath() + "shaders/model_specular_map.frag");
|
PathUtils::resourcesPath() + "shaders/model_specular_map.frag");
|
||||||
|
|
||||||
|
@ -259,8 +260,7 @@ void Model::init() {
|
||||||
|
|
||||||
initProgram(_normalSpecularMapProgram, _normalSpecularMapLocations);
|
initProgram(_normalSpecularMapProgram, _normalSpecularMapLocations);
|
||||||
|
|
||||||
_translucentProgram.addShaderFromSourceFile(QGLShader::Vertex,
|
_translucentProgram.addShaderFromSourceCode(QGLShader::Vertex, model_vert);
|
||||||
PathUtils::resourcesPath() + "shaders/model.vert");
|
|
||||||
_translucentProgram.addShaderFromSourceFile(QGLShader::Fragment,
|
_translucentProgram.addShaderFromSourceFile(QGLShader::Fragment,
|
||||||
PathUtils::resourcesPath() + "shaders/model_translucent.frag");
|
PathUtils::resourcesPath() + "shaders/model_translucent.frag");
|
||||||
|
|
||||||
|
@ -300,7 +300,7 @@ void Model::init() {
|
||||||
PathUtils::resourcesPath() + "shaders/model_shadow.frag");
|
PathUtils::resourcesPath() + "shaders/model_shadow.frag");
|
||||||
|
|
||||||
_skinProgram.addShaderFromSourceFile(QGLShader::Vertex, PathUtils::resourcesPath() + "shaders/skin_model.vert");
|
_skinProgram.addShaderFromSourceFile(QGLShader::Vertex, PathUtils::resourcesPath() + "shaders/skin_model.vert");
|
||||||
_skinProgram.addShaderFromSourceFile(QGLShader::Fragment, PathUtils::resourcesPath() + "shaders/model.frag");
|
_skinProgram.addShaderFromSourceCode(QGLShader::Fragment, model_frag);
|
||||||
|
|
||||||
initSkinProgram(_skinProgram, _skinLocations);
|
initSkinProgram(_skinProgram, _skinLocations);
|
||||||
|
|
||||||
|
|
6
interface/resources/shaders/model.frag → libraries/render-utils/src/model.slf
Normal file → Executable file
6
interface/resources/shaders/model.frag → libraries/render-utils/src/model.slf
Normal file → Executable file
|
@ -1,6 +1,6 @@
|
||||||
#version 120
|
<@include Config.slh@>
|
||||||
|
<$VERSION_HEADER$>
|
||||||
//
|
// Generated on <$_SCRIBE_DATE$>
|
||||||
// model.frag
|
// model.frag
|
||||||
// fragment shader
|
// fragment shader
|
||||||
//
|
//
|
6
interface/resources/shaders/model.vert → libraries/render-utils/src/model.slv
Normal file → Executable file
6
interface/resources/shaders/model.vert → libraries/render-utils/src/model.slv
Normal file → Executable file
|
@ -1,6 +1,6 @@
|
||||||
#version 120
|
<@include Config.slh@>
|
||||||
|
<$VERSION_HEADER$>
|
||||||
//
|
// Generated on <$_SCRIBE_DATE$>
|
||||||
// model.vert
|
// model.vert
|
||||||
// vertex shader
|
// vertex shader
|
||||||
//
|
//
|
|
@ -192,16 +192,9 @@ int main (int argc, char** argv) {
|
||||||
targetStringStream << "#ifndef scribe_" << targetName << "_h" << std::endl;
|
targetStringStream << "#ifndef scribe_" << targetName << "_h" << std::endl;
|
||||||
targetStringStream << "#define scribe_" << targetName << "_h" << std::endl << std::endl;
|
targetStringStream << "#define scribe_" << targetName << "_h" << std::endl << std::endl;
|
||||||
|
|
||||||
targetStringStream << "const char " << targetName << "[] = {\n\"";
|
targetStringStream << "const char " << targetName << "[] = R\"XXXX(" << destStringStream.str() << ")XXXX\";";
|
||||||
|
|
||||||
std::stringstream destStringStreamAgain(destStringStream.str());
|
|
||||||
while (!destStringStreamAgain.eof()) {
|
|
||||||
std::string line;
|
|
||||||
std::getline(destStringStreamAgain, line);
|
|
||||||
targetStringStream << line << " \\n\\\n";
|
|
||||||
}
|
|
||||||
targetStringStream << "\"};" << std::endl << std::endl;
|
|
||||||
|
|
||||||
|
targetStringStream << std::endl << std::endl;
|
||||||
targetStringStream << "#endif" << std::endl;
|
targetStringStream << "#endif" << std::endl;
|
||||||
} else {
|
} else {
|
||||||
targetStringStream << destStringStream.str();
|
targetStringStream << destStringStream.str();
|
||||||
|
|
Loading…
Reference in a new issue