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