diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-04-28 03:05:39 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-04-28 03:05:39 +0000 |
commit | ba4fb26c192bca675a334fdab4a46285c7cd5232 (patch) | |
tree | 6f2dd3d1fefacccdeecfa74317972d9c7e36c114 | |
parent | 20e9adfc02fe14a057fd270fe2f06d36ad0e6e37 (diff) | |
parent | b775dea081bb2e671628125b23a6705a866822ef (diff) | |
download | glslang-ndk-r25-release.tar.gz |
Snap for 8508678 from b775dea081bb2e671628125b23a6705a866822ef to ndk-r25-releasendk-r25cndk-r25bndk-r25ndk-r25-release
Change-Id: Iceb7a342c32e98df7127df2e52e7d051eb3518f5
207 files changed, 22186 insertions, 3436 deletions
diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml new file mode 100644 index 00000000..86f439db --- /dev/null +++ b/.github/workflows/continuous_deployment.yml @@ -0,0 +1,168 @@ +# NOTE: This workflow was ported from Travis. +# Travis was using Ubuntu 14.04. Ubuntu 14.04 is not supportted by GitHub workflows. Ubuntu 20.04 is recommended. +# Travis was using Clang 3.6. The earliest version support by Ubuntu 20.04 is Clang 6.0. +# Travis was caching the clang package. APT package caching is not natively supported by GitHub actions/cache. +# Travis was using Mac OS X 10.13.6 / Xcode 9.4.1 / LLVM 9.1.0 + +# NOTE: The following documentation may be useful to maintainers of this workflow. +# Github actions: https://docs.github.com/en/actions +# Github github-script action: https://github.com/actions/github-script +# GitHub REST API: https://docs.github.com/en/rest +# Octokit front-end to the GitHub REST API: https://octokit.github.io/rest.js/v18 +# Octokit endpoint methods: https://github.com/octokit/plugin-rest-endpoint-methods.js/tree/master/docs/repos + +# TODO: Use actions/upload-artifact and actions/download-artifact to simplify deployment. +# TODO: Use composite actions to refactor redundant code. + +name: Continuous Deployment + +on: + workflow_dispatch: + push: + branches: + - master + +jobs: + linux: + runs-on: ${{matrix.os.genus}} + strategy: + fail-fast: false + matrix: + os: [{genus: ubuntu-20.04, family: linux}] + compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] + cmake_build_type: [Debug, Release] + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.7' + - name: Install Ubuntu Package Dependencies + run: | + sudo apt-get -qq update + sudo apt-get install -y clang-6.0 + - name: Install GoogleTest + run: | + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + mkdir -p External/googletest + cd External/googletest + git init + git remote add origin https://github.com/google/googletest.git + git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + git reset --hard FETCH_HEAD + cd ../.. + - name: Update Glslang Sources + run: | + ./update_glslang_sources.py + - name: Build + env: + CC: ${{matrix.compiler.cc}} + CXX: ${{matrix.compiler.cxx}} + run: | + mkdir build && cd build + cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install .. + make -j4 install + - name: Test + run: | + cd build + ctest --output-on-failure && + cd ../Test && ./runtests + - name: Zip + if: ${{ matrix.compiler.cc == 'clang' }} + env: + ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip + run: | + cd build/install + zip ${ARCHIVE} \ + bin/glslangValidator \ + include/glslang/* \ + lib/libGenericCodeGen${SUFFIX}.a \ + lib/libglslang${SUFFIX}.a \ + lib/libglslang-default-resource-limits${SUFFIX}.a \ + lib/libHLSL${SUFFIX}.a \ + lib/libMachineIndependent${SUFFIX}.a \ + lib/libOGLCompiler${SUFFIX}.a \ + lib/libOSDependent${SUFFIX}.a \ + lib/libSPIRV${SUFFIX}.a \ + lib/libSPVRemapper${SUFFIX}.a \ + lib/libSPIRV-Tools${SUFFIX}.a \ + lib/libSPIRV-Tools-opt${SUFFIX}.a + - name: Deploy + if: ${{ matrix.compiler.cc == 'clang' }} + env: + ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip + uses: actions/github-script@v5 + with: + script: | + const script = require('.github/workflows/deploy.js') + await script({github, context, core}) + + macos: + runs-on: ${{matrix.os.genus}} + strategy: + fail-fast: false + matrix: + os: [{genus: macos-10.15, family: osx}] + compiler: [{cc: clang, cxx: clang++}] + cmake_build_type: [Debug, Release] + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.7' + - name: Install GoogleTest + run: | + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + mkdir -p External/googletest + cd External/googletest + git init + git remote add origin https://github.com/google/googletest.git + git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + git reset --hard FETCH_HEAD + cd ../.. + - name: Update Glslang Sources + run: | + ./update_glslang_sources.py + - name: Build + env: + CC: ${{matrix.compiler.cc}} + CXX: ${{matrix.compiler.cxx}} + run: | + mkdir build && cd build + cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install .. + make -j4 install + - name: Test + run: | + cd build + ctest --output-on-failure && + cd ../Test && ./runtests + - name: Zip + env: + ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip + run: | + cd build/install + zip ${ARCHIVE} \ + bin/glslangValidator \ + include/glslang/* \ + lib/libGenericCodeGen${SUFFIX}.a \ + lib/libglslang${SUFFIX}.a \ + lib/libglslang-default-resource-limits${SUFFIX}.a \ + lib/libHLSL${SUFFIX}.a \ + lib/libMachineIndependent${SUFFIX}.a \ + lib/libOGLCompiler${SUFFIX}.a \ + lib/libOSDependent${SUFFIX}.a \ + lib/libSPIRV${SUFFIX}.a \ + lib/libSPVRemapper${SUFFIX}.a \ + lib/libSPIRV-Tools${SUFFIX}.a \ + lib/libSPIRV-Tools-opt${SUFFIX}.a + - name: Deploy + env: + ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip + uses: actions/github-script@v5 + with: + script: | + const script = require('.github/workflows/deploy.js') + await script({github, context, core}) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml new file mode 100644 index 00000000..feec0dc2 --- /dev/null +++ b/.github/workflows/continuous_integration.yml @@ -0,0 +1,157 @@ +# NOTE: This workflow was ported from Travis. +# Travis was using Ubuntu 14.04. Ubuntu 14.04 is not supportted by GitHub workflows. Ubuntu 20.04 is recommended. +# Travis was using Clang 3.6. The earliest version support by Ubuntu 20.04 is Clang 6.0. +# Travis was caching the clang package. APT package caching is not natively supported by GitHub actions/cache. +# Travis was using Mac OS X 10.13.6 / Xcode 9.4.1 / LLVM 9.1.0 +# +name: Continuous Integration + +on: + workflow_dispatch: + pull_request: + branches: + - master + +jobs: + linux: + runs-on: ${{matrix.os}} + strategy: + fail-fast: false + matrix: + os: [ubuntu-20.04] + compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] + cmake_build_type: [Debug, Release] + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.7' + - name: Install Ubuntu Package Dependencies + run: | + sudo apt-get -qq update + sudo apt-get install -y clang-6.0 + - name: Install GoogleTest + run: | + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + mkdir -p External/googletest + cd External/googletest + git init + git remote add origin https://github.com/google/googletest.git + git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + git reset --hard FETCH_HEAD + cd ../.. + - name: Update Glslang Sources + run: | + ./update_glslang_sources.py + - name: Build + env: + CC: ${{matrix.compiler.cc}} + CXX: ${{matrix.compiler.cxx}} + run: | + mkdir build && cd build + cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install .. + make -j4 install + - name: Test + run: | + cd build + ctest --output-on-failure && + cd ../Test && ./runtests + + macos: + runs-on: ${{matrix.os}} + strategy: + fail-fast: false + matrix: + os: [macos-10.15] + compiler: [{cc: clang, cxx: clang++}] + cmake_build_type: [Debug, Release] + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.7' + - name: Install GoogleTest + run: | + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + mkdir -p External/googletest + cd External/googletest + git init + git remote add origin https://github.com/google/googletest.git + git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + git reset --hard FETCH_HEAD + cd ../.. + - name: Update Glslang Sources + run: | + ./update_glslang_sources.py + - name: Build + env: + CC: ${{matrix.compiler.cc}} + CXX: ${{matrix.compiler.cxx}} + run: | + mkdir build && cd build + cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install .. + make -j4 install + - name: Test + run: | + cd build + ctest --output-on-failure && + cd ../Test && ./runtests + + android: + runs-on: ${{matrix.os}} + strategy: + fail-fast: false + matrix: + os: [ubuntu-20.04] + compiler: [{cc: clang, cxx: clang++}] + cmake_build_type: [Release] + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.7' + - name: Install Ubuntu Package Dependencies + if: ${{matrix.os == 'ubuntu-20.04'}} + run: | + sudo apt-get -qq update + sudo apt-get install -y clang-6.0 + - name: Install Android NDK + run: | + export ANDROID_NDK=$HOME/android-ndk + git init $ANDROID_NDK + pushd $ANDROID_NDK + git remote add dneto0 https://github.com/dneto0/android-ndk.git + git fetch --depth=1 dneto0 r17b-strip + git checkout FETCH_HEAD + popd + - name: Install GoogleTest + run: | + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + mkdir -p External/googletest + cd External/googletest + git init + git remote add origin https://github.com/google/googletest.git + git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + git reset --hard FETCH_HEAD + cd ../.. + - name: Update Glslang Sources + run: | + ./update_glslang_sources.py + - name: Build + env: + CC: ${{matrix.compiler.cc}} + CXX: ${{matrix.compiler.cxx}} + run: | + export ANDROID_NDK=$HOME/android-ndk + export TOOLCHAIN_PATH=$ANDROID_NDK/build/cmake/android.toolchain.cmake + echo $ANDROID_NDK + echo $TOOLCHAIN_PATH + mkdir build && cd build + cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH} -DANDROID_NATIVE_API_LEVEL=android-14 -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DANDROID_ABI="armeabi-v7a with NEON" -DBUILD_TESTING=OFF .. + make -j4 diff --git a/.github/workflows/deploy.js b/.github/workflows/deploy.js new file mode 100644 index 00000000..82ebb1bd --- /dev/null +++ b/.github/workflows/deploy.js @@ -0,0 +1,73 @@ +module.exports = async ({github, context, core}) => { + try { + await github.rest.git.updateRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: 'tags/master-tot', + sha: context.sha + }) + } catch (error) { + core.setFailed(`upload master-tot tag; ${error.name}; ${error.message}`) + } + + let release + try { + release = await github.rest.repos.getReleaseByTag({ + owner: context.repo.owner, + repo: context.repo.repo, + tag: 'master-tot' + }) + } catch (error) { + core.setFailed(`get the master release; ${error.name}; ${error.message}`) + } + + try { + await github.rest.repos.updateRelease({ + owner: context.repo.owner, + repo: context.repo.repo, + release_id: release.data.id + }) + } catch (error) { + core.setFailed(`update the master release; ${error.name}; ${error.message}`) + } + + let release_assets + try { + release_assets = await github.rest.repos.listReleaseAssets({ + owner: context.repo.owner, + repo: context.repo.repo, + release_id: release.data.id + }) + } catch (error) { + core.setFailed(`list release assets; ${error.name}; ${error.message}`) + } + + const { ARCHIVE } = process.env + for (const release_asset of release_assets.data) { + if (release_asset.name === `${ ARCHIVE }`) { + try { + await github.rest.repos.deleteReleaseAsset({ + owner: context.repo.owner, + repo: context.repo.repo, + asset_id: release_asset.id + }) + } catch (error) { + core.setFailed(`delete ${ ARCHIVE }; ${error.name}; ${error.message}`) + } + } + } + + try { + const asset_path = `./build/install/${ ARCHIVE }` + const fs = require("fs") + await github.rest.repos.uploadReleaseAsset({ + owner: context.repo.owner, + repo: context.repo.repo, + release_id: release.data.id, + name: `${ ARCHIVE }`, + data: fs.readFileSync(asset_path) + }) + } catch (error) { + core.setFailed(`upload ${ ARCHIVE }; ${error.name}; ${error.message}`) + } +} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index cb0392ef..00000000 --- a/.travis.yml +++ /dev/null @@ -1,141 +0,0 @@ -# Linux and Mac Build Configuration for Travis - -language: cpp - -os: - - linux - - osx - -# Use Ubuntu 14.04 LTS (Trusty) as the Linux testing environment. -sudo: false -dist: trusty - -env: - global: - - secure: aGFrgzyKp+84hKrGkxVWg8cHV61uqrKEHT38gfSQK6+WS4GfLOyH83p7WnsEBb7AMhzU7LMNFdvOFr6+NaMpVnqRvc40CEG1Q+lNg9Pq9mhIZLowvDrfqTL9kQ+8Nbw5Q6/dg6CTvY7fvRfpfCEmKIUZBRkoKUuHeuM1uy3IupFcdNuL5bSYn3Beo+apSJginh9DI4BLDXFUgBzTRSLLyCX5g3cpaeGGOCr8quJlYx75W6HRck5g9SZuLtUoH9GFEV3l+ZEWB8noErW+J56L03bwNwFuuAh321evw++oQk5KFa8rlDvar3SJ3b1RHB8u/eq5DBYMyaK/fS8+Q7QbGr8diF/wDe68bKO7U9IhpNfExXmczCpExjHomW5TQv4rYdGhygPMfW97aIsPRYyNKcl4fkmb7NDrM8w0Jscdq2g5c2Kz0ItyZoBri/NXLwFQQjaVCs7Pf97TjuMA7mK0GJmDTRzi6SrDYlWMt5BQL3y0CCojyfLIRcTh0CQjQI29s97bLfQrYAxt9GNNFR+HTXRLLrkaAlJkPGEPwUywlSfEThnvHLesNxYqemolAYpQT4ithoL4GehGIHmaxsW295aKVhuRf8K9eBODNqrfblvM42UHhjntT+92ZnQ/Gkq80GqaMxnxi4PO5FyPIxt0r981b54YBkWi8YA4P7w5pNI= - matrix: - - GLSLANG_BUILD_TYPE=Release - - GLSLANG_BUILD_TYPE=Debug - -compiler: - - clang - - gcc - -matrix: - fast_finish: true # Show final status immediately if a test fails. - exclude: - # Skip GCC builds on Mac OS X. - - os: osx - compiler: gcc - include: - # Additional build using Android NDK. - - env: BUILD_NDK=ON - -cache: - apt: true - -branches: - only: - - master - -addons: - apt: - packages: - - clang-3.6 - -install: - # Make sure that clang-3.6 is selected on Linux. - - if [[ "$TRAVIS_OS_NAME" == "linux" && "$CC" == "clang" ]]; then - export CC=clang-3.6 CXX=clang++-3.6; - fi - # Download a recent Android NDK and use its android.toolchain.cmake file. - - if [[ "$BUILD_NDK" == "ON" ]]; then - export ANDROID_NDK=$HOME/android-ndk; - git init $ANDROID_NDK; - pushd $ANDROID_NDK; - git remote add dneto0 https://github.com/dneto0/android-ndk.git; - git fetch --depth=1 dneto0 r17b-strip; - git checkout FETCH_HEAD; - popd; - export TOOLCHAIN_PATH=$ANDROID_NDK/build/cmake/android.toolchain.cmake; - fi - -before_script: - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - - mkdir -p External/googletest - - cd External/googletest - - git init - - git remote add origin https://github.com/google/googletest.git - - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - - git reset --hard FETCH_HEAD - - cd ../.. - # get spirv-tools and spirv-headers - - ./update_glslang_sources.py - -script: - - mkdir build && cd build - # For Android, do release building using NDK without testing. - # Use android-14, the oldest native API level supporeted by NDK r17b. - # We can use newer API levels if we want. - # For Linux and macOS, do debug/release building with testing. - - if [[ "$BUILD_NDK" == "ON" ]]; then - cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH} - -DANDROID_NATIVE_API_LEVEL=android-14 - -DCMAKE_BUILD_TYPE=Release - -DANDROID_ABI="armeabi-v7a with NEON" - -DBUILD_TESTING=OFF ..; - make -j4; - else - cmake -DCMAKE_BUILD_TYPE=${GLSLANG_BUILD_TYPE} - -DCMAKE_INSTALL_PREFIX=`pwd`/install ..; - make -j4 install; - ctest --output-on-failure && - cd ../Test && ./runtests; - fi - -after_success: - # For debug build, the generated dll has a postfix "d" in its name. - - if [[ "${GLSLANG_BUILD_TYPE}" == "Debug" ]]; then - export SUFFIX="d"; - else - export SUFFIX=""; - fi - # Create tarball for deployment - - if [[ ${CC} == clang* && "${BUILD_NDK}" != "ON" ]]; then - cd ../build/install; - export TARBALL=glslang-master-${TRAVIS_OS_NAME}-${GLSLANG_BUILD_TYPE}.zip; - zip ${TARBALL} - bin/glslangValidator - include/glslang/* - lib/libGenericCodeGen${SUFFIX}.a - lib/libglslang${SUFFIX}.a - lib/libglslang-default-resource-limits${SUFFIX}.a - lib/libHLSL${SUFFIX}.a - lib/libMachineIndependent${SUFFIX}.a - lib/libOGLCompiler${SUFFIX}.a - lib/libOSDependent${SUFFIX}.a - lib/libSPIRV${SUFFIX}.a - lib/libSPVRemapper${SUFFIX}.a - lib/libSPIRV-Tools${SUFFIX}.a - lib/libSPIRV-Tools-opt${SUFFIX}.a; - fi - -before_deploy: - # Tag the current top of the tree as "master-tot". - # Travis CI replies on the tag name to properly push to GitHub Releases. - - git config --global user.name "Travis CI" - - git config --global user.email "builds@travis-ci.org" - - git tag -f master-tot - - git push -q -f https://${glslangtoken}@github.com/KhronosGroup/glslang --tags - -deploy: - provider: releases - api_key: ${glslangtoken} - on: - branch: master - condition: ${CC} == clang* && ${BUILD_NDK} != ON - file: ${TARBALL} - skip_cleanup: true - overwrite: true @@ -74,6 +74,15 @@ action("glslang_extension_headers") { out_file = "${target_gen_dir}/include/glslang/glsl_intrinsic_header.h" + # Fuchsia GN build rules require all GN actions to be hermetic and they + # should correctly and fully state their inputs and outpus (see + # https://fuchsia.dev/fuchsia-src/development/build/hermetic_actions + # for details). All input files of the script should be added to the + # |sources| list. + sources = [ + "glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl", + ] + inputs = [ script ] @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 11.8.0 2022-01-27 + +### Other changes +* Add support for SPIR-V 1.6 +* Add support for Vulkan 1.3 +* Add --hlsl-dx-position-w option + +## 11.7.0 2021-11-11 + +### Other changes +* Add support for targeting Vulkan 1.2 in the C API + ## 11.6.0 2021-08-25 ### Other changes diff --git a/CMakeLists.txt b/CMakeLists.txt index d5b727ac..43533c14 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -106,10 +106,17 @@ CMAKE_DEPENDENT_OPTION(ENABLE_HLSL option(ENABLE_RTTI "Enables RTTI" OFF) option(ENABLE_EXCEPTIONS "Enables Exceptions" OFF) option(ENABLE_OPT "Enables spirv-opt capability if present" ON) -option(ENABLE_PCH "Enables Precompiled header" ON) + +if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") + # Workaround for CMake behavior on Mac OS with gcc, cmake generates -Xarch_* arguments + # which gcc rejects + option(ENABLE_PCH "Enables Precompiled header" OFF) +else() + option(ENABLE_PCH "Enables Precompiled header" ON) +endif() option(ENABLE_CTEST "Enables testing" ON) -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32) +if(ENABLE_GLSLANG_INSTALL AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32) set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "..." FORCE) endif() @@ -163,7 +170,7 @@ if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") add_compile_options(-Werror=deprecated-copy) endif() - if(NOT CMAKE_VERSION VERSION_LESS "3.13") + if(NOT CMAKE_VERSION VERSION_LESS "3.13" AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin") # Error if there's symbols that are not found at link time. # add_link_options() was added in CMake 3.13 - if using an earlier # version don't set this - it should be caught by presubmits anyway. diff --git a/LICENSE.txt b/LICENSE.txt index 5f58565d..054e68a4 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -303,41 +303,647 @@ APACHE LICENSE, VERSION 2.0 GPL 3 with special bison exception -------------------------------------------------------------------------------- - Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. - - As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + +Bison Exception + +As a special exception, you may create a larger work that contains part or all +of the Bison parser skeleton and distribute that work under terms of your +choice, so long as that work isn't itself a parser generator using the skeleton +or a modified version thereof as a parser skeleton. Alternatively, if you +modify or redistribute the parser skeleton itself, you may (at your option) +remove this special exception, which will cause the skeleton and the resulting +Bison output files to be licensed under the GNU General Public License without +this special exception. + +This special exception was added by the Free Software Foundation in version +2.2 of Bison. + + END OF TERMS AND CONDITIONS -------------------------------------------------------------------------------- ================================================================================ -------------------------------------------------------------------------------- -The preprocessor has the core licenses stated above, plus an additional licence: +The preprocessor has the core licenses stated above, plus additional licences: /****************************************************************************\ Copyright (c) 2002, NVIDIA Corporation. @@ -382,3 +988,29 @@ NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \****************************************************************************/ + +/* +** Copyright (c) 2014-2016 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and/or associated documentation files (the "Materials"), +** to deal in the Materials without restriction, including without limitation +** the rights to use, copy, modify, merge, publish, distribute, sublicense, +** and/or sell copies of the Materials, and to permit persons to whom the +** Materials are 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 Materials. +** +** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS +** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND +** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +** +** THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS +** IN THE MATERIALS. +*/ @@ -19,8 +19,8 @@ See issue #1964. If people are only using this location to get spirv.hpp, I recommend they get that from [SPIRV-Headers](https://github.com/KhronosGroup/SPIRV-Headers) instead. -[![Build Status](https://travis-ci.org/KhronosGroup/glslang.svg?branch=master)](https://travis-ci.org/KhronosGroup/glslang) -[![Build status](https://ci.appveyor.com/api/projects/status/q6fi9cb0qnhkla68/branch/master?svg=true)](https://ci.appveyor.com/project/Khronoswebmaster/glslang/branch/master) +[![appveyor status](https://ci.appveyor.com/api/projects/status/q6fi9cb0qnhkla68/branch/master?svg=true)](https://ci.appveyor.com/project/Khronoswebmaster/glslang/branch/master) +![Continuous Deployment](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_deployment.yml/badge.svg) # Glslang Components and Status @@ -85,7 +85,15 @@ The applied stage-specific rules are based on the file extension: * `.frag` for a fragment shader * `.comp` for a compute shader -There is also a non-shader extension +For ray tracing pipeline shaders: +* `.rgen` for a ray generation shader +* `.rint` for a ray intersection shader +* `.rahit` for a ray any-hit shader +* `.rchit` for a ray closest-hit shader +* `.rmiss` for a ray miss shader +* `.rcall` for a callable shader + +There is also a non-shader extension: * `.conf` for a configuration file of limits, see usage statement for example ## Building (CMake) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 22f767d7..775466e0 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -113,7 +113,8 @@ if(ENABLE_GLSLANG_INSTALL) if (ENABLE_SPVREMAPPER) install(TARGETS SPVRemapper EXPORT SPVRemapperTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() install(TARGETS SPIRV EXPORT SPIRVTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 43aba9cb..6cdf2346 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1256,8 +1256,10 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T if (type.getBasicType() == glslang::EbtRayQuery) return spv::StorageClassPrivate; #ifndef GLSLANG_WEB - if (type.getQualifier().isSpirvByReference()) - return spv::StorageClassFunction; + if (type.getQualifier().isSpirvByReference()) { + if (type.getQualifier().isParamInput() || type.getQualifier().isParamOutput()) + return spv::StorageClassFunction; + } #endif if (type.getQualifier().isPipeInput()) return spv::StorageClassInput; @@ -1662,9 +1664,22 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, case EShLangCompute: builder.addCapability(spv::CapabilityShader); - builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), - glslangIntermediate->getLocalSize(1), - glslangIntermediate->getLocalSize(2)); + if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { + std::vector<spv::Id> dimConstId; + for (int dim = 0; dim < 3; ++dim) { + bool specConst = (glslangIntermediate->getLocalSizeSpecId(dim) != glslang::TQualifier::layoutNotSet); + dimConstId.push_back(builder.makeUintConstant(glslangIntermediate->getLocalSize(dim), specConst)); + if (specConst) { + builder.addDecoration(dimConstId.back(), spv::DecorationSpecId, + glslangIntermediate->getLocalSizeSpecId(dim)); + } + } + builder.addExecutionModeId(shaderEntry, spv::ExecutionModeLocalSizeId, dimConstId); + } else { + builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), + glslangIntermediate->getLocalSize(1), + glslangIntermediate->getLocalSize(2)); + } if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupQuads) { builder.addCapability(spv::CapabilityComputeDerivativeGroupQuadsNV); builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupQuadsNV); @@ -1768,9 +1783,22 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, case EShLangMeshNV: builder.addCapability(spv::CapabilityMeshShadingNV); builder.addExtension(spv::E_SPV_NV_mesh_shader); - builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), - glslangIntermediate->getLocalSize(1), - glslangIntermediate->getLocalSize(2)); + if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { + std::vector<spv::Id> dimConstId; + for (int dim = 0; dim < 3; ++dim) { + bool specConst = (glslangIntermediate->getLocalSizeSpecId(dim) != glslang::TQualifier::layoutNotSet); + dimConstId.push_back(builder.makeUintConstant(glslangIntermediate->getLocalSize(dim), specConst)); + if (specConst) { + builder.addDecoration(dimConstId.back(), spv::DecorationSpecId, + glslangIntermediate->getLocalSizeSpecId(dim)); + } + } + builder.addExecutionModeId(shaderEntry, spv::ExecutionModeLocalSizeId, dimConstId); + } else { + builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), + glslangIntermediate->getLocalSize(1), + glslangIntermediate->getLocalSize(2)); + } if (glslangIntermediate->getStage() == EShLangMeshNV) { builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices()); @@ -3777,7 +3805,16 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T switch (node->getFlowOp()) { case glslang::EOpKill: - builder.makeStatementTerminator(spv::OpKill, "post-discard"); + if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { + if (glslangIntermediate->getSource() == glslang::EShSourceHlsl) { + builder.addCapability(spv::CapabilityDemoteToHelperInvocation); + builder.createNoResultOp(spv::OpDemoteToHelperInvocationEXT); + } else { + builder.makeStatementTerminator(spv::OpTerminateInvocation, "post-terminate-invocation"); + } + } else { + builder.makeStatementTerminator(spv::OpKill, "post-discard"); + } break; case glslang::EOpTerminateInvocation: builder.addExtension(spv::E_SPV_KHR_terminate_invocation); @@ -4148,23 +4185,23 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty const auto& spirvType = type.getSpirvType(); const auto& spirvInst = spirvType.spirvInst; - std::vector<spv::Id> operands; + std::vector<spv::IdImmediate> operands; for (const auto& typeParam : spirvType.typeParams) { // Constant expression if (typeParam.constant->isLiteral()) { if (typeParam.constant->getBasicType() == glslang::EbtFloat) { float floatValue = static_cast<float>(typeParam.constant->getConstArray()[0].getDConst()); unsigned literal = *reinterpret_cast<unsigned*>(&floatValue); - operands.push_back(literal); + operands.push_back({false, literal}); } else if (typeParam.constant->getBasicType() == glslang::EbtInt) { unsigned literal = typeParam.constant->getConstArray()[0].getIConst(); - operands.push_back(literal); + operands.push_back({false, literal}); } else if (typeParam.constant->getBasicType() == glslang::EbtUint) { unsigned literal = typeParam.constant->getConstArray()[0].getUConst(); - operands.push_back(literal); + operands.push_back({false, literal}); } else if (typeParam.constant->getBasicType() == glslang::EbtBool) { unsigned literal = typeParam.constant->getConstArray()[0].getBConst(); - operands.push_back(literal); + operands.push_back({false, literal}); } else if (typeParam.constant->getBasicType() == glslang::EbtString) { auto str = typeParam.constant->getConstArray()[0].getSConst()->c_str(); unsigned literal = 0; @@ -4176,7 +4213,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty *(literalPtr++) = ch; ++charCount; if (charCount == 4) { - operands.push_back(literal); + operands.push_back({false, literal}); literalPtr = reinterpret_cast<char*>(&literal); charCount = 0; } @@ -4186,20 +4223,17 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty if (charCount > 0) { for (; charCount < 4; ++charCount) *(literalPtr++) = 0; - operands.push_back(literal); + operands.push_back({false, literal}); } } else assert(0); // Unexpected type } else - operands.push_back(createSpvConstant(*typeParam.constant)); + operands.push_back({true, createSpvConstant(*typeParam.constant)}); } - if (spirvInst.set == "") - spvType = builder.createOp(static_cast<spv::Op>(spirvInst.id), spv::NoType, operands); - else { - spvType = builder.createBuiltinCall( - spv::NoType, getExtBuiltins(spirvInst.set.c_str()), spirvInst.id, operands); - } + assert(spirvInst.set == ""); // Currently, couldn't be extended instructions. + spvType = builder.makeGenericType(static_cast<spv::Op>(spirvInst.id), operands); + break; } #endif @@ -8717,8 +8751,18 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol builder.addDecoration(id, spv::DecorationOffset, symbol->getQualifier().layoutOffset); } - if (symbol->getQualifier().hasLocation()) - builder.addDecoration(id, spv::DecorationLocation, symbol->getQualifier().layoutLocation); + if (symbol->getQualifier().hasLocation()) { + if (!(glslangIntermediate->isRayTracingStage() && glslangIntermediate->IsRequestedExtension(glslang::E_GL_EXT_ray_tracing) + && (builder.getStorageClass(id) == spv::StorageClassRayPayloadKHR || + builder.getStorageClass(id) == spv::StorageClassIncomingRayPayloadKHR || + builder.getStorageClass(id) == spv::StorageClassCallableDataKHR || + builder.getStorageClass(id) == spv::StorageClassIncomingCallableDataKHR))) { + // Location values are used to link TraceRayKHR and ExecuteCallableKHR to corresponding variables + // but are not valid in SPIRV since they are supported only for Input/Output Storage classes. + builder.addDecoration(id, spv::DecorationLocation, symbol->getQualifier().layoutLocation); + } + } + builder.addDecoration(id, TranslateInvariantDecoration(symbol->getType().getQualifier())); if (symbol->getQualifier().hasStream() && glslangIntermediate->isMultiStream()) { builder.addCapability(spv::CapabilityGeometryStreams); @@ -8752,7 +8796,16 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol // add built-in variable decoration if (builtIn != spv::BuiltInMax) { - builder.addDecoration(id, spv::DecorationBuiltIn, (int)builtIn); + // WorkgroupSize deprecated in spirv1.6 + if (glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_6 || + builtIn != spv::BuiltInWorkgroupSize) + builder.addDecoration(id, spv::DecorationBuiltIn, (int)builtIn); + } + + // Add volatile decoration to HelperInvocation for spirv1.6 and beyond + if (builtIn == spv::BuiltInHelperInvocation && + glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { + builder.addDecoration(id, spv::DecorationVolatile); } #ifndef GLSLANG_WEB @@ -9025,15 +9078,19 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla break; #ifndef GLSLANG_WEB case glslang::EbtInt8: + builder.addCapability(spv::CapabilityInt8); spvConsts.push_back(builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const())); break; case glslang::EbtUint8: + builder.addCapability(spv::CapabilityInt8); spvConsts.push_back(builder.makeUint8Constant(zero ? 0 : consts[nextConst].getU8Const())); break; case glslang::EbtInt16: + builder.addCapability(spv::CapabilityInt16); spvConsts.push_back(builder.makeInt16Constant(zero ? 0 : consts[nextConst].getI16Const())); break; case glslang::EbtUint16: + builder.addCapability(spv::CapabilityInt16); spvConsts.push_back(builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const())); break; case glslang::EbtInt64: @@ -9046,6 +9103,7 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla spvConsts.push_back(builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst())); break; case glslang::EbtFloat16: + builder.addCapability(spv::CapabilityFloat16); spvConsts.push_back(builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); break; #endif @@ -9074,15 +9132,19 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla break; #ifndef GLSLANG_WEB case glslang::EbtInt8: + builder.addCapability(spv::CapabilityInt8); scalar = builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const(), specConstant); break; case glslang::EbtUint8: + builder.addCapability(spv::CapabilityInt8); scalar = builder.makeUint8Constant(zero ? 0 : consts[nextConst].getU8Const(), specConstant); break; case glslang::EbtInt16: + builder.addCapability(spv::CapabilityInt16); scalar = builder.makeInt16Constant(zero ? 0 : consts[nextConst].getI16Const(), specConstant); break; case glslang::EbtUint16: + builder.addCapability(spv::CapabilityInt16); scalar = builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const(), specConstant); break; case glslang::EbtInt64: @@ -9095,6 +9157,7 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla scalar = builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst(), specConstant); break; case glslang::EbtFloat16: + builder.addCapability(spv::CapabilityFloat16); scalar = builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); break; case glslang::EbtReference: diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp index 56d6d5d4..fdfbeb90 100644 --- a/SPIRV/SPVRemapper.cpp +++ b/SPIRV/SPVRemapper.cpp @@ -297,15 +297,21 @@ namespace spv { std::string spirvbin_t::literalString(unsigned word) const { std::string literal; + const spirword_t * pos = spv.data() + word; literal.reserve(16); - const char* bytes = reinterpret_cast<const char*>(spv.data() + word); - - while (bytes && *bytes) - literal += *bytes++; - - return literal; + do { + spirword_t word = *pos; + for (int i = 0; i < 4; i++) { + char c = word & 0xff; + if (c == '\0') + return literal; + literal += c; + word >>= 8; + } + pos++; + } while (true); } void spirvbin_t::applyMap() diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index e83306eb..36a3f097 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -427,6 +427,37 @@ Id Builder::makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols) return type->getResultId(); } +Id Builder::makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands) +{ + // try to find it + Instruction* type; + for (int t = 0; t < (int)groupedTypes[opcode].size(); ++t) { + type = groupedTypes[opcode][t]; + if (static_cast<size_t>(type->getNumOperands()) != operands.size()) + continue; // Number mismatch, find next + + bool match = true; + for (int op = 0; match && op < (int)operands.size(); ++op) { + match = (operands[op].isId ? type->getIdOperand(op) : type->getImmediateOperand(op)) == operands[op].word; + } + if (match) + return type->getResultId(); + } + + // not found, make it + type = new Instruction(getUniqueId(), NoType, opcode); + for (size_t op = 0; op < operands.size(); ++op) { + if (operands[op].isId) + type->addIdOperand(operands[op].word); + else + type->addImmediateOperand(operands[op].word); + } + groupedTypes[opcode].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type)); + module.mapInstruction(type); + + return type->getResultId(); +} // TODO: performance: track arrays per stride // If a stride is supplied (non-zero) make an array. diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 251b9ee8..c72d9b28 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -181,6 +181,7 @@ public: Id makeSamplerType(); Id makeSampledImageType(Id imageType); Id makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols); + Id makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands); // accelerationStructureNV type Id makeAccelerationStructureType(); diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index 8acf9b13..8cc17cca 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -68,6 +68,8 @@ spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLog } case glslang::EShTargetVulkan_1_2: return spv_target_env::SPV_ENV_VULKAN_1_2; + case glslang::EShTargetVulkan_1_3: + return spv_target_env::SPV_ENV_VULKAN_1_3; default: break; } @@ -210,6 +212,7 @@ void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector optimizer.RegisterPass(spvtools::CreateInterpolateFixupPass()); if (options->optimizeSize) { optimizer.RegisterPass(spvtools::CreateRedundancyEliminationPass()); + optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsPass()); } optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); optimizer.RegisterPass(spvtools::CreateCFGCleanupPass()); diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp index 73c988c5..74dd6054 100644 --- a/SPIRV/disassemble.cpp +++ b/SPIRV/disassemble.cpp @@ -43,6 +43,7 @@ #include <stack> #include <sstream> #include <cstring> +#include <utility> #include "disassemble.h" #include "doc.h" @@ -100,6 +101,7 @@ protected: void outputMask(OperandClass operandClass, unsigned mask); void disassembleImmediates(int numOperands); void disassembleIds(int numOperands); + std::pair<int, std::string> decodeString(); int disassembleString(); void disassembleInstruction(Id resultId, Id typeId, Op opCode, int numOperands); @@ -290,31 +292,44 @@ void SpirvStream::disassembleIds(int numOperands) } } -// return the number of operands consumed by the string -int SpirvStream::disassembleString() +// decode string from words at current position (non-consuming) +std::pair<int, std::string> SpirvStream::decodeString() { - int startWord = word; - - out << " \""; - - const char* wordString; + std::string res; + int wordPos = word; + char c; bool done = false; + do { - unsigned int content = stream[word]; - wordString = (const char*)&content; + unsigned int content = stream[wordPos]; for (int charCount = 0; charCount < 4; ++charCount) { - if (*wordString == 0) { + c = content & 0xff; + content >>= 8; + if (c == '\0') { done = true; break; } - out << *(wordString++); + res += c; } - ++word; - } while (! done); + ++wordPos; + } while(! done); + + return std::make_pair(wordPos - word, res); +} + +// return the number of operands consumed by the string +int SpirvStream::disassembleString() +{ + out << " \""; + std::pair<int, std::string> decoderes = decodeString(); + + out << decoderes.second; out << "\""; - return word - startWord; + word += decoderes.first; + + return decoderes.first; } void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, int numOperands) @@ -331,7 +346,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, nextNestedControl = 0; } } else if (opCode == OpExtInstImport) { - idDescriptor[resultId] = (const char*)(&stream[word]); + idDescriptor[resultId] = decodeString().second; } else { if (resultId != 0 && idDescriptor[resultId].size() == 0) { @@ -428,7 +443,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, --numOperands; // Get names for printing "(XXX)" for readability, *after* this id if (opCode == OpName) - idDescriptor[stream[word - 1]] = (const char*)(&stream[word]); + idDescriptor[stream[word - 1]] = decodeString().second; break; case OperandVariableIds: disassembleIds(numOperands); diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index dbdf7077..9a569e0d 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -900,6 +900,12 @@ const char* CapabilityString(int info) case CapabilityDeviceGroup: return "DeviceGroup"; case CapabilityMultiView: return "MultiView"; + case CapabilityDenormPreserve: return "DenormPreserve"; + case CapabilityDenormFlushToZero: return "DenormFlushToZero"; + case CapabilitySignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve"; + case CapabilityRoundingModeRTE: return "RoundingModeRTE"; + case CapabilityRoundingModeRTZ: return "RoundingModeRTZ"; + case CapabilityStencilExportEXT: return "StencilExportEXT"; case CapabilityFloat16ImageAMD: return "Float16ImageAMD"; diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index e0fe2498..a8642006 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1,2314 +1,2509 @@ -// Copyright (c) 2014-2020 The Khronos Group Inc. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and/or associated documentation files (the "Materials"), -// to deal in the Materials without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Materials, and to permit persons to whom the -// Materials are 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 Materials. -// -// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS -// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND -// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ -// -// THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS -// IN THE MATERIALS. - -// This header is automatically generated by the same tool that creates -// the Binary Section of the SPIR-V specification. - -// Enumeration tokens for SPIR-V, in various styles: -// C, C++, C++11, JSON, Lua, Python, C#, D -// -// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL -// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL -// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL -// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL -// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL'] -// - C# will use enum classes in the Specification class located in the "Spv" namespace, -// e.g.: Spv.Specification.SourceLanguage.GLSL -// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL -// -// Some tokens act like mask values, which can be OR'd together, -// while others are mutually exclusive. The mask-like ones have -// "Mask" in their name, and a parallel enum that has the shift -// amount (1 << x) for each corresponding enumerant. - -#ifndef spirv_HPP -#define spirv_HPP - -namespace spv { - -typedef unsigned int Id; - -#define SPV_VERSION 0x10500 -#define SPV_REVISION 4 - -static const unsigned int MagicNumber = 0x07230203; -static const unsigned int Version = 0x00010500; -static const unsigned int Revision = 4; -static const unsigned int OpCodeMask = 0xffff; -static const unsigned int WordCountShift = 16; - -enum SourceLanguage { - SourceLanguageUnknown = 0, - SourceLanguageESSL = 1, - SourceLanguageGLSL = 2, - SourceLanguageOpenCL_C = 3, - SourceLanguageOpenCL_CPP = 4, - SourceLanguageHLSL = 5, - SourceLanguageMax = 0x7fffffff, -}; - -enum ExecutionModel { - ExecutionModelVertex = 0, - ExecutionModelTessellationControl = 1, - ExecutionModelTessellationEvaluation = 2, - ExecutionModelGeometry = 3, - ExecutionModelFragment = 4, - ExecutionModelGLCompute = 5, - ExecutionModelKernel = 6, - ExecutionModelTaskNV = 5267, - ExecutionModelMeshNV = 5268, - ExecutionModelRayGenerationKHR = 5313, - ExecutionModelRayGenerationNV = 5313, - ExecutionModelIntersectionKHR = 5314, - ExecutionModelIntersectionNV = 5314, - ExecutionModelAnyHitKHR = 5315, - ExecutionModelAnyHitNV = 5315, - ExecutionModelClosestHitKHR = 5316, - ExecutionModelClosestHitNV = 5316, - ExecutionModelMissKHR = 5317, - ExecutionModelMissNV = 5317, - ExecutionModelCallableKHR = 5318, - ExecutionModelCallableNV = 5318, - ExecutionModelMax = 0x7fffffff, -}; - -enum AddressingModel { - AddressingModelLogical = 0, - AddressingModelPhysical32 = 1, - AddressingModelPhysical64 = 2, - AddressingModelPhysicalStorageBuffer64 = 5348, - AddressingModelPhysicalStorageBuffer64EXT = 5348, - AddressingModelMax = 0x7fffffff, -}; - -enum MemoryModel { - MemoryModelSimple = 0, - MemoryModelGLSL450 = 1, - MemoryModelOpenCL = 2, - MemoryModelVulkan = 3, - MemoryModelVulkanKHR = 3, - MemoryModelMax = 0x7fffffff, -}; - -enum ExecutionMode { - ExecutionModeInvocations = 0, - ExecutionModeSpacingEqual = 1, - ExecutionModeSpacingFractionalEven = 2, - ExecutionModeSpacingFractionalOdd = 3, - ExecutionModeVertexOrderCw = 4, - ExecutionModeVertexOrderCcw = 5, - ExecutionModePixelCenterInteger = 6, - ExecutionModeOriginUpperLeft = 7, - ExecutionModeOriginLowerLeft = 8, - ExecutionModeEarlyFragmentTests = 9, - ExecutionModePointMode = 10, - ExecutionModeXfb = 11, - ExecutionModeDepthReplacing = 12, - ExecutionModeDepthGreater = 14, - ExecutionModeDepthLess = 15, - ExecutionModeDepthUnchanged = 16, - ExecutionModeLocalSize = 17, - ExecutionModeLocalSizeHint = 18, - ExecutionModeInputPoints = 19, - ExecutionModeInputLines = 20, - ExecutionModeInputLinesAdjacency = 21, - ExecutionModeTriangles = 22, - ExecutionModeInputTrianglesAdjacency = 23, - ExecutionModeQuads = 24, - ExecutionModeIsolines = 25, - ExecutionModeOutputVertices = 26, - ExecutionModeOutputPoints = 27, - ExecutionModeOutputLineStrip = 28, - ExecutionModeOutputTriangleStrip = 29, - ExecutionModeVecTypeHint = 30, - ExecutionModeContractionOff = 31, - ExecutionModeInitializer = 33, - ExecutionModeFinalizer = 34, - ExecutionModeSubgroupSize = 35, - ExecutionModeSubgroupsPerWorkgroup = 36, - ExecutionModeSubgroupsPerWorkgroupId = 37, - ExecutionModeLocalSizeId = 38, - ExecutionModeLocalSizeHintId = 39, - ExecutionModeSubgroupUniformControlFlowKHR = 4421, - ExecutionModePostDepthCoverage = 4446, - ExecutionModeDenormPreserve = 4459, - ExecutionModeDenormFlushToZero = 4460, - ExecutionModeSignedZeroInfNanPreserve = 4461, - ExecutionModeRoundingModeRTE = 4462, - ExecutionModeRoundingModeRTZ = 4463, - ExecutionModeStencilRefReplacingEXT = 5027, - ExecutionModeOutputLinesNV = 5269, - ExecutionModeOutputPrimitivesNV = 5270, - ExecutionModeDerivativeGroupQuadsNV = 5289, - ExecutionModeDerivativeGroupLinearNV = 5290, - ExecutionModeOutputTrianglesNV = 5298, - ExecutionModePixelInterlockOrderedEXT = 5366, - ExecutionModePixelInterlockUnorderedEXT = 5367, - ExecutionModeSampleInterlockOrderedEXT = 5368, - ExecutionModeSampleInterlockUnorderedEXT = 5369, - ExecutionModeShadingRateInterlockOrderedEXT = 5370, - ExecutionModeShadingRateInterlockUnorderedEXT = 5371, - ExecutionModeSharedLocalMemorySizeINTEL = 5618, - ExecutionModeRoundingModeRTPINTEL = 5620, - ExecutionModeRoundingModeRTNINTEL = 5621, - ExecutionModeFloatingPointModeALTINTEL = 5622, - ExecutionModeFloatingPointModeIEEEINTEL = 5623, - ExecutionModeMaxWorkgroupSizeINTEL = 5893, - ExecutionModeMaxWorkDimINTEL = 5894, - ExecutionModeNoGlobalOffsetINTEL = 5895, - ExecutionModeNumSIMDWorkitemsINTEL = 5896, - ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903, - ExecutionModeMax = 0x7fffffff, -}; - -enum StorageClass { - StorageClassUniformConstant = 0, - StorageClassInput = 1, - StorageClassUniform = 2, - StorageClassOutput = 3, - StorageClassWorkgroup = 4, - StorageClassCrossWorkgroup = 5, - StorageClassPrivate = 6, - StorageClassFunction = 7, - StorageClassGeneric = 8, - StorageClassPushConstant = 9, - StorageClassAtomicCounter = 10, - StorageClassImage = 11, - StorageClassStorageBuffer = 12, - StorageClassCallableDataKHR = 5328, - StorageClassCallableDataNV = 5328, - StorageClassIncomingCallableDataKHR = 5329, - StorageClassIncomingCallableDataNV = 5329, - StorageClassRayPayloadKHR = 5338, - StorageClassRayPayloadNV = 5338, - StorageClassHitAttributeKHR = 5339, - StorageClassHitAttributeNV = 5339, - StorageClassIncomingRayPayloadKHR = 5342, - StorageClassIncomingRayPayloadNV = 5342, - StorageClassShaderRecordBufferKHR = 5343, - StorageClassShaderRecordBufferNV = 5343, - StorageClassPhysicalStorageBuffer = 5349, - StorageClassPhysicalStorageBufferEXT = 5349, - StorageClassCodeSectionINTEL = 5605, - StorageClassDeviceOnlyINTEL = 5936, - StorageClassHostOnlyINTEL = 5937, - StorageClassMax = 0x7fffffff, -}; - -enum Dim { - Dim1D = 0, - Dim2D = 1, - Dim3D = 2, - DimCube = 3, - DimRect = 4, - DimBuffer = 5, - DimSubpassData = 6, - DimMax = 0x7fffffff, -}; - -enum SamplerAddressingMode { - SamplerAddressingModeNone = 0, - SamplerAddressingModeClampToEdge = 1, - SamplerAddressingModeClamp = 2, - SamplerAddressingModeRepeat = 3, - SamplerAddressingModeRepeatMirrored = 4, - SamplerAddressingModeMax = 0x7fffffff, -}; - -enum SamplerFilterMode { - SamplerFilterModeNearest = 0, - SamplerFilterModeLinear = 1, - SamplerFilterModeMax = 0x7fffffff, -}; - -enum ImageFormat { - ImageFormatUnknown = 0, - ImageFormatRgba32f = 1, - ImageFormatRgba16f = 2, - ImageFormatR32f = 3, - ImageFormatRgba8 = 4, - ImageFormatRgba8Snorm = 5, - ImageFormatRg32f = 6, - ImageFormatRg16f = 7, - ImageFormatR11fG11fB10f = 8, - ImageFormatR16f = 9, - ImageFormatRgba16 = 10, - ImageFormatRgb10A2 = 11, - ImageFormatRg16 = 12, - ImageFormatRg8 = 13, - ImageFormatR16 = 14, - ImageFormatR8 = 15, - ImageFormatRgba16Snorm = 16, - ImageFormatRg16Snorm = 17, - ImageFormatRg8Snorm = 18, - ImageFormatR16Snorm = 19, - ImageFormatR8Snorm = 20, - ImageFormatRgba32i = 21, - ImageFormatRgba16i = 22, - ImageFormatRgba8i = 23, - ImageFormatR32i = 24, - ImageFormatRg32i = 25, - ImageFormatRg16i = 26, - ImageFormatRg8i = 27, - ImageFormatR16i = 28, - ImageFormatR8i = 29, - ImageFormatRgba32ui = 30, - ImageFormatRgba16ui = 31, - ImageFormatRgba8ui = 32, - ImageFormatR32ui = 33, - ImageFormatRgb10a2ui = 34, - ImageFormatRg32ui = 35, - ImageFormatRg16ui = 36, - ImageFormatRg8ui = 37, - ImageFormatR16ui = 38, - ImageFormatR8ui = 39, - ImageFormatR64ui = 40, - ImageFormatR64i = 41, - ImageFormatMax = 0x7fffffff, -}; - -enum ImageChannelOrder { - ImageChannelOrderR = 0, - ImageChannelOrderA = 1, - ImageChannelOrderRG = 2, - ImageChannelOrderRA = 3, - ImageChannelOrderRGB = 4, - ImageChannelOrderRGBA = 5, - ImageChannelOrderBGRA = 6, - ImageChannelOrderARGB = 7, - ImageChannelOrderIntensity = 8, - ImageChannelOrderLuminance = 9, - ImageChannelOrderRx = 10, - ImageChannelOrderRGx = 11, - ImageChannelOrderRGBx = 12, - ImageChannelOrderDepth = 13, - ImageChannelOrderDepthStencil = 14, - ImageChannelOrdersRGB = 15, - ImageChannelOrdersRGBx = 16, - ImageChannelOrdersRGBA = 17, - ImageChannelOrdersBGRA = 18, - ImageChannelOrderABGR = 19, - ImageChannelOrderMax = 0x7fffffff, -}; - -enum ImageChannelDataType { - ImageChannelDataTypeSnormInt8 = 0, - ImageChannelDataTypeSnormInt16 = 1, - ImageChannelDataTypeUnormInt8 = 2, - ImageChannelDataTypeUnormInt16 = 3, - ImageChannelDataTypeUnormShort565 = 4, - ImageChannelDataTypeUnormShort555 = 5, - ImageChannelDataTypeUnormInt101010 = 6, - ImageChannelDataTypeSignedInt8 = 7, - ImageChannelDataTypeSignedInt16 = 8, - ImageChannelDataTypeSignedInt32 = 9, - ImageChannelDataTypeUnsignedInt8 = 10, - ImageChannelDataTypeUnsignedInt16 = 11, - ImageChannelDataTypeUnsignedInt32 = 12, - ImageChannelDataTypeHalfFloat = 13, - ImageChannelDataTypeFloat = 14, - ImageChannelDataTypeUnormInt24 = 15, - ImageChannelDataTypeUnormInt101010_2 = 16, - ImageChannelDataTypeMax = 0x7fffffff, -}; - -enum ImageOperandsShift { - ImageOperandsBiasShift = 0, - ImageOperandsLodShift = 1, - ImageOperandsGradShift = 2, - ImageOperandsConstOffsetShift = 3, - ImageOperandsOffsetShift = 4, - ImageOperandsConstOffsetsShift = 5, - ImageOperandsSampleShift = 6, - ImageOperandsMinLodShift = 7, - ImageOperandsMakeTexelAvailableShift = 8, - ImageOperandsMakeTexelAvailableKHRShift = 8, - ImageOperandsMakeTexelVisibleShift = 9, - ImageOperandsMakeTexelVisibleKHRShift = 9, - ImageOperandsNonPrivateTexelShift = 10, - ImageOperandsNonPrivateTexelKHRShift = 10, - ImageOperandsVolatileTexelShift = 11, - ImageOperandsVolatileTexelKHRShift = 11, - ImageOperandsSignExtendShift = 12, - ImageOperandsZeroExtendShift = 13, - ImageOperandsMax = 0x7fffffff, -}; - -enum ImageOperandsMask { - ImageOperandsMaskNone = 0, - ImageOperandsBiasMask = 0x00000001, - ImageOperandsLodMask = 0x00000002, - ImageOperandsGradMask = 0x00000004, - ImageOperandsConstOffsetMask = 0x00000008, - ImageOperandsOffsetMask = 0x00000010, - ImageOperandsConstOffsetsMask = 0x00000020, - ImageOperandsSampleMask = 0x00000040, - ImageOperandsMinLodMask = 0x00000080, - ImageOperandsMakeTexelAvailableMask = 0x00000100, - ImageOperandsMakeTexelAvailableKHRMask = 0x00000100, - ImageOperandsMakeTexelVisibleMask = 0x00000200, - ImageOperandsMakeTexelVisibleKHRMask = 0x00000200, - ImageOperandsNonPrivateTexelMask = 0x00000400, - ImageOperandsNonPrivateTexelKHRMask = 0x00000400, - ImageOperandsVolatileTexelMask = 0x00000800, - ImageOperandsVolatileTexelKHRMask = 0x00000800, - ImageOperandsSignExtendMask = 0x00001000, - ImageOperandsZeroExtendMask = 0x00002000, -}; - -enum FPFastMathModeShift { - FPFastMathModeNotNaNShift = 0, - FPFastMathModeNotInfShift = 1, - FPFastMathModeNSZShift = 2, - FPFastMathModeAllowRecipShift = 3, - FPFastMathModeFastShift = 4, - FPFastMathModeAllowContractFastINTELShift = 16, - FPFastMathModeAllowReassocINTELShift = 17, - FPFastMathModeMax = 0x7fffffff, -}; - -enum FPFastMathModeMask { - FPFastMathModeMaskNone = 0, - FPFastMathModeNotNaNMask = 0x00000001, - FPFastMathModeNotInfMask = 0x00000002, - FPFastMathModeNSZMask = 0x00000004, - FPFastMathModeAllowRecipMask = 0x00000008, - FPFastMathModeFastMask = 0x00000010, - FPFastMathModeAllowContractFastINTELMask = 0x00010000, - FPFastMathModeAllowReassocINTELMask = 0x00020000, -}; - -enum FPRoundingMode { - FPRoundingModeRTE = 0, - FPRoundingModeRTZ = 1, - FPRoundingModeRTP = 2, - FPRoundingModeRTN = 3, - FPRoundingModeMax = 0x7fffffff, -}; - -enum LinkageType { - LinkageTypeExport = 0, - LinkageTypeImport = 1, - LinkageTypeLinkOnceODR = 2, - LinkageTypeMax = 0x7fffffff, -}; - -enum AccessQualifier { - AccessQualifierReadOnly = 0, - AccessQualifierWriteOnly = 1, - AccessQualifierReadWrite = 2, - AccessQualifierMax = 0x7fffffff, -}; - -enum FunctionParameterAttribute { - FunctionParameterAttributeZext = 0, - FunctionParameterAttributeSext = 1, - FunctionParameterAttributeByVal = 2, - FunctionParameterAttributeSret = 3, - FunctionParameterAttributeNoAlias = 4, - FunctionParameterAttributeNoCapture = 5, - FunctionParameterAttributeNoWrite = 6, - FunctionParameterAttributeNoReadWrite = 7, - FunctionParameterAttributeMax = 0x7fffffff, -}; - -enum Decoration { - DecorationRelaxedPrecision = 0, - DecorationSpecId = 1, - DecorationBlock = 2, - DecorationBufferBlock = 3, - DecorationRowMajor = 4, - DecorationColMajor = 5, - DecorationArrayStride = 6, - DecorationMatrixStride = 7, - DecorationGLSLShared = 8, - DecorationGLSLPacked = 9, - DecorationCPacked = 10, - DecorationBuiltIn = 11, - DecorationNoPerspective = 13, - DecorationFlat = 14, - DecorationPatch = 15, - DecorationCentroid = 16, - DecorationSample = 17, - DecorationInvariant = 18, - DecorationRestrict = 19, - DecorationAliased = 20, - DecorationVolatile = 21, - DecorationConstant = 22, - DecorationCoherent = 23, - DecorationNonWritable = 24, - DecorationNonReadable = 25, - DecorationUniform = 26, - DecorationUniformId = 27, - DecorationSaturatedConversion = 28, - DecorationStream = 29, - DecorationLocation = 30, - DecorationComponent = 31, - DecorationIndex = 32, - DecorationBinding = 33, - DecorationDescriptorSet = 34, - DecorationOffset = 35, - DecorationXfbBuffer = 36, - DecorationXfbStride = 37, - DecorationFuncParamAttr = 38, - DecorationFPRoundingMode = 39, - DecorationFPFastMathMode = 40, - DecorationLinkageAttributes = 41, - DecorationNoContraction = 42, - DecorationInputAttachmentIndex = 43, - DecorationAlignment = 44, - DecorationMaxByteOffset = 45, - DecorationAlignmentId = 46, - DecorationMaxByteOffsetId = 47, - DecorationNoSignedWrap = 4469, - DecorationNoUnsignedWrap = 4470, - DecorationExplicitInterpAMD = 4999, - DecorationOverrideCoverageNV = 5248, - DecorationPassthroughNV = 5250, - DecorationViewportRelativeNV = 5252, - DecorationSecondaryViewportRelativeNV = 5256, - DecorationPerPrimitiveNV = 5271, - DecorationPerViewNV = 5272, - DecorationPerTaskNV = 5273, - DecorationPerVertexNV = 5285, - DecorationNonUniform = 5300, - DecorationNonUniformEXT = 5300, - DecorationRestrictPointer = 5355, - DecorationRestrictPointerEXT = 5355, - DecorationAliasedPointer = 5356, - DecorationAliasedPointerEXT = 5356, - DecorationSIMTCallINTEL = 5599, - DecorationReferencedIndirectlyINTEL = 5602, - DecorationClobberINTEL = 5607, - DecorationSideEffectsINTEL = 5608, - DecorationVectorComputeVariableINTEL = 5624, - DecorationFuncParamIOKindINTEL = 5625, - DecorationVectorComputeFunctionINTEL = 5626, - DecorationStackCallINTEL = 5627, - DecorationGlobalVariableOffsetINTEL = 5628, - DecorationCounterBuffer = 5634, - DecorationHlslCounterBufferGOOGLE = 5634, - DecorationHlslSemanticGOOGLE = 5635, - DecorationUserSemantic = 5635, - DecorationUserTypeGOOGLE = 5636, - DecorationFunctionRoundingModeINTEL = 5822, - DecorationFunctionDenormModeINTEL = 5823, - DecorationRegisterINTEL = 5825, - DecorationMemoryINTEL = 5826, - DecorationNumbanksINTEL = 5827, - DecorationBankwidthINTEL = 5828, - DecorationMaxPrivateCopiesINTEL = 5829, - DecorationSinglepumpINTEL = 5830, - DecorationDoublepumpINTEL = 5831, - DecorationMaxReplicatesINTEL = 5832, - DecorationSimpleDualPortINTEL = 5833, - DecorationMergeINTEL = 5834, - DecorationBankBitsINTEL = 5835, - DecorationForcePow2DepthINTEL = 5836, - DecorationBurstCoalesceINTEL = 5899, - DecorationCacheSizeINTEL = 5900, - DecorationDontStaticallyCoalesceINTEL = 5901, - DecorationPrefetchINTEL = 5902, - DecorationStallEnableINTEL = 5905, - DecorationFuseLoopsInFunctionINTEL = 5907, - DecorationBufferLocationINTEL = 5921, - DecorationIOPipeStorageINTEL = 5944, - DecorationFunctionFloatingPointModeINTEL = 6080, - DecorationSingleElementVectorINTEL = 6085, - DecorationVectorComputeCallableFunctionINTEL = 6087, - DecorationMax = 0x7fffffff, -}; - -enum BuiltIn { - BuiltInPosition = 0, - BuiltInPointSize = 1, - BuiltInClipDistance = 3, - BuiltInCullDistance = 4, - BuiltInVertexId = 5, - BuiltInInstanceId = 6, - BuiltInPrimitiveId = 7, - BuiltInInvocationId = 8, - BuiltInLayer = 9, - BuiltInViewportIndex = 10, - BuiltInTessLevelOuter = 11, - BuiltInTessLevelInner = 12, - BuiltInTessCoord = 13, - BuiltInPatchVertices = 14, - BuiltInFragCoord = 15, - BuiltInPointCoord = 16, - BuiltInFrontFacing = 17, - BuiltInSampleId = 18, - BuiltInSamplePosition = 19, - BuiltInSampleMask = 20, - BuiltInFragDepth = 22, - BuiltInHelperInvocation = 23, - BuiltInNumWorkgroups = 24, - BuiltInWorkgroupSize = 25, - BuiltInWorkgroupId = 26, - BuiltInLocalInvocationId = 27, - BuiltInGlobalInvocationId = 28, - BuiltInLocalInvocationIndex = 29, - BuiltInWorkDim = 30, - BuiltInGlobalSize = 31, - BuiltInEnqueuedWorkgroupSize = 32, - BuiltInGlobalOffset = 33, - BuiltInGlobalLinearId = 34, - BuiltInSubgroupSize = 36, - BuiltInSubgroupMaxSize = 37, - BuiltInNumSubgroups = 38, - BuiltInNumEnqueuedSubgroups = 39, - BuiltInSubgroupId = 40, - BuiltInSubgroupLocalInvocationId = 41, - BuiltInVertexIndex = 42, - BuiltInInstanceIndex = 43, - BuiltInSubgroupEqMask = 4416, - BuiltInSubgroupEqMaskKHR = 4416, - BuiltInSubgroupGeMask = 4417, - BuiltInSubgroupGeMaskKHR = 4417, - BuiltInSubgroupGtMask = 4418, - BuiltInSubgroupGtMaskKHR = 4418, - BuiltInSubgroupLeMask = 4419, - BuiltInSubgroupLeMaskKHR = 4419, - BuiltInSubgroupLtMask = 4420, - BuiltInSubgroupLtMaskKHR = 4420, - BuiltInBaseVertex = 4424, - BuiltInBaseInstance = 4425, - BuiltInDrawIndex = 4426, - BuiltInPrimitiveShadingRateKHR = 4432, - BuiltInDeviceIndex = 4438, - BuiltInViewIndex = 4440, - BuiltInShadingRateKHR = 4444, - BuiltInBaryCoordNoPerspAMD = 4992, - BuiltInBaryCoordNoPerspCentroidAMD = 4993, - BuiltInBaryCoordNoPerspSampleAMD = 4994, - BuiltInBaryCoordSmoothAMD = 4995, - BuiltInBaryCoordSmoothCentroidAMD = 4996, - BuiltInBaryCoordSmoothSampleAMD = 4997, - BuiltInBaryCoordPullModelAMD = 4998, - BuiltInFragStencilRefEXT = 5014, - BuiltInViewportMaskNV = 5253, - BuiltInSecondaryPositionNV = 5257, - BuiltInSecondaryViewportMaskNV = 5258, - BuiltInPositionPerViewNV = 5261, - BuiltInViewportMaskPerViewNV = 5262, - BuiltInFullyCoveredEXT = 5264, - BuiltInTaskCountNV = 5274, - BuiltInPrimitiveCountNV = 5275, - BuiltInPrimitiveIndicesNV = 5276, - BuiltInClipDistancePerViewNV = 5277, - BuiltInCullDistancePerViewNV = 5278, - BuiltInLayerPerViewNV = 5279, - BuiltInMeshViewCountNV = 5280, - BuiltInMeshViewIndicesNV = 5281, - BuiltInBaryCoordNV = 5286, - BuiltInBaryCoordNoPerspNV = 5287, - BuiltInFragSizeEXT = 5292, - BuiltInFragmentSizeNV = 5292, - BuiltInFragInvocationCountEXT = 5293, - BuiltInInvocationsPerPixelNV = 5293, - BuiltInLaunchIdKHR = 5319, - BuiltInLaunchIdNV = 5319, - BuiltInLaunchSizeKHR = 5320, - BuiltInLaunchSizeNV = 5320, - BuiltInWorldRayOriginKHR = 5321, - BuiltInWorldRayOriginNV = 5321, - BuiltInWorldRayDirectionKHR = 5322, - BuiltInWorldRayDirectionNV = 5322, - BuiltInObjectRayOriginKHR = 5323, - BuiltInObjectRayOriginNV = 5323, - BuiltInObjectRayDirectionKHR = 5324, - BuiltInObjectRayDirectionNV = 5324, - BuiltInRayTminKHR = 5325, - BuiltInRayTminNV = 5325, - BuiltInRayTmaxKHR = 5326, - BuiltInRayTmaxNV = 5326, - BuiltInInstanceCustomIndexKHR = 5327, - BuiltInInstanceCustomIndexNV = 5327, - BuiltInObjectToWorldKHR = 5330, - BuiltInObjectToWorldNV = 5330, - BuiltInWorldToObjectKHR = 5331, - BuiltInWorldToObjectNV = 5331, - BuiltInHitTNV = 5332, - BuiltInHitKindKHR = 5333, - BuiltInHitKindNV = 5333, - BuiltInCurrentRayTimeNV = 5334, - BuiltInIncomingRayFlagsKHR = 5351, - BuiltInIncomingRayFlagsNV = 5351, - BuiltInRayGeometryIndexKHR = 5352, - BuiltInWarpsPerSMNV = 5374, - BuiltInSMCountNV = 5375, - BuiltInWarpIDNV = 5376, - BuiltInSMIDNV = 5377, - BuiltInMax = 0x7fffffff, -}; - -enum SelectionControlShift { - SelectionControlFlattenShift = 0, - SelectionControlDontFlattenShift = 1, - SelectionControlMax = 0x7fffffff, -}; - -enum SelectionControlMask { - SelectionControlMaskNone = 0, - SelectionControlFlattenMask = 0x00000001, - SelectionControlDontFlattenMask = 0x00000002, -}; - -enum LoopControlShift { - LoopControlUnrollShift = 0, - LoopControlDontUnrollShift = 1, - LoopControlDependencyInfiniteShift = 2, - LoopControlDependencyLengthShift = 3, - LoopControlMinIterationsShift = 4, - LoopControlMaxIterationsShift = 5, - LoopControlIterationMultipleShift = 6, - LoopControlPeelCountShift = 7, - LoopControlPartialCountShift = 8, - LoopControlInitiationIntervalINTELShift = 16, - LoopControlMaxConcurrencyINTELShift = 17, - LoopControlDependencyArrayINTELShift = 18, - LoopControlPipelineEnableINTELShift = 19, - LoopControlLoopCoalesceINTELShift = 20, - LoopControlMaxInterleavingINTELShift = 21, - LoopControlSpeculatedIterationsINTELShift = 22, - LoopControlNoFusionINTELShift = 23, - LoopControlMax = 0x7fffffff, -}; - -enum LoopControlMask { - LoopControlMaskNone = 0, - LoopControlUnrollMask = 0x00000001, - LoopControlDontUnrollMask = 0x00000002, - LoopControlDependencyInfiniteMask = 0x00000004, - LoopControlDependencyLengthMask = 0x00000008, - LoopControlMinIterationsMask = 0x00000010, - LoopControlMaxIterationsMask = 0x00000020, - LoopControlIterationMultipleMask = 0x00000040, - LoopControlPeelCountMask = 0x00000080, - LoopControlPartialCountMask = 0x00000100, - LoopControlInitiationIntervalINTELMask = 0x00010000, - LoopControlMaxConcurrencyINTELMask = 0x00020000, - LoopControlDependencyArrayINTELMask = 0x00040000, - LoopControlPipelineEnableINTELMask = 0x00080000, - LoopControlLoopCoalesceINTELMask = 0x00100000, - LoopControlMaxInterleavingINTELMask = 0x00200000, - LoopControlSpeculatedIterationsINTELMask = 0x00400000, - LoopControlNoFusionINTELMask = 0x00800000, -}; - -enum FunctionControlShift { - FunctionControlInlineShift = 0, - FunctionControlDontInlineShift = 1, - FunctionControlPureShift = 2, - FunctionControlConstShift = 3, - FunctionControlMax = 0x7fffffff, -}; - -enum FunctionControlMask { - FunctionControlMaskNone = 0, - FunctionControlInlineMask = 0x00000001, - FunctionControlDontInlineMask = 0x00000002, - FunctionControlPureMask = 0x00000004, - FunctionControlConstMask = 0x00000008, -}; - -enum MemorySemanticsShift { - MemorySemanticsAcquireShift = 1, - MemorySemanticsReleaseShift = 2, - MemorySemanticsAcquireReleaseShift = 3, - MemorySemanticsSequentiallyConsistentShift = 4, - MemorySemanticsUniformMemoryShift = 6, - MemorySemanticsSubgroupMemoryShift = 7, - MemorySemanticsWorkgroupMemoryShift = 8, - MemorySemanticsCrossWorkgroupMemoryShift = 9, - MemorySemanticsAtomicCounterMemoryShift = 10, - MemorySemanticsImageMemoryShift = 11, - MemorySemanticsOutputMemoryShift = 12, - MemorySemanticsOutputMemoryKHRShift = 12, - MemorySemanticsMakeAvailableShift = 13, - MemorySemanticsMakeAvailableKHRShift = 13, - MemorySemanticsMakeVisibleShift = 14, - MemorySemanticsMakeVisibleKHRShift = 14, - MemorySemanticsVolatileShift = 15, - MemorySemanticsMax = 0x7fffffff, -}; - -enum MemorySemanticsMask { - MemorySemanticsMaskNone = 0, - MemorySemanticsAcquireMask = 0x00000002, - MemorySemanticsReleaseMask = 0x00000004, - MemorySemanticsAcquireReleaseMask = 0x00000008, - MemorySemanticsSequentiallyConsistentMask = 0x00000010, - MemorySemanticsUniformMemoryMask = 0x00000040, - MemorySemanticsSubgroupMemoryMask = 0x00000080, - MemorySemanticsWorkgroupMemoryMask = 0x00000100, - MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200, - MemorySemanticsAtomicCounterMemoryMask = 0x00000400, - MemorySemanticsImageMemoryMask = 0x00000800, - MemorySemanticsOutputMemoryMask = 0x00001000, - MemorySemanticsOutputMemoryKHRMask = 0x00001000, - MemorySemanticsMakeAvailableMask = 0x00002000, - MemorySemanticsMakeAvailableKHRMask = 0x00002000, - MemorySemanticsMakeVisibleMask = 0x00004000, - MemorySemanticsMakeVisibleKHRMask = 0x00004000, - MemorySemanticsVolatileMask = 0x00008000, -}; - -enum MemoryAccessShift { - MemoryAccessVolatileShift = 0, - MemoryAccessAlignedShift = 1, - MemoryAccessNontemporalShift = 2, - MemoryAccessMakePointerAvailableShift = 3, - MemoryAccessMakePointerAvailableKHRShift = 3, - MemoryAccessMakePointerVisibleShift = 4, - MemoryAccessMakePointerVisibleKHRShift = 4, - MemoryAccessNonPrivatePointerShift = 5, - MemoryAccessNonPrivatePointerKHRShift = 5, - MemoryAccessMax = 0x7fffffff, -}; - -enum MemoryAccessMask { - MemoryAccessMaskNone = 0, - MemoryAccessVolatileMask = 0x00000001, - MemoryAccessAlignedMask = 0x00000002, - MemoryAccessNontemporalMask = 0x00000004, - MemoryAccessMakePointerAvailableMask = 0x00000008, - MemoryAccessMakePointerAvailableKHRMask = 0x00000008, - MemoryAccessMakePointerVisibleMask = 0x00000010, - MemoryAccessMakePointerVisibleKHRMask = 0x00000010, - MemoryAccessNonPrivatePointerMask = 0x00000020, - MemoryAccessNonPrivatePointerKHRMask = 0x00000020, -}; - -enum Scope { - ScopeCrossDevice = 0, - ScopeDevice = 1, - ScopeWorkgroup = 2, - ScopeSubgroup = 3, - ScopeInvocation = 4, - ScopeQueueFamily = 5, - ScopeQueueFamilyKHR = 5, - ScopeShaderCallKHR = 6, - ScopeMax = 0x7fffffff, -}; - -enum GroupOperation { - GroupOperationReduce = 0, - GroupOperationInclusiveScan = 1, - GroupOperationExclusiveScan = 2, - GroupOperationClusteredReduce = 3, - GroupOperationPartitionedReduceNV = 6, - GroupOperationPartitionedInclusiveScanNV = 7, - GroupOperationPartitionedExclusiveScanNV = 8, - GroupOperationMax = 0x7fffffff, -}; - -enum KernelEnqueueFlags { - KernelEnqueueFlagsNoWait = 0, - KernelEnqueueFlagsWaitKernel = 1, - KernelEnqueueFlagsWaitWorkGroup = 2, - KernelEnqueueFlagsMax = 0x7fffffff, -}; - -enum KernelProfilingInfoShift { - KernelProfilingInfoCmdExecTimeShift = 0, - KernelProfilingInfoMax = 0x7fffffff, -}; - -enum KernelProfilingInfoMask { - KernelProfilingInfoMaskNone = 0, - KernelProfilingInfoCmdExecTimeMask = 0x00000001, -}; - -enum Capability { - CapabilityMatrix = 0, - CapabilityShader = 1, - CapabilityGeometry = 2, - CapabilityTessellation = 3, - CapabilityAddresses = 4, - CapabilityLinkage = 5, - CapabilityKernel = 6, - CapabilityVector16 = 7, - CapabilityFloat16Buffer = 8, - CapabilityFloat16 = 9, - CapabilityFloat64 = 10, - CapabilityInt64 = 11, - CapabilityInt64Atomics = 12, - CapabilityImageBasic = 13, - CapabilityImageReadWrite = 14, - CapabilityImageMipmap = 15, - CapabilityPipes = 17, - CapabilityGroups = 18, - CapabilityDeviceEnqueue = 19, - CapabilityLiteralSampler = 20, - CapabilityAtomicStorage = 21, - CapabilityInt16 = 22, - CapabilityTessellationPointSize = 23, - CapabilityGeometryPointSize = 24, - CapabilityImageGatherExtended = 25, - CapabilityStorageImageMultisample = 27, - CapabilityUniformBufferArrayDynamicIndexing = 28, - CapabilitySampledImageArrayDynamicIndexing = 29, - CapabilityStorageBufferArrayDynamicIndexing = 30, - CapabilityStorageImageArrayDynamicIndexing = 31, - CapabilityClipDistance = 32, - CapabilityCullDistance = 33, - CapabilityImageCubeArray = 34, - CapabilitySampleRateShading = 35, - CapabilityImageRect = 36, - CapabilitySampledRect = 37, - CapabilityGenericPointer = 38, - CapabilityInt8 = 39, - CapabilityInputAttachment = 40, - CapabilitySparseResidency = 41, - CapabilityMinLod = 42, - CapabilitySampled1D = 43, - CapabilityImage1D = 44, - CapabilitySampledCubeArray = 45, - CapabilitySampledBuffer = 46, - CapabilityImageBuffer = 47, - CapabilityImageMSArray = 48, - CapabilityStorageImageExtendedFormats = 49, - CapabilityImageQuery = 50, - CapabilityDerivativeControl = 51, - CapabilityInterpolationFunction = 52, - CapabilityTransformFeedback = 53, - CapabilityGeometryStreams = 54, - CapabilityStorageImageReadWithoutFormat = 55, - CapabilityStorageImageWriteWithoutFormat = 56, - CapabilityMultiViewport = 57, - CapabilitySubgroupDispatch = 58, - CapabilityNamedBarrier = 59, - CapabilityPipeStorage = 60, - CapabilityGroupNonUniform = 61, - CapabilityGroupNonUniformVote = 62, - CapabilityGroupNonUniformArithmetic = 63, - CapabilityGroupNonUniformBallot = 64, - CapabilityGroupNonUniformShuffle = 65, - CapabilityGroupNonUniformShuffleRelative = 66, - CapabilityGroupNonUniformClustered = 67, - CapabilityGroupNonUniformQuad = 68, - CapabilityShaderLayer = 69, - CapabilityShaderViewportIndex = 70, - CapabilityFragmentShadingRateKHR = 4422, - CapabilitySubgroupBallotKHR = 4423, - CapabilityDrawParameters = 4427, - CapabilityWorkgroupMemoryExplicitLayoutKHR = 4428, - CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429, - CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430, - CapabilitySubgroupVoteKHR = 4431, - CapabilityStorageBuffer16BitAccess = 4433, - CapabilityStorageUniformBufferBlock16 = 4433, - CapabilityStorageUniform16 = 4434, - CapabilityUniformAndStorageBuffer16BitAccess = 4434, - CapabilityStoragePushConstant16 = 4435, - CapabilityStorageInputOutput16 = 4436, - CapabilityDeviceGroup = 4437, - CapabilityMultiView = 4439, - CapabilityVariablePointersStorageBuffer = 4441, - CapabilityVariablePointers = 4442, - CapabilityAtomicStorageOps = 4445, - CapabilitySampleMaskPostDepthCoverage = 4447, - CapabilityStorageBuffer8BitAccess = 4448, - CapabilityUniformAndStorageBuffer8BitAccess = 4449, - CapabilityStoragePushConstant8 = 4450, - CapabilityDenormPreserve = 4464, - CapabilityDenormFlushToZero = 4465, - CapabilitySignedZeroInfNanPreserve = 4466, - CapabilityRoundingModeRTE = 4467, - CapabilityRoundingModeRTZ = 4468, - CapabilityRayQueryProvisionalKHR = 4471, - CapabilityRayQueryKHR = 4472, - CapabilityRayTraversalPrimitiveCullingKHR = 4478, - CapabilityRayTracingKHR = 4479, - CapabilityFloat16ImageAMD = 5008, - CapabilityImageGatherBiasLodAMD = 5009, - CapabilityFragmentMaskAMD = 5010, - CapabilityStencilExportEXT = 5013, - CapabilityImageReadWriteLodAMD = 5015, - CapabilityInt64ImageEXT = 5016, - CapabilityShaderClockKHR = 5055, - CapabilitySampleMaskOverrideCoverageNV = 5249, - CapabilityGeometryShaderPassthroughNV = 5251, - CapabilityShaderViewportIndexLayerEXT = 5254, - CapabilityShaderViewportIndexLayerNV = 5254, - CapabilityShaderViewportMaskNV = 5255, - CapabilityShaderStereoViewNV = 5259, - CapabilityPerViewAttributesNV = 5260, - CapabilityFragmentFullyCoveredEXT = 5265, - CapabilityMeshShadingNV = 5266, - CapabilityImageFootprintNV = 5282, - CapabilityFragmentBarycentricNV = 5284, - CapabilityComputeDerivativeGroupQuadsNV = 5288, - CapabilityFragmentDensityEXT = 5291, - CapabilityShadingRateNV = 5291, - CapabilityGroupNonUniformPartitionedNV = 5297, - CapabilityShaderNonUniform = 5301, - CapabilityShaderNonUniformEXT = 5301, - CapabilityRuntimeDescriptorArray = 5302, - CapabilityRuntimeDescriptorArrayEXT = 5302, - CapabilityInputAttachmentArrayDynamicIndexing = 5303, - CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303, - CapabilityUniformTexelBufferArrayDynamicIndexing = 5304, - CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304, - CapabilityStorageTexelBufferArrayDynamicIndexing = 5305, - CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305, - CapabilityUniformBufferArrayNonUniformIndexing = 5306, - CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306, - CapabilitySampledImageArrayNonUniformIndexing = 5307, - CapabilitySampledImageArrayNonUniformIndexingEXT = 5307, - CapabilityStorageBufferArrayNonUniformIndexing = 5308, - CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308, - CapabilityStorageImageArrayNonUniformIndexing = 5309, - CapabilityStorageImageArrayNonUniformIndexingEXT = 5309, - CapabilityInputAttachmentArrayNonUniformIndexing = 5310, - CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310, - CapabilityUniformTexelBufferArrayNonUniformIndexing = 5311, - CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311, - CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312, - CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312, - CapabilityRayTracingNV = 5340, - CapabilityRayTracingMotionBlurNV = 5341, - CapabilityVulkanMemoryModel = 5345, - CapabilityVulkanMemoryModelKHR = 5345, - CapabilityVulkanMemoryModelDeviceScope = 5346, - CapabilityVulkanMemoryModelDeviceScopeKHR = 5346, - CapabilityPhysicalStorageBufferAddresses = 5347, - CapabilityPhysicalStorageBufferAddressesEXT = 5347, - CapabilityComputeDerivativeGroupLinearNV = 5350, - CapabilityRayTracingProvisionalKHR = 5353, - CapabilityCooperativeMatrixNV = 5357, - CapabilityFragmentShaderSampleInterlockEXT = 5363, - CapabilityFragmentShaderShadingRateInterlockEXT = 5372, - CapabilityShaderSMBuiltinsNV = 5373, - CapabilityFragmentShaderPixelInterlockEXT = 5378, - CapabilityDemoteToHelperInvocationEXT = 5379, - CapabilitySubgroupShuffleINTEL = 5568, - CapabilitySubgroupBufferBlockIOINTEL = 5569, - CapabilitySubgroupImageBlockIOINTEL = 5570, - CapabilitySubgroupImageMediaBlockIOINTEL = 5579, - CapabilityRoundToInfinityINTEL = 5582, - CapabilityFloatingPointModeINTEL = 5583, - CapabilityIntegerFunctions2INTEL = 5584, - CapabilityFunctionPointersINTEL = 5603, - CapabilityIndirectReferencesINTEL = 5604, - CapabilityAsmINTEL = 5606, - CapabilityAtomicFloat32MinMaxEXT = 5612, - CapabilityAtomicFloat64MinMaxEXT = 5613, - CapabilityAtomicFloat16MinMaxEXT = 5616, - CapabilityVectorComputeINTEL = 5617, - CapabilityVectorAnyINTEL = 5619, - CapabilityExpectAssumeKHR = 5629, - CapabilitySubgroupAvcMotionEstimationINTEL = 5696, - CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697, - CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698, - CapabilityVariableLengthArrayINTEL = 5817, - CapabilityFunctionFloatControlINTEL = 5821, - CapabilityFPGAMemoryAttributesINTEL = 5824, - CapabilityFPFastMathModeINTEL = 5837, - CapabilityArbitraryPrecisionIntegersINTEL = 5844, - CapabilityUnstructuredLoopControlsINTEL = 5886, - CapabilityFPGALoopControlsINTEL = 5888, - CapabilityKernelAttributesINTEL = 5892, - CapabilityFPGAKernelAttributesINTEL = 5897, - CapabilityFPGAMemoryAccessesINTEL = 5898, - CapabilityFPGAClusterAttributesINTEL = 5904, - CapabilityLoopFuseINTEL = 5906, - CapabilityFPGABufferLocationINTEL = 5920, - CapabilityUSMStorageClassesINTEL = 5935, - CapabilityIOPipesINTEL = 5943, - CapabilityBlockingPipesINTEL = 5945, - CapabilityFPGARegINTEL = 5948, - CapabilityAtomicFloat32AddEXT = 6033, - CapabilityAtomicFloat64AddEXT = 6034, - CapabilityLongConstantCompositeINTEL = 6089, - CapabilityAtomicFloat16AddEXT = 6095, - CapabilityMax = 0x7fffffff, -}; - -enum RayFlagsShift { - RayFlagsOpaqueKHRShift = 0, - RayFlagsNoOpaqueKHRShift = 1, - RayFlagsTerminateOnFirstHitKHRShift = 2, - RayFlagsSkipClosestHitShaderKHRShift = 3, - RayFlagsCullBackFacingTrianglesKHRShift = 4, - RayFlagsCullFrontFacingTrianglesKHRShift = 5, - RayFlagsCullOpaqueKHRShift = 6, - RayFlagsCullNoOpaqueKHRShift = 7, - RayFlagsSkipTrianglesKHRShift = 8, - RayFlagsSkipAABBsKHRShift = 9, - RayFlagsMax = 0x7fffffff, -}; - -enum RayFlagsMask { - RayFlagsMaskNone = 0, - RayFlagsOpaqueKHRMask = 0x00000001, - RayFlagsNoOpaqueKHRMask = 0x00000002, - RayFlagsTerminateOnFirstHitKHRMask = 0x00000004, - RayFlagsSkipClosestHitShaderKHRMask = 0x00000008, - RayFlagsCullBackFacingTrianglesKHRMask = 0x00000010, - RayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020, - RayFlagsCullOpaqueKHRMask = 0x00000040, - RayFlagsCullNoOpaqueKHRMask = 0x00000080, - RayFlagsSkipTrianglesKHRMask = 0x00000100, - RayFlagsSkipAABBsKHRMask = 0x00000200, -}; - -enum RayQueryIntersection { - RayQueryIntersectionRayQueryCandidateIntersectionKHR = 0, - RayQueryIntersectionRayQueryCommittedIntersectionKHR = 1, - RayQueryIntersectionMax = 0x7fffffff, -}; - -enum RayQueryCommittedIntersectionType { - RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0, - RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1, - RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2, - RayQueryCommittedIntersectionTypeMax = 0x7fffffff, -}; - -enum RayQueryCandidateIntersectionType { - RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0, - RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1, - RayQueryCandidateIntersectionTypeMax = 0x7fffffff, -}; - -enum FragmentShadingRateShift { - FragmentShadingRateVertical2PixelsShift = 0, - FragmentShadingRateVertical4PixelsShift = 1, - FragmentShadingRateHorizontal2PixelsShift = 2, - FragmentShadingRateHorizontal4PixelsShift = 3, - FragmentShadingRateMax = 0x7fffffff, -}; - -enum FragmentShadingRateMask { - FragmentShadingRateMaskNone = 0, - FragmentShadingRateVertical2PixelsMask = 0x00000001, - FragmentShadingRateVertical4PixelsMask = 0x00000002, - FragmentShadingRateHorizontal2PixelsMask = 0x00000004, - FragmentShadingRateHorizontal4PixelsMask = 0x00000008, -}; - -enum FPDenormMode { - FPDenormModePreserve = 0, - FPDenormModeFlushToZero = 1, - FPDenormModeMax = 0x7fffffff, -}; - -enum FPOperationMode { - FPOperationModeIEEE = 0, - FPOperationModeALT = 1, - FPOperationModeMax = 0x7fffffff, -}; - -enum Op { - OpNop = 0, - OpUndef = 1, - OpSourceContinued = 2, - OpSource = 3, - OpSourceExtension = 4, - OpName = 5, - OpMemberName = 6, - OpString = 7, - OpLine = 8, - OpExtension = 10, - OpExtInstImport = 11, - OpExtInst = 12, - OpMemoryModel = 14, - OpEntryPoint = 15, - OpExecutionMode = 16, - OpCapability = 17, - OpTypeVoid = 19, - OpTypeBool = 20, - OpTypeInt = 21, - OpTypeFloat = 22, - OpTypeVector = 23, - OpTypeMatrix = 24, - OpTypeImage = 25, - OpTypeSampler = 26, - OpTypeSampledImage = 27, - OpTypeArray = 28, - OpTypeRuntimeArray = 29, - OpTypeStruct = 30, - OpTypeOpaque = 31, - OpTypePointer = 32, - OpTypeFunction = 33, - OpTypeEvent = 34, - OpTypeDeviceEvent = 35, - OpTypeReserveId = 36, - OpTypeQueue = 37, - OpTypePipe = 38, - OpTypeForwardPointer = 39, - OpConstantTrue = 41, - OpConstantFalse = 42, - OpConstant = 43, - OpConstantComposite = 44, - OpConstantSampler = 45, - OpConstantNull = 46, - OpSpecConstantTrue = 48, - OpSpecConstantFalse = 49, - OpSpecConstant = 50, - OpSpecConstantComposite = 51, - OpSpecConstantOp = 52, - OpFunction = 54, - OpFunctionParameter = 55, - OpFunctionEnd = 56, - OpFunctionCall = 57, - OpVariable = 59, - OpImageTexelPointer = 60, - OpLoad = 61, - OpStore = 62, - OpCopyMemory = 63, - OpCopyMemorySized = 64, - OpAccessChain = 65, - OpInBoundsAccessChain = 66, - OpPtrAccessChain = 67, - OpArrayLength = 68, - OpGenericPtrMemSemantics = 69, - OpInBoundsPtrAccessChain = 70, - OpDecorate = 71, - OpMemberDecorate = 72, - OpDecorationGroup = 73, - OpGroupDecorate = 74, - OpGroupMemberDecorate = 75, - OpVectorExtractDynamic = 77, - OpVectorInsertDynamic = 78, - OpVectorShuffle = 79, - OpCompositeConstruct = 80, - OpCompositeExtract = 81, - OpCompositeInsert = 82, - OpCopyObject = 83, - OpTranspose = 84, - OpSampledImage = 86, - OpImageSampleImplicitLod = 87, - OpImageSampleExplicitLod = 88, - OpImageSampleDrefImplicitLod = 89, - OpImageSampleDrefExplicitLod = 90, - OpImageSampleProjImplicitLod = 91, - OpImageSampleProjExplicitLod = 92, - OpImageSampleProjDrefImplicitLod = 93, - OpImageSampleProjDrefExplicitLod = 94, - OpImageFetch = 95, - OpImageGather = 96, - OpImageDrefGather = 97, - OpImageRead = 98, - OpImageWrite = 99, - OpImage = 100, - OpImageQueryFormat = 101, - OpImageQueryOrder = 102, - OpImageQuerySizeLod = 103, - OpImageQuerySize = 104, - OpImageQueryLod = 105, - OpImageQueryLevels = 106, - OpImageQuerySamples = 107, - OpConvertFToU = 109, - OpConvertFToS = 110, - OpConvertSToF = 111, - OpConvertUToF = 112, - OpUConvert = 113, - OpSConvert = 114, - OpFConvert = 115, - OpQuantizeToF16 = 116, - OpConvertPtrToU = 117, - OpSatConvertSToU = 118, - OpSatConvertUToS = 119, - OpConvertUToPtr = 120, - OpPtrCastToGeneric = 121, - OpGenericCastToPtr = 122, - OpGenericCastToPtrExplicit = 123, - OpBitcast = 124, - OpSNegate = 126, - OpFNegate = 127, - OpIAdd = 128, - OpFAdd = 129, - OpISub = 130, - OpFSub = 131, - OpIMul = 132, - OpFMul = 133, - OpUDiv = 134, - OpSDiv = 135, - OpFDiv = 136, - OpUMod = 137, - OpSRem = 138, - OpSMod = 139, - OpFRem = 140, - OpFMod = 141, - OpVectorTimesScalar = 142, - OpMatrixTimesScalar = 143, - OpVectorTimesMatrix = 144, - OpMatrixTimesVector = 145, - OpMatrixTimesMatrix = 146, - OpOuterProduct = 147, - OpDot = 148, - OpIAddCarry = 149, - OpISubBorrow = 150, - OpUMulExtended = 151, - OpSMulExtended = 152, - OpAny = 154, - OpAll = 155, - OpIsNan = 156, - OpIsInf = 157, - OpIsFinite = 158, - OpIsNormal = 159, - OpSignBitSet = 160, - OpLessOrGreater = 161, - OpOrdered = 162, - OpUnordered = 163, - OpLogicalEqual = 164, - OpLogicalNotEqual = 165, - OpLogicalOr = 166, - OpLogicalAnd = 167, - OpLogicalNot = 168, - OpSelect = 169, - OpIEqual = 170, - OpINotEqual = 171, - OpUGreaterThan = 172, - OpSGreaterThan = 173, - OpUGreaterThanEqual = 174, - OpSGreaterThanEqual = 175, - OpULessThan = 176, - OpSLessThan = 177, - OpULessThanEqual = 178, - OpSLessThanEqual = 179, - OpFOrdEqual = 180, - OpFUnordEqual = 181, - OpFOrdNotEqual = 182, - OpFUnordNotEqual = 183, - OpFOrdLessThan = 184, - OpFUnordLessThan = 185, - OpFOrdGreaterThan = 186, - OpFUnordGreaterThan = 187, - OpFOrdLessThanEqual = 188, - OpFUnordLessThanEqual = 189, - OpFOrdGreaterThanEqual = 190, - OpFUnordGreaterThanEqual = 191, - OpShiftRightLogical = 194, - OpShiftRightArithmetic = 195, - OpShiftLeftLogical = 196, - OpBitwiseOr = 197, - OpBitwiseXor = 198, - OpBitwiseAnd = 199, - OpNot = 200, - OpBitFieldInsert = 201, - OpBitFieldSExtract = 202, - OpBitFieldUExtract = 203, - OpBitReverse = 204, - OpBitCount = 205, - OpDPdx = 207, - OpDPdy = 208, - OpFwidth = 209, - OpDPdxFine = 210, - OpDPdyFine = 211, - OpFwidthFine = 212, - OpDPdxCoarse = 213, - OpDPdyCoarse = 214, - OpFwidthCoarse = 215, - OpEmitVertex = 218, - OpEndPrimitive = 219, - OpEmitStreamVertex = 220, - OpEndStreamPrimitive = 221, - OpControlBarrier = 224, - OpMemoryBarrier = 225, - OpAtomicLoad = 227, - OpAtomicStore = 228, - OpAtomicExchange = 229, - OpAtomicCompareExchange = 230, - OpAtomicCompareExchangeWeak = 231, - OpAtomicIIncrement = 232, - OpAtomicIDecrement = 233, - OpAtomicIAdd = 234, - OpAtomicISub = 235, - OpAtomicSMin = 236, - OpAtomicUMin = 237, - OpAtomicSMax = 238, - OpAtomicUMax = 239, - OpAtomicAnd = 240, - OpAtomicOr = 241, - OpAtomicXor = 242, - OpPhi = 245, - OpLoopMerge = 246, - OpSelectionMerge = 247, - OpLabel = 248, - OpBranch = 249, - OpBranchConditional = 250, - OpSwitch = 251, - OpKill = 252, - OpReturn = 253, - OpReturnValue = 254, - OpUnreachable = 255, - OpLifetimeStart = 256, - OpLifetimeStop = 257, - OpGroupAsyncCopy = 259, - OpGroupWaitEvents = 260, - OpGroupAll = 261, - OpGroupAny = 262, - OpGroupBroadcast = 263, - OpGroupIAdd = 264, - OpGroupFAdd = 265, - OpGroupFMin = 266, - OpGroupUMin = 267, - OpGroupSMin = 268, - OpGroupFMax = 269, - OpGroupUMax = 270, - OpGroupSMax = 271, - OpReadPipe = 274, - OpWritePipe = 275, - OpReservedReadPipe = 276, - OpReservedWritePipe = 277, - OpReserveReadPipePackets = 278, - OpReserveWritePipePackets = 279, - OpCommitReadPipe = 280, - OpCommitWritePipe = 281, - OpIsValidReserveId = 282, - OpGetNumPipePackets = 283, - OpGetMaxPipePackets = 284, - OpGroupReserveReadPipePackets = 285, - OpGroupReserveWritePipePackets = 286, - OpGroupCommitReadPipe = 287, - OpGroupCommitWritePipe = 288, - OpEnqueueMarker = 291, - OpEnqueueKernel = 292, - OpGetKernelNDrangeSubGroupCount = 293, - OpGetKernelNDrangeMaxSubGroupSize = 294, - OpGetKernelWorkGroupSize = 295, - OpGetKernelPreferredWorkGroupSizeMultiple = 296, - OpRetainEvent = 297, - OpReleaseEvent = 298, - OpCreateUserEvent = 299, - OpIsValidEvent = 300, - OpSetUserEventStatus = 301, - OpCaptureEventProfilingInfo = 302, - OpGetDefaultQueue = 303, - OpBuildNDRange = 304, - OpImageSparseSampleImplicitLod = 305, - OpImageSparseSampleExplicitLod = 306, - OpImageSparseSampleDrefImplicitLod = 307, - OpImageSparseSampleDrefExplicitLod = 308, - OpImageSparseSampleProjImplicitLod = 309, - OpImageSparseSampleProjExplicitLod = 310, - OpImageSparseSampleProjDrefImplicitLod = 311, - OpImageSparseSampleProjDrefExplicitLod = 312, - OpImageSparseFetch = 313, - OpImageSparseGather = 314, - OpImageSparseDrefGather = 315, - OpImageSparseTexelsResident = 316, - OpNoLine = 317, - OpAtomicFlagTestAndSet = 318, - OpAtomicFlagClear = 319, - OpImageSparseRead = 320, - OpSizeOf = 321, - OpTypePipeStorage = 322, - OpConstantPipeStorage = 323, - OpCreatePipeFromPipeStorage = 324, - OpGetKernelLocalSizeForSubgroupCount = 325, - OpGetKernelMaxNumSubgroups = 326, - OpTypeNamedBarrier = 327, - OpNamedBarrierInitialize = 328, - OpMemoryNamedBarrier = 329, - OpModuleProcessed = 330, - OpExecutionModeId = 331, - OpDecorateId = 332, - OpGroupNonUniformElect = 333, - OpGroupNonUniformAll = 334, - OpGroupNonUniformAny = 335, - OpGroupNonUniformAllEqual = 336, - OpGroupNonUniformBroadcast = 337, - OpGroupNonUniformBroadcastFirst = 338, - OpGroupNonUniformBallot = 339, - OpGroupNonUniformInverseBallot = 340, - OpGroupNonUniformBallotBitExtract = 341, - OpGroupNonUniformBallotBitCount = 342, - OpGroupNonUniformBallotFindLSB = 343, - OpGroupNonUniformBallotFindMSB = 344, - OpGroupNonUniformShuffle = 345, - OpGroupNonUniformShuffleXor = 346, - OpGroupNonUniformShuffleUp = 347, - OpGroupNonUniformShuffleDown = 348, - OpGroupNonUniformIAdd = 349, - OpGroupNonUniformFAdd = 350, - OpGroupNonUniformIMul = 351, - OpGroupNonUniformFMul = 352, - OpGroupNonUniformSMin = 353, - OpGroupNonUniformUMin = 354, - OpGroupNonUniformFMin = 355, - OpGroupNonUniformSMax = 356, - OpGroupNonUniformUMax = 357, - OpGroupNonUniformFMax = 358, - OpGroupNonUniformBitwiseAnd = 359, - OpGroupNonUniformBitwiseOr = 360, - OpGroupNonUniformBitwiseXor = 361, - OpGroupNonUniformLogicalAnd = 362, - OpGroupNonUniformLogicalOr = 363, - OpGroupNonUniformLogicalXor = 364, - OpGroupNonUniformQuadBroadcast = 365, - OpGroupNonUniformQuadSwap = 366, - OpCopyLogical = 400, - OpPtrEqual = 401, - OpPtrNotEqual = 402, - OpPtrDiff = 403, - OpTerminateInvocation = 4416, - OpSubgroupBallotKHR = 4421, - OpSubgroupFirstInvocationKHR = 4422, - OpSubgroupAllKHR = 4428, - OpSubgroupAnyKHR = 4429, - OpSubgroupAllEqualKHR = 4430, - OpSubgroupReadInvocationKHR = 4432, - OpTraceRayKHR = 4445, - OpExecuteCallableKHR = 4446, - OpConvertUToAccelerationStructureKHR = 4447, - OpIgnoreIntersectionKHR = 4448, - OpTerminateRayKHR = 4449, - OpTypeRayQueryKHR = 4472, - OpRayQueryInitializeKHR = 4473, - OpRayQueryTerminateKHR = 4474, - OpRayQueryGenerateIntersectionKHR = 4475, - OpRayQueryConfirmIntersectionKHR = 4476, - OpRayQueryProceedKHR = 4477, - OpRayQueryGetIntersectionTypeKHR = 4479, - OpGroupIAddNonUniformAMD = 5000, - OpGroupFAddNonUniformAMD = 5001, - OpGroupFMinNonUniformAMD = 5002, - OpGroupUMinNonUniformAMD = 5003, - OpGroupSMinNonUniformAMD = 5004, - OpGroupFMaxNonUniformAMD = 5005, - OpGroupUMaxNonUniformAMD = 5006, - OpGroupSMaxNonUniformAMD = 5007, - OpFragmentMaskFetchAMD = 5011, - OpFragmentFetchAMD = 5012, - OpReadClockKHR = 5056, - OpImageSampleFootprintNV = 5283, - OpGroupNonUniformPartitionNV = 5296, - OpWritePackedPrimitiveIndices4x8NV = 5299, - OpReportIntersectionKHR = 5334, - OpReportIntersectionNV = 5334, - OpIgnoreIntersectionNV = 5335, - OpTerminateRayNV = 5336, - OpTraceNV = 5337, - OpTraceMotionNV = 5338, - OpTraceRayMotionNV = 5339, - OpTypeAccelerationStructureKHR = 5341, - OpTypeAccelerationStructureNV = 5341, - OpExecuteCallableNV = 5344, - OpTypeCooperativeMatrixNV = 5358, - OpCooperativeMatrixLoadNV = 5359, - OpCooperativeMatrixStoreNV = 5360, - OpCooperativeMatrixMulAddNV = 5361, - OpCooperativeMatrixLengthNV = 5362, - OpBeginInvocationInterlockEXT = 5364, - OpEndInvocationInterlockEXT = 5365, - OpDemoteToHelperInvocationEXT = 5380, - OpIsHelperInvocationEXT = 5381, - OpSubgroupShuffleINTEL = 5571, - OpSubgroupShuffleDownINTEL = 5572, - OpSubgroupShuffleUpINTEL = 5573, - OpSubgroupShuffleXorINTEL = 5574, - OpSubgroupBlockReadINTEL = 5575, - OpSubgroupBlockWriteINTEL = 5576, - OpSubgroupImageBlockReadINTEL = 5577, - OpSubgroupImageBlockWriteINTEL = 5578, - OpSubgroupImageMediaBlockReadINTEL = 5580, - OpSubgroupImageMediaBlockWriteINTEL = 5581, - OpUCountLeadingZerosINTEL = 5585, - OpUCountTrailingZerosINTEL = 5586, - OpAbsISubINTEL = 5587, - OpAbsUSubINTEL = 5588, - OpIAddSatINTEL = 5589, - OpUAddSatINTEL = 5590, - OpIAverageINTEL = 5591, - OpUAverageINTEL = 5592, - OpIAverageRoundedINTEL = 5593, - OpUAverageRoundedINTEL = 5594, - OpISubSatINTEL = 5595, - OpUSubSatINTEL = 5596, - OpIMul32x16INTEL = 5597, - OpUMul32x16INTEL = 5598, - OpConstFunctionPointerINTEL = 5600, - OpFunctionPointerCallINTEL = 5601, - OpAsmTargetINTEL = 5609, - OpAsmINTEL = 5610, - OpAsmCallINTEL = 5611, - OpAtomicFMinEXT = 5614, - OpAtomicFMaxEXT = 5615, - OpAssumeTrueKHR = 5630, - OpExpectKHR = 5631, - OpDecorateString = 5632, - OpDecorateStringGOOGLE = 5632, - OpMemberDecorateString = 5633, - OpMemberDecorateStringGOOGLE = 5633, - OpVmeImageINTEL = 5699, - OpTypeVmeImageINTEL = 5700, - OpTypeAvcImePayloadINTEL = 5701, - OpTypeAvcRefPayloadINTEL = 5702, - OpTypeAvcSicPayloadINTEL = 5703, - OpTypeAvcMcePayloadINTEL = 5704, - OpTypeAvcMceResultINTEL = 5705, - OpTypeAvcImeResultINTEL = 5706, - OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707, - OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708, - OpTypeAvcImeSingleReferenceStreaminINTEL = 5709, - OpTypeAvcImeDualReferenceStreaminINTEL = 5710, - OpTypeAvcRefResultINTEL = 5711, - OpTypeAvcSicResultINTEL = 5712, - OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713, - OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714, - OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715, - OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716, - OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717, - OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718, - OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719, - OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720, - OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721, - OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722, - OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723, - OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724, - OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725, - OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726, - OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727, - OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728, - OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729, - OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730, - OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731, - OpSubgroupAvcMceConvertToImePayloadINTEL = 5732, - OpSubgroupAvcMceConvertToImeResultINTEL = 5733, - OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734, - OpSubgroupAvcMceConvertToRefResultINTEL = 5735, - OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736, - OpSubgroupAvcMceConvertToSicResultINTEL = 5737, - OpSubgroupAvcMceGetMotionVectorsINTEL = 5738, - OpSubgroupAvcMceGetInterDistortionsINTEL = 5739, - OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740, - OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741, - OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742, - OpSubgroupAvcMceGetInterDirectionsINTEL = 5743, - OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744, - OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745, - OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746, - OpSubgroupAvcImeInitializeINTEL = 5747, - OpSubgroupAvcImeSetSingleReferenceINTEL = 5748, - OpSubgroupAvcImeSetDualReferenceINTEL = 5749, - OpSubgroupAvcImeRefWindowSizeINTEL = 5750, - OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751, - OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752, - OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753, - OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754, - OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755, - OpSubgroupAvcImeSetWeightedSadINTEL = 5756, - OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757, - OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758, - OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759, - OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760, - OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761, - OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762, - OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763, - OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764, - OpSubgroupAvcImeConvertToMceResultINTEL = 5765, - OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766, - OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767, - OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768, - OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769, - OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770, - OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771, - OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772, - OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773, - OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774, - OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775, - OpSubgroupAvcImeGetBorderReachedINTEL = 5776, - OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777, - OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778, - OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779, - OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780, - OpSubgroupAvcFmeInitializeINTEL = 5781, - OpSubgroupAvcBmeInitializeINTEL = 5782, - OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783, - OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784, - OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785, - OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786, - OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787, - OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788, - OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789, - OpSubgroupAvcRefConvertToMceResultINTEL = 5790, - OpSubgroupAvcSicInitializeINTEL = 5791, - OpSubgroupAvcSicConfigureSkcINTEL = 5792, - OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793, - OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794, - OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795, - OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796, - OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797, - OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798, - OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799, - OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800, - OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801, - OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802, - OpSubgroupAvcSicEvaluateIpeINTEL = 5803, - OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804, - OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805, - OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806, - OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807, - OpSubgroupAvcSicConvertToMceResultINTEL = 5808, - OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809, - OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810, - OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811, - OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812, - OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813, - OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814, - OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815, - OpSubgroupAvcSicGetInterRawSadsINTEL = 5816, - OpVariableLengthArrayINTEL = 5818, - OpSaveMemoryINTEL = 5819, - OpRestoreMemoryINTEL = 5820, - OpLoopControlINTEL = 5887, - OpPtrCastToCrossWorkgroupINTEL = 5934, - OpCrossWorkgroupCastToPtrINTEL = 5938, - OpReadPipeBlockingINTEL = 5946, - OpWritePipeBlockingINTEL = 5947, - OpFPGARegINTEL = 5949, - OpRayQueryGetRayTMinKHR = 6016, - OpRayQueryGetRayFlagsKHR = 6017, - OpRayQueryGetIntersectionTKHR = 6018, - OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019, - OpRayQueryGetIntersectionInstanceIdKHR = 6020, - OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021, - OpRayQueryGetIntersectionGeometryIndexKHR = 6022, - OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023, - OpRayQueryGetIntersectionBarycentricsKHR = 6024, - OpRayQueryGetIntersectionFrontFaceKHR = 6025, - OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026, - OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027, - OpRayQueryGetIntersectionObjectRayOriginKHR = 6028, - OpRayQueryGetWorldRayDirectionKHR = 6029, - OpRayQueryGetWorldRayOriginKHR = 6030, - OpRayQueryGetIntersectionObjectToWorldKHR = 6031, - OpRayQueryGetIntersectionWorldToObjectKHR = 6032, - OpAtomicFAddEXT = 6035, - OpTypeBufferSurfaceINTEL = 6086, - OpTypeStructContinuedINTEL = 6090, - OpConstantCompositeContinuedINTEL = 6091, - OpSpecConstantCompositeContinuedINTEL = 6092, - OpMax = 0x7fffffff, -}; - -#ifdef SPV_ENABLE_UTILITY_CODE -inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { - *hasResult = *hasResultType = false; - switch (opcode) { - default: /* unknown opcode */ break; - case OpNop: *hasResult = false; *hasResultType = false; break; - case OpUndef: *hasResult = true; *hasResultType = true; break; - case OpSourceContinued: *hasResult = false; *hasResultType = false; break; - case OpSource: *hasResult = false; *hasResultType = false; break; - case OpSourceExtension: *hasResult = false; *hasResultType = false; break; - case OpName: *hasResult = false; *hasResultType = false; break; - case OpMemberName: *hasResult = false; *hasResultType = false; break; - case OpString: *hasResult = true; *hasResultType = false; break; - case OpLine: *hasResult = false; *hasResultType = false; break; - case OpExtension: *hasResult = false; *hasResultType = false; break; - case OpExtInstImport: *hasResult = true; *hasResultType = false; break; - case OpExtInst: *hasResult = true; *hasResultType = true; break; - case OpMemoryModel: *hasResult = false; *hasResultType = false; break; - case OpEntryPoint: *hasResult = false; *hasResultType = false; break; - case OpExecutionMode: *hasResult = false; *hasResultType = false; break; - case OpCapability: *hasResult = false; *hasResultType = false; break; - case OpTypeVoid: *hasResult = true; *hasResultType = false; break; - case OpTypeBool: *hasResult = true; *hasResultType = false; break; - case OpTypeInt: *hasResult = true; *hasResultType = false; break; - case OpTypeFloat: *hasResult = true; *hasResultType = false; break; - case OpTypeVector: *hasResult = true; *hasResultType = false; break; - case OpTypeMatrix: *hasResult = true; *hasResultType = false; break; - case OpTypeImage: *hasResult = true; *hasResultType = false; break; - case OpTypeSampler: *hasResult = true; *hasResultType = false; break; - case OpTypeSampledImage: *hasResult = true; *hasResultType = false; break; - case OpTypeArray: *hasResult = true; *hasResultType = false; break; - case OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break; - case OpTypeStruct: *hasResult = true; *hasResultType = false; break; - case OpTypeOpaque: *hasResult = true; *hasResultType = false; break; - case OpTypePointer: *hasResult = true; *hasResultType = false; break; - case OpTypeFunction: *hasResult = true; *hasResultType = false; break; - case OpTypeEvent: *hasResult = true; *hasResultType = false; break; - case OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break; - case OpTypeReserveId: *hasResult = true; *hasResultType = false; break; - case OpTypeQueue: *hasResult = true; *hasResultType = false; break; - case OpTypePipe: *hasResult = true; *hasResultType = false; break; - case OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break; - case OpConstantTrue: *hasResult = true; *hasResultType = true; break; - case OpConstantFalse: *hasResult = true; *hasResultType = true; break; - case OpConstant: *hasResult = true; *hasResultType = true; break; - case OpConstantComposite: *hasResult = true; *hasResultType = true; break; - case OpConstantSampler: *hasResult = true; *hasResultType = true; break; - case OpConstantNull: *hasResult = true; *hasResultType = true; break; - case OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break; - case OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break; - case OpSpecConstant: *hasResult = true; *hasResultType = true; break; - case OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break; - case OpSpecConstantOp: *hasResult = true; *hasResultType = true; break; - case OpFunction: *hasResult = true; *hasResultType = true; break; - case OpFunctionParameter: *hasResult = true; *hasResultType = true; break; - case OpFunctionEnd: *hasResult = false; *hasResultType = false; break; - case OpFunctionCall: *hasResult = true; *hasResultType = true; break; - case OpVariable: *hasResult = true; *hasResultType = true; break; - case OpImageTexelPointer: *hasResult = true; *hasResultType = true; break; - case OpLoad: *hasResult = true; *hasResultType = true; break; - case OpStore: *hasResult = false; *hasResultType = false; break; - case OpCopyMemory: *hasResult = false; *hasResultType = false; break; - case OpCopyMemorySized: *hasResult = false; *hasResultType = false; break; - case OpAccessChain: *hasResult = true; *hasResultType = true; break; - case OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break; - case OpPtrAccessChain: *hasResult = true; *hasResultType = true; break; - case OpArrayLength: *hasResult = true; *hasResultType = true; break; - case OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break; - case OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break; - case OpDecorate: *hasResult = false; *hasResultType = false; break; - case OpMemberDecorate: *hasResult = false; *hasResultType = false; break; - case OpDecorationGroup: *hasResult = true; *hasResultType = false; break; - case OpGroupDecorate: *hasResult = false; *hasResultType = false; break; - case OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break; - case OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break; - case OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break; - case OpVectorShuffle: *hasResult = true; *hasResultType = true; break; - case OpCompositeConstruct: *hasResult = true; *hasResultType = true; break; - case OpCompositeExtract: *hasResult = true; *hasResultType = true; break; - case OpCompositeInsert: *hasResult = true; *hasResultType = true; break; - case OpCopyObject: *hasResult = true; *hasResultType = true; break; - case OpTranspose: *hasResult = true; *hasResultType = true; break; - case OpSampledImage: *hasResult = true; *hasResultType = true; break; - case OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageFetch: *hasResult = true; *hasResultType = true; break; - case OpImageGather: *hasResult = true; *hasResultType = true; break; - case OpImageDrefGather: *hasResult = true; *hasResultType = true; break; - case OpImageRead: *hasResult = true; *hasResultType = true; break; - case OpImageWrite: *hasResult = false; *hasResultType = false; break; - case OpImage: *hasResult = true; *hasResultType = true; break; - case OpImageQueryFormat: *hasResult = true; *hasResultType = true; break; - case OpImageQueryOrder: *hasResult = true; *hasResultType = true; break; - case OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break; - case OpImageQuerySize: *hasResult = true; *hasResultType = true; break; - case OpImageQueryLod: *hasResult = true; *hasResultType = true; break; - case OpImageQueryLevels: *hasResult = true; *hasResultType = true; break; - case OpImageQuerySamples: *hasResult = true; *hasResultType = true; break; - case OpConvertFToU: *hasResult = true; *hasResultType = true; break; - case OpConvertFToS: *hasResult = true; *hasResultType = true; break; - case OpConvertSToF: *hasResult = true; *hasResultType = true; break; - case OpConvertUToF: *hasResult = true; *hasResultType = true; break; - case OpUConvert: *hasResult = true; *hasResultType = true; break; - case OpSConvert: *hasResult = true; *hasResultType = true; break; - case OpFConvert: *hasResult = true; *hasResultType = true; break; - case OpQuantizeToF16: *hasResult = true; *hasResultType = true; break; - case OpConvertPtrToU: *hasResult = true; *hasResultType = true; break; - case OpSatConvertSToU: *hasResult = true; *hasResultType = true; break; - case OpSatConvertUToS: *hasResult = true; *hasResultType = true; break; - case OpConvertUToPtr: *hasResult = true; *hasResultType = true; break; - case OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break; - case OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break; - case OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break; - case OpBitcast: *hasResult = true; *hasResultType = true; break; - case OpSNegate: *hasResult = true; *hasResultType = true; break; - case OpFNegate: *hasResult = true; *hasResultType = true; break; - case OpIAdd: *hasResult = true; *hasResultType = true; break; - case OpFAdd: *hasResult = true; *hasResultType = true; break; - case OpISub: *hasResult = true; *hasResultType = true; break; - case OpFSub: *hasResult = true; *hasResultType = true; break; - case OpIMul: *hasResult = true; *hasResultType = true; break; - case OpFMul: *hasResult = true; *hasResultType = true; break; - case OpUDiv: *hasResult = true; *hasResultType = true; break; - case OpSDiv: *hasResult = true; *hasResultType = true; break; - case OpFDiv: *hasResult = true; *hasResultType = true; break; - case OpUMod: *hasResult = true; *hasResultType = true; break; - case OpSRem: *hasResult = true; *hasResultType = true; break; - case OpSMod: *hasResult = true; *hasResultType = true; break; - case OpFRem: *hasResult = true; *hasResultType = true; break; - case OpFMod: *hasResult = true; *hasResultType = true; break; - case OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break; - case OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break; - case OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break; - case OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break; - case OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break; - case OpOuterProduct: *hasResult = true; *hasResultType = true; break; - case OpDot: *hasResult = true; *hasResultType = true; break; - case OpIAddCarry: *hasResult = true; *hasResultType = true; break; - case OpISubBorrow: *hasResult = true; *hasResultType = true; break; - case OpUMulExtended: *hasResult = true; *hasResultType = true; break; - case OpSMulExtended: *hasResult = true; *hasResultType = true; break; - case OpAny: *hasResult = true; *hasResultType = true; break; - case OpAll: *hasResult = true; *hasResultType = true; break; - case OpIsNan: *hasResult = true; *hasResultType = true; break; - case OpIsInf: *hasResult = true; *hasResultType = true; break; - case OpIsFinite: *hasResult = true; *hasResultType = true; break; - case OpIsNormal: *hasResult = true; *hasResultType = true; break; - case OpSignBitSet: *hasResult = true; *hasResultType = true; break; - case OpLessOrGreater: *hasResult = true; *hasResultType = true; break; - case OpOrdered: *hasResult = true; *hasResultType = true; break; - case OpUnordered: *hasResult = true; *hasResultType = true; break; - case OpLogicalEqual: *hasResult = true; *hasResultType = true; break; - case OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break; - case OpLogicalOr: *hasResult = true; *hasResultType = true; break; - case OpLogicalAnd: *hasResult = true; *hasResultType = true; break; - case OpLogicalNot: *hasResult = true; *hasResultType = true; break; - case OpSelect: *hasResult = true; *hasResultType = true; break; - case OpIEqual: *hasResult = true; *hasResultType = true; break; - case OpINotEqual: *hasResult = true; *hasResultType = true; break; - case OpUGreaterThan: *hasResult = true; *hasResultType = true; break; - case OpSGreaterThan: *hasResult = true; *hasResultType = true; break; - case OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break; - case OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break; - case OpULessThan: *hasResult = true; *hasResultType = true; break; - case OpSLessThan: *hasResult = true; *hasResultType = true; break; - case OpULessThanEqual: *hasResult = true; *hasResultType = true; break; - case OpSLessThanEqual: *hasResult = true; *hasResultType = true; break; - case OpFOrdEqual: *hasResult = true; *hasResultType = true; break; - case OpFUnordEqual: *hasResult = true; *hasResultType = true; break; - case OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break; - case OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break; - case OpFOrdLessThan: *hasResult = true; *hasResultType = true; break; - case OpFUnordLessThan: *hasResult = true; *hasResultType = true; break; - case OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break; - case OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break; - case OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break; - case OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break; - case OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break; - case OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break; - case OpShiftRightLogical: *hasResult = true; *hasResultType = true; break; - case OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break; - case OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break; - case OpBitwiseOr: *hasResult = true; *hasResultType = true; break; - case OpBitwiseXor: *hasResult = true; *hasResultType = true; break; - case OpBitwiseAnd: *hasResult = true; *hasResultType = true; break; - case OpNot: *hasResult = true; *hasResultType = true; break; - case OpBitFieldInsert: *hasResult = true; *hasResultType = true; break; - case OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break; - case OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break; - case OpBitReverse: *hasResult = true; *hasResultType = true; break; - case OpBitCount: *hasResult = true; *hasResultType = true; break; - case OpDPdx: *hasResult = true; *hasResultType = true; break; - case OpDPdy: *hasResult = true; *hasResultType = true; break; - case OpFwidth: *hasResult = true; *hasResultType = true; break; - case OpDPdxFine: *hasResult = true; *hasResultType = true; break; - case OpDPdyFine: *hasResult = true; *hasResultType = true; break; - case OpFwidthFine: *hasResult = true; *hasResultType = true; break; - case OpDPdxCoarse: *hasResult = true; *hasResultType = true; break; - case OpDPdyCoarse: *hasResult = true; *hasResultType = true; break; - case OpFwidthCoarse: *hasResult = true; *hasResultType = true; break; - case OpEmitVertex: *hasResult = false; *hasResultType = false; break; - case OpEndPrimitive: *hasResult = false; *hasResultType = false; break; - case OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break; - case OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break; - case OpControlBarrier: *hasResult = false; *hasResultType = false; break; - case OpMemoryBarrier: *hasResult = false; *hasResultType = false; break; - case OpAtomicLoad: *hasResult = true; *hasResultType = true; break; - case OpAtomicStore: *hasResult = false; *hasResultType = false; break; - case OpAtomicExchange: *hasResult = true; *hasResultType = true; break; - case OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break; - case OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break; - case OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break; - case OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break; - case OpAtomicIAdd: *hasResult = true; *hasResultType = true; break; - case OpAtomicISub: *hasResult = true; *hasResultType = true; break; - case OpAtomicSMin: *hasResult = true; *hasResultType = true; break; - case OpAtomicUMin: *hasResult = true; *hasResultType = true; break; - case OpAtomicSMax: *hasResult = true; *hasResultType = true; break; - case OpAtomicUMax: *hasResult = true; *hasResultType = true; break; - case OpAtomicAnd: *hasResult = true; *hasResultType = true; break; - case OpAtomicOr: *hasResult = true; *hasResultType = true; break; - case OpAtomicXor: *hasResult = true; *hasResultType = true; break; - case OpPhi: *hasResult = true; *hasResultType = true; break; - case OpLoopMerge: *hasResult = false; *hasResultType = false; break; - case OpSelectionMerge: *hasResult = false; *hasResultType = false; break; - case OpLabel: *hasResult = true; *hasResultType = false; break; - case OpBranch: *hasResult = false; *hasResultType = false; break; - case OpBranchConditional: *hasResult = false; *hasResultType = false; break; - case OpSwitch: *hasResult = false; *hasResultType = false; break; - case OpKill: *hasResult = false; *hasResultType = false; break; - case OpReturn: *hasResult = false; *hasResultType = false; break; - case OpReturnValue: *hasResult = false; *hasResultType = false; break; - case OpUnreachable: *hasResult = false; *hasResultType = false; break; - case OpLifetimeStart: *hasResult = false; *hasResultType = false; break; - case OpLifetimeStop: *hasResult = false; *hasResultType = false; break; - case OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break; - case OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break; - case OpGroupAll: *hasResult = true; *hasResultType = true; break; - case OpGroupAny: *hasResult = true; *hasResultType = true; break; - case OpGroupBroadcast: *hasResult = true; *hasResultType = true; break; - case OpGroupIAdd: *hasResult = true; *hasResultType = true; break; - case OpGroupFAdd: *hasResult = true; *hasResultType = true; break; - case OpGroupFMin: *hasResult = true; *hasResultType = true; break; - case OpGroupUMin: *hasResult = true; *hasResultType = true; break; - case OpGroupSMin: *hasResult = true; *hasResultType = true; break; - case OpGroupFMax: *hasResult = true; *hasResultType = true; break; - case OpGroupUMax: *hasResult = true; *hasResultType = true; break; - case OpGroupSMax: *hasResult = true; *hasResultType = true; break; - case OpReadPipe: *hasResult = true; *hasResultType = true; break; - case OpWritePipe: *hasResult = true; *hasResultType = true; break; - case OpReservedReadPipe: *hasResult = true; *hasResultType = true; break; - case OpReservedWritePipe: *hasResult = true; *hasResultType = true; break; - case OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break; - case OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break; - case OpCommitReadPipe: *hasResult = false; *hasResultType = false; break; - case OpCommitWritePipe: *hasResult = false; *hasResultType = false; break; - case OpIsValidReserveId: *hasResult = true; *hasResultType = true; break; - case OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break; - case OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break; - case OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break; - case OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break; - case OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break; - case OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break; - case OpEnqueueMarker: *hasResult = true; *hasResultType = true; break; - case OpEnqueueKernel: *hasResult = true; *hasResultType = true; break; - case OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break; - case OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break; - case OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break; - case OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break; - case OpRetainEvent: *hasResult = false; *hasResultType = false; break; - case OpReleaseEvent: *hasResult = false; *hasResultType = false; break; - case OpCreateUserEvent: *hasResult = true; *hasResultType = true; break; - case OpIsValidEvent: *hasResult = true; *hasResultType = true; break; - case OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break; - case OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break; - case OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break; - case OpBuildNDRange: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseFetch: *hasResult = true; *hasResultType = true; break; - case OpImageSparseGather: *hasResult = true; *hasResultType = true; break; - case OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break; - case OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break; - case OpNoLine: *hasResult = false; *hasResultType = false; break; - case OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break; - case OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break; - case OpImageSparseRead: *hasResult = true; *hasResultType = true; break; - case OpSizeOf: *hasResult = true; *hasResultType = true; break; - case OpTypePipeStorage: *hasResult = true; *hasResultType = false; break; - case OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break; - case OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break; - case OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break; - case OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break; - case OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break; - case OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break; - case OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break; - case OpModuleProcessed: *hasResult = false; *hasResultType = false; break; - case OpExecutionModeId: *hasResult = false; *hasResultType = false; break; - case OpDecorateId: *hasResult = false; *hasResultType = false; break; - case OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break; - case OpCopyLogical: *hasResult = true; *hasResultType = true; break; - case OpPtrEqual: *hasResult = true; *hasResultType = true; break; - case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; - case OpPtrDiff: *hasResult = true; *hasResultType = true; break; - case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break; - case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break; - case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break; - case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break; - case OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break; - case OpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break; - case OpTerminateRayKHR: *hasResult = false; *hasResultType = false; break; - case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break; - case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break; - case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break; - case OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break; - case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break; - case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break; - case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break; - case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break; - case OpReadClockKHR: *hasResult = true; *hasResultType = true; break; - case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break; - case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break; - case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break; - case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break; - case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break; - case OpTraceNV: *hasResult = false; *hasResultType = false; break; - case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break; - case OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break; - case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break; - case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break; - case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break; - case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break; - case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break; - case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break; - case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break; - case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; - case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; - case OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break; - case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break; - case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; - case OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; - case OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; - case OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break; - case OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break; - case OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break; - case OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break; - case OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break; - case OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break; - case OpIAverageINTEL: *hasResult = true; *hasResultType = true; break; - case OpUAverageINTEL: *hasResult = true; *hasResultType = true; break; - case OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break; - case OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break; - case OpISubSatINTEL: *hasResult = true; *hasResultType = true; break; - case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break; - case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break; - case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break; - case OpConstFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break; - case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break; - case OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break; - case OpAsmINTEL: *hasResult = true; *hasResultType = true; break; - case OpAsmCallINTEL: *hasResult = true; *hasResultType = true; break; - case OpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break; - case OpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break; - case OpAssumeTrueKHR: *hasResult = false; *hasResultType = false; break; - case OpExpectKHR: *hasResult = true; *hasResultType = true; break; - case OpDecorateString: *hasResult = false; *hasResultType = false; break; - case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break; - case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break; - case OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break; - case OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break; - case OpVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break; - case OpSaveMemoryINTEL: *hasResult = true; *hasResultType = true; break; - case OpRestoreMemoryINTEL: *hasResult = false; *hasResultType = false; break; - case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break; - case OpPtrCastToCrossWorkgroupINTEL: *hasResult = true; *hasResultType = true; break; - case OpCrossWorkgroupCastToPtrINTEL: *hasResult = true; *hasResultType = true; break; - case OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break; - case OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break; - case OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break; - case OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break; - case OpTypeBufferSurfaceINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break; - case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break; - case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break; - } -} -#endif /* SPV_ENABLE_UTILITY_CODE */ - -// Overload operator| for mask bit combining - -inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); } -inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); } -inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); } -inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); } -inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); } -inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); } -inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } -inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } -inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); } -inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); } - -} // end namespace spv - -#endif // #ifndef spirv_HPP - +// Copyright (c) 2014-2020 The Khronos Group Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are 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 Materials.
+//
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
+//
+// THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+// This header is automatically generated by the same tool that creates
+// the Binary Section of the SPIR-V specification.
+
+// Enumeration tokens for SPIR-V, in various styles:
+// C, C++, C++11, JSON, Lua, Python, C#, D
+//
+// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+// - C# will use enum classes in the Specification class located in the "Spv" namespace,
+// e.g.: Spv.Specification.SourceLanguage.GLSL
+// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
+//
+// Some tokens act like mask values, which can be OR'd together,
+// while others are mutually exclusive. The mask-like ones have
+// "Mask" in their name, and a parallel enum that has the shift
+// amount (1 << x) for each corresponding enumerant.
+
+#ifndef spirv_HPP
+#define spirv_HPP
+
+namespace spv {
+
+typedef unsigned int Id;
+
+#define SPV_VERSION 0x10600
+#define SPV_REVISION 1
+
+static const unsigned int MagicNumber = 0x07230203;
+static const unsigned int Version = 0x00010600;
+static const unsigned int Revision = 1;
+static const unsigned int OpCodeMask = 0xffff;
+static const unsigned int WordCountShift = 16;
+
+enum SourceLanguage {
+ SourceLanguageUnknown = 0,
+ SourceLanguageESSL = 1,
+ SourceLanguageGLSL = 2,
+ SourceLanguageOpenCL_C = 3,
+ SourceLanguageOpenCL_CPP = 4,
+ SourceLanguageHLSL = 5,
+ SourceLanguageCPP_for_OpenCL = 6,
+ SourceLanguageMax = 0x7fffffff,
+};
+
+enum ExecutionModel {
+ ExecutionModelVertex = 0,
+ ExecutionModelTessellationControl = 1,
+ ExecutionModelTessellationEvaluation = 2,
+ ExecutionModelGeometry = 3,
+ ExecutionModelFragment = 4,
+ ExecutionModelGLCompute = 5,
+ ExecutionModelKernel = 6,
+ ExecutionModelTaskNV = 5267,
+ ExecutionModelMeshNV = 5268,
+ ExecutionModelRayGenerationKHR = 5313,
+ ExecutionModelRayGenerationNV = 5313,
+ ExecutionModelIntersectionKHR = 5314,
+ ExecutionModelIntersectionNV = 5314,
+ ExecutionModelAnyHitKHR = 5315,
+ ExecutionModelAnyHitNV = 5315,
+ ExecutionModelClosestHitKHR = 5316,
+ ExecutionModelClosestHitNV = 5316,
+ ExecutionModelMissKHR = 5317,
+ ExecutionModelMissNV = 5317,
+ ExecutionModelCallableKHR = 5318,
+ ExecutionModelCallableNV = 5318,
+ ExecutionModelMax = 0x7fffffff,
+};
+
+enum AddressingModel {
+ AddressingModelLogical = 0,
+ AddressingModelPhysical32 = 1,
+ AddressingModelPhysical64 = 2,
+ AddressingModelPhysicalStorageBuffer64 = 5348,
+ AddressingModelPhysicalStorageBuffer64EXT = 5348,
+ AddressingModelMax = 0x7fffffff,
+};
+
+enum MemoryModel {
+ MemoryModelSimple = 0,
+ MemoryModelGLSL450 = 1,
+ MemoryModelOpenCL = 2,
+ MemoryModelVulkan = 3,
+ MemoryModelVulkanKHR = 3,
+ MemoryModelMax = 0x7fffffff,
+};
+
+enum ExecutionMode {
+ ExecutionModeInvocations = 0,
+ ExecutionModeSpacingEqual = 1,
+ ExecutionModeSpacingFractionalEven = 2,
+ ExecutionModeSpacingFractionalOdd = 3,
+ ExecutionModeVertexOrderCw = 4,
+ ExecutionModeVertexOrderCcw = 5,
+ ExecutionModePixelCenterInteger = 6,
+ ExecutionModeOriginUpperLeft = 7,
+ ExecutionModeOriginLowerLeft = 8,
+ ExecutionModeEarlyFragmentTests = 9,
+ ExecutionModePointMode = 10,
+ ExecutionModeXfb = 11,
+ ExecutionModeDepthReplacing = 12,
+ ExecutionModeDepthGreater = 14,
+ ExecutionModeDepthLess = 15,
+ ExecutionModeDepthUnchanged = 16,
+ ExecutionModeLocalSize = 17,
+ ExecutionModeLocalSizeHint = 18,
+ ExecutionModeInputPoints = 19,
+ ExecutionModeInputLines = 20,
+ ExecutionModeInputLinesAdjacency = 21,
+ ExecutionModeTriangles = 22,
+ ExecutionModeInputTrianglesAdjacency = 23,
+ ExecutionModeQuads = 24,
+ ExecutionModeIsolines = 25,
+ ExecutionModeOutputVertices = 26,
+ ExecutionModeOutputPoints = 27,
+ ExecutionModeOutputLineStrip = 28,
+ ExecutionModeOutputTriangleStrip = 29,
+ ExecutionModeVecTypeHint = 30,
+ ExecutionModeContractionOff = 31,
+ ExecutionModeInitializer = 33,
+ ExecutionModeFinalizer = 34,
+ ExecutionModeSubgroupSize = 35,
+ ExecutionModeSubgroupsPerWorkgroup = 36,
+ ExecutionModeSubgroupsPerWorkgroupId = 37,
+ ExecutionModeLocalSizeId = 38,
+ ExecutionModeLocalSizeHintId = 39,
+ ExecutionModeSubgroupUniformControlFlowKHR = 4421,
+ ExecutionModePostDepthCoverage = 4446,
+ ExecutionModeDenormPreserve = 4459,
+ ExecutionModeDenormFlushToZero = 4460,
+ ExecutionModeSignedZeroInfNanPreserve = 4461,
+ ExecutionModeRoundingModeRTE = 4462,
+ ExecutionModeRoundingModeRTZ = 4463,
+ ExecutionModeStencilRefReplacingEXT = 5027,
+ ExecutionModeOutputLinesNV = 5269,
+ ExecutionModeOutputPrimitivesNV = 5270,
+ ExecutionModeDerivativeGroupQuadsNV = 5289,
+ ExecutionModeDerivativeGroupLinearNV = 5290,
+ ExecutionModeOutputTrianglesNV = 5298,
+ ExecutionModePixelInterlockOrderedEXT = 5366,
+ ExecutionModePixelInterlockUnorderedEXT = 5367,
+ ExecutionModeSampleInterlockOrderedEXT = 5368,
+ ExecutionModeSampleInterlockUnorderedEXT = 5369,
+ ExecutionModeShadingRateInterlockOrderedEXT = 5370,
+ ExecutionModeShadingRateInterlockUnorderedEXT = 5371,
+ ExecutionModeSharedLocalMemorySizeINTEL = 5618,
+ ExecutionModeRoundingModeRTPINTEL = 5620,
+ ExecutionModeRoundingModeRTNINTEL = 5621,
+ ExecutionModeFloatingPointModeALTINTEL = 5622,
+ ExecutionModeFloatingPointModeIEEEINTEL = 5623,
+ ExecutionModeMaxWorkgroupSizeINTEL = 5893,
+ ExecutionModeMaxWorkDimINTEL = 5894,
+ ExecutionModeNoGlobalOffsetINTEL = 5895,
+ ExecutionModeNumSIMDWorkitemsINTEL = 5896,
+ ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,
+ ExecutionModeMax = 0x7fffffff,
+};
+
+enum StorageClass {
+ StorageClassUniformConstant = 0,
+ StorageClassInput = 1,
+ StorageClassUniform = 2,
+ StorageClassOutput = 3,
+ StorageClassWorkgroup = 4,
+ StorageClassCrossWorkgroup = 5,
+ StorageClassPrivate = 6,
+ StorageClassFunction = 7,
+ StorageClassGeneric = 8,
+ StorageClassPushConstant = 9,
+ StorageClassAtomicCounter = 10,
+ StorageClassImage = 11,
+ StorageClassStorageBuffer = 12,
+ StorageClassCallableDataKHR = 5328,
+ StorageClassCallableDataNV = 5328,
+ StorageClassIncomingCallableDataKHR = 5329,
+ StorageClassIncomingCallableDataNV = 5329,
+ StorageClassRayPayloadKHR = 5338,
+ StorageClassRayPayloadNV = 5338,
+ StorageClassHitAttributeKHR = 5339,
+ StorageClassHitAttributeNV = 5339,
+ StorageClassIncomingRayPayloadKHR = 5342,
+ StorageClassIncomingRayPayloadNV = 5342,
+ StorageClassShaderRecordBufferKHR = 5343,
+ StorageClassShaderRecordBufferNV = 5343,
+ StorageClassPhysicalStorageBuffer = 5349,
+ StorageClassPhysicalStorageBufferEXT = 5349,
+ StorageClassCodeSectionINTEL = 5605,
+ StorageClassDeviceOnlyINTEL = 5936,
+ StorageClassHostOnlyINTEL = 5937,
+ StorageClassMax = 0x7fffffff,
+};
+
+enum Dim {
+ Dim1D = 0,
+ Dim2D = 1,
+ Dim3D = 2,
+ DimCube = 3,
+ DimRect = 4,
+ DimBuffer = 5,
+ DimSubpassData = 6,
+ DimMax = 0x7fffffff,
+};
+
+enum SamplerAddressingMode {
+ SamplerAddressingModeNone = 0,
+ SamplerAddressingModeClampToEdge = 1,
+ SamplerAddressingModeClamp = 2,
+ SamplerAddressingModeRepeat = 3,
+ SamplerAddressingModeRepeatMirrored = 4,
+ SamplerAddressingModeMax = 0x7fffffff,
+};
+
+enum SamplerFilterMode {
+ SamplerFilterModeNearest = 0,
+ SamplerFilterModeLinear = 1,
+ SamplerFilterModeMax = 0x7fffffff,
+};
+
+enum ImageFormat {
+ ImageFormatUnknown = 0,
+ ImageFormatRgba32f = 1,
+ ImageFormatRgba16f = 2,
+ ImageFormatR32f = 3,
+ ImageFormatRgba8 = 4,
+ ImageFormatRgba8Snorm = 5,
+ ImageFormatRg32f = 6,
+ ImageFormatRg16f = 7,
+ ImageFormatR11fG11fB10f = 8,
+ ImageFormatR16f = 9,
+ ImageFormatRgba16 = 10,
+ ImageFormatRgb10A2 = 11,
+ ImageFormatRg16 = 12,
+ ImageFormatRg8 = 13,
+ ImageFormatR16 = 14,
+ ImageFormatR8 = 15,
+ ImageFormatRgba16Snorm = 16,
+ ImageFormatRg16Snorm = 17,
+ ImageFormatRg8Snorm = 18,
+ ImageFormatR16Snorm = 19,
+ ImageFormatR8Snorm = 20,
+ ImageFormatRgba32i = 21,
+ ImageFormatRgba16i = 22,
+ ImageFormatRgba8i = 23,
+ ImageFormatR32i = 24,
+ ImageFormatRg32i = 25,
+ ImageFormatRg16i = 26,
+ ImageFormatRg8i = 27,
+ ImageFormatR16i = 28,
+ ImageFormatR8i = 29,
+ ImageFormatRgba32ui = 30,
+ ImageFormatRgba16ui = 31,
+ ImageFormatRgba8ui = 32,
+ ImageFormatR32ui = 33,
+ ImageFormatRgb10a2ui = 34,
+ ImageFormatRg32ui = 35,
+ ImageFormatRg16ui = 36,
+ ImageFormatRg8ui = 37,
+ ImageFormatR16ui = 38,
+ ImageFormatR8ui = 39,
+ ImageFormatR64ui = 40,
+ ImageFormatR64i = 41,
+ ImageFormatMax = 0x7fffffff,
+};
+
+enum ImageChannelOrder {
+ ImageChannelOrderR = 0,
+ ImageChannelOrderA = 1,
+ ImageChannelOrderRG = 2,
+ ImageChannelOrderRA = 3,
+ ImageChannelOrderRGB = 4,
+ ImageChannelOrderRGBA = 5,
+ ImageChannelOrderBGRA = 6,
+ ImageChannelOrderARGB = 7,
+ ImageChannelOrderIntensity = 8,
+ ImageChannelOrderLuminance = 9,
+ ImageChannelOrderRx = 10,
+ ImageChannelOrderRGx = 11,
+ ImageChannelOrderRGBx = 12,
+ ImageChannelOrderDepth = 13,
+ ImageChannelOrderDepthStencil = 14,
+ ImageChannelOrdersRGB = 15,
+ ImageChannelOrdersRGBx = 16,
+ ImageChannelOrdersRGBA = 17,
+ ImageChannelOrdersBGRA = 18,
+ ImageChannelOrderABGR = 19,
+ ImageChannelOrderMax = 0x7fffffff,
+};
+
+enum ImageChannelDataType {
+ ImageChannelDataTypeSnormInt8 = 0,
+ ImageChannelDataTypeSnormInt16 = 1,
+ ImageChannelDataTypeUnormInt8 = 2,
+ ImageChannelDataTypeUnormInt16 = 3,
+ ImageChannelDataTypeUnormShort565 = 4,
+ ImageChannelDataTypeUnormShort555 = 5,
+ ImageChannelDataTypeUnormInt101010 = 6,
+ ImageChannelDataTypeSignedInt8 = 7,
+ ImageChannelDataTypeSignedInt16 = 8,
+ ImageChannelDataTypeSignedInt32 = 9,
+ ImageChannelDataTypeUnsignedInt8 = 10,
+ ImageChannelDataTypeUnsignedInt16 = 11,
+ ImageChannelDataTypeUnsignedInt32 = 12,
+ ImageChannelDataTypeHalfFloat = 13,
+ ImageChannelDataTypeFloat = 14,
+ ImageChannelDataTypeUnormInt24 = 15,
+ ImageChannelDataTypeUnormInt101010_2 = 16,
+ ImageChannelDataTypeMax = 0x7fffffff,
+};
+
+enum ImageOperandsShift {
+ ImageOperandsBiasShift = 0,
+ ImageOperandsLodShift = 1,
+ ImageOperandsGradShift = 2,
+ ImageOperandsConstOffsetShift = 3,
+ ImageOperandsOffsetShift = 4,
+ ImageOperandsConstOffsetsShift = 5,
+ ImageOperandsSampleShift = 6,
+ ImageOperandsMinLodShift = 7,
+ ImageOperandsMakeTexelAvailableShift = 8,
+ ImageOperandsMakeTexelAvailableKHRShift = 8,
+ ImageOperandsMakeTexelVisibleShift = 9,
+ ImageOperandsMakeTexelVisibleKHRShift = 9,
+ ImageOperandsNonPrivateTexelShift = 10,
+ ImageOperandsNonPrivateTexelKHRShift = 10,
+ ImageOperandsVolatileTexelShift = 11,
+ ImageOperandsVolatileTexelKHRShift = 11,
+ ImageOperandsSignExtendShift = 12,
+ ImageOperandsZeroExtendShift = 13,
+ ImageOperandsNontemporalShift = 14,
+ ImageOperandsOffsetsShift = 16,
+ ImageOperandsMax = 0x7fffffff,
+};
+
+enum ImageOperandsMask {
+ ImageOperandsMaskNone = 0,
+ ImageOperandsBiasMask = 0x00000001,
+ ImageOperandsLodMask = 0x00000002,
+ ImageOperandsGradMask = 0x00000004,
+ ImageOperandsConstOffsetMask = 0x00000008,
+ ImageOperandsOffsetMask = 0x00000010,
+ ImageOperandsConstOffsetsMask = 0x00000020,
+ ImageOperandsSampleMask = 0x00000040,
+ ImageOperandsMinLodMask = 0x00000080,
+ ImageOperandsMakeTexelAvailableMask = 0x00000100,
+ ImageOperandsMakeTexelAvailableKHRMask = 0x00000100,
+ ImageOperandsMakeTexelVisibleMask = 0x00000200,
+ ImageOperandsMakeTexelVisibleKHRMask = 0x00000200,
+ ImageOperandsNonPrivateTexelMask = 0x00000400,
+ ImageOperandsNonPrivateTexelKHRMask = 0x00000400,
+ ImageOperandsVolatileTexelMask = 0x00000800,
+ ImageOperandsVolatileTexelKHRMask = 0x00000800,
+ ImageOperandsSignExtendMask = 0x00001000,
+ ImageOperandsZeroExtendMask = 0x00002000,
+ ImageOperandsNontemporalMask = 0x00004000,
+ ImageOperandsOffsetsMask = 0x00010000,
+};
+
+enum FPFastMathModeShift {
+ FPFastMathModeNotNaNShift = 0,
+ FPFastMathModeNotInfShift = 1,
+ FPFastMathModeNSZShift = 2,
+ FPFastMathModeAllowRecipShift = 3,
+ FPFastMathModeFastShift = 4,
+ FPFastMathModeAllowContractFastINTELShift = 16,
+ FPFastMathModeAllowReassocINTELShift = 17,
+ FPFastMathModeMax = 0x7fffffff,
+};
+
+enum FPFastMathModeMask {
+ FPFastMathModeMaskNone = 0,
+ FPFastMathModeNotNaNMask = 0x00000001,
+ FPFastMathModeNotInfMask = 0x00000002,
+ FPFastMathModeNSZMask = 0x00000004,
+ FPFastMathModeAllowRecipMask = 0x00000008,
+ FPFastMathModeFastMask = 0x00000010,
+ FPFastMathModeAllowContractFastINTELMask = 0x00010000,
+ FPFastMathModeAllowReassocINTELMask = 0x00020000,
+};
+
+enum FPRoundingMode {
+ FPRoundingModeRTE = 0,
+ FPRoundingModeRTZ = 1,
+ FPRoundingModeRTP = 2,
+ FPRoundingModeRTN = 3,
+ FPRoundingModeMax = 0x7fffffff,
+};
+
+enum LinkageType {
+ LinkageTypeExport = 0,
+ LinkageTypeImport = 1,
+ LinkageTypeLinkOnceODR = 2,
+ LinkageTypeMax = 0x7fffffff,
+};
+
+enum AccessQualifier {
+ AccessQualifierReadOnly = 0,
+ AccessQualifierWriteOnly = 1,
+ AccessQualifierReadWrite = 2,
+ AccessQualifierMax = 0x7fffffff,
+};
+
+enum FunctionParameterAttribute {
+ FunctionParameterAttributeZext = 0,
+ FunctionParameterAttributeSext = 1,
+ FunctionParameterAttributeByVal = 2,
+ FunctionParameterAttributeSret = 3,
+ FunctionParameterAttributeNoAlias = 4,
+ FunctionParameterAttributeNoCapture = 5,
+ FunctionParameterAttributeNoWrite = 6,
+ FunctionParameterAttributeNoReadWrite = 7,
+ FunctionParameterAttributeMax = 0x7fffffff,
+};
+
+enum Decoration {
+ DecorationRelaxedPrecision = 0,
+ DecorationSpecId = 1,
+ DecorationBlock = 2,
+ DecorationBufferBlock = 3,
+ DecorationRowMajor = 4,
+ DecorationColMajor = 5,
+ DecorationArrayStride = 6,
+ DecorationMatrixStride = 7,
+ DecorationGLSLShared = 8,
+ DecorationGLSLPacked = 9,
+ DecorationCPacked = 10,
+ DecorationBuiltIn = 11,
+ DecorationNoPerspective = 13,
+ DecorationFlat = 14,
+ DecorationPatch = 15,
+ DecorationCentroid = 16,
+ DecorationSample = 17,
+ DecorationInvariant = 18,
+ DecorationRestrict = 19,
+ DecorationAliased = 20,
+ DecorationVolatile = 21,
+ DecorationConstant = 22,
+ DecorationCoherent = 23,
+ DecorationNonWritable = 24,
+ DecorationNonReadable = 25,
+ DecorationUniform = 26,
+ DecorationUniformId = 27,
+ DecorationSaturatedConversion = 28,
+ DecorationStream = 29,
+ DecorationLocation = 30,
+ DecorationComponent = 31,
+ DecorationIndex = 32,
+ DecorationBinding = 33,
+ DecorationDescriptorSet = 34,
+ DecorationOffset = 35,
+ DecorationXfbBuffer = 36,
+ DecorationXfbStride = 37,
+ DecorationFuncParamAttr = 38,
+ DecorationFPRoundingMode = 39,
+ DecorationFPFastMathMode = 40,
+ DecorationLinkageAttributes = 41,
+ DecorationNoContraction = 42,
+ DecorationInputAttachmentIndex = 43,
+ DecorationAlignment = 44,
+ DecorationMaxByteOffset = 45,
+ DecorationAlignmentId = 46,
+ DecorationMaxByteOffsetId = 47,
+ DecorationNoSignedWrap = 4469,
+ DecorationNoUnsignedWrap = 4470,
+ DecorationExplicitInterpAMD = 4999,
+ DecorationOverrideCoverageNV = 5248,
+ DecorationPassthroughNV = 5250,
+ DecorationViewportRelativeNV = 5252,
+ DecorationSecondaryViewportRelativeNV = 5256,
+ DecorationPerPrimitiveNV = 5271,
+ DecorationPerViewNV = 5272,
+ DecorationPerTaskNV = 5273,
+ DecorationPerVertexKHR = 5285,
+ DecorationPerVertexNV = 5285,
+ DecorationNonUniform = 5300,
+ DecorationNonUniformEXT = 5300,
+ DecorationRestrictPointer = 5355,
+ DecorationRestrictPointerEXT = 5355,
+ DecorationAliasedPointer = 5356,
+ DecorationAliasedPointerEXT = 5356,
+ DecorationBindlessSamplerNV = 5398,
+ DecorationBindlessImageNV = 5399,
+ DecorationBoundSamplerNV = 5400,
+ DecorationBoundImageNV = 5401,
+ DecorationSIMTCallINTEL = 5599,
+ DecorationReferencedIndirectlyINTEL = 5602,
+ DecorationClobberINTEL = 5607,
+ DecorationSideEffectsINTEL = 5608,
+ DecorationVectorComputeVariableINTEL = 5624,
+ DecorationFuncParamIOKindINTEL = 5625,
+ DecorationVectorComputeFunctionINTEL = 5626,
+ DecorationStackCallINTEL = 5627,
+ DecorationGlobalVariableOffsetINTEL = 5628,
+ DecorationCounterBuffer = 5634,
+ DecorationHlslCounterBufferGOOGLE = 5634,
+ DecorationHlslSemanticGOOGLE = 5635,
+ DecorationUserSemantic = 5635,
+ DecorationUserTypeGOOGLE = 5636,
+ DecorationFunctionRoundingModeINTEL = 5822,
+ DecorationFunctionDenormModeINTEL = 5823,
+ DecorationRegisterINTEL = 5825,
+ DecorationMemoryINTEL = 5826,
+ DecorationNumbanksINTEL = 5827,
+ DecorationBankwidthINTEL = 5828,
+ DecorationMaxPrivateCopiesINTEL = 5829,
+ DecorationSinglepumpINTEL = 5830,
+ DecorationDoublepumpINTEL = 5831,
+ DecorationMaxReplicatesINTEL = 5832,
+ DecorationSimpleDualPortINTEL = 5833,
+ DecorationMergeINTEL = 5834,
+ DecorationBankBitsINTEL = 5835,
+ DecorationForcePow2DepthINTEL = 5836,
+ DecorationBurstCoalesceINTEL = 5899,
+ DecorationCacheSizeINTEL = 5900,
+ DecorationDontStaticallyCoalesceINTEL = 5901,
+ DecorationPrefetchINTEL = 5902,
+ DecorationStallEnableINTEL = 5905,
+ DecorationFuseLoopsInFunctionINTEL = 5907,
+ DecorationBufferLocationINTEL = 5921,
+ DecorationIOPipeStorageINTEL = 5944,
+ DecorationFunctionFloatingPointModeINTEL = 6080,
+ DecorationSingleElementVectorINTEL = 6085,
+ DecorationVectorComputeCallableFunctionINTEL = 6087,
+ DecorationMediaBlockIOINTEL = 6140,
+ DecorationMax = 0x7fffffff,
+};
+
+enum BuiltIn {
+ BuiltInPosition = 0,
+ BuiltInPointSize = 1,
+ BuiltInClipDistance = 3,
+ BuiltInCullDistance = 4,
+ BuiltInVertexId = 5,
+ BuiltInInstanceId = 6,
+ BuiltInPrimitiveId = 7,
+ BuiltInInvocationId = 8,
+ BuiltInLayer = 9,
+ BuiltInViewportIndex = 10,
+ BuiltInTessLevelOuter = 11,
+ BuiltInTessLevelInner = 12,
+ BuiltInTessCoord = 13,
+ BuiltInPatchVertices = 14,
+ BuiltInFragCoord = 15,
+ BuiltInPointCoord = 16,
+ BuiltInFrontFacing = 17,
+ BuiltInSampleId = 18,
+ BuiltInSamplePosition = 19,
+ BuiltInSampleMask = 20,
+ BuiltInFragDepth = 22,
+ BuiltInHelperInvocation = 23,
+ BuiltInNumWorkgroups = 24,
+ BuiltInWorkgroupSize = 25,
+ BuiltInWorkgroupId = 26,
+ BuiltInLocalInvocationId = 27,
+ BuiltInGlobalInvocationId = 28,
+ BuiltInLocalInvocationIndex = 29,
+ BuiltInWorkDim = 30,
+ BuiltInGlobalSize = 31,
+ BuiltInEnqueuedWorkgroupSize = 32,
+ BuiltInGlobalOffset = 33,
+ BuiltInGlobalLinearId = 34,
+ BuiltInSubgroupSize = 36,
+ BuiltInSubgroupMaxSize = 37,
+ BuiltInNumSubgroups = 38,
+ BuiltInNumEnqueuedSubgroups = 39,
+ BuiltInSubgroupId = 40,
+ BuiltInSubgroupLocalInvocationId = 41,
+ BuiltInVertexIndex = 42,
+ BuiltInInstanceIndex = 43,
+ BuiltInSubgroupEqMask = 4416,
+ BuiltInSubgroupEqMaskKHR = 4416,
+ BuiltInSubgroupGeMask = 4417,
+ BuiltInSubgroupGeMaskKHR = 4417,
+ BuiltInSubgroupGtMask = 4418,
+ BuiltInSubgroupGtMaskKHR = 4418,
+ BuiltInSubgroupLeMask = 4419,
+ BuiltInSubgroupLeMaskKHR = 4419,
+ BuiltInSubgroupLtMask = 4420,
+ BuiltInSubgroupLtMaskKHR = 4420,
+ BuiltInBaseVertex = 4424,
+ BuiltInBaseInstance = 4425,
+ BuiltInDrawIndex = 4426,
+ BuiltInPrimitiveShadingRateKHR = 4432,
+ BuiltInDeviceIndex = 4438,
+ BuiltInViewIndex = 4440,
+ BuiltInShadingRateKHR = 4444,
+ BuiltInBaryCoordNoPerspAMD = 4992,
+ BuiltInBaryCoordNoPerspCentroidAMD = 4993,
+ BuiltInBaryCoordNoPerspSampleAMD = 4994,
+ BuiltInBaryCoordSmoothAMD = 4995,
+ BuiltInBaryCoordSmoothCentroidAMD = 4996,
+ BuiltInBaryCoordSmoothSampleAMD = 4997,
+ BuiltInBaryCoordPullModelAMD = 4998,
+ BuiltInFragStencilRefEXT = 5014,
+ BuiltInViewportMaskNV = 5253,
+ BuiltInSecondaryPositionNV = 5257,
+ BuiltInSecondaryViewportMaskNV = 5258,
+ BuiltInPositionPerViewNV = 5261,
+ BuiltInViewportMaskPerViewNV = 5262,
+ BuiltInFullyCoveredEXT = 5264,
+ BuiltInTaskCountNV = 5274,
+ BuiltInPrimitiveCountNV = 5275,
+ BuiltInPrimitiveIndicesNV = 5276,
+ BuiltInClipDistancePerViewNV = 5277,
+ BuiltInCullDistancePerViewNV = 5278,
+ BuiltInLayerPerViewNV = 5279,
+ BuiltInMeshViewCountNV = 5280,
+ BuiltInMeshViewIndicesNV = 5281,
+ BuiltInBaryCoordKHR = 5286,
+ BuiltInBaryCoordNV = 5286,
+ BuiltInBaryCoordNoPerspKHR = 5287,
+ BuiltInBaryCoordNoPerspNV = 5287,
+ BuiltInFragSizeEXT = 5292,
+ BuiltInFragmentSizeNV = 5292,
+ BuiltInFragInvocationCountEXT = 5293,
+ BuiltInInvocationsPerPixelNV = 5293,
+ BuiltInLaunchIdKHR = 5319,
+ BuiltInLaunchIdNV = 5319,
+ BuiltInLaunchSizeKHR = 5320,
+ BuiltInLaunchSizeNV = 5320,
+ BuiltInWorldRayOriginKHR = 5321,
+ BuiltInWorldRayOriginNV = 5321,
+ BuiltInWorldRayDirectionKHR = 5322,
+ BuiltInWorldRayDirectionNV = 5322,
+ BuiltInObjectRayOriginKHR = 5323,
+ BuiltInObjectRayOriginNV = 5323,
+ BuiltInObjectRayDirectionKHR = 5324,
+ BuiltInObjectRayDirectionNV = 5324,
+ BuiltInRayTminKHR = 5325,
+ BuiltInRayTminNV = 5325,
+ BuiltInRayTmaxKHR = 5326,
+ BuiltInRayTmaxNV = 5326,
+ BuiltInInstanceCustomIndexKHR = 5327,
+ BuiltInInstanceCustomIndexNV = 5327,
+ BuiltInObjectToWorldKHR = 5330,
+ BuiltInObjectToWorldNV = 5330,
+ BuiltInWorldToObjectKHR = 5331,
+ BuiltInWorldToObjectNV = 5331,
+ BuiltInHitTNV = 5332,
+ BuiltInHitKindKHR = 5333,
+ BuiltInHitKindNV = 5333,
+ BuiltInCurrentRayTimeNV = 5334,
+ BuiltInIncomingRayFlagsKHR = 5351,
+ BuiltInIncomingRayFlagsNV = 5351,
+ BuiltInRayGeometryIndexKHR = 5352,
+ BuiltInWarpsPerSMNV = 5374,
+ BuiltInSMCountNV = 5375,
+ BuiltInWarpIDNV = 5376,
+ BuiltInSMIDNV = 5377,
+ BuiltInMax = 0x7fffffff,
+};
+
+enum SelectionControlShift {
+ SelectionControlFlattenShift = 0,
+ SelectionControlDontFlattenShift = 1,
+ SelectionControlMax = 0x7fffffff,
+};
+
+enum SelectionControlMask {
+ SelectionControlMaskNone = 0,
+ SelectionControlFlattenMask = 0x00000001,
+ SelectionControlDontFlattenMask = 0x00000002,
+};
+
+enum LoopControlShift {
+ LoopControlUnrollShift = 0,
+ LoopControlDontUnrollShift = 1,
+ LoopControlDependencyInfiniteShift = 2,
+ LoopControlDependencyLengthShift = 3,
+ LoopControlMinIterationsShift = 4,
+ LoopControlMaxIterationsShift = 5,
+ LoopControlIterationMultipleShift = 6,
+ LoopControlPeelCountShift = 7,
+ LoopControlPartialCountShift = 8,
+ LoopControlInitiationIntervalINTELShift = 16,
+ LoopControlMaxConcurrencyINTELShift = 17,
+ LoopControlDependencyArrayINTELShift = 18,
+ LoopControlPipelineEnableINTELShift = 19,
+ LoopControlLoopCoalesceINTELShift = 20,
+ LoopControlMaxInterleavingINTELShift = 21,
+ LoopControlSpeculatedIterationsINTELShift = 22,
+ LoopControlNoFusionINTELShift = 23,
+ LoopControlMax = 0x7fffffff,
+};
+
+enum LoopControlMask {
+ LoopControlMaskNone = 0,
+ LoopControlUnrollMask = 0x00000001,
+ LoopControlDontUnrollMask = 0x00000002,
+ LoopControlDependencyInfiniteMask = 0x00000004,
+ LoopControlDependencyLengthMask = 0x00000008,
+ LoopControlMinIterationsMask = 0x00000010,
+ LoopControlMaxIterationsMask = 0x00000020,
+ LoopControlIterationMultipleMask = 0x00000040,
+ LoopControlPeelCountMask = 0x00000080,
+ LoopControlPartialCountMask = 0x00000100,
+ LoopControlInitiationIntervalINTELMask = 0x00010000,
+ LoopControlMaxConcurrencyINTELMask = 0x00020000,
+ LoopControlDependencyArrayINTELMask = 0x00040000,
+ LoopControlPipelineEnableINTELMask = 0x00080000,
+ LoopControlLoopCoalesceINTELMask = 0x00100000,
+ LoopControlMaxInterleavingINTELMask = 0x00200000,
+ LoopControlSpeculatedIterationsINTELMask = 0x00400000,
+ LoopControlNoFusionINTELMask = 0x00800000,
+};
+
+enum FunctionControlShift {
+ FunctionControlInlineShift = 0,
+ FunctionControlDontInlineShift = 1,
+ FunctionControlPureShift = 2,
+ FunctionControlConstShift = 3,
+ FunctionControlOptNoneINTELShift = 16,
+ FunctionControlMax = 0x7fffffff,
+};
+
+enum FunctionControlMask {
+ FunctionControlMaskNone = 0,
+ FunctionControlInlineMask = 0x00000001,
+ FunctionControlDontInlineMask = 0x00000002,
+ FunctionControlPureMask = 0x00000004,
+ FunctionControlConstMask = 0x00000008,
+ FunctionControlOptNoneINTELMask = 0x00010000,
+};
+
+enum MemorySemanticsShift {
+ MemorySemanticsAcquireShift = 1,
+ MemorySemanticsReleaseShift = 2,
+ MemorySemanticsAcquireReleaseShift = 3,
+ MemorySemanticsSequentiallyConsistentShift = 4,
+ MemorySemanticsUniformMemoryShift = 6,
+ MemorySemanticsSubgroupMemoryShift = 7,
+ MemorySemanticsWorkgroupMemoryShift = 8,
+ MemorySemanticsCrossWorkgroupMemoryShift = 9,
+ MemorySemanticsAtomicCounterMemoryShift = 10,
+ MemorySemanticsImageMemoryShift = 11,
+ MemorySemanticsOutputMemoryShift = 12,
+ MemorySemanticsOutputMemoryKHRShift = 12,
+ MemorySemanticsMakeAvailableShift = 13,
+ MemorySemanticsMakeAvailableKHRShift = 13,
+ MemorySemanticsMakeVisibleShift = 14,
+ MemorySemanticsMakeVisibleKHRShift = 14,
+ MemorySemanticsVolatileShift = 15,
+ MemorySemanticsMax = 0x7fffffff,
+};
+
+enum MemorySemanticsMask {
+ MemorySemanticsMaskNone = 0,
+ MemorySemanticsAcquireMask = 0x00000002,
+ MemorySemanticsReleaseMask = 0x00000004,
+ MemorySemanticsAcquireReleaseMask = 0x00000008,
+ MemorySemanticsSequentiallyConsistentMask = 0x00000010,
+ MemorySemanticsUniformMemoryMask = 0x00000040,
+ MemorySemanticsSubgroupMemoryMask = 0x00000080,
+ MemorySemanticsWorkgroupMemoryMask = 0x00000100,
+ MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
+ MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
+ MemorySemanticsImageMemoryMask = 0x00000800,
+ MemorySemanticsOutputMemoryMask = 0x00001000,
+ MemorySemanticsOutputMemoryKHRMask = 0x00001000,
+ MemorySemanticsMakeAvailableMask = 0x00002000,
+ MemorySemanticsMakeAvailableKHRMask = 0x00002000,
+ MemorySemanticsMakeVisibleMask = 0x00004000,
+ MemorySemanticsMakeVisibleKHRMask = 0x00004000,
+ MemorySemanticsVolatileMask = 0x00008000,
+};
+
+enum MemoryAccessShift {
+ MemoryAccessVolatileShift = 0,
+ MemoryAccessAlignedShift = 1,
+ MemoryAccessNontemporalShift = 2,
+ MemoryAccessMakePointerAvailableShift = 3,
+ MemoryAccessMakePointerAvailableKHRShift = 3,
+ MemoryAccessMakePointerVisibleShift = 4,
+ MemoryAccessMakePointerVisibleKHRShift = 4,
+ MemoryAccessNonPrivatePointerShift = 5,
+ MemoryAccessNonPrivatePointerKHRShift = 5,
+ MemoryAccessMax = 0x7fffffff,
+};
+
+enum MemoryAccessMask {
+ MemoryAccessMaskNone = 0,
+ MemoryAccessVolatileMask = 0x00000001,
+ MemoryAccessAlignedMask = 0x00000002,
+ MemoryAccessNontemporalMask = 0x00000004,
+ MemoryAccessMakePointerAvailableMask = 0x00000008,
+ MemoryAccessMakePointerAvailableKHRMask = 0x00000008,
+ MemoryAccessMakePointerVisibleMask = 0x00000010,
+ MemoryAccessMakePointerVisibleKHRMask = 0x00000010,
+ MemoryAccessNonPrivatePointerMask = 0x00000020,
+ MemoryAccessNonPrivatePointerKHRMask = 0x00000020,
+};
+
+enum Scope {
+ ScopeCrossDevice = 0,
+ ScopeDevice = 1,
+ ScopeWorkgroup = 2,
+ ScopeSubgroup = 3,
+ ScopeInvocation = 4,
+ ScopeQueueFamily = 5,
+ ScopeQueueFamilyKHR = 5,
+ ScopeShaderCallKHR = 6,
+ ScopeMax = 0x7fffffff,
+};
+
+enum GroupOperation {
+ GroupOperationReduce = 0,
+ GroupOperationInclusiveScan = 1,
+ GroupOperationExclusiveScan = 2,
+ GroupOperationClusteredReduce = 3,
+ GroupOperationPartitionedReduceNV = 6,
+ GroupOperationPartitionedInclusiveScanNV = 7,
+ GroupOperationPartitionedExclusiveScanNV = 8,
+ GroupOperationMax = 0x7fffffff,
+};
+
+enum KernelEnqueueFlags {
+ KernelEnqueueFlagsNoWait = 0,
+ KernelEnqueueFlagsWaitKernel = 1,
+ KernelEnqueueFlagsWaitWorkGroup = 2,
+ KernelEnqueueFlagsMax = 0x7fffffff,
+};
+
+enum KernelProfilingInfoShift {
+ KernelProfilingInfoCmdExecTimeShift = 0,
+ KernelProfilingInfoMax = 0x7fffffff,
+};
+
+enum KernelProfilingInfoMask {
+ KernelProfilingInfoMaskNone = 0,
+ KernelProfilingInfoCmdExecTimeMask = 0x00000001,
+};
+
+enum Capability {
+ CapabilityMatrix = 0,
+ CapabilityShader = 1,
+ CapabilityGeometry = 2,
+ CapabilityTessellation = 3,
+ CapabilityAddresses = 4,
+ CapabilityLinkage = 5,
+ CapabilityKernel = 6,
+ CapabilityVector16 = 7,
+ CapabilityFloat16Buffer = 8,
+ CapabilityFloat16 = 9,
+ CapabilityFloat64 = 10,
+ CapabilityInt64 = 11,
+ CapabilityInt64Atomics = 12,
+ CapabilityImageBasic = 13,
+ CapabilityImageReadWrite = 14,
+ CapabilityImageMipmap = 15,
+ CapabilityPipes = 17,
+ CapabilityGroups = 18,
+ CapabilityDeviceEnqueue = 19,
+ CapabilityLiteralSampler = 20,
+ CapabilityAtomicStorage = 21,
+ CapabilityInt16 = 22,
+ CapabilityTessellationPointSize = 23,
+ CapabilityGeometryPointSize = 24,
+ CapabilityImageGatherExtended = 25,
+ CapabilityStorageImageMultisample = 27,
+ CapabilityUniformBufferArrayDynamicIndexing = 28,
+ CapabilitySampledImageArrayDynamicIndexing = 29,
+ CapabilityStorageBufferArrayDynamicIndexing = 30,
+ CapabilityStorageImageArrayDynamicIndexing = 31,
+ CapabilityClipDistance = 32,
+ CapabilityCullDistance = 33,
+ CapabilityImageCubeArray = 34,
+ CapabilitySampleRateShading = 35,
+ CapabilityImageRect = 36,
+ CapabilitySampledRect = 37,
+ CapabilityGenericPointer = 38,
+ CapabilityInt8 = 39,
+ CapabilityInputAttachment = 40,
+ CapabilitySparseResidency = 41,
+ CapabilityMinLod = 42,
+ CapabilitySampled1D = 43,
+ CapabilityImage1D = 44,
+ CapabilitySampledCubeArray = 45,
+ CapabilitySampledBuffer = 46,
+ CapabilityImageBuffer = 47,
+ CapabilityImageMSArray = 48,
+ CapabilityStorageImageExtendedFormats = 49,
+ CapabilityImageQuery = 50,
+ CapabilityDerivativeControl = 51,
+ CapabilityInterpolationFunction = 52,
+ CapabilityTransformFeedback = 53,
+ CapabilityGeometryStreams = 54,
+ CapabilityStorageImageReadWithoutFormat = 55,
+ CapabilityStorageImageWriteWithoutFormat = 56,
+ CapabilityMultiViewport = 57,
+ CapabilitySubgroupDispatch = 58,
+ CapabilityNamedBarrier = 59,
+ CapabilityPipeStorage = 60,
+ CapabilityGroupNonUniform = 61,
+ CapabilityGroupNonUniformVote = 62,
+ CapabilityGroupNonUniformArithmetic = 63,
+ CapabilityGroupNonUniformBallot = 64,
+ CapabilityGroupNonUniformShuffle = 65,
+ CapabilityGroupNonUniformShuffleRelative = 66,
+ CapabilityGroupNonUniformClustered = 67,
+ CapabilityGroupNonUniformQuad = 68,
+ CapabilityShaderLayer = 69,
+ CapabilityShaderViewportIndex = 70,
+ CapabilityUniformDecoration = 71,
+ CapabilityFragmentShadingRateKHR = 4422,
+ CapabilitySubgroupBallotKHR = 4423,
+ CapabilityDrawParameters = 4427,
+ CapabilityWorkgroupMemoryExplicitLayoutKHR = 4428,
+ CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429,
+ CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,
+ CapabilitySubgroupVoteKHR = 4431,
+ CapabilityStorageBuffer16BitAccess = 4433,
+ CapabilityStorageUniformBufferBlock16 = 4433,
+ CapabilityStorageUniform16 = 4434,
+ CapabilityUniformAndStorageBuffer16BitAccess = 4434,
+ CapabilityStoragePushConstant16 = 4435,
+ CapabilityStorageInputOutput16 = 4436,
+ CapabilityDeviceGroup = 4437,
+ CapabilityMultiView = 4439,
+ CapabilityVariablePointersStorageBuffer = 4441,
+ CapabilityVariablePointers = 4442,
+ CapabilityAtomicStorageOps = 4445,
+ CapabilitySampleMaskPostDepthCoverage = 4447,
+ CapabilityStorageBuffer8BitAccess = 4448,
+ CapabilityUniformAndStorageBuffer8BitAccess = 4449,
+ CapabilityStoragePushConstant8 = 4450,
+ CapabilityDenormPreserve = 4464,
+ CapabilityDenormFlushToZero = 4465,
+ CapabilitySignedZeroInfNanPreserve = 4466,
+ CapabilityRoundingModeRTE = 4467,
+ CapabilityRoundingModeRTZ = 4468,
+ CapabilityRayQueryProvisionalKHR = 4471,
+ CapabilityRayQueryKHR = 4472,
+ CapabilityRayTraversalPrimitiveCullingKHR = 4478,
+ CapabilityRayTracingKHR = 4479,
+ CapabilityFloat16ImageAMD = 5008,
+ CapabilityImageGatherBiasLodAMD = 5009,
+ CapabilityFragmentMaskAMD = 5010,
+ CapabilityStencilExportEXT = 5013,
+ CapabilityImageReadWriteLodAMD = 5015,
+ CapabilityInt64ImageEXT = 5016,
+ CapabilityShaderClockKHR = 5055,
+ CapabilitySampleMaskOverrideCoverageNV = 5249,
+ CapabilityGeometryShaderPassthroughNV = 5251,
+ CapabilityShaderViewportIndexLayerEXT = 5254,
+ CapabilityShaderViewportIndexLayerNV = 5254,
+ CapabilityShaderViewportMaskNV = 5255,
+ CapabilityShaderStereoViewNV = 5259,
+ CapabilityPerViewAttributesNV = 5260,
+ CapabilityFragmentFullyCoveredEXT = 5265,
+ CapabilityMeshShadingNV = 5266,
+ CapabilityImageFootprintNV = 5282,
+ CapabilityFragmentBarycentricKHR = 5284,
+ CapabilityFragmentBarycentricNV = 5284,
+ CapabilityComputeDerivativeGroupQuadsNV = 5288,
+ CapabilityFragmentDensityEXT = 5291,
+ CapabilityShadingRateNV = 5291,
+ CapabilityGroupNonUniformPartitionedNV = 5297,
+ CapabilityShaderNonUniform = 5301,
+ CapabilityShaderNonUniformEXT = 5301,
+ CapabilityRuntimeDescriptorArray = 5302,
+ CapabilityRuntimeDescriptorArrayEXT = 5302,
+ CapabilityInputAttachmentArrayDynamicIndexing = 5303,
+ CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
+ CapabilityUniformTexelBufferArrayDynamicIndexing = 5304,
+ CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
+ CapabilityStorageTexelBufferArrayDynamicIndexing = 5305,
+ CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
+ CapabilityUniformBufferArrayNonUniformIndexing = 5306,
+ CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
+ CapabilitySampledImageArrayNonUniformIndexing = 5307,
+ CapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
+ CapabilityStorageBufferArrayNonUniformIndexing = 5308,
+ CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
+ CapabilityStorageImageArrayNonUniformIndexing = 5309,
+ CapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
+ CapabilityInputAttachmentArrayNonUniformIndexing = 5310,
+ CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
+ CapabilityUniformTexelBufferArrayNonUniformIndexing = 5311,
+ CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
+ CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
+ CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
+ CapabilityRayTracingNV = 5340,
+ CapabilityRayTracingMotionBlurNV = 5341,
+ CapabilityVulkanMemoryModel = 5345,
+ CapabilityVulkanMemoryModelKHR = 5345,
+ CapabilityVulkanMemoryModelDeviceScope = 5346,
+ CapabilityVulkanMemoryModelDeviceScopeKHR = 5346,
+ CapabilityPhysicalStorageBufferAddresses = 5347,
+ CapabilityPhysicalStorageBufferAddressesEXT = 5347,
+ CapabilityComputeDerivativeGroupLinearNV = 5350,
+ CapabilityRayTracingProvisionalKHR = 5353,
+ CapabilityCooperativeMatrixNV = 5357,
+ CapabilityFragmentShaderSampleInterlockEXT = 5363,
+ CapabilityFragmentShaderShadingRateInterlockEXT = 5372,
+ CapabilityShaderSMBuiltinsNV = 5373,
+ CapabilityFragmentShaderPixelInterlockEXT = 5378,
+ CapabilityDemoteToHelperInvocation = 5379,
+ CapabilityDemoteToHelperInvocationEXT = 5379,
+ CapabilityBindlessTextureNV = 5390,
+ CapabilitySubgroupShuffleINTEL = 5568,
+ CapabilitySubgroupBufferBlockIOINTEL = 5569,
+ CapabilitySubgroupImageBlockIOINTEL = 5570,
+ CapabilitySubgroupImageMediaBlockIOINTEL = 5579,
+ CapabilityRoundToInfinityINTEL = 5582,
+ CapabilityFloatingPointModeINTEL = 5583,
+ CapabilityIntegerFunctions2INTEL = 5584,
+ CapabilityFunctionPointersINTEL = 5603,
+ CapabilityIndirectReferencesINTEL = 5604,
+ CapabilityAsmINTEL = 5606,
+ CapabilityAtomicFloat32MinMaxEXT = 5612,
+ CapabilityAtomicFloat64MinMaxEXT = 5613,
+ CapabilityAtomicFloat16MinMaxEXT = 5616,
+ CapabilityVectorComputeINTEL = 5617,
+ CapabilityVectorAnyINTEL = 5619,
+ CapabilityExpectAssumeKHR = 5629,
+ CapabilitySubgroupAvcMotionEstimationINTEL = 5696,
+ CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
+ CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
+ CapabilityVariableLengthArrayINTEL = 5817,
+ CapabilityFunctionFloatControlINTEL = 5821,
+ CapabilityFPGAMemoryAttributesINTEL = 5824,
+ CapabilityFPFastMathModeINTEL = 5837,
+ CapabilityArbitraryPrecisionIntegersINTEL = 5844,
+ CapabilityArbitraryPrecisionFloatingPointINTEL = 5845,
+ CapabilityUnstructuredLoopControlsINTEL = 5886,
+ CapabilityFPGALoopControlsINTEL = 5888,
+ CapabilityKernelAttributesINTEL = 5892,
+ CapabilityFPGAKernelAttributesINTEL = 5897,
+ CapabilityFPGAMemoryAccessesINTEL = 5898,
+ CapabilityFPGAClusterAttributesINTEL = 5904,
+ CapabilityLoopFuseINTEL = 5906,
+ CapabilityFPGABufferLocationINTEL = 5920,
+ CapabilityArbitraryPrecisionFixedPointINTEL = 5922,
+ CapabilityUSMStorageClassesINTEL = 5935,
+ CapabilityIOPipesINTEL = 5943,
+ CapabilityBlockingPipesINTEL = 5945,
+ CapabilityFPGARegINTEL = 5948,
+ CapabilityDotProductInputAll = 6016,
+ CapabilityDotProductInputAllKHR = 6016,
+ CapabilityDotProductInput4x8Bit = 6017,
+ CapabilityDotProductInput4x8BitKHR = 6017,
+ CapabilityDotProductInput4x8BitPacked = 6018,
+ CapabilityDotProductInput4x8BitPackedKHR = 6018,
+ CapabilityDotProduct = 6019,
+ CapabilityDotProductKHR = 6019,
+ CapabilityBitInstructions = 6025,
+ CapabilityAtomicFloat32AddEXT = 6033,
+ CapabilityAtomicFloat64AddEXT = 6034,
+ CapabilityLongConstantCompositeINTEL = 6089,
+ CapabilityOptNoneINTEL = 6094,
+ CapabilityAtomicFloat16AddEXT = 6095,
+ CapabilityDebugInfoModuleINTEL = 6114,
+ CapabilityMax = 0x7fffffff,
+};
+
+enum RayFlagsShift {
+ RayFlagsOpaqueKHRShift = 0,
+ RayFlagsNoOpaqueKHRShift = 1,
+ RayFlagsTerminateOnFirstHitKHRShift = 2,
+ RayFlagsSkipClosestHitShaderKHRShift = 3,
+ RayFlagsCullBackFacingTrianglesKHRShift = 4,
+ RayFlagsCullFrontFacingTrianglesKHRShift = 5,
+ RayFlagsCullOpaqueKHRShift = 6,
+ RayFlagsCullNoOpaqueKHRShift = 7,
+ RayFlagsSkipTrianglesKHRShift = 8,
+ RayFlagsSkipAABBsKHRShift = 9,
+ RayFlagsMax = 0x7fffffff,
+};
+
+enum RayFlagsMask {
+ RayFlagsMaskNone = 0,
+ RayFlagsOpaqueKHRMask = 0x00000001,
+ RayFlagsNoOpaqueKHRMask = 0x00000002,
+ RayFlagsTerminateOnFirstHitKHRMask = 0x00000004,
+ RayFlagsSkipClosestHitShaderKHRMask = 0x00000008,
+ RayFlagsCullBackFacingTrianglesKHRMask = 0x00000010,
+ RayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020,
+ RayFlagsCullOpaqueKHRMask = 0x00000040,
+ RayFlagsCullNoOpaqueKHRMask = 0x00000080,
+ RayFlagsSkipTrianglesKHRMask = 0x00000100,
+ RayFlagsSkipAABBsKHRMask = 0x00000200,
+};
+
+enum RayQueryIntersection {
+ RayQueryIntersectionRayQueryCandidateIntersectionKHR = 0,
+ RayQueryIntersectionRayQueryCommittedIntersectionKHR = 1,
+ RayQueryIntersectionMax = 0x7fffffff,
+};
+
+enum RayQueryCommittedIntersectionType {
+ RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0,
+ RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1,
+ RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2,
+ RayQueryCommittedIntersectionTypeMax = 0x7fffffff,
+};
+
+enum RayQueryCandidateIntersectionType {
+ RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0,
+ RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1,
+ RayQueryCandidateIntersectionTypeMax = 0x7fffffff,
+};
+
+enum FragmentShadingRateShift {
+ FragmentShadingRateVertical2PixelsShift = 0,
+ FragmentShadingRateVertical4PixelsShift = 1,
+ FragmentShadingRateHorizontal2PixelsShift = 2,
+ FragmentShadingRateHorizontal4PixelsShift = 3,
+ FragmentShadingRateMax = 0x7fffffff,
+};
+
+enum FragmentShadingRateMask {
+ FragmentShadingRateMaskNone = 0,
+ FragmentShadingRateVertical2PixelsMask = 0x00000001,
+ FragmentShadingRateVertical4PixelsMask = 0x00000002,
+ FragmentShadingRateHorizontal2PixelsMask = 0x00000004,
+ FragmentShadingRateHorizontal4PixelsMask = 0x00000008,
+};
+
+enum FPDenormMode {
+ FPDenormModePreserve = 0,
+ FPDenormModeFlushToZero = 1,
+ FPDenormModeMax = 0x7fffffff,
+};
+
+enum FPOperationMode {
+ FPOperationModeIEEE = 0,
+ FPOperationModeALT = 1,
+ FPOperationModeMax = 0x7fffffff,
+};
+
+enum QuantizationModes {
+ QuantizationModesTRN = 0,
+ QuantizationModesTRN_ZERO = 1,
+ QuantizationModesRND = 2,
+ QuantizationModesRND_ZERO = 3,
+ QuantizationModesRND_INF = 4,
+ QuantizationModesRND_MIN_INF = 5,
+ QuantizationModesRND_CONV = 6,
+ QuantizationModesRND_CONV_ODD = 7,
+ QuantizationModesMax = 0x7fffffff,
+};
+
+enum OverflowModes {
+ OverflowModesWRAP = 0,
+ OverflowModesSAT = 1,
+ OverflowModesSAT_ZERO = 2,
+ OverflowModesSAT_SYM = 3,
+ OverflowModesMax = 0x7fffffff,
+};
+
+enum PackedVectorFormat {
+ PackedVectorFormatPackedVectorFormat4x8Bit = 0,
+ PackedVectorFormatPackedVectorFormat4x8BitKHR = 0,
+ PackedVectorFormatMax = 0x7fffffff,
+};
+
+enum Op {
+ OpNop = 0,
+ OpUndef = 1,
+ OpSourceContinued = 2,
+ OpSource = 3,
+ OpSourceExtension = 4,
+ OpName = 5,
+ OpMemberName = 6,
+ OpString = 7,
+ OpLine = 8,
+ OpExtension = 10,
+ OpExtInstImport = 11,
+ OpExtInst = 12,
+ OpMemoryModel = 14,
+ OpEntryPoint = 15,
+ OpExecutionMode = 16,
+ OpCapability = 17,
+ OpTypeVoid = 19,
+ OpTypeBool = 20,
+ OpTypeInt = 21,
+ OpTypeFloat = 22,
+ OpTypeVector = 23,
+ OpTypeMatrix = 24,
+ OpTypeImage = 25,
+ OpTypeSampler = 26,
+ OpTypeSampledImage = 27,
+ OpTypeArray = 28,
+ OpTypeRuntimeArray = 29,
+ OpTypeStruct = 30,
+ OpTypeOpaque = 31,
+ OpTypePointer = 32,
+ OpTypeFunction = 33,
+ OpTypeEvent = 34,
+ OpTypeDeviceEvent = 35,
+ OpTypeReserveId = 36,
+ OpTypeQueue = 37,
+ OpTypePipe = 38,
+ OpTypeForwardPointer = 39,
+ OpConstantTrue = 41,
+ OpConstantFalse = 42,
+ OpConstant = 43,
+ OpConstantComposite = 44,
+ OpConstantSampler = 45,
+ OpConstantNull = 46,
+ OpSpecConstantTrue = 48,
+ OpSpecConstantFalse = 49,
+ OpSpecConstant = 50,
+ OpSpecConstantComposite = 51,
+ OpSpecConstantOp = 52,
+ OpFunction = 54,
+ OpFunctionParameter = 55,
+ OpFunctionEnd = 56,
+ OpFunctionCall = 57,
+ OpVariable = 59,
+ OpImageTexelPointer = 60,
+ OpLoad = 61,
+ OpStore = 62,
+ OpCopyMemory = 63,
+ OpCopyMemorySized = 64,
+ OpAccessChain = 65,
+ OpInBoundsAccessChain = 66,
+ OpPtrAccessChain = 67,
+ OpArrayLength = 68,
+ OpGenericPtrMemSemantics = 69,
+ OpInBoundsPtrAccessChain = 70,
+ OpDecorate = 71,
+ OpMemberDecorate = 72,
+ OpDecorationGroup = 73,
+ OpGroupDecorate = 74,
+ OpGroupMemberDecorate = 75,
+ OpVectorExtractDynamic = 77,
+ OpVectorInsertDynamic = 78,
+ OpVectorShuffle = 79,
+ OpCompositeConstruct = 80,
+ OpCompositeExtract = 81,
+ OpCompositeInsert = 82,
+ OpCopyObject = 83,
+ OpTranspose = 84,
+ OpSampledImage = 86,
+ OpImageSampleImplicitLod = 87,
+ OpImageSampleExplicitLod = 88,
+ OpImageSampleDrefImplicitLod = 89,
+ OpImageSampleDrefExplicitLod = 90,
+ OpImageSampleProjImplicitLod = 91,
+ OpImageSampleProjExplicitLod = 92,
+ OpImageSampleProjDrefImplicitLod = 93,
+ OpImageSampleProjDrefExplicitLod = 94,
+ OpImageFetch = 95,
+ OpImageGather = 96,
+ OpImageDrefGather = 97,
+ OpImageRead = 98,
+ OpImageWrite = 99,
+ OpImage = 100,
+ OpImageQueryFormat = 101,
+ OpImageQueryOrder = 102,
+ OpImageQuerySizeLod = 103,
+ OpImageQuerySize = 104,
+ OpImageQueryLod = 105,
+ OpImageQueryLevels = 106,
+ OpImageQuerySamples = 107,
+ OpConvertFToU = 109,
+ OpConvertFToS = 110,
+ OpConvertSToF = 111,
+ OpConvertUToF = 112,
+ OpUConvert = 113,
+ OpSConvert = 114,
+ OpFConvert = 115,
+ OpQuantizeToF16 = 116,
+ OpConvertPtrToU = 117,
+ OpSatConvertSToU = 118,
+ OpSatConvertUToS = 119,
+ OpConvertUToPtr = 120,
+ OpPtrCastToGeneric = 121,
+ OpGenericCastToPtr = 122,
+ OpGenericCastToPtrExplicit = 123,
+ OpBitcast = 124,
+ OpSNegate = 126,
+ OpFNegate = 127,
+ OpIAdd = 128,
+ OpFAdd = 129,
+ OpISub = 130,
+ OpFSub = 131,
+ OpIMul = 132,
+ OpFMul = 133,
+ OpUDiv = 134,
+ OpSDiv = 135,
+ OpFDiv = 136,
+ OpUMod = 137,
+ OpSRem = 138,
+ OpSMod = 139,
+ OpFRem = 140,
+ OpFMod = 141,
+ OpVectorTimesScalar = 142,
+ OpMatrixTimesScalar = 143,
+ OpVectorTimesMatrix = 144,
+ OpMatrixTimesVector = 145,
+ OpMatrixTimesMatrix = 146,
+ OpOuterProduct = 147,
+ OpDot = 148,
+ OpIAddCarry = 149,
+ OpISubBorrow = 150,
+ OpUMulExtended = 151,
+ OpSMulExtended = 152,
+ OpAny = 154,
+ OpAll = 155,
+ OpIsNan = 156,
+ OpIsInf = 157,
+ OpIsFinite = 158,
+ OpIsNormal = 159,
+ OpSignBitSet = 160,
+ OpLessOrGreater = 161,
+ OpOrdered = 162,
+ OpUnordered = 163,
+ OpLogicalEqual = 164,
+ OpLogicalNotEqual = 165,
+ OpLogicalOr = 166,
+ OpLogicalAnd = 167,
+ OpLogicalNot = 168,
+ OpSelect = 169,
+ OpIEqual = 170,
+ OpINotEqual = 171,
+ OpUGreaterThan = 172,
+ OpSGreaterThan = 173,
+ OpUGreaterThanEqual = 174,
+ OpSGreaterThanEqual = 175,
+ OpULessThan = 176,
+ OpSLessThan = 177,
+ OpULessThanEqual = 178,
+ OpSLessThanEqual = 179,
+ OpFOrdEqual = 180,
+ OpFUnordEqual = 181,
+ OpFOrdNotEqual = 182,
+ OpFUnordNotEqual = 183,
+ OpFOrdLessThan = 184,
+ OpFUnordLessThan = 185,
+ OpFOrdGreaterThan = 186,
+ OpFUnordGreaterThan = 187,
+ OpFOrdLessThanEqual = 188,
+ OpFUnordLessThanEqual = 189,
+ OpFOrdGreaterThanEqual = 190,
+ OpFUnordGreaterThanEqual = 191,
+ OpShiftRightLogical = 194,
+ OpShiftRightArithmetic = 195,
+ OpShiftLeftLogical = 196,
+ OpBitwiseOr = 197,
+ OpBitwiseXor = 198,
+ OpBitwiseAnd = 199,
+ OpNot = 200,
+ OpBitFieldInsert = 201,
+ OpBitFieldSExtract = 202,
+ OpBitFieldUExtract = 203,
+ OpBitReverse = 204,
+ OpBitCount = 205,
+ OpDPdx = 207,
+ OpDPdy = 208,
+ OpFwidth = 209,
+ OpDPdxFine = 210,
+ OpDPdyFine = 211,
+ OpFwidthFine = 212,
+ OpDPdxCoarse = 213,
+ OpDPdyCoarse = 214,
+ OpFwidthCoarse = 215,
+ OpEmitVertex = 218,
+ OpEndPrimitive = 219,
+ OpEmitStreamVertex = 220,
+ OpEndStreamPrimitive = 221,
+ OpControlBarrier = 224,
+ OpMemoryBarrier = 225,
+ OpAtomicLoad = 227,
+ OpAtomicStore = 228,
+ OpAtomicExchange = 229,
+ OpAtomicCompareExchange = 230,
+ OpAtomicCompareExchangeWeak = 231,
+ OpAtomicIIncrement = 232,
+ OpAtomicIDecrement = 233,
+ OpAtomicIAdd = 234,
+ OpAtomicISub = 235,
+ OpAtomicSMin = 236,
+ OpAtomicUMin = 237,
+ OpAtomicSMax = 238,
+ OpAtomicUMax = 239,
+ OpAtomicAnd = 240,
+ OpAtomicOr = 241,
+ OpAtomicXor = 242,
+ OpPhi = 245,
+ OpLoopMerge = 246,
+ OpSelectionMerge = 247,
+ OpLabel = 248,
+ OpBranch = 249,
+ OpBranchConditional = 250,
+ OpSwitch = 251,
+ OpKill = 252,
+ OpReturn = 253,
+ OpReturnValue = 254,
+ OpUnreachable = 255,
+ OpLifetimeStart = 256,
+ OpLifetimeStop = 257,
+ OpGroupAsyncCopy = 259,
+ OpGroupWaitEvents = 260,
+ OpGroupAll = 261,
+ OpGroupAny = 262,
+ OpGroupBroadcast = 263,
+ OpGroupIAdd = 264,
+ OpGroupFAdd = 265,
+ OpGroupFMin = 266,
+ OpGroupUMin = 267,
+ OpGroupSMin = 268,
+ OpGroupFMax = 269,
+ OpGroupUMax = 270,
+ OpGroupSMax = 271,
+ OpReadPipe = 274,
+ OpWritePipe = 275,
+ OpReservedReadPipe = 276,
+ OpReservedWritePipe = 277,
+ OpReserveReadPipePackets = 278,
+ OpReserveWritePipePackets = 279,
+ OpCommitReadPipe = 280,
+ OpCommitWritePipe = 281,
+ OpIsValidReserveId = 282,
+ OpGetNumPipePackets = 283,
+ OpGetMaxPipePackets = 284,
+ OpGroupReserveReadPipePackets = 285,
+ OpGroupReserveWritePipePackets = 286,
+ OpGroupCommitReadPipe = 287,
+ OpGroupCommitWritePipe = 288,
+ OpEnqueueMarker = 291,
+ OpEnqueueKernel = 292,
+ OpGetKernelNDrangeSubGroupCount = 293,
+ OpGetKernelNDrangeMaxSubGroupSize = 294,
+ OpGetKernelWorkGroupSize = 295,
+ OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+ OpRetainEvent = 297,
+ OpReleaseEvent = 298,
+ OpCreateUserEvent = 299,
+ OpIsValidEvent = 300,
+ OpSetUserEventStatus = 301,
+ OpCaptureEventProfilingInfo = 302,
+ OpGetDefaultQueue = 303,
+ OpBuildNDRange = 304,
+ OpImageSparseSampleImplicitLod = 305,
+ OpImageSparseSampleExplicitLod = 306,
+ OpImageSparseSampleDrefImplicitLod = 307,
+ OpImageSparseSampleDrefExplicitLod = 308,
+ OpImageSparseSampleProjImplicitLod = 309,
+ OpImageSparseSampleProjExplicitLod = 310,
+ OpImageSparseSampleProjDrefImplicitLod = 311,
+ OpImageSparseSampleProjDrefExplicitLod = 312,
+ OpImageSparseFetch = 313,
+ OpImageSparseGather = 314,
+ OpImageSparseDrefGather = 315,
+ OpImageSparseTexelsResident = 316,
+ OpNoLine = 317,
+ OpAtomicFlagTestAndSet = 318,
+ OpAtomicFlagClear = 319,
+ OpImageSparseRead = 320,
+ OpSizeOf = 321,
+ OpTypePipeStorage = 322,
+ OpConstantPipeStorage = 323,
+ OpCreatePipeFromPipeStorage = 324,
+ OpGetKernelLocalSizeForSubgroupCount = 325,
+ OpGetKernelMaxNumSubgroups = 326,
+ OpTypeNamedBarrier = 327,
+ OpNamedBarrierInitialize = 328,
+ OpMemoryNamedBarrier = 329,
+ OpModuleProcessed = 330,
+ OpExecutionModeId = 331,
+ OpDecorateId = 332,
+ OpGroupNonUniformElect = 333,
+ OpGroupNonUniformAll = 334,
+ OpGroupNonUniformAny = 335,
+ OpGroupNonUniformAllEqual = 336,
+ OpGroupNonUniformBroadcast = 337,
+ OpGroupNonUniformBroadcastFirst = 338,
+ OpGroupNonUniformBallot = 339,
+ OpGroupNonUniformInverseBallot = 340,
+ OpGroupNonUniformBallotBitExtract = 341,
+ OpGroupNonUniformBallotBitCount = 342,
+ OpGroupNonUniformBallotFindLSB = 343,
+ OpGroupNonUniformBallotFindMSB = 344,
+ OpGroupNonUniformShuffle = 345,
+ OpGroupNonUniformShuffleXor = 346,
+ OpGroupNonUniformShuffleUp = 347,
+ OpGroupNonUniformShuffleDown = 348,
+ OpGroupNonUniformIAdd = 349,
+ OpGroupNonUniformFAdd = 350,
+ OpGroupNonUniformIMul = 351,
+ OpGroupNonUniformFMul = 352,
+ OpGroupNonUniformSMin = 353,
+ OpGroupNonUniformUMin = 354,
+ OpGroupNonUniformFMin = 355,
+ OpGroupNonUniformSMax = 356,
+ OpGroupNonUniformUMax = 357,
+ OpGroupNonUniformFMax = 358,
+ OpGroupNonUniformBitwiseAnd = 359,
+ OpGroupNonUniformBitwiseOr = 360,
+ OpGroupNonUniformBitwiseXor = 361,
+ OpGroupNonUniformLogicalAnd = 362,
+ OpGroupNonUniformLogicalOr = 363,
+ OpGroupNonUniformLogicalXor = 364,
+ OpGroupNonUniformQuadBroadcast = 365,
+ OpGroupNonUniformQuadSwap = 366,
+ OpCopyLogical = 400,
+ OpPtrEqual = 401,
+ OpPtrNotEqual = 402,
+ OpPtrDiff = 403,
+ OpTerminateInvocation = 4416,
+ OpSubgroupBallotKHR = 4421,
+ OpSubgroupFirstInvocationKHR = 4422,
+ OpSubgroupAllKHR = 4428,
+ OpSubgroupAnyKHR = 4429,
+ OpSubgroupAllEqualKHR = 4430,
+ OpSubgroupReadInvocationKHR = 4432,
+ OpTraceRayKHR = 4445,
+ OpExecuteCallableKHR = 4446,
+ OpConvertUToAccelerationStructureKHR = 4447,
+ OpIgnoreIntersectionKHR = 4448,
+ OpTerminateRayKHR = 4449,
+ OpSDot = 4450,
+ OpSDotKHR = 4450,
+ OpUDot = 4451,
+ OpUDotKHR = 4451,
+ OpSUDot = 4452,
+ OpSUDotKHR = 4452,
+ OpSDotAccSat = 4453,
+ OpSDotAccSatKHR = 4453,
+ OpUDotAccSat = 4454,
+ OpUDotAccSatKHR = 4454,
+ OpSUDotAccSat = 4455,
+ OpSUDotAccSatKHR = 4455,
+ OpTypeRayQueryKHR = 4472,
+ OpRayQueryInitializeKHR = 4473,
+ OpRayQueryTerminateKHR = 4474,
+ OpRayQueryGenerateIntersectionKHR = 4475,
+ OpRayQueryConfirmIntersectionKHR = 4476,
+ OpRayQueryProceedKHR = 4477,
+ OpRayQueryGetIntersectionTypeKHR = 4479,
+ OpGroupIAddNonUniformAMD = 5000,
+ OpGroupFAddNonUniformAMD = 5001,
+ OpGroupFMinNonUniformAMD = 5002,
+ OpGroupUMinNonUniformAMD = 5003,
+ OpGroupSMinNonUniformAMD = 5004,
+ OpGroupFMaxNonUniformAMD = 5005,
+ OpGroupUMaxNonUniformAMD = 5006,
+ OpGroupSMaxNonUniformAMD = 5007,
+ OpFragmentMaskFetchAMD = 5011,
+ OpFragmentFetchAMD = 5012,
+ OpReadClockKHR = 5056,
+ OpImageSampleFootprintNV = 5283,
+ OpGroupNonUniformPartitionNV = 5296,
+ OpWritePackedPrimitiveIndices4x8NV = 5299,
+ OpReportIntersectionKHR = 5334,
+ OpReportIntersectionNV = 5334,
+ OpIgnoreIntersectionNV = 5335,
+ OpTerminateRayNV = 5336,
+ OpTraceNV = 5337,
+ OpTraceMotionNV = 5338,
+ OpTraceRayMotionNV = 5339,
+ OpTypeAccelerationStructureKHR = 5341,
+ OpTypeAccelerationStructureNV = 5341,
+ OpExecuteCallableNV = 5344,
+ OpTypeCooperativeMatrixNV = 5358,
+ OpCooperativeMatrixLoadNV = 5359,
+ OpCooperativeMatrixStoreNV = 5360,
+ OpCooperativeMatrixMulAddNV = 5361,
+ OpCooperativeMatrixLengthNV = 5362,
+ OpBeginInvocationInterlockEXT = 5364,
+ OpEndInvocationInterlockEXT = 5365,
+ OpDemoteToHelperInvocation = 5380,
+ OpDemoteToHelperInvocationEXT = 5380,
+ OpIsHelperInvocationEXT = 5381,
+ OpConvertUToImageNV = 5391,
+ OpConvertUToSamplerNV = 5392,
+ OpConvertImageToUNV = 5393,
+ OpConvertSamplerToUNV = 5394,
+ OpConvertUToSampledImageNV = 5395,
+ OpConvertSampledImageToUNV = 5396,
+ OpSamplerImageAddressingModeNV = 5397,
+ OpSubgroupShuffleINTEL = 5571,
+ OpSubgroupShuffleDownINTEL = 5572,
+ OpSubgroupShuffleUpINTEL = 5573,
+ OpSubgroupShuffleXorINTEL = 5574,
+ OpSubgroupBlockReadINTEL = 5575,
+ OpSubgroupBlockWriteINTEL = 5576,
+ OpSubgroupImageBlockReadINTEL = 5577,
+ OpSubgroupImageBlockWriteINTEL = 5578,
+ OpSubgroupImageMediaBlockReadINTEL = 5580,
+ OpSubgroupImageMediaBlockWriteINTEL = 5581,
+ OpUCountLeadingZerosINTEL = 5585,
+ OpUCountTrailingZerosINTEL = 5586,
+ OpAbsISubINTEL = 5587,
+ OpAbsUSubINTEL = 5588,
+ OpIAddSatINTEL = 5589,
+ OpUAddSatINTEL = 5590,
+ OpIAverageINTEL = 5591,
+ OpUAverageINTEL = 5592,
+ OpIAverageRoundedINTEL = 5593,
+ OpUAverageRoundedINTEL = 5594,
+ OpISubSatINTEL = 5595,
+ OpUSubSatINTEL = 5596,
+ OpIMul32x16INTEL = 5597,
+ OpUMul32x16INTEL = 5598,
+ OpConstantFunctionPointerINTEL = 5600,
+ OpFunctionPointerCallINTEL = 5601,
+ OpAsmTargetINTEL = 5609,
+ OpAsmINTEL = 5610,
+ OpAsmCallINTEL = 5611,
+ OpAtomicFMinEXT = 5614,
+ OpAtomicFMaxEXT = 5615,
+ OpAssumeTrueKHR = 5630,
+ OpExpectKHR = 5631,
+ OpDecorateString = 5632,
+ OpDecorateStringGOOGLE = 5632,
+ OpMemberDecorateString = 5633,
+ OpMemberDecorateStringGOOGLE = 5633,
+ OpVmeImageINTEL = 5699,
+ OpTypeVmeImageINTEL = 5700,
+ OpTypeAvcImePayloadINTEL = 5701,
+ OpTypeAvcRefPayloadINTEL = 5702,
+ OpTypeAvcSicPayloadINTEL = 5703,
+ OpTypeAvcMcePayloadINTEL = 5704,
+ OpTypeAvcMceResultINTEL = 5705,
+ OpTypeAvcImeResultINTEL = 5706,
+ OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
+ OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
+ OpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
+ OpTypeAvcImeDualReferenceStreaminINTEL = 5710,
+ OpTypeAvcRefResultINTEL = 5711,
+ OpTypeAvcSicResultINTEL = 5712,
+ OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
+ OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
+ OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
+ OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
+ OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
+ OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
+ OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
+ OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
+ OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
+ OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
+ OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
+ OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
+ OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
+ OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
+ OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
+ OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
+ OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
+ OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
+ OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
+ OpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
+ OpSubgroupAvcMceConvertToImeResultINTEL = 5733,
+ OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
+ OpSubgroupAvcMceConvertToRefResultINTEL = 5735,
+ OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
+ OpSubgroupAvcMceConvertToSicResultINTEL = 5737,
+ OpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
+ OpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
+ OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
+ OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
+ OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
+ OpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
+ OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
+ OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
+ OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
+ OpSubgroupAvcImeInitializeINTEL = 5747,
+ OpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
+ OpSubgroupAvcImeSetDualReferenceINTEL = 5749,
+ OpSubgroupAvcImeRefWindowSizeINTEL = 5750,
+ OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
+ OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
+ OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
+ OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
+ OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
+ OpSubgroupAvcImeSetWeightedSadINTEL = 5756,
+ OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
+ OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
+ OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
+ OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
+ OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
+ OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
+ OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
+ OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
+ OpSubgroupAvcImeConvertToMceResultINTEL = 5765,
+ OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
+ OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
+ OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
+ OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
+ OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
+ OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
+ OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
+ OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
+ OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
+ OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
+ OpSubgroupAvcImeGetBorderReachedINTEL = 5776,
+ OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
+ OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
+ OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
+ OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
+ OpSubgroupAvcFmeInitializeINTEL = 5781,
+ OpSubgroupAvcBmeInitializeINTEL = 5782,
+ OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
+ OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
+ OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
+ OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
+ OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
+ OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
+ OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
+ OpSubgroupAvcRefConvertToMceResultINTEL = 5790,
+ OpSubgroupAvcSicInitializeINTEL = 5791,
+ OpSubgroupAvcSicConfigureSkcINTEL = 5792,
+ OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
+ OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
+ OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
+ OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
+ OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
+ OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
+ OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
+ OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
+ OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
+ OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
+ OpSubgroupAvcSicEvaluateIpeINTEL = 5803,
+ OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
+ OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
+ OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
+ OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
+ OpSubgroupAvcSicConvertToMceResultINTEL = 5808,
+ OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
+ OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
+ OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
+ OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
+ OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
+ OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
+ OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
+ OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
+ OpVariableLengthArrayINTEL = 5818,
+ OpSaveMemoryINTEL = 5819,
+ OpRestoreMemoryINTEL = 5820,
+ OpArbitraryFloatSinCosPiINTEL = 5840,
+ OpArbitraryFloatCastINTEL = 5841,
+ OpArbitraryFloatCastFromIntINTEL = 5842,
+ OpArbitraryFloatCastToIntINTEL = 5843,
+ OpArbitraryFloatAddINTEL = 5846,
+ OpArbitraryFloatSubINTEL = 5847,
+ OpArbitraryFloatMulINTEL = 5848,
+ OpArbitraryFloatDivINTEL = 5849,
+ OpArbitraryFloatGTINTEL = 5850,
+ OpArbitraryFloatGEINTEL = 5851,
+ OpArbitraryFloatLTINTEL = 5852,
+ OpArbitraryFloatLEINTEL = 5853,
+ OpArbitraryFloatEQINTEL = 5854,
+ OpArbitraryFloatRecipINTEL = 5855,
+ OpArbitraryFloatRSqrtINTEL = 5856,
+ OpArbitraryFloatCbrtINTEL = 5857,
+ OpArbitraryFloatHypotINTEL = 5858,
+ OpArbitraryFloatSqrtINTEL = 5859,
+ OpArbitraryFloatLogINTEL = 5860,
+ OpArbitraryFloatLog2INTEL = 5861,
+ OpArbitraryFloatLog10INTEL = 5862,
+ OpArbitraryFloatLog1pINTEL = 5863,
+ OpArbitraryFloatExpINTEL = 5864,
+ OpArbitraryFloatExp2INTEL = 5865,
+ OpArbitraryFloatExp10INTEL = 5866,
+ OpArbitraryFloatExpm1INTEL = 5867,
+ OpArbitraryFloatSinINTEL = 5868,
+ OpArbitraryFloatCosINTEL = 5869,
+ OpArbitraryFloatSinCosINTEL = 5870,
+ OpArbitraryFloatSinPiINTEL = 5871,
+ OpArbitraryFloatCosPiINTEL = 5872,
+ OpArbitraryFloatASinINTEL = 5873,
+ OpArbitraryFloatASinPiINTEL = 5874,
+ OpArbitraryFloatACosINTEL = 5875,
+ OpArbitraryFloatACosPiINTEL = 5876,
+ OpArbitraryFloatATanINTEL = 5877,
+ OpArbitraryFloatATanPiINTEL = 5878,
+ OpArbitraryFloatATan2INTEL = 5879,
+ OpArbitraryFloatPowINTEL = 5880,
+ OpArbitraryFloatPowRINTEL = 5881,
+ OpArbitraryFloatPowNINTEL = 5882,
+ OpLoopControlINTEL = 5887,
+ OpFixedSqrtINTEL = 5923,
+ OpFixedRecipINTEL = 5924,
+ OpFixedRsqrtINTEL = 5925,
+ OpFixedSinINTEL = 5926,
+ OpFixedCosINTEL = 5927,
+ OpFixedSinCosINTEL = 5928,
+ OpFixedSinPiINTEL = 5929,
+ OpFixedCosPiINTEL = 5930,
+ OpFixedSinCosPiINTEL = 5931,
+ OpFixedLogINTEL = 5932,
+ OpFixedExpINTEL = 5933,
+ OpPtrCastToCrossWorkgroupINTEL = 5934,
+ OpCrossWorkgroupCastToPtrINTEL = 5938,
+ OpReadPipeBlockingINTEL = 5946,
+ OpWritePipeBlockingINTEL = 5947,
+ OpFPGARegINTEL = 5949,
+ OpRayQueryGetRayTMinKHR = 6016,
+ OpRayQueryGetRayFlagsKHR = 6017,
+ OpRayQueryGetIntersectionTKHR = 6018,
+ OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
+ OpRayQueryGetIntersectionInstanceIdKHR = 6020,
+ OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
+ OpRayQueryGetIntersectionGeometryIndexKHR = 6022,
+ OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
+ OpRayQueryGetIntersectionBarycentricsKHR = 6024,
+ OpRayQueryGetIntersectionFrontFaceKHR = 6025,
+ OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
+ OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
+ OpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
+ OpRayQueryGetWorldRayDirectionKHR = 6029,
+ OpRayQueryGetWorldRayOriginKHR = 6030,
+ OpRayQueryGetIntersectionObjectToWorldKHR = 6031,
+ OpRayQueryGetIntersectionWorldToObjectKHR = 6032,
+ OpAtomicFAddEXT = 6035,
+ OpTypeBufferSurfaceINTEL = 6086,
+ OpTypeStructContinuedINTEL = 6090,
+ OpConstantCompositeContinuedINTEL = 6091,
+ OpSpecConstantCompositeContinuedINTEL = 6092,
+ OpMax = 0x7fffffff,
+};
+
+#ifdef SPV_ENABLE_UTILITY_CODE
+inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
+ *hasResult = *hasResultType = false;
+ switch (opcode) {
+ default: /* unknown opcode */ break;
+ case OpNop: *hasResult = false; *hasResultType = false; break;
+ case OpUndef: *hasResult = true; *hasResultType = true; break;
+ case OpSourceContinued: *hasResult = false; *hasResultType = false; break;
+ case OpSource: *hasResult = false; *hasResultType = false; break;
+ case OpSourceExtension: *hasResult = false; *hasResultType = false; break;
+ case OpName: *hasResult = false; *hasResultType = false; break;
+ case OpMemberName: *hasResult = false; *hasResultType = false; break;
+ case OpString: *hasResult = true; *hasResultType = false; break;
+ case OpLine: *hasResult = false; *hasResultType = false; break;
+ case OpExtension: *hasResult = false; *hasResultType = false; break;
+ case OpExtInstImport: *hasResult = true; *hasResultType = false; break;
+ case OpExtInst: *hasResult = true; *hasResultType = true; break;
+ case OpMemoryModel: *hasResult = false; *hasResultType = false; break;
+ case OpEntryPoint: *hasResult = false; *hasResultType = false; break;
+ case OpExecutionMode: *hasResult = false; *hasResultType = false; break;
+ case OpCapability: *hasResult = false; *hasResultType = false; break;
+ case OpTypeVoid: *hasResult = true; *hasResultType = false; break;
+ case OpTypeBool: *hasResult = true; *hasResultType = false; break;
+ case OpTypeInt: *hasResult = true; *hasResultType = false; break;
+ case OpTypeFloat: *hasResult = true; *hasResultType = false; break;
+ case OpTypeVector: *hasResult = true; *hasResultType = false; break;
+ case OpTypeMatrix: *hasResult = true; *hasResultType = false; break;
+ case OpTypeImage: *hasResult = true; *hasResultType = false; break;
+ case OpTypeSampler: *hasResult = true; *hasResultType = false; break;
+ case OpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
+ case OpTypeArray: *hasResult = true; *hasResultType = false; break;
+ case OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
+ case OpTypeStruct: *hasResult = true; *hasResultType = false; break;
+ case OpTypeOpaque: *hasResult = true; *hasResultType = false; break;
+ case OpTypePointer: *hasResult = true; *hasResultType = false; break;
+ case OpTypeFunction: *hasResult = true; *hasResultType = false; break;
+ case OpTypeEvent: *hasResult = true; *hasResultType = false; break;
+ case OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
+ case OpTypeReserveId: *hasResult = true; *hasResultType = false; break;
+ case OpTypeQueue: *hasResult = true; *hasResultType = false; break;
+ case OpTypePipe: *hasResult = true; *hasResultType = false; break;
+ case OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
+ case OpConstantTrue: *hasResult = true; *hasResultType = true; break;
+ case OpConstantFalse: *hasResult = true; *hasResultType = true; break;
+ case OpConstant: *hasResult = true; *hasResultType = true; break;
+ case OpConstantComposite: *hasResult = true; *hasResultType = true; break;
+ case OpConstantSampler: *hasResult = true; *hasResultType = true; break;
+ case OpConstantNull: *hasResult = true; *hasResultType = true; break;
+ case OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
+ case OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
+ case OpSpecConstant: *hasResult = true; *hasResultType = true; break;
+ case OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
+ case OpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
+ case OpFunction: *hasResult = true; *hasResultType = true; break;
+ case OpFunctionParameter: *hasResult = true; *hasResultType = true; break;
+ case OpFunctionEnd: *hasResult = false; *hasResultType = false; break;
+ case OpFunctionCall: *hasResult = true; *hasResultType = true; break;
+ case OpVariable: *hasResult = true; *hasResultType = true; break;
+ case OpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
+ case OpLoad: *hasResult = true; *hasResultType = true; break;
+ case OpStore: *hasResult = false; *hasResultType = false; break;
+ case OpCopyMemory: *hasResult = false; *hasResultType = false; break;
+ case OpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
+ case OpAccessChain: *hasResult = true; *hasResultType = true; break;
+ case OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
+ case OpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
+ case OpArrayLength: *hasResult = true; *hasResultType = true; break;
+ case OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
+ case OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
+ case OpDecorate: *hasResult = false; *hasResultType = false; break;
+ case OpMemberDecorate: *hasResult = false; *hasResultType = false; break;
+ case OpDecorationGroup: *hasResult = true; *hasResultType = false; break;
+ case OpGroupDecorate: *hasResult = false; *hasResultType = false; break;
+ case OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
+ case OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
+ case OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
+ case OpVectorShuffle: *hasResult = true; *hasResultType = true; break;
+ case OpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
+ case OpCompositeExtract: *hasResult = true; *hasResultType = true; break;
+ case OpCompositeInsert: *hasResult = true; *hasResultType = true; break;
+ case OpCopyObject: *hasResult = true; *hasResultType = true; break;
+ case OpTranspose: *hasResult = true; *hasResultType = true; break;
+ case OpSampledImage: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageFetch: *hasResult = true; *hasResultType = true; break;
+ case OpImageGather: *hasResult = true; *hasResultType = true; break;
+ case OpImageDrefGather: *hasResult = true; *hasResultType = true; break;
+ case OpImageRead: *hasResult = true; *hasResultType = true; break;
+ case OpImageWrite: *hasResult = false; *hasResultType = false; break;
+ case OpImage: *hasResult = true; *hasResultType = true; break;
+ case OpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
+ case OpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
+ case OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageQuerySize: *hasResult = true; *hasResultType = true; break;
+ case OpImageQueryLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
+ case OpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
+ case OpConvertFToU: *hasResult = true; *hasResultType = true; break;
+ case OpConvertFToS: *hasResult = true; *hasResultType = true; break;
+ case OpConvertSToF: *hasResult = true; *hasResultType = true; break;
+ case OpConvertUToF: *hasResult = true; *hasResultType = true; break;
+ case OpUConvert: *hasResult = true; *hasResultType = true; break;
+ case OpSConvert: *hasResult = true; *hasResultType = true; break;
+ case OpFConvert: *hasResult = true; *hasResultType = true; break;
+ case OpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
+ case OpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
+ case OpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
+ case OpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
+ case OpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
+ case OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
+ case OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
+ case OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
+ case OpBitcast: *hasResult = true; *hasResultType = true; break;
+ case OpSNegate: *hasResult = true; *hasResultType = true; break;
+ case OpFNegate: *hasResult = true; *hasResultType = true; break;
+ case OpIAdd: *hasResult = true; *hasResultType = true; break;
+ case OpFAdd: *hasResult = true; *hasResultType = true; break;
+ case OpISub: *hasResult = true; *hasResultType = true; break;
+ case OpFSub: *hasResult = true; *hasResultType = true; break;
+ case OpIMul: *hasResult = true; *hasResultType = true; break;
+ case OpFMul: *hasResult = true; *hasResultType = true; break;
+ case OpUDiv: *hasResult = true; *hasResultType = true; break;
+ case OpSDiv: *hasResult = true; *hasResultType = true; break;
+ case OpFDiv: *hasResult = true; *hasResultType = true; break;
+ case OpUMod: *hasResult = true; *hasResultType = true; break;
+ case OpSRem: *hasResult = true; *hasResultType = true; break;
+ case OpSMod: *hasResult = true; *hasResultType = true; break;
+ case OpFRem: *hasResult = true; *hasResultType = true; break;
+ case OpFMod: *hasResult = true; *hasResultType = true; break;
+ case OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
+ case OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
+ case OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
+ case OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
+ case OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
+ case OpOuterProduct: *hasResult = true; *hasResultType = true; break;
+ case OpDot: *hasResult = true; *hasResultType = true; break;
+ case OpIAddCarry: *hasResult = true; *hasResultType = true; break;
+ case OpISubBorrow: *hasResult = true; *hasResultType = true; break;
+ case OpUMulExtended: *hasResult = true; *hasResultType = true; break;
+ case OpSMulExtended: *hasResult = true; *hasResultType = true; break;
+ case OpAny: *hasResult = true; *hasResultType = true; break;
+ case OpAll: *hasResult = true; *hasResultType = true; break;
+ case OpIsNan: *hasResult = true; *hasResultType = true; break;
+ case OpIsInf: *hasResult = true; *hasResultType = true; break;
+ case OpIsFinite: *hasResult = true; *hasResultType = true; break;
+ case OpIsNormal: *hasResult = true; *hasResultType = true; break;
+ case OpSignBitSet: *hasResult = true; *hasResultType = true; break;
+ case OpLessOrGreater: *hasResult = true; *hasResultType = true; break;
+ case OpOrdered: *hasResult = true; *hasResultType = true; break;
+ case OpUnordered: *hasResult = true; *hasResultType = true; break;
+ case OpLogicalEqual: *hasResult = true; *hasResultType = true; break;
+ case OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
+ case OpLogicalOr: *hasResult = true; *hasResultType = true; break;
+ case OpLogicalAnd: *hasResult = true; *hasResultType = true; break;
+ case OpLogicalNot: *hasResult = true; *hasResultType = true; break;
+ case OpSelect: *hasResult = true; *hasResultType = true; break;
+ case OpIEqual: *hasResult = true; *hasResultType = true; break;
+ case OpINotEqual: *hasResult = true; *hasResultType = true; break;
+ case OpUGreaterThan: *hasResult = true; *hasResultType = true; break;
+ case OpSGreaterThan: *hasResult = true; *hasResultType = true; break;
+ case OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpULessThan: *hasResult = true; *hasResultType = true; break;
+ case OpSLessThan: *hasResult = true; *hasResultType = true; break;
+ case OpULessThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFOrdEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFUnordEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
+ case OpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
+ case OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
+ case OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
+ case OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
+ case OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
+ case OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
+ case OpBitwiseOr: *hasResult = true; *hasResultType = true; break;
+ case OpBitwiseXor: *hasResult = true; *hasResultType = true; break;
+ case OpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
+ case OpNot: *hasResult = true; *hasResultType = true; break;
+ case OpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
+ case OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
+ case OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
+ case OpBitReverse: *hasResult = true; *hasResultType = true; break;
+ case OpBitCount: *hasResult = true; *hasResultType = true; break;
+ case OpDPdx: *hasResult = true; *hasResultType = true; break;
+ case OpDPdy: *hasResult = true; *hasResultType = true; break;
+ case OpFwidth: *hasResult = true; *hasResultType = true; break;
+ case OpDPdxFine: *hasResult = true; *hasResultType = true; break;
+ case OpDPdyFine: *hasResult = true; *hasResultType = true; break;
+ case OpFwidthFine: *hasResult = true; *hasResultType = true; break;
+ case OpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
+ case OpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
+ case OpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
+ case OpEmitVertex: *hasResult = false; *hasResultType = false; break;
+ case OpEndPrimitive: *hasResult = false; *hasResultType = false; break;
+ case OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
+ case OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
+ case OpControlBarrier: *hasResult = false; *hasResultType = false; break;
+ case OpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
+ case OpAtomicLoad: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicStore: *hasResult = false; *hasResultType = false; break;
+ case OpAtomicExchange: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicISub: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicSMin: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicUMin: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicSMax: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicUMax: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicAnd: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicOr: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicXor: *hasResult = true; *hasResultType = true; break;
+ case OpPhi: *hasResult = true; *hasResultType = true; break;
+ case OpLoopMerge: *hasResult = false; *hasResultType = false; break;
+ case OpSelectionMerge: *hasResult = false; *hasResultType = false; break;
+ case OpLabel: *hasResult = true; *hasResultType = false; break;
+ case OpBranch: *hasResult = false; *hasResultType = false; break;
+ case OpBranchConditional: *hasResult = false; *hasResultType = false; break;
+ case OpSwitch: *hasResult = false; *hasResultType = false; break;
+ case OpKill: *hasResult = false; *hasResultType = false; break;
+ case OpReturn: *hasResult = false; *hasResultType = false; break;
+ case OpReturnValue: *hasResult = false; *hasResultType = false; break;
+ case OpUnreachable: *hasResult = false; *hasResultType = false; break;
+ case OpLifetimeStart: *hasResult = false; *hasResultType = false; break;
+ case OpLifetimeStop: *hasResult = false; *hasResultType = false; break;
+ case OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
+ case OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
+ case OpGroupAll: *hasResult = true; *hasResultType = true; break;
+ case OpGroupAny: *hasResult = true; *hasResultType = true; break;
+ case OpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
+ case OpGroupIAdd: *hasResult = true; *hasResultType = true; break;
+ case OpGroupFAdd: *hasResult = true; *hasResultType = true; break;
+ case OpGroupFMin: *hasResult = true; *hasResultType = true; break;
+ case OpGroupUMin: *hasResult = true; *hasResultType = true; break;
+ case OpGroupSMin: *hasResult = true; *hasResultType = true; break;
+ case OpGroupFMax: *hasResult = true; *hasResultType = true; break;
+ case OpGroupUMax: *hasResult = true; *hasResultType = true; break;
+ case OpGroupSMax: *hasResult = true; *hasResultType = true; break;
+ case OpReadPipe: *hasResult = true; *hasResultType = true; break;
+ case OpWritePipe: *hasResult = true; *hasResultType = true; break;
+ case OpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
+ case OpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
+ case OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
+ case OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
+ case OpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
+ case OpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
+ case OpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
+ case OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
+ case OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
+ case OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
+ case OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
+ case OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
+ case OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
+ case OpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
+ case OpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
+ case OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
+ case OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
+ case OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
+ case OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
+ case OpRetainEvent: *hasResult = false; *hasResultType = false; break;
+ case OpReleaseEvent: *hasResult = false; *hasResultType = false; break;
+ case OpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
+ case OpIsValidEvent: *hasResult = true; *hasResultType = true; break;
+ case OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
+ case OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
+ case OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
+ case OpBuildNDRange: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseGather: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
+ case OpNoLine: *hasResult = false; *hasResultType = false; break;
+ case OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
+ case OpImageSparseRead: *hasResult = true; *hasResultType = true; break;
+ case OpSizeOf: *hasResult = true; *hasResultType = true; break;
+ case OpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
+ case OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
+ case OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
+ case OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
+ case OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
+ case OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
+ case OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
+ case OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
+ case OpModuleProcessed: *hasResult = false; *hasResultType = false; break;
+ case OpExecutionModeId: *hasResult = false; *hasResultType = false; break;
+ case OpDecorateId: *hasResult = false; *hasResultType = false; break;
+ case OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
+ case OpCopyLogical: *hasResult = true; *hasResultType = true; break;
+ case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
+ case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
+ case OpPtrDiff: *hasResult = true; *hasResultType = true; break;
+ case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
+ case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
+ case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break;
+ case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break;
+ case OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break;
+ case OpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+ case OpTerminateRayKHR: *hasResult = false; *hasResultType = false; break;
+ case OpSDot: *hasResult = true; *hasResultType = true; break;
+ case OpUDot: *hasResult = true; *hasResultType = true; break;
+ case OpSUDot: *hasResult = true; *hasResultType = true; break;
+ case OpSDotAccSat: *hasResult = true; *hasResultType = true; break;
+ case OpUDotAccSat: *hasResult = true; *hasResultType = true; break;
+ case OpSUDotAccSat: *hasResult = true; *hasResultType = true; break;
+ case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
+ case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
+ case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
+ case OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+ case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+ case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
+ case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+ case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+ case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+ case OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+ case OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+ case OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+ case OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+ case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+ case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
+ case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
+ case OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
+ case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
+ case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
+ case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
+ case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
+ case OpTraceNV: *hasResult = false; *hasResultType = false; break;
+ case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break;
+ case OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break;
+ case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
+ case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
+ case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
+ case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
+ case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
+ case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
+ case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
+ case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
+ case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
+ case OpDemoteToHelperInvocation: *hasResult = false; *hasResultType = false; break;
+ case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
+ case OpConvertUToImageNV: *hasResult = true; *hasResultType = true; break;
+ case OpConvertUToSamplerNV: *hasResult = true; *hasResultType = true; break;
+ case OpConvertImageToUNV: *hasResult = true; *hasResultType = true; break;
+ case OpConvertSamplerToUNV: *hasResult = true; *hasResultType = true; break;
+ case OpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break;
+ case OpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break;
+ case OpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break;
+ case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+ case OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+ case OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+ case OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpConstantFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpAsmINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpAsmCallINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break;
+ case OpAssumeTrueKHR: *hasResult = false; *hasResultType = false; break;
+ case OpExpectKHR: *hasResult = true; *hasResultType = true; break;
+ case OpDecorateString: *hasResult = false; *hasResultType = false; break;
+ case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
+ case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSaveMemoryINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpRestoreMemoryINTEL: *hasResult = false; *hasResultType = false; break;
+ case OpArbitraryFloatSinCosPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatCastINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatCastFromIntINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatCastToIntINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatAddINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatSubINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatMulINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatDivINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatGTINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatGEINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatLTINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatLEINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatEQINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatRecipINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatRSqrtINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatCbrtINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatHypotINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatSqrtINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatLogINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatLog2INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatLog10INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatLog1pINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatExpINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatExp2INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatExp10INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatExpm1INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatSinINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatCosINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatSinCosINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatSinPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatCosPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatASinINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatASinPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatACosINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatACosPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatATanINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatATanPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatATan2INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatPowINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatPowRINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatPowNINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
+ case OpFixedSqrtINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedRecipINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedRsqrtINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedSinINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedCosINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedSinCosINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedSinPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedCosPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedSinCosPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedLogINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedExpINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpPtrCastToCrossWorkgroupINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpCrossWorkgroupCastToPtrINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
+ case OpTypeBufferSurfaceINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
+ case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
+ case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
+ }
+}
+#endif /* SPV_ENABLE_UTILITY_CODE */
+
+// Overload operator| for mask bit combining
+
+inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
+inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
+inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
+inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
+inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
+inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
+inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
+inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
+inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
+inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
+
+} // end namespace spv
+
+#endif // #ifndef spirv_HPP
+
diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 486e80d0..5249a5ba 100644 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -111,27 +111,23 @@ public: void addStringOperand(const char* str) { - unsigned int word; - char* wordString = (char*)&word; - char* wordPtr = wordString; - int charCount = 0; + unsigned int word = 0; + unsigned int shiftAmount = 0; char c; + do { c = *(str++); - *(wordPtr++) = c; - ++charCount; - if (charCount == 4) { + word |= ((unsigned int)c) << shiftAmount; + shiftAmount += 8; + if (shiftAmount == 32) { addImmediateOperand(word); - wordPtr = wordString; - charCount = 0; + word = 0; + shiftAmount = 0; } } while (c != 0); // deal with partial last word - if (charCount > 0) { - // pad with 0s - for (; charCount < 4; ++charCount) - *(wordPtr++) = 0; + if (shiftAmount > 0) { addImmediateOperand(word); } } diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 23e510c2..37282f2d 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -177,6 +177,8 @@ const char* shaderStageName = nullptr; const char* variableName = nullptr; bool HlslEnable16BitTypes = false; bool HlslDX9compatible = false; +bool HlslDxPositionW = false; +bool EnhancedMsgs = false; bool DumpBuiltinSymbols = false; std::vector<std::string> IncludeDirectoryList; @@ -190,6 +192,9 @@ glslang::EShTargetClientVersion ClientVersion; // not valid until Client i glslang::EShTargetLanguage TargetLanguage = glslang::EShTargetNone; glslang::EShTargetLanguageVersion TargetVersion; // not valid until TargetLanguage is set +// GLSL version +int GlslVersion = 0; // GLSL version specified on CLI, overrides #version in shader source + std::vector<std::string> Processes; // what should be recorded by OpModuleProcessed, or equivalent // Per descriptor-set binding base data @@ -652,6 +657,48 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem lowerword == "flatten-uniform-array" || lowerword == "fua") { Options |= EOptionFlattenUniformArrays; + } else if (lowerword == "glsl-version") { + if (argc > 1) { + if (strcmp(argv[1], "100") == 0) { + GlslVersion = 100; + } else if (strcmp(argv[1], "110") == 0) { + GlslVersion = 110; + } else if (strcmp(argv[1], "120") == 0) { + GlslVersion = 120; + } else if (strcmp(argv[1], "130") == 0) { + GlslVersion = 130; + } else if (strcmp(argv[1], "140") == 0) { + GlslVersion = 140; + } else if (strcmp(argv[1], "150") == 0) { + GlslVersion = 150; + } else if (strcmp(argv[1], "300es") == 0) { + GlslVersion = 300; + } else if (strcmp(argv[1], "310es") == 0) { + GlslVersion = 310; + } else if (strcmp(argv[1], "320es") == 0) { + GlslVersion = 320; + } else if (strcmp(argv[1], "330") == 0) { + GlslVersion = 330; + } else if (strcmp(argv[1], "400") == 0) { + GlslVersion = 400; + } else if (strcmp(argv[1], "410") == 0) { + GlslVersion = 410; + } else if (strcmp(argv[1], "420") == 0) { + GlslVersion = 420; + } else if (strcmp(argv[1], "430") == 0) { + GlslVersion = 430; + } else if (strcmp(argv[1], "440") == 0) { + GlslVersion = 440; + } else if (strcmp(argv[1], "450") == 0) { + GlslVersion = 450; + } else if (strcmp(argv[1], "460") == 0) { + GlslVersion = 460; + } else + Error("--glsl-version expected one of: 100, 110, 120, 130, 140, 150,\n" + "300es, 310es, 320es, 330\n" + "400, 410, 420, 430, 440, 450, 460"); + } + bumpArg(); } else if (lowerword == "hlsl-offsets") { Options |= EOptionHlslOffsets; } else if (lowerword == "hlsl-iomap" || @@ -662,6 +709,10 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem HlslEnable16BitTypes = true; } else if (lowerword == "hlsl-dx9-compatible") { HlslDX9compatible = true; + } else if (lowerword == "hlsl-dx-position-w") { + HlslDxPositionW = true; + } else if (lowerword == "enhanced-msgs") { + EnhancedMsgs = true; } else if (lowerword == "auto-sampled-textures") { autoSampledTextures = true; } else if (lowerword == "invert-y" || // synonyms @@ -764,6 +815,9 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem } else if (strcmp(argv[1], "vulkan1.2") == 0) { setVulkanSpv(); ClientVersion = glslang::EShTargetVulkan_1_2; + } else if (strcmp(argv[1], "vulkan1.3") == 0) { + setVulkanSpv(); + ClientVersion = glslang::EShTargetVulkan_1_3; } else if (strcmp(argv[1], "opengl") == 0) { setOpenGlSpv(); ClientVersion = glslang::EShTargetOpenGL_450; @@ -785,9 +839,13 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem } else if (strcmp(argv[1], "spirv1.5") == 0) { TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_5; + } else if (strcmp(argv[1], "spirv1.6") == 0) { + TargetLanguage = glslang::EShTargetSpv; + TargetVersion = glslang::EShTargetSpv_1_6; } else - Error("--target-env expected one of: vulkan1.0, vulkan1.1, vulkan1.2, opengl,\n" - "spirv1.0, spirv1.1, spirv1.2, spirv1.3, spirv1.4, or spirv1.5"); + Error("--target-env expected one of: vulkan1.0, vulkan1.1, vulkan1.2,\n" + "vulkan1.3, opengl, spirv1.0, spirv1.1, spirv1.2, spirv1.3,\n" + "spirv1.4, spirv1.5 or spirv1.6"); } bumpArg(); } else if (lowerword == "undef-macro" || @@ -1012,6 +1070,10 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_5; break; + case glslang::EShTargetVulkan_1_3: + TargetLanguage = glslang::EShTargetSpv; + TargetVersion = glslang::EShTargetSpv_1_6; + break; case glslang::EShTargetOpenGL_450: TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_0; @@ -1059,6 +1121,8 @@ void SetMessageOptions(EShMessages& messages) messages = (EShMessages)(messages | EShMsgHlslDX9Compatible); if (DumpBuiltinSymbols) messages = (EShMessages)(messages | EShMsgBuiltinSymbolTable); + if (EnhancedMsgs) + messages = (EShMessages)(messages | EShMsgEnhanced); } // @@ -1149,6 +1213,27 @@ struct ShaderCompUnit { } }; +// Writes a string into a depfile, escaping some special characters following the Makefile rules. +static void writeEscapedDepString(std::ofstream& file, const std::string& str) +{ + for (char c : str) { + switch (c) { + case ' ': + case ':': + case '#': + case '[': + case ']': + case '\\': + file << '\\'; + break; + case '$': + file << '$'; + break; + } + file << c; + } +} + // Writes a depfile similar to gcc -MMD foo.c bool writeDepFile(std::string depfile, std::vector<std::string>& binaryFiles, const std::vector<std::string>& sources) { @@ -1156,10 +1241,12 @@ bool writeDepFile(std::string depfile, std::vector<std::string>& binaryFiles, co if (file.fail()) return false; - for (auto it = binaryFiles.begin(); it != binaryFiles.end(); it++) { - file << *it << ":"; - for (auto it = sources.begin(); it != sources.end(); it++) { - file << " " << *it; + for (auto binaryFile = binaryFiles.begin(); binaryFile != binaryFiles.end(); binaryFile++) { + writeEscapedDepString(file, *binaryFile); + file << ":"; + for (auto sourceFile = sources.begin(); sourceFile != sources.end(); sourceFile++) { + file << " "; + writeEscapedDepString(file, *sourceFile); } file << std::endl; } @@ -1209,6 +1296,8 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits) shader->setSourceEntryPoint(sourceEntryPointName); } + shader->setOverrideVersion(GlslVersion); + std::string intrinsicString = getIntrinsic(compUnit.text, compUnit.count); PreambleString = ""; @@ -1284,6 +1373,12 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits) if (Options & EOptionInvertY) shader->setInvertY(true); + if (HlslDxPositionW) + shader->setDxPositionW(true); + + if (EnhancedMsgs) + shader->setEnhancedMsgs(); + // Set up the environment, some subsettings take precedence over earlier // ways of setting things. if (Options & EOptionSpv) { @@ -1840,6 +1935,11 @@ void usage() " -dumpfullversion | -dumpversion print bare major.minor.patchlevel\n" " --flatten-uniform-arrays | --fua flatten uniform texture/sampler arrays to\n" " scalars\n" + " --glsl-version {100 | 110 | 120 | 130 | 140 | 150 |\n" + " 300es | 310es | 320es | 330\n" + " 400 | 410 | 420 | 430 | 440 | 450 | 460}\n" + " set GLSL version, overrides #version\n" + " in shader sourcen\n" " --hlsl-offsets allow block offsets to follow HLSL rules\n" " works independently of source language\n" " --hlsl-iomap perform IO mapping in HLSL register space\n" @@ -1847,7 +1947,10 @@ void usage() " --hlsl-dx9-compatible interprets sampler declarations as a\n" " texture/sampler combo like DirectX9 would,\n" " and recognizes DirectX9-specific semantics\n" + " --hlsl-dx-position-w W component of SV_Position in HLSL fragment\n" + " shaders compatible with DirectX\n" " --invert-y | --iy invert position.Y output in vertex shader\n" + " --enhanced-msgs print more readable error messages (GLSL only)\n" " --keep-uncalled | --ku don't eliminate uncalled functions\n" " --nan-clamp favor non-NaN operand in min, max, and clamp\n" " --no-storage-format | --nsf use Unknown image format\n" @@ -1922,8 +2025,9 @@ void usage() " --sep synonym for --source-entrypoint\n" " --stdin read from stdin instead of from a file;\n" " requires providing the shader stage using -S\n" - " --target-env {vulkan1.0 | vulkan1.1 | vulkan1.2 | opengl | \n" - " spirv1.0 | spirv1.1 | spirv1.2 | spirv1.3 | spirv1.4 | spirv1.5}\n" + " --target-env {vulkan1.0 | vulkan1.1 | vulkan1.2 | vulkan1.3 | opengl |\n" + " spirv1.0 | spirv1.1 | spirv1.2 | spirv1.3 | spirv1.4 |\n" + " spirv1.5 | spirv1.6}\n" " Set the execution environment that the\n" " generated code will be executed in.\n" " Defaults to:\n" @@ -1932,6 +2036,7 @@ void usage() " * spirv1.0 under --target-env vulkan1.0\n" " * spirv1.3 under --target-env vulkan1.1\n" " * spirv1.5 under --target-env vulkan1.2\n" + " * spirv1.6 under --target-env vulkan1.3\n" " Multiple --target-env can be specified.\n" " --variable-name <name>\n" " --vn <name> creates a C header file that contains a\n" diff --git a/Test/150.frag b/Test/150.frag index 228e4f0d..90b1e274 100644 --- a/Test/150.frag +++ b/Test/150.frag @@ -111,8 +111,8 @@ void qlodFail() vec2 pf2;
vec3 pf3;
- lod = textureQueryLod(samp1D, pf); // ERROR, extension GL_ARB_texture_query_lod needed
- lod = textureQueryLod(samp2Ds, pf2); // ERROR, extension GL_ARB_texture_query_lod needed
+ lod = textureQueryLOD(samp1D, pf); // ERROR, extension GL_ARB_texture_query_lod needed
+ lod = textureQueryLOD(samp2Ds, pf2); // ERROR, extension GL_ARB_texture_query_lod needed
}
#extension GL_ARB_texture_query_lod : enable
@@ -138,21 +138,21 @@ void qlodPass() vec2 pf2;
vec3 pf3;
- lod = textureQueryLod(samp1D, pf);
- lod = textureQueryLod(isamp2D, pf2);
- lod = textureQueryLod(usamp3D, pf3);
- lod = textureQueryLod(sampCube, pf3);
- lod = textureQueryLod(isamp1DA, pf);
- lod = textureQueryLod(usamp2DA, pf2);
-
- lod = textureQueryLod(samp1Ds, pf);
- lod = textureQueryLod(samp2Ds, pf2);
- lod = textureQueryLod(sampCubes, pf3);
- lod = textureQueryLod(samp1DAs, pf);
- lod = textureQueryLod(samp2DAs, pf2);
-
- lod = textureQueryLod(sampBuf, pf); // ERROR
- lod = textureQueryLod(sampRect, pf2); // ERROR
+ lod = textureQueryLOD(samp1D, pf);
+ lod = textureQueryLOD(isamp2D, pf2);
+ lod = textureQueryLOD(usamp3D, pf3);
+ lod = textureQueryLOD(sampCube, pf3);
+ lod = textureQueryLOD(isamp1DA, pf);
+ lod = textureQueryLOD(usamp2DA, pf2);
+
+ lod = textureQueryLOD(samp1Ds, pf);
+ lod = textureQueryLOD(samp2Ds, pf2);
+ lod = textureQueryLOD(sampCubes, pf3);
+ lod = textureQueryLOD(samp1DAs, pf);
+ lod = textureQueryLOD(samp2DAs, pf2);
+
+ lod = textureQueryLOD(sampBuf, pf); // ERROR
+ lod = textureQueryLOD(sampRect, pf2); // ERROR
}
// Test extension GL_EXT_shader_integer_mix
diff --git a/Test/BestMatchFunction.vert b/Test/BestMatchFunction.vert new file mode 100644 index 00000000..eb092339 --- /dev/null +++ b/Test/BestMatchFunction.vert @@ -0,0 +1,20 @@ +#version 150 +#extension GL_ARB_gpu_shader5 : require + +uniform ivec4 u1; +uniform uvec4 u2; +out vec4 result; +vec4 f(in vec4 a, in vec4 b){ return a * b;} // choice 1 +vec4 f(in uvec4 a, in uvec4 b){ return vec4(a - b);} // choice 2 + +void main() +{ + result = f(u1, u2); // should match choice 2. which have less implicit conversion. + switch (gl_VertexID) + { + case 0: gl_Position = vec4(-1.0, 1.0, 0.0, 1.0); break; + case 1: gl_Position = vec4( 1.0, 1.0, 0.0, 1.0); break; + case 2: gl_Position = vec4(-1.0,-1.0, 0.0, 1.0); break; + case 3: gl_Position = vec4( 1.0,-1.0, 0.0, 1.0); break; + } +} diff --git a/Test/EndStreamPrimitive.geom b/Test/EndStreamPrimitive.geom new file mode 100644 index 00000000..a654ebc4 --- /dev/null +++ b/Test/EndStreamPrimitive.geom @@ -0,0 +1,20 @@ +#version 150 core +#extension GL_ARB_gpu_shader5 : require +layout(points) in; +layout(points, max_vertices = 1) out; +layout(stream=0) out float output1; +layout(stream=0) out float output2; +layout(stream=1) out float output3; +layout(stream=1) out float output4; +uniform uint stream; +void main() { + + output1 = 1.0; + output2 = 2.0; + EmitStreamVertex(0); + EndStreamPrimitive(0); + output3 = 3.0; + output4 = 4.0; + EmitStreamVertex(1); + EndStreamPrimitive(1); +}
\ No newline at end of file diff --git a/Test/GL_ARB_fragment_coord_conventions.vert b/Test/GL_ARB_fragment_coord_conventions.vert new file mode 100644 index 00000000..962734f4 --- /dev/null +++ b/Test/GL_ARB_fragment_coord_conventions.vert @@ -0,0 +1,27 @@ +#version 140 + +#extension GL_ARB_fragment_coord_conventions: require +#extension GL_ARB_explicit_attrib_location : enable + + +#if !defined GL_ARB_fragment_coord_conventions +# error GL_ARB_fragment_coord_conventions is not defined +#elif GL_ARB_fragment_coord_conventions != 1 +# error GL_ARB_fragment_coord_conventions is not equal to 1 +#endif + + +layout (location = 0) in vec4 pos; +out vec4 i; + +uniform float gtf_windowWidth; +uniform float gtf_windowHeight; +uniform float n; +uniform float f; + +void main() +{ + gl_Position = pos; + i = vec4((pos.x+1.0)*0.5*gtf_windowWidth, (pos.y+1.0)*0.5*gtf_windowHeight, (f-n)*0.5*pos.z + (f+n)*0.5, pos.w); +} + diff --git a/Test/baseLegalResults/hlsl.flattenSubset.frag.out b/Test/baseLegalResults/hlsl.flattenSubset.frag.out index 0edf7120..46d3afba 100644 --- a/Test/baseLegalResults/hlsl.flattenSubset.frag.out +++ b/Test/baseLegalResults/hlsl.flattenSubset.frag.out @@ -6,19 +6,17 @@ hlsl.flattenSubset.frag Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 47 50 + EntryPoint Fragment 4 "main" 50 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 21 "samp" Name 33 "tex" - Name 47 "vpos" Name 50 "@entryPointOutput" Decorate 21(samp) DescriptorSet 0 Decorate 21(samp) Binding 0 Decorate 33(tex) DescriptorSet 0 Decorate 33(tex) Binding 1 - Decorate 47(vpos) Location 0 Decorate 50(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 @@ -34,8 +32,6 @@ hlsl.flattenSubset.frag 39: TypeVector 6(float) 2 40: 6(float) Constant 1056964608 41: 39(fvec2) ConstantComposite 40 40 - 46: TypePointer Input 7(fvec4) - 47(vpos): 46(ptr) Variable Input 49: TypePointer Output 7(fvec4) 50(@entryPointOutput): 49(ptr) Variable Output 4(main): 2 Function None 3 diff --git a/Test/baseLegalResults/hlsl.flattenSubset2.frag.out b/Test/baseLegalResults/hlsl.flattenSubset2.frag.out index 00bd55be..408c0eac 100644 --- a/Test/baseLegalResults/hlsl.flattenSubset2.frag.out +++ b/Test/baseLegalResults/hlsl.flattenSubset2.frag.out @@ -6,13 +6,11 @@ hlsl.flattenSubset2.frag Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 49 52 + EntryPoint Fragment 4 "main" 52 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" - Name 49 "vpos" Name 52 "@entryPointOutput" - Decorate 49(vpos) Location 0 Decorate 52(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 @@ -20,8 +18,6 @@ hlsl.flattenSubset2.frag 7: TypeVector 6(float) 4 43: 6(float) Constant 0 44: 7(fvec4) ConstantComposite 43 43 43 43 - 48: TypePointer Input 7(fvec4) - 49(vpos): 48(ptr) Variable Input 51: TypePointer Output 7(fvec4) 52(@entryPointOutput): 51(ptr) Variable Output 4(main): 2 Function None 3 diff --git a/Test/baseResults/150.frag.out b/Test/baseResults/150.frag.out index 2192e14a..ba15b5cb 100644 --- a/Test/baseResults/150.frag.out +++ b/Test/baseResults/150.frag.out @@ -2,22 +2,23 @@ ERROR: 0:4: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord ERROR: 0:5: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord ERROR: 0:6: 'layout qualifier' : can only apply origin_upper_left and pixel_center_origin to gl_FragCoord -ERROR: 0:14: 'gl_FragCoord' : cannot redeclare after use ERROR: 0:50: 'gl_PerFragment' : undeclared identifier ERROR: 0:53: 'double' : Reserved word. ERROR: 0:53: 'double' : not supported for this version or the enabled extensions ERROR: 0:53: 'double' : must be qualified as flat in ERROR: 0:57: '=' : cannot convert from ' global double' to ' global int' -ERROR: 0:80: 'floatBitsToInt' : required extension not requested: GL_ARB_shader_bit_encoding +ERROR: 0:80: 'floatBitsToInt' : required extension not requested: Possible extensions include: +GL_ARB_shader_bit_encoding +GL_ARB_gpu_shader5 ERROR: 0:100: 'packSnorm2x16' : required extension not requested: GL_ARB_shading_language_packing -ERROR: 0:114: 'textureQueryLod' : required extension not requested: GL_ARB_texture_query_lod -ERROR: 0:115: 'textureQueryLod' : required extension not requested: GL_ARB_texture_query_lod -ERROR: 0:154: 'textureQueryLod' : no matching overloaded function found +ERROR: 0:114: 'textureQueryLOD' : required extension not requested: GL_ARB_texture_query_lod +ERROR: 0:115: 'textureQueryLOD' : required extension not requested: GL_ARB_texture_query_lod +ERROR: 0:154: 'textureQueryLOD' : no matching overloaded function found ERROR: 0:154: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' -ERROR: 0:155: 'textureQueryLod' : no matching overloaded function found +ERROR: 0:155: 'textureQueryLOD' : no matching overloaded function found ERROR: 0:155: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' ERROR: 0:183: 'mix' : required extension not requested: GL_EXT_shader_integer_mix -ERROR: 18 compilation errors. No code generated. +ERROR: 17 compilation errors. No code generated. Shader version: 150 diff --git a/Test/baseResults/150.geom.out b/Test/baseResults/150.geom.out index 92b8e1aa..c5a31f55 100644 --- a/Test/baseResults/150.geom.out +++ b/Test/baseResults/150.geom.out @@ -2,8 +2,8 @@ ERROR: 0:15: 'fromVertex' : block instance name redefinition ERROR: 0:19: 'fromVertex' : redefinition ERROR: 0:21: 'fooC' : block instance name redefinition -ERROR: 0:29: 'EmitStreamVertex' : no matching overloaded function found -ERROR: 0:30: 'EndStreamPrimitive' : no matching overloaded function found +ERROR: 0:29: 'if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5' : required extension not requested: GL_ARB_gpu_shader5 +ERROR: 0:30: 'if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5' : required extension not requested: GL_ARB_gpu_shader5 ERROR: 0:44: 'stream' : can only be used on an output ERROR: 0:45: 'stream' : can only be used on an output ERROR: 0:46: 'stream' : can only be used on an output @@ -49,10 +49,12 @@ ERROR: node is still EOpNull! 0:27 Sequence 0:27 EmitVertex ( global void) 0:28 EndPrimitive ( global void) -0:29 Constant: -0:29 0.000000 -0:30 Constant: -0:30 0.000000 +0:29 EmitStreamVertex ( global void) +0:29 Constant: +0:29 1 (const int) +0:30 EndStreamPrimitive ( global void) +0:30 Constant: +0:30 0 (const int) 0:32 move second child to first child ( temp 3-component vector of float) 0:32 color: direct index for structure (layout( stream=0) out 3-component vector of float) 0:32 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-component vector of float color}) @@ -190,10 +192,12 @@ ERROR: node is still EOpNull! 0:27 Sequence 0:27 EmitVertex ( global void) 0:28 EndPrimitive ( global void) -0:29 Constant: -0:29 0.000000 -0:30 Constant: -0:30 0.000000 +0:29 EmitStreamVertex ( global void) +0:29 Constant: +0:29 1 (const int) +0:30 EndStreamPrimitive ( global void) +0:30 Constant: +0:30 0 (const int) 0:32 move second child to first child ( temp 3-component vector of float) 0:32 color: direct index for structure (layout( stream=0) out 3-component vector of float) 0:32 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-component vector of float color}) diff --git a/Test/baseResults/150.tesc.out b/Test/baseResults/150.tesc.out index 535a8a62..78b32da2 100644 --- a/Test/baseResults/150.tesc.out +++ b/Test/baseResults/150.tesc.out @@ -627,7 +627,7 @@ ERROR: node is still EOpNull! ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb -ERROR: 0:26: 'gl_PointSize' : no such field in structure +ERROR: 0:26: 'gl_PointSize' : no such field in structure 'gl_out' ERROR: 0:26: 'assign' : cannot convert from ' temp float' to ' temp block{ out 4-component vector of float Position gl_Position}' ERROR: 0:29: 'out' : type must be an array: outf ERROR: 0:43: 'vertices' : must be greater than 0 @@ -940,8 +940,9 @@ ERROR: Linking tessellation control stage: Multiple function bodies in multiple main( ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: main( -ERROR: Linking tessellation control stage: Types must match: - outa: " global 4-element array of int" versus " global 1-element array of int" +ERROR: Linking tessellation control and tessellation control stages: Array sizes must be compatible: + tessellation control stage: " int outa[4]" + tessellation control stage: " int outa[1]" ERROR: Linking tessellation control stage: can't handle multiple entry points per stage ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: main( @@ -951,8 +952,9 @@ ERROR: Linking tessellation control stage: Multiple function bodies in multiple foo( ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: main( -ERROR: Linking tessellation control stage: Types must match: - gl_out: " out 4-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 2-element array of float ClipDistance gl_ClipDistance}" versus " out 3-element array of block{ out 4-component vector of float Position gl_Position}" +ERROR: Linking tessellation control and tessellation control stages: tessellation control block member has no corresponding member in tessellation control block: + tessellation control stage: Block: gl_PerVertex, Member: gl_PointSize + tessellation control stage: Block: gl_PerVertex, Member: n/a Linked tessellation evaluation stage: diff --git a/Test/baseResults/310.geom.out b/Test/baseResults/310.geom.out index b0dabc3b..2fa5d111 100644 --- a/Test/baseResults/310.geom.out +++ b/Test/baseResults/310.geom.out @@ -6,7 +6,7 @@ ERROR: 0:43: 'EmitStreamVertex' : no matching overloaded function found ERROR: 0:44: 'EndStreamPrimitive' : no matching overloaded function found ERROR: 0:47: 'gl_ClipDistance' : undeclared identifier ERROR: 0:47: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector -ERROR: 0:48: 'gl_ClipDistance' : no such field in structure +ERROR: 0:48: 'gl_ClipDistance' : no such field in structure 'gl_in' ERROR: 0:48: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:47: 'assign' : l-value required (can't modify a const) ERROR: 0:55: 'selecting output stream' : not supported with this profile: es diff --git a/Test/baseResults/310.tesc.out b/Test/baseResults/310.tesc.out index 25ce6ee9..bd4c1bdc 100644 --- a/Test/baseResults/310.tesc.out +++ b/Test/baseResults/310.tesc.out @@ -6,12 +6,12 @@ ERROR: 0:12: 'patch' : can only use on output in tessellation-control shader ERROR: 0:26: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size GL_OES_tessellation_point_size -ERROR: 0:27: 'gl_ClipDistance' : no such field in structure +ERROR: 0:27: 'gl_ClipDistance' : no such field in structure 'gl_in' ERROR: 0:27: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:34: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size GL_OES_tessellation_point_size -ERROR: 0:35: 'gl_ClipDistance' : no such field in structure +ERROR: 0:35: 'gl_ClipDistance' : no such field in structure 'gl_out' ERROR: 0:35: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:35: 'assign' : l-value required (can't modify a const) ERROR: 0:41: '' : tessellation control barrier() cannot be placed within flow control diff --git a/Test/baseResults/310.tese.out b/Test/baseResults/310.tese.out index 2f23d9ba..5eecaffa 100644 --- a/Test/baseResults/310.tese.out +++ b/Test/baseResults/310.tese.out @@ -10,7 +10,7 @@ ERROR: 0:26: 'barrier' : no matching overloaded function found ERROR: 0:37: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size GL_OES_tessellation_point_size -ERROR: 0:38: 'gl_ClipDistance' : no such field in structure +ERROR: 0:38: 'gl_ClipDistance' : no such field in structure 'gl_in' ERROR: 0:38: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:47: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size @@ -43,7 +43,7 @@ ERROR: 0:100: 'location' : overlapping use of location 24 ERROR: 0:103: 'location' : overlapping use of location 24 ERROR: 0:105: 'gl_TessLevelOuter' : identifiers starting with "gl_" are reserved ERROR: 0:113: 'sample' : Reserved word. -ERROR: 0:119: 'gl_PointSize' : no such field in structure +ERROR: 0:119: 'gl_PointSize' : no such field in structure 'gl_in' ERROR: 0:119: '=' : cannot convert from ' temp block{ in highp 4-component vector of float Position gl_Position}' to ' temp highp float' ERROR: 0:127: 'gl_BoundingBoxOES' : undeclared identifier ERROR: 43 compilation errors. No code generated. diff --git a/Test/baseResults/320.geom.out b/Test/baseResults/320.geom.out index f3337660..cdaacb91 100644 --- a/Test/baseResults/320.geom.out +++ b/Test/baseResults/320.geom.out @@ -6,7 +6,7 @@ ERROR: 0:33: 'EmitStreamVertex' : no matching overloaded function found ERROR: 0:34: 'EndStreamPrimitive' : no matching overloaded function found ERROR: 0:37: 'gl_ClipDistance' : undeclared identifier ERROR: 0:37: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector -ERROR: 0:38: 'gl_ClipDistance' : no such field in structure +ERROR: 0:38: 'gl_ClipDistance' : no such field in structure 'gl_in' ERROR: 0:38: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:37: 'assign' : l-value required (can't modify a const) ERROR: 0:45: 'selecting output stream' : not supported with this profile: es diff --git a/Test/baseResults/320.tesc.out b/Test/baseResults/320.tesc.out index 6bb52b30..67848d9b 100644 --- a/Test/baseResults/320.tesc.out +++ b/Test/baseResults/320.tesc.out @@ -6,12 +6,12 @@ ERROR: 0:10: 'patch' : can only use on output in tessellation-control shader ERROR: 0:24: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size GL_OES_tessellation_point_size -ERROR: 0:25: 'gl_ClipDistance' : no such field in structure +ERROR: 0:25: 'gl_ClipDistance' : no such field in structure 'gl_in' ERROR: 0:25: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:32: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size GL_OES_tessellation_point_size -ERROR: 0:33: 'gl_ClipDistance' : no such field in structure +ERROR: 0:33: 'gl_ClipDistance' : no such field in structure 'gl_out' ERROR: 0:33: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:33: 'assign' : l-value required (can't modify a const) ERROR: 0:39: '' : tessellation control barrier() cannot be placed within flow control diff --git a/Test/baseResults/320.tese.out b/Test/baseResults/320.tese.out index 014eeb0a..ba51b9c8 100644 --- a/Test/baseResults/320.tese.out +++ b/Test/baseResults/320.tese.out @@ -10,7 +10,7 @@ ERROR: 0:22: 'barrier' : no matching overloaded function found ERROR: 0:33: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size GL_OES_tessellation_point_size -ERROR: 0:34: 'gl_ClipDistance' : no such field in structure +ERROR: 0:34: 'gl_ClipDistance' : no such field in structure 'gl_in' ERROR: 0:34: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:43: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size diff --git a/Test/baseResults/410.geom.out b/Test/baseResults/410.geom.out index 498da5ac..3cc7900c 100644 --- a/Test/baseResults/410.geom.out +++ b/Test/baseResults/410.geom.out @@ -2,7 +2,7 @@ ERROR: 0:8: 'myIn' : cannot redeclare a built-in block with a user name ERROR: 0:12: 'gl_myIn' : no declaration found for redeclaration ERROR: 0:20: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use -ERROR: 0:32: 'gl_Position' : no such field in structure +ERROR: 0:32: 'gl_Position' : no such field in structure 'gl_in' ERROR: 0:32: '=' : cannot convert from ' temp block{ in float PointSize gl_PointSize}' to ' temp 4-component vector of float' ERROR: 0:33: 'gl_Position' : member of nameless block was not redeclared ERROR: 0:33: 'assign' : l-value required "gl_PerVertex" (can't modify void) diff --git a/Test/baseResults/420.tesc.out b/Test/baseResults/420.tesc.out index a1f881cb..4410c846 100644 --- a/Test/baseResults/420.tesc.out +++ b/Test/baseResults/420.tesc.out @@ -2,7 +2,7 @@ ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb -ERROR: 0:26: 'gl_PointSize' : no such field in structure +ERROR: 0:26: 'gl_PointSize' : no such field in structure 'gl_out' ERROR: 0:26: 'assign' : cannot convert from ' temp float' to ' temp block{ out 4-component vector of float Position gl_Position}' ERROR: 0:29: 'out' : type must be an array: outf ERROR: 0:43: 'vertices' : must be greater than 0 diff --git a/Test/baseResults/450.geom.out b/Test/baseResults/450.geom.out index e75bf939..b51a674f 100644 --- a/Test/baseResults/450.geom.out +++ b/Test/baseResults/450.geom.out @@ -1,6 +1,6 @@ 450.geom ERROR: 0:15: '[' : array index out of range '3' -ERROR: 0:15: 'gl_Position' : no such field in structure +ERROR: 0:15: 'gl_Position' : no such field in structure 'gl_in' ERROR: 0:19: 'points' : can only apply to a standalone qualifier ERROR: 3 compilation errors. No code generated. diff --git a/Test/baseResults/BestMatchFunction.vert.out b/Test/baseResults/BestMatchFunction.vert.out new file mode 100644 index 00000000..843ffd79 --- /dev/null +++ b/Test/baseResults/BestMatchFunction.vert.out @@ -0,0 +1,206 @@ +BestMatchFunction.vert +WARNING: 0:2: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5 + +Shader version: 150 +Requested GL_ARB_gpu_shader5 +0:? Sequence +0:7 Function Definition: f(vf4;vf4; ( global 4-component vector of float) +0:7 Function Parameters: +0:7 'a' ( in 4-component vector of float) +0:7 'b' ( in 4-component vector of float) +0:7 Sequence +0:7 Branch: Return with expression +0:7 component-wise multiply ( temp 4-component vector of float) +0:7 'a' ( in 4-component vector of float) +0:7 'b' ( in 4-component vector of float) +0:8 Function Definition: f(vu4;vu4; ( global 4-component vector of float) +0:8 Function Parameters: +0:8 'a' ( in 4-component vector of uint) +0:8 'b' ( in 4-component vector of uint) +0:8 Sequence +0:8 Branch: Return with expression +0:8 Convert uint to float ( temp 4-component vector of float) +0:8 subtract ( temp 4-component vector of uint) +0:8 'a' ( in 4-component vector of uint) +0:8 'b' ( in 4-component vector of uint) +0:10 Function Definition: main( ( global void) +0:10 Function Parameters: +0:12 Sequence +0:12 move second child to first child ( temp 4-component vector of float) +0:12 'result' ( smooth out 4-component vector of float) +0:12 Function Call: f(vu4;vu4; ( global 4-component vector of float) +0:12 Convert int to uint ( temp 4-component vector of uint) +0:12 'u1' ( uniform 4-component vector of int) +0:12 'u2' ( uniform 4-component vector of uint) +0:13 switch +0:13 condition +0:13 'gl_VertexID' ( gl_VertexId int VertexId) +0:13 body +0:13 Sequence +0:15 case: with expression +0:15 Constant: +0:15 0 (const int) +0:? Sequence +0:15 move second child to first child ( temp 4-component vector of float) +0:15 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:15 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:15 Constant: +0:15 0 (const uint) +0:15 Constant: +0:15 -1.000000 +0:15 1.000000 +0:15 0.000000 +0:15 1.000000 +0:15 Branch: Break +0:16 case: with expression +0:16 Constant: +0:16 1 (const int) +0:? Sequence +0:16 move second child to first child ( temp 4-component vector of float) +0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:16 Constant: +0:16 0 (const uint) +0:16 Constant: +0:16 1.000000 +0:16 1.000000 +0:16 0.000000 +0:16 1.000000 +0:16 Branch: Break +0:17 case: with expression +0:17 Constant: +0:17 2 (const int) +0:? Sequence +0:17 move second child to first child ( temp 4-component vector of float) +0:17 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:17 Constant: +0:17 0 (const uint) +0:17 Constant: +0:17 -1.000000 +0:17 -1.000000 +0:17 0.000000 +0:17 1.000000 +0:17 Branch: Break +0:18 case: with expression +0:18 Constant: +0:18 3 (const int) +0:? Sequence +0:18 move second child to first child ( temp 4-component vector of float) +0:18 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:18 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:18 Constant: +0:18 0 (const uint) +0:18 Constant: +0:18 1.000000 +0:18 -1.000000 +0:18 0.000000 +0:18 1.000000 +0:18 Branch: Break +0:? Linker Objects +0:? 'u1' ( uniform 4-component vector of int) +0:? 'u2' ( uniform 4-component vector of uint) +0:? 'result' ( smooth out 4-component vector of float) +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + + +Linked vertex stage: + + +Shader version: 150 +Requested GL_ARB_gpu_shader5 +0:? Sequence +0:8 Function Definition: f(vu4;vu4; ( global 4-component vector of float) +0:8 Function Parameters: +0:8 'a' ( in 4-component vector of uint) +0:8 'b' ( in 4-component vector of uint) +0:8 Sequence +0:8 Branch: Return with expression +0:8 Convert uint to float ( temp 4-component vector of float) +0:8 subtract ( temp 4-component vector of uint) +0:8 'a' ( in 4-component vector of uint) +0:8 'b' ( in 4-component vector of uint) +0:10 Function Definition: main( ( global void) +0:10 Function Parameters: +0:12 Sequence +0:12 move second child to first child ( temp 4-component vector of float) +0:12 'result' ( smooth out 4-component vector of float) +0:12 Function Call: f(vu4;vu4; ( global 4-component vector of float) +0:12 Convert int to uint ( temp 4-component vector of uint) +0:12 'u1' ( uniform 4-component vector of int) +0:12 'u2' ( uniform 4-component vector of uint) +0:13 switch +0:13 condition +0:13 'gl_VertexID' ( gl_VertexId int VertexId) +0:13 body +0:13 Sequence +0:15 case: with expression +0:15 Constant: +0:15 0 (const int) +0:? Sequence +0:15 move second child to first child ( temp 4-component vector of float) +0:15 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:15 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:15 Constant: +0:15 0 (const uint) +0:15 Constant: +0:15 -1.000000 +0:15 1.000000 +0:15 0.000000 +0:15 1.000000 +0:15 Branch: Break +0:16 case: with expression +0:16 Constant: +0:16 1 (const int) +0:? Sequence +0:16 move second child to first child ( temp 4-component vector of float) +0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:16 Constant: +0:16 0 (const uint) +0:16 Constant: +0:16 1.000000 +0:16 1.000000 +0:16 0.000000 +0:16 1.000000 +0:16 Branch: Break +0:17 case: with expression +0:17 Constant: +0:17 2 (const int) +0:? Sequence +0:17 move second child to first child ( temp 4-component vector of float) +0:17 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:17 Constant: +0:17 0 (const uint) +0:17 Constant: +0:17 -1.000000 +0:17 -1.000000 +0:17 0.000000 +0:17 1.000000 +0:17 Branch: Break +0:18 case: with expression +0:18 Constant: +0:18 3 (const int) +0:? Sequence +0:18 move second child to first child ( temp 4-component vector of float) +0:18 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:18 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:18 Constant: +0:18 0 (const uint) +0:18 Constant: +0:18 1.000000 +0:18 -1.000000 +0:18 0.000000 +0:18 1.000000 +0:18 Branch: Break +0:? Linker Objects +0:? 'u1' ( uniform 4-component vector of int) +0:? 'u2' ( uniform 4-component vector of uint) +0:? 'result' ( smooth out 4-component vector of float) +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + diff --git a/Test/baseResults/EndStreamPrimitive.geom.out b/Test/baseResults/EndStreamPrimitive.geom.out new file mode 100644 index 00000000..702c3f97 --- /dev/null +++ b/Test/baseResults/EndStreamPrimitive.geom.out @@ -0,0 +1,97 @@ +EndStreamPrimitive.geom +WARNING: 0:2: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5 + +Shader version: 150 +Requested GL_ARB_gpu_shader5 +invocations = -1 +max_vertices = 1 +input primitive = points +output primitive = points +0:? Sequence +0:10 Function Definition: main( ( global void) +0:10 Function Parameters: +0:12 Sequence +0:12 move second child to first child ( temp float) +0:12 'output1' (layout( stream=0) out float) +0:12 Constant: +0:12 1.000000 +0:13 move second child to first child ( temp float) +0:13 'output2' (layout( stream=0) out float) +0:13 Constant: +0:13 2.000000 +0:14 EmitStreamVertex ( global void) +0:14 Constant: +0:14 0 (const int) +0:15 EndStreamPrimitive ( global void) +0:15 Constant: +0:15 0 (const int) +0:16 move second child to first child ( temp float) +0:16 'output3' (layout( stream=1) out float) +0:16 Constant: +0:16 3.000000 +0:17 move second child to first child ( temp float) +0:17 'output4' (layout( stream=1) out float) +0:17 Constant: +0:17 4.000000 +0:18 EmitStreamVertex ( global void) +0:18 Constant: +0:18 1 (const int) +0:19 EndStreamPrimitive ( global void) +0:19 Constant: +0:19 1 (const int) +0:? Linker Objects +0:? 'output1' (layout( stream=0) out float) +0:? 'output2' (layout( stream=0) out float) +0:? 'output3' (layout( stream=1) out float) +0:? 'output4' (layout( stream=1) out float) +0:? 'stream' ( uniform uint) + + +Linked geometry stage: + + +Shader version: 150 +Requested GL_ARB_gpu_shader5 +invocations = 1 +max_vertices = 1 +input primitive = points +output primitive = points +0:? Sequence +0:10 Function Definition: main( ( global void) +0:10 Function Parameters: +0:12 Sequence +0:12 move second child to first child ( temp float) +0:12 'output1' (layout( stream=0) out float) +0:12 Constant: +0:12 1.000000 +0:13 move second child to first child ( temp float) +0:13 'output2' (layout( stream=0) out float) +0:13 Constant: +0:13 2.000000 +0:14 EmitStreamVertex ( global void) +0:14 Constant: +0:14 0 (const int) +0:15 EndStreamPrimitive ( global void) +0:15 Constant: +0:15 0 (const int) +0:16 move second child to first child ( temp float) +0:16 'output3' (layout( stream=1) out float) +0:16 Constant: +0:16 3.000000 +0:17 move second child to first child ( temp float) +0:17 'output4' (layout( stream=1) out float) +0:17 Constant: +0:17 4.000000 +0:18 EmitStreamVertex ( global void) +0:18 Constant: +0:18 1 (const int) +0:19 EndStreamPrimitive ( global void) +0:19 Constant: +0:19 1 (const int) +0:? Linker Objects +0:? 'output1' (layout( stream=0) out float) +0:? 'output2' (layout( stream=0) out float) +0:? 'output3' (layout( stream=1) out float) +0:? 'output4' (layout( stream=1) out float) +0:? 'stream' ( uniform uint) + diff --git a/Test/baseResults/GL_ARB_fragment_coord_conventions.vert.out b/Test/baseResults/GL_ARB_fragment_coord_conventions.vert.out new file mode 100644 index 00000000..3b55ae0d --- /dev/null +++ b/Test/baseResults/GL_ARB_fragment_coord_conventions.vert.out @@ -0,0 +1,143 @@ +GL_ARB_fragment_coord_conventions.vert +Shader version: 140 +Requested GL_ARB_explicit_attrib_location +Requested GL_ARB_fragment_coord_conventions +0:? Sequence +0:22 Function Definition: main( ( global void) +0:22 Function Parameters: +0:24 Sequence +0:24 move second child to first child ( temp 4-component vector of float) +0:24 'gl_Position' ( gl_Position 4-component vector of float Position) +0:24 'pos' (layout( location=0) in 4-component vector of float) +0:25 move second child to first child ( temp 4-component vector of float) +0:25 'i' ( smooth out 4-component vector of float) +0:25 Construct vec4 ( temp 4-component vector of float) +0:25 component-wise multiply ( temp float) +0:25 component-wise multiply ( temp float) +0:25 add ( temp float) +0:25 direct index ( temp float) +0:25 'pos' (layout( location=0) in 4-component vector of float) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1.000000 +0:25 Constant: +0:25 0.500000 +0:25 'gtf_windowWidth' ( uniform float) +0:25 component-wise multiply ( temp float) +0:25 component-wise multiply ( temp float) +0:25 add ( temp float) +0:25 direct index ( temp float) +0:25 'pos' (layout( location=0) in 4-component vector of float) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 1.000000 +0:25 Constant: +0:25 0.500000 +0:25 'gtf_windowHeight' ( uniform float) +0:25 add ( temp float) +0:25 component-wise multiply ( temp float) +0:25 component-wise multiply ( temp float) +0:25 subtract ( temp float) +0:25 'f' ( uniform float) +0:25 'n' ( uniform float) +0:25 Constant: +0:25 0.500000 +0:25 direct index ( temp float) +0:25 'pos' (layout( location=0) in 4-component vector of float) +0:25 Constant: +0:25 2 (const int) +0:25 component-wise multiply ( temp float) +0:25 add ( temp float) +0:25 'f' ( uniform float) +0:25 'n' ( uniform float) +0:25 Constant: +0:25 0.500000 +0:25 direct index ( temp float) +0:25 'pos' (layout( location=0) in 4-component vector of float) +0:25 Constant: +0:25 3 (const int) +0:? Linker Objects +0:? 'pos' (layout( location=0) in 4-component vector of float) +0:? 'i' ( smooth out 4-component vector of float) +0:? 'gtf_windowWidth' ( uniform float) +0:? 'gtf_windowHeight' ( uniform float) +0:? 'n' ( uniform float) +0:? 'f' ( uniform float) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + + +Linked vertex stage: + + +Shader version: 140 +Requested GL_ARB_explicit_attrib_location +Requested GL_ARB_fragment_coord_conventions +0:? Sequence +0:22 Function Definition: main( ( global void) +0:22 Function Parameters: +0:24 Sequence +0:24 move second child to first child ( temp 4-component vector of float) +0:24 'gl_Position' ( gl_Position 4-component vector of float Position) +0:24 'pos' (layout( location=0) in 4-component vector of float) +0:25 move second child to first child ( temp 4-component vector of float) +0:25 'i' ( smooth out 4-component vector of float) +0:25 Construct vec4 ( temp 4-component vector of float) +0:25 component-wise multiply ( temp float) +0:25 component-wise multiply ( temp float) +0:25 add ( temp float) +0:25 direct index ( temp float) +0:25 'pos' (layout( location=0) in 4-component vector of float) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1.000000 +0:25 Constant: +0:25 0.500000 +0:25 'gtf_windowWidth' ( uniform float) +0:25 component-wise multiply ( temp float) +0:25 component-wise multiply ( temp float) +0:25 add ( temp float) +0:25 direct index ( temp float) +0:25 'pos' (layout( location=0) in 4-component vector of float) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 1.000000 +0:25 Constant: +0:25 0.500000 +0:25 'gtf_windowHeight' ( uniform float) +0:25 add ( temp float) +0:25 component-wise multiply ( temp float) +0:25 component-wise multiply ( temp float) +0:25 subtract ( temp float) +0:25 'f' ( uniform float) +0:25 'n' ( uniform float) +0:25 Constant: +0:25 0.500000 +0:25 direct index ( temp float) +0:25 'pos' (layout( location=0) in 4-component vector of float) +0:25 Constant: +0:25 2 (const int) +0:25 component-wise multiply ( temp float) +0:25 add ( temp float) +0:25 'f' ( uniform float) +0:25 'n' ( uniform float) +0:25 Constant: +0:25 0.500000 +0:25 direct index ( temp float) +0:25 'pos' (layout( location=0) in 4-component vector of float) +0:25 Constant: +0:25 3 (const int) +0:? Linker Objects +0:? 'pos' (layout( location=0) in 4-component vector of float) +0:? 'i' ( smooth out 4-component vector of float) +0:? 'gtf_windowWidth' ( uniform float) +0:? 'gtf_windowHeight' ( uniform float) +0:? 'n' ( uniform float) +0:? 'f' ( uniform float) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + diff --git a/Test/baseResults/constantUnaryConversion.comp.out b/Test/baseResults/constantUnaryConversion.comp.out index fcaf6f22..78372f06 100644 --- a/Test/baseResults/constantUnaryConversion.comp.out +++ b/Test/baseResults/constantUnaryConversion.comp.out @@ -3,8 +3,8 @@ Shader version: 450 Requested GL_EXT_shader_explicit_arithmetic_types local_size = (1, 1, 1) 0:? Sequence -0:48 Function Definition: main( ( global void) -0:48 Function Parameters: +0:69 Function Definition: main( ( global void) +0:69 Function Parameters: 0:? Linker Objects 0:? 'bool_init' ( const bool) 0:? true (const bool) @@ -29,6 +29,12 @@ local_size = (1, 1, 1) 0:? 'float32_t_init' ( const float) 0:? 13.000000 0:? 'float64_t_init' ( const double) +0:? 4.000000 +0:? 'neg_float16_t_init' ( const float16_t) +0:? -42.000000 +0:? 'neg_float32_t_init' ( const float) +0:? -13.000000 +0:? 'neg_float64_t_init' ( const double) 0:? -4.000000 0:? 'bool_to_bool' ( const bool) 0:? true (const bool) @@ -77,7 +83,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_int8_t' ( const int8_t) 0:? 13 (const int8_t) 0:? 'float64_t_to_int8_t' ( const int8_t) -0:? -4 (const int8_t) +0:? 4 (const int8_t) 0:? 'bool_to_int16_t' ( const int16_t) 0:? 1 (const int16_t) 0:? 'int8_t_to_int16_t' ( const int16_t) @@ -101,7 +107,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_int16_t' ( const int16_t) 0:? 13 (const int16_t) 0:? 'float64_t_to_int16_t' ( const int16_t) -0:? -4 (const int16_t) +0:? 4 (const int16_t) 0:? 'bool_to_int32_t' ( const int) 0:? 1 (const int) 0:? 'int8_t_to_int32_t' ( const int) @@ -125,7 +131,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_int32_t' ( const int) 0:? 13 (const int) 0:? 'float64_t_to_int32_t' ( const int) -0:? -4 (const int) +0:? 4 (const int) 0:? 'bool_to_int64_t' ( const int64_t) 0:? 1 (const int64_t) 0:? 'int8_t_to_int64_t' ( const int64_t) @@ -149,7 +155,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_int64_t' ( const int64_t) 0:? 13 (const int64_t) 0:? 'float64_t_to_int64_t' ( const int64_t) -0:? -4 (const int64_t) +0:? 4 (const int64_t) 0:? 'bool_to_uint8_t' ( const uint8_t) 0:? 1 (const uint8_t) 0:? 'int8_t_to_uint8_t' ( const uint8_t) @@ -173,7 +179,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_uint8_t' ( const uint8_t) 0:? 13 (const uint8_t) 0:? 'float64_t_to_uint8_t' ( const uint8_t) -0:? 252 (const uint8_t) +0:? 4 (const uint8_t) 0:? 'bool_to_uint16_t' ( const uint16_t) 0:? 1 (const uint16_t) 0:? 'int8_t_to_uint16_t' ( const uint16_t) @@ -197,7 +203,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_uint16_t' ( const uint16_t) 0:? 13 (const uint16_t) 0:? 'float64_t_to_uint16_t' ( const uint16_t) -0:? 65532 (const uint16_t) +0:? 4 (const uint16_t) 0:? 'bool_to_uint32_t' ( const uint) 0:? 1 (const uint) 0:? 'int8_t_to_uint32_t' ( const uint) @@ -221,7 +227,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_uint32_t' ( const uint) 0:? 13 (const uint) 0:? 'float64_t_to_uint32_t' ( const uint) -0:? 4294967292 (const uint) +0:? 4 (const uint) 0:? 'bool_to_uint64_t' ( const uint64_t) 0:? 1 (const uint64_t) 0:? 'int8_t_to_uint64_t' ( const uint64_t) @@ -245,7 +251,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_uint64_t' ( const uint64_t) 0:? 13 (const uint64_t) 0:? 'float64_t_to_uint64_t' ( const uint64_t) -0:? 18446744073709551612 (const uint64_t) +0:? 4 (const uint64_t) 0:? 'bool_to_float16_t' ( const float16_t) 0:? 1.000000 0:? 'int8_t_to_float16_t' ( const float16_t) @@ -269,7 +275,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_float16_t' ( const float16_t) 0:? 13.000000 0:? 'float64_t_to_float16_t' ( const float16_t) -0:? -4.000000 +0:? 4.000000 0:? 'bool_to_float32_t' ( const float) 0:? 1.000000 0:? 'int8_t_to_float32_t' ( const float) @@ -293,7 +299,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_float32_t' ( const float) 0:? 13.000000 0:? 'float64_t_to_float32_t' ( const float) -0:? -4.000000 +0:? 4.000000 0:? 'bool_to_float64_t' ( const double) 0:? 1.000000 0:? 'int8_t_to_float64_t' ( const double) @@ -317,6 +323,54 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_float64_t' ( const double) 0:? 13.000000 0:? 'float64_t_to_float64_t' ( const double) +0:? 4.000000 +0:? 'neg_float16_t_to_bool' ( const bool) +0:? true (const bool) +0:? 'neg_float32_t_to_bool' ( const bool) +0:? true (const bool) +0:? 'neg_float64_t_to_bool' ( const bool) +0:? true (const bool) +0:? 'neg_float16_t_to_int8_t' ( const int8_t) +0:? -42 (const int8_t) +0:? 'neg_float32_t_to_int8_t' ( const int8_t) +0:? -13 (const int8_t) +0:? 'neg_float64_t_to_int8_t' ( const int8_t) +0:? -4 (const int8_t) +0:? 'neg_float16_t_to_int16_t' ( const int16_t) +0:? -42 (const int16_t) +0:? 'neg_float32_t_to_int16_t' ( const int16_t) +0:? -13 (const int16_t) +0:? 'neg_float64_t_to_int16_t' ( const int16_t) +0:? -4 (const int16_t) +0:? 'neg_float16_t_to_int32_t' ( const int) +0:? -42 (const int) +0:? 'neg_float32_t_to_int32_t' ( const int) +0:? -13 (const int) +0:? 'neg_float64_t_to_int32_t' ( const int) +0:? -4 (const int) +0:? 'neg_float16_t_to_int64_t' ( const int64_t) +0:? -42 (const int64_t) +0:? 'neg_float32_t_to_int64_t' ( const int64_t) +0:? -13 (const int64_t) +0:? 'neg_float64_t_to_int64_t' ( const int64_t) +0:? -4 (const int64_t) +0:? 'neg_float16_t_to_float16_t' ( const float16_t) +0:? -42.000000 +0:? 'neg_float32_t_to_float16_t' ( const float16_t) +0:? -13.000000 +0:? 'neg_float64_t_to_float16_t' ( const float16_t) +0:? -4.000000 +0:? 'neg_float16_t_to_float32_t' ( const float) +0:? -42.000000 +0:? 'neg_float32_t_to_float32_t' ( const float) +0:? -13.000000 +0:? 'neg_float64_t_to_float32_t' ( const float) +0:? -4.000000 +0:? 'neg_float16_t_to_float64_t' ( const double) +0:? -42.000000 +0:? 'neg_float32_t_to_float64_t' ( const double) +0:? -13.000000 +0:? 'neg_float64_t_to_float64_t' ( const double) 0:? -4.000000 @@ -327,8 +381,8 @@ Shader version: 450 Requested GL_EXT_shader_explicit_arithmetic_types local_size = (1, 1, 1) 0:? Sequence -0:48 Function Definition: main( ( global void) -0:48 Function Parameters: +0:69 Function Definition: main( ( global void) +0:69 Function Parameters: 0:? Linker Objects 0:? 'bool_init' ( const bool) 0:? true (const bool) @@ -353,6 +407,12 @@ local_size = (1, 1, 1) 0:? 'float32_t_init' ( const float) 0:? 13.000000 0:? 'float64_t_init' ( const double) +0:? 4.000000 +0:? 'neg_float16_t_init' ( const float16_t) +0:? -42.000000 +0:? 'neg_float32_t_init' ( const float) +0:? -13.000000 +0:? 'neg_float64_t_init' ( const double) 0:? -4.000000 0:? 'bool_to_bool' ( const bool) 0:? true (const bool) @@ -401,7 +461,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_int8_t' ( const int8_t) 0:? 13 (const int8_t) 0:? 'float64_t_to_int8_t' ( const int8_t) -0:? -4 (const int8_t) +0:? 4 (const int8_t) 0:? 'bool_to_int16_t' ( const int16_t) 0:? 1 (const int16_t) 0:? 'int8_t_to_int16_t' ( const int16_t) @@ -425,7 +485,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_int16_t' ( const int16_t) 0:? 13 (const int16_t) 0:? 'float64_t_to_int16_t' ( const int16_t) -0:? -4 (const int16_t) +0:? 4 (const int16_t) 0:? 'bool_to_int32_t' ( const int) 0:? 1 (const int) 0:? 'int8_t_to_int32_t' ( const int) @@ -449,7 +509,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_int32_t' ( const int) 0:? 13 (const int) 0:? 'float64_t_to_int32_t' ( const int) -0:? -4 (const int) +0:? 4 (const int) 0:? 'bool_to_int64_t' ( const int64_t) 0:? 1 (const int64_t) 0:? 'int8_t_to_int64_t' ( const int64_t) @@ -473,7 +533,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_int64_t' ( const int64_t) 0:? 13 (const int64_t) 0:? 'float64_t_to_int64_t' ( const int64_t) -0:? -4 (const int64_t) +0:? 4 (const int64_t) 0:? 'bool_to_uint8_t' ( const uint8_t) 0:? 1 (const uint8_t) 0:? 'int8_t_to_uint8_t' ( const uint8_t) @@ -497,7 +557,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_uint8_t' ( const uint8_t) 0:? 13 (const uint8_t) 0:? 'float64_t_to_uint8_t' ( const uint8_t) -0:? 252 (const uint8_t) +0:? 4 (const uint8_t) 0:? 'bool_to_uint16_t' ( const uint16_t) 0:? 1 (const uint16_t) 0:? 'int8_t_to_uint16_t' ( const uint16_t) @@ -521,7 +581,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_uint16_t' ( const uint16_t) 0:? 13 (const uint16_t) 0:? 'float64_t_to_uint16_t' ( const uint16_t) -0:? 65532 (const uint16_t) +0:? 4 (const uint16_t) 0:? 'bool_to_uint32_t' ( const uint) 0:? 1 (const uint) 0:? 'int8_t_to_uint32_t' ( const uint) @@ -545,7 +605,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_uint32_t' ( const uint) 0:? 13 (const uint) 0:? 'float64_t_to_uint32_t' ( const uint) -0:? 4294967292 (const uint) +0:? 4 (const uint) 0:? 'bool_to_uint64_t' ( const uint64_t) 0:? 1 (const uint64_t) 0:? 'int8_t_to_uint64_t' ( const uint64_t) @@ -569,7 +629,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_uint64_t' ( const uint64_t) 0:? 13 (const uint64_t) 0:? 'float64_t_to_uint64_t' ( const uint64_t) -0:? 18446744073709551612 (const uint64_t) +0:? 4 (const uint64_t) 0:? 'bool_to_float16_t' ( const float16_t) 0:? 1.000000 0:? 'int8_t_to_float16_t' ( const float16_t) @@ -593,7 +653,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_float16_t' ( const float16_t) 0:? 13.000000 0:? 'float64_t_to_float16_t' ( const float16_t) -0:? -4.000000 +0:? 4.000000 0:? 'bool_to_float32_t' ( const float) 0:? 1.000000 0:? 'int8_t_to_float32_t' ( const float) @@ -617,7 +677,7 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_float32_t' ( const float) 0:? 13.000000 0:? 'float64_t_to_float32_t' ( const float) -0:? -4.000000 +0:? 4.000000 0:? 'bool_to_float64_t' ( const double) 0:? 1.000000 0:? 'int8_t_to_float64_t' ( const double) @@ -641,5 +701,53 @@ local_size = (1, 1, 1) 0:? 'float32_t_to_float64_t' ( const double) 0:? 13.000000 0:? 'float64_t_to_float64_t' ( const double) +0:? 4.000000 +0:? 'neg_float16_t_to_bool' ( const bool) +0:? true (const bool) +0:? 'neg_float32_t_to_bool' ( const bool) +0:? true (const bool) +0:? 'neg_float64_t_to_bool' ( const bool) +0:? true (const bool) +0:? 'neg_float16_t_to_int8_t' ( const int8_t) +0:? -42 (const int8_t) +0:? 'neg_float32_t_to_int8_t' ( const int8_t) +0:? -13 (const int8_t) +0:? 'neg_float64_t_to_int8_t' ( const int8_t) +0:? -4 (const int8_t) +0:? 'neg_float16_t_to_int16_t' ( const int16_t) +0:? -42 (const int16_t) +0:? 'neg_float32_t_to_int16_t' ( const int16_t) +0:? -13 (const int16_t) +0:? 'neg_float64_t_to_int16_t' ( const int16_t) +0:? -4 (const int16_t) +0:? 'neg_float16_t_to_int32_t' ( const int) +0:? -42 (const int) +0:? 'neg_float32_t_to_int32_t' ( const int) +0:? -13 (const int) +0:? 'neg_float64_t_to_int32_t' ( const int) +0:? -4 (const int) +0:? 'neg_float16_t_to_int64_t' ( const int64_t) +0:? -42 (const int64_t) +0:? 'neg_float32_t_to_int64_t' ( const int64_t) +0:? -13 (const int64_t) +0:? 'neg_float64_t_to_int64_t' ( const int64_t) +0:? -4 (const int64_t) +0:? 'neg_float16_t_to_float16_t' ( const float16_t) +0:? -42.000000 +0:? 'neg_float32_t_to_float16_t' ( const float16_t) +0:? -13.000000 +0:? 'neg_float64_t_to_float16_t' ( const float16_t) +0:? -4.000000 +0:? 'neg_float16_t_to_float32_t' ( const float) +0:? -42.000000 +0:? 'neg_float32_t_to_float32_t' ( const float) +0:? -13.000000 +0:? 'neg_float64_t_to_float32_t' ( const float) +0:? -4.000000 +0:? 'neg_float16_t_to_float64_t' ( const double) +0:? -42.000000 +0:? 'neg_float32_t_to_float64_t' ( const double) +0:? -13.000000 +0:? 'neg_float64_t_to_float64_t' ( const double) 0:? -4.000000 diff --git a/Test/baseResults/coord_conventions.frag.out b/Test/baseResults/coord_conventions.frag.out new file mode 100644 index 00000000..656c6087 --- /dev/null +++ b/Test/baseResults/coord_conventions.frag.out @@ -0,0 +1,255 @@ +coord_conventions.frag +Shader version: 140 +Requested GL_ARB_explicit_attrib_location +Requested GL_ARB_fragment_coord_conventions +gl_FragCoord pixel center is integer +gl_FragCoord origin is upper left +0:? Sequence +0:17 Function Definition: main( ( global void) +0:17 Function Parameters: +0:19 Sequence +0:19 move second child to first child ( temp 4-component vector of float) +0:19 'myColor' (layout( location=0) out 4-component vector of float) +0:19 Constant: +0:19 0.200000 +0:19 0.200000 +0:19 0.200000 +0:19 0.200000 +0:20 Test condition and select ( temp void) +0:20 Condition +0:20 Compare Greater Than or Equal ( temp bool) +0:20 direct index ( temp float) +0:20 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:20 Constant: +0:20 1 (const int) +0:20 Constant: +0:20 10.000000 +0:20 true case +0:21 Sequence +0:21 move second child to first child ( temp float) +0:21 direct index ( temp float) +0:21 'myColor' (layout( location=0) out 4-component vector of float) +0:21 Constant: +0:21 2 (const int) +0:21 Constant: +0:21 0.800000 +0:23 Test condition and select ( temp void) +0:23 Condition +0:23 Compare Equal ( temp bool) +0:23 direct index ( temp float) +0:23 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:23 Constant: +0:23 1 (const int) +0:23 trunc ( global float) +0:23 direct index ( temp float) +0:23 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:23 Constant: +0:23 1 (const int) +0:23 true case +0:24 Sequence +0:24 move second child to first child ( temp float) +0:24 direct index ( temp float) +0:24 'myColor' (layout( location=0) out 4-component vector of float) +0:24 Constant: +0:24 1 (const int) +0:24 Constant: +0:24 0.800000 +0:26 Test condition and select ( temp void) +0:26 Condition +0:26 Compare Equal ( temp bool) +0:26 direct index ( temp float) +0:26 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:26 Constant: +0:26 0 (const int) +0:26 trunc ( global float) +0:26 direct index ( temp float) +0:26 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:26 Constant: +0:26 0 (const int) +0:26 true case +0:27 Sequence +0:27 move second child to first child ( temp float) +0:27 direct index ( temp float) +0:27 'myColor' (layout( location=0) out 4-component vector of float) +0:27 Constant: +0:27 0 (const int) +0:27 Constant: +0:27 0.800000 +0:30 Sequence +0:30 move second child to first child ( temp 4-component vector of float) +0:30 'diff' ( temp 4-component vector of float) +0:30 subtract ( temp 4-component vector of float) +0:30 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:30 'i' ( smooth in 4-component vector of float) +0:31 Test condition and select ( temp void) +0:31 Condition +0:31 Compare Greater Than ( temp bool) +0:31 Absolute value ( global float) +0:31 direct index ( temp float) +0:31 'diff' ( temp 4-component vector of float) +0:31 Constant: +0:31 2 (const int) +0:31 Constant: +0:31 0.001000 +0:31 true case +0:32 move second child to first child ( temp float) +0:32 direct index ( temp float) +0:32 'myColor' (layout( location=0) out 4-component vector of float) +0:32 Constant: +0:32 2 (const int) +0:32 Constant: +0:32 0.500000 +0:33 Test condition and select ( temp void) +0:33 Condition +0:33 Compare Greater Than ( temp bool) +0:33 Absolute value ( global float) +0:33 direct index ( temp float) +0:33 'diff' ( temp 4-component vector of float) +0:33 Constant: +0:33 3 (const int) +0:33 Constant: +0:33 0.001000 +0:33 true case +0:34 move second child to first child ( temp float) +0:34 direct index ( temp float) +0:34 'myColor' (layout( location=0) out 4-component vector of float) +0:34 Constant: +0:34 3 (const int) +0:34 Constant: +0:34 0.500000 +0:? Linker Objects +0:? 'i' ( smooth in 4-component vector of float) +0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:? 'myColor' (layout( location=0) out 4-component vector of float) +0:? 'eps' ( const float) +0:? 0.001000 + + +Linked fragment stage: + + +Shader version: 140 +Requested GL_ARB_explicit_attrib_location +Requested GL_ARB_fragment_coord_conventions +gl_FragCoord pixel center is integer +gl_FragCoord origin is upper left +0:? Sequence +0:17 Function Definition: main( ( global void) +0:17 Function Parameters: +0:19 Sequence +0:19 move second child to first child ( temp 4-component vector of float) +0:19 'myColor' (layout( location=0) out 4-component vector of float) +0:19 Constant: +0:19 0.200000 +0:19 0.200000 +0:19 0.200000 +0:19 0.200000 +0:20 Test condition and select ( temp void) +0:20 Condition +0:20 Compare Greater Than or Equal ( temp bool) +0:20 direct index ( temp float) +0:20 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:20 Constant: +0:20 1 (const int) +0:20 Constant: +0:20 10.000000 +0:20 true case +0:21 Sequence +0:21 move second child to first child ( temp float) +0:21 direct index ( temp float) +0:21 'myColor' (layout( location=0) out 4-component vector of float) +0:21 Constant: +0:21 2 (const int) +0:21 Constant: +0:21 0.800000 +0:23 Test condition and select ( temp void) +0:23 Condition +0:23 Compare Equal ( temp bool) +0:23 direct index ( temp float) +0:23 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:23 Constant: +0:23 1 (const int) +0:23 trunc ( global float) +0:23 direct index ( temp float) +0:23 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:23 Constant: +0:23 1 (const int) +0:23 true case +0:24 Sequence +0:24 move second child to first child ( temp float) +0:24 direct index ( temp float) +0:24 'myColor' (layout( location=0) out 4-component vector of float) +0:24 Constant: +0:24 1 (const int) +0:24 Constant: +0:24 0.800000 +0:26 Test condition and select ( temp void) +0:26 Condition +0:26 Compare Equal ( temp bool) +0:26 direct index ( temp float) +0:26 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:26 Constant: +0:26 0 (const int) +0:26 trunc ( global float) +0:26 direct index ( temp float) +0:26 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:26 Constant: +0:26 0 (const int) +0:26 true case +0:27 Sequence +0:27 move second child to first child ( temp float) +0:27 direct index ( temp float) +0:27 'myColor' (layout( location=0) out 4-component vector of float) +0:27 Constant: +0:27 0 (const int) +0:27 Constant: +0:27 0.800000 +0:30 Sequence +0:30 move second child to first child ( temp 4-component vector of float) +0:30 'diff' ( temp 4-component vector of float) +0:30 subtract ( temp 4-component vector of float) +0:30 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:30 'i' ( smooth in 4-component vector of float) +0:31 Test condition and select ( temp void) +0:31 Condition +0:31 Compare Greater Than ( temp bool) +0:31 Absolute value ( global float) +0:31 direct index ( temp float) +0:31 'diff' ( temp 4-component vector of float) +0:31 Constant: +0:31 2 (const int) +0:31 Constant: +0:31 0.001000 +0:31 true case +0:32 move second child to first child ( temp float) +0:32 direct index ( temp float) +0:32 'myColor' (layout( location=0) out 4-component vector of float) +0:32 Constant: +0:32 2 (const int) +0:32 Constant: +0:32 0.500000 +0:33 Test condition and select ( temp void) +0:33 Condition +0:33 Compare Greater Than ( temp bool) +0:33 Absolute value ( global float) +0:33 direct index ( temp float) +0:33 'diff' ( temp 4-component vector of float) +0:33 Constant: +0:33 3 (const int) +0:33 Constant: +0:33 0.001000 +0:33 true case +0:34 move second child to first child ( temp float) +0:34 direct index ( temp float) +0:34 'myColor' (layout( location=0) out 4-component vector of float) +0:34 Constant: +0:34 3 (const int) +0:34 Constant: +0:34 0.500000 +0:? Linker Objects +0:? 'i' ( smooth in 4-component vector of float) +0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:? 'myColor' (layout( location=0) out 4-component vector of float) +0:? 'eps' ( const float) +0:? 0.001000 + diff --git a/Test/baseResults/enhanced.0.frag.out b/Test/baseResults/enhanced.0.frag.out new file mode 100644 index 00000000..1171bfaf --- /dev/null +++ b/Test/baseResults/enhanced.0.frag.out @@ -0,0 +1,6 @@ +enhanced.0.frag +ERROR: enhanced.0.frag:7: ' vec4 constructor' : not enough data provided for construction +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/enhanced.1.frag.out b/Test/baseResults/enhanced.1.frag.out new file mode 100644 index 00000000..42f5b72d --- /dev/null +++ b/Test/baseResults/enhanced.1.frag.out @@ -0,0 +1,6 @@ +enhanced.1.frag +ERROR: enhanced.1.frag:9: 'v2' : no such field in structure 'vVert' +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/enhanced.2.frag.out b/Test/baseResults/enhanced.2.frag.out new file mode 100644 index 00000000..a7e48de4 --- /dev/null +++ b/Test/baseResults/enhanced.2.frag.out @@ -0,0 +1,6 @@ +enhanced.2.frag +ERROR: enhanced.2.frag:5: ' vec3 constructor' : too many arguments +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/enhanced.3.link.out b/Test/baseResults/enhanced.3.link.out new file mode 100644 index 00000000..c0e6a202 --- /dev/null +++ b/Test/baseResults/enhanced.3.link.out @@ -0,0 +1,8 @@ +enhanced.3.vert +enhanced.3.frag +ERROR: Linking vertex and fragment stages: Member names and types must match: + Block: VS_OUT + vertex stage: " vec2 TexCoords" + fragment stage: " vec2 foobar" + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/enhanced.4.link.out b/Test/baseResults/enhanced.4.link.out new file mode 100644 index 00000000..2c0acf41 --- /dev/null +++ b/Test/baseResults/enhanced.4.link.out @@ -0,0 +1,7 @@ +enhanced.4.vert +enhanced.4.frag +ERROR: Linking vertex and fragment stages: Layout location qualifier must match: + vertex stage: Block: VS_OUT Instance: vs_out: "layout( location=0) out" + fragment stage: Block: VS_OUT Instance: fs_in: "layout( location=1) in" + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/enhanced.5.link.out b/Test/baseResults/enhanced.5.link.out new file mode 100644 index 00000000..929cfcef --- /dev/null +++ b/Test/baseResults/enhanced.5.link.out @@ -0,0 +1,8 @@ +enhanced.5.vert +enhanced.5.frag +ERROR: Linking vertex and fragment stages: Member names and types must match: + Block: VS_OUT + vertex stage: " vec2 TexCoords" + fragment stage: " vec3 TexCoords" + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/enhanced.6.link.out b/Test/baseResults/enhanced.6.link.out new file mode 100644 index 00000000..99626282 --- /dev/null +++ b/Test/baseResults/enhanced.6.link.out @@ -0,0 +1,7 @@ +enhanced.6.vert +enhanced.6.frag +ERROR: Linking vertex and fragment stages: Array sizes must be compatible: + vertex stage: " VS_OUT{ vec2 TexCoords} vs_out[2]" + fragment stage: " VS_OUT{ vec2 TexCoords} fs_in[1]" + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/enhanced.7.link.out b/Test/baseResults/enhanced.7.link.out new file mode 100644 index 00000000..a6333be9 --- /dev/null +++ b/Test/baseResults/enhanced.7.link.out @@ -0,0 +1,7 @@ +enhanced.7.vert +enhanced.7.frag +ERROR: Linking vertex and fragment stages: vertex block member has no corresponding member in fragment block: + vertex stage: Block: Vertex, Member: ii + fragment stage: Block: Vertex, Member: n/a + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/floatBitsToInt.vert.out b/Test/baseResults/floatBitsToInt.vert.out new file mode 100644 index 00000000..6d5185c8 --- /dev/null +++ b/Test/baseResults/floatBitsToInt.vert.out @@ -0,0 +1,217 @@ +floatBitsToInt.vert +WARNING: 0:2: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5 + +Shader version: 150 +Requested GL_ARB_gpu_shader5 +0:? Sequence +0:6 Function Definition: main( ( global void) +0:6 Function Parameters: +0:8 Sequence +0:8 move second child to first child ( temp 4-component vector of float) +0:8 'result' ( smooth out 4-component vector of float) +0:8 Constant: +0:8 1.000000 +0:8 1.000000 +0:8 1.000000 +0:8 1.000000 +0:9 Sequence +0:9 move second child to first child ( temp int) +0:9 'ret_val' ( temp int) +0:9 floatBitsToInt ( global int) +0:9 'value' ( uniform float) +0:10 Test condition and select ( temp void) +0:10 Condition +0:10 Compare Not Equal ( temp bool) +0:10 'expected_value' ( uniform int) +0:10 'ret_val' ( temp int) +0:10 true case +0:10 Sequence +0:10 move second child to first child ( temp 4-component vector of float) +0:10 'result' ( smooth out 4-component vector of float) +0:10 Constant: +0:10 0.000000 +0:10 0.000000 +0:10 0.000000 +0:10 0.000000 +0:12 switch +0:12 condition +0:12 'gl_VertexID' ( gl_VertexId int VertexId) +0:12 body +0:12 Sequence +0:13 case: with expression +0:13 Constant: +0:13 0 (const int) +0:? Sequence +0:13 move second child to first child ( temp 4-component vector of float) +0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:13 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:13 Constant: +0:13 0 (const uint) +0:13 Constant: +0:13 -1.000000 +0:13 1.000000 +0:13 0.000000 +0:13 1.000000 +0:13 Branch: Break +0:14 case: with expression +0:14 Constant: +0:14 1 (const int) +0:? Sequence +0:14 move second child to first child ( temp 4-component vector of float) +0:14 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:14 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:14 Constant: +0:14 0 (const uint) +0:14 Constant: +0:14 1.000000 +0:14 1.000000 +0:14 0.000000 +0:14 1.000000 +0:14 Branch: Break +0:15 case: with expression +0:15 Constant: +0:15 2 (const int) +0:? Sequence +0:15 move second child to first child ( temp 4-component vector of float) +0:15 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:15 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:15 Constant: +0:15 0 (const uint) +0:15 Constant: +0:15 -1.000000 +0:15 -1.000000 +0:15 0.000000 +0:15 1.000000 +0:15 Branch: Break +0:16 case: with expression +0:16 Constant: +0:16 3 (const int) +0:? Sequence +0:16 move second child to first child ( temp 4-component vector of float) +0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:16 Constant: +0:16 0 (const uint) +0:16 Constant: +0:16 1.000000 +0:16 -1.000000 +0:16 0.000000 +0:16 1.000000 +0:16 Branch: Break +0:? Linker Objects +0:? 'expected_value' ( uniform int) +0:? 'value' ( uniform float) +0:? 'result' ( smooth out 4-component vector of float) +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + + +Linked vertex stage: + + +Shader version: 150 +Requested GL_ARB_gpu_shader5 +0:? Sequence +0:6 Function Definition: main( ( global void) +0:6 Function Parameters: +0:8 Sequence +0:8 move second child to first child ( temp 4-component vector of float) +0:8 'result' ( smooth out 4-component vector of float) +0:8 Constant: +0:8 1.000000 +0:8 1.000000 +0:8 1.000000 +0:8 1.000000 +0:9 Sequence +0:9 move second child to first child ( temp int) +0:9 'ret_val' ( temp int) +0:9 floatBitsToInt ( global int) +0:9 'value' ( uniform float) +0:10 Test condition and select ( temp void) +0:10 Condition +0:10 Compare Not Equal ( temp bool) +0:10 'expected_value' ( uniform int) +0:10 'ret_val' ( temp int) +0:10 true case +0:10 Sequence +0:10 move second child to first child ( temp 4-component vector of float) +0:10 'result' ( smooth out 4-component vector of float) +0:10 Constant: +0:10 0.000000 +0:10 0.000000 +0:10 0.000000 +0:10 0.000000 +0:12 switch +0:12 condition +0:12 'gl_VertexID' ( gl_VertexId int VertexId) +0:12 body +0:12 Sequence +0:13 case: with expression +0:13 Constant: +0:13 0 (const int) +0:? Sequence +0:13 move second child to first child ( temp 4-component vector of float) +0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:13 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:13 Constant: +0:13 0 (const uint) +0:13 Constant: +0:13 -1.000000 +0:13 1.000000 +0:13 0.000000 +0:13 1.000000 +0:13 Branch: Break +0:14 case: with expression +0:14 Constant: +0:14 1 (const int) +0:? Sequence +0:14 move second child to first child ( temp 4-component vector of float) +0:14 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:14 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:14 Constant: +0:14 0 (const uint) +0:14 Constant: +0:14 1.000000 +0:14 1.000000 +0:14 0.000000 +0:14 1.000000 +0:14 Branch: Break +0:15 case: with expression +0:15 Constant: +0:15 2 (const int) +0:? Sequence +0:15 move second child to first child ( temp 4-component vector of float) +0:15 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:15 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:15 Constant: +0:15 0 (const uint) +0:15 Constant: +0:15 -1.000000 +0:15 -1.000000 +0:15 0.000000 +0:15 1.000000 +0:15 Branch: Break +0:16 case: with expression +0:16 Constant: +0:16 3 (const int) +0:? Sequence +0:16 move second child to first child ( temp 4-component vector of float) +0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:16 Constant: +0:16 0 (const uint) +0:16 Constant: +0:16 1.000000 +0:16 -1.000000 +0:16 0.000000 +0:16 1.000000 +0:16 Branch: Break +0:? Linker Objects +0:? 'expected_value' ( uniform int) +0:? 'value' ( uniform float) +0:? 'result' ( smooth out 4-component vector of float) +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + diff --git a/Test/baseResults/gl_FragCoord.frag.out b/Test/baseResults/gl_FragCoord.frag.out new file mode 100644 index 00000000..da9e8dcc --- /dev/null +++ b/Test/baseResults/gl_FragCoord.frag.out @@ -0,0 +1,269 @@ +gl_FragCoord.frag +Shader version: 150 +Requested GL_ARB_explicit_attrib_location +gl_FragCoord pixel center is integer +gl_FragCoord origin is upper left +0:? Sequence +0:9 Sequence +0:9 move second child to first child ( temp float) +0:9 'myGlobalVar' ( global float) +0:9 direct index ( temp float) +0:9 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:9 Constant: +0:9 0 (const int) +0:16 Function Definition: main( ( global void) +0:16 Function Parameters: +0:17 Sequence +0:17 move second child to first child ( temp 4-component vector of float) +0:17 'myColor' (layout( location=0) out 4-component vector of float) +0:17 Constant: +0:17 0.200000 +0:17 0.200000 +0:17 0.200000 +0:17 0.200000 +0:18 Test condition and select ( temp void) +0:18 Condition +0:18 Compare Greater Than or Equal ( temp bool) +0:18 direct index ( temp float) +0:18 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 10.000000 +0:18 true case +0:19 Sequence +0:19 move second child to first child ( temp float) +0:19 direct index ( temp float) +0:19 'myColor' (layout( location=0) out 4-component vector of float) +0:19 Constant: +0:19 2 (const int) +0:19 Constant: +0:19 0.800000 +0:21 Test condition and select ( temp void) +0:21 Condition +0:21 Compare Equal ( temp bool) +0:21 direct index ( temp float) +0:21 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:21 Constant: +0:21 1 (const int) +0:21 trunc ( global float) +0:21 direct index ( temp float) +0:21 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:21 Constant: +0:21 1 (const int) +0:21 true case +0:22 Sequence +0:22 move second child to first child ( temp float) +0:22 direct index ( temp float) +0:22 'myColor' (layout( location=0) out 4-component vector of float) +0:22 Constant: +0:22 1 (const int) +0:22 Constant: +0:22 0.800000 +0:24 Test condition and select ( temp void) +0:24 Condition +0:24 Compare Equal ( temp bool) +0:24 direct index ( temp float) +0:24 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:24 Constant: +0:24 0 (const int) +0:24 trunc ( global float) +0:24 direct index ( temp float) +0:24 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:24 Constant: +0:24 0 (const int) +0:24 true case +0:25 Sequence +0:25 move second child to first child ( temp float) +0:25 direct index ( temp float) +0:25 'myColor' (layout( location=0) out 4-component vector of float) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0.800000 +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of float) +0:28 'diff' ( temp 4-component vector of float) +0:28 subtract ( temp 4-component vector of float) +0:28 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:28 'i' ( smooth in 4-component vector of float) +0:29 Test condition and select ( temp void) +0:29 Condition +0:29 Compare Greater Than ( temp bool) +0:29 Absolute value ( global float) +0:29 direct index ( temp float) +0:29 'diff' ( temp 4-component vector of float) +0:29 Constant: +0:29 2 (const int) +0:29 Constant: +0:29 0.001000 +0:29 true case +0:29 move second child to first child ( temp float) +0:29 direct index ( temp float) +0:29 'myColor' (layout( location=0) out 4-component vector of float) +0:29 Constant: +0:29 2 (const int) +0:29 Constant: +0:29 0.500000 +0:30 Test condition and select ( temp void) +0:30 Condition +0:30 Compare Greater Than ( temp bool) +0:30 Absolute value ( global float) +0:30 direct index ( temp float) +0:30 'diff' ( temp 4-component vector of float) +0:30 Constant: +0:30 3 (const int) +0:30 Constant: +0:30 0.001000 +0:30 true case +0:30 move second child to first child ( temp float) +0:30 direct index ( temp float) +0:30 'myColor' (layout( location=0) out 4-component vector of float) +0:30 Constant: +0:30 3 (const int) +0:30 Constant: +0:30 0.500000 +0:? Linker Objects +0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:? 'myGlobalVar' ( global float) +0:? 'i' ( smooth in 4-component vector of float) +0:? 'myColor' (layout( location=0) out 4-component vector of float) +0:? 'eps' ( const float) +0:? 0.001000 + + +Linked fragment stage: + + +Shader version: 150 +Requested GL_ARB_explicit_attrib_location +gl_FragCoord pixel center is integer +gl_FragCoord origin is upper left +0:? Sequence +0:9 Sequence +0:9 move second child to first child ( temp float) +0:9 'myGlobalVar' ( global float) +0:9 direct index ( temp float) +0:9 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:9 Constant: +0:9 0 (const int) +0:16 Function Definition: main( ( global void) +0:16 Function Parameters: +0:17 Sequence +0:17 move second child to first child ( temp 4-component vector of float) +0:17 'myColor' (layout( location=0) out 4-component vector of float) +0:17 Constant: +0:17 0.200000 +0:17 0.200000 +0:17 0.200000 +0:17 0.200000 +0:18 Test condition and select ( temp void) +0:18 Condition +0:18 Compare Greater Than or Equal ( temp bool) +0:18 direct index ( temp float) +0:18 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 10.000000 +0:18 true case +0:19 Sequence +0:19 move second child to first child ( temp float) +0:19 direct index ( temp float) +0:19 'myColor' (layout( location=0) out 4-component vector of float) +0:19 Constant: +0:19 2 (const int) +0:19 Constant: +0:19 0.800000 +0:21 Test condition and select ( temp void) +0:21 Condition +0:21 Compare Equal ( temp bool) +0:21 direct index ( temp float) +0:21 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:21 Constant: +0:21 1 (const int) +0:21 trunc ( global float) +0:21 direct index ( temp float) +0:21 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:21 Constant: +0:21 1 (const int) +0:21 true case +0:22 Sequence +0:22 move second child to first child ( temp float) +0:22 direct index ( temp float) +0:22 'myColor' (layout( location=0) out 4-component vector of float) +0:22 Constant: +0:22 1 (const int) +0:22 Constant: +0:22 0.800000 +0:24 Test condition and select ( temp void) +0:24 Condition +0:24 Compare Equal ( temp bool) +0:24 direct index ( temp float) +0:24 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:24 Constant: +0:24 0 (const int) +0:24 trunc ( global float) +0:24 direct index ( temp float) +0:24 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:24 Constant: +0:24 0 (const int) +0:24 true case +0:25 Sequence +0:25 move second child to first child ( temp float) +0:25 direct index ( temp float) +0:25 'myColor' (layout( location=0) out 4-component vector of float) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0.800000 +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of float) +0:28 'diff' ( temp 4-component vector of float) +0:28 subtract ( temp 4-component vector of float) +0:28 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:28 'i' ( smooth in 4-component vector of float) +0:29 Test condition and select ( temp void) +0:29 Condition +0:29 Compare Greater Than ( temp bool) +0:29 Absolute value ( global float) +0:29 direct index ( temp float) +0:29 'diff' ( temp 4-component vector of float) +0:29 Constant: +0:29 2 (const int) +0:29 Constant: +0:29 0.001000 +0:29 true case +0:29 move second child to first child ( temp float) +0:29 direct index ( temp float) +0:29 'myColor' (layout( location=0) out 4-component vector of float) +0:29 Constant: +0:29 2 (const int) +0:29 Constant: +0:29 0.500000 +0:30 Test condition and select ( temp void) +0:30 Condition +0:30 Compare Greater Than ( temp bool) +0:30 Absolute value ( global float) +0:30 direct index ( temp float) +0:30 'diff' ( temp 4-component vector of float) +0:30 Constant: +0:30 3 (const int) +0:30 Constant: +0:30 0.001000 +0:30 true case +0:30 move second child to first child ( temp float) +0:30 direct index ( temp float) +0:30 'myColor' (layout( location=0) out 4-component vector of float) +0:30 Constant: +0:30 3 (const int) +0:30 Constant: +0:30 0.500000 +0:? Linker Objects +0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:? 'myGlobalVar' ( global float) +0:? 'i' ( smooth in 4-component vector of float) +0:? 'myColor' (layout( location=0) out 4-component vector of float) +0:? 'eps' ( const float) +0:? 0.001000 + diff --git a/Test/baseResults/glsl.versionOverride.comp.out b/Test/baseResults/glsl.versionOverride.comp.out new file mode 100644 index 00000000..591ce4d9 --- /dev/null +++ b/Test/baseResults/glsl.versionOverride.comp.out @@ -0,0 +1 @@ +glsl.versionOverride.comp diff --git a/Test/baseResults/glsl.versionOverride.frag.out b/Test/baseResults/glsl.versionOverride.frag.out new file mode 100644 index 00000000..b759a47f --- /dev/null +++ b/Test/baseResults/glsl.versionOverride.frag.out @@ -0,0 +1 @@ +glsl.versionOverride.frag diff --git a/Test/baseResults/glsl.versionOverride.geom.out b/Test/baseResults/glsl.versionOverride.geom.out new file mode 100644 index 00000000..758d9d49 --- /dev/null +++ b/Test/baseResults/glsl.versionOverride.geom.out @@ -0,0 +1 @@ +glsl.versionOverride.geom diff --git a/Test/baseResults/glsl.versionOverride.tesc.out b/Test/baseResults/glsl.versionOverride.tesc.out new file mode 100644 index 00000000..4aedf0d8 --- /dev/null +++ b/Test/baseResults/glsl.versionOverride.tesc.out @@ -0,0 +1 @@ +glsl.versionOverride.tesc diff --git a/Test/baseResults/glsl.versionOverride.tese.out b/Test/baseResults/glsl.versionOverride.tese.out new file mode 100644 index 00000000..c3632e8a --- /dev/null +++ b/Test/baseResults/glsl.versionOverride.tese.out @@ -0,0 +1 @@ +glsl.versionOverride.tese diff --git a/Test/baseResults/glsl.versionOverride.vert.out b/Test/baseResults/glsl.versionOverride.vert.out new file mode 100644 index 00000000..d42dc3d8 --- /dev/null +++ b/Test/baseResults/glsl.versionOverride.vert.out @@ -0,0 +1 @@ +glsl.versionOverride.vert diff --git a/Test/baseResults/hlsl.namespace.frag.out b/Test/baseResults/hlsl.namespace.frag.out index 5346c44a..e224eb92 100644 --- a/Test/baseResults/hlsl.namespace.frag.out +++ b/Test/baseResults/hlsl.namespace.frag.out @@ -17,9 +17,8 @@ gl_FragCoord origin is upper left 0:? Sequence 0:12 Branch: Return with expression 0:12 'v2' ( global 4-component vector of float) -0:15 Function Definition: N2::N3::C1::getVec( ( temp 4-component vector of float) +0:15 Function Definition: N2::N3::C1::getVec( ( global 4-component vector of float) 0:15 Function Parameters: -0:15 '@this' ( temp structure{}) 0:? Sequence 0:15 Branch: Return with expression 0:15 'v2' ( global 4-component vector of float) @@ -34,7 +33,7 @@ gl_FragCoord origin is upper left 0:22 Function Call: N2::getVec( ( temp 4-component vector of float) 0:22 Function Call: N2::N3::getVec( ( temp 4-component vector of float) 0:22 vector-scale ( temp 4-component vector of float) -0:22 Function Call: N2::N3::C1::getVec( ( temp 4-component vector of float) +0:22 Function Call: N2::N3::C1::getVec( ( global 4-component vector of float) 0:22 'N2::gf' ( global float) 0:21 Function Definition: main( ( temp void) 0:21 Function Parameters: @@ -70,9 +69,8 @@ gl_FragCoord origin is upper left 0:? Sequence 0:12 Branch: Return with expression 0:12 'v2' ( global 4-component vector of float) -0:15 Function Definition: N2::N3::C1::getVec( ( temp 4-component vector of float) +0:15 Function Definition: N2::N3::C1::getVec( ( global 4-component vector of float) 0:15 Function Parameters: -0:15 '@this' ( temp structure{}) 0:? Sequence 0:15 Branch: Return with expression 0:15 'v2' ( global 4-component vector of float) @@ -87,7 +85,7 @@ gl_FragCoord origin is upper left 0:22 Function Call: N2::getVec( ( temp 4-component vector of float) 0:22 Function Call: N2::N3::getVec( ( temp 4-component vector of float) 0:22 vector-scale ( temp 4-component vector of float) -0:22 Function Call: N2::N3::C1::getVec( ( temp 4-component vector of float) +0:22 Function Call: N2::N3::C1::getVec( ( global 4-component vector of float) 0:22 'N2::gf' ( global float) 0:21 Function Definition: main( ( temp void) 0:21 Function Parameters: @@ -101,82 +99,75 @@ gl_FragCoord origin is upper left 0:? 'N2::gf' ( global float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) -Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 54 +// Id's are bound by 50 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 52 + EntryPoint Fragment 4 "main" 48 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "N1::getVec(" Name 11 "N2::getVec(" Name 13 "N2::N3::getVec(" - Name 15 "C1" - Name 19 "N2::N3::C1::getVec(" - Name 18 "@this" - Name 21 "@main(" - Name 24 "v1" - Name 28 "v2" - Name 45 "N2::gf" - Name 52 "@entryPointOutput" - Decorate 52(@entryPointOutput) Location 0 + Name 15 "N2::N3::C1::getVec(" + Name 17 "@main(" + Name 20 "v1" + Name 24 "v2" + Name 41 "N2::gf" + Name 48 "@entryPointOutput" + Decorate 48(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) - 15(C1): TypeStruct - 16: TypePointer Function 15(C1) - 17: TypeFunction 7(fvec4) 16(ptr) - 23: TypePointer Private 7(fvec4) - 24(v1): 23(ptr) Variable Private - 28(v2): 23(ptr) Variable Private - 44: TypePointer Private 6(float) - 45(N2::gf): 44(ptr) Variable Private - 51: TypePointer Output 7(fvec4) -52(@entryPointOutput): 51(ptr) Variable Output + 19: TypePointer Private 7(fvec4) + 20(v1): 19(ptr) Variable Private + 24(v2): 19(ptr) Variable Private + 40: TypePointer Private 6(float) + 41(N2::gf): 40(ptr) Variable Private + 47: TypePointer Output 7(fvec4) +48(@entryPointOutput): 47(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 53: 7(fvec4) FunctionCall 21(@main() - Store 52(@entryPointOutput) 53 + 49: 7(fvec4) FunctionCall 17(@main() + Store 48(@entryPointOutput) 49 Return FunctionEnd 9(N1::getVec(): 7(fvec4) Function None 8 10: Label - 25: 7(fvec4) Load 24(v1) - ReturnValue 25 + 21: 7(fvec4) Load 20(v1) + ReturnValue 21 FunctionEnd 11(N2::getVec(): 7(fvec4) Function None 8 12: Label - 29: 7(fvec4) Load 28(v2) - ReturnValue 29 + 25: 7(fvec4) Load 24(v2) + ReturnValue 25 FunctionEnd 13(N2::N3::getVec(): 7(fvec4) Function None 8 14: Label - 32: 7(fvec4) Load 28(v2) - ReturnValue 32 + 28: 7(fvec4) Load 24(v2) + ReturnValue 28 FunctionEnd -19(N2::N3::C1::getVec(): 7(fvec4) Function None 17 - 18(@this): 16(ptr) FunctionParameter - 20: Label - 35: 7(fvec4) Load 28(v2) - ReturnValue 35 +15(N2::N3::C1::getVec(): 7(fvec4) Function None 8 + 16: Label + 31: 7(fvec4) Load 24(v2) + ReturnValue 31 FunctionEnd - 21(@main(): 7(fvec4) Function None 8 - 22: Label - 38: 7(fvec4) FunctionCall 9(N1::getVec() - 39: 7(fvec4) FunctionCall 11(N2::getVec() - 40: 7(fvec4) FAdd 38 39 - 41: 7(fvec4) FunctionCall 13(N2::N3::getVec() - 42: 7(fvec4) FAdd 40 41 - 43: 7(fvec4) FunctionCall 19(N2::N3::C1::getVec() - 46: 6(float) Load 45(N2::gf) - 47: 7(fvec4) VectorTimesScalar 43 46 - 48: 7(fvec4) FAdd 42 47 - ReturnValue 48 + 17(@main(): 7(fvec4) Function None 8 + 18: Label + 34: 7(fvec4) FunctionCall 9(N1::getVec() + 35: 7(fvec4) FunctionCall 11(N2::getVec() + 36: 7(fvec4) FAdd 34 35 + 37: 7(fvec4) FunctionCall 13(N2::N3::getVec() + 38: 7(fvec4) FAdd 36 37 + 39: 7(fvec4) FunctionCall 15(N2::N3::C1::getVec() + 42: 6(float) Load 41(N2::gf) + 43: 7(fvec4) VectorTimesScalar 39 42 + 44: 7(fvec4) FAdd 38 43 + ReturnValue 44 FunctionEnd diff --git a/Test/baseResults/hlsl.spv.1.6.discard.frag.out b/Test/baseResults/hlsl.spv.1.6.discard.frag.out new file mode 100644 index 00000000..d5219144 --- /dev/null +++ b/Test/baseResults/hlsl.spv.1.6.discard.frag.out @@ -0,0 +1,195 @@ +hlsl.spv.1.6.discard.frag +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: foo(f1; ( temp void) +0:2 Function Parameters: +0:2 'f' ( in float) +0:? Sequence +0:3 Test condition and select ( temp void) +0:3 Condition +0:3 Compare Less Than ( temp bool) +0:3 'f' ( in float) +0:3 Constant: +0:3 1.000000 +0:3 true case +0:4 Branch: Kill +0:8 Function Definition: @PixelShaderFunction(vf4; ( temp void) +0:8 Function Parameters: +0:8 'input' ( in 4-component vector of float) +0:? Sequence +0:9 Function Call: foo(f1; ( temp void) +0:9 direct index ( temp float) +0:9 'input' ( in 4-component vector of float) +0:9 Constant: +0:9 2 (const int) +0:10 Test condition and select ( temp void) +0:10 Condition +0:10 Convert float to bool ( temp bool) +0:10 direct index ( temp float) +0:10 'input' ( in 4-component vector of float) +0:10 Constant: +0:10 0 (const int) +0:10 true case +0:11 Branch: Kill +0:12 Sequence +0:12 move second child to first child ( temp float) +0:12 'f' ( temp float) +0:12 direct index ( temp float) +0:12 'input' ( in 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:13 Branch: Kill +0:8 Function Definition: PixelShaderFunction( ( temp void) +0:8 Function Parameters: +0:? Sequence +0:8 move second child to first child ( temp 4-component vector of float) +0:? 'input' ( temp 4-component vector of float) +0:? 'input' (layout( location=0) in 4-component vector of float) +0:8 Function Call: @PixelShaderFunction(vf4; ( temp void) +0:? 'input' ( temp 4-component vector of float) +0:? Linker Objects +0:? 'input' (layout( location=0) in 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: foo(f1; ( temp void) +0:2 Function Parameters: +0:2 'f' ( in float) +0:? Sequence +0:3 Test condition and select ( temp void) +0:3 Condition +0:3 Compare Less Than ( temp bool) +0:3 'f' ( in float) +0:3 Constant: +0:3 1.000000 +0:3 true case +0:4 Branch: Kill +0:8 Function Definition: @PixelShaderFunction(vf4; ( temp void) +0:8 Function Parameters: +0:8 'input' ( in 4-component vector of float) +0:? Sequence +0:9 Function Call: foo(f1; ( temp void) +0:9 direct index ( temp float) +0:9 'input' ( in 4-component vector of float) +0:9 Constant: +0:9 2 (const int) +0:10 Test condition and select ( temp void) +0:10 Condition +0:10 Convert float to bool ( temp bool) +0:10 direct index ( temp float) +0:10 'input' ( in 4-component vector of float) +0:10 Constant: +0:10 0 (const int) +0:10 true case +0:11 Branch: Kill +0:12 Sequence +0:12 move second child to first child ( temp float) +0:12 'f' ( temp float) +0:12 direct index ( temp float) +0:12 'input' ( in 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:13 Branch: Kill +0:8 Function Definition: PixelShaderFunction( ( temp void) +0:8 Function Parameters: +0:? Sequence +0:8 move second child to first child ( temp 4-component vector of float) +0:? 'input' ( temp 4-component vector of float) +0:? 'input' (layout( location=0) in 4-component vector of float) +0:8 Function Call: @PixelShaderFunction(vf4; ( temp void) +0:? 'input' ( temp 4-component vector of float) +0:? Linker Objects +0:? 'input' (layout( location=0) in 4-component vector of float) + +// Module Version 10600 +// Generated by (magic number): 8000a +// Id's are bound by 47 + + Capability Shader + Capability DemoteToHelperInvocationEXT + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "PixelShaderFunction" 42 + ExecutionMode 4 OriginUpperLeft + Source HLSL 500 + Name 4 "PixelShaderFunction" + Name 10 "foo(f1;" + Name 9 "f" + Name 16 "@PixelShaderFunction(vf4;" + Name 15 "input" + Name 24 "param" + Name 37 "f" + Name 40 "input" + Name 42 "input" + Name 44 "param" + Decorate 42(input) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 8: TypeFunction 2 7(ptr) + 12: TypeVector 6(float) 4 + 13: TypePointer Function 12(fvec4) + 14: TypeFunction 2 13(ptr) + 19: 6(float) Constant 1065353216 + 20: TypeBool + 25: TypeInt 32 0 + 26: 25(int) Constant 2 + 30: 25(int) Constant 0 + 33: 6(float) Constant 0 + 41: TypePointer Input 12(fvec4) + 42(input): 41(ptr) Variable Input +4(PixelShaderFunction): 2 Function None 3 + 5: Label + 40(input): 13(ptr) Variable Function + 44(param): 13(ptr) Variable Function + 43: 12(fvec4) Load 42(input) + Store 40(input) 43 + 45: 12(fvec4) Load 40(input) + Store 44(param) 45 + 46: 2 FunctionCall 16(@PixelShaderFunction(vf4;) 44(param) + Return + FunctionEnd + 10(foo(f1;): 2 Function None 8 + 9(f): 7(ptr) FunctionParameter + 11: Label + 18: 6(float) Load 9(f) + 21: 20(bool) FOrdLessThan 18 19 + SelectionMerge 23 None + BranchConditional 21 22 23 + 22: Label + DemoteToHelperInvocationEXT + Branch 23 + 23: Label + Return + FunctionEnd +16(@PixelShaderFunction(vf4;): 2 Function None 14 + 15(input): 13(ptr) FunctionParameter + 17: Label + 24(param): 7(ptr) Variable Function + 37(f): 7(ptr) Variable Function + 27: 7(ptr) AccessChain 15(input) 26 + 28: 6(float) Load 27 + Store 24(param) 28 + 29: 2 FunctionCall 10(foo(f1;) 24(param) + 31: 7(ptr) AccessChain 15(input) 30 + 32: 6(float) Load 31 + 34: 20(bool) FUnordNotEqual 32 33 + SelectionMerge 36 None + BranchConditional 34 35 36 + 35: Label + DemoteToHelperInvocationEXT + Branch 36 + 36: Label + 38: 7(ptr) AccessChain 15(input) 30 + 39: 6(float) Load 38 + Store 37(f) 39 + DemoteToHelperInvocationEXT + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out b/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out new file mode 100644 index 00000000..127d52cc --- /dev/null +++ b/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out @@ -0,0 +1,140 @@ +hlsl.structbuffer.rwbyte2.comp +Shader version: 500 +local_size = (1, 1, 1) +0:? Sequence +0:6 Function Definition: @main( ( temp void) +0:6 Function Parameters: +0:? Sequence +0:7 Sequence +0:7 move second child to first child ( temp uint) +0:7 'f' ( temp uint) +0:7 indirect index (layout( row_major std430) buffer uint) +0:7 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:7 'g_bbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:7 Constant: +0:7 0 (const uint) +0:7 right-shift ( temp int) +0:7 Constant: +0:7 16 (const int) +0:7 Constant: +0:7 2 (const int) +0:8 move second child to first child ( temp uint) +0:8 direct index (layout( row_major std430) buffer uint) +0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:8 'g_sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:8 Constant: +0:8 0 (const uint) +0:8 Constant: +0:8 0 (const int) +0:8 'f' ( temp uint) +0:6 Function Definition: main( ( temp void) +0:6 Function Parameters: +0:? Sequence +0:6 Function Call: @main( ( temp void) +0:? Linker Objects +0:? 'g_sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:? 'g_bbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) + + +Linked compute stage: + + +Shader version: 500 +local_size = (1, 1, 1) +0:? Sequence +0:6 Function Definition: @main( ( temp void) +0:6 Function Parameters: +0:? Sequence +0:7 Sequence +0:7 move second child to first child ( temp uint) +0:7 'f' ( temp uint) +0:7 indirect index (layout( row_major std430) buffer uint) +0:7 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:7 'g_bbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:7 Constant: +0:7 0 (const uint) +0:7 right-shift ( temp int) +0:7 Constant: +0:7 16 (const int) +0:7 Constant: +0:7 2 (const int) +0:8 move second child to first child ( temp uint) +0:8 direct index (layout( row_major std430) buffer uint) +0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:8 'g_sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:8 Constant: +0:8 0 (const uint) +0:8 Constant: +0:8 0 (const int) +0:8 'f' ( temp uint) +0:6 Function Definition: main( ( temp void) +0:6 Function Parameters: +0:? Sequence +0:6 Function Call: @main( ( temp void) +0:? Linker Objects +0:? 'g_sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:? 'g_bbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) + +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 30 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source HLSL 500 + Name 4 "main" + Name 6 "@main(" + Name 10 "f" + Name 12 "g_bbuf" + MemberName 12(g_bbuf) 0 "@data" + Name 14 "g_bbuf" + Name 24 "g_sbuf" + MemberName 24(g_sbuf) 0 "@data" + Name 26 "g_sbuf" + Decorate 11 ArrayStride 4 + MemberDecorate 12(g_bbuf) 0 Offset 0 + Decorate 12(g_bbuf) BufferBlock + Decorate 14(g_bbuf) DescriptorSet 0 + Decorate 14(g_bbuf) Binding 1 + Decorate 23 ArrayStride 4 + MemberDecorate 24(g_sbuf) 0 Offset 0 + Decorate 24(g_sbuf) BufferBlock + Decorate 26(g_sbuf) DescriptorSet 0 + Decorate 26(g_sbuf) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 8: TypeInt 32 0 + 9: TypePointer Function 8(int) + 11: TypeRuntimeArray 8(int) + 12(g_bbuf): TypeStruct 11 + 13: TypePointer Uniform 12(g_bbuf) + 14(g_bbuf): 13(ptr) Variable Uniform + 15: TypeInt 32 1 + 16: 15(int) Constant 0 + 17: 15(int) Constant 16 + 18: 15(int) Constant 2 + 20: TypePointer Uniform 8(int) + 23: TypeRuntimeArray 8(int) + 24(g_sbuf): TypeStruct 23 + 25: TypePointer Uniform 24(g_sbuf) + 26(g_sbuf): 25(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label + 29: 2 FunctionCall 6(@main() + Return + FunctionEnd + 6(@main(): 2 Function None 3 + 7: Label + 10(f): 9(ptr) Variable Function + 19: 15(int) ShiftRightArithmetic 17 18 + 21: 20(ptr) AccessChain 14(g_bbuf) 16 19 + 22: 8(int) Load 21 + Store 10(f) 22 + 27: 8(int) Load 10(f) + 28: 20(ptr) AccessChain 26(g_sbuf) 16 16 + Store 28 27 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.w-recip.frag.out b/Test/baseResults/hlsl.w-recip.frag.out new file mode 100644 index 00000000..b72f361e --- /dev/null +++ b/Test/baseResults/hlsl.w-recip.frag.out @@ -0,0 +1,268 @@ +hlsl.w-recip.frag +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:5 Function Definition: @main(vf4; ( temp 4-component vector of float) +0:5 Function Parameters: +0:5 'vpos' ( in 4-component vector of float) +0:? Sequence +0:6 Sequence +0:6 move second child to first child ( temp 4-component vector of float) +0:6 'vpos_t' ( temp 4-component vector of float) +0:6 Construct vec4 ( temp 4-component vector of float) +0:6 vector swizzle ( temp 3-component vector of float) +0:6 'vpos' ( in 4-component vector of float) +0:6 Sequence +0:6 Constant: +0:6 0 (const int) +0:6 Constant: +0:6 1 (const int) +0:6 Constant: +0:6 2 (const int) +0:6 divide ( temp float) +0:6 Constant: +0:6 1.000000 +0:6 direct index ( temp float) +0:6 'vpos' ( in 4-component vector of float) +0:6 Constant: +0:6 3 (const int) +0:7 Test condition and select ( temp void) +0:7 Condition +0:7 Compare Less Than ( temp bool) +0:7 direct index ( temp float) +0:7 'vpos_t' ( temp 4-component vector of float) +0:7 Constant: +0:7 0 (const int) +0:7 Constant: +0:7 400.000000 +0:7 true case +0:8 Branch: Return with expression +0:8 AmbientColor: direct index for structure ( uniform 4-component vector of float) +0:8 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2}) +0:8 Constant: +0:8 0 (const uint) +0:7 false case +0:10 Branch: Return with expression +0:10 AmbientColor2: direct index for structure ( uniform 4-component vector of float) +0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2}) +0:10 Constant: +0:10 1 (const uint) +0:5 Function Definition: main( ( temp void) +0:5 Function Parameters: +0:? Sequence +0:5 move second child to first child ( temp 4-component vector of float) +0:? 'vpos' ( temp 4-component vector of float) +0:5 Construct vec4 ( temp 4-component vector of float) +0:5 vector swizzle ( temp 3-component vector of float) +0:? 'vpos' ( in 4-component vector of float FragCoord) +0:5 Sequence +0:5 Constant: +0:5 0 (const int) +0:5 Constant: +0:5 1 (const int) +0:5 Constant: +0:5 2 (const int) +0:5 divide ( temp float) +0:5 Constant: +0:5 1.000000 +0:5 direct index ( temp float) +0:? 'vpos' ( in 4-component vector of float FragCoord) +0:5 Constant: +0:5 3 (const int) +0:5 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:5 Function Call: @main(vf4; ( temp 4-component vector of float) +0:? 'vpos' ( temp 4-component vector of float) +0:? Linker Objects +0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2}) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:? 'vpos' ( in 4-component vector of float FragCoord) + + +Linked fragment stage: + + +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:5 Function Definition: @main(vf4; ( temp 4-component vector of float) +0:5 Function Parameters: +0:5 'vpos' ( in 4-component vector of float) +0:? Sequence +0:6 Sequence +0:6 move second child to first child ( temp 4-component vector of float) +0:6 'vpos_t' ( temp 4-component vector of float) +0:6 Construct vec4 ( temp 4-component vector of float) +0:6 vector swizzle ( temp 3-component vector of float) +0:6 'vpos' ( in 4-component vector of float) +0:6 Sequence +0:6 Constant: +0:6 0 (const int) +0:6 Constant: +0:6 1 (const int) +0:6 Constant: +0:6 2 (const int) +0:6 divide ( temp float) +0:6 Constant: +0:6 1.000000 +0:6 direct index ( temp float) +0:6 'vpos' ( in 4-component vector of float) +0:6 Constant: +0:6 3 (const int) +0:7 Test condition and select ( temp void) +0:7 Condition +0:7 Compare Less Than ( temp bool) +0:7 direct index ( temp float) +0:7 'vpos_t' ( temp 4-component vector of float) +0:7 Constant: +0:7 0 (const int) +0:7 Constant: +0:7 400.000000 +0:7 true case +0:8 Branch: Return with expression +0:8 AmbientColor: direct index for structure ( uniform 4-component vector of float) +0:8 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2}) +0:8 Constant: +0:8 0 (const uint) +0:7 false case +0:10 Branch: Return with expression +0:10 AmbientColor2: direct index for structure ( uniform 4-component vector of float) +0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2}) +0:10 Constant: +0:10 1 (const uint) +0:5 Function Definition: main( ( temp void) +0:5 Function Parameters: +0:? Sequence +0:5 move second child to first child ( temp 4-component vector of float) +0:? 'vpos' ( temp 4-component vector of float) +0:5 Construct vec4 ( temp 4-component vector of float) +0:5 vector swizzle ( temp 3-component vector of float) +0:? 'vpos' ( in 4-component vector of float FragCoord) +0:5 Sequence +0:5 Constant: +0:5 0 (const int) +0:5 Constant: +0:5 1 (const int) +0:5 Constant: +0:5 2 (const int) +0:5 divide ( temp float) +0:5 Constant: +0:5 1.000000 +0:5 direct index ( temp float) +0:? 'vpos' ( in 4-component vector of float FragCoord) +0:5 Constant: +0:5 3 (const int) +0:5 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:5 Function Call: @main(vf4; ( temp 4-component vector of float) +0:? 'vpos' ( temp 4-component vector of float) +0:? Linker Objects +0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2}) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:? 'vpos' ( in 4-component vector of float FragCoord) + +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 69 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 53 65 + ExecutionMode 4 OriginUpperLeft + Source HLSL 500 + Name 4 "main" + Name 11 "@main(vf4;" + Name 10 "vpos" + Name 13 "vpos_t" + Name 36 "$Global" + MemberName 36($Global) 0 "AmbientColor" + MemberName 36($Global) 1 "AmbientColor2" + Name 38 "" + Name 51 "vpos" + Name 53 "vpos" + Name 65 "@entryPointOutput" + Name 66 "param" + MemberDecorate 36($Global) 0 Offset 0 + MemberDecorate 36($Global) 1 Offset 16 + Decorate 36($Global) Block + Decorate 38 DescriptorSet 0 + Decorate 38 Binding 0 + Decorate 53(vpos) BuiltIn FragCoord + Decorate 65(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 9: TypeFunction 7(fvec4) 8(ptr) + 14: TypeVector 6(float) 3 + 17: 6(float) Constant 1065353216 + 18: TypeInt 32 0 + 19: 18(int) Constant 3 + 20: TypePointer Function 6(float) + 28: 18(int) Constant 0 + 31: 6(float) Constant 1137180672 + 32: TypeBool + 36($Global): TypeStruct 7(fvec4) 7(fvec4) + 37: TypePointer Uniform 36($Global) + 38: 37(ptr) Variable Uniform + 39: TypeInt 32 1 + 40: 39(int) Constant 0 + 41: TypePointer Uniform 7(fvec4) + 46: 39(int) Constant 1 + 52: TypePointer Input 7(fvec4) + 53(vpos): 52(ptr) Variable Input + 56: TypePointer Input 6(float) + 64: TypePointer Output 7(fvec4) +65(@entryPointOutput): 64(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 51(vpos): 8(ptr) Variable Function + 66(param): 8(ptr) Variable Function + 54: 7(fvec4) Load 53(vpos) + 55: 14(fvec3) VectorShuffle 54 54 0 1 2 + 57: 56(ptr) AccessChain 53(vpos) 19 + 58: 6(float) Load 57 + 59: 6(float) FDiv 17 58 + 60: 6(float) CompositeExtract 55 0 + 61: 6(float) CompositeExtract 55 1 + 62: 6(float) CompositeExtract 55 2 + 63: 7(fvec4) CompositeConstruct 60 61 62 59 + Store 51(vpos) 63 + 67: 7(fvec4) Load 51(vpos) + Store 66(param) 67 + 68: 7(fvec4) FunctionCall 11(@main(vf4;) 66(param) + Store 65(@entryPointOutput) 68 + Return + FunctionEnd + 11(@main(vf4;): 7(fvec4) Function None 9 + 10(vpos): 8(ptr) FunctionParameter + 12: Label + 13(vpos_t): 8(ptr) Variable Function + 15: 7(fvec4) Load 10(vpos) + 16: 14(fvec3) VectorShuffle 15 15 0 1 2 + 21: 20(ptr) AccessChain 10(vpos) 19 + 22: 6(float) Load 21 + 23: 6(float) FDiv 17 22 + 24: 6(float) CompositeExtract 16 0 + 25: 6(float) CompositeExtract 16 1 + 26: 6(float) CompositeExtract 16 2 + 27: 7(fvec4) CompositeConstruct 24 25 26 23 + Store 13(vpos_t) 27 + 29: 20(ptr) AccessChain 13(vpos_t) 28 + 30: 6(float) Load 29 + 33: 32(bool) FOrdLessThan 30 31 + SelectionMerge 35 None + BranchConditional 33 34 45 + 34: Label + 42: 41(ptr) AccessChain 38 40 + 43: 7(fvec4) Load 42 + ReturnValue 43 + 45: Label + 47: 41(ptr) AccessChain 38 46 + 48: 7(fvec4) Load 47 + ReturnValue 48 + 35: Label + Unreachable + FunctionEnd diff --git a/Test/baseResults/hlsl.w-recip2.frag.out b/Test/baseResults/hlsl.w-recip2.frag.out new file mode 100644 index 00000000..6fee15c4 --- /dev/null +++ b/Test/baseResults/hlsl.w-recip2.frag.out @@ -0,0 +1,305 @@ +hlsl.w-recip2.frag +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:13 Function Definition: @main(struct-VSOutput-vf4-vf3-vf3-vf21; ( temp 4-component vector of float) +0:13 Function Parameters: +0:13 'VSOut' ( in structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord}) +0:? Sequence +0:14 Test condition and select ( temp void) +0:14 Condition +0:14 Compare Less Than ( temp bool) +0:14 direct index ( temp float) +0:14 PositionPS: direct index for structure ( temp 4-component vector of float) +0:14 'VSOut' ( in structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord}) +0:14 Constant: +0:14 0 (const int) +0:14 Constant: +0:14 0 (const int) +0:14 Constant: +0:14 400.000000 +0:14 true case +0:15 Branch: Return with expression +0:15 AmbientColor: direct index for structure ( uniform 4-component vector of float) +0:15 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2}) +0:15 Constant: +0:15 0 (const uint) +0:14 false case +0:17 Branch: Return with expression +0:17 AmbientColor2: direct index for structure ( uniform 4-component vector of float) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2}) +0:17 Constant: +0:17 1 (const uint) +0:13 Function Definition: main( ( temp void) +0:13 Function Parameters: +0:? Sequence +0:13 Sequence +0:13 Sequence +0:13 move second child to first child ( temp 4-component vector of float) +0:13 '@fragcoord' ( temp 4-component vector of float) +0:? 'VSOut.PositionPS' ( in 4-component vector of float FragCoord) +0:13 move second child to first child ( temp float) +0:13 direct index ( in float FragCoord) +0:13 '@fragcoord' ( temp 4-component vector of float) +0:13 Constant: +0:13 3 (const int) +0:13 divide ( temp float) +0:13 Constant: +0:13 1.000000 +0:13 direct index ( in float FragCoord) +0:13 '@fragcoord' ( temp 4-component vector of float) +0:13 Constant: +0:13 3 (const int) +0:13 move second child to first child ( temp 4-component vector of float) +0:13 PositionPS: direct index for structure ( temp 4-component vector of float) +0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord}) +0:13 Constant: +0:13 0 (const int) +0:13 '@fragcoord' ( temp 4-component vector of float) +0:13 move second child to first child ( temp 3-component vector of float) +0:13 PosInLightViewSpace: direct index for structure ( temp 3-component vector of float) +0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord}) +0:13 Constant: +0:13 1 (const int) +0:? 'VSOut.PosInLightViewSpace' (layout( location=0) in 3-component vector of float) +0:13 move second child to first child ( temp 3-component vector of float) +0:13 NormalWS: direct index for structure ( temp 3-component vector of float) +0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord}) +0:13 Constant: +0:13 2 (const int) +0:? 'VSOut.NormalWS' (layout( location=1) in 3-component vector of float) +0:13 move second child to first child ( temp 2-component vector of float) +0:13 TexCoord: direct index for structure ( temp 2-component vector of float) +0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord}) +0:13 Constant: +0:13 3 (const int) +0:? 'VSOut.TexCoord' (layout( location=2) in 2-component vector of float) +0:13 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:13 Function Call: @main(struct-VSOutput-vf4-vf3-vf3-vf21; ( temp 4-component vector of float) +0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord}) +0:? Linker Objects +0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2}) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:? 'VSOut.PositionPS' ( in 4-component vector of float FragCoord) +0:? 'VSOut.PosInLightViewSpace' (layout( location=0) in 3-component vector of float) +0:? 'VSOut.NormalWS' (layout( location=1) in 3-component vector of float) +0:? 'VSOut.TexCoord' (layout( location=2) in 2-component vector of float) + + +Linked fragment stage: + + +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:13 Function Definition: @main(struct-VSOutput-vf4-vf3-vf3-vf21; ( temp 4-component vector of float) +0:13 Function Parameters: +0:13 'VSOut' ( in structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord}) +0:? Sequence +0:14 Test condition and select ( temp void) +0:14 Condition +0:14 Compare Less Than ( temp bool) +0:14 direct index ( temp float) +0:14 PositionPS: direct index for structure ( temp 4-component vector of float) +0:14 'VSOut' ( in structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord}) +0:14 Constant: +0:14 0 (const int) +0:14 Constant: +0:14 0 (const int) +0:14 Constant: +0:14 400.000000 +0:14 true case +0:15 Branch: Return with expression +0:15 AmbientColor: direct index for structure ( uniform 4-component vector of float) +0:15 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2}) +0:15 Constant: +0:15 0 (const uint) +0:14 false case +0:17 Branch: Return with expression +0:17 AmbientColor2: direct index for structure ( uniform 4-component vector of float) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2}) +0:17 Constant: +0:17 1 (const uint) +0:13 Function Definition: main( ( temp void) +0:13 Function Parameters: +0:? Sequence +0:13 Sequence +0:13 Sequence +0:13 move second child to first child ( temp 4-component vector of float) +0:13 '@fragcoord' ( temp 4-component vector of float) +0:? 'VSOut.PositionPS' ( in 4-component vector of float FragCoord) +0:13 move second child to first child ( temp float) +0:13 direct index ( in float FragCoord) +0:13 '@fragcoord' ( temp 4-component vector of float) +0:13 Constant: +0:13 3 (const int) +0:13 divide ( temp float) +0:13 Constant: +0:13 1.000000 +0:13 direct index ( in float FragCoord) +0:13 '@fragcoord' ( temp 4-component vector of float) +0:13 Constant: +0:13 3 (const int) +0:13 move second child to first child ( temp 4-component vector of float) +0:13 PositionPS: direct index for structure ( temp 4-component vector of float) +0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord}) +0:13 Constant: +0:13 0 (const int) +0:13 '@fragcoord' ( temp 4-component vector of float) +0:13 move second child to first child ( temp 3-component vector of float) +0:13 PosInLightViewSpace: direct index for structure ( temp 3-component vector of float) +0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord}) +0:13 Constant: +0:13 1 (const int) +0:? 'VSOut.PosInLightViewSpace' (layout( location=0) in 3-component vector of float) +0:13 move second child to first child ( temp 3-component vector of float) +0:13 NormalWS: direct index for structure ( temp 3-component vector of float) +0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord}) +0:13 Constant: +0:13 2 (const int) +0:? 'VSOut.NormalWS' (layout( location=1) in 3-component vector of float) +0:13 move second child to first child ( temp 2-component vector of float) +0:13 TexCoord: direct index for structure ( temp 2-component vector of float) +0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord}) +0:13 Constant: +0:13 3 (const int) +0:? 'VSOut.TexCoord' (layout( location=2) in 2-component vector of float) +0:13 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:13 Function Call: @main(struct-VSOutput-vf4-vf3-vf3-vf21; ( temp 4-component vector of float) +0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord}) +0:? Linker Objects +0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2}) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:? 'VSOut.PositionPS' ( in 4-component vector of float FragCoord) +0:? 'VSOut.PosInLightViewSpace' (layout( location=0) in 3-component vector of float) +0:? 'VSOut.NormalWS' (layout( location=1) in 3-component vector of float) +0:? 'VSOut.TexCoord' (layout( location=2) in 2-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 75 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 44 56 61 66 71 + ExecutionMode 4 OriginUpperLeft + Source HLSL 500 + Name 4 "main" + Name 10 "VSOutput" + MemberName 10(VSOutput) 0 "PositionPS" + MemberName 10(VSOutput) 1 "PosInLightViewSpace" + MemberName 10(VSOutput) 2 "NormalWS" + MemberName 10(VSOutput) 3 "TexCoord" + Name 14 "@main(struct-VSOutput-vf4-vf3-vf3-vf21;" + Name 13 "VSOut" + Name 28 "$Global" + MemberName 28($Global) 0 "AmbientColor" + MemberName 28($Global) 1 "AmbientColor2" + Name 30 "" + Name 42 "@fragcoord" + Name 44 "VSOut.PositionPS" + Name 52 "VSOut" + Name 56 "VSOut.PosInLightViewSpace" + Name 61 "VSOut.NormalWS" + Name 66 "VSOut.TexCoord" + Name 71 "@entryPointOutput" + Name 72 "param" + MemberDecorate 28($Global) 0 Offset 0 + MemberDecorate 28($Global) 1 Offset 16 + Decorate 28($Global) Block + Decorate 30 DescriptorSet 0 + Decorate 30 Binding 0 + Decorate 44(VSOut.PositionPS) BuiltIn FragCoord + Decorate 56(VSOut.PosInLightViewSpace) Location 0 + Decorate 61(VSOut.NormalWS) Location 1 + Decorate 66(VSOut.TexCoord) Location 2 + Decorate 71(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeVector 6(float) 3 + 9: TypeVector 6(float) 2 + 10(VSOutput): TypeStruct 7(fvec4) 8(fvec3) 8(fvec3) 9(fvec2) + 11: TypePointer Function 10(VSOutput) + 12: TypeFunction 7(fvec4) 11(ptr) + 16: TypeInt 32 1 + 17: 16(int) Constant 0 + 18: TypeInt 32 0 + 19: 18(int) Constant 0 + 20: TypePointer Function 6(float) + 23: 6(float) Constant 1137180672 + 24: TypeBool + 28($Global): TypeStruct 7(fvec4) 7(fvec4) + 29: TypePointer Uniform 28($Global) + 30: 29(ptr) Variable Uniform + 31: TypePointer Uniform 7(fvec4) + 36: 16(int) Constant 1 + 41: TypePointer Function 7(fvec4) + 43: TypePointer Input 7(fvec4) +44(VSOut.PositionPS): 43(ptr) Variable Input + 46: 6(float) Constant 1065353216 + 47: 18(int) Constant 3 + 55: TypePointer Input 8(fvec3) +56(VSOut.PosInLightViewSpace): 55(ptr) Variable Input + 58: TypePointer Function 8(fvec3) + 60: 16(int) Constant 2 +61(VSOut.NormalWS): 55(ptr) Variable Input + 64: 16(int) Constant 3 + 65: TypePointer Input 9(fvec2) +66(VSOut.TexCoord): 65(ptr) Variable Input + 68: TypePointer Function 9(fvec2) + 70: TypePointer Output 7(fvec4) +71(@entryPointOutput): 70(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 42(@fragcoord): 41(ptr) Variable Function + 52(VSOut): 11(ptr) Variable Function + 72(param): 11(ptr) Variable Function + 45: 7(fvec4) Load 44(VSOut.PositionPS) + Store 42(@fragcoord) 45 + 48: 20(ptr) AccessChain 42(@fragcoord) 47 + 49: 6(float) Load 48 + 50: 6(float) FDiv 46 49 + 51: 20(ptr) AccessChain 42(@fragcoord) 47 + Store 51 50 + 53: 7(fvec4) Load 42(@fragcoord) + 54: 41(ptr) AccessChain 52(VSOut) 17 + Store 54 53 + 57: 8(fvec3) Load 56(VSOut.PosInLightViewSpace) + 59: 58(ptr) AccessChain 52(VSOut) 36 + Store 59 57 + 62: 8(fvec3) Load 61(VSOut.NormalWS) + 63: 58(ptr) AccessChain 52(VSOut) 60 + Store 63 62 + 67: 9(fvec2) Load 66(VSOut.TexCoord) + 69: 68(ptr) AccessChain 52(VSOut) 64 + Store 69 67 + 73:10(VSOutput) Load 52(VSOut) + Store 72(param) 73 + 74: 7(fvec4) FunctionCall 14(@main(struct-VSOutput-vf4-vf3-vf3-vf21;) 72(param) + Store 71(@entryPointOutput) 74 + Return + FunctionEnd +14(@main(struct-VSOutput-vf4-vf3-vf3-vf21;): 7(fvec4) Function None 12 + 13(VSOut): 11(ptr) FunctionParameter + 15: Label + 21: 20(ptr) AccessChain 13(VSOut) 17 19 + 22: 6(float) Load 21 + 25: 24(bool) FOrdLessThan 22 23 + SelectionMerge 27 None + BranchConditional 25 26 35 + 26: Label + 32: 31(ptr) AccessChain 30 17 + 33: 7(fvec4) Load 32 + ReturnValue 33 + 35: Label + 37: 31(ptr) AccessChain 30 36 + 38: 7(fvec4) Load 37 + ReturnValue 38 + 27: Label + Unreachable + FunctionEnd diff --git a/Test/baseResults/iomap.blockOutVariableIn.2.vert.out b/Test/baseResults/iomap.blockOutVariableIn.2.vert.out new file mode 100644 index 00000000..0b4c0ac9 --- /dev/null +++ b/Test/baseResults/iomap.blockOutVariableIn.2.vert.out @@ -0,0 +1,413 @@ +iomap.blockOutVariableIn.2.vert +Shader version: 440 +0:? Sequence +0:9 Function Definition: main( ( global void) +0:9 Function Parameters: +0:11 Sequence +0:11 move second child to first child ( temp 4-component vector of float) +0:11 a1: direct index for structure ( out 4-component vector of float) +0:11 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2}) +0:11 Constant: +0:11 0 (const uint) +0:11 Constant: +0:11 1.000000 +0:11 1.000000 +0:11 1.000000 +0:11 1.000000 +0:12 move second child to first child ( temp 2-component vector of float) +0:12 a2: direct index for structure ( out 2-component vector of float) +0:12 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2}) +0:12 Constant: +0:12 1 (const uint) +0:12 Constant: +0:12 0.500000 +0:12 0.500000 +0:13 move second child to first child ( temp 4-component vector of float) +0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:13 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:13 Constant: +0:13 0 (const uint) +0:13 Constant: +0:13 1.000000 +0:13 1.000000 +0:13 1.000000 +0:13 1.000000 +0:? Linker Objects +0:? 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2}) +0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + +iomap.blockOutVariableIn.geom +Shader version: 440 +invocations = -1 +max_vertices = 3 +input primitive = triangles +output primitive = triangle_strip +0:? Sequence +0:12 Function Definition: main( ( global void) +0:12 Function Parameters: +0:14 Sequence +0:14 move second child to first child ( temp 4-component vector of float) +0:14 'a1' (layout( location=0 stream=0) out 4-component vector of float) +0:14 direct index (layout( location=0) temp 4-component vector of float) +0:14 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float) +0:14 Constant: +0:14 0 (const int) +0:15 move second child to first child ( temp 2-component vector of float) +0:15 'a2' (layout( location=1 stream=0) out 2-component vector of float) +0:15 direct index (layout( location=1) temp 2-component vector of float) +0:15 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float) +0:15 Constant: +0:15 0 (const int) +0:16 move second child to first child ( temp 4-component vector of float) +0:16 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) +0:16 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:16 Constant: +0:16 0 (const uint) +0:16 Constant: +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:17 EmitVertex ( global void) +0:19 move second child to first child ( temp 4-component vector of float) +0:19 'a1' (layout( location=0 stream=0) out 4-component vector of float) +0:19 direct index (layout( location=0) temp 4-component vector of float) +0:19 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float) +0:19 Constant: +0:19 1 (const int) +0:20 move second child to first child ( temp 2-component vector of float) +0:20 'a2' (layout( location=1 stream=0) out 2-component vector of float) +0:20 direct index (layout( location=1) temp 2-component vector of float) +0:20 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float) +0:20 Constant: +0:20 1 (const int) +0:21 move second child to first child ( temp 4-component vector of float) +0:21 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) +0:21 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:21 Constant: +0:21 0 (const uint) +0:21 Constant: +0:21 1.000000 +0:21 1.000000 +0:21 1.000000 +0:21 1.000000 +0:22 EmitVertex ( global void) +0:24 move second child to first child ( temp 4-component vector of float) +0:24 'a1' (layout( location=0 stream=0) out 4-component vector of float) +0:24 direct index (layout( location=0) temp 4-component vector of float) +0:24 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float) +0:24 Constant: +0:24 2 (const int) +0:25 move second child to first child ( temp 2-component vector of float) +0:25 'a2' (layout( location=1 stream=0) out 2-component vector of float) +0:25 direct index (layout( location=1) temp 2-component vector of float) +0:25 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float) +0:25 Constant: +0:25 2 (const int) +0:26 move second child to first child ( temp 4-component vector of float) +0:26 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) +0:26 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:26 Constant: +0:26 0 (const uint) +0:26 Constant: +0:26 1.000000 +0:26 1.000000 +0:26 1.000000 +0:26 1.000000 +0:27 EmitVertex ( global void) +0:? Linker Objects +0:? 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float) +0:? 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float) +0:? 'a1' (layout( location=0 stream=0) out 4-component vector of float) +0:? 'a2' (layout( location=1 stream=0) out 2-component vector of float) +0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) + + +Linked vertex stage: + + +Linked geometry stage: + + +Shader version: 440 +0:? Sequence +0:9 Function Definition: main( ( global void) +0:9 Function Parameters: +0:11 Sequence +0:11 move second child to first child ( temp 4-component vector of float) +0:11 a1: direct index for structure ( out 4-component vector of float) +0:11 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2}) +0:11 Constant: +0:11 0 (const uint) +0:11 Constant: +0:11 1.000000 +0:11 1.000000 +0:11 1.000000 +0:11 1.000000 +0:12 move second child to first child ( temp 2-component vector of float) +0:12 a2: direct index for structure ( out 2-component vector of float) +0:12 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2}) +0:12 Constant: +0:12 1 (const uint) +0:12 Constant: +0:12 0.500000 +0:12 0.500000 +0:13 move second child to first child ( temp 4-component vector of float) +0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:13 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:13 Constant: +0:13 0 (const uint) +0:13 Constant: +0:13 1.000000 +0:13 1.000000 +0:13 1.000000 +0:13 1.000000 +0:? Linker Objects +0:? 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2}) +0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) +Shader version: 440 +invocations = 1 +max_vertices = 3 +input primitive = triangles +output primitive = triangle_strip +0:? Sequence +0:12 Function Definition: main( ( global void) +0:12 Function Parameters: +0:14 Sequence +0:14 move second child to first child ( temp 4-component vector of float) +0:14 'a1' (layout( location=0 stream=0) out 4-component vector of float) +0:14 direct index (layout( location=0) temp 4-component vector of float) +0:14 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float) +0:14 Constant: +0:14 0 (const int) +0:15 move second child to first child ( temp 2-component vector of float) +0:15 'a2' (layout( location=1 stream=0) out 2-component vector of float) +0:15 direct index (layout( location=1) temp 2-component vector of float) +0:15 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float) +0:15 Constant: +0:15 0 (const int) +0:16 move second child to first child ( temp 4-component vector of float) +0:16 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) +0:16 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) +0:16 Constant: +0:16 0 (const uint) +0:16 Constant: +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:17 EmitVertex ( global void) +0:19 move second child to first child ( temp 4-component vector of float) +0:19 'a1' (layout( location=0 stream=0) out 4-component vector of float) +0:19 direct index (layout( location=0) temp 4-component vector of float) +0:19 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float) +0:19 Constant: +0:19 1 (const int) +0:20 move second child to first child ( temp 2-component vector of float) +0:20 'a2' (layout( location=1 stream=0) out 2-component vector of float) +0:20 direct index (layout( location=1) temp 2-component vector of float) +0:20 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float) +0:20 Constant: +0:20 1 (const int) +0:21 move second child to first child ( temp 4-component vector of float) +0:21 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) +0:21 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) +0:21 Constant: +0:21 0 (const uint) +0:21 Constant: +0:21 1.000000 +0:21 1.000000 +0:21 1.000000 +0:21 1.000000 +0:22 EmitVertex ( global void) +0:24 move second child to first child ( temp 4-component vector of float) +0:24 'a1' (layout( location=0 stream=0) out 4-component vector of float) +0:24 direct index (layout( location=0) temp 4-component vector of float) +0:24 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float) +0:24 Constant: +0:24 2 (const int) +0:25 move second child to first child ( temp 2-component vector of float) +0:25 'a2' (layout( location=1 stream=0) out 2-component vector of float) +0:25 direct index (layout( location=1) temp 2-component vector of float) +0:25 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float) +0:25 Constant: +0:25 2 (const int) +0:26 move second child to first child ( temp 4-component vector of float) +0:26 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) +0:26 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) +0:26 Constant: +0:26 0 (const uint) +0:26 Constant: +0:26 1.000000 +0:26 1.000000 +0:26 1.000000 +0:26 1.000000 +0:27 EmitVertex ( global void) +0:? Linker Objects +0:? 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float) +0:? 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float) +0:? 'a1' (layout( location=0 stream=0) out 4-component vector of float) +0:? 'a2' (layout( location=1 stream=0) out 2-component vector of float) +0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) + +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 33 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 11 28 31 32 + Source GLSL 440 + Name 4 "main" + Name 9 "Block" + MemberName 9(Block) 0 "a1" + MemberName 9(Block) 1 "a2" + Name 11 "" + Name 26 "gl_PerVertex" + MemberName 26(gl_PerVertex) 0 "gl_Position" + MemberName 26(gl_PerVertex) 1 "gl_PointSize" + MemberName 26(gl_PerVertex) 2 "gl_ClipDistance" + Name 28 "" + Name 31 "gl_VertexID" + Name 32 "gl_InstanceID" + Decorate 9(Block) Block + Decorate 11 Location 0 + MemberDecorate 26(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 26(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 26(gl_PerVertex) 2 BuiltIn ClipDistance + Decorate 26(gl_PerVertex) Block + Decorate 31(gl_VertexID) BuiltIn VertexId + Decorate 32(gl_InstanceID) BuiltIn InstanceId + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeVector 6(float) 2 + 9(Block): TypeStruct 7(fvec4) 8(fvec2) + 10: TypePointer Output 9(Block) + 11: 10(ptr) Variable Output + 12: TypeInt 32 1 + 13: 12(int) Constant 0 + 14: 6(float) Constant 1065353216 + 15: 7(fvec4) ConstantComposite 14 14 14 14 + 16: TypePointer Output 7(fvec4) + 18: 12(int) Constant 1 + 19: 6(float) Constant 1056964608 + 20: 8(fvec2) ConstantComposite 19 19 + 21: TypePointer Output 8(fvec2) + 23: TypeInt 32 0 + 24: 23(int) Constant 1 + 25: TypeArray 6(float) 24 +26(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 25 + 27: TypePointer Output 26(gl_PerVertex) + 28: 27(ptr) Variable Output + 30: TypePointer Input 12(int) + 31(gl_VertexID): 30(ptr) Variable Input +32(gl_InstanceID): 30(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 17: 16(ptr) AccessChain 11 13 + Store 17 15 + 22: 21(ptr) AccessChain 11 18 + Store 22 20 + 29: 16(ptr) AccessChain 28 13 + Store 29 15 + Return + FunctionEnd +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 49 + + Capability Geometry + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Geometry 4 "main" 9 14 22 25 33 + ExecutionMode 4 Triangles + ExecutionMode 4 Invocations 1 + ExecutionMode 4 OutputTriangleStrip + ExecutionMode 4 OutputVertices 3 + Source GLSL 440 + Name 4 "main" + Name 9 "a1" + Name 14 "in_a1" + Name 22 "a2" + Name 25 "in_a2" + Name 31 "gl_PerVertex" + MemberName 31(gl_PerVertex) 0 "gl_Position" + MemberName 31(gl_PerVertex) 1 "gl_PointSize" + MemberName 31(gl_PerVertex) 2 "gl_ClipDistance" + Name 33 "" + Decorate 9(a1) Location 0 + Decorate 14(in_a1) Location 0 + Decorate 22(a2) Location 1 + Decorate 25(in_a2) Location 1 + MemberDecorate 31(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 31(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 31(gl_PerVertex) 2 BuiltIn ClipDistance + Decorate 31(gl_PerVertex) Block + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(a1): 8(ptr) Variable Output + 10: TypeInt 32 0 + 11: 10(int) Constant 3 + 12: TypeArray 7(fvec4) 11 + 13: TypePointer Input 12 + 14(in_a1): 13(ptr) Variable Input + 15: TypeInt 32 1 + 16: 15(int) Constant 0 + 17: TypePointer Input 7(fvec4) + 20: TypeVector 6(float) 2 + 21: TypePointer Output 20(fvec2) + 22(a2): 21(ptr) Variable Output + 23: TypeArray 20(fvec2) 11 + 24: TypePointer Input 23 + 25(in_a2): 24(ptr) Variable Input + 26: TypePointer Input 20(fvec2) + 29: 10(int) Constant 1 + 30: TypeArray 6(float) 29 +31(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 30 + 32: TypePointer Output 31(gl_PerVertex) + 33: 32(ptr) Variable Output + 34: 6(float) Constant 1065353216 + 35: 7(fvec4) ConstantComposite 34 34 34 34 + 37: 15(int) Constant 1 + 43: 15(int) Constant 2 + 4(main): 2 Function None 3 + 5: Label + 18: 17(ptr) AccessChain 14(in_a1) 16 + 19: 7(fvec4) Load 18 + Store 9(a1) 19 + 27: 26(ptr) AccessChain 25(in_a2) 16 + 28: 20(fvec2) Load 27 + Store 22(a2) 28 + 36: 8(ptr) AccessChain 33 16 + Store 36 35 + EmitVertex + 38: 17(ptr) AccessChain 14(in_a1) 37 + 39: 7(fvec4) Load 38 + Store 9(a1) 39 + 40: 26(ptr) AccessChain 25(in_a2) 37 + 41: 20(fvec2) Load 40 + Store 22(a2) 41 + 42: 8(ptr) AccessChain 33 16 + Store 42 35 + EmitVertex + 44: 17(ptr) AccessChain 14(in_a1) 43 + 45: 7(fvec4) Load 44 + Store 9(a1) 45 + 46: 26(ptr) AccessChain 25(in_a2) 43 + 47: 20(fvec2) Load 46 + Store 22(a2) 47 + 48: 8(ptr) AccessChain 33 16 + Store 48 35 + EmitVertex + Return + FunctionEnd diff --git a/Test/baseResults/iomap.blockOutVariableIn.vert.out b/Test/baseResults/iomap.blockOutVariableIn.vert.out new file mode 100644 index 00000000..dd12cbc2 --- /dev/null +++ b/Test/baseResults/iomap.blockOutVariableIn.vert.out @@ -0,0 +1,234 @@ +iomap.blockOutVariableIn.vert +Shader version: 440 +0:? Sequence +0:9 Function Definition: main( ( global void) +0:9 Function Parameters: +0:11 Sequence +0:11 move second child to first child ( temp 4-component vector of float) +0:11 a1: direct index for structure ( out 4-component vector of float) +0:11 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2}) +0:11 Constant: +0:11 0 (const uint) +0:11 Constant: +0:11 1.000000 +0:11 1.000000 +0:11 1.000000 +0:11 1.000000 +0:12 move second child to first child ( temp 2-component vector of float) +0:12 a2: direct index for structure ( out 2-component vector of float) +0:12 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2}) +0:12 Constant: +0:12 1 (const uint) +0:12 Constant: +0:12 0.500000 +0:12 0.500000 +0:13 move second child to first child ( temp 4-component vector of float) +0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:13 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:13 Constant: +0:13 0 (const uint) +0:13 Constant: +0:13 1.000000 +0:13 1.000000 +0:13 1.000000 +0:13 1.000000 +0:? Linker Objects +0:? 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2}) +0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + +iomap.blockOutVariableIn.frag +Shader version: 440 +0:? Sequence +0:8 Function Definition: main( ( global void) +0:8 Function Parameters: +0:10 Sequence +0:10 move second child to first child ( temp 4-component vector of float) +0:10 'color' (layout( location=0) out 4-component vector of float) +0:10 Construct vec4 ( temp 4-component vector of float) +0:10 vector swizzle ( temp 2-component vector of float) +0:10 'a1' (layout( location=0) smooth in 4-component vector of float) +0:10 Sequence +0:10 Constant: +0:10 0 (const int) +0:10 Constant: +0:10 1 (const int) +0:10 'a2' (layout( location=1) smooth in 2-component vector of float) +0:? Linker Objects +0:? 'a1' (layout( location=0) smooth in 4-component vector of float) +0:? 'a2' (layout( location=1) smooth in 2-component vector of float) +0:? 'color' (layout( location=0) out 4-component vector of float) + + +Linked vertex stage: + + +Linked fragment stage: + + +Shader version: 440 +0:? Sequence +0:9 Function Definition: main( ( global void) +0:9 Function Parameters: +0:11 Sequence +0:11 move second child to first child ( temp 4-component vector of float) +0:11 a1: direct index for structure ( out 4-component vector of float) +0:11 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2}) +0:11 Constant: +0:11 0 (const uint) +0:11 Constant: +0:11 1.000000 +0:11 1.000000 +0:11 1.000000 +0:11 1.000000 +0:12 move second child to first child ( temp 2-component vector of float) +0:12 a2: direct index for structure ( out 2-component vector of float) +0:12 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2}) +0:12 Constant: +0:12 1 (const uint) +0:12 Constant: +0:12 0.500000 +0:12 0.500000 +0:13 move second child to first child ( temp 4-component vector of float) +0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:13 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:13 Constant: +0:13 0 (const uint) +0:13 Constant: +0:13 1.000000 +0:13 1.000000 +0:13 1.000000 +0:13 1.000000 +0:? Linker Objects +0:? 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2}) +0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) +Shader version: 440 +0:? Sequence +0:8 Function Definition: main( ( global void) +0:8 Function Parameters: +0:10 Sequence +0:10 move second child to first child ( temp 4-component vector of float) +0:10 'color' (layout( location=0) out 4-component vector of float) +0:10 Construct vec4 ( temp 4-component vector of float) +0:10 vector swizzle ( temp 2-component vector of float) +0:10 'a1' (layout( location=0) smooth in 4-component vector of float) +0:10 Sequence +0:10 Constant: +0:10 0 (const int) +0:10 Constant: +0:10 1 (const int) +0:10 'a2' (layout( location=1) smooth in 2-component vector of float) +0:? Linker Objects +0:? 'a1' (layout( location=0) smooth in 4-component vector of float) +0:? 'a2' (layout( location=1) smooth in 2-component vector of float) +0:? 'color' (layout( location=0) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 33 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 11 28 31 32 + Source GLSL 440 + Name 4 "main" + Name 9 "Block" + MemberName 9(Block) 0 "a1" + MemberName 9(Block) 1 "a2" + Name 11 "" + Name 26 "gl_PerVertex" + MemberName 26(gl_PerVertex) 0 "gl_Position" + MemberName 26(gl_PerVertex) 1 "gl_PointSize" + MemberName 26(gl_PerVertex) 2 "gl_ClipDistance" + Name 28 "" + Name 31 "gl_VertexID" + Name 32 "gl_InstanceID" + Decorate 9(Block) Block + Decorate 11 Location 0 + MemberDecorate 26(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 26(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 26(gl_PerVertex) 2 BuiltIn ClipDistance + Decorate 26(gl_PerVertex) Block + Decorate 31(gl_VertexID) BuiltIn VertexId + Decorate 32(gl_InstanceID) BuiltIn InstanceId + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeVector 6(float) 2 + 9(Block): TypeStruct 7(fvec4) 8(fvec2) + 10: TypePointer Output 9(Block) + 11: 10(ptr) Variable Output + 12: TypeInt 32 1 + 13: 12(int) Constant 0 + 14: 6(float) Constant 1065353216 + 15: 7(fvec4) ConstantComposite 14 14 14 14 + 16: TypePointer Output 7(fvec4) + 18: 12(int) Constant 1 + 19: 6(float) Constant 1056964608 + 20: 8(fvec2) ConstantComposite 19 19 + 21: TypePointer Output 8(fvec2) + 23: TypeInt 32 0 + 24: 23(int) Constant 1 + 25: TypeArray 6(float) 24 +26(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 25 + 27: TypePointer Output 26(gl_PerVertex) + 28: 27(ptr) Variable Output + 30: TypePointer Input 12(int) + 31(gl_VertexID): 30(ptr) Variable Input +32(gl_InstanceID): 30(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 17: 16(ptr) AccessChain 11 13 + Store 17 15 + 22: 21(ptr) AccessChain 11 18 + Store 22 20 + 29: 16(ptr) AccessChain 28 13 + Store 29 15 + Return + FunctionEnd +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 23 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 11 16 + ExecutionMode 4 OriginLowerLeft + Source GLSL 440 + Name 4 "main" + Name 9 "color" + Name 11 "a1" + Name 16 "a2" + Decorate 9(color) Location 0 + Decorate 11(a1) Location 0 + Decorate 16(a2) Location 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(color): 8(ptr) Variable Output + 10: TypePointer Input 7(fvec4) + 11(a1): 10(ptr) Variable Input + 12: TypeVector 6(float) 2 + 15: TypePointer Input 12(fvec2) + 16(a2): 15(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 13: 7(fvec4) Load 11(a1) + 14: 12(fvec2) VectorShuffle 13 13 0 1 + 17: 12(fvec2) Load 16(a2) + 18: 6(float) CompositeExtract 14 0 + 19: 6(float) CompositeExtract 14 1 + 20: 6(float) CompositeExtract 17 0 + 21: 6(float) CompositeExtract 17 1 + 22: 7(fvec4) CompositeConstruct 18 19 20 21 + Store 9(color) 22 + Return + FunctionEnd diff --git a/Test/baseResults/iomap.crossStage.2.vert.out b/Test/baseResults/iomap.crossStage.2.vert.out index 325c1b46..85139cc7 100644 --- a/Test/baseResults/iomap.crossStage.2.vert.out +++ b/Test/baseResults/iomap.crossStage.2.vert.out @@ -207,8 +207,9 @@ Linked geometry stage: Linked fragment stage: -WARNING: Linking unknown stage stage: Matched shader interfaces are using different instance names. - blockName1: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}" versus blockName2: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}" +WARNING: Linking unknown stage and fragment stages: Matched shader interfaces are using different instance names. + unknown stage stage: Block: crossStageBlock2 Instance: blockName1: "" + fragment stage: Block: crossStageBlock2 Instance: blockName2: "" Shader version: 460 0:? Sequence diff --git a/Test/baseResults/iomap.crossStage.vert.out b/Test/baseResults/iomap.crossStage.vert.out index 5338b807..13ff58c9 100644 --- a/Test/baseResults/iomap.crossStage.vert.out +++ b/Test/baseResults/iomap.crossStage.vert.out @@ -133,8 +133,9 @@ Linked vertex stage: Linked fragment stage: -WARNING: Linking unknown stage stage: Matched shader interfaces are using different instance names. - blockName1: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}" versus blockName2: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}" +WARNING: Linking unknown stage and fragment stages: Matched shader interfaces are using different instance names. + unknown stage stage: Block: crossStageBlock2 Instance: blockName1: "" + fragment stage: Block: crossStageBlock2 Instance: blockName2: "" Shader version: 460 0:? Sequence diff --git a/Test/baseResults/iomap.crossStage.vk.vert.out b/Test/baseResults/iomap.crossStage.vk.vert.out index e137bdfc..0a2eae84 100644 --- a/Test/baseResults/iomap.crossStage.vk.vert.out +++ b/Test/baseResults/iomap.crossStage.vk.vert.out @@ -194,8 +194,9 @@ Linked geometry stage: Linked fragment stage: -WARNING: Linking unknown stage stage: Matched shader interfaces are using different instance names. - blockName1: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b}" versus blockName2: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b}" +WARNING: Linking unknown stage and fragment stages: Matched shader interfaces are using different instance names. + unknown stage stage: Block: crossStageBlock2 Instance: blockName1: "" + fragment stage: Block: crossStageBlock2 Instance: blockName2: "" Shader version: 460 0:? Sequence diff --git a/Test/baseResults/iomap.variableOutBlockIn.2.vert.out b/Test/baseResults/iomap.variableOutBlockIn.2.vert.out new file mode 100644 index 00000000..6ef7d4e3 --- /dev/null +++ b/Test/baseResults/iomap.variableOutBlockIn.2.vert.out @@ -0,0 +1,276 @@ +iomap.variableOutBlockIn.2.vert +Shader version: 440 +0:? Sequence +0:6 Function Definition: main( ( global void) +0:6 Function Parameters: +0:8 Sequence +0:8 move second child to first child ( temp 4-component vector of float) +0:8 'a1' (layout( location=0) smooth out 4-component vector of float) +0:8 Constant: +0:8 1.000000 +0:8 1.000000 +0:8 1.000000 +0:8 1.000000 +0:9 move second child to first child ( temp 2-component vector of float) +0:9 'a2' (layout( location=1) smooth out 2-component vector of float) +0:9 Constant: +0:9 0.500000 +0:9 0.500000 +0:10 move second child to first child ( temp 4-component vector of float) +0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:10 Constant: +0:10 0 (const uint) +0:10 Constant: +0:10 1.000000 +0:10 1.000000 +0:10 1.000000 +0:10 1.000000 +0:? Linker Objects +0:? 'a1' (layout( location=0) smooth out 4-component vector of float) +0:? 'a2' (layout( location=1) smooth out 2-component vector of float) +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + +iomap.variableOutBlockIn.geom +Shader version: 440 +invocations = -1 +max_vertices = 3 +input primitive = triangles +output primitive = triangle_strip +0:? Sequence +0:14 Function Definition: main( ( global void) +0:14 Function Parameters: +0:16 Sequence +0:16 move second child to first child ( temp 4-component vector of float) +0:16 'a1' (layout( location=0 stream=0) out 4-component vector of float) +0:16 Constant: +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:17 move second child to first child ( temp 2-component vector of float) +0:17 'a2' (layout( location=1 stream=0) out 2-component vector of float) +0:17 Constant: +0:17 0.500000 +0:17 0.500000 +0:18 move second child to first child ( temp 4-component vector of float) +0:18 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) +0:18 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:18 Constant: +0:18 0 (const uint) +0:18 Constant: +0:18 1.000000 +0:18 1.000000 +0:18 1.000000 +0:18 1.000000 +0:? Linker Objects +0:? 'gin' (layout( location=0) in 3-element array of block{ in 4-component vector of float a1, in 2-component vector of float a2}) +0:? 'a1' (layout( location=0 stream=0) out 4-component vector of float) +0:? 'a2' (layout( location=1 stream=0) out 2-component vector of float) +0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) + + +Linked vertex stage: + + +Linked geometry stage: + + +Shader version: 440 +0:? Sequence +0:6 Function Definition: main( ( global void) +0:6 Function Parameters: +0:8 Sequence +0:8 move second child to first child ( temp 4-component vector of float) +0:8 'a1' (layout( location=0) smooth out 4-component vector of float) +0:8 Constant: +0:8 1.000000 +0:8 1.000000 +0:8 1.000000 +0:8 1.000000 +0:9 move second child to first child ( temp 2-component vector of float) +0:9 'a2' (layout( location=1) smooth out 2-component vector of float) +0:9 Constant: +0:9 0.500000 +0:9 0.500000 +0:10 move second child to first child ( temp 4-component vector of float) +0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:10 Constant: +0:10 0 (const uint) +0:10 Constant: +0:10 1.000000 +0:10 1.000000 +0:10 1.000000 +0:10 1.000000 +0:? Linker Objects +0:? 'a1' (layout( location=0) smooth out 4-component vector of float) +0:? 'a2' (layout( location=1) smooth out 2-component vector of float) +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) +Shader version: 440 +invocations = 1 +max_vertices = 3 +input primitive = triangles +output primitive = triangle_strip +0:? Sequence +0:14 Function Definition: main( ( global void) +0:14 Function Parameters: +0:16 Sequence +0:16 move second child to first child ( temp 4-component vector of float) +0:16 'a1' (layout( location=0 stream=0) out 4-component vector of float) +0:16 Constant: +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:17 move second child to first child ( temp 2-component vector of float) +0:17 'a2' (layout( location=1 stream=0) out 2-component vector of float) +0:17 Constant: +0:17 0.500000 +0:17 0.500000 +0:18 move second child to first child ( temp 4-component vector of float) +0:18 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) +0:18 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) +0:18 Constant: +0:18 0 (const uint) +0:18 Constant: +0:18 1.000000 +0:18 1.000000 +0:18 1.000000 +0:18 1.000000 +0:? Linker Objects +0:? 'gin' (layout( location=0) in 3-element array of block{ in 4-component vector of float a1, in 2-component vector of float a2}) +0:? 'a1' (layout( location=0 stream=0) out 4-component vector of float) +0:? 'a2' (layout( location=1 stream=0) out 2-component vector of float) +0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) + +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 29 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 9 14 22 27 28 + Source GLSL 440 + Name 4 "main" + Name 9 "a1" + Name 14 "a2" + Name 20 "gl_PerVertex" + MemberName 20(gl_PerVertex) 0 "gl_Position" + MemberName 20(gl_PerVertex) 1 "gl_PointSize" + MemberName 20(gl_PerVertex) 2 "gl_ClipDistance" + Name 22 "" + Name 27 "gl_VertexID" + Name 28 "gl_InstanceID" + Decorate 9(a1) Location 0 + Decorate 14(a2) Location 1 + MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance + Decorate 20(gl_PerVertex) Block + Decorate 27(gl_VertexID) BuiltIn VertexId + Decorate 28(gl_InstanceID) BuiltIn InstanceId + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(a1): 8(ptr) Variable Output + 10: 6(float) Constant 1065353216 + 11: 7(fvec4) ConstantComposite 10 10 10 10 + 12: TypeVector 6(float) 2 + 13: TypePointer Output 12(fvec2) + 14(a2): 13(ptr) Variable Output + 15: 6(float) Constant 1056964608 + 16: 12(fvec2) ConstantComposite 15 15 + 17: TypeInt 32 0 + 18: 17(int) Constant 1 + 19: TypeArray 6(float) 18 +20(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 19 + 21: TypePointer Output 20(gl_PerVertex) + 22: 21(ptr) Variable Output + 23: TypeInt 32 1 + 24: 23(int) Constant 0 + 26: TypePointer Input 23(int) + 27(gl_VertexID): 26(ptr) Variable Input +28(gl_InstanceID): 26(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + Store 9(a1) 11 + Store 14(a2) 16 + 25: 8(ptr) AccessChain 22 24 + Store 25 11 + Return + FunctionEnd +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 31 + + Capability Geometry + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Geometry 4 "main" 9 14 22 30 + ExecutionMode 4 Triangles + ExecutionMode 4 Invocations 1 + ExecutionMode 4 OutputTriangleStrip + ExecutionMode 4 OutputVertices 3 + Source GLSL 440 + Name 4 "main" + Name 9 "a1" + Name 14 "a2" + Name 20 "gl_PerVertex" + MemberName 20(gl_PerVertex) 0 "gl_Position" + MemberName 20(gl_PerVertex) 1 "gl_PointSize" + MemberName 20(gl_PerVertex) 2 "gl_ClipDistance" + Name 22 "" + Name 26 "Inputs" + MemberName 26(Inputs) 0 "a1" + MemberName 26(Inputs) 1 "a2" + Name 30 "gin" + Decorate 9(a1) Location 0 + Decorate 14(a2) Location 1 + MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance + Decorate 20(gl_PerVertex) Block + Decorate 26(Inputs) Block + Decorate 30(gin) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(a1): 8(ptr) Variable Output + 10: 6(float) Constant 1065353216 + 11: 7(fvec4) ConstantComposite 10 10 10 10 + 12: TypeVector 6(float) 2 + 13: TypePointer Output 12(fvec2) + 14(a2): 13(ptr) Variable Output + 15: 6(float) Constant 1056964608 + 16: 12(fvec2) ConstantComposite 15 15 + 17: TypeInt 32 0 + 18: 17(int) Constant 1 + 19: TypeArray 6(float) 18 +20(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 19 + 21: TypePointer Output 20(gl_PerVertex) + 22: 21(ptr) Variable Output + 23: TypeInt 32 1 + 24: 23(int) Constant 0 + 26(Inputs): TypeStruct 7(fvec4) 12(fvec2) + 27: 17(int) Constant 3 + 28: TypeArray 26(Inputs) 27 + 29: TypePointer Input 28 + 30(gin): 29(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + Store 9(a1) 11 + Store 14(a2) 16 + 25: 8(ptr) AccessChain 22 24 + Store 25 11 + Return + FunctionEnd diff --git a/Test/baseResults/iomap.variableOutBlockIn.vert.out b/Test/baseResults/iomap.variableOutBlockIn.vert.out new file mode 100644 index 00000000..8fef640d --- /dev/null +++ b/Test/baseResults/iomap.variableOutBlockIn.vert.out @@ -0,0 +1,236 @@ +iomap.variableOutBlockIn.vert +Shader version: 440 +0:? Sequence +0:6 Function Definition: main( ( global void) +0:6 Function Parameters: +0:8 Sequence +0:8 move second child to first child ( temp 4-component vector of float) +0:8 'a1' (layout( location=0) smooth out 4-component vector of float) +0:8 Constant: +0:8 1.000000 +0:8 1.000000 +0:8 1.000000 +0:8 1.000000 +0:9 move second child to first child ( temp 2-component vector of float) +0:9 'a2' (layout( location=1) smooth out 2-component vector of float) +0:9 Constant: +0:9 0.500000 +0:9 0.500000 +0:10 move second child to first child ( temp 4-component vector of float) +0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:10 Constant: +0:10 0 (const uint) +0:10 Constant: +0:10 1.000000 +0:10 1.000000 +0:10 1.000000 +0:10 1.000000 +0:? Linker Objects +0:? 'a1' (layout( location=0) smooth out 4-component vector of float) +0:? 'a2' (layout( location=1) smooth out 2-component vector of float) +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + +iomap.variableOutBlockIn.frag +Shader version: 440 +0:? Sequence +0:10 Function Definition: main( ( global void) +0:10 Function Parameters: +0:12 Sequence +0:12 move second child to first child ( temp 4-component vector of float) +0:12 'color' (layout( location=0) out 4-component vector of float) +0:12 Construct vec4 ( temp 4-component vector of float) +0:12 vector swizzle ( temp 2-component vector of float) +0:12 a1: direct index for structure ( in 4-component vector of float) +0:12 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2}) +0:12 Constant: +0:12 0 (const uint) +0:12 Sequence +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 a2: direct index for structure ( in 2-component vector of float) +0:12 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2}) +0:12 Constant: +0:12 1 (const uint) +0:? Linker Objects +0:? 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2}) +0:? 'color' (layout( location=0) out 4-component vector of float) + + +Linked vertex stage: + + +Linked fragment stage: + + +Shader version: 440 +0:? Sequence +0:6 Function Definition: main( ( global void) +0:6 Function Parameters: +0:8 Sequence +0:8 move second child to first child ( temp 4-component vector of float) +0:8 'a1' (layout( location=0) smooth out 4-component vector of float) +0:8 Constant: +0:8 1.000000 +0:8 1.000000 +0:8 1.000000 +0:8 1.000000 +0:9 move second child to first child ( temp 2-component vector of float) +0:9 'a2' (layout( location=1) smooth out 2-component vector of float) +0:9 Constant: +0:9 0.500000 +0:9 0.500000 +0:10 move second child to first child ( temp 4-component vector of float) +0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:10 Constant: +0:10 0 (const uint) +0:10 Constant: +0:10 1.000000 +0:10 1.000000 +0:10 1.000000 +0:10 1.000000 +0:? Linker Objects +0:? 'a1' (layout( location=0) smooth out 4-component vector of float) +0:? 'a2' (layout( location=1) smooth out 2-component vector of float) +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) +Shader version: 440 +0:? Sequence +0:10 Function Definition: main( ( global void) +0:10 Function Parameters: +0:12 Sequence +0:12 move second child to first child ( temp 4-component vector of float) +0:12 'color' (layout( location=0) out 4-component vector of float) +0:12 Construct vec4 ( temp 4-component vector of float) +0:12 vector swizzle ( temp 2-component vector of float) +0:12 a1: direct index for structure ( in 4-component vector of float) +0:12 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2}) +0:12 Constant: +0:12 0 (const uint) +0:12 Sequence +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 a2: direct index for structure ( in 2-component vector of float) +0:12 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2}) +0:12 Constant: +0:12 1 (const uint) +0:? Linker Objects +0:? 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2}) +0:? 'color' (layout( location=0) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 29 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 9 14 22 27 28 + Source GLSL 440 + Name 4 "main" + Name 9 "a1" + Name 14 "a2" + Name 20 "gl_PerVertex" + MemberName 20(gl_PerVertex) 0 "gl_Position" + MemberName 20(gl_PerVertex) 1 "gl_PointSize" + MemberName 20(gl_PerVertex) 2 "gl_ClipDistance" + Name 22 "" + Name 27 "gl_VertexID" + Name 28 "gl_InstanceID" + Decorate 9(a1) Location 0 + Decorate 14(a2) Location 1 + MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance + Decorate 20(gl_PerVertex) Block + Decorate 27(gl_VertexID) BuiltIn VertexId + Decorate 28(gl_InstanceID) BuiltIn InstanceId + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(a1): 8(ptr) Variable Output + 10: 6(float) Constant 1065353216 + 11: 7(fvec4) ConstantComposite 10 10 10 10 + 12: TypeVector 6(float) 2 + 13: TypePointer Output 12(fvec2) + 14(a2): 13(ptr) Variable Output + 15: 6(float) Constant 1056964608 + 16: 12(fvec2) ConstantComposite 15 15 + 17: TypeInt 32 0 + 18: 17(int) Constant 1 + 19: TypeArray 6(float) 18 +20(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 19 + 21: TypePointer Output 20(gl_PerVertex) + 22: 21(ptr) Variable Output + 23: TypeInt 32 1 + 24: 23(int) Constant 0 + 26: TypePointer Input 23(int) + 27(gl_VertexID): 26(ptr) Variable Input +28(gl_InstanceID): 26(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + Store 9(a1) 11 + Store 14(a2) 16 + 25: 8(ptr) AccessChain 22 24 + Store 25 11 + Return + FunctionEnd +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 29 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 13 + ExecutionMode 4 OriginLowerLeft + Source GLSL 440 + Name 4 "main" + Name 9 "color" + Name 11 "Inputs" + MemberName 11(Inputs) 0 "a1" + MemberName 11(Inputs) 1 "a2" + Name 13 "" + Decorate 9(color) Location 0 + Decorate 11(Inputs) Block + Decorate 13 Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(color): 8(ptr) Variable Output + 10: TypeVector 6(float) 2 + 11(Inputs): TypeStruct 7(fvec4) 10(fvec2) + 12: TypePointer Input 11(Inputs) + 13: 12(ptr) Variable Input + 14: TypeInt 32 1 + 15: 14(int) Constant 0 + 16: TypePointer Input 7(fvec4) + 20: 14(int) Constant 1 + 21: TypePointer Input 10(fvec2) + 4(main): 2 Function None 3 + 5: Label + 17: 16(ptr) AccessChain 13 15 + 18: 7(fvec4) Load 17 + 19: 10(fvec2) VectorShuffle 18 18 0 1 + 22: 21(ptr) AccessChain 13 20 + 23: 10(fvec2) Load 22 + 24: 6(float) CompositeExtract 19 0 + 25: 6(float) CompositeExtract 19 1 + 26: 6(float) CompositeExtract 23 0 + 27: 6(float) CompositeExtract 23 1 + 28: 7(fvec4) CompositeConstruct 24 25 26 27 + Store 9(color) 28 + Return + FunctionEnd diff --git a/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out b/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out index 404ae849..c34401cb 100644 --- a/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out +++ b/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out @@ -92,15 +92,20 @@ Shader version: 430 Linked vertex stage: -ERROR: Linking vertex stage: Types must match: - anon@0: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj}" versus anon@1: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}" -ERROR: Linking vertex stage: Types must match: - anon@2: " out block{ out 4-component vector of float v1}" versus " out block{ out 4-component vector of float v1, out 4-component vector of float v2}" -ERROR: Linking vertex stage: Types must match: - anon@1: "layout( column_major shared) buffer block{layout( column_major shared) buffer 4-component vector of float b}" versus anon@3: "layout( column_major shared) buffer block{layout( column_major shared) buffer 4-component vector of float a}" -ERROR: Linking vertex stage: Matched Uniform or Storage blocks must all be anonymous, or all be named: -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - myName: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float m}" versus anon@4: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float m}" +ERROR: Linking vertex and vertex stages: vertex block member has no corresponding member in vertex block: + vertex stage: Block: Block, Member: uWorld + vertex stage: Block: Block, Member: n/a +ERROR: Linking vertex and vertex stages: vertex block member has no corresponding member in vertex block: + vertex stage: Block: Vertex, Member: v2 + vertex stage: Block: Vertex, Member: n/a +ERROR: Linking vertex and vertex stages: Member names and types must match: + Block: BufferBlock + vertex stage: " vec4 b" + vertex stage: " vec4 a" +ERROR: Linking vertex and vertex stages: Matched Uniform or Storage blocks must all be anonymous, or all be named: +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: NamedBlock Instance: myName: "" + vertex stage: Block: NamedBlock Instance: anon@4: "" Shader version: 430 ERROR: node is still EOpNull! diff --git a/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out b/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out index ad609e86..d94debbf 100644 --- a/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out +++ b/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out @@ -89,19 +89,35 @@ Shader version: 430 Linked vertex stage: -ERROR: Linking vertex stage: Types must match: -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - uC: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1}" versus uColorB: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2}" -ERROR: Linking vertex stage: Types must match: -ERROR: Linking vertex stage: Storage qualifiers must match: -ERROR: Linking vertex stage: Layout qualification must match: - uBufC: "layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float color1}" versus uColorB: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2}" -ERROR: Linking vertex stage: Types must match: -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - uD: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj}" versus uDefaultB: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uWorld}" -ERROR: Linking vertex stage: Types must match: -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - oV: " out block{ out 4-component vector of float v1}" versus oVert: " out block{ out 4-component vector of float v2}" +ERROR: Linking vertex and vertex stages: Member names and types must match: + Block: ColorBlock + vertex stage: " vec4 color1" + vertex stage: " vec4 color2" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: ColorBlock Instance: uC: "" + vertex stage: Block: ColorBlock Instance: uColorB: "" +ERROR: Linking vertex and vertex stages: Member names and types must match: + Block: ColorBlock + vertex stage: " vec4 color1" + vertex stage: " vec4 color2" +ERROR: Linking vertex and vertex stages: Storage qualifiers must match: +ERROR: Linking vertex and vertex stages: Layout packing qualifier must match: + vertex stage: Block: ColorBlock Instance: uBufC: "layout( column_major std430) buffer" + vertex stage: Block: ColorBlock Instance: uColorB: "layout( column_major std140) uniform" +ERROR: Linking vertex and vertex stages: Member names and types must match: + Block: Block + vertex stage: " mat4x4 uProj" + vertex stage: " mat4x4 uWorld" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: Block Instance: uD: "" + vertex stage: Block: Block Instance: uDefaultB: "" +ERROR: Linking vertex and vertex stages: Member names and types must match: + Block: Vertex + vertex stage: " vec4 v1" + vertex stage: " vec4 v2" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: Vertex Instance: oV: "" + vertex stage: Block: Vertex Instance: oVert: "" Shader version: 430 0:? Sequence diff --git a/Test/baseResults/link.multiBlocksValid.1.0.vert.out b/Test/baseResults/link.multiBlocksValid.1.0.vert.out index 0015cab4..69513f05 100644 --- a/Test/baseResults/link.multiBlocksValid.1.0.vert.out +++ b/Test/baseResults/link.multiBlocksValid.1.0.vert.out @@ -83,12 +83,15 @@ Shader version: 430 Linked vertex stage: -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - c: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}" versus a: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}" -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - a: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}" versus b: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}" -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - b: " out block{ out 4-component vector of float v1, out 4-component vector of float v2}" versus c: " out block{ out 4-component vector of float v1, out 4-component vector of float v2}" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: ColorBlock Instance: c: "" + vertex stage: Block: ColorBlock Instance: a: "" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: Block Instance: a: "" + vertex stage: Block: Block Instance: b: "" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: Vertex Instance: b: "" + vertex stage: Block: Vertex Instance: c: "" Shader version: 430 0:? Sequence diff --git a/Test/baseResults/link.vk.differentPC.0.0.frag.out b/Test/baseResults/link.vk.differentPC.0.0.frag.out index d7cfd220..d78ba54a 100644 --- a/Test/baseResults/link.vk.differentPC.0.0.frag.out +++ b/Test/baseResults/link.vk.differentPC.0.0.frag.out @@ -52,8 +52,10 @@ gl_FragCoord origin is upper left Linked fragment stage: -ERROR: Linking fragment stage: Types must match: - uPC: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}" versus "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale2}" +ERROR: Linking fragment and fragment stages: Member names and types must match: + Block: PushConstantBlock + fragment stage: " float scale" + fragment stage: " float scale2" Shader version: 450 gl_FragCoord origin is upper left diff --git a/Test/baseResults/link.vk.differentPC.1.0.frag.out b/Test/baseResults/link.vk.differentPC.1.0.frag.out index 632f18b1..07ed124a 100644 --- a/Test/baseResults/link.vk.differentPC.1.0.frag.out +++ b/Test/baseResults/link.vk.differentPC.1.0.frag.out @@ -52,10 +52,12 @@ gl_FragCoord origin is upper left Linked fragment stage: -ERROR: Linking fragment stage: Types must match: - uPC: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale, layout( column_major std430 offset=36) uniform highp float scale2}" versus "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}" -ERROR: Linking fragment stage: Types must match: - uPC: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale, layout( column_major std430 offset=36) uniform highp float scale2}" versus "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}" +ERROR: Linking fragment and fragment stages: fragment block member has no corresponding member in fragment block: + fragment stage: Block: PushConstantBlock, Member: scale2 + fragment stage: Block: PushConstantBlock, Member: n/a +ERROR: Linking fragment and fragment stages: fragment block member has no corresponding member in fragment block: + fragment stage: Block: PushConstantBlock, Member: scale2 + fragment stage: Block: PushConstantBlock, Member: n/a Shader version: 450 gl_FragCoord origin is upper left diff --git a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out index bdabab18..29a4df04 100644 --- a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out +++ b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out @@ -87,14 +87,18 @@ Shader version: 430 Linked vertex stage: -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - uC: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}" versus uColor: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}" -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - uBuf: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}" versus uBuffer: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}" -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - uM: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}" versus uMatrix: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}" -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - oV: " out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}" versus anon@0: " out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: ColorBlock Instance: uC: "" + vertex stage: Block: ColorBlock Instance: uColor: "" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: BufferBlock Instance: uBuf: "" + vertex stage: Block: BufferBlock Instance: uBuffer: "" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: MatrixBlock Instance: uM: "" + vertex stage: Block: MatrixBlock Instance: uMatrix: "" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: Vertex Instance: oV: "" + vertex stage: Block: Vertex Instance: anon@0: "" Shader version: 430 0:? Sequence diff --git a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out index b0456a08..4005f601 100644 --- a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out +++ b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out @@ -131,16 +131,21 @@ output primitive = triangle_strip Linked geometry stage: -WARNING: Linking geometry stage: Matched shader interfaces are using different instance names. - uC: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}" versus uColor: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}" -WARNING: Linking geometry stage: Matched shader interfaces are using different instance names. - uBuf: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}" versus uBuffer: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}" -WARNING: Linking geometry stage: Matched shader interfaces are using different instance names. - uM: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}" versus uMatrix: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}" -WARNING: Linking geometry stage: Matched shader interfaces are using different instance names. - oV: "layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}" versus anon@0: "layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}" -WARNING: Linking geometry stage: Matched shader interfaces are using different instance names. - iV: " in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}" versus iVV: " in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}" +WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names. + geometry stage: Block: ColorBlock Instance: uC: "" + geometry stage: Block: ColorBlock Instance: uColor: "" +WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names. + geometry stage: Block: BufferBlock Instance: uBuf: "" + geometry stage: Block: BufferBlock Instance: uBuffer: "" +WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names. + geometry stage: Block: MatrixBlock Instance: uM: "" + geometry stage: Block: MatrixBlock Instance: uMatrix: "" +WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names. + geometry stage: Block: Vertex Instance: oV: "" + geometry stage: Block: Vertex Instance: anon@0: "" +WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names. + geometry stage: Block: Vertex Instance: iV: "" + geometry stage: Block: Vertex Instance: iVV: "" Shader version: 430 invocations = 1 diff --git a/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out b/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out index e1d5c888..f84877e0 100644 --- a/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out +++ b/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out @@ -56,8 +56,9 @@ Shader version: 450 Linked vertex stage: -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - a: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}" versus b: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: PCBlock Instance: a: "" + vertex stage: Block: PCBlock Instance: b: "" Shader version: 450 0:? Sequence diff --git a/Test/baseResults/noMatchingFunction.frag.out b/Test/baseResults/noMatchingFunction.frag.out new file mode 100644 index 00000000..85aa3f6c --- /dev/null +++ b/Test/baseResults/noMatchingFunction.frag.out @@ -0,0 +1,52 @@ +noMatchingFunction.frag +ERROR: 0:17: 'func' : no matching overloaded function found +ERROR: 1 compilation errors. No code generated. + + +Shader version: 330 +ERROR: node is still EOpNull! +0:8 Function Definition: func(struct-S-f11; ( global float) +0:8 Function Parameters: +0:8 's' ( in structure{ global float a}) +0:10 Sequence +0:10 Branch: Return with expression +0:10 a: direct index for structure ( global float) +0:10 's' ( in structure{ global float a}) +0:10 Constant: +0:10 0 (const int) +0:15 Function Definition: main( ( global void) +0:15 Function Parameters: +0:17 Sequence +0:17 Sequence +0:17 move second child to first child ( temp float) +0:17 'c' ( temp float) +0:17 Constant: +0:17 0.000000 +0:18 move second child to first child ( temp 4-component vector of float) +0:18 'o_color' (layout( location=0) out 4-component vector of float) +0:18 Construct vec4 ( temp 4-component vector of float) +0:18 'c' ( temp float) +0:? Linker Objects +0:? 'o_color' (layout( location=0) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 330 +ERROR: node is still EOpNull! +0:15 Function Definition: main( ( global void) +0:15 Function Parameters: +0:17 Sequence +0:17 Sequence +0:17 move second child to first child ( temp float) +0:17 'c' ( temp float) +0:17 Constant: +0:17 0.000000 +0:18 move second child to first child ( temp 4-component vector of float) +0:18 'o_color' (layout( location=0) out 4-component vector of float) +0:18 Construct vec4 ( temp 4-component vector of float) +0:18 'c' ( temp float) +0:? Linker Objects +0:? 'o_color' (layout( location=0) out 4-component vector of float) + diff --git a/Test/baseResults/spv.1.6.conditionalDiscard.frag.out b/Test/baseResults/spv.1.6.conditionalDiscard.frag.out new file mode 100644 index 00000000..f538fd93 --- /dev/null +++ b/Test/baseResults/spv.1.6.conditionalDiscard.frag.out @@ -0,0 +1,60 @@ +spv.1.6.conditionalDiscard.frag +// Module Version 10600 +// Generated by (magic number): 8000a +// Id's are bound by 36 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 13 17 34 + ExecutionMode 4 OriginUpperLeft + Source GLSL 400 + Name 4 "main" + Name 9 "v" + Name 13 "tex" + Name 17 "coord" + Name 34 "gl_FragColor" + Decorate 13(tex) DescriptorSet 0 + Decorate 13(tex) Binding 0 + Decorate 17(coord) Location 0 + Decorate 34(gl_FragColor) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 2D sampled format:Unknown + 11: TypeSampledImage 10 + 12: TypePointer UniformConstant 11 + 13(tex): 12(ptr) Variable UniformConstant + 15: TypeVector 6(float) 2 + 16: TypePointer Input 15(fvec2) + 17(coord): 16(ptr) Variable Input + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 6(float) Constant 1050253722 + 24: 6(float) Constant 1053609165 + 25: 7(fvec4) ConstantComposite 21 22 23 24 + 26: TypeBool + 27: TypeVector 26(bool) 4 + 33: TypePointer Output 7(fvec4) +34(gl_FragColor): 33(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 9(v): 8(ptr) Variable Function + 14: 11 Load 13(tex) + 18: 15(fvec2) Load 17(coord) + 19: 7(fvec4) ImageSampleImplicitLod 14 18 + Store 9(v) 19 + 20: 7(fvec4) Load 9(v) + 28: 27(bvec4) FOrdEqual 20 25 + 29: 26(bool) All 28 + SelectionMerge 31 None + BranchConditional 29 30 31 + 30: Label + TerminateInvocation + 31: Label + 35: 7(fvec4) Load 9(v) + Store 34(gl_FragColor) 35 + Return + FunctionEnd diff --git a/Test/baseResults/spv.1.6.helperInvocation.frag.out b/Test/baseResults/spv.1.6.helperInvocation.frag.out new file mode 100644 index 00000000..7df2a2ac --- /dev/null +++ b/Test/baseResults/spv.1.6.helperInvocation.frag.out @@ -0,0 +1,41 @@ +spv.1.6.helperInvocation.frag +// Module Version 10600 +// Generated by (magic number): 8000a +// Id's are bound by 20 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 8 15 + ExecutionMode 4 OriginUpperLeft + Source ESSL 310 + Name 4 "main" + Name 8 "gl_HelperInvocation" + Name 15 "outp" + Decorate 8(gl_HelperInvocation) BuiltIn HelperInvocation + Decorate 8(gl_HelperInvocation) Volatile + Decorate 15(outp) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeBool + 7: TypePointer Input 6(bool) +8(gl_HelperInvocation): 7(ptr) Variable Input + 12: TypeFloat 32 + 13: TypeVector 12(float) 4 + 14: TypePointer Output 13(fvec4) + 15(outp): 14(ptr) Variable Output + 17: 12(float) Constant 1065353216 + 4(main): 2 Function None 3 + 5: Label + 9: 6(bool) Load 8(gl_HelperInvocation) + SelectionMerge 11 None + BranchConditional 9 10 11 + 10: Label + 16: 13(fvec4) Load 15(outp) + 18: 13(fvec4) CompositeConstruct 17 17 17 17 + 19: 13(fvec4) FAdd 16 18 + Store 15(outp) 19 + Branch 11 + 11: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.1.6.specConstant.comp.out b/Test/baseResults/spv.1.6.specConstant.comp.out new file mode 100644 index 00000000..7485f04a --- /dev/null +++ b/Test/baseResults/spv.1.6.specConstant.comp.out @@ -0,0 +1,69 @@ +spv.1.6.specConstant.comp +// Module Version 10600 +// Generated by (magic number): 8000a +// Id's are bound by 39 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 18 + ExecutionModeId 4 LocalSizeId 7 8 9 + Source GLSL 450 + Name 4 "main" + Name 14 "foo(vu3;" + Name 13 "wgs" + Name 16 "bn" + MemberName 16(bn) 0 "a" + Name 18 "bi" + Name 37 "param" + Decorate 7 SpecId 18 + Decorate 9 SpecId 19 + MemberDecorate 16(bn) 0 Offset 0 + Decorate 16(bn) Block + Decorate 18(bi) DescriptorSet 0 + Decorate 18(bi) Binding 0 + Decorate 25 SpecId 18 + Decorate 26 SpecId 19 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: 6(int) SpecConstant 32 + 8: 6(int) Constant 32 + 9: 6(int) SpecConstant 1 + 10: TypeVector 6(int) 3 + 11: TypePointer Function 10(ivec3) + 12: TypeFunction 2 11(ptr) + 16(bn): TypeStruct 6(int) + 17: TypePointer StorageBuffer 16(bn) + 18(bi): 17(ptr) Variable StorageBuffer + 19: TypeInt 32 1 + 20: 19(int) Constant 0 + 21: 6(int) Constant 0 + 22: TypePointer Function 6(int) + 25: 6(int) SpecConstant 32 + 26: 6(int) SpecConstant 1 + 27: 10(ivec3) SpecConstantComposite 25 8 26 + 28: 6(int) Constant 1 + 31: 6(int) Constant 2 + 35: TypePointer StorageBuffer 6(int) + 4(main): 2 Function None 3 + 5: Label + 37(param): 11(ptr) Variable Function + Store 37(param) 27 + 38: 2 FunctionCall 14(foo(vu3;) 37(param) + Return + FunctionEnd + 14(foo(vu3;): 2 Function None 12 + 13(wgs): 11(ptr) FunctionParameter + 15: Label + 23: 22(ptr) AccessChain 13(wgs) 21 + 24: 6(int) Load 23 + 29: 6(int) CompositeExtract 27 1 + 30: 6(int) IMul 24 29 + 32: 22(ptr) AccessChain 13(wgs) 31 + 33: 6(int) Load 32 + 34: 6(int) IMul 30 33 + 36: 35(ptr) AccessChain 18(bi) 20 + Store 36 34 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out b/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out index e89abb45..45679eb0 100644 --- a/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out +++ b/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out @@ -21,7 +21,6 @@ spv.ClosestHitShaderMotion.rchit Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV Decorate 16(accEXT) DescriptorSet 0 Decorate 16(accEXT) Binding 0 - Decorate 32(incomingPayloadEXT) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.MissShaderMotion.rmiss.out b/Test/baseResults/spv.MissShaderMotion.rmiss.out index 2f183381..185c934b 100644 --- a/Test/baseResults/spv.MissShaderMotion.rmiss.out +++ b/Test/baseResults/spv.MissShaderMotion.rmiss.out @@ -21,7 +21,6 @@ spv.MissShaderMotion.rmiss Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV Decorate 16(accEXT) DescriptorSet 0 Decorate 16(accEXT) Binding 0 - Decorate 32(localPayloadEXT) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.RayGenShaderMotion.rgen.out b/Test/baseResults/spv.RayGenShaderMotion.rgen.out index f9b9fa5f..a6af2365 100644 --- a/Test/baseResults/spv.RayGenShaderMotion.rgen.out +++ b/Test/baseResults/spv.RayGenShaderMotion.rgen.out @@ -26,7 +26,6 @@ spv.RayGenShaderMotion.rgen Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 29(accEXT) DescriptorSet 0 Decorate 29(accEXT) Binding 0 - Decorate 46(payloadEXT) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.constConstruct.vert.out b/Test/baseResults/spv.constConstruct.vert.out index db637a94..a8d50975 100644 --- a/Test/baseResults/spv.constConstruct.vert.out +++ b/Test/baseResults/spv.constConstruct.vert.out @@ -1,12 +1,14 @@ spv.constConstruct.vert -Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 150 Capability Shader + Capability Float16 Capability Float64 Capability Int64 + Capability Int16 + Capability Int8 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out index 880be339..df779bdd 100644 --- a/Test/baseResults/spv.ext.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out @@ -69,7 +69,6 @@ spv.ext.AnyHitShader.rahit Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR Decorate 76(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR - Decorate 84(incomingPayload) Location 1 Decorate 98(gl_SubgroupSize) RelaxedPrecision Decorate 98(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 99 RelaxedPrecision diff --git a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out index 40903e60..9a4eb288 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out @@ -70,8 +70,6 @@ spv.ext.ClosestHitShader.rchit Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR Decorate 85(accEXT) DescriptorSet 0 Decorate 85(accEXT) Binding 0 - Decorate 98(incomingPayload) Location 1 - Decorate 100(localPayload) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out index 7f5af89d..24ab4f46 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out @@ -34,7 +34,6 @@ spv.ext.ClosestHitShader_Subgroup.rchit Name 61 "gl_SMIDNV" Decorate 8(accEXT) DescriptorSet 0 Decorate 8(accEXT) Binding 0 - Decorate 26(incomingPayload) Location 1 Decorate 28(gl_SubgroupInvocationID) RelaxedPrecision Decorate 28(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 29 RelaxedPrecision diff --git a/Test/baseResults/spv.ext.MissShader.rmiss.out b/Test/baseResults/spv.ext.MissShader.rmiss.out index d2dfc176..1acd5ae6 100644 --- a/Test/baseResults/spv.ext.MissShader.rmiss.out +++ b/Test/baseResults/spv.ext.MissShader.rmiss.out @@ -53,7 +53,6 @@ spv.ext.MissShader.rmiss Decorate 32(gl_RayTmaxEXT) BuiltIn RayTmaxKHR Decorate 36(accEXT) DescriptorSet 0 Decorate 36(accEXT) Binding 0 - Decorate 51(incomingPayload) Location 1 Decorate 53(gl_SubGroupSizeARB) BuiltIn SubgroupSize Decorate 53(gl_SubGroupSizeARB) Volatile Decorate 53(gl_SubGroupSizeARB) Coherent @@ -67,7 +66,6 @@ spv.ext.MissShader.rmiss Decorate 74(s2D) Binding 1 Decorate 78(c2) Location 2 Decorate 85(lodClamp) Location 3 - Decorate 89(localPayload) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.RayCallable.rcall.out b/Test/baseResults/spv.ext.RayCallable.rcall.out index d429116c..50e7fd8f 100644 --- a/Test/baseResults/spv.ext.RayCallable.rcall.out +++ b/Test/baseResults/spv.ext.RayCallable.rcall.out @@ -22,8 +22,6 @@ spv.ext.RayCallable.rcall Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 16(dataBlock) Block - Decorate 18 Location 1 - Decorate 29(data0) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.RayConstants.rgen.out b/Test/baseResults/spv.ext.RayConstants.rgen.out index afd50833..6ef9dd4d 100644 --- a/Test/baseResults/spv.ext.RayConstants.rgen.out +++ b/Test/baseResults/spv.ext.RayConstants.rgen.out @@ -15,7 +15,6 @@ spv.ext.RayConstants.rgen Name 26 "payload" Decorate 8(accEXT) DescriptorSet 0 Decorate 8(accEXT) Binding 0 - Decorate 26(payload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeAccelerationStructureKHR diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out index 95d92136..88e3c004 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out @@ -49,7 +49,6 @@ spv.ext.RayGenSBTlayout.rgen MemberDecorate 36(block) 9 Offset 120 MemberDecorate 36(block) 10 Offset 128 Decorate 36(block) Block - Decorate 60(payload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out index f5e32c13..ce5c3063 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out @@ -49,7 +49,6 @@ spv.ext.RayGenSBTlayout140.rgen MemberDecorate 36(block) 9 Offset 136 MemberDecorate 36(block) 10 Offset 144 Decorate 36(block) Block - Decorate 60(payload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out index d952adfd..7462abd9 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out @@ -49,7 +49,6 @@ spv.ext.RayGenSBTlayout430.rgen MemberDecorate 36(block) 9 Offset 120 MemberDecorate 36(block) 10 Offset 128 Decorate 36(block) Block - Decorate 60(payload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out index c6d65304..35734556 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out @@ -50,7 +50,6 @@ spv.ext.RayGenSBTlayoutscalar.rgen MemberDecorate 36(block) 9 Offset 96 MemberDecorate 36(block) 10 Offset 104 Decorate 36(block) Block - Decorate 60(payload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.RayGenShader.rgen.out b/Test/baseResults/spv.ext.RayGenShader.rgen.out index bfaf64b1..46f920ac 100644 --- a/Test/baseResults/spv.ext.RayGenShader.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShader.rgen.out @@ -34,7 +34,6 @@ spv.ext.RayGenShader.rgen MemberDecorate 38(block) 0 Offset 0 MemberDecorate 38(block) 1 Offset 16 Decorate 38(block) Block - Decorate 53(payload) Location 1 Decorate 54(accEXT1) DescriptorSet 0 Decorate 54(accEXT1) Binding 1 Decorate 57(imageu) DescriptorSet 0 diff --git a/Test/baseResults/spv.ext.RayGenShader11.rgen.out b/Test/baseResults/spv.ext.RayGenShader11.rgen.out index 048b02b2..b31ebd9a 100644 --- a/Test/baseResults/spv.ext.RayGenShader11.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShader11.rgen.out @@ -30,7 +30,6 @@ spv.ext.RayGenShader11.rgen MemberDecorate 37(block) 0 Offset 0 MemberDecorate 37(block) 1 Offset 16 Decorate 37(block) Block - Decorate 52(payload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out index ee39e358..08f72b28 100644 --- a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out @@ -43,7 +43,6 @@ spv.ext.RayGenShaderArray.rgen MemberDecorate 36(block) 3 Offset 32 MemberDecorate 36(block) 4 Offset 40 Decorate 36(block) Block - Decorate 61(payload) Location 1 Decorate 65(accEXT1) DescriptorSet 0 Decorate 65(accEXT1) Binding 1 Decorate 80 DecorationNonUniformEXT diff --git a/Test/baseResults/spv.ext.World3x4.rahit.out b/Test/baseResults/spv.ext.World3x4.rahit.out index 40d73d1b..8c60912c 100644 --- a/Test/baseResults/spv.ext.World3x4.rahit.out +++ b/Test/baseResults/spv.ext.World3x4.rahit.out @@ -28,7 +28,6 @@ spv.ext.World3x4.rahit Decorate 60(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR Decorate 78(result) DescriptorSet 0 Decorate 78(result) Binding 0 - Decorate 89(hitValue) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.float16NoRelaxed.vert.out b/Test/baseResults/spv.float16NoRelaxed.vert.out new file mode 100644 index 00000000..8872b463 --- /dev/null +++ b/Test/baseResults/spv.float16NoRelaxed.vert.out @@ -0,0 +1,72 @@ +spv.float16NoRelaxed.vert +// Module Version 10300 +// Generated by (magic number): 8000a +// Id's are bound by 35 + + Capability Shader + Capability Float16 + Capability GroupNonUniform + Capability GroupNonUniformVote + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 11 30 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_vote" + Name 4 "main" + Name 8 "valueNoEqual" + Name 11 "gl_SubgroupInvocationID" + Name 15 "tempRes" + Name 26 "Buffer1" + MemberName 26(Buffer1) 0 "result" + Name 28 "" + Name 30 "gl_VertexIndex" + Decorate 11(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 11(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 12 RelaxedPrecision + Decorate 25 ArrayStride 4 + MemberDecorate 26(Buffer1) 0 Offset 0 + Decorate 26(Buffer1) Block + Decorate 28 DescriptorSet 0 + Decorate 28 Binding 0 + Decorate 30(gl_VertexIndex) BuiltIn VertexIndex + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 16 + 7: TypePointer Function 6(float16_t) + 9: TypeInt 32 0 + 10: TypePointer Input 9(int) +11(gl_SubgroupInvocationID): 10(ptr) Variable Input + 14: TypePointer Function 9(int) + 17: TypeBool + 18: 9(int) Constant 3 + 20: TypeInt 32 1 + 21: 20(int) Constant 0 + 22: 20(int) Constant 16 + 25: TypeRuntimeArray 9(int) + 26(Buffer1): TypeStruct 25 + 27: TypePointer StorageBuffer 26(Buffer1) + 28: 27(ptr) Variable StorageBuffer + 29: TypePointer Input 20(int) +30(gl_VertexIndex): 29(ptr) Variable Input + 33: TypePointer StorageBuffer 9(int) + 4(main): 2 Function None 3 + 5: Label + 8(valueNoEqual): 7(ptr) Variable Function + 15(tempRes): 14(ptr) Variable Function + 12: 9(int) Load 11(gl_SubgroupInvocationID) + 13:6(float16_t) ConvertUToF 12 + Store 8(valueNoEqual) 13 + 16:6(float16_t) Load 8(valueNoEqual) + 19: 17(bool) GroupNonUniformAllEqual 18 16 + 23: 20(int) Select 19 21 22 + 24: 9(int) Bitcast 23 + Store 15(tempRes) 24 + 31: 20(int) Load 30(gl_VertexIndex) + 32: 9(int) Load 15(tempRes) + 34: 33(ptr) AccessChain 28 21 31 + Store 34 32 + Return + FunctionEnd diff --git a/Test/baseResults/spv.intrinsicsSpecConst.vert.out b/Test/baseResults/spv.intrinsicsSpecConst.vert.out deleted file mode 100644 index 11751d64..00000000 --- a/Test/baseResults/spv.intrinsicsSpecConst.vert.out +++ /dev/null @@ -1,35 +0,0 @@ -spv.intrinsicsSpecConst.vert -Validation failed -// Module Version 10000 -// Generated by (magic number): 8000a -// Id's are bound by 13 - - Capability Shader - 1: ExtInstImport "GLSL.std.450" - MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 10 - ExecutionModeId 4 DenormFlushToZero 7 - Source GLSL 450 - SourceExtension "GL_EXT_spirv_intrinsics" - Name 4 "main" - Name 7 "targetWidth" - Name 10 "pointSize" - Name 11 "builtIn" - Decorate 7(targetWidth) SpecId 5 - Decorate 10(pointSize) Location 0 - Decorate 11(builtIn) SpecId 6 - DecorateId 10(pointSize) BuiltIn 11(builtIn) - 2: TypeVoid - 3: TypeFunction 2 - 6: TypeInt 32 0 - 7(targetWidth): 6(int) SpecConstant 32 - 8: TypeFloat 32 - 9: TypePointer Output 8(float) - 10(pointSize): 9(ptr) Variable Output - 11(builtIn): 6(int) SpecConstant 1 - 12: 8(float) Constant 1082130432 - 4(main): 2 Function None 3 - 5: Label - Store 10(pointSize) 12 - Return - FunctionEnd diff --git a/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out b/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out index cbd46b00..c41dcc9c 100644 --- a/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out +++ b/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out @@ -1,5 +1,4 @@ spv.intrinsicsSpirvDecorate.frag -Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 43 @@ -28,19 +27,12 @@ Validation failed Decorate 10(floatIn) Location 0 Decorate 10(floatIn) ExplicitInterpAMD Decorate 18(vec2Out) Location 1 - Decorate 20(gl_BaryCoordNoPerspAMD) Location 0 Decorate 20(gl_BaryCoordNoPerspAMD) BuiltIn BaryCoordNoPerspAMD - Decorate 22(gl_BaryCoordNoPerspCentroidAMD) Location 1 Decorate 22(gl_BaryCoordNoPerspCentroidAMD) BuiltIn BaryCoordNoPerspCentroidAMD - Decorate 25(gl_BaryCoordNoPerspSampleAMD) Location 2 Decorate 25(gl_BaryCoordNoPerspSampleAMD) BuiltIn BaryCoordNoPerspSampleAMD - Decorate 28(gl_BaryCoordSmoothAMD) Location 3 Decorate 28(gl_BaryCoordSmoothAMD) BuiltIn BaryCoordSmoothAMD - Decorate 31(gl_BaryCoordSmoothCentroidAMD) Location 4 Decorate 31(gl_BaryCoordSmoothCentroidAMD) BuiltIn BaryCoordSmoothCentroidAMD - Decorate 34(gl_BaryCoordSmoothSampleAMD) Location 5 Decorate 34(gl_BaryCoordSmoothSampleAMD) BuiltIn BaryCoordSmoothSampleAMD - Decorate 39(gl_BaryCoordPullModelAMD) Location 6 Decorate 39(gl_BaryCoordPullModelAMD) BuiltIn BaryCoordPullModelAMD 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out b/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out index 22bc53b0..cdea3820 100644 --- a/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out +++ b/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out @@ -1,5 +1,4 @@ spv.intrinsicsSpirvExecutionMode.frag -Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 12 @@ -17,7 +16,6 @@ Validation failed Name 4 "main" Name 8 "gl_FragStencilRef" Name 10 "color" - Decorate 8(gl_FragStencilRef) Location 0 Decorate 8(gl_FragStencilRef) BuiltIn FragStencilRefEXT Decorate 10(color) Flat Decorate 10(color) Location 0 diff --git a/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out b/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out index 0e2780cf..0e95e42b 100644 --- a/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out +++ b/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out @@ -1,8 +1,7 @@ spv.intrinsicsSpirvInstruction.vert -Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 30 +// Id's are bound by 32 Capability Shader Capability Int64 @@ -10,50 +9,52 @@ Validation failed Extension "SPV_AMD_shader_trinary_minmax" Extension "SPV_KHR_shader_clock" 1: ExtInstImport "GLSL.std.450" - 28: ExtInstImport "SPV_AMD_shader_trinary_minmax" + 30: ExtInstImport "SPV_AMD_shader_trinary_minmax" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 9 13 18 21 + EntryPoint Vertex 4 "main" 9 15 20 23 Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_EXT_spirv_intrinsics" Name 4 "main" Name 9 "uvec2Out" - Name 13 "i64Out" - Name 18 "vec2Out" - Name 21 "vec3In" + Name 15 "u64Out" + Name 20 "vec2Out" + Name 23 "vec3In" Decorate 9(uvec2Out) Location 0 - Decorate 13(i64Out) Location 1 - Decorate 18(vec2Out) Location 2 - Decorate 21(vec3In) Location 0 + Decorate 15(u64Out) Location 1 + Decorate 20(vec2Out) Location 2 + Decorate 23(vec3In) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypeVector 6(int) 2 8: TypePointer Output 7(ivec2) 9(uvec2Out): 8(ptr) Variable Output - 11: TypeInt 64 1 - 12: TypePointer Output 11(int64_t) - 13(i64Out): 12(ptr) Variable Output - 15: TypeFloat 32 - 16: TypeVector 15(float) 2 - 17: TypePointer Output 16(fvec2) - 18(vec2Out): 17(ptr) Variable Output - 19: TypeVector 15(float) 3 - 20: TypePointer Input 19(fvec3) - 21(vec3In): 20(ptr) Variable Input + 10: TypeInt 32 1 + 11: 10(int) Constant 1 + 13: TypeInt 64 0 + 14: TypePointer Output 13(int64_t) + 15(u64Out): 14(ptr) Variable Output + 17: TypeFloat 32 + 18: TypeVector 17(float) 2 + 19: TypePointer Output 18(fvec2) + 20(vec2Out): 19(ptr) Variable Output + 21: TypeVector 17(float) 3 + 22: TypePointer Input 21(fvec3) + 23(vec3In): 22(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 10: 7(ivec2) ReadClockKHR - Store 9(uvec2Out) 10 - 14: 11(int64_t) ReadClockKHR - Store 13(i64Out) 14 - 22: 19(fvec3) Load 21(vec3In) - 23: 16(fvec2) VectorShuffle 22 22 0 1 - 24: 19(fvec3) Load 21(vec3In) - 25: 16(fvec2) VectorShuffle 24 24 1 2 - 26: 19(fvec3) Load 21(vec3In) - 27: 16(fvec2) VectorShuffle 26 26 2 0 - 29: 16(fvec2) ExtInst 28(SPV_AMD_shader_trinary_minmax) 1(FMin3AMD) 23 25 27 - Store 18(vec2Out) 29 + 12: 7(ivec2) ReadClockKHR 11 + Store 9(uvec2Out) 12 + 16: 13(int64_t) ReadClockKHR 11 + Store 15(u64Out) 16 + 24: 21(fvec3) Load 23(vec3In) + 25: 18(fvec2) VectorShuffle 24 24 0 1 + 26: 21(fvec3) Load 23(vec3In) + 27: 18(fvec2) VectorShuffle 26 26 1 2 + 28: 21(fvec3) Load 23(vec3In) + 29: 18(fvec2) VectorShuffle 28 28 2 0 + 31: 18(fvec2) ExtInst 30(SPV_AMD_shader_trinary_minmax) 1(FMin3AMD) 25 27 29 + Store 20(vec2Out) 31 Return FunctionEnd diff --git a/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out b/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out index 68ad949b..096cc611 100644 --- a/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out +++ b/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out @@ -1,30 +1,30 @@ spv.intrinsicsSpirvLiteral.vert -Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 12 +// Id's are bound by 13 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" + EntryPoint Vertex 4 "main" 9 11 Source GLSL 450 SourceExtension "GL_EXT_spirv_intrinsics" Name 4 "main" Name 9 "vec4Out" - Name 10 "vec4In" + Name 11 "vec4In" Decorate 9(vec4Out) Location 1 - Decorate 10(vec4In) Location 0 + Decorate 11(vec4In) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 - 8: TypePointer Function 7(fvec4) + 8: TypePointer Output 7(fvec4) + 9(vec4Out): 8(ptr) Variable Output + 10: TypePointer Input 7(fvec4) + 11(vec4In): 10(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 9(vec4Out): 8(ptr) Variable Function - 10(vec4In): 8(ptr) Variable Function - 11: 7(fvec4) Load 10(vec4In) None - Store 9(vec4Out) 11 Volatile + 12: 7(fvec4) Load 11(vec4In) None + Store 9(vec4Out) 12 Volatile Return FunctionEnd diff --git a/Test/baseResults/spv.intrinsicsSpirvType.rgen.out b/Test/baseResults/spv.intrinsicsSpirvType.rgen.out index ac0c9464..f3937b49 100644 --- a/Test/baseResults/spv.intrinsicsSpirvType.rgen.out +++ b/Test/baseResults/spv.intrinsicsSpirvType.rgen.out @@ -1,5 +1,4 @@ spv.intrinsicsSpirvType.rgen -Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 21 @@ -17,12 +16,13 @@ Validation failed Name 4 "main" Name 8 "rq" Name 11 "as" - Decorate 11(as) Location 0 Decorate 11(as) DescriptorSet 0 Decorate 11(as) Binding 0 2: TypeVoid 3: TypeFunction 2 + 6: TypeRayQueryKHR 7: TypePointer Function 6 + 9: TypeAccelerationStructureKHR 10: TypePointer UniformConstant 9 11(as): 10(ptr) Variable UniformConstant 13: TypeInt 32 0 @@ -36,8 +36,6 @@ Validation failed 4(main): 2 Function None 3 5: Label 8(rq): 7(ptr) Variable Function - 6: TypeRayQueryKHR - 9: TypeAccelerationStructureKHR 12: 9 Load 11(as) RayQueryInitializeKHR 8(rq) 12 14 14 18 17 20 19 RayQueryTerminateKHR 8(rq) diff --git a/Test/baseResults/spv.intrinsicsSpirvTypeLocalVar.vert.out b/Test/baseResults/spv.intrinsicsSpirvTypeLocalVar.vert.out new file mode 100644 index 00000000..75515be0 --- /dev/null +++ b/Test/baseResults/spv.intrinsicsSpirvTypeLocalVar.vert.out @@ -0,0 +1,43 @@ +spv.intrinsicsSpirvTypeLocalVar.vert +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 22 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" + Source GLSL 460 + SourceExtension "GL_EXT_spirv_intrinsics" + Name 4 "main" + Name 10 "func(spv-t1;" + Name 9 "emptyStruct" + Name 13 "size" + Name 16 "dummy" + Name 18 "param" + Decorate 13(size) SpecId 9 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeStruct + 7: TypePointer Function 6(struct) + 8: TypeFunction 2 7(ptr) + 12: TypeInt 32 1 + 13(size): 12(int) SpecConstant 9 + 14: TypeArray 6(struct) 13(size) + 15: TypePointer Function 14 + 17: 12(int) Constant 1 + 4(main): 2 Function None 3 + 5: Label + 16(dummy): 15(ptr) Variable Function + 18(param): 7(ptr) Variable Function + 19: 7(ptr) AccessChain 16(dummy) 17 + 20: 6(struct) Load 19 + Store 18(param) 20 + 21: 2 FunctionCall 10(func(spv-t1;) 18(param) + Return + FunctionEnd +10(func(spv-t1;): 2 Function None 8 + 9(emptyStruct): 7(ptr) FunctionParameter + 11: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.textureError.frag.out b/Test/baseResults/spv.textureError.frag.out new file mode 100644 index 00000000..d5ef59ce --- /dev/null +++ b/Test/baseResults/spv.textureError.frag.out @@ -0,0 +1,6 @@ +spv.textureError.frag +ERROR: spv.textureError.frag:8: 'texture*D*' : function not supported in this version; use texture() instead +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/textureQueryLOD.frag.out b/Test/baseResults/textureQueryLOD.frag.out new file mode 100644 index 00000000..b565a005 --- /dev/null +++ b/Test/baseResults/textureQueryLOD.frag.out @@ -0,0 +1,115 @@ +textureQueryLOD.frag +WARNING: 0:7: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5 + +Shader version: 150 +Requested GL_ARB_gpu_shader5 +Requested GL_ARB_texture_query_lod +0:? Sequence +0:24 Function Definition: main( ( global void) +0:24 Function Parameters: +0:26 Sequence +0:26 switch +0:26 condition +0:26 'funct' ( uniform int) +0:26 body +0:26 Sequence +0:28 case: with expression +0:28 Constant: +0:28 0 (const int) +0:? Sequence +0:29 Sequence +0:29 move second child to first child ( temp 2-component vector of int) +0:29 'iv2' ( temp 2-component vector of int) +0:29 textureSize ( global 2-component vector of int) +0:29 'sampler' ( uniform sampler2DShadow) +0:29 Constant: +0:29 0 (const int) +0:31 Sequence +0:31 move second child to first child ( temp 2-component vector of float) +0:31 'fv2' ( temp 2-component vector of float) +0:31 textureQueryLod ( global 2-component vector of float) +0:31 'sampler' ( uniform sampler2DShadow) +0:31 Constant: +0:31 0.000000 +0:31 0.000000 +0:33 move second child to first child ( temp 4-component vector of float) +0:33 'color' ( out 4-component vector of float) +0:33 Construct vec4 ( temp 4-component vector of float) +0:33 Convert int to float ( temp 2-component vector of float) +0:33 'iv2' ( temp 2-component vector of int) +0:33 'fv2' ( temp 2-component vector of float) +0:34 Branch: Break +0:35 default: +0:? Sequence +0:36 move second child to first child ( temp 4-component vector of float) +0:36 'color' ( out 4-component vector of float) +0:36 Constant: +0:36 1.000000 +0:36 1.000000 +0:36 1.000000 +0:36 1.000000 +0:37 Branch: Break +0:? Linker Objects +0:? 'vUV' ( smooth in 2-component vector of float) +0:? 'color' ( out 4-component vector of float) +0:? 'sampler' ( uniform sampler2DShadow) +0:? 'funct' ( uniform int) + + +Linked fragment stage: + + +Shader version: 150 +Requested GL_ARB_gpu_shader5 +Requested GL_ARB_texture_query_lod +0:? Sequence +0:24 Function Definition: main( ( global void) +0:24 Function Parameters: +0:26 Sequence +0:26 switch +0:26 condition +0:26 'funct' ( uniform int) +0:26 body +0:26 Sequence +0:28 case: with expression +0:28 Constant: +0:28 0 (const int) +0:? Sequence +0:29 Sequence +0:29 move second child to first child ( temp 2-component vector of int) +0:29 'iv2' ( temp 2-component vector of int) +0:29 textureSize ( global 2-component vector of int) +0:29 'sampler' ( uniform sampler2DShadow) +0:29 Constant: +0:29 0 (const int) +0:31 Sequence +0:31 move second child to first child ( temp 2-component vector of float) +0:31 'fv2' ( temp 2-component vector of float) +0:31 textureQueryLod ( global 2-component vector of float) +0:31 'sampler' ( uniform sampler2DShadow) +0:31 Constant: +0:31 0.000000 +0:31 0.000000 +0:33 move second child to first child ( temp 4-component vector of float) +0:33 'color' ( out 4-component vector of float) +0:33 Construct vec4 ( temp 4-component vector of float) +0:33 Convert int to float ( temp 2-component vector of float) +0:33 'iv2' ( temp 2-component vector of int) +0:33 'fv2' ( temp 2-component vector of float) +0:34 Branch: Break +0:35 default: +0:? Sequence +0:36 move second child to first child ( temp 4-component vector of float) +0:36 'color' ( out 4-component vector of float) +0:36 Constant: +0:36 1.000000 +0:36 1.000000 +0:36 1.000000 +0:36 1.000000 +0:37 Branch: Break +0:? Linker Objects +0:? 'vUV' ( smooth in 2-component vector of float) +0:? 'color' ( out 4-component vector of float) +0:? 'sampler' ( uniform sampler2DShadow) +0:? 'funct' ( uniform int) + diff --git a/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out new file mode 100755 index 00000000..bcd4e2af --- /dev/null +++ b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out @@ -0,0 +1,10697 @@ +vk.relaxed.stagelink.0.0.vert +Shader version: 460 +0:? Sequence +0:11 Function Definition: main( ( global void) +0:11 Function Parameters: +0:15 Sequence +0:15 Sequence +0:15 Sequence +0:15 move second child to first child ( temp highp 3-component vector of float) +0:15 'texcoord' ( temp highp 3-component vector of float) +0:15 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float) +0:15 direct index (layout( location=3) temp highp 3-component vector of float) +0:15 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float) +0:15 Constant: +0:15 0 (const int) +0:16 move second child to first child ( temp highp 3-component vector of float) +0:16 vector swizzle ( temp highp 3-component vector of float) +0:16 texCoord0: direct index for structure ( out highp 3-component vector of float) +0:16 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:16 Constant: +0:16 2 (const int) +0:16 Sequence +0:16 Constant: +0:16 0 (const int) +0:16 Constant: +0:16 1 (const int) +0:16 Constant: +0:16 2 (const int) +0:16 vector swizzle ( temp highp 3-component vector of float) +0:16 'texcoord' ( temp highp 3-component vector of float) +0:16 Sequence +0:16 Constant: +0:16 0 (const int) +0:16 Constant: +0:16 1 (const int) +0:16 Constant: +0:16 2 (const int) +0:20 move second child to first child ( temp highp int) +0:20 instance: direct index for structure ( flat out highp int) +0:20 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:20 Constant: +0:20 4 (const int) +0:20 Function Call: TDInstanceID( ( global highp int) +0:21 Sequence +0:21 move second child to first child ( temp highp 4-component vector of float) +0:21 'worldSpacePos' ( temp highp 4-component vector of float) +0:21 Function Call: TDDeform(vf3; ( global highp 4-component vector of float) +0:21 'P' (layout( location=0) in highp 3-component vector of float) +0:22 Sequence +0:22 move second child to first child ( temp highp 3-component vector of float) +0:22 'uvUnwrapCoord' ( temp highp 3-component vector of float) +0:22 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float) +0:22 Function Call: TDUVUnwrapCoord( ( global highp 3-component vector of float) +0:23 move second child to first child ( temp highp 4-component vector of float) +0:23 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) +0:23 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) +0:23 Constant: +0:23 0 (const uint) +0:23 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:23 'worldSpacePos' ( temp highp 4-component vector of float) +0:23 'uvUnwrapCoord' ( temp highp 3-component vector of float) +0:32 Sequence +0:32 move second child to first child ( temp highp int) +0:32 'cameraIndex' ( temp highp int) +0:32 Function Call: TDCameraIndex( ( global highp int) +0:33 move second child to first child ( temp highp int) +0:33 cameraIndex: direct index for structure ( flat out highp int) +0:33 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:33 Constant: +0:33 3 (const int) +0:33 'cameraIndex' ( temp highp int) +0:34 move second child to first child ( temp highp 3-component vector of float) +0:34 vector swizzle ( temp highp 3-component vector of float) +0:34 worldSpacePos: direct index for structure ( out highp 3-component vector of float) +0:34 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:34 Constant: +0:34 1 (const int) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 vector swizzle ( temp highp 3-component vector of float) +0:34 'worldSpacePos' ( temp highp 4-component vector of float) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:35 move second child to first child ( temp highp 4-component vector of float) +0:35 color: direct index for structure ( out highp 4-component vector of float) +0:35 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:35 Constant: +0:35 0 (const int) +0:35 Function Call: TDInstanceColor(vf4; ( global highp 4-component vector of float) +0:35 'Cd' (layout( location=2) in highp 4-component vector of float) +0:? Linker Objects +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos}) +0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral}) +0:? 'P' (layout( location=0) in highp 3-component vector of float) +0:? 'N' (layout( location=1) in highp 3-component vector of float) +0:? 'Cd' (layout( location=2) in highp 4-component vector of float) +0:? 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float) +0:? 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:? 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) +0:? 'gl_VertexIndex' ( in int VertexIndex) +0:? 'gl_InstanceIndex' ( in int InstanceIndex) + +vk.relaxed.stagelink.0.1.vert +Shader version: 460 +0:? Sequence +0:176 Function Definition: iTDCamToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float) +0:176 Function Parameters: +0:176 'v' ( in highp 4-component vector of float) +0:176 'uv' ( in highp 3-component vector of float) +0:176 'cameraIndex' ( in highp int) +0:176 'applyPickMod' ( in bool) +0:178 Sequence +0:178 Test condition and select ( temp void) +0:178 Condition +0:178 Negate conditional ( temp bool) +0:178 Function Call: TDInstanceActive( ( global bool) +0:178 true case +0:179 Branch: Return with expression +0:179 Constant: +0:179 2.000000 +0:179 2.000000 +0:179 2.000000 +0:179 0.000000 +0:180 move second child to first child ( temp highp 4-component vector of float) +0:180 'v' ( in highp 4-component vector of float) +0:180 matrix-times-vector ( temp highp 4-component vector of float) +0:180 proj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:180 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:180 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:180 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:180 Constant: +0:180 0 (const uint) +0:180 Constant: +0:180 0 (const int) +0:180 Constant: +0:180 8 (const int) +0:180 'v' ( in highp 4-component vector of float) +0:181 Branch: Return with expression +0:181 'v' ( in highp 4-component vector of float) +0:183 Function Definition: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float) +0:183 Function Parameters: +0:183 'v' ( in highp 4-component vector of float) +0:183 'uv' ( in highp 3-component vector of float) +0:183 'cameraIndex' ( in highp int) +0:183 'applyPickMod' ( in bool) +0:184 Sequence +0:184 Test condition and select ( temp void) +0:184 Condition +0:184 Negate conditional ( temp bool) +0:184 Function Call: TDInstanceActive( ( global bool) +0:184 true case +0:185 Branch: Return with expression +0:185 Constant: +0:185 2.000000 +0:185 2.000000 +0:185 2.000000 +0:185 0.000000 +0:186 move second child to first child ( temp highp 4-component vector of float) +0:186 'v' ( in highp 4-component vector of float) +0:186 matrix-times-vector ( temp highp 4-component vector of float) +0:186 camProj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:186 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:186 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:186 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:186 Constant: +0:186 0 (const uint) +0:186 Constant: +0:186 0 (const int) +0:186 Constant: +0:186 6 (const int) +0:186 'v' ( in highp 4-component vector of float) +0:187 Branch: Return with expression +0:187 'v' ( in highp 4-component vector of float) +0:193 Function Definition: TDInstanceID( ( global highp int) +0:193 Function Parameters: +0:194 Sequence +0:194 Branch: Return with expression +0:194 add ( temp highp int) +0:194 'gl_InstanceIndex' ( in highp int InstanceIndex) +0:194 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:194 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:194 Constant: +0:194 0 (const uint) +0:196 Function Definition: TDCameraIndex( ( global highp int) +0:196 Function Parameters: +0:197 Sequence +0:197 Branch: Return with expression +0:197 Constant: +0:197 0 (const int) +0:199 Function Definition: TDUVUnwrapCoord( ( global highp 3-component vector of float) +0:199 Function Parameters: +0:200 Sequence +0:200 Branch: Return with expression +0:200 direct index (layout( location=3) temp highp 3-component vector of float) +0:200 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float) +0:200 Constant: +0:200 0 (const int) +0:205 Function Definition: TDPickID( ( global highp int) +0:205 Function Parameters: +0:209 Sequence +0:209 Branch: Return with expression +0:209 Constant: +0:209 0 (const int) +0:212 Function Definition: iTDConvertPickId(i1; ( global highp float) +0:212 Function Parameters: +0:212 'id' ( in highp int) +0:213 Sequence +0:213 or second child into first child ( temp highp int) +0:213 'id' ( in highp int) +0:213 Constant: +0:213 1073741824 (const int) +0:214 Branch: Return with expression +0:214 intBitsToFloat ( global highp float) +0:214 'id' ( in highp int) +0:217 Function Definition: TDWritePickingValues( ( global void) +0:217 Function Parameters: +0:224 Function Definition: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:224 Function Parameters: +0:224 'v' ( in highp 4-component vector of float) +0:224 'uv' ( in highp 3-component vector of float) +0:226 Sequence +0:226 Branch: Return with expression +0:226 Function Call: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float) +0:226 'v' ( in highp 4-component vector of float) +0:226 'uv' ( in highp 3-component vector of float) +0:226 Function Call: TDCameraIndex( ( global highp int) +0:226 Constant: +0:226 true (const bool) +0:228 Function Definition: TDWorldToProj(vf3;vf3; ( global highp 4-component vector of float) +0:228 Function Parameters: +0:228 'v' ( in highp 3-component vector of float) +0:228 'uv' ( in highp 3-component vector of float) +0:230 Sequence +0:230 Branch: Return with expression +0:230 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:230 Construct vec4 ( temp highp 4-component vector of float) +0:230 'v' ( in highp 3-component vector of float) +0:230 Constant: +0:230 1.000000 +0:230 'uv' ( in highp 3-component vector of float) +0:232 Function Definition: TDWorldToProj(vf4; ( global highp 4-component vector of float) +0:232 Function Parameters: +0:232 'v' ( in highp 4-component vector of float) +0:234 Sequence +0:234 Branch: Return with expression +0:234 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:234 'v' ( in highp 4-component vector of float) +0:234 Constant: +0:234 0.000000 +0:234 0.000000 +0:234 0.000000 +0:236 Function Definition: TDWorldToProj(vf3; ( global highp 4-component vector of float) +0:236 Function Parameters: +0:236 'v' ( in highp 3-component vector of float) +0:238 Sequence +0:238 Branch: Return with expression +0:238 Function Call: TDWorldToProj(vf4; ( global highp 4-component vector of float) +0:238 Construct vec4 ( temp highp 4-component vector of float) +0:238 'v' ( in highp 3-component vector of float) +0:238 Constant: +0:238 1.000000 +0:240 Function Definition: TDPointColor( ( global highp 4-component vector of float) +0:240 Function Parameters: +0:241 Sequence +0:241 Branch: Return with expression +0:241 'Cd' (layout( location=2) in highp 4-component vector of float) +0:? Linker Objects +0:? 'P' (layout( location=0) in highp 3-component vector of float) +0:? 'N' (layout( location=1) in highp 3-component vector of float) +0:? 'Cd' (layout( location=2) in highp 4-component vector of float) +0:? 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float) +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights}) +0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs}) +0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:? 'anon@4' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos}) +0:? 'anon@5' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral}) +0:? 'mTD2DImageOutputs' (layout( rgba8) uniform 1-element array of highp image2D) +0:? 'mTD2DArrayImageOutputs' (layout( rgba8) uniform 1-element array of highp image2DArray) +0:? 'mTD3DImageOutputs' (layout( rgba8) uniform 1-element array of highp image3D) +0:? 'mTDCubeImageOutputs' (layout( rgba8) uniform 1-element array of highp imageCube) +0:? 'gl_VertexIndex' ( in int VertexIndex) +0:? 'gl_InstanceIndex' ( in int InstanceIndex) + +vk.relaxed.stagelink.0.2.vert +Shader version: 460 +0:? Sequence +0:114 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float) +0:114 Function Parameters: +0:114 'index' ( in highp int) +0:114 't' ( in highp 3-component vector of float) +0:? Sequence +0:116 Sequence +0:116 move second child to first child ( temp highp int) +0:116 'coord' ( temp highp int) +0:116 'index' ( in highp int) +0:117 Sequence +0:117 move second child to first child ( temp highp 4-component vector of float) +0:117 'samp' ( temp highp 4-component vector of float) +0:117 textureFetch ( global highp 4-component vector of float) +0:117 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:117 'coord' ( temp highp int) +0:118 move second child to first child ( temp highp float) +0:118 direct index ( temp highp float) +0:118 'v' ( temp highp 3-component vector of float) +0:118 Constant: +0:118 0 (const int) +0:118 direct index ( temp highp float) +0:118 't' ( in highp 3-component vector of float) +0:118 Constant: +0:118 0 (const int) +0:119 move second child to first child ( temp highp float) +0:119 direct index ( temp highp float) +0:119 'v' ( temp highp 3-component vector of float) +0:119 Constant: +0:119 1 (const int) +0:119 direct index ( temp highp float) +0:119 't' ( in highp 3-component vector of float) +0:119 Constant: +0:119 1 (const int) +0:120 move second child to first child ( temp highp float) +0:120 direct index ( temp highp float) +0:120 'v' ( temp highp 3-component vector of float) +0:120 Constant: +0:120 2 (const int) +0:120 direct index ( temp highp float) +0:120 'samp' ( temp highp 4-component vector of float) +0:120 Constant: +0:120 0 (const int) +0:121 move second child to first child ( temp highp 3-component vector of float) +0:121 vector swizzle ( temp highp 3-component vector of float) +0:121 't' ( in highp 3-component vector of float) +0:121 Sequence +0:121 Constant: +0:121 0 (const int) +0:121 Constant: +0:121 1 (const int) +0:121 Constant: +0:121 2 (const int) +0:121 vector swizzle ( temp highp 3-component vector of float) +0:121 'v' ( temp highp 3-component vector of float) +0:121 Sequence +0:121 Constant: +0:121 0 (const int) +0:121 Constant: +0:121 1 (const int) +0:121 Constant: +0:121 2 (const int) +0:122 Branch: Return with expression +0:122 't' ( in highp 3-component vector of float) +0:124 Function Definition: TDInstanceActive(i1; ( global bool) +0:124 Function Parameters: +0:124 'index' ( in highp int) +0:125 Sequence +0:125 subtract second child into first child ( temp highp int) +0:125 'index' ( in highp int) +0:125 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:125 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:125 Constant: +0:125 0 (const uint) +0:127 Sequence +0:127 move second child to first child ( temp highp int) +0:127 'coord' ( temp highp int) +0:127 'index' ( in highp int) +0:128 Sequence +0:128 move second child to first child ( temp highp 4-component vector of float) +0:128 'samp' ( temp highp 4-component vector of float) +0:128 textureFetch ( global highp 4-component vector of float) +0:128 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:128 'coord' ( temp highp int) +0:129 move second child to first child ( temp highp float) +0:129 'v' ( temp highp float) +0:129 direct index ( temp highp float) +0:129 'samp' ( temp highp 4-component vector of float) +0:129 Constant: +0:129 0 (const int) +0:130 Branch: Return with expression +0:130 Compare Not Equal ( temp bool) +0:130 'v' ( temp highp float) +0:130 Constant: +0:130 0.000000 +0:132 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:132 Function Parameters: +0:132 'index' ( in highp int) +0:132 'instanceActive' ( out bool) +0:133 Sequence +0:133 Sequence +0:133 move second child to first child ( temp highp int) +0:133 'origIndex' ( temp highp int) +0:133 'index' ( in highp int) +0:134 subtract second child into first child ( temp highp int) +0:134 'index' ( in highp int) +0:134 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:134 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:134 Constant: +0:134 0 (const uint) +0:136 Sequence +0:136 move second child to first child ( temp highp int) +0:136 'coord' ( temp highp int) +0:136 'index' ( in highp int) +0:137 Sequence +0:137 move second child to first child ( temp highp 4-component vector of float) +0:137 'samp' ( temp highp 4-component vector of float) +0:137 textureFetch ( global highp 4-component vector of float) +0:137 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:137 'coord' ( temp highp int) +0:138 move second child to first child ( temp highp float) +0:138 direct index ( temp highp float) +0:138 'v' ( temp highp 3-component vector of float) +0:138 Constant: +0:138 0 (const int) +0:138 direct index ( temp highp float) +0:138 'samp' ( temp highp 4-component vector of float) +0:138 Constant: +0:138 1 (const int) +0:139 move second child to first child ( temp highp float) +0:139 direct index ( temp highp float) +0:139 'v' ( temp highp 3-component vector of float) +0:139 Constant: +0:139 1 (const int) +0:139 direct index ( temp highp float) +0:139 'samp' ( temp highp 4-component vector of float) +0:139 Constant: +0:139 2 (const int) +0:140 move second child to first child ( temp highp float) +0:140 direct index ( temp highp float) +0:140 'v' ( temp highp 3-component vector of float) +0:140 Constant: +0:140 2 (const int) +0:140 direct index ( temp highp float) +0:140 'samp' ( temp highp 4-component vector of float) +0:140 Constant: +0:140 3 (const int) +0:141 move second child to first child ( temp bool) +0:141 'instanceActive' ( out bool) +0:141 Compare Not Equal ( temp bool) +0:141 direct index ( temp highp float) +0:141 'samp' ( temp highp 4-component vector of float) +0:141 Constant: +0:141 0 (const int) +0:141 Constant: +0:141 0.000000 +0:142 Branch: Return with expression +0:142 'v' ( temp highp 3-component vector of float) +0:144 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float) +0:144 Function Parameters: +0:144 'index' ( in highp int) +0:145 Sequence +0:145 subtract second child into first child ( temp highp int) +0:145 'index' ( in highp int) +0:145 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:145 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:145 Constant: +0:145 0 (const uint) +0:147 Sequence +0:147 move second child to first child ( temp highp int) +0:147 'coord' ( temp highp int) +0:147 'index' ( in highp int) +0:148 Sequence +0:148 move second child to first child ( temp highp 4-component vector of float) +0:148 'samp' ( temp highp 4-component vector of float) +0:148 textureFetch ( global highp 4-component vector of float) +0:148 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:148 'coord' ( temp highp int) +0:149 move second child to first child ( temp highp float) +0:149 direct index ( temp highp float) +0:149 'v' ( temp highp 3-component vector of float) +0:149 Constant: +0:149 0 (const int) +0:149 direct index ( temp highp float) +0:149 'samp' ( temp highp 4-component vector of float) +0:149 Constant: +0:149 1 (const int) +0:150 move second child to first child ( temp highp float) +0:150 direct index ( temp highp float) +0:150 'v' ( temp highp 3-component vector of float) +0:150 Constant: +0:150 1 (const int) +0:150 direct index ( temp highp float) +0:150 'samp' ( temp highp 4-component vector of float) +0:150 Constant: +0:150 2 (const int) +0:151 move second child to first child ( temp highp float) +0:151 direct index ( temp highp float) +0:151 'v' ( temp highp 3-component vector of float) +0:151 Constant: +0:151 2 (const int) +0:151 direct index ( temp highp float) +0:151 'samp' ( temp highp 4-component vector of float) +0:151 Constant: +0:151 3 (const int) +0:152 Branch: Return with expression +0:152 'v' ( temp highp 3-component vector of float) +0:154 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float) +0:154 Function Parameters: +0:154 'index' ( in highp int) +0:155 Sequence +0:155 subtract second child into first child ( temp highp int) +0:155 'index' ( in highp int) +0:155 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:155 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:155 Constant: +0:155 0 (const uint) +0:156 Sequence +0:156 move second child to first child ( temp highp 3-component vector of float) +0:156 'v' ( temp highp 3-component vector of float) +0:156 Constant: +0:156 0.000000 +0:156 0.000000 +0:156 0.000000 +0:157 Sequence +0:157 move second child to first child ( temp highp 3X3 matrix of float) +0:157 'm' ( temp highp 3X3 matrix of float) +0:157 Constant: +0:157 1.000000 +0:157 0.000000 +0:157 0.000000 +0:157 0.000000 +0:157 1.000000 +0:157 0.000000 +0:157 0.000000 +0:157 0.000000 +0:157 1.000000 +0:161 Branch: Return with expression +0:161 'm' ( temp highp 3X3 matrix of float) +0:163 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float) +0:163 Function Parameters: +0:163 'index' ( in highp int) +0:164 Sequence +0:164 subtract second child into first child ( temp highp int) +0:164 'index' ( in highp int) +0:164 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:164 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:164 Constant: +0:164 0 (const uint) +0:165 Sequence +0:165 move second child to first child ( temp highp 3-component vector of float) +0:165 'v' ( temp highp 3-component vector of float) +0:165 Constant: +0:165 1.000000 +0:165 1.000000 +0:165 1.000000 +0:166 Branch: Return with expression +0:166 'v' ( temp highp 3-component vector of float) +0:168 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float) +0:168 Function Parameters: +0:168 'index' ( in highp int) +0:169 Sequence +0:169 subtract second child into first child ( temp highp int) +0:169 'index' ( in highp int) +0:169 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:169 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:169 Constant: +0:169 0 (const uint) +0:170 Sequence +0:170 move second child to first child ( temp highp 3-component vector of float) +0:170 'v' ( temp highp 3-component vector of float) +0:170 Constant: +0:170 0.000000 +0:170 0.000000 +0:170 0.000000 +0:171 Branch: Return with expression +0:171 'v' ( temp highp 3-component vector of float) +0:173 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float) +0:173 Function Parameters: +0:173 'index' ( in highp int) +0:174 Sequence +0:174 subtract second child into first child ( temp highp int) +0:174 'index' ( in highp int) +0:174 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:174 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:174 Constant: +0:174 0 (const uint) +0:175 Sequence +0:175 move second child to first child ( temp highp 3-component vector of float) +0:175 'v' ( temp highp 3-component vector of float) +0:175 Constant: +0:175 0.000000 +0:175 0.000000 +0:175 1.000000 +0:176 Branch: Return with expression +0:176 'v' ( temp highp 3-component vector of float) +0:178 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float) +0:178 Function Parameters: +0:178 'index' ( in highp int) +0:179 Sequence +0:179 subtract second child into first child ( temp highp int) +0:179 'index' ( in highp int) +0:179 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:179 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:179 Constant: +0:179 0 (const uint) +0:180 Sequence +0:180 move second child to first child ( temp highp 3-component vector of float) +0:180 'v' ( temp highp 3-component vector of float) +0:180 Constant: +0:180 0.000000 +0:180 1.000000 +0:180 0.000000 +0:181 Branch: Return with expression +0:181 'v' ( temp highp 3-component vector of float) +0:183 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:183 Function Parameters: +0:183 'id' ( in highp int) +0:184 Sequence +0:184 Sequence +0:184 move second child to first child ( temp bool) +0:184 'instanceActive' ( temp bool) +0:184 Constant: +0:184 true (const bool) +0:185 Sequence +0:185 move second child to first child ( temp highp 3-component vector of float) +0:185 't' ( temp highp 3-component vector of float) +0:185 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:185 'id' ( in highp int) +0:185 'instanceActive' ( temp bool) +0:186 Test condition and select ( temp void) +0:186 Condition +0:186 Negate conditional ( temp bool) +0:186 'instanceActive' ( temp bool) +0:186 true case +0:188 Sequence +0:188 Branch: Return with expression +0:188 Constant: +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:190 Sequence +0:190 move second child to first child ( temp highp 4X4 matrix of float) +0:190 'm' ( temp highp 4X4 matrix of float) +0:190 Constant: +0:190 1.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 1.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 1.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 1.000000 +0:192 Sequence +0:192 Sequence +0:192 move second child to first child ( temp highp 3-component vector of float) +0:192 'tt' ( temp highp 3-component vector of float) +0:192 't' ( temp highp 3-component vector of float) +0:193 add second child into first child ( temp highp float) +0:193 direct index ( temp highp float) +0:193 direct index ( temp highp 4-component vector of float) +0:193 'm' ( temp highp 4X4 matrix of float) +0:193 Constant: +0:193 3 (const int) +0:193 Constant: +0:193 0 (const int) +0:193 component-wise multiply ( temp highp float) +0:193 direct index ( temp highp float) +0:193 direct index ( temp highp 4-component vector of float) +0:193 'm' ( temp highp 4X4 matrix of float) +0:193 Constant: +0:193 0 (const int) +0:193 Constant: +0:193 0 (const int) +0:193 direct index ( temp highp float) +0:193 'tt' ( temp highp 3-component vector of float) +0:193 Constant: +0:193 0 (const int) +0:194 add second child into first child ( temp highp float) +0:194 direct index ( temp highp float) +0:194 direct index ( temp highp 4-component vector of float) +0:194 'm' ( temp highp 4X4 matrix of float) +0:194 Constant: +0:194 3 (const int) +0:194 Constant: +0:194 1 (const int) +0:194 component-wise multiply ( temp highp float) +0:194 direct index ( temp highp float) +0:194 direct index ( temp highp 4-component vector of float) +0:194 'm' ( temp highp 4X4 matrix of float) +0:194 Constant: +0:194 0 (const int) +0:194 Constant: +0:194 1 (const int) +0:194 direct index ( temp highp float) +0:194 'tt' ( temp highp 3-component vector of float) +0:194 Constant: +0:194 0 (const int) +0:195 add second child into first child ( temp highp float) +0:195 direct index ( temp highp float) +0:195 direct index ( temp highp 4-component vector of float) +0:195 'm' ( temp highp 4X4 matrix of float) +0:195 Constant: +0:195 3 (const int) +0:195 Constant: +0:195 2 (const int) +0:195 component-wise multiply ( temp highp float) +0:195 direct index ( temp highp float) +0:195 direct index ( temp highp 4-component vector of float) +0:195 'm' ( temp highp 4X4 matrix of float) +0:195 Constant: +0:195 0 (const int) +0:195 Constant: +0:195 2 (const int) +0:195 direct index ( temp highp float) +0:195 'tt' ( temp highp 3-component vector of float) +0:195 Constant: +0:195 0 (const int) +0:196 add second child into first child ( temp highp float) +0:196 direct index ( temp highp float) +0:196 direct index ( temp highp 4-component vector of float) +0:196 'm' ( temp highp 4X4 matrix of float) +0:196 Constant: +0:196 3 (const int) +0:196 Constant: +0:196 3 (const int) +0:196 component-wise multiply ( temp highp float) +0:196 direct index ( temp highp float) +0:196 direct index ( temp highp 4-component vector of float) +0:196 'm' ( temp highp 4X4 matrix of float) +0:196 Constant: +0:196 0 (const int) +0:196 Constant: +0:196 3 (const int) +0:196 direct index ( temp highp float) +0:196 'tt' ( temp highp 3-component vector of float) +0:196 Constant: +0:196 0 (const int) +0:197 add second child into first child ( temp highp float) +0:197 direct index ( temp highp float) +0:197 direct index ( temp highp 4-component vector of float) +0:197 'm' ( temp highp 4X4 matrix of float) +0:197 Constant: +0:197 3 (const int) +0:197 Constant: +0:197 0 (const int) +0:197 component-wise multiply ( temp highp float) +0:197 direct index ( temp highp float) +0:197 direct index ( temp highp 4-component vector of float) +0:197 'm' ( temp highp 4X4 matrix of float) +0:197 Constant: +0:197 1 (const int) +0:197 Constant: +0:197 0 (const int) +0:197 direct index ( temp highp float) +0:197 'tt' ( temp highp 3-component vector of float) +0:197 Constant: +0:197 1 (const int) +0:198 add second child into first child ( temp highp float) +0:198 direct index ( temp highp float) +0:198 direct index ( temp highp 4-component vector of float) +0:198 'm' ( temp highp 4X4 matrix of float) +0:198 Constant: +0:198 3 (const int) +0:198 Constant: +0:198 1 (const int) +0:198 component-wise multiply ( temp highp float) +0:198 direct index ( temp highp float) +0:198 direct index ( temp highp 4-component vector of float) +0:198 'm' ( temp highp 4X4 matrix of float) +0:198 Constant: +0:198 1 (const int) +0:198 Constant: +0:198 1 (const int) +0:198 direct index ( temp highp float) +0:198 'tt' ( temp highp 3-component vector of float) +0:198 Constant: +0:198 1 (const int) +0:199 add second child into first child ( temp highp float) +0:199 direct index ( temp highp float) +0:199 direct index ( temp highp 4-component vector of float) +0:199 'm' ( temp highp 4X4 matrix of float) +0:199 Constant: +0:199 3 (const int) +0:199 Constant: +0:199 2 (const int) +0:199 component-wise multiply ( temp highp float) +0:199 direct index ( temp highp float) +0:199 direct index ( temp highp 4-component vector of float) +0:199 'm' ( temp highp 4X4 matrix of float) +0:199 Constant: +0:199 1 (const int) +0:199 Constant: +0:199 2 (const int) +0:199 direct index ( temp highp float) +0:199 'tt' ( temp highp 3-component vector of float) +0:199 Constant: +0:199 1 (const int) +0:200 add second child into first child ( temp highp float) +0:200 direct index ( temp highp float) +0:200 direct index ( temp highp 4-component vector of float) +0:200 'm' ( temp highp 4X4 matrix of float) +0:200 Constant: +0:200 3 (const int) +0:200 Constant: +0:200 3 (const int) +0:200 component-wise multiply ( temp highp float) +0:200 direct index ( temp highp float) +0:200 direct index ( temp highp 4-component vector of float) +0:200 'm' ( temp highp 4X4 matrix of float) +0:200 Constant: +0:200 1 (const int) +0:200 Constant: +0:200 3 (const int) +0:200 direct index ( temp highp float) +0:200 'tt' ( temp highp 3-component vector of float) +0:200 Constant: +0:200 1 (const int) +0:201 add second child into first child ( temp highp float) +0:201 direct index ( temp highp float) +0:201 direct index ( temp highp 4-component vector of float) +0:201 'm' ( temp highp 4X4 matrix of float) +0:201 Constant: +0:201 3 (const int) +0:201 Constant: +0:201 0 (const int) +0:201 component-wise multiply ( temp highp float) +0:201 direct index ( temp highp float) +0:201 direct index ( temp highp 4-component vector of float) +0:201 'm' ( temp highp 4X4 matrix of float) +0:201 Constant: +0:201 2 (const int) +0:201 Constant: +0:201 0 (const int) +0:201 direct index ( temp highp float) +0:201 'tt' ( temp highp 3-component vector of float) +0:201 Constant: +0:201 2 (const int) +0:202 add second child into first child ( temp highp float) +0:202 direct index ( temp highp float) +0:202 direct index ( temp highp 4-component vector of float) +0:202 'm' ( temp highp 4X4 matrix of float) +0:202 Constant: +0:202 3 (const int) +0:202 Constant: +0:202 1 (const int) +0:202 component-wise multiply ( temp highp float) +0:202 direct index ( temp highp float) +0:202 direct index ( temp highp 4-component vector of float) +0:202 'm' ( temp highp 4X4 matrix of float) +0:202 Constant: +0:202 2 (const int) +0:202 Constant: +0:202 1 (const int) +0:202 direct index ( temp highp float) +0:202 'tt' ( temp highp 3-component vector of float) +0:202 Constant: +0:202 2 (const int) +0:203 add second child into first child ( temp highp float) +0:203 direct index ( temp highp float) +0:203 direct index ( temp highp 4-component vector of float) +0:203 'm' ( temp highp 4X4 matrix of float) +0:203 Constant: +0:203 3 (const int) +0:203 Constant: +0:203 2 (const int) +0:203 component-wise multiply ( temp highp float) +0:203 direct index ( temp highp float) +0:203 direct index ( temp highp 4-component vector of float) +0:203 'm' ( temp highp 4X4 matrix of float) +0:203 Constant: +0:203 2 (const int) +0:203 Constant: +0:203 2 (const int) +0:203 direct index ( temp highp float) +0:203 'tt' ( temp highp 3-component vector of float) +0:203 Constant: +0:203 2 (const int) +0:204 add second child into first child ( temp highp float) +0:204 direct index ( temp highp float) +0:204 direct index ( temp highp 4-component vector of float) +0:204 'm' ( temp highp 4X4 matrix of float) +0:204 Constant: +0:204 3 (const int) +0:204 Constant: +0:204 3 (const int) +0:204 component-wise multiply ( temp highp float) +0:204 direct index ( temp highp float) +0:204 direct index ( temp highp 4-component vector of float) +0:204 'm' ( temp highp 4X4 matrix of float) +0:204 Constant: +0:204 2 (const int) +0:204 Constant: +0:204 3 (const int) +0:204 direct index ( temp highp float) +0:204 'tt' ( temp highp 3-component vector of float) +0:204 Constant: +0:204 2 (const int) +0:206 Branch: Return with expression +0:206 'm' ( temp highp 4X4 matrix of float) +0:208 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:208 Function Parameters: +0:208 'id' ( in highp int) +0:209 Sequence +0:209 Sequence +0:209 move second child to first child ( temp highp 3X3 matrix of float) +0:209 'm' ( temp highp 3X3 matrix of float) +0:209 Constant: +0:209 1.000000 +0:209 0.000000 +0:209 0.000000 +0:209 0.000000 +0:209 1.000000 +0:209 0.000000 +0:209 0.000000 +0:209 0.000000 +0:209 1.000000 +0:210 Branch: Return with expression +0:210 'm' ( temp highp 3X3 matrix of float) +0:212 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float) +0:212 Function Parameters: +0:212 'id' ( in highp int) +0:213 Sequence +0:213 Sequence +0:213 move second child to first child ( temp highp 3X3 matrix of float) +0:213 'm' ( temp highp 3X3 matrix of float) +0:213 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:213 'id' ( in highp int) +0:214 Branch: Return with expression +0:214 'm' ( temp highp 3X3 matrix of float) +0:216 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float) +0:216 Function Parameters: +0:216 'index' ( in highp int) +0:216 'curColor' ( in highp 4-component vector of float) +0:217 Sequence +0:217 subtract second child into first child ( temp highp int) +0:217 'index' ( in highp int) +0:217 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:217 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:217 Constant: +0:217 0 (const uint) +0:219 Sequence +0:219 move second child to first child ( temp highp int) +0:219 'coord' ( temp highp int) +0:219 'index' ( in highp int) +0:220 Sequence +0:220 move second child to first child ( temp highp 4-component vector of float) +0:220 'samp' ( temp highp 4-component vector of float) +0:220 textureFetch ( global highp 4-component vector of float) +0:220 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) +0:220 'coord' ( temp highp int) +0:221 move second child to first child ( temp highp float) +0:221 direct index ( temp highp float) +0:221 'v' ( temp highp 4-component vector of float) +0:221 Constant: +0:221 0 (const int) +0:221 direct index ( temp highp float) +0:221 'samp' ( temp highp 4-component vector of float) +0:221 Constant: +0:221 0 (const int) +0:222 move second child to first child ( temp highp float) +0:222 direct index ( temp highp float) +0:222 'v' ( temp highp 4-component vector of float) +0:222 Constant: +0:222 1 (const int) +0:222 direct index ( temp highp float) +0:222 'samp' ( temp highp 4-component vector of float) +0:222 Constant: +0:222 1 (const int) +0:223 move second child to first child ( temp highp float) +0:223 direct index ( temp highp float) +0:223 'v' ( temp highp 4-component vector of float) +0:223 Constant: +0:223 2 (const int) +0:223 direct index ( temp highp float) +0:223 'samp' ( temp highp 4-component vector of float) +0:223 Constant: +0:223 2 (const int) +0:224 move second child to first child ( temp highp float) +0:224 direct index ( temp highp float) +0:224 'v' ( temp highp 4-component vector of float) +0:224 Constant: +0:224 3 (const int) +0:224 Constant: +0:224 1.000000 +0:225 move second child to first child ( temp highp float) +0:225 direct index ( temp highp float) +0:225 'curColor' ( in highp 4-component vector of float) +0:225 Constant: +0:225 0 (const int) +0:225 direct index ( temp highp float) +0:225 'v' ( temp highp 4-component vector of float) +0:225 Constant: +0:225 0 (const int) +0:227 move second child to first child ( temp highp float) +0:227 direct index ( temp highp float) +0:227 'curColor' ( in highp 4-component vector of float) +0:227 Constant: +0:227 1 (const int) +0:227 direct index ( temp highp float) +0:227 'v' ( temp highp 4-component vector of float) +0:227 Constant: +0:227 1 (const int) +0:229 move second child to first child ( temp highp float) +0:229 direct index ( temp highp float) +0:229 'curColor' ( in highp 4-component vector of float) +0:229 Constant: +0:229 2 (const int) +0:229 direct index ( temp highp float) +0:229 'v' ( temp highp 4-component vector of float) +0:229 Constant: +0:229 2 (const int) +0:231 Branch: Return with expression +0:231 'curColor' ( in highp 4-component vector of float) +0:233 Function Definition: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float) +0:233 Function Parameters: +0:233 'id' ( in highp int) +0:233 'pos' ( in highp 4-component vector of float) +0:234 Sequence +0:234 move second child to first child ( temp highp 4-component vector of float) +0:234 'pos' ( in highp 4-component vector of float) +0:234 matrix-times-vector ( temp highp 4-component vector of float) +0:234 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:234 'id' ( in highp int) +0:234 'pos' ( in highp 4-component vector of float) +0:235 Branch: Return with expression +0:235 matrix-times-vector ( temp highp 4-component vector of float) +0:235 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:235 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:235 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:235 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:235 Constant: +0:235 0 (const uint) +0:235 Function Call: TDCameraIndex( ( global highp int) +0:235 Constant: +0:235 0 (const int) +0:235 'pos' ( in highp 4-component vector of float) +0:238 Function Definition: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:238 Function Parameters: +0:238 'id' ( in highp int) +0:238 'vec' ( in highp 3-component vector of float) +0:240 Sequence +0:240 Sequence +0:240 move second child to first child ( temp highp 3X3 matrix of float) +0:240 'm' ( temp highp 3X3 matrix of float) +0:240 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:240 'id' ( in highp int) +0:241 Branch: Return with expression +0:241 matrix-times-vector ( temp highp 3-component vector of float) +0:241 Construct mat3 ( temp highp 3X3 matrix of float) +0:241 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:241 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:241 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:241 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:241 Constant: +0:241 0 (const uint) +0:241 Function Call: TDCameraIndex( ( global highp int) +0:241 Constant: +0:241 0 (const int) +0:241 matrix-times-vector ( temp highp 3-component vector of float) +0:241 'm' ( temp highp 3X3 matrix of float) +0:241 'vec' ( in highp 3-component vector of float) +0:243 Function Definition: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:243 Function Parameters: +0:243 'id' ( in highp int) +0:243 'vec' ( in highp 3-component vector of float) +0:245 Sequence +0:245 Sequence +0:245 move second child to first child ( temp highp 3X3 matrix of float) +0:245 'm' ( temp highp 3X3 matrix of float) +0:245 Function Call: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float) +0:245 'id' ( in highp int) +0:246 Branch: Return with expression +0:246 matrix-times-vector ( temp highp 3-component vector of float) +0:246 Construct mat3 ( temp highp 3X3 matrix of float) +0:246 worldForNormals: direct index for structure (layout( column_major std140) global highp 3X3 matrix of float) +0:246 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:246 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:246 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:246 Constant: +0:246 0 (const uint) +0:246 Function Call: TDCameraIndex( ( global highp int) +0:246 Constant: +0:246 13 (const int) +0:246 matrix-times-vector ( temp highp 3-component vector of float) +0:246 'm' ( temp highp 3X3 matrix of float) +0:246 'vec' ( in highp 3-component vector of float) +0:248 Function Definition: TDInstanceDeform(vf4; ( global highp 4-component vector of float) +0:248 Function Parameters: +0:248 'pos' ( in highp 4-component vector of float) +0:249 Sequence +0:249 Branch: Return with expression +0:249 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float) +0:249 Function Call: TDInstanceID( ( global highp int) +0:249 'pos' ( in highp 4-component vector of float) +0:251 Function Definition: TDInstanceDeformVec(vf3; ( global highp 3-component vector of float) +0:251 Function Parameters: +0:251 'vec' ( in highp 3-component vector of float) +0:252 Sequence +0:252 Branch: Return with expression +0:252 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:252 Function Call: TDInstanceID( ( global highp int) +0:252 'vec' ( in highp 3-component vector of float) +0:254 Function Definition: TDInstanceDeformNorm(vf3; ( global highp 3-component vector of float) +0:254 Function Parameters: +0:254 'vec' ( in highp 3-component vector of float) +0:255 Sequence +0:255 Branch: Return with expression +0:255 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:255 Function Call: TDInstanceID( ( global highp int) +0:255 'vec' ( in highp 3-component vector of float) +0:257 Function Definition: TDInstanceActive( ( global bool) +0:257 Function Parameters: +0:257 Sequence +0:257 Branch: Return with expression +0:257 Function Call: TDInstanceActive(i1; ( global bool) +0:257 Function Call: TDInstanceID( ( global highp int) +0:258 Function Definition: TDInstanceTranslate( ( global highp 3-component vector of float) +0:258 Function Parameters: +0:258 Sequence +0:258 Branch: Return with expression +0:258 Function Call: TDInstanceTranslate(i1; ( global highp 3-component vector of float) +0:258 Function Call: TDInstanceID( ( global highp int) +0:259 Function Definition: TDInstanceRotateMat( ( global highp 3X3 matrix of float) +0:259 Function Parameters: +0:259 Sequence +0:259 Branch: Return with expression +0:259 Function Call: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float) +0:259 Function Call: TDInstanceID( ( global highp int) +0:260 Function Definition: TDInstanceScale( ( global highp 3-component vector of float) +0:260 Function Parameters: +0:260 Sequence +0:260 Branch: Return with expression +0:260 Function Call: TDInstanceScale(i1; ( global highp 3-component vector of float) +0:260 Function Call: TDInstanceID( ( global highp int) +0:261 Function Definition: TDInstanceMat( ( global highp 4X4 matrix of float) +0:261 Function Parameters: +0:261 Sequence +0:261 Branch: Return with expression +0:261 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:261 Function Call: TDInstanceID( ( global highp int) +0:263 Function Definition: TDInstanceMat3( ( global highp 3X3 matrix of float) +0:263 Function Parameters: +0:263 Sequence +0:263 Branch: Return with expression +0:263 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:263 Function Call: TDInstanceID( ( global highp int) +0:265 Function Definition: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float) +0:265 Function Parameters: +0:265 't' ( in highp 3-component vector of float) +0:266 Sequence +0:266 Branch: Return with expression +0:266 Function Call: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float) +0:266 Function Call: TDInstanceID( ( global highp int) +0:266 't' ( in highp 3-component vector of float) +0:268 Function Definition: TDInstanceColor(vf4; ( global highp 4-component vector of float) +0:268 Function Parameters: +0:268 'curColor' ( in highp 4-component vector of float) +0:269 Sequence +0:269 Branch: Return with expression +0:269 Function Call: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float) +0:269 Function Call: TDInstanceID( ( global highp int) +0:269 'curColor' ( in highp 4-component vector of float) +0:271 Function Definition: TDSkinnedDeform(vf4; ( global highp 4-component vector of float) +0:271 Function Parameters: +0:271 'pos' ( in highp 4-component vector of float) +0:271 Sequence +0:271 Branch: Return with expression +0:271 'pos' ( in highp 4-component vector of float) +0:273 Function Definition: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:273 Function Parameters: +0:273 'vec' ( in highp 3-component vector of float) +0:273 Sequence +0:273 Branch: Return with expression +0:273 'vec' ( in highp 3-component vector of float) +0:275 Function Definition: TDFastDeformTangent(vf3;vf4;vf3; ( global highp 3-component vector of float) +0:275 Function Parameters: +0:275 'oldNorm' ( in highp 3-component vector of float) +0:275 'oldTangent' ( in highp 4-component vector of float) +0:275 'deformedNorm' ( in highp 3-component vector of float) +0:276 Sequence +0:276 Branch: Return with expression +0:276 vector swizzle ( temp highp 3-component vector of float) +0:276 'oldTangent' ( in highp 4-component vector of float) +0:276 Sequence +0:276 Constant: +0:276 0 (const int) +0:276 Constant: +0:276 1 (const int) +0:276 Constant: +0:276 2 (const int) +0:277 Function Definition: TDBoneMat(i1; ( global highp 4X4 matrix of float) +0:277 Function Parameters: +0:277 'index' ( in highp int) +0:278 Sequence +0:278 Branch: Return with expression +0:278 Constant: +0:278 1.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 1.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 1.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 1.000000 +0:280 Function Definition: TDDeform(vf4; ( global highp 4-component vector of float) +0:280 Function Parameters: +0:280 'pos' ( in highp 4-component vector of float) +0:281 Sequence +0:281 move second child to first child ( temp highp 4-component vector of float) +0:281 'pos' ( in highp 4-component vector of float) +0:281 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float) +0:281 'pos' ( in highp 4-component vector of float) +0:282 move second child to first child ( temp highp 4-component vector of float) +0:282 'pos' ( in highp 4-component vector of float) +0:282 Function Call: TDInstanceDeform(vf4; ( global highp 4-component vector of float) +0:282 'pos' ( in highp 4-component vector of float) +0:283 Branch: Return with expression +0:283 'pos' ( in highp 4-component vector of float) +0:286 Function Definition: TDDeform(i1;vf3; ( global highp 4-component vector of float) +0:286 Function Parameters: +0:286 'instanceID' ( in highp int) +0:286 'p' ( in highp 3-component vector of float) +0:287 Sequence +0:287 Sequence +0:287 move second child to first child ( temp highp 4-component vector of float) +0:287 'pos' ( temp highp 4-component vector of float) +0:287 Construct vec4 ( temp highp 4-component vector of float) +0:287 'p' ( in highp 3-component vector of float) +0:287 Constant: +0:287 1.000000 +0:288 move second child to first child ( temp highp 4-component vector of float) +0:288 'pos' ( temp highp 4-component vector of float) +0:288 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float) +0:288 'pos' ( temp highp 4-component vector of float) +0:289 move second child to first child ( temp highp 4-component vector of float) +0:289 'pos' ( temp highp 4-component vector of float) +0:289 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float) +0:289 'instanceID' ( in highp int) +0:289 'pos' ( temp highp 4-component vector of float) +0:290 Branch: Return with expression +0:290 'pos' ( temp highp 4-component vector of float) +0:293 Function Definition: TDDeform(vf3; ( global highp 4-component vector of float) +0:293 Function Parameters: +0:293 'pos' ( in highp 3-component vector of float) +0:294 Sequence +0:294 Branch: Return with expression +0:294 Function Call: TDDeform(i1;vf3; ( global highp 4-component vector of float) +0:294 Function Call: TDInstanceID( ( global highp int) +0:294 'pos' ( in highp 3-component vector of float) +0:297 Function Definition: TDDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:297 Function Parameters: +0:297 'instanceID' ( in highp int) +0:297 'vec' ( in highp 3-component vector of float) +0:298 Sequence +0:298 move second child to first child ( temp highp 3-component vector of float) +0:298 'vec' ( in highp 3-component vector of float) +0:298 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:298 'vec' ( in highp 3-component vector of float) +0:299 move second child to first child ( temp highp 3-component vector of float) +0:299 'vec' ( in highp 3-component vector of float) +0:299 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:299 'instanceID' ( in highp int) +0:299 'vec' ( in highp 3-component vector of float) +0:300 Branch: Return with expression +0:300 'vec' ( in highp 3-component vector of float) +0:303 Function Definition: TDDeformVec(vf3; ( global highp 3-component vector of float) +0:303 Function Parameters: +0:303 'vec' ( in highp 3-component vector of float) +0:304 Sequence +0:304 Branch: Return with expression +0:304 Function Call: TDDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:304 Function Call: TDInstanceID( ( global highp int) +0:304 'vec' ( in highp 3-component vector of float) +0:307 Function Definition: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:307 Function Parameters: +0:307 'instanceID' ( in highp int) +0:307 'vec' ( in highp 3-component vector of float) +0:308 Sequence +0:308 move second child to first child ( temp highp 3-component vector of float) +0:308 'vec' ( in highp 3-component vector of float) +0:308 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:308 'vec' ( in highp 3-component vector of float) +0:309 move second child to first child ( temp highp 3-component vector of float) +0:309 'vec' ( in highp 3-component vector of float) +0:309 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:309 'instanceID' ( in highp int) +0:309 'vec' ( in highp 3-component vector of float) +0:310 Branch: Return with expression +0:310 'vec' ( in highp 3-component vector of float) +0:313 Function Definition: TDDeformNorm(vf3; ( global highp 3-component vector of float) +0:313 Function Parameters: +0:313 'vec' ( in highp 3-component vector of float) +0:314 Sequence +0:314 Branch: Return with expression +0:314 Function Call: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:314 Function Call: TDInstanceID( ( global highp int) +0:314 'vec' ( in highp 3-component vector of float) +0:317 Function Definition: TDSkinnedDeformNorm(vf3; ( global highp 3-component vector of float) +0:317 Function Parameters: +0:317 'vec' ( in highp 3-component vector of float) +0:318 Sequence +0:318 move second child to first child ( temp highp 3-component vector of float) +0:318 'vec' ( in highp 3-component vector of float) +0:318 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:318 'vec' ( in highp 3-component vector of float) +0:319 Branch: Return with expression +0:319 'vec' ( in highp 3-component vector of float) +0:? Linker Objects +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights}) +0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs}) +0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:? 'anon@4' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos}) +0:? 'anon@5' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral}) +0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) +0:? 'gl_VertexIndex' ( in int VertexIndex) +0:? 'gl_InstanceIndex' ( in int InstanceIndex) + +vk.relaxed.stagelink.0.0.frag +Shader version: 460 +gl_FragCoord origin is upper left +0:? Sequence +0:95 Function Definition: main( ( global void) +0:95 Function Parameters: +0:99 Sequence +0:99 Function Call: TDCheckDiscard( ( global void) +0:101 Sequence +0:101 move second child to first child ( temp highp 4-component vector of float) +0:101 'outcol' ( temp highp 4-component vector of float) +0:101 Constant: +0:101 0.000000 +0:101 0.000000 +0:101 0.000000 +0:101 0.000000 +0:103 Sequence +0:103 move second child to first child ( temp highp 3-component vector of float) +0:103 'texCoord0' ( temp highp 3-component vector of float) +0:103 vector swizzle ( temp highp 3-component vector of float) +0:103 texCoord0: direct index for structure ( in highp 3-component vector of float) +0:103 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:103 Constant: +0:103 2 (const int) +0:103 Sequence +0:103 Constant: +0:103 0 (const int) +0:103 Constant: +0:103 1 (const int) +0:103 Constant: +0:103 2 (const int) +0:104 Sequence +0:104 move second child to first child ( temp highp float) +0:104 'actualTexZ' ( temp highp float) +0:104 mod ( global highp float) +0:104 Convert int to float ( temp highp float) +0:104 Convert float to int ( temp highp int) +0:104 direct index ( temp highp float) +0:104 'texCoord0' ( temp highp 3-component vector of float) +0:104 Constant: +0:104 2 (const int) +0:104 Constant: +0:104 2048.000000 +0:105 Sequence +0:105 move second child to first child ( temp highp float) +0:105 'instanceLoop' ( temp highp float) +0:105 Floor ( global highp float) +0:105 Convert int to float ( temp highp float) +0:105 divide ( temp highp int) +0:105 Convert float to int ( temp highp int) +0:105 direct index ( temp highp float) +0:105 'texCoord0' ( temp highp 3-component vector of float) +0:105 Constant: +0:105 2 (const int) +0:105 Constant: +0:105 2048 (const int) +0:106 move second child to first child ( temp highp float) +0:106 direct index ( temp highp float) +0:106 'texCoord0' ( temp highp 3-component vector of float) +0:106 Constant: +0:106 2 (const int) +0:106 'actualTexZ' ( temp highp float) +0:107 Sequence +0:107 move second child to first child ( temp highp 4-component vector of float) +0:107 'colorMapColor' ( temp highp 4-component vector of float) +0:107 texture ( global highp 4-component vector of float) +0:107 'sColorMap' ( uniform highp sampler2DArray) +0:107 vector swizzle ( temp highp 3-component vector of float) +0:107 'texCoord0' ( temp highp 3-component vector of float) +0:107 Sequence +0:107 Constant: +0:107 0 (const int) +0:107 Constant: +0:107 1 (const int) +0:107 Constant: +0:107 2 (const int) +0:109 Sequence +0:109 move second child to first child ( temp highp float) +0:109 'red' ( temp highp float) +0:109 indirect index ( temp highp float) +0:109 'colorMapColor' ( temp highp 4-component vector of float) +0:109 Convert float to int ( temp highp int) +0:109 'instanceLoop' ( temp highp float) +0:110 move second child to first child ( temp highp 4-component vector of float) +0:110 'colorMapColor' ( temp highp 4-component vector of float) +0:110 Construct vec4 ( temp highp 4-component vector of float) +0:110 'red' ( temp highp float) +0:112 add second child into first child ( temp highp 3-component vector of float) +0:112 vector swizzle ( temp highp 3-component vector of float) +0:112 'outcol' ( temp highp 4-component vector of float) +0:112 Sequence +0:112 Constant: +0:112 0 (const int) +0:112 Constant: +0:112 1 (const int) +0:112 Constant: +0:112 2 (const int) +0:112 component-wise multiply ( temp highp 3-component vector of float) +0:112 uConstant: direct index for structure ( uniform highp 3-component vector of float) +0:112 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:112 Constant: +0:112 3 (const uint) +0:112 vector swizzle ( temp highp 3-component vector of float) +0:112 color: direct index for structure ( in highp 4-component vector of float) +0:112 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:112 Constant: +0:112 0 (const int) +0:112 Sequence +0:112 Constant: +0:112 0 (const int) +0:112 Constant: +0:112 1 (const int) +0:112 Constant: +0:112 2 (const int) +0:114 multiply second child into first child ( temp highp 4-component vector of float) +0:114 'outcol' ( temp highp 4-component vector of float) +0:114 'colorMapColor' ( temp highp 4-component vector of float) +0:117 Sequence +0:117 move second child to first child ( temp highp float) +0:117 'alpha' ( temp highp float) +0:117 component-wise multiply ( temp highp float) +0:117 direct index ( temp highp float) +0:117 color: direct index for structure ( in highp 4-component vector of float) +0:117 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:117 Constant: +0:117 0 (const int) +0:117 Constant: +0:117 3 (const int) +0:117 direct index ( temp highp float) +0:117 'colorMapColor' ( temp highp 4-component vector of float) +0:117 Constant: +0:117 3 (const int) +0:120 move second child to first child ( temp highp 4-component vector of float) +0:120 'outcol' ( temp highp 4-component vector of float) +0:120 Function Call: TDDither(vf4; ( global highp 4-component vector of float) +0:120 'outcol' ( temp highp 4-component vector of float) +0:122 vector scale second child into first child ( temp highp 3-component vector of float) +0:122 vector swizzle ( temp highp 3-component vector of float) +0:122 'outcol' ( temp highp 4-component vector of float) +0:122 Sequence +0:122 Constant: +0:122 0 (const int) +0:122 Constant: +0:122 1 (const int) +0:122 Constant: +0:122 2 (const int) +0:122 'alpha' ( temp highp float) +0:126 Function Call: TDAlphaTest(f1; ( global void) +0:126 'alpha' ( temp highp float) +0:128 move second child to first child ( temp highp float) +0:128 direct index ( temp highp float) +0:128 'outcol' ( temp highp 4-component vector of float) +0:128 Constant: +0:128 3 (const int) +0:128 'alpha' ( temp highp float) +0:129 move second child to first child ( temp highp 4-component vector of float) +0:129 direct index (layout( location=0) temp highp 4-component vector of float) +0:129 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float) +0:129 Constant: +0:129 0 (const int) +0:129 Function Call: TDOutputSwizzle(vf4; ( global highp 4-component vector of float) +0:129 'outcol' ( temp highp 4-component vector of float) +0:135 Sequence +0:135 Sequence +0:135 move second child to first child ( temp highp int) +0:135 'i' ( temp highp int) +0:135 Constant: +0:135 1 (const int) +0:135 Loop with condition tested first +0:135 Loop Condition +0:135 Compare Less Than ( temp bool) +0:135 'i' ( temp highp int) +0:135 Constant: +0:135 1 (const int) +0:135 Loop Body +0:137 Sequence +0:137 move second child to first child ( temp highp 4-component vector of float) +0:137 indirect index (layout( location=0) temp highp 4-component vector of float) +0:137 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float) +0:137 'i' ( temp highp int) +0:137 Constant: +0:137 0.000000 +0:137 0.000000 +0:137 0.000000 +0:137 0.000000 +0:135 Loop Terminal Expression +0:135 Post-Increment ( temp highp int) +0:135 'i' ( temp highp int) +0:? Linker Objects +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos}) +0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral}) +0:? 'sColorMap' ( uniform highp sampler2DArray) +0:? 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:? 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float) + +vk.relaxed.stagelink.0.1.frag +Shader version: 460 +gl_FragCoord origin is upper left +0:? Sequence +0:116 Function Definition: TDColor(vf4; ( global highp 4-component vector of float) +0:116 Function Parameters: +0:116 'color' ( in highp 4-component vector of float) +0:116 Sequence +0:116 Branch: Return with expression +0:116 'color' ( in highp 4-component vector of float) +0:117 Function Definition: TDCheckOrderIndTrans( ( global void) +0:117 Function Parameters: +0:119 Function Definition: TDCheckDiscard( ( global void) +0:119 Function Parameters: +0:120 Sequence +0:120 Function Call: TDCheckOrderIndTrans( ( global void) +0:122 Function Definition: TDDither(vf4; ( global highp 4-component vector of float) +0:122 Function Parameters: +0:122 'color' ( in highp 4-component vector of float) +0:124 Sequence +0:124 Sequence +0:124 move second child to first child ( temp highp float) +0:124 'd' ( temp highp float) +0:125 direct index ( temp highp float) +0:125 texture ( global highp 4-component vector of float) +0:124 'sTDNoiseMap' ( uniform highp sampler2D) +0:125 divide ( temp highp 2-component vector of float) +0:125 vector swizzle ( temp highp 2-component vector of float) +0:125 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) +0:125 Sequence +0:125 Constant: +0:125 0 (const int) +0:125 Constant: +0:125 1 (const int) +0:125 Constant: +0:125 256.000000 +0:125 Constant: +0:125 0 (const int) +0:126 subtract second child into first child ( temp highp float) +0:126 'd' ( temp highp float) +0:126 Constant: +0:126 0.500000 +0:127 divide second child into first child ( temp highp float) +0:127 'd' ( temp highp float) +0:127 Constant: +0:127 256.000000 +0:128 Branch: Return with expression +0:128 Construct vec4 ( temp highp 4-component vector of float) +0:128 add ( temp highp 3-component vector of float) +0:128 vector swizzle ( temp highp 3-component vector of float) +0:128 'color' ( in highp 4-component vector of float) +0:128 Sequence +0:128 Constant: +0:128 0 (const int) +0:128 Constant: +0:128 1 (const int) +0:128 Constant: +0:128 2 (const int) +0:128 'd' ( temp highp float) +0:128 direct index ( temp highp float) +0:128 'color' ( in highp 4-component vector of float) +0:128 Constant: +0:128 3 (const int) +0:130 Function Definition: TDFrontFacing(vf3;vf3; ( global bool) +0:130 Function Parameters: +0:130 'pos' ( in highp 3-component vector of float) +0:130 'normal' ( in highp 3-component vector of float) +0:132 Sequence +0:132 Branch: Return with expression +0:132 'gl_FrontFacing' ( gl_FrontFacing bool Face) +0:134 Function Definition: TDAttenuateLight(i1;f1; ( global highp float) +0:134 Function Parameters: +0:134 'index' ( in highp int) +0:134 'lightDist' ( in highp float) +0:136 Sequence +0:136 Branch: Return with expression +0:136 Constant: +0:136 1.000000 +0:138 Function Definition: TDAlphaTest(f1; ( global void) +0:138 Function Parameters: +0:138 'alpha' ( in highp float) +0:140 Function Definition: TDHardShadow(i1;vf3; ( global highp float) +0:140 Function Parameters: +0:140 'lightIndex' ( in highp int) +0:140 'worldSpacePos' ( in highp 3-component vector of float) +0:141 Sequence +0:141 Branch: Return with expression +0:141 Constant: +0:141 0.000000 +0:142 Function Definition: TDSoftShadow(i1;vf3;i1;i1; ( global highp float) +0:142 Function Parameters: +0:142 'lightIndex' ( in highp int) +0:142 'worldSpacePos' ( in highp 3-component vector of float) +0:142 'samples' ( in highp int) +0:142 'steps' ( in highp int) +0:143 Sequence +0:143 Branch: Return with expression +0:143 Constant: +0:143 0.000000 +0:144 Function Definition: TDSoftShadow(i1;vf3; ( global highp float) +0:144 Function Parameters: +0:144 'lightIndex' ( in highp int) +0:144 'worldSpacePos' ( in highp 3-component vector of float) +0:145 Sequence +0:145 Branch: Return with expression +0:145 Constant: +0:145 0.000000 +0:146 Function Definition: TDShadow(i1;vf3; ( global highp float) +0:146 Function Parameters: +0:146 'lightIndex' ( in highp int) +0:146 'worldSpacePos' ( in highp 3-component vector of float) +0:147 Sequence +0:147 Branch: Return with expression +0:147 Constant: +0:147 0.000000 +0:152 Function Definition: iTDRadicalInverse_VdC(u1; ( global highp float) +0:152 Function Parameters: +0:152 'bits' ( in highp uint) +0:154 Sequence +0:154 move second child to first child ( temp highp uint) +0:154 'bits' ( in highp uint) +0:154 inclusive-or ( temp highp uint) +0:154 left-shift ( temp highp uint) +0:154 'bits' ( in highp uint) +0:154 Constant: +0:154 16 (const uint) +0:154 right-shift ( temp highp uint) +0:154 'bits' ( in highp uint) +0:154 Constant: +0:154 16 (const uint) +0:155 move second child to first child ( temp highp uint) +0:155 'bits' ( in highp uint) +0:155 inclusive-or ( temp highp uint) +0:155 left-shift ( temp highp uint) +0:155 bitwise and ( temp highp uint) +0:155 'bits' ( in highp uint) +0:155 Constant: +0:155 1431655765 (const uint) +0:155 Constant: +0:155 1 (const uint) +0:155 right-shift ( temp highp uint) +0:155 bitwise and ( temp highp uint) +0:155 'bits' ( in highp uint) +0:155 Constant: +0:155 2863311530 (const uint) +0:155 Constant: +0:155 1 (const uint) +0:156 move second child to first child ( temp highp uint) +0:156 'bits' ( in highp uint) +0:156 inclusive-or ( temp highp uint) +0:156 left-shift ( temp highp uint) +0:156 bitwise and ( temp highp uint) +0:156 'bits' ( in highp uint) +0:156 Constant: +0:156 858993459 (const uint) +0:156 Constant: +0:156 2 (const uint) +0:156 right-shift ( temp highp uint) +0:156 bitwise and ( temp highp uint) +0:156 'bits' ( in highp uint) +0:156 Constant: +0:156 3435973836 (const uint) +0:156 Constant: +0:156 2 (const uint) +0:157 move second child to first child ( temp highp uint) +0:157 'bits' ( in highp uint) +0:157 inclusive-or ( temp highp uint) +0:157 left-shift ( temp highp uint) +0:157 bitwise and ( temp highp uint) +0:157 'bits' ( in highp uint) +0:157 Constant: +0:157 252645135 (const uint) +0:157 Constant: +0:157 4 (const uint) +0:157 right-shift ( temp highp uint) +0:157 bitwise and ( temp highp uint) +0:157 'bits' ( in highp uint) +0:157 Constant: +0:157 4042322160 (const uint) +0:157 Constant: +0:157 4 (const uint) +0:158 move second child to first child ( temp highp uint) +0:158 'bits' ( in highp uint) +0:158 inclusive-or ( temp highp uint) +0:158 left-shift ( temp highp uint) +0:158 bitwise and ( temp highp uint) +0:158 'bits' ( in highp uint) +0:158 Constant: +0:158 16711935 (const uint) +0:158 Constant: +0:158 8 (const uint) +0:158 right-shift ( temp highp uint) +0:158 bitwise and ( temp highp uint) +0:158 'bits' ( in highp uint) +0:158 Constant: +0:158 4278255360 (const uint) +0:158 Constant: +0:158 8 (const uint) +0:159 Branch: Return with expression +0:159 component-wise multiply ( temp highp float) +0:159 Convert uint to float ( temp highp float) +0:159 'bits' ( in highp uint) +0:159 Constant: +0:159 2.3283064365387e-10 +0:161 Function Definition: iTDHammersley(u1;u1; ( global highp 2-component vector of float) +0:161 Function Parameters: +0:161 'i' ( in highp uint) +0:161 'N' ( in highp uint) +0:163 Sequence +0:163 Branch: Return with expression +0:163 Construct vec2 ( temp highp 2-component vector of float) +0:163 divide ( temp highp float) +0:163 Convert uint to float ( temp highp float) +0:163 'i' ( in highp uint) +0:163 Convert uint to float ( temp highp float) +0:163 'N' ( in highp uint) +0:163 Function Call: iTDRadicalInverse_VdC(u1; ( global highp float) +0:163 'i' ( in highp uint) +0:165 Function Definition: iTDImportanceSampleGGX(vf2;f1;vf3; ( global highp 3-component vector of float) +0:165 Function Parameters: +0:165 'Xi' ( in highp 2-component vector of float) +0:165 'roughness2' ( in highp float) +0:165 'N' ( in highp 3-component vector of float) +0:167 Sequence +0:167 Sequence +0:167 move second child to first child ( temp highp float) +0:167 'a' ( temp highp float) +0:167 'roughness2' ( in highp float) +0:168 Sequence +0:168 move second child to first child ( temp highp float) +0:168 'phi' ( temp highp float) +0:168 component-wise multiply ( temp highp float) +0:168 Constant: +0:168 6.283185 +0:168 direct index ( temp highp float) +0:168 'Xi' ( in highp 2-component vector of float) +0:168 Constant: +0:168 0 (const int) +0:169 Sequence +0:169 move second child to first child ( temp highp float) +0:169 'cosTheta' ( temp highp float) +0:169 sqrt ( global highp float) +0:169 divide ( temp highp float) +0:169 subtract ( temp highp float) +0:169 Constant: +0:169 1.000000 +0:169 direct index ( temp highp float) +0:169 'Xi' ( in highp 2-component vector of float) +0:169 Constant: +0:169 1 (const int) +0:169 add ( temp highp float) +0:169 Constant: +0:169 1.000000 +0:169 component-wise multiply ( temp highp float) +0:169 subtract ( temp highp float) +0:169 component-wise multiply ( temp highp float) +0:169 'a' ( temp highp float) +0:169 'a' ( temp highp float) +0:169 Constant: +0:169 1.000000 +0:169 direct index ( temp highp float) +0:169 'Xi' ( in highp 2-component vector of float) +0:169 Constant: +0:169 1 (const int) +0:170 Sequence +0:170 move second child to first child ( temp highp float) +0:170 'sinTheta' ( temp highp float) +0:170 sqrt ( global highp float) +0:170 subtract ( temp highp float) +0:170 Constant: +0:170 1.000000 +0:170 component-wise multiply ( temp highp float) +0:170 'cosTheta' ( temp highp float) +0:170 'cosTheta' ( temp highp float) +0:173 move second child to first child ( temp highp float) +0:173 direct index ( temp highp float) +0:173 'H' ( temp highp 3-component vector of float) +0:173 Constant: +0:173 0 (const int) +0:173 component-wise multiply ( temp highp float) +0:173 'sinTheta' ( temp highp float) +0:173 cosine ( global highp float) +0:173 'phi' ( temp highp float) +0:174 move second child to first child ( temp highp float) +0:174 direct index ( temp highp float) +0:174 'H' ( temp highp 3-component vector of float) +0:174 Constant: +0:174 1 (const int) +0:174 component-wise multiply ( temp highp float) +0:174 'sinTheta' ( temp highp float) +0:174 sine ( global highp float) +0:174 'phi' ( temp highp float) +0:175 move second child to first child ( temp highp float) +0:175 direct index ( temp highp float) +0:175 'H' ( temp highp 3-component vector of float) +0:175 Constant: +0:175 2 (const int) +0:175 'cosTheta' ( temp highp float) +0:177 Sequence +0:177 move second child to first child ( temp highp 3-component vector of float) +0:177 'upVector' ( temp highp 3-component vector of float) +0:177 Test condition and select ( temp highp 3-component vector of float) +0:177 Condition +0:177 Compare Less Than ( temp bool) +0:177 Absolute value ( global highp float) +0:177 direct index ( temp highp float) +0:177 'N' ( in highp 3-component vector of float) +0:177 Constant: +0:177 2 (const int) +0:177 Constant: +0:177 0.999000 +0:177 true case +0:177 Constant: +0:177 0.000000 +0:177 0.000000 +0:177 1.000000 +0:177 false case +0:177 Constant: +0:177 1.000000 +0:177 0.000000 +0:177 0.000000 +0:178 Sequence +0:178 move second child to first child ( temp highp 3-component vector of float) +0:178 'tangentX' ( temp highp 3-component vector of float) +0:178 normalize ( global highp 3-component vector of float) +0:178 cross-product ( global highp 3-component vector of float) +0:178 'upVector' ( temp highp 3-component vector of float) +0:178 'N' ( in highp 3-component vector of float) +0:179 Sequence +0:179 move second child to first child ( temp highp 3-component vector of float) +0:179 'tangentY' ( temp highp 3-component vector of float) +0:179 cross-product ( global highp 3-component vector of float) +0:179 'N' ( in highp 3-component vector of float) +0:179 'tangentX' ( temp highp 3-component vector of float) +0:182 Sequence +0:182 move second child to first child ( temp highp 3-component vector of float) +0:182 'worldResult' ( temp highp 3-component vector of float) +0:182 add ( temp highp 3-component vector of float) +0:182 add ( temp highp 3-component vector of float) +0:182 vector-scale ( temp highp 3-component vector of float) +0:182 'tangentX' ( temp highp 3-component vector of float) +0:182 direct index ( temp highp float) +0:182 'H' ( temp highp 3-component vector of float) +0:182 Constant: +0:182 0 (const int) +0:182 vector-scale ( temp highp 3-component vector of float) +0:182 'tangentY' ( temp highp 3-component vector of float) +0:182 direct index ( temp highp float) +0:182 'H' ( temp highp 3-component vector of float) +0:182 Constant: +0:182 1 (const int) +0:182 vector-scale ( temp highp 3-component vector of float) +0:182 'N' ( in highp 3-component vector of float) +0:182 direct index ( temp highp float) +0:182 'H' ( temp highp 3-component vector of float) +0:182 Constant: +0:182 2 (const int) +0:183 Branch: Return with expression +0:183 'worldResult' ( temp highp 3-component vector of float) +0:185 Function Definition: iTDDistributionGGX(vf3;vf3;f1; ( global highp float) +0:185 Function Parameters: +0:185 'normal' ( in highp 3-component vector of float) +0:185 'half_vector' ( in highp 3-component vector of float) +0:185 'roughness2' ( in highp float) +0:? Sequence +0:189 Sequence +0:189 move second child to first child ( temp highp float) +0:189 'NdotH' ( temp highp float) +0:189 clamp ( global highp float) +0:189 dot-product ( global highp float) +0:189 'normal' ( in highp 3-component vector of float) +0:189 'half_vector' ( in highp 3-component vector of float) +0:189 Constant: +0:189 1.0000000000000e-06 +0:189 Constant: +0:189 1.000000 +0:191 Sequence +0:191 move second child to first child ( temp highp float) +0:191 'alpha2' ( temp highp float) +0:191 component-wise multiply ( temp highp float) +0:191 'roughness2' ( in highp float) +0:191 'roughness2' ( in highp float) +0:193 Sequence +0:193 move second child to first child ( temp highp float) +0:193 'denom' ( temp highp float) +0:193 add ( temp highp float) +0:193 component-wise multiply ( temp highp float) +0:193 component-wise multiply ( temp highp float) +0:193 'NdotH' ( temp highp float) +0:193 'NdotH' ( temp highp float) +0:193 subtract ( temp highp float) +0:193 'alpha2' ( temp highp float) +0:193 Constant: +0:193 1.000000 +0:193 Constant: +0:193 1.000000 +0:194 move second child to first child ( temp highp float) +0:194 'denom' ( temp highp float) +0:194 max ( global highp float) +0:194 Constant: +0:194 1.0000000000000e-08 +0:194 'denom' ( temp highp float) +0:195 Branch: Return with expression +0:195 divide ( temp highp float) +0:195 'alpha2' ( temp highp float) +0:195 component-wise multiply ( temp highp float) +0:195 component-wise multiply ( temp highp float) +0:195 Constant: +0:195 3.141593 +0:195 'denom' ( temp highp float) +0:195 'denom' ( temp highp float) +0:197 Function Definition: iTDCalcF(vf3;f1; ( global highp 3-component vector of float) +0:197 Function Parameters: +0:197 'F0' ( in highp 3-component vector of float) +0:197 'VdotH' ( in highp float) +0:198 Sequence +0:198 Branch: Return with expression +0:198 add ( temp highp 3-component vector of float) +0:198 'F0' ( in highp 3-component vector of float) +0:198 vector-scale ( temp highp 3-component vector of float) +0:198 subtract ( temp highp 3-component vector of float) +0:198 Constant: +0:198 1.000000 +0:198 1.000000 +0:198 1.000000 +0:198 'F0' ( in highp 3-component vector of float) +0:198 pow ( global highp float) +0:198 Constant: +0:198 2.000000 +0:198 component-wise multiply ( temp highp float) +0:198 subtract ( temp highp float) +0:198 component-wise multiply ( temp highp float) +0:198 Constant: +0:198 -5.554730 +0:198 'VdotH' ( in highp float) +0:198 Constant: +0:198 6.983160 +0:198 'VdotH' ( in highp float) +0:201 Function Definition: iTDCalcG(f1;f1;f1; ( global highp float) +0:201 Function Parameters: +0:201 'NdotL' ( in highp float) +0:201 'NdotV' ( in highp float) +0:201 'k' ( in highp float) +0:202 Sequence +0:202 Sequence +0:202 move second child to first child ( temp highp float) +0:202 'Gl' ( temp highp float) +0:202 divide ( temp highp float) +0:202 Constant: +0:202 1.000000 +0:202 add ( temp highp float) +0:202 component-wise multiply ( temp highp float) +0:202 'NdotL' ( in highp float) +0:202 subtract ( temp highp float) +0:202 Constant: +0:202 1.000000 +0:202 'k' ( in highp float) +0:202 'k' ( in highp float) +0:203 Sequence +0:203 move second child to first child ( temp highp float) +0:203 'Gv' ( temp highp float) +0:203 divide ( temp highp float) +0:203 Constant: +0:203 1.000000 +0:203 add ( temp highp float) +0:203 component-wise multiply ( temp highp float) +0:203 'NdotV' ( in highp float) +0:203 subtract ( temp highp float) +0:203 Constant: +0:203 1.000000 +0:203 'k' ( in highp float) +0:203 'k' ( in highp float) +0:204 Branch: Return with expression +0:204 component-wise multiply ( temp highp float) +0:204 'Gl' ( temp highp float) +0:204 'Gv' ( temp highp float) +0:207 Function Definition: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:207 Function Parameters: +0:207 'index' ( in highp int) +0:207 'diffuseColor' ( in highp 3-component vector of float) +0:207 'specularColor' ( in highp 3-component vector of float) +0:207 'worldSpacePos' ( in highp 3-component vector of float) +0:207 'normal' ( in highp 3-component vector of float) +0:207 'shadowStrength' ( in highp float) +0:207 'shadowColor' ( in highp 3-component vector of float) +0:207 'camVector' ( in highp 3-component vector of float) +0:207 'roughness' ( in highp float) +0:? Sequence +0:210 Branch: Return with expression +0:210 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:213 Function Definition: TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void) +0:213 Function Parameters: +0:213 'diffuseContrib' ( inout highp 3-component vector of float) +0:213 'specularContrib' ( inout highp 3-component vector of float) +0:213 'shadowStrengthOut' ( inout highp float) +0:213 'index' ( in highp int) +0:213 'diffuseColor' ( in highp 3-component vector of float) +0:213 'specularColor' ( in highp 3-component vector of float) +0:213 'worldSpacePos' ( in highp 3-component vector of float) +0:213 'normal' ( in highp 3-component vector of float) +0:213 'shadowStrength' ( in highp float) +0:213 'shadowColor' ( in highp 3-component vector of float) +0:213 'camVector' ( in highp 3-component vector of float) +0:213 'roughness' ( in highp float) +0:215 Sequence +0:215 Sequence +0:215 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 'index' ( in highp int) +0:215 'diffuseColor' ( in highp 3-component vector of float) +0:215 'specularColor' ( in highp 3-component vector of float) +0:215 'worldSpacePos' ( in highp 3-component vector of float) +0:215 'normal' ( in highp 3-component vector of float) +0:215 'shadowStrength' ( in highp float) +0:215 'shadowColor' ( in highp 3-component vector of float) +0:215 'camVector' ( in highp 3-component vector of float) +0:215 'roughness' ( in highp float) +0:215 move second child to first child ( temp highp 3-component vector of float) +0:215 'diffuseContrib' ( inout highp 3-component vector of float) +0:215 diffuse: direct index for structure ( global highp 3-component vector of float) +0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 Constant: +0:215 0 (const int) +0:216 move second child to first child ( temp highp 3-component vector of float) +0:216 'specularContrib' ( inout highp 3-component vector of float) +0:216 specular: direct index for structure ( global highp 3-component vector of float) +0:216 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:216 Constant: +0:216 1 (const int) +0:217 move second child to first child ( temp highp float) +0:217 'shadowStrengthOut' ( inout highp float) +0:217 shadowStrength: direct index for structure ( global highp float) +0:217 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:217 Constant: +0:217 2 (const int) +0:220 Function Definition: TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void) +0:220 Function Parameters: +0:220 'diffuseContrib' ( inout highp 3-component vector of float) +0:220 'specularContrib' ( inout highp 3-component vector of float) +0:220 'index' ( in highp int) +0:220 'diffuseColor' ( in highp 3-component vector of float) +0:220 'specularColor' ( in highp 3-component vector of float) +0:220 'worldSpacePos' ( in highp 3-component vector of float) +0:220 'normal' ( in highp 3-component vector of float) +0:220 'shadowStrength' ( in highp float) +0:220 'shadowColor' ( in highp 3-component vector of float) +0:220 'camVector' ( in highp 3-component vector of float) +0:220 'roughness' ( in highp float) +0:222 Sequence +0:222 Sequence +0:222 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 'index' ( in highp int) +0:222 'diffuseColor' ( in highp 3-component vector of float) +0:222 'specularColor' ( in highp 3-component vector of float) +0:222 'worldSpacePos' ( in highp 3-component vector of float) +0:222 'normal' ( in highp 3-component vector of float) +0:222 'shadowStrength' ( in highp float) +0:222 'shadowColor' ( in highp 3-component vector of float) +0:222 'camVector' ( in highp 3-component vector of float) +0:222 'roughness' ( in highp float) +0:222 move second child to first child ( temp highp 3-component vector of float) +0:222 'diffuseContrib' ( inout highp 3-component vector of float) +0:222 diffuse: direct index for structure ( global highp 3-component vector of float) +0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 Constant: +0:222 0 (const int) +0:223 move second child to first child ( temp highp 3-component vector of float) +0:223 'specularContrib' ( inout highp 3-component vector of float) +0:223 specular: direct index for structure ( global highp 3-component vector of float) +0:223 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:223 Constant: +0:223 1 (const int) +0:226 Function Definition: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:226 Function Parameters: +0:226 'index' ( in highp int) +0:226 'diffuseColor' ( in highp 3-component vector of float) +0:226 'specularColor' ( in highp 3-component vector of float) +0:226 'normal' ( in highp 3-component vector of float) +0:226 'camVector' ( in highp 3-component vector of float) +0:226 'roughness' ( in highp float) +0:226 'ambientOcclusion' ( in highp float) +0:? Sequence +0:229 Branch: Return with expression +0:229 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:232 Function Definition: TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1; ( global void) +0:232 Function Parameters: +0:232 'diffuseContrib' ( inout highp 3-component vector of float) +0:232 'specularContrib' ( inout highp 3-component vector of float) +0:232 'index' ( in highp int) +0:232 'diffuseColor' ( in highp 3-component vector of float) +0:232 'specularColor' ( in highp 3-component vector of float) +0:232 'normal' ( in highp 3-component vector of float) +0:232 'camVector' ( in highp 3-component vector of float) +0:232 'roughness' ( in highp float) +0:232 'ambientOcclusion' ( in highp float) +0:234 Sequence +0:234 Sequence +0:234 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:234 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:234 Function Call: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:234 'index' ( in highp int) +0:234 'diffuseColor' ( in highp 3-component vector of float) +0:234 'specularColor' ( in highp 3-component vector of float) +0:234 'normal' ( in highp 3-component vector of float) +0:234 'camVector' ( in highp 3-component vector of float) +0:234 'roughness' ( in highp float) +0:234 'ambientOcclusion' ( in highp float) +0:235 move second child to first child ( temp highp 3-component vector of float) +0:235 'diffuseContrib' ( inout highp 3-component vector of float) +0:235 diffuse: direct index for structure ( global highp 3-component vector of float) +0:235 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:235 Constant: +0:235 0 (const int) +0:236 move second child to first child ( temp highp 3-component vector of float) +0:236 'specularContrib' ( inout highp 3-component vector of float) +0:236 specular: direct index for structure ( global highp 3-component vector of float) +0:236 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:236 Constant: +0:236 1 (const int) +0:239 Function Definition: TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:239 Function Parameters: +0:239 'index' ( in highp int) +0:239 'worldSpacePos' ( in highp 3-component vector of float) +0:239 'normal' ( in highp 3-component vector of float) +0:239 'shadowStrength' ( in highp float) +0:239 'shadowColor' ( in highp 3-component vector of float) +0:239 'camVector' ( in highp 3-component vector of float) +0:239 'shininess' ( in highp float) +0:239 'shininess2' ( in highp float) +0:? Sequence +0:242 switch +0:242 condition +0:242 'index' ( in highp int) +0:242 body +0:242 Sequence +0:244 default: +0:? Sequence +0:245 move second child to first child ( temp highp 3-component vector of float) +0:245 diffuse: direct index for structure ( global highp 3-component vector of float) +0:245 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:245 Constant: +0:245 0 (const int) +0:245 Constant: +0:245 0.000000 +0:245 0.000000 +0:245 0.000000 +0:246 move second child to first child ( temp highp 3-component vector of float) +0:246 specular: direct index for structure ( global highp 3-component vector of float) +0:246 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:246 Constant: +0:246 1 (const int) +0:246 Constant: +0:246 0.000000 +0:246 0.000000 +0:246 0.000000 +0:247 move second child to first child ( temp highp 3-component vector of float) +0:247 specular2: direct index for structure ( global highp 3-component vector of float) +0:247 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:247 Constant: +0:247 2 (const int) +0:247 Constant: +0:247 0.000000 +0:247 0.000000 +0:247 0.000000 +0:248 move second child to first child ( temp highp float) +0:248 shadowStrength: direct index for structure ( global highp float) +0:248 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:248 Constant: +0:248 3 (const int) +0:248 Constant: +0:248 0.000000 +0:249 Branch: Break +0:251 Branch: Return with expression +0:251 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:254 Function Definition: TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void) +0:254 Function Parameters: +0:254 'diffuseContrib' ( inout highp 3-component vector of float) +0:254 'specularContrib' ( inout highp 3-component vector of float) +0:254 'specularContrib2' ( inout highp 3-component vector of float) +0:254 'shadowStrengthOut' ( inout highp float) +0:254 'index' ( in highp int) +0:254 'worldSpacePos' ( in highp 3-component vector of float) +0:254 'normal' ( in highp 3-component vector of float) +0:254 'shadowStrength' ( in highp float) +0:254 'shadowColor' ( in highp 3-component vector of float) +0:254 'camVector' ( in highp 3-component vector of float) +0:254 'shininess' ( in highp float) +0:254 'shininess2' ( in highp float) +0:? Sequence +0:257 switch +0:257 condition +0:257 'index' ( in highp int) +0:257 body +0:257 Sequence +0:259 default: +0:? Sequence +0:260 move second child to first child ( temp highp 3-component vector of float) +0:260 diffuse: direct index for structure ( global highp 3-component vector of float) +0:260 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:260 Constant: +0:260 0 (const int) +0:260 Constant: +0:260 0.000000 +0:260 0.000000 +0:260 0.000000 +0:261 move second child to first child ( temp highp 3-component vector of float) +0:261 specular: direct index for structure ( global highp 3-component vector of float) +0:261 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:261 Constant: +0:261 1 (const int) +0:261 Constant: +0:261 0.000000 +0:261 0.000000 +0:261 0.000000 +0:262 move second child to first child ( temp highp 3-component vector of float) +0:262 specular2: direct index for structure ( global highp 3-component vector of float) +0:262 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:262 Constant: +0:262 2 (const int) +0:262 Constant: +0:262 0.000000 +0:262 0.000000 +0:262 0.000000 +0:263 move second child to first child ( temp highp float) +0:263 shadowStrength: direct index for structure ( global highp float) +0:263 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:263 Constant: +0:263 3 (const int) +0:263 Constant: +0:263 0.000000 +0:264 Branch: Break +0:266 move second child to first child ( temp highp 3-component vector of float) +0:266 'diffuseContrib' ( inout highp 3-component vector of float) +0:266 diffuse: direct index for structure ( global highp 3-component vector of float) +0:266 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:266 Constant: +0:266 0 (const int) +0:267 move second child to first child ( temp highp 3-component vector of float) +0:267 'specularContrib' ( inout highp 3-component vector of float) +0:267 specular: direct index for structure ( global highp 3-component vector of float) +0:267 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:267 Constant: +0:267 1 (const int) +0:268 move second child to first child ( temp highp 3-component vector of float) +0:268 'specularContrib2' ( inout highp 3-component vector of float) +0:268 specular2: direct index for structure ( global highp 3-component vector of float) +0:268 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:268 Constant: +0:268 2 (const int) +0:269 move second child to first child ( temp highp float) +0:269 'shadowStrengthOut' ( inout highp float) +0:269 shadowStrength: direct index for structure ( global highp float) +0:269 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:269 Constant: +0:269 3 (const int) +0:272 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void) +0:272 Function Parameters: +0:272 'diffuseContrib' ( inout highp 3-component vector of float) +0:272 'specularContrib' ( inout highp 3-component vector of float) +0:272 'specularContrib2' ( inout highp 3-component vector of float) +0:272 'index' ( in highp int) +0:272 'worldSpacePos' ( in highp 3-component vector of float) +0:272 'normal' ( in highp 3-component vector of float) +0:272 'shadowStrength' ( in highp float) +0:272 'shadowColor' ( in highp 3-component vector of float) +0:272 'camVector' ( in highp 3-component vector of float) +0:272 'shininess' ( in highp float) +0:272 'shininess2' ( in highp float) +0:? Sequence +0:275 switch +0:275 condition +0:275 'index' ( in highp int) +0:275 body +0:275 Sequence +0:277 default: +0:? Sequence +0:278 move second child to first child ( temp highp 3-component vector of float) +0:278 diffuse: direct index for structure ( global highp 3-component vector of float) +0:278 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:278 Constant: +0:278 0 (const int) +0:278 Constant: +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:279 move second child to first child ( temp highp 3-component vector of float) +0:279 specular: direct index for structure ( global highp 3-component vector of float) +0:279 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:279 Constant: +0:279 1 (const int) +0:279 Constant: +0:279 0.000000 +0:279 0.000000 +0:279 0.000000 +0:280 move second child to first child ( temp highp 3-component vector of float) +0:280 specular2: direct index for structure ( global highp 3-component vector of float) +0:280 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:280 Constant: +0:280 2 (const int) +0:280 Constant: +0:280 0.000000 +0:280 0.000000 +0:280 0.000000 +0:281 move second child to first child ( temp highp float) +0:281 shadowStrength: direct index for structure ( global highp float) +0:281 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:281 Constant: +0:281 3 (const int) +0:281 Constant: +0:281 0.000000 +0:282 Branch: Break +0:284 move second child to first child ( temp highp 3-component vector of float) +0:284 'diffuseContrib' ( inout highp 3-component vector of float) +0:284 diffuse: direct index for structure ( global highp 3-component vector of float) +0:284 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:284 Constant: +0:284 0 (const int) +0:285 move second child to first child ( temp highp 3-component vector of float) +0:285 'specularContrib' ( inout highp 3-component vector of float) +0:285 specular: direct index for structure ( global highp 3-component vector of float) +0:285 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:285 Constant: +0:285 1 (const int) +0:286 move second child to first child ( temp highp 3-component vector of float) +0:286 'specularContrib2' ( inout highp 3-component vector of float) +0:286 specular2: direct index for structure ( global highp 3-component vector of float) +0:286 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:286 Constant: +0:286 2 (const int) +0:289 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1; ( global void) +0:289 Function Parameters: +0:289 'diffuseContrib' ( inout highp 3-component vector of float) +0:289 'specularContrib' ( inout highp 3-component vector of float) +0:289 'index' ( in highp int) +0:289 'worldSpacePos' ( in highp 3-component vector of float) +0:289 'normal' ( in highp 3-component vector of float) +0:289 'shadowStrength' ( in highp float) +0:289 'shadowColor' ( in highp 3-component vector of float) +0:289 'camVector' ( in highp 3-component vector of float) +0:289 'shininess' ( in highp float) +0:? Sequence +0:292 switch +0:292 condition +0:292 'index' ( in highp int) +0:292 body +0:292 Sequence +0:294 default: +0:? Sequence +0:295 move second child to first child ( temp highp 3-component vector of float) +0:295 diffuse: direct index for structure ( global highp 3-component vector of float) +0:295 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:295 Constant: +0:295 0 (const int) +0:295 Constant: +0:295 0.000000 +0:295 0.000000 +0:295 0.000000 +0:296 move second child to first child ( temp highp 3-component vector of float) +0:296 specular: direct index for structure ( global highp 3-component vector of float) +0:296 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:296 Constant: +0:296 1 (const int) +0:296 Constant: +0:296 0.000000 +0:296 0.000000 +0:296 0.000000 +0:297 move second child to first child ( temp highp 3-component vector of float) +0:297 specular2: direct index for structure ( global highp 3-component vector of float) +0:297 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:297 Constant: +0:297 2 (const int) +0:297 Constant: +0:297 0.000000 +0:297 0.000000 +0:297 0.000000 +0:298 move second child to first child ( temp highp float) +0:298 shadowStrength: direct index for structure ( global highp float) +0:298 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:298 Constant: +0:298 3 (const int) +0:298 Constant: +0:298 0.000000 +0:299 Branch: Break +0:301 move second child to first child ( temp highp 3-component vector of float) +0:301 'diffuseContrib' ( inout highp 3-component vector of float) +0:301 diffuse: direct index for structure ( global highp 3-component vector of float) +0:301 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:301 Constant: +0:301 0 (const int) +0:302 move second child to first child ( temp highp 3-component vector of float) +0:302 'specularContrib' ( inout highp 3-component vector of float) +0:302 specular: direct index for structure ( global highp 3-component vector of float) +0:302 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:302 Constant: +0:302 1 (const int) +0:305 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1; ( global void) +0:305 Function Parameters: +0:305 'diffuseContrib' ( inout highp 3-component vector of float) +0:305 'specularContrib' ( inout highp 3-component vector of float) +0:305 'specularContrib2' ( inout highp 3-component vector of float) +0:305 'index' ( in highp int) +0:305 'worldSpacePos' ( in highp 3-component vector of float) +0:305 'normal' ( in highp 3-component vector of float) +0:305 'camVector' ( in highp 3-component vector of float) +0:305 'shininess' ( in highp float) +0:305 'shininess2' ( in highp float) +0:? Sequence +0:308 switch +0:308 condition +0:308 'index' ( in highp int) +0:308 body +0:308 Sequence +0:310 default: +0:? Sequence +0:311 move second child to first child ( temp highp 3-component vector of float) +0:311 diffuse: direct index for structure ( global highp 3-component vector of float) +0:311 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:311 Constant: +0:311 0 (const int) +0:311 Constant: +0:311 0.000000 +0:311 0.000000 +0:311 0.000000 +0:312 move second child to first child ( temp highp 3-component vector of float) +0:312 specular: direct index for structure ( global highp 3-component vector of float) +0:312 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:312 Constant: +0:312 1 (const int) +0:312 Constant: +0:312 0.000000 +0:312 0.000000 +0:312 0.000000 +0:313 move second child to first child ( temp highp 3-component vector of float) +0:313 specular2: direct index for structure ( global highp 3-component vector of float) +0:313 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:313 Constant: +0:313 2 (const int) +0:313 Constant: +0:313 0.000000 +0:313 0.000000 +0:313 0.000000 +0:314 move second child to first child ( temp highp float) +0:314 shadowStrength: direct index for structure ( global highp float) +0:314 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:314 Constant: +0:314 3 (const int) +0:314 Constant: +0:314 0.000000 +0:315 Branch: Break +0:317 move second child to first child ( temp highp 3-component vector of float) +0:317 'diffuseContrib' ( inout highp 3-component vector of float) +0:317 diffuse: direct index for structure ( global highp 3-component vector of float) +0:317 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:317 Constant: +0:317 0 (const int) +0:318 move second child to first child ( temp highp 3-component vector of float) +0:318 'specularContrib' ( inout highp 3-component vector of float) +0:318 specular: direct index for structure ( global highp 3-component vector of float) +0:318 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:318 Constant: +0:318 1 (const int) +0:319 move second child to first child ( temp highp 3-component vector of float) +0:319 'specularContrib2' ( inout highp 3-component vector of float) +0:319 specular2: direct index for structure ( global highp 3-component vector of float) +0:319 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:319 Constant: +0:319 2 (const int) +0:322 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1; ( global void) +0:322 Function Parameters: +0:322 'diffuseContrib' ( inout highp 3-component vector of float) +0:322 'specularContrib' ( inout highp 3-component vector of float) +0:322 'index' ( in highp int) +0:322 'worldSpacePos' ( in highp 3-component vector of float) +0:322 'normal' ( in highp 3-component vector of float) +0:322 'camVector' ( in highp 3-component vector of float) +0:322 'shininess' ( in highp float) +0:? Sequence +0:325 switch +0:325 condition +0:325 'index' ( in highp int) +0:325 body +0:325 Sequence +0:327 default: +0:? Sequence +0:328 move second child to first child ( temp highp 3-component vector of float) +0:328 diffuse: direct index for structure ( global highp 3-component vector of float) +0:328 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:328 Constant: +0:328 0 (const int) +0:328 Constant: +0:328 0.000000 +0:328 0.000000 +0:328 0.000000 +0:329 move second child to first child ( temp highp 3-component vector of float) +0:329 specular: direct index for structure ( global highp 3-component vector of float) +0:329 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:329 Constant: +0:329 1 (const int) +0:329 Constant: +0:329 0.000000 +0:329 0.000000 +0:329 0.000000 +0:330 move second child to first child ( temp highp 3-component vector of float) +0:330 specular2: direct index for structure ( global highp 3-component vector of float) +0:330 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:330 Constant: +0:330 2 (const int) +0:330 Constant: +0:330 0.000000 +0:330 0.000000 +0:330 0.000000 +0:331 move second child to first child ( temp highp float) +0:331 shadowStrength: direct index for structure ( global highp float) +0:331 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:331 Constant: +0:331 3 (const int) +0:331 Constant: +0:331 0.000000 +0:332 Branch: Break +0:334 move second child to first child ( temp highp 3-component vector of float) +0:334 'diffuseContrib' ( inout highp 3-component vector of float) +0:334 diffuse: direct index for structure ( global highp 3-component vector of float) +0:334 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:334 Constant: +0:334 0 (const int) +0:335 move second child to first child ( temp highp 3-component vector of float) +0:335 'specularContrib' ( inout highp 3-component vector of float) +0:335 specular: direct index for structure ( global highp 3-component vector of float) +0:335 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:335 Constant: +0:335 1 (const int) +0:338 Function Definition: TDLighting(vf3;i1;vf3;vf3; ( global void) +0:338 Function Parameters: +0:338 'diffuseContrib' ( inout highp 3-component vector of float) +0:338 'index' ( in highp int) +0:338 'worldSpacePos' ( in highp 3-component vector of float) +0:338 'normal' ( in highp 3-component vector of float) +0:? Sequence +0:341 switch +0:341 condition +0:341 'index' ( in highp int) +0:341 body +0:341 Sequence +0:343 default: +0:? Sequence +0:344 move second child to first child ( temp highp 3-component vector of float) +0:344 diffuse: direct index for structure ( global highp 3-component vector of float) +0:344 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:344 Constant: +0:344 0 (const int) +0:344 Constant: +0:344 0.000000 +0:344 0.000000 +0:344 0.000000 +0:345 move second child to first child ( temp highp 3-component vector of float) +0:345 specular: direct index for structure ( global highp 3-component vector of float) +0:345 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:345 Constant: +0:345 1 (const int) +0:345 Constant: +0:345 0.000000 +0:345 0.000000 +0:345 0.000000 +0:346 move second child to first child ( temp highp 3-component vector of float) +0:346 specular2: direct index for structure ( global highp 3-component vector of float) +0:346 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:346 Constant: +0:346 2 (const int) +0:346 Constant: +0:346 0.000000 +0:346 0.000000 +0:346 0.000000 +0:347 move second child to first child ( temp highp float) +0:347 shadowStrength: direct index for structure ( global highp float) +0:347 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:347 Constant: +0:347 3 (const int) +0:347 Constant: +0:347 0.000000 +0:348 Branch: Break +0:350 move second child to first child ( temp highp 3-component vector of float) +0:350 'diffuseContrib' ( inout highp 3-component vector of float) +0:350 diffuse: direct index for structure ( global highp 3-component vector of float) +0:350 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:350 Constant: +0:350 0 (const int) +0:353 Function Definition: TDLighting(vf3;i1;vf3;vf3;f1;vf3; ( global void) +0:353 Function Parameters: +0:353 'diffuseContrib' ( inout highp 3-component vector of float) +0:353 'index' ( in highp int) +0:353 'worldSpacePos' ( in highp 3-component vector of float) +0:353 'normal' ( in highp 3-component vector of float) +0:353 'shadowStrength' ( in highp float) +0:353 'shadowColor' ( in highp 3-component vector of float) +0:? Sequence +0:356 switch +0:356 condition +0:356 'index' ( in highp int) +0:356 body +0:356 Sequence +0:358 default: +0:? Sequence +0:359 move second child to first child ( temp highp 3-component vector of float) +0:359 diffuse: direct index for structure ( global highp 3-component vector of float) +0:359 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:359 Constant: +0:359 0 (const int) +0:359 Constant: +0:359 0.000000 +0:359 0.000000 +0:359 0.000000 +0:360 move second child to first child ( temp highp 3-component vector of float) +0:360 specular: direct index for structure ( global highp 3-component vector of float) +0:360 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:360 Constant: +0:360 1 (const int) +0:360 Constant: +0:360 0.000000 +0:360 0.000000 +0:360 0.000000 +0:361 move second child to first child ( temp highp 3-component vector of float) +0:361 specular2: direct index for structure ( global highp 3-component vector of float) +0:361 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:361 Constant: +0:361 2 (const int) +0:361 Constant: +0:361 0.000000 +0:361 0.000000 +0:361 0.000000 +0:362 move second child to first child ( temp highp float) +0:362 shadowStrength: direct index for structure ( global highp float) +0:362 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:362 Constant: +0:362 3 (const int) +0:362 Constant: +0:362 0.000000 +0:363 Branch: Break +0:365 move second child to first child ( temp highp 3-component vector of float) +0:365 'diffuseContrib' ( inout highp 3-component vector of float) +0:365 diffuse: direct index for structure ( global highp 3-component vector of float) +0:365 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:365 Constant: +0:365 0 (const int) +0:367 Function Definition: TDProjMap(i1;vf3;vf4; ( global highp 4-component vector of float) +0:367 Function Parameters: +0:367 'index' ( in highp int) +0:367 'worldSpacePos' ( in highp 3-component vector of float) +0:367 'defaultColor' ( in highp 4-component vector of float) +0:368 Sequence +0:368 switch +0:368 condition +0:368 'index' ( in highp int) +0:368 body +0:368 Sequence +0:370 default: +0:? Sequence +0:370 Branch: Return with expression +0:370 'defaultColor' ( in highp 4-component vector of float) +0:373 Function Definition: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float) +0:373 Function Parameters: +0:373 'color' ( in highp 4-component vector of float) +0:373 'lightingSpacePosition' ( in highp 3-component vector of float) +0:373 'cameraIndex' ( in highp int) +0:374 Sequence +0:374 switch +0:374 condition +0:374 'cameraIndex' ( in highp int) +0:374 body +0:374 Sequence +0:375 default: +0:376 case: with expression +0:376 Constant: +0:376 0 (const int) +0:? Sequence +0:378 Sequence +0:378 Branch: Return with expression +0:378 'color' ( in highp 4-component vector of float) +0:382 Function Definition: TDFog(vf4;vf3; ( global highp 4-component vector of float) +0:382 Function Parameters: +0:382 'color' ( in highp 4-component vector of float) +0:382 'lightingSpacePosition' ( in highp 3-component vector of float) +0:384 Sequence +0:384 Branch: Return with expression +0:384 Function Call: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float) +0:384 'color' ( in highp 4-component vector of float) +0:384 'lightingSpacePosition' ( in highp 3-component vector of float) +0:384 Constant: +0:384 0 (const int) +0:386 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float) +0:386 Function Parameters: +0:386 'index' ( in highp int) +0:386 't' ( in highp 3-component vector of float) +0:? Sequence +0:388 Sequence +0:388 move second child to first child ( temp highp int) +0:388 'coord' ( temp highp int) +0:388 'index' ( in highp int) +0:389 Sequence +0:389 move second child to first child ( temp highp 4-component vector of float) +0:389 'samp' ( temp highp 4-component vector of float) +0:389 textureFetch ( global highp 4-component vector of float) +0:389 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:389 'coord' ( temp highp int) +0:390 move second child to first child ( temp highp float) +0:390 direct index ( temp highp float) +0:390 'v' ( temp highp 3-component vector of float) +0:390 Constant: +0:390 0 (const int) +0:390 direct index ( temp highp float) +0:390 't' ( in highp 3-component vector of float) +0:390 Constant: +0:390 0 (const int) +0:391 move second child to first child ( temp highp float) +0:391 direct index ( temp highp float) +0:391 'v' ( temp highp 3-component vector of float) +0:391 Constant: +0:391 1 (const int) +0:391 direct index ( temp highp float) +0:391 't' ( in highp 3-component vector of float) +0:391 Constant: +0:391 1 (const int) +0:392 move second child to first child ( temp highp float) +0:392 direct index ( temp highp float) +0:392 'v' ( temp highp 3-component vector of float) +0:392 Constant: +0:392 2 (const int) +0:392 direct index ( temp highp float) +0:392 'samp' ( temp highp 4-component vector of float) +0:392 Constant: +0:392 0 (const int) +0:393 move second child to first child ( temp highp 3-component vector of float) +0:393 vector swizzle ( temp highp 3-component vector of float) +0:393 't' ( in highp 3-component vector of float) +0:393 Sequence +0:393 Constant: +0:393 0 (const int) +0:393 Constant: +0:393 1 (const int) +0:393 Constant: +0:393 2 (const int) +0:393 vector swizzle ( temp highp 3-component vector of float) +0:393 'v' ( temp highp 3-component vector of float) +0:393 Sequence +0:393 Constant: +0:393 0 (const int) +0:393 Constant: +0:393 1 (const int) +0:393 Constant: +0:393 2 (const int) +0:394 Branch: Return with expression +0:394 't' ( in highp 3-component vector of float) +0:396 Function Definition: TDInstanceActive(i1; ( global bool) +0:396 Function Parameters: +0:396 'index' ( in highp int) +0:397 Sequence +0:397 subtract second child into first child ( temp highp int) +0:397 'index' ( in highp int) +0:397 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:397 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:397 Constant: +0:397 0 (const uint) +0:399 Sequence +0:399 move second child to first child ( temp highp int) +0:399 'coord' ( temp highp int) +0:399 'index' ( in highp int) +0:400 Sequence +0:400 move second child to first child ( temp highp 4-component vector of float) +0:400 'samp' ( temp highp 4-component vector of float) +0:400 textureFetch ( global highp 4-component vector of float) +0:400 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:400 'coord' ( temp highp int) +0:401 move second child to first child ( temp highp float) +0:401 'v' ( temp highp float) +0:401 direct index ( temp highp float) +0:401 'samp' ( temp highp 4-component vector of float) +0:401 Constant: +0:401 0 (const int) +0:402 Branch: Return with expression +0:402 Compare Not Equal ( temp bool) +0:402 'v' ( temp highp float) +0:402 Constant: +0:402 0.000000 +0:404 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:404 Function Parameters: +0:404 'index' ( in highp int) +0:404 'instanceActive' ( out bool) +0:405 Sequence +0:405 Sequence +0:405 move second child to first child ( temp highp int) +0:405 'origIndex' ( temp highp int) +0:405 'index' ( in highp int) +0:406 subtract second child into first child ( temp highp int) +0:406 'index' ( in highp int) +0:406 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:406 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:406 Constant: +0:406 0 (const uint) +0:408 Sequence +0:408 move second child to first child ( temp highp int) +0:408 'coord' ( temp highp int) +0:408 'index' ( in highp int) +0:409 Sequence +0:409 move second child to first child ( temp highp 4-component vector of float) +0:409 'samp' ( temp highp 4-component vector of float) +0:409 textureFetch ( global highp 4-component vector of float) +0:409 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:409 'coord' ( temp highp int) +0:410 move second child to first child ( temp highp float) +0:410 direct index ( temp highp float) +0:410 'v' ( temp highp 3-component vector of float) +0:410 Constant: +0:410 0 (const int) +0:410 direct index ( temp highp float) +0:410 'samp' ( temp highp 4-component vector of float) +0:410 Constant: +0:410 1 (const int) +0:411 move second child to first child ( temp highp float) +0:411 direct index ( temp highp float) +0:411 'v' ( temp highp 3-component vector of float) +0:411 Constant: +0:411 1 (const int) +0:411 direct index ( temp highp float) +0:411 'samp' ( temp highp 4-component vector of float) +0:411 Constant: +0:411 2 (const int) +0:412 move second child to first child ( temp highp float) +0:412 direct index ( temp highp float) +0:412 'v' ( temp highp 3-component vector of float) +0:412 Constant: +0:412 2 (const int) +0:412 direct index ( temp highp float) +0:412 'samp' ( temp highp 4-component vector of float) +0:412 Constant: +0:412 3 (const int) +0:413 move second child to first child ( temp bool) +0:413 'instanceActive' ( out bool) +0:413 Compare Not Equal ( temp bool) +0:413 direct index ( temp highp float) +0:413 'samp' ( temp highp 4-component vector of float) +0:413 Constant: +0:413 0 (const int) +0:413 Constant: +0:413 0.000000 +0:414 Branch: Return with expression +0:414 'v' ( temp highp 3-component vector of float) +0:416 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float) +0:416 Function Parameters: +0:416 'index' ( in highp int) +0:417 Sequence +0:417 subtract second child into first child ( temp highp int) +0:417 'index' ( in highp int) +0:417 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:417 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:417 Constant: +0:417 0 (const uint) +0:419 Sequence +0:419 move second child to first child ( temp highp int) +0:419 'coord' ( temp highp int) +0:419 'index' ( in highp int) +0:420 Sequence +0:420 move second child to first child ( temp highp 4-component vector of float) +0:420 'samp' ( temp highp 4-component vector of float) +0:420 textureFetch ( global highp 4-component vector of float) +0:420 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:420 'coord' ( temp highp int) +0:421 move second child to first child ( temp highp float) +0:421 direct index ( temp highp float) +0:421 'v' ( temp highp 3-component vector of float) +0:421 Constant: +0:421 0 (const int) +0:421 direct index ( temp highp float) +0:421 'samp' ( temp highp 4-component vector of float) +0:421 Constant: +0:421 1 (const int) +0:422 move second child to first child ( temp highp float) +0:422 direct index ( temp highp float) +0:422 'v' ( temp highp 3-component vector of float) +0:422 Constant: +0:422 1 (const int) +0:422 direct index ( temp highp float) +0:422 'samp' ( temp highp 4-component vector of float) +0:422 Constant: +0:422 2 (const int) +0:423 move second child to first child ( temp highp float) +0:423 direct index ( temp highp float) +0:423 'v' ( temp highp 3-component vector of float) +0:423 Constant: +0:423 2 (const int) +0:423 direct index ( temp highp float) +0:423 'samp' ( temp highp 4-component vector of float) +0:423 Constant: +0:423 3 (const int) +0:424 Branch: Return with expression +0:424 'v' ( temp highp 3-component vector of float) +0:426 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float) +0:426 Function Parameters: +0:426 'index' ( in highp int) +0:427 Sequence +0:427 subtract second child into first child ( temp highp int) +0:427 'index' ( in highp int) +0:427 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:427 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:427 Constant: +0:427 0 (const uint) +0:428 Sequence +0:428 move second child to first child ( temp highp 3-component vector of float) +0:428 'v' ( temp highp 3-component vector of float) +0:428 Constant: +0:428 0.000000 +0:428 0.000000 +0:428 0.000000 +0:429 Sequence +0:429 move second child to first child ( temp highp 3X3 matrix of float) +0:429 'm' ( temp highp 3X3 matrix of float) +0:429 Constant: +0:429 1.000000 +0:429 0.000000 +0:429 0.000000 +0:429 0.000000 +0:429 1.000000 +0:429 0.000000 +0:429 0.000000 +0:429 0.000000 +0:429 1.000000 +0:433 Branch: Return with expression +0:433 'm' ( temp highp 3X3 matrix of float) +0:435 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float) +0:435 Function Parameters: +0:435 'index' ( in highp int) +0:436 Sequence +0:436 subtract second child into first child ( temp highp int) +0:436 'index' ( in highp int) +0:436 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:436 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:436 Constant: +0:436 0 (const uint) +0:437 Sequence +0:437 move second child to first child ( temp highp 3-component vector of float) +0:437 'v' ( temp highp 3-component vector of float) +0:437 Constant: +0:437 1.000000 +0:437 1.000000 +0:437 1.000000 +0:438 Branch: Return with expression +0:438 'v' ( temp highp 3-component vector of float) +0:440 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float) +0:440 Function Parameters: +0:440 'index' ( in highp int) +0:441 Sequence +0:441 subtract second child into first child ( temp highp int) +0:441 'index' ( in highp int) +0:441 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:441 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:441 Constant: +0:441 0 (const uint) +0:442 Sequence +0:442 move second child to first child ( temp highp 3-component vector of float) +0:442 'v' ( temp highp 3-component vector of float) +0:442 Constant: +0:442 0.000000 +0:442 0.000000 +0:442 0.000000 +0:443 Branch: Return with expression +0:443 'v' ( temp highp 3-component vector of float) +0:445 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float) +0:445 Function Parameters: +0:445 'index' ( in highp int) +0:446 Sequence +0:446 subtract second child into first child ( temp highp int) +0:446 'index' ( in highp int) +0:446 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:446 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:446 Constant: +0:446 0 (const uint) +0:447 Sequence +0:447 move second child to first child ( temp highp 3-component vector of float) +0:447 'v' ( temp highp 3-component vector of float) +0:447 Constant: +0:447 0.000000 +0:447 0.000000 +0:447 1.000000 +0:448 Branch: Return with expression +0:448 'v' ( temp highp 3-component vector of float) +0:450 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float) +0:450 Function Parameters: +0:450 'index' ( in highp int) +0:451 Sequence +0:451 subtract second child into first child ( temp highp int) +0:451 'index' ( in highp int) +0:451 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:451 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:451 Constant: +0:451 0 (const uint) +0:452 Sequence +0:452 move second child to first child ( temp highp 3-component vector of float) +0:452 'v' ( temp highp 3-component vector of float) +0:452 Constant: +0:452 0.000000 +0:452 1.000000 +0:452 0.000000 +0:453 Branch: Return with expression +0:453 'v' ( temp highp 3-component vector of float) +0:455 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:455 Function Parameters: +0:455 'id' ( in highp int) +0:456 Sequence +0:456 Sequence +0:456 move second child to first child ( temp bool) +0:456 'instanceActive' ( temp bool) +0:456 Constant: +0:456 true (const bool) +0:457 Sequence +0:457 move second child to first child ( temp highp 3-component vector of float) +0:457 't' ( temp highp 3-component vector of float) +0:457 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:457 'id' ( in highp int) +0:457 'instanceActive' ( temp bool) +0:458 Test condition and select ( temp void) +0:458 Condition +0:458 Negate conditional ( temp bool) +0:458 'instanceActive' ( temp bool) +0:458 true case +0:460 Sequence +0:460 Branch: Return with expression +0:460 Constant: +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:462 Sequence +0:462 move second child to first child ( temp highp 4X4 matrix of float) +0:462 'm' ( temp highp 4X4 matrix of float) +0:462 Constant: +0:462 1.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 1.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 1.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 1.000000 +0:464 Sequence +0:464 Sequence +0:464 move second child to first child ( temp highp 3-component vector of float) +0:464 'tt' ( temp highp 3-component vector of float) +0:464 't' ( temp highp 3-component vector of float) +0:465 add second child into first child ( temp highp float) +0:465 direct index ( temp highp float) +0:465 direct index ( temp highp 4-component vector of float) +0:465 'm' ( temp highp 4X4 matrix of float) +0:465 Constant: +0:465 3 (const int) +0:465 Constant: +0:465 0 (const int) +0:465 component-wise multiply ( temp highp float) +0:465 direct index ( temp highp float) +0:465 direct index ( temp highp 4-component vector of float) +0:465 'm' ( temp highp 4X4 matrix of float) +0:465 Constant: +0:465 0 (const int) +0:465 Constant: +0:465 0 (const int) +0:465 direct index ( temp highp float) +0:465 'tt' ( temp highp 3-component vector of float) +0:465 Constant: +0:465 0 (const int) +0:466 add second child into first child ( temp highp float) +0:466 direct index ( temp highp float) +0:466 direct index ( temp highp 4-component vector of float) +0:466 'm' ( temp highp 4X4 matrix of float) +0:466 Constant: +0:466 3 (const int) +0:466 Constant: +0:466 1 (const int) +0:466 component-wise multiply ( temp highp float) +0:466 direct index ( temp highp float) +0:466 direct index ( temp highp 4-component vector of float) +0:466 'm' ( temp highp 4X4 matrix of float) +0:466 Constant: +0:466 0 (const int) +0:466 Constant: +0:466 1 (const int) +0:466 direct index ( temp highp float) +0:466 'tt' ( temp highp 3-component vector of float) +0:466 Constant: +0:466 0 (const int) +0:467 add second child into first child ( temp highp float) +0:467 direct index ( temp highp float) +0:467 direct index ( temp highp 4-component vector of float) +0:467 'm' ( temp highp 4X4 matrix of float) +0:467 Constant: +0:467 3 (const int) +0:467 Constant: +0:467 2 (const int) +0:467 component-wise multiply ( temp highp float) +0:467 direct index ( temp highp float) +0:467 direct index ( temp highp 4-component vector of float) +0:467 'm' ( temp highp 4X4 matrix of float) +0:467 Constant: +0:467 0 (const int) +0:467 Constant: +0:467 2 (const int) +0:467 direct index ( temp highp float) +0:467 'tt' ( temp highp 3-component vector of float) +0:467 Constant: +0:467 0 (const int) +0:468 add second child into first child ( temp highp float) +0:468 direct index ( temp highp float) +0:468 direct index ( temp highp 4-component vector of float) +0:468 'm' ( temp highp 4X4 matrix of float) +0:468 Constant: +0:468 3 (const int) +0:468 Constant: +0:468 3 (const int) +0:468 component-wise multiply ( temp highp float) +0:468 direct index ( temp highp float) +0:468 direct index ( temp highp 4-component vector of float) +0:468 'm' ( temp highp 4X4 matrix of float) +0:468 Constant: +0:468 0 (const int) +0:468 Constant: +0:468 3 (const int) +0:468 direct index ( temp highp float) +0:468 'tt' ( temp highp 3-component vector of float) +0:468 Constant: +0:468 0 (const int) +0:469 add second child into first child ( temp highp float) +0:469 direct index ( temp highp float) +0:469 direct index ( temp highp 4-component vector of float) +0:469 'm' ( temp highp 4X4 matrix of float) +0:469 Constant: +0:469 3 (const int) +0:469 Constant: +0:469 0 (const int) +0:469 component-wise multiply ( temp highp float) +0:469 direct index ( temp highp float) +0:469 direct index ( temp highp 4-component vector of float) +0:469 'm' ( temp highp 4X4 matrix of float) +0:469 Constant: +0:469 1 (const int) +0:469 Constant: +0:469 0 (const int) +0:469 direct index ( temp highp float) +0:469 'tt' ( temp highp 3-component vector of float) +0:469 Constant: +0:469 1 (const int) +0:470 add second child into first child ( temp highp float) +0:470 direct index ( temp highp float) +0:470 direct index ( temp highp 4-component vector of float) +0:470 'm' ( temp highp 4X4 matrix of float) +0:470 Constant: +0:470 3 (const int) +0:470 Constant: +0:470 1 (const int) +0:470 component-wise multiply ( temp highp float) +0:470 direct index ( temp highp float) +0:470 direct index ( temp highp 4-component vector of float) +0:470 'm' ( temp highp 4X4 matrix of float) +0:470 Constant: +0:470 1 (const int) +0:470 Constant: +0:470 1 (const int) +0:470 direct index ( temp highp float) +0:470 'tt' ( temp highp 3-component vector of float) +0:470 Constant: +0:470 1 (const int) +0:471 add second child into first child ( temp highp float) +0:471 direct index ( temp highp float) +0:471 direct index ( temp highp 4-component vector of float) +0:471 'm' ( temp highp 4X4 matrix of float) +0:471 Constant: +0:471 3 (const int) +0:471 Constant: +0:471 2 (const int) +0:471 component-wise multiply ( temp highp float) +0:471 direct index ( temp highp float) +0:471 direct index ( temp highp 4-component vector of float) +0:471 'm' ( temp highp 4X4 matrix of float) +0:471 Constant: +0:471 1 (const int) +0:471 Constant: +0:471 2 (const int) +0:471 direct index ( temp highp float) +0:471 'tt' ( temp highp 3-component vector of float) +0:471 Constant: +0:471 1 (const int) +0:472 add second child into first child ( temp highp float) +0:472 direct index ( temp highp float) +0:472 direct index ( temp highp 4-component vector of float) +0:472 'm' ( temp highp 4X4 matrix of float) +0:472 Constant: +0:472 3 (const int) +0:472 Constant: +0:472 3 (const int) +0:472 component-wise multiply ( temp highp float) +0:472 direct index ( temp highp float) +0:472 direct index ( temp highp 4-component vector of float) +0:472 'm' ( temp highp 4X4 matrix of float) +0:472 Constant: +0:472 1 (const int) +0:472 Constant: +0:472 3 (const int) +0:472 direct index ( temp highp float) +0:472 'tt' ( temp highp 3-component vector of float) +0:472 Constant: +0:472 1 (const int) +0:473 add second child into first child ( temp highp float) +0:473 direct index ( temp highp float) +0:473 direct index ( temp highp 4-component vector of float) +0:473 'm' ( temp highp 4X4 matrix of float) +0:473 Constant: +0:473 3 (const int) +0:473 Constant: +0:473 0 (const int) +0:473 component-wise multiply ( temp highp float) +0:473 direct index ( temp highp float) +0:473 direct index ( temp highp 4-component vector of float) +0:473 'm' ( temp highp 4X4 matrix of float) +0:473 Constant: +0:473 2 (const int) +0:473 Constant: +0:473 0 (const int) +0:473 direct index ( temp highp float) +0:473 'tt' ( temp highp 3-component vector of float) +0:473 Constant: +0:473 2 (const int) +0:474 add second child into first child ( temp highp float) +0:474 direct index ( temp highp float) +0:474 direct index ( temp highp 4-component vector of float) +0:474 'm' ( temp highp 4X4 matrix of float) +0:474 Constant: +0:474 3 (const int) +0:474 Constant: +0:474 1 (const int) +0:474 component-wise multiply ( temp highp float) +0:474 direct index ( temp highp float) +0:474 direct index ( temp highp 4-component vector of float) +0:474 'm' ( temp highp 4X4 matrix of float) +0:474 Constant: +0:474 2 (const int) +0:474 Constant: +0:474 1 (const int) +0:474 direct index ( temp highp float) +0:474 'tt' ( temp highp 3-component vector of float) +0:474 Constant: +0:474 2 (const int) +0:475 add second child into first child ( temp highp float) +0:475 direct index ( temp highp float) +0:475 direct index ( temp highp 4-component vector of float) +0:475 'm' ( temp highp 4X4 matrix of float) +0:475 Constant: +0:475 3 (const int) +0:475 Constant: +0:475 2 (const int) +0:475 component-wise multiply ( temp highp float) +0:475 direct index ( temp highp float) +0:475 direct index ( temp highp 4-component vector of float) +0:475 'm' ( temp highp 4X4 matrix of float) +0:475 Constant: +0:475 2 (const int) +0:475 Constant: +0:475 2 (const int) +0:475 direct index ( temp highp float) +0:475 'tt' ( temp highp 3-component vector of float) +0:475 Constant: +0:475 2 (const int) +0:476 add second child into first child ( temp highp float) +0:476 direct index ( temp highp float) +0:476 direct index ( temp highp 4-component vector of float) +0:476 'm' ( temp highp 4X4 matrix of float) +0:476 Constant: +0:476 3 (const int) +0:476 Constant: +0:476 3 (const int) +0:476 component-wise multiply ( temp highp float) +0:476 direct index ( temp highp float) +0:476 direct index ( temp highp 4-component vector of float) +0:476 'm' ( temp highp 4X4 matrix of float) +0:476 Constant: +0:476 2 (const int) +0:476 Constant: +0:476 3 (const int) +0:476 direct index ( temp highp float) +0:476 'tt' ( temp highp 3-component vector of float) +0:476 Constant: +0:476 2 (const int) +0:478 Branch: Return with expression +0:478 'm' ( temp highp 4X4 matrix of float) +0:480 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:480 Function Parameters: +0:480 'id' ( in highp int) +0:481 Sequence +0:481 Sequence +0:481 move second child to first child ( temp highp 3X3 matrix of float) +0:481 'm' ( temp highp 3X3 matrix of float) +0:481 Constant: +0:481 1.000000 +0:481 0.000000 +0:481 0.000000 +0:481 0.000000 +0:481 1.000000 +0:481 0.000000 +0:481 0.000000 +0:481 0.000000 +0:481 1.000000 +0:482 Branch: Return with expression +0:482 'm' ( temp highp 3X3 matrix of float) +0:484 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float) +0:484 Function Parameters: +0:484 'id' ( in highp int) +0:485 Sequence +0:485 Sequence +0:485 move second child to first child ( temp highp 3X3 matrix of float) +0:485 'm' ( temp highp 3X3 matrix of float) +0:485 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:485 'id' ( in highp int) +0:486 Branch: Return with expression +0:486 'm' ( temp highp 3X3 matrix of float) +0:488 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float) +0:488 Function Parameters: +0:488 'index' ( in highp int) +0:488 'curColor' ( in highp 4-component vector of float) +0:489 Sequence +0:489 subtract second child into first child ( temp highp int) +0:489 'index' ( in highp int) +0:489 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:489 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:489 Constant: +0:489 0 (const uint) +0:491 Sequence +0:491 move second child to first child ( temp highp int) +0:491 'coord' ( temp highp int) +0:491 'index' ( in highp int) +0:492 Sequence +0:492 move second child to first child ( temp highp 4-component vector of float) +0:492 'samp' ( temp highp 4-component vector of float) +0:492 textureFetch ( global highp 4-component vector of float) +0:492 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) +0:492 'coord' ( temp highp int) +0:493 move second child to first child ( temp highp float) +0:493 direct index ( temp highp float) +0:493 'v' ( temp highp 4-component vector of float) +0:493 Constant: +0:493 0 (const int) +0:493 direct index ( temp highp float) +0:493 'samp' ( temp highp 4-component vector of float) +0:493 Constant: +0:493 0 (const int) +0:494 move second child to first child ( temp highp float) +0:494 direct index ( temp highp float) +0:494 'v' ( temp highp 4-component vector of float) +0:494 Constant: +0:494 1 (const int) +0:494 direct index ( temp highp float) +0:494 'samp' ( temp highp 4-component vector of float) +0:494 Constant: +0:494 1 (const int) +0:495 move second child to first child ( temp highp float) +0:495 direct index ( temp highp float) +0:495 'v' ( temp highp 4-component vector of float) +0:495 Constant: +0:495 2 (const int) +0:495 direct index ( temp highp float) +0:495 'samp' ( temp highp 4-component vector of float) +0:495 Constant: +0:495 2 (const int) +0:496 move second child to first child ( temp highp float) +0:496 direct index ( temp highp float) +0:496 'v' ( temp highp 4-component vector of float) +0:496 Constant: +0:496 3 (const int) +0:496 Constant: +0:496 1.000000 +0:497 move second child to first child ( temp highp float) +0:497 direct index ( temp highp float) +0:497 'curColor' ( in highp 4-component vector of float) +0:497 Constant: +0:497 0 (const int) +0:497 direct index ( temp highp float) +0:497 'v' ( temp highp 4-component vector of float) +0:497 Constant: +0:497 0 (const int) +0:499 move second child to first child ( temp highp float) +0:499 direct index ( temp highp float) +0:499 'curColor' ( in highp 4-component vector of float) +0:499 Constant: +0:499 1 (const int) +0:499 direct index ( temp highp float) +0:499 'v' ( temp highp 4-component vector of float) +0:499 Constant: +0:499 1 (const int) +0:501 move second child to first child ( temp highp float) +0:501 direct index ( temp highp float) +0:501 'curColor' ( in highp 4-component vector of float) +0:501 Constant: +0:501 2 (const int) +0:501 direct index ( temp highp float) +0:501 'v' ( temp highp 4-component vector of float) +0:501 Constant: +0:501 2 (const int) +0:503 Branch: Return with expression +0:503 'curColor' ( in highp 4-component vector of float) +0:? Linker Objects +0:? 'sTDNoiseMap' ( uniform highp sampler2D) +0:? 'sTDSineLookup' ( uniform highp sampler1D) +0:? 'sTDWhite2D' ( uniform highp sampler2D) +0:? 'sTDWhite3D' ( uniform highp sampler3D) +0:? 'sTDWhite2DArray' ( uniform highp sampler2DArray) +0:? 'sTDWhiteCube' ( uniform highp samplerCube) +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights}) +0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs}) +0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:? 'anon@4' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos}) +0:? 'anon@5' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral}) +0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) + +vk.relaxed.stagelink.0.2.frag +Shader version: 460 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: TDOutputSwizzle(vf4; ( global highp 4-component vector of float) +0:2 Function Parameters: +0:2 'c' ( in highp 4-component vector of float) +0:4 Sequence +0:4 Branch: Return with expression +0:4 vector swizzle ( temp highp 4-component vector of float) +0:4 'c' ( in highp 4-component vector of float) +0:4 Sequence +0:4 Constant: +0:4 0 (const int) +0:4 Constant: +0:4 1 (const int) +0:4 Constant: +0:4 2 (const int) +0:4 Constant: +0:4 3 (const int) +0:6 Function Definition: TDOutputSwizzle(vu4; ( global highp 4-component vector of uint) +0:6 Function Parameters: +0:6 'c' ( in highp 4-component vector of uint) +0:8 Sequence +0:8 Branch: Return with expression +0:8 vector swizzle ( temp highp 4-component vector of uint) +0:8 'c' ( in highp 4-component vector of uint) +0:8 Sequence +0:8 Constant: +0:8 0 (const int) +0:8 Constant: +0:8 1 (const int) +0:8 Constant: +0:8 2 (const int) +0:8 Constant: +0:8 3 (const int) +0:? Linker Objects + + +Linked vertex stage: + + +Linked fragment stage: + + +Shader version: 460 +0:? Sequence +0:11 Function Definition: main( ( global void) +0:11 Function Parameters: +0:15 Sequence +0:15 Sequence +0:15 Sequence +0:15 move second child to first child ( temp highp 3-component vector of float) +0:15 'texcoord' ( temp highp 3-component vector of float) +0:15 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float) +0:15 direct index (layout( location=3) temp highp 3-component vector of float) +0:15 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float) +0:15 Constant: +0:15 0 (const int) +0:16 move second child to first child ( temp highp 3-component vector of float) +0:16 vector swizzle ( temp highp 3-component vector of float) +0:16 texCoord0: direct index for structure ( out highp 3-component vector of float) +0:16 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:16 Constant: +0:16 2 (const int) +0:16 Sequence +0:16 Constant: +0:16 0 (const int) +0:16 Constant: +0:16 1 (const int) +0:16 Constant: +0:16 2 (const int) +0:16 vector swizzle ( temp highp 3-component vector of float) +0:16 'texcoord' ( temp highp 3-component vector of float) +0:16 Sequence +0:16 Constant: +0:16 0 (const int) +0:16 Constant: +0:16 1 (const int) +0:16 Constant: +0:16 2 (const int) +0:20 move second child to first child ( temp highp int) +0:20 instance: direct index for structure ( flat out highp int) +0:20 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:20 Constant: +0:20 4 (const int) +0:20 Function Call: TDInstanceID( ( global highp int) +0:21 Sequence +0:21 move second child to first child ( temp highp 4-component vector of float) +0:21 'worldSpacePos' ( temp highp 4-component vector of float) +0:21 Function Call: TDDeform(vf3; ( global highp 4-component vector of float) +0:21 'P' (layout( location=0) in highp 3-component vector of float) +0:22 Sequence +0:22 move second child to first child ( temp highp 3-component vector of float) +0:22 'uvUnwrapCoord' ( temp highp 3-component vector of float) +0:22 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float) +0:22 Function Call: TDUVUnwrapCoord( ( global highp 3-component vector of float) +0:23 move second child to first child ( temp highp 4-component vector of float) +0:23 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) +0:23 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) +0:23 Constant: +0:23 0 (const uint) +0:23 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:23 'worldSpacePos' ( temp highp 4-component vector of float) +0:23 'uvUnwrapCoord' ( temp highp 3-component vector of float) +0:32 Sequence +0:32 move second child to first child ( temp highp int) +0:32 'cameraIndex' ( temp highp int) +0:32 Function Call: TDCameraIndex( ( global highp int) +0:33 move second child to first child ( temp highp int) +0:33 cameraIndex: direct index for structure ( flat out highp int) +0:33 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:33 Constant: +0:33 3 (const int) +0:33 'cameraIndex' ( temp highp int) +0:34 move second child to first child ( temp highp 3-component vector of float) +0:34 vector swizzle ( temp highp 3-component vector of float) +0:34 worldSpacePos: direct index for structure ( out highp 3-component vector of float) +0:34 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:34 Constant: +0:34 1 (const int) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 vector swizzle ( temp highp 3-component vector of float) +0:34 'worldSpacePos' ( temp highp 4-component vector of float) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:35 move second child to first child ( temp highp 4-component vector of float) +0:35 color: direct index for structure ( out highp 4-component vector of float) +0:35 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:35 Constant: +0:35 0 (const int) +0:35 Function Call: TDInstanceColor(vf4; ( global highp 4-component vector of float) +0:35 'Cd' (layout( location=2) in highp 4-component vector of float) +0:176 Function Definition: iTDCamToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float) +0:176 Function Parameters: +0:176 'v' ( in highp 4-component vector of float) +0:176 'uv' ( in highp 3-component vector of float) +0:176 'cameraIndex' ( in highp int) +0:176 'applyPickMod' ( in bool) +0:178 Sequence +0:178 Test condition and select ( temp void) +0:178 Condition +0:178 Negate conditional ( temp bool) +0:178 Function Call: TDInstanceActive( ( global bool) +0:178 true case +0:179 Branch: Return with expression +0:179 Constant: +0:179 2.000000 +0:179 2.000000 +0:179 2.000000 +0:179 0.000000 +0:180 move second child to first child ( temp highp 4-component vector of float) +0:180 'v' ( in highp 4-component vector of float) +0:180 matrix-times-vector ( temp highp 4-component vector of float) +0:180 proj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:180 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:180 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:180 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:180 Constant: +0:180 0 (const uint) +0:180 Constant: +0:180 0 (const int) +0:180 Constant: +0:180 8 (const int) +0:180 'v' ( in highp 4-component vector of float) +0:181 Branch: Return with expression +0:181 'v' ( in highp 4-component vector of float) +0:183 Function Definition: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float) +0:183 Function Parameters: +0:183 'v' ( in highp 4-component vector of float) +0:183 'uv' ( in highp 3-component vector of float) +0:183 'cameraIndex' ( in highp int) +0:183 'applyPickMod' ( in bool) +0:184 Sequence +0:184 Test condition and select ( temp void) +0:184 Condition +0:184 Negate conditional ( temp bool) +0:184 Function Call: TDInstanceActive( ( global bool) +0:184 true case +0:185 Branch: Return with expression +0:185 Constant: +0:185 2.000000 +0:185 2.000000 +0:185 2.000000 +0:185 0.000000 +0:186 move second child to first child ( temp highp 4-component vector of float) +0:186 'v' ( in highp 4-component vector of float) +0:186 matrix-times-vector ( temp highp 4-component vector of float) +0:186 camProj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:186 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:186 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:186 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:186 Constant: +0:186 0 (const uint) +0:186 Constant: +0:186 0 (const int) +0:186 Constant: +0:186 6 (const int) +0:186 'v' ( in highp 4-component vector of float) +0:187 Branch: Return with expression +0:187 'v' ( in highp 4-component vector of float) +0:193 Function Definition: TDInstanceID( ( global highp int) +0:193 Function Parameters: +0:194 Sequence +0:194 Branch: Return with expression +0:194 add ( temp highp int) +0:194 'gl_InstanceIndex' ( in highp int InstanceIndex) +0:194 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:194 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:194 Constant: +0:194 0 (const uint) +0:196 Function Definition: TDCameraIndex( ( global highp int) +0:196 Function Parameters: +0:197 Sequence +0:197 Branch: Return with expression +0:197 Constant: +0:197 0 (const int) +0:199 Function Definition: TDUVUnwrapCoord( ( global highp 3-component vector of float) +0:199 Function Parameters: +0:200 Sequence +0:200 Branch: Return with expression +0:200 direct index (layout( location=3) temp highp 3-component vector of float) +0:200 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float) +0:200 Constant: +0:200 0 (const int) +0:205 Function Definition: TDPickID( ( global highp int) +0:205 Function Parameters: +0:209 Sequence +0:209 Branch: Return with expression +0:209 Constant: +0:209 0 (const int) +0:212 Function Definition: iTDConvertPickId(i1; ( global highp float) +0:212 Function Parameters: +0:212 'id' ( in highp int) +0:213 Sequence +0:213 or second child into first child ( temp highp int) +0:213 'id' ( in highp int) +0:213 Constant: +0:213 1073741824 (const int) +0:214 Branch: Return with expression +0:214 intBitsToFloat ( global highp float) +0:214 'id' ( in highp int) +0:217 Function Definition: TDWritePickingValues( ( global void) +0:217 Function Parameters: +0:224 Function Definition: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:224 Function Parameters: +0:224 'v' ( in highp 4-component vector of float) +0:224 'uv' ( in highp 3-component vector of float) +0:226 Sequence +0:226 Branch: Return with expression +0:226 Function Call: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float) +0:226 'v' ( in highp 4-component vector of float) +0:226 'uv' ( in highp 3-component vector of float) +0:226 Function Call: TDCameraIndex( ( global highp int) +0:226 Constant: +0:226 true (const bool) +0:228 Function Definition: TDWorldToProj(vf3;vf3; ( global highp 4-component vector of float) +0:228 Function Parameters: +0:228 'v' ( in highp 3-component vector of float) +0:228 'uv' ( in highp 3-component vector of float) +0:230 Sequence +0:230 Branch: Return with expression +0:230 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:230 Construct vec4 ( temp highp 4-component vector of float) +0:230 'v' ( in highp 3-component vector of float) +0:230 Constant: +0:230 1.000000 +0:230 'uv' ( in highp 3-component vector of float) +0:232 Function Definition: TDWorldToProj(vf4; ( global highp 4-component vector of float) +0:232 Function Parameters: +0:232 'v' ( in highp 4-component vector of float) +0:234 Sequence +0:234 Branch: Return with expression +0:234 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:234 'v' ( in highp 4-component vector of float) +0:234 Constant: +0:234 0.000000 +0:234 0.000000 +0:234 0.000000 +0:236 Function Definition: TDWorldToProj(vf3; ( global highp 4-component vector of float) +0:236 Function Parameters: +0:236 'v' ( in highp 3-component vector of float) +0:238 Sequence +0:238 Branch: Return with expression +0:238 Function Call: TDWorldToProj(vf4; ( global highp 4-component vector of float) +0:238 Construct vec4 ( temp highp 4-component vector of float) +0:238 'v' ( in highp 3-component vector of float) +0:238 Constant: +0:238 1.000000 +0:240 Function Definition: TDPointColor( ( global highp 4-component vector of float) +0:240 Function Parameters: +0:241 Sequence +0:241 Branch: Return with expression +0:241 'Cd' (layout( location=2) in highp 4-component vector of float) +0:114 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float) +0:114 Function Parameters: +0:114 'index' ( in highp int) +0:114 't' ( in highp 3-component vector of float) +0:? Sequence +0:116 Sequence +0:116 move second child to first child ( temp highp int) +0:116 'coord' ( temp highp int) +0:116 'index' ( in highp int) +0:117 Sequence +0:117 move second child to first child ( temp highp 4-component vector of float) +0:117 'samp' ( temp highp 4-component vector of float) +0:117 textureFetch ( global highp 4-component vector of float) +0:117 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:117 'coord' ( temp highp int) +0:118 move second child to first child ( temp highp float) +0:118 direct index ( temp highp float) +0:118 'v' ( temp highp 3-component vector of float) +0:118 Constant: +0:118 0 (const int) +0:118 direct index ( temp highp float) +0:118 't' ( in highp 3-component vector of float) +0:118 Constant: +0:118 0 (const int) +0:119 move second child to first child ( temp highp float) +0:119 direct index ( temp highp float) +0:119 'v' ( temp highp 3-component vector of float) +0:119 Constant: +0:119 1 (const int) +0:119 direct index ( temp highp float) +0:119 't' ( in highp 3-component vector of float) +0:119 Constant: +0:119 1 (const int) +0:120 move second child to first child ( temp highp float) +0:120 direct index ( temp highp float) +0:120 'v' ( temp highp 3-component vector of float) +0:120 Constant: +0:120 2 (const int) +0:120 direct index ( temp highp float) +0:120 'samp' ( temp highp 4-component vector of float) +0:120 Constant: +0:120 0 (const int) +0:121 move second child to first child ( temp highp 3-component vector of float) +0:121 vector swizzle ( temp highp 3-component vector of float) +0:121 't' ( in highp 3-component vector of float) +0:121 Sequence +0:121 Constant: +0:121 0 (const int) +0:121 Constant: +0:121 1 (const int) +0:121 Constant: +0:121 2 (const int) +0:121 vector swizzle ( temp highp 3-component vector of float) +0:121 'v' ( temp highp 3-component vector of float) +0:121 Sequence +0:121 Constant: +0:121 0 (const int) +0:121 Constant: +0:121 1 (const int) +0:121 Constant: +0:121 2 (const int) +0:122 Branch: Return with expression +0:122 't' ( in highp 3-component vector of float) +0:124 Function Definition: TDInstanceActive(i1; ( global bool) +0:124 Function Parameters: +0:124 'index' ( in highp int) +0:125 Sequence +0:125 subtract second child into first child ( temp highp int) +0:125 'index' ( in highp int) +0:125 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:125 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:125 Constant: +0:125 0 (const uint) +0:127 Sequence +0:127 move second child to first child ( temp highp int) +0:127 'coord' ( temp highp int) +0:127 'index' ( in highp int) +0:128 Sequence +0:128 move second child to first child ( temp highp 4-component vector of float) +0:128 'samp' ( temp highp 4-component vector of float) +0:128 textureFetch ( global highp 4-component vector of float) +0:128 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:128 'coord' ( temp highp int) +0:129 move second child to first child ( temp highp float) +0:129 'v' ( temp highp float) +0:129 direct index ( temp highp float) +0:129 'samp' ( temp highp 4-component vector of float) +0:129 Constant: +0:129 0 (const int) +0:130 Branch: Return with expression +0:130 Compare Not Equal ( temp bool) +0:130 'v' ( temp highp float) +0:130 Constant: +0:130 0.000000 +0:132 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:132 Function Parameters: +0:132 'index' ( in highp int) +0:132 'instanceActive' ( out bool) +0:133 Sequence +0:133 Sequence +0:133 move second child to first child ( temp highp int) +0:133 'origIndex' ( temp highp int) +0:133 'index' ( in highp int) +0:134 subtract second child into first child ( temp highp int) +0:134 'index' ( in highp int) +0:134 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:134 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:134 Constant: +0:134 0 (const uint) +0:136 Sequence +0:136 move second child to first child ( temp highp int) +0:136 'coord' ( temp highp int) +0:136 'index' ( in highp int) +0:137 Sequence +0:137 move second child to first child ( temp highp 4-component vector of float) +0:137 'samp' ( temp highp 4-component vector of float) +0:137 textureFetch ( global highp 4-component vector of float) +0:137 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:137 'coord' ( temp highp int) +0:138 move second child to first child ( temp highp float) +0:138 direct index ( temp highp float) +0:138 'v' ( temp highp 3-component vector of float) +0:138 Constant: +0:138 0 (const int) +0:138 direct index ( temp highp float) +0:138 'samp' ( temp highp 4-component vector of float) +0:138 Constant: +0:138 1 (const int) +0:139 move second child to first child ( temp highp float) +0:139 direct index ( temp highp float) +0:139 'v' ( temp highp 3-component vector of float) +0:139 Constant: +0:139 1 (const int) +0:139 direct index ( temp highp float) +0:139 'samp' ( temp highp 4-component vector of float) +0:139 Constant: +0:139 2 (const int) +0:140 move second child to first child ( temp highp float) +0:140 direct index ( temp highp float) +0:140 'v' ( temp highp 3-component vector of float) +0:140 Constant: +0:140 2 (const int) +0:140 direct index ( temp highp float) +0:140 'samp' ( temp highp 4-component vector of float) +0:140 Constant: +0:140 3 (const int) +0:141 move second child to first child ( temp bool) +0:141 'instanceActive' ( out bool) +0:141 Compare Not Equal ( temp bool) +0:141 direct index ( temp highp float) +0:141 'samp' ( temp highp 4-component vector of float) +0:141 Constant: +0:141 0 (const int) +0:141 Constant: +0:141 0.000000 +0:142 Branch: Return with expression +0:142 'v' ( temp highp 3-component vector of float) +0:144 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float) +0:144 Function Parameters: +0:144 'index' ( in highp int) +0:145 Sequence +0:145 subtract second child into first child ( temp highp int) +0:145 'index' ( in highp int) +0:145 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:145 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:145 Constant: +0:145 0 (const uint) +0:147 Sequence +0:147 move second child to first child ( temp highp int) +0:147 'coord' ( temp highp int) +0:147 'index' ( in highp int) +0:148 Sequence +0:148 move second child to first child ( temp highp 4-component vector of float) +0:148 'samp' ( temp highp 4-component vector of float) +0:148 textureFetch ( global highp 4-component vector of float) +0:148 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:148 'coord' ( temp highp int) +0:149 move second child to first child ( temp highp float) +0:149 direct index ( temp highp float) +0:149 'v' ( temp highp 3-component vector of float) +0:149 Constant: +0:149 0 (const int) +0:149 direct index ( temp highp float) +0:149 'samp' ( temp highp 4-component vector of float) +0:149 Constant: +0:149 1 (const int) +0:150 move second child to first child ( temp highp float) +0:150 direct index ( temp highp float) +0:150 'v' ( temp highp 3-component vector of float) +0:150 Constant: +0:150 1 (const int) +0:150 direct index ( temp highp float) +0:150 'samp' ( temp highp 4-component vector of float) +0:150 Constant: +0:150 2 (const int) +0:151 move second child to first child ( temp highp float) +0:151 direct index ( temp highp float) +0:151 'v' ( temp highp 3-component vector of float) +0:151 Constant: +0:151 2 (const int) +0:151 direct index ( temp highp float) +0:151 'samp' ( temp highp 4-component vector of float) +0:151 Constant: +0:151 3 (const int) +0:152 Branch: Return with expression +0:152 'v' ( temp highp 3-component vector of float) +0:154 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float) +0:154 Function Parameters: +0:154 'index' ( in highp int) +0:155 Sequence +0:155 subtract second child into first child ( temp highp int) +0:155 'index' ( in highp int) +0:155 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:155 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:155 Constant: +0:155 0 (const uint) +0:156 Sequence +0:156 move second child to first child ( temp highp 3-component vector of float) +0:156 'v' ( temp highp 3-component vector of float) +0:156 Constant: +0:156 0.000000 +0:156 0.000000 +0:156 0.000000 +0:157 Sequence +0:157 move second child to first child ( temp highp 3X3 matrix of float) +0:157 'm' ( temp highp 3X3 matrix of float) +0:157 Constant: +0:157 1.000000 +0:157 0.000000 +0:157 0.000000 +0:157 0.000000 +0:157 1.000000 +0:157 0.000000 +0:157 0.000000 +0:157 0.000000 +0:157 1.000000 +0:161 Branch: Return with expression +0:161 'm' ( temp highp 3X3 matrix of float) +0:163 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float) +0:163 Function Parameters: +0:163 'index' ( in highp int) +0:164 Sequence +0:164 subtract second child into first child ( temp highp int) +0:164 'index' ( in highp int) +0:164 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:164 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:164 Constant: +0:164 0 (const uint) +0:165 Sequence +0:165 move second child to first child ( temp highp 3-component vector of float) +0:165 'v' ( temp highp 3-component vector of float) +0:165 Constant: +0:165 1.000000 +0:165 1.000000 +0:165 1.000000 +0:166 Branch: Return with expression +0:166 'v' ( temp highp 3-component vector of float) +0:168 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float) +0:168 Function Parameters: +0:168 'index' ( in highp int) +0:169 Sequence +0:169 subtract second child into first child ( temp highp int) +0:169 'index' ( in highp int) +0:169 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:169 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:169 Constant: +0:169 0 (const uint) +0:170 Sequence +0:170 move second child to first child ( temp highp 3-component vector of float) +0:170 'v' ( temp highp 3-component vector of float) +0:170 Constant: +0:170 0.000000 +0:170 0.000000 +0:170 0.000000 +0:171 Branch: Return with expression +0:171 'v' ( temp highp 3-component vector of float) +0:173 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float) +0:173 Function Parameters: +0:173 'index' ( in highp int) +0:174 Sequence +0:174 subtract second child into first child ( temp highp int) +0:174 'index' ( in highp int) +0:174 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:174 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:174 Constant: +0:174 0 (const uint) +0:175 Sequence +0:175 move second child to first child ( temp highp 3-component vector of float) +0:175 'v' ( temp highp 3-component vector of float) +0:175 Constant: +0:175 0.000000 +0:175 0.000000 +0:175 1.000000 +0:176 Branch: Return with expression +0:176 'v' ( temp highp 3-component vector of float) +0:178 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float) +0:178 Function Parameters: +0:178 'index' ( in highp int) +0:179 Sequence +0:179 subtract second child into first child ( temp highp int) +0:179 'index' ( in highp int) +0:179 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:179 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:179 Constant: +0:179 0 (const uint) +0:180 Sequence +0:180 move second child to first child ( temp highp 3-component vector of float) +0:180 'v' ( temp highp 3-component vector of float) +0:180 Constant: +0:180 0.000000 +0:180 1.000000 +0:180 0.000000 +0:181 Branch: Return with expression +0:181 'v' ( temp highp 3-component vector of float) +0:183 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:183 Function Parameters: +0:183 'id' ( in highp int) +0:184 Sequence +0:184 Sequence +0:184 move second child to first child ( temp bool) +0:184 'instanceActive' ( temp bool) +0:184 Constant: +0:184 true (const bool) +0:185 Sequence +0:185 move second child to first child ( temp highp 3-component vector of float) +0:185 't' ( temp highp 3-component vector of float) +0:185 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:185 'id' ( in highp int) +0:185 'instanceActive' ( temp bool) +0:186 Test condition and select ( temp void) +0:186 Condition +0:186 Negate conditional ( temp bool) +0:186 'instanceActive' ( temp bool) +0:186 true case +0:188 Sequence +0:188 Branch: Return with expression +0:188 Constant: +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:190 Sequence +0:190 move second child to first child ( temp highp 4X4 matrix of float) +0:190 'm' ( temp highp 4X4 matrix of float) +0:190 Constant: +0:190 1.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 1.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 1.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 1.000000 +0:192 Sequence +0:192 Sequence +0:192 move second child to first child ( temp highp 3-component vector of float) +0:192 'tt' ( temp highp 3-component vector of float) +0:192 't' ( temp highp 3-component vector of float) +0:193 add second child into first child ( temp highp float) +0:193 direct index ( temp highp float) +0:193 direct index ( temp highp 4-component vector of float) +0:193 'm' ( temp highp 4X4 matrix of float) +0:193 Constant: +0:193 3 (const int) +0:193 Constant: +0:193 0 (const int) +0:193 component-wise multiply ( temp highp float) +0:193 direct index ( temp highp float) +0:193 direct index ( temp highp 4-component vector of float) +0:193 'm' ( temp highp 4X4 matrix of float) +0:193 Constant: +0:193 0 (const int) +0:193 Constant: +0:193 0 (const int) +0:193 direct index ( temp highp float) +0:193 'tt' ( temp highp 3-component vector of float) +0:193 Constant: +0:193 0 (const int) +0:194 add second child into first child ( temp highp float) +0:194 direct index ( temp highp float) +0:194 direct index ( temp highp 4-component vector of float) +0:194 'm' ( temp highp 4X4 matrix of float) +0:194 Constant: +0:194 3 (const int) +0:194 Constant: +0:194 1 (const int) +0:194 component-wise multiply ( temp highp float) +0:194 direct index ( temp highp float) +0:194 direct index ( temp highp 4-component vector of float) +0:194 'm' ( temp highp 4X4 matrix of float) +0:194 Constant: +0:194 0 (const int) +0:194 Constant: +0:194 1 (const int) +0:194 direct index ( temp highp float) +0:194 'tt' ( temp highp 3-component vector of float) +0:194 Constant: +0:194 0 (const int) +0:195 add second child into first child ( temp highp float) +0:195 direct index ( temp highp float) +0:195 direct index ( temp highp 4-component vector of float) +0:195 'm' ( temp highp 4X4 matrix of float) +0:195 Constant: +0:195 3 (const int) +0:195 Constant: +0:195 2 (const int) +0:195 component-wise multiply ( temp highp float) +0:195 direct index ( temp highp float) +0:195 direct index ( temp highp 4-component vector of float) +0:195 'm' ( temp highp 4X4 matrix of float) +0:195 Constant: +0:195 0 (const int) +0:195 Constant: +0:195 2 (const int) +0:195 direct index ( temp highp float) +0:195 'tt' ( temp highp 3-component vector of float) +0:195 Constant: +0:195 0 (const int) +0:196 add second child into first child ( temp highp float) +0:196 direct index ( temp highp float) +0:196 direct index ( temp highp 4-component vector of float) +0:196 'm' ( temp highp 4X4 matrix of float) +0:196 Constant: +0:196 3 (const int) +0:196 Constant: +0:196 3 (const int) +0:196 component-wise multiply ( temp highp float) +0:196 direct index ( temp highp float) +0:196 direct index ( temp highp 4-component vector of float) +0:196 'm' ( temp highp 4X4 matrix of float) +0:196 Constant: +0:196 0 (const int) +0:196 Constant: +0:196 3 (const int) +0:196 direct index ( temp highp float) +0:196 'tt' ( temp highp 3-component vector of float) +0:196 Constant: +0:196 0 (const int) +0:197 add second child into first child ( temp highp float) +0:197 direct index ( temp highp float) +0:197 direct index ( temp highp 4-component vector of float) +0:197 'm' ( temp highp 4X4 matrix of float) +0:197 Constant: +0:197 3 (const int) +0:197 Constant: +0:197 0 (const int) +0:197 component-wise multiply ( temp highp float) +0:197 direct index ( temp highp float) +0:197 direct index ( temp highp 4-component vector of float) +0:197 'm' ( temp highp 4X4 matrix of float) +0:197 Constant: +0:197 1 (const int) +0:197 Constant: +0:197 0 (const int) +0:197 direct index ( temp highp float) +0:197 'tt' ( temp highp 3-component vector of float) +0:197 Constant: +0:197 1 (const int) +0:198 add second child into first child ( temp highp float) +0:198 direct index ( temp highp float) +0:198 direct index ( temp highp 4-component vector of float) +0:198 'm' ( temp highp 4X4 matrix of float) +0:198 Constant: +0:198 3 (const int) +0:198 Constant: +0:198 1 (const int) +0:198 component-wise multiply ( temp highp float) +0:198 direct index ( temp highp float) +0:198 direct index ( temp highp 4-component vector of float) +0:198 'm' ( temp highp 4X4 matrix of float) +0:198 Constant: +0:198 1 (const int) +0:198 Constant: +0:198 1 (const int) +0:198 direct index ( temp highp float) +0:198 'tt' ( temp highp 3-component vector of float) +0:198 Constant: +0:198 1 (const int) +0:199 add second child into first child ( temp highp float) +0:199 direct index ( temp highp float) +0:199 direct index ( temp highp 4-component vector of float) +0:199 'm' ( temp highp 4X4 matrix of float) +0:199 Constant: +0:199 3 (const int) +0:199 Constant: +0:199 2 (const int) +0:199 component-wise multiply ( temp highp float) +0:199 direct index ( temp highp float) +0:199 direct index ( temp highp 4-component vector of float) +0:199 'm' ( temp highp 4X4 matrix of float) +0:199 Constant: +0:199 1 (const int) +0:199 Constant: +0:199 2 (const int) +0:199 direct index ( temp highp float) +0:199 'tt' ( temp highp 3-component vector of float) +0:199 Constant: +0:199 1 (const int) +0:200 add second child into first child ( temp highp float) +0:200 direct index ( temp highp float) +0:200 direct index ( temp highp 4-component vector of float) +0:200 'm' ( temp highp 4X4 matrix of float) +0:200 Constant: +0:200 3 (const int) +0:200 Constant: +0:200 3 (const int) +0:200 component-wise multiply ( temp highp float) +0:200 direct index ( temp highp float) +0:200 direct index ( temp highp 4-component vector of float) +0:200 'm' ( temp highp 4X4 matrix of float) +0:200 Constant: +0:200 1 (const int) +0:200 Constant: +0:200 3 (const int) +0:200 direct index ( temp highp float) +0:200 'tt' ( temp highp 3-component vector of float) +0:200 Constant: +0:200 1 (const int) +0:201 add second child into first child ( temp highp float) +0:201 direct index ( temp highp float) +0:201 direct index ( temp highp 4-component vector of float) +0:201 'm' ( temp highp 4X4 matrix of float) +0:201 Constant: +0:201 3 (const int) +0:201 Constant: +0:201 0 (const int) +0:201 component-wise multiply ( temp highp float) +0:201 direct index ( temp highp float) +0:201 direct index ( temp highp 4-component vector of float) +0:201 'm' ( temp highp 4X4 matrix of float) +0:201 Constant: +0:201 2 (const int) +0:201 Constant: +0:201 0 (const int) +0:201 direct index ( temp highp float) +0:201 'tt' ( temp highp 3-component vector of float) +0:201 Constant: +0:201 2 (const int) +0:202 add second child into first child ( temp highp float) +0:202 direct index ( temp highp float) +0:202 direct index ( temp highp 4-component vector of float) +0:202 'm' ( temp highp 4X4 matrix of float) +0:202 Constant: +0:202 3 (const int) +0:202 Constant: +0:202 1 (const int) +0:202 component-wise multiply ( temp highp float) +0:202 direct index ( temp highp float) +0:202 direct index ( temp highp 4-component vector of float) +0:202 'm' ( temp highp 4X4 matrix of float) +0:202 Constant: +0:202 2 (const int) +0:202 Constant: +0:202 1 (const int) +0:202 direct index ( temp highp float) +0:202 'tt' ( temp highp 3-component vector of float) +0:202 Constant: +0:202 2 (const int) +0:203 add second child into first child ( temp highp float) +0:203 direct index ( temp highp float) +0:203 direct index ( temp highp 4-component vector of float) +0:203 'm' ( temp highp 4X4 matrix of float) +0:203 Constant: +0:203 3 (const int) +0:203 Constant: +0:203 2 (const int) +0:203 component-wise multiply ( temp highp float) +0:203 direct index ( temp highp float) +0:203 direct index ( temp highp 4-component vector of float) +0:203 'm' ( temp highp 4X4 matrix of float) +0:203 Constant: +0:203 2 (const int) +0:203 Constant: +0:203 2 (const int) +0:203 direct index ( temp highp float) +0:203 'tt' ( temp highp 3-component vector of float) +0:203 Constant: +0:203 2 (const int) +0:204 add second child into first child ( temp highp float) +0:204 direct index ( temp highp float) +0:204 direct index ( temp highp 4-component vector of float) +0:204 'm' ( temp highp 4X4 matrix of float) +0:204 Constant: +0:204 3 (const int) +0:204 Constant: +0:204 3 (const int) +0:204 component-wise multiply ( temp highp float) +0:204 direct index ( temp highp float) +0:204 direct index ( temp highp 4-component vector of float) +0:204 'm' ( temp highp 4X4 matrix of float) +0:204 Constant: +0:204 2 (const int) +0:204 Constant: +0:204 3 (const int) +0:204 direct index ( temp highp float) +0:204 'tt' ( temp highp 3-component vector of float) +0:204 Constant: +0:204 2 (const int) +0:206 Branch: Return with expression +0:206 'm' ( temp highp 4X4 matrix of float) +0:208 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:208 Function Parameters: +0:208 'id' ( in highp int) +0:209 Sequence +0:209 Sequence +0:209 move second child to first child ( temp highp 3X3 matrix of float) +0:209 'm' ( temp highp 3X3 matrix of float) +0:209 Constant: +0:209 1.000000 +0:209 0.000000 +0:209 0.000000 +0:209 0.000000 +0:209 1.000000 +0:209 0.000000 +0:209 0.000000 +0:209 0.000000 +0:209 1.000000 +0:210 Branch: Return with expression +0:210 'm' ( temp highp 3X3 matrix of float) +0:212 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float) +0:212 Function Parameters: +0:212 'id' ( in highp int) +0:213 Sequence +0:213 Sequence +0:213 move second child to first child ( temp highp 3X3 matrix of float) +0:213 'm' ( temp highp 3X3 matrix of float) +0:213 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:213 'id' ( in highp int) +0:214 Branch: Return with expression +0:214 'm' ( temp highp 3X3 matrix of float) +0:216 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float) +0:216 Function Parameters: +0:216 'index' ( in highp int) +0:216 'curColor' ( in highp 4-component vector of float) +0:217 Sequence +0:217 subtract second child into first child ( temp highp int) +0:217 'index' ( in highp int) +0:217 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:217 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:217 Constant: +0:217 0 (const uint) +0:219 Sequence +0:219 move second child to first child ( temp highp int) +0:219 'coord' ( temp highp int) +0:219 'index' ( in highp int) +0:220 Sequence +0:220 move second child to first child ( temp highp 4-component vector of float) +0:220 'samp' ( temp highp 4-component vector of float) +0:220 textureFetch ( global highp 4-component vector of float) +0:220 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) +0:220 'coord' ( temp highp int) +0:221 move second child to first child ( temp highp float) +0:221 direct index ( temp highp float) +0:221 'v' ( temp highp 4-component vector of float) +0:221 Constant: +0:221 0 (const int) +0:221 direct index ( temp highp float) +0:221 'samp' ( temp highp 4-component vector of float) +0:221 Constant: +0:221 0 (const int) +0:222 move second child to first child ( temp highp float) +0:222 direct index ( temp highp float) +0:222 'v' ( temp highp 4-component vector of float) +0:222 Constant: +0:222 1 (const int) +0:222 direct index ( temp highp float) +0:222 'samp' ( temp highp 4-component vector of float) +0:222 Constant: +0:222 1 (const int) +0:223 move second child to first child ( temp highp float) +0:223 direct index ( temp highp float) +0:223 'v' ( temp highp 4-component vector of float) +0:223 Constant: +0:223 2 (const int) +0:223 direct index ( temp highp float) +0:223 'samp' ( temp highp 4-component vector of float) +0:223 Constant: +0:223 2 (const int) +0:224 move second child to first child ( temp highp float) +0:224 direct index ( temp highp float) +0:224 'v' ( temp highp 4-component vector of float) +0:224 Constant: +0:224 3 (const int) +0:224 Constant: +0:224 1.000000 +0:225 move second child to first child ( temp highp float) +0:225 direct index ( temp highp float) +0:225 'curColor' ( in highp 4-component vector of float) +0:225 Constant: +0:225 0 (const int) +0:225 direct index ( temp highp float) +0:225 'v' ( temp highp 4-component vector of float) +0:225 Constant: +0:225 0 (const int) +0:227 move second child to first child ( temp highp float) +0:227 direct index ( temp highp float) +0:227 'curColor' ( in highp 4-component vector of float) +0:227 Constant: +0:227 1 (const int) +0:227 direct index ( temp highp float) +0:227 'v' ( temp highp 4-component vector of float) +0:227 Constant: +0:227 1 (const int) +0:229 move second child to first child ( temp highp float) +0:229 direct index ( temp highp float) +0:229 'curColor' ( in highp 4-component vector of float) +0:229 Constant: +0:229 2 (const int) +0:229 direct index ( temp highp float) +0:229 'v' ( temp highp 4-component vector of float) +0:229 Constant: +0:229 2 (const int) +0:231 Branch: Return with expression +0:231 'curColor' ( in highp 4-component vector of float) +0:233 Function Definition: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float) +0:233 Function Parameters: +0:233 'id' ( in highp int) +0:233 'pos' ( in highp 4-component vector of float) +0:234 Sequence +0:234 move second child to first child ( temp highp 4-component vector of float) +0:234 'pos' ( in highp 4-component vector of float) +0:234 matrix-times-vector ( temp highp 4-component vector of float) +0:234 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:234 'id' ( in highp int) +0:234 'pos' ( in highp 4-component vector of float) +0:235 Branch: Return with expression +0:235 matrix-times-vector ( temp highp 4-component vector of float) +0:235 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:235 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:235 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:235 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:235 Constant: +0:235 0 (const uint) +0:235 Function Call: TDCameraIndex( ( global highp int) +0:235 Constant: +0:235 0 (const int) +0:235 'pos' ( in highp 4-component vector of float) +0:238 Function Definition: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:238 Function Parameters: +0:238 'id' ( in highp int) +0:238 'vec' ( in highp 3-component vector of float) +0:240 Sequence +0:240 Sequence +0:240 move second child to first child ( temp highp 3X3 matrix of float) +0:240 'm' ( temp highp 3X3 matrix of float) +0:240 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:240 'id' ( in highp int) +0:241 Branch: Return with expression +0:241 matrix-times-vector ( temp highp 3-component vector of float) +0:241 Construct mat3 ( temp highp 3X3 matrix of float) +0:241 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:241 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:241 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:241 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:241 Constant: +0:241 0 (const uint) +0:241 Function Call: TDCameraIndex( ( global highp int) +0:241 Constant: +0:241 0 (const int) +0:241 matrix-times-vector ( temp highp 3-component vector of float) +0:241 'm' ( temp highp 3X3 matrix of float) +0:241 'vec' ( in highp 3-component vector of float) +0:243 Function Definition: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:243 Function Parameters: +0:243 'id' ( in highp int) +0:243 'vec' ( in highp 3-component vector of float) +0:245 Sequence +0:245 Sequence +0:245 move second child to first child ( temp highp 3X3 matrix of float) +0:245 'm' ( temp highp 3X3 matrix of float) +0:245 Function Call: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float) +0:245 'id' ( in highp int) +0:246 Branch: Return with expression +0:246 matrix-times-vector ( temp highp 3-component vector of float) +0:246 Construct mat3 ( temp highp 3X3 matrix of float) +0:246 worldForNormals: direct index for structure (layout( column_major std140) global highp 3X3 matrix of float) +0:246 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:246 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:246 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:246 Constant: +0:246 0 (const uint) +0:246 Function Call: TDCameraIndex( ( global highp int) +0:246 Constant: +0:246 13 (const int) +0:246 matrix-times-vector ( temp highp 3-component vector of float) +0:246 'm' ( temp highp 3X3 matrix of float) +0:246 'vec' ( in highp 3-component vector of float) +0:248 Function Definition: TDInstanceDeform(vf4; ( global highp 4-component vector of float) +0:248 Function Parameters: +0:248 'pos' ( in highp 4-component vector of float) +0:249 Sequence +0:249 Branch: Return with expression +0:249 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float) +0:249 Function Call: TDInstanceID( ( global highp int) +0:249 'pos' ( in highp 4-component vector of float) +0:251 Function Definition: TDInstanceDeformVec(vf3; ( global highp 3-component vector of float) +0:251 Function Parameters: +0:251 'vec' ( in highp 3-component vector of float) +0:252 Sequence +0:252 Branch: Return with expression +0:252 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:252 Function Call: TDInstanceID( ( global highp int) +0:252 'vec' ( in highp 3-component vector of float) +0:254 Function Definition: TDInstanceDeformNorm(vf3; ( global highp 3-component vector of float) +0:254 Function Parameters: +0:254 'vec' ( in highp 3-component vector of float) +0:255 Sequence +0:255 Branch: Return with expression +0:255 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:255 Function Call: TDInstanceID( ( global highp int) +0:255 'vec' ( in highp 3-component vector of float) +0:257 Function Definition: TDInstanceActive( ( global bool) +0:257 Function Parameters: +0:257 Sequence +0:257 Branch: Return with expression +0:257 Function Call: TDInstanceActive(i1; ( global bool) +0:257 Function Call: TDInstanceID( ( global highp int) +0:258 Function Definition: TDInstanceTranslate( ( global highp 3-component vector of float) +0:258 Function Parameters: +0:258 Sequence +0:258 Branch: Return with expression +0:258 Function Call: TDInstanceTranslate(i1; ( global highp 3-component vector of float) +0:258 Function Call: TDInstanceID( ( global highp int) +0:259 Function Definition: TDInstanceRotateMat( ( global highp 3X3 matrix of float) +0:259 Function Parameters: +0:259 Sequence +0:259 Branch: Return with expression +0:259 Function Call: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float) +0:259 Function Call: TDInstanceID( ( global highp int) +0:260 Function Definition: TDInstanceScale( ( global highp 3-component vector of float) +0:260 Function Parameters: +0:260 Sequence +0:260 Branch: Return with expression +0:260 Function Call: TDInstanceScale(i1; ( global highp 3-component vector of float) +0:260 Function Call: TDInstanceID( ( global highp int) +0:261 Function Definition: TDInstanceMat( ( global highp 4X4 matrix of float) +0:261 Function Parameters: +0:261 Sequence +0:261 Branch: Return with expression +0:261 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:261 Function Call: TDInstanceID( ( global highp int) +0:263 Function Definition: TDInstanceMat3( ( global highp 3X3 matrix of float) +0:263 Function Parameters: +0:263 Sequence +0:263 Branch: Return with expression +0:263 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:263 Function Call: TDInstanceID( ( global highp int) +0:265 Function Definition: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float) +0:265 Function Parameters: +0:265 't' ( in highp 3-component vector of float) +0:266 Sequence +0:266 Branch: Return with expression +0:266 Function Call: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float) +0:266 Function Call: TDInstanceID( ( global highp int) +0:266 't' ( in highp 3-component vector of float) +0:268 Function Definition: TDInstanceColor(vf4; ( global highp 4-component vector of float) +0:268 Function Parameters: +0:268 'curColor' ( in highp 4-component vector of float) +0:269 Sequence +0:269 Branch: Return with expression +0:269 Function Call: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float) +0:269 Function Call: TDInstanceID( ( global highp int) +0:269 'curColor' ( in highp 4-component vector of float) +0:271 Function Definition: TDSkinnedDeform(vf4; ( global highp 4-component vector of float) +0:271 Function Parameters: +0:271 'pos' ( in highp 4-component vector of float) +0:271 Sequence +0:271 Branch: Return with expression +0:271 'pos' ( in highp 4-component vector of float) +0:273 Function Definition: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:273 Function Parameters: +0:273 'vec' ( in highp 3-component vector of float) +0:273 Sequence +0:273 Branch: Return with expression +0:273 'vec' ( in highp 3-component vector of float) +0:275 Function Definition: TDFastDeformTangent(vf3;vf4;vf3; ( global highp 3-component vector of float) +0:275 Function Parameters: +0:275 'oldNorm' ( in highp 3-component vector of float) +0:275 'oldTangent' ( in highp 4-component vector of float) +0:275 'deformedNorm' ( in highp 3-component vector of float) +0:276 Sequence +0:276 Branch: Return with expression +0:276 vector swizzle ( temp highp 3-component vector of float) +0:276 'oldTangent' ( in highp 4-component vector of float) +0:276 Sequence +0:276 Constant: +0:276 0 (const int) +0:276 Constant: +0:276 1 (const int) +0:276 Constant: +0:276 2 (const int) +0:277 Function Definition: TDBoneMat(i1; ( global highp 4X4 matrix of float) +0:277 Function Parameters: +0:277 'index' ( in highp int) +0:278 Sequence +0:278 Branch: Return with expression +0:278 Constant: +0:278 1.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 1.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 1.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 1.000000 +0:280 Function Definition: TDDeform(vf4; ( global highp 4-component vector of float) +0:280 Function Parameters: +0:280 'pos' ( in highp 4-component vector of float) +0:281 Sequence +0:281 move second child to first child ( temp highp 4-component vector of float) +0:281 'pos' ( in highp 4-component vector of float) +0:281 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float) +0:281 'pos' ( in highp 4-component vector of float) +0:282 move second child to first child ( temp highp 4-component vector of float) +0:282 'pos' ( in highp 4-component vector of float) +0:282 Function Call: TDInstanceDeform(vf4; ( global highp 4-component vector of float) +0:282 'pos' ( in highp 4-component vector of float) +0:283 Branch: Return with expression +0:283 'pos' ( in highp 4-component vector of float) +0:286 Function Definition: TDDeform(i1;vf3; ( global highp 4-component vector of float) +0:286 Function Parameters: +0:286 'instanceID' ( in highp int) +0:286 'p' ( in highp 3-component vector of float) +0:287 Sequence +0:287 Sequence +0:287 move second child to first child ( temp highp 4-component vector of float) +0:287 'pos' ( temp highp 4-component vector of float) +0:287 Construct vec4 ( temp highp 4-component vector of float) +0:287 'p' ( in highp 3-component vector of float) +0:287 Constant: +0:287 1.000000 +0:288 move second child to first child ( temp highp 4-component vector of float) +0:288 'pos' ( temp highp 4-component vector of float) +0:288 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float) +0:288 'pos' ( temp highp 4-component vector of float) +0:289 move second child to first child ( temp highp 4-component vector of float) +0:289 'pos' ( temp highp 4-component vector of float) +0:289 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float) +0:289 'instanceID' ( in highp int) +0:289 'pos' ( temp highp 4-component vector of float) +0:290 Branch: Return with expression +0:290 'pos' ( temp highp 4-component vector of float) +0:293 Function Definition: TDDeform(vf3; ( global highp 4-component vector of float) +0:293 Function Parameters: +0:293 'pos' ( in highp 3-component vector of float) +0:294 Sequence +0:294 Branch: Return with expression +0:294 Function Call: TDDeform(i1;vf3; ( global highp 4-component vector of float) +0:294 Function Call: TDInstanceID( ( global highp int) +0:294 'pos' ( in highp 3-component vector of float) +0:297 Function Definition: TDDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:297 Function Parameters: +0:297 'instanceID' ( in highp int) +0:297 'vec' ( in highp 3-component vector of float) +0:298 Sequence +0:298 move second child to first child ( temp highp 3-component vector of float) +0:298 'vec' ( in highp 3-component vector of float) +0:298 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:298 'vec' ( in highp 3-component vector of float) +0:299 move second child to first child ( temp highp 3-component vector of float) +0:299 'vec' ( in highp 3-component vector of float) +0:299 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:299 'instanceID' ( in highp int) +0:299 'vec' ( in highp 3-component vector of float) +0:300 Branch: Return with expression +0:300 'vec' ( in highp 3-component vector of float) +0:303 Function Definition: TDDeformVec(vf3; ( global highp 3-component vector of float) +0:303 Function Parameters: +0:303 'vec' ( in highp 3-component vector of float) +0:304 Sequence +0:304 Branch: Return with expression +0:304 Function Call: TDDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:304 Function Call: TDInstanceID( ( global highp int) +0:304 'vec' ( in highp 3-component vector of float) +0:307 Function Definition: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:307 Function Parameters: +0:307 'instanceID' ( in highp int) +0:307 'vec' ( in highp 3-component vector of float) +0:308 Sequence +0:308 move second child to first child ( temp highp 3-component vector of float) +0:308 'vec' ( in highp 3-component vector of float) +0:308 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:308 'vec' ( in highp 3-component vector of float) +0:309 move second child to first child ( temp highp 3-component vector of float) +0:309 'vec' ( in highp 3-component vector of float) +0:309 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:309 'instanceID' ( in highp int) +0:309 'vec' ( in highp 3-component vector of float) +0:310 Branch: Return with expression +0:310 'vec' ( in highp 3-component vector of float) +0:313 Function Definition: TDDeformNorm(vf3; ( global highp 3-component vector of float) +0:313 Function Parameters: +0:313 'vec' ( in highp 3-component vector of float) +0:314 Sequence +0:314 Branch: Return with expression +0:314 Function Call: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:314 Function Call: TDInstanceID( ( global highp int) +0:314 'vec' ( in highp 3-component vector of float) +0:317 Function Definition: TDSkinnedDeformNorm(vf3; ( global highp 3-component vector of float) +0:317 Function Parameters: +0:317 'vec' ( in highp 3-component vector of float) +0:318 Sequence +0:318 move second child to first child ( temp highp 3-component vector of float) +0:318 'vec' ( in highp 3-component vector of float) +0:318 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:318 'vec' ( in highp 3-component vector of float) +0:319 Branch: Return with expression +0:319 'vec' ( in highp 3-component vector of float) +0:? Linker Objects +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos}) +0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral}) +0:? 'P' (layout( location=0) in highp 3-component vector of float) +0:? 'N' (layout( location=1) in highp 3-component vector of float) +0:? 'Cd' (layout( location=2) in highp 4-component vector of float) +0:? 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float) +0:? 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:? 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) +0:? 'gl_VertexIndex' ( in int VertexIndex) +0:? 'gl_InstanceIndex' ( in int InstanceIndex) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights}) +0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs}) +0:? 'mTD2DImageOutputs' (layout( rgba8) uniform 1-element array of highp image2D) +0:? 'mTD2DArrayImageOutputs' (layout( rgba8) uniform 1-element array of highp image2DArray) +0:? 'mTD3DImageOutputs' (layout( rgba8) uniform 1-element array of highp image3D) +0:? 'mTDCubeImageOutputs' (layout( rgba8) uniform 1-element array of highp imageCube) +0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) +Shader version: 460 +gl_FragCoord origin is upper left +0:? Sequence +0:95 Function Definition: main( ( global void) +0:95 Function Parameters: +0:99 Sequence +0:99 Function Call: TDCheckDiscard( ( global void) +0:101 Sequence +0:101 move second child to first child ( temp highp 4-component vector of float) +0:101 'outcol' ( temp highp 4-component vector of float) +0:101 Constant: +0:101 0.000000 +0:101 0.000000 +0:101 0.000000 +0:101 0.000000 +0:103 Sequence +0:103 move second child to first child ( temp highp 3-component vector of float) +0:103 'texCoord0' ( temp highp 3-component vector of float) +0:103 vector swizzle ( temp highp 3-component vector of float) +0:103 texCoord0: direct index for structure ( in highp 3-component vector of float) +0:103 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:103 Constant: +0:103 2 (const int) +0:103 Sequence +0:103 Constant: +0:103 0 (const int) +0:103 Constant: +0:103 1 (const int) +0:103 Constant: +0:103 2 (const int) +0:104 Sequence +0:104 move second child to first child ( temp highp float) +0:104 'actualTexZ' ( temp highp float) +0:104 mod ( global highp float) +0:104 Convert int to float ( temp highp float) +0:104 Convert float to int ( temp highp int) +0:104 direct index ( temp highp float) +0:104 'texCoord0' ( temp highp 3-component vector of float) +0:104 Constant: +0:104 2 (const int) +0:104 Constant: +0:104 2048.000000 +0:105 Sequence +0:105 move second child to first child ( temp highp float) +0:105 'instanceLoop' ( temp highp float) +0:105 Floor ( global highp float) +0:105 Convert int to float ( temp highp float) +0:105 divide ( temp highp int) +0:105 Convert float to int ( temp highp int) +0:105 direct index ( temp highp float) +0:105 'texCoord0' ( temp highp 3-component vector of float) +0:105 Constant: +0:105 2 (const int) +0:105 Constant: +0:105 2048 (const int) +0:106 move second child to first child ( temp highp float) +0:106 direct index ( temp highp float) +0:106 'texCoord0' ( temp highp 3-component vector of float) +0:106 Constant: +0:106 2 (const int) +0:106 'actualTexZ' ( temp highp float) +0:107 Sequence +0:107 move second child to first child ( temp highp 4-component vector of float) +0:107 'colorMapColor' ( temp highp 4-component vector of float) +0:107 texture ( global highp 4-component vector of float) +0:107 'sColorMap' ( uniform highp sampler2DArray) +0:107 vector swizzle ( temp highp 3-component vector of float) +0:107 'texCoord0' ( temp highp 3-component vector of float) +0:107 Sequence +0:107 Constant: +0:107 0 (const int) +0:107 Constant: +0:107 1 (const int) +0:107 Constant: +0:107 2 (const int) +0:109 Sequence +0:109 move second child to first child ( temp highp float) +0:109 'red' ( temp highp float) +0:109 indirect index ( temp highp float) +0:109 'colorMapColor' ( temp highp 4-component vector of float) +0:109 Convert float to int ( temp highp int) +0:109 'instanceLoop' ( temp highp float) +0:110 move second child to first child ( temp highp 4-component vector of float) +0:110 'colorMapColor' ( temp highp 4-component vector of float) +0:110 Construct vec4 ( temp highp 4-component vector of float) +0:110 'red' ( temp highp float) +0:112 add second child into first child ( temp highp 3-component vector of float) +0:112 vector swizzle ( temp highp 3-component vector of float) +0:112 'outcol' ( temp highp 4-component vector of float) +0:112 Sequence +0:112 Constant: +0:112 0 (const int) +0:112 Constant: +0:112 1 (const int) +0:112 Constant: +0:112 2 (const int) +0:112 component-wise multiply ( temp highp 3-component vector of float) +0:112 uConstant: direct index for structure ( uniform highp 3-component vector of float) +0:112 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:112 Constant: +0:112 3 (const uint) +0:112 vector swizzle ( temp highp 3-component vector of float) +0:112 color: direct index for structure ( in highp 4-component vector of float) +0:112 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:112 Constant: +0:112 0 (const int) +0:112 Sequence +0:112 Constant: +0:112 0 (const int) +0:112 Constant: +0:112 1 (const int) +0:112 Constant: +0:112 2 (const int) +0:114 multiply second child into first child ( temp highp 4-component vector of float) +0:114 'outcol' ( temp highp 4-component vector of float) +0:114 'colorMapColor' ( temp highp 4-component vector of float) +0:117 Sequence +0:117 move second child to first child ( temp highp float) +0:117 'alpha' ( temp highp float) +0:117 component-wise multiply ( temp highp float) +0:117 direct index ( temp highp float) +0:117 color: direct index for structure ( in highp 4-component vector of float) +0:117 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:117 Constant: +0:117 0 (const int) +0:117 Constant: +0:117 3 (const int) +0:117 direct index ( temp highp float) +0:117 'colorMapColor' ( temp highp 4-component vector of float) +0:117 Constant: +0:117 3 (const int) +0:120 move second child to first child ( temp highp 4-component vector of float) +0:120 'outcol' ( temp highp 4-component vector of float) +0:120 Function Call: TDDither(vf4; ( global highp 4-component vector of float) +0:120 'outcol' ( temp highp 4-component vector of float) +0:122 vector scale second child into first child ( temp highp 3-component vector of float) +0:122 vector swizzle ( temp highp 3-component vector of float) +0:122 'outcol' ( temp highp 4-component vector of float) +0:122 Sequence +0:122 Constant: +0:122 0 (const int) +0:122 Constant: +0:122 1 (const int) +0:122 Constant: +0:122 2 (const int) +0:122 'alpha' ( temp highp float) +0:126 Function Call: TDAlphaTest(f1; ( global void) +0:126 'alpha' ( temp highp float) +0:128 move second child to first child ( temp highp float) +0:128 direct index ( temp highp float) +0:128 'outcol' ( temp highp 4-component vector of float) +0:128 Constant: +0:128 3 (const int) +0:128 'alpha' ( temp highp float) +0:129 move second child to first child ( temp highp 4-component vector of float) +0:129 direct index (layout( location=0) temp highp 4-component vector of float) +0:129 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float) +0:129 Constant: +0:129 0 (const int) +0:129 Function Call: TDOutputSwizzle(vf4; ( global highp 4-component vector of float) +0:129 'outcol' ( temp highp 4-component vector of float) +0:135 Sequence +0:135 Sequence +0:135 move second child to first child ( temp highp int) +0:135 'i' ( temp highp int) +0:135 Constant: +0:135 1 (const int) +0:135 Loop with condition tested first +0:135 Loop Condition +0:135 Compare Less Than ( temp bool) +0:135 'i' ( temp highp int) +0:135 Constant: +0:135 1 (const int) +0:135 Loop Body +0:137 Sequence +0:137 move second child to first child ( temp highp 4-component vector of float) +0:137 indirect index (layout( location=0) temp highp 4-component vector of float) +0:137 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float) +0:137 'i' ( temp highp int) +0:137 Constant: +0:137 0.000000 +0:137 0.000000 +0:137 0.000000 +0:137 0.000000 +0:135 Loop Terminal Expression +0:135 Post-Increment ( temp highp int) +0:135 'i' ( temp highp int) +0:116 Function Definition: TDColor(vf4; ( global highp 4-component vector of float) +0:116 Function Parameters: +0:116 'color' ( in highp 4-component vector of float) +0:116 Sequence +0:116 Branch: Return with expression +0:116 'color' ( in highp 4-component vector of float) +0:117 Function Definition: TDCheckOrderIndTrans( ( global void) +0:117 Function Parameters: +0:119 Function Definition: TDCheckDiscard( ( global void) +0:119 Function Parameters: +0:120 Sequence +0:120 Function Call: TDCheckOrderIndTrans( ( global void) +0:122 Function Definition: TDDither(vf4; ( global highp 4-component vector of float) +0:122 Function Parameters: +0:122 'color' ( in highp 4-component vector of float) +0:124 Sequence +0:124 Sequence +0:124 move second child to first child ( temp highp float) +0:124 'd' ( temp highp float) +0:125 direct index ( temp highp float) +0:125 texture ( global highp 4-component vector of float) +0:124 'sTDNoiseMap' ( uniform highp sampler2D) +0:125 divide ( temp highp 2-component vector of float) +0:125 vector swizzle ( temp highp 2-component vector of float) +0:125 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) +0:125 Sequence +0:125 Constant: +0:125 0 (const int) +0:125 Constant: +0:125 1 (const int) +0:125 Constant: +0:125 256.000000 +0:125 Constant: +0:125 0 (const int) +0:126 subtract second child into first child ( temp highp float) +0:126 'd' ( temp highp float) +0:126 Constant: +0:126 0.500000 +0:127 divide second child into first child ( temp highp float) +0:127 'd' ( temp highp float) +0:127 Constant: +0:127 256.000000 +0:128 Branch: Return with expression +0:128 Construct vec4 ( temp highp 4-component vector of float) +0:128 add ( temp highp 3-component vector of float) +0:128 vector swizzle ( temp highp 3-component vector of float) +0:128 'color' ( in highp 4-component vector of float) +0:128 Sequence +0:128 Constant: +0:128 0 (const int) +0:128 Constant: +0:128 1 (const int) +0:128 Constant: +0:128 2 (const int) +0:128 'd' ( temp highp float) +0:128 direct index ( temp highp float) +0:128 'color' ( in highp 4-component vector of float) +0:128 Constant: +0:128 3 (const int) +0:130 Function Definition: TDFrontFacing(vf3;vf3; ( global bool) +0:130 Function Parameters: +0:130 'pos' ( in highp 3-component vector of float) +0:130 'normal' ( in highp 3-component vector of float) +0:132 Sequence +0:132 Branch: Return with expression +0:132 'gl_FrontFacing' ( gl_FrontFacing bool Face) +0:134 Function Definition: TDAttenuateLight(i1;f1; ( global highp float) +0:134 Function Parameters: +0:134 'index' ( in highp int) +0:134 'lightDist' ( in highp float) +0:136 Sequence +0:136 Branch: Return with expression +0:136 Constant: +0:136 1.000000 +0:138 Function Definition: TDAlphaTest(f1; ( global void) +0:138 Function Parameters: +0:138 'alpha' ( in highp float) +0:140 Function Definition: TDHardShadow(i1;vf3; ( global highp float) +0:140 Function Parameters: +0:140 'lightIndex' ( in highp int) +0:140 'worldSpacePos' ( in highp 3-component vector of float) +0:141 Sequence +0:141 Branch: Return with expression +0:141 Constant: +0:141 0.000000 +0:142 Function Definition: TDSoftShadow(i1;vf3;i1;i1; ( global highp float) +0:142 Function Parameters: +0:142 'lightIndex' ( in highp int) +0:142 'worldSpacePos' ( in highp 3-component vector of float) +0:142 'samples' ( in highp int) +0:142 'steps' ( in highp int) +0:143 Sequence +0:143 Branch: Return with expression +0:143 Constant: +0:143 0.000000 +0:144 Function Definition: TDSoftShadow(i1;vf3; ( global highp float) +0:144 Function Parameters: +0:144 'lightIndex' ( in highp int) +0:144 'worldSpacePos' ( in highp 3-component vector of float) +0:145 Sequence +0:145 Branch: Return with expression +0:145 Constant: +0:145 0.000000 +0:146 Function Definition: TDShadow(i1;vf3; ( global highp float) +0:146 Function Parameters: +0:146 'lightIndex' ( in highp int) +0:146 'worldSpacePos' ( in highp 3-component vector of float) +0:147 Sequence +0:147 Branch: Return with expression +0:147 Constant: +0:147 0.000000 +0:152 Function Definition: iTDRadicalInverse_VdC(u1; ( global highp float) +0:152 Function Parameters: +0:152 'bits' ( in highp uint) +0:154 Sequence +0:154 move second child to first child ( temp highp uint) +0:154 'bits' ( in highp uint) +0:154 inclusive-or ( temp highp uint) +0:154 left-shift ( temp highp uint) +0:154 'bits' ( in highp uint) +0:154 Constant: +0:154 16 (const uint) +0:154 right-shift ( temp highp uint) +0:154 'bits' ( in highp uint) +0:154 Constant: +0:154 16 (const uint) +0:155 move second child to first child ( temp highp uint) +0:155 'bits' ( in highp uint) +0:155 inclusive-or ( temp highp uint) +0:155 left-shift ( temp highp uint) +0:155 bitwise and ( temp highp uint) +0:155 'bits' ( in highp uint) +0:155 Constant: +0:155 1431655765 (const uint) +0:155 Constant: +0:155 1 (const uint) +0:155 right-shift ( temp highp uint) +0:155 bitwise and ( temp highp uint) +0:155 'bits' ( in highp uint) +0:155 Constant: +0:155 2863311530 (const uint) +0:155 Constant: +0:155 1 (const uint) +0:156 move second child to first child ( temp highp uint) +0:156 'bits' ( in highp uint) +0:156 inclusive-or ( temp highp uint) +0:156 left-shift ( temp highp uint) +0:156 bitwise and ( temp highp uint) +0:156 'bits' ( in highp uint) +0:156 Constant: +0:156 858993459 (const uint) +0:156 Constant: +0:156 2 (const uint) +0:156 right-shift ( temp highp uint) +0:156 bitwise and ( temp highp uint) +0:156 'bits' ( in highp uint) +0:156 Constant: +0:156 3435973836 (const uint) +0:156 Constant: +0:156 2 (const uint) +0:157 move second child to first child ( temp highp uint) +0:157 'bits' ( in highp uint) +0:157 inclusive-or ( temp highp uint) +0:157 left-shift ( temp highp uint) +0:157 bitwise and ( temp highp uint) +0:157 'bits' ( in highp uint) +0:157 Constant: +0:157 252645135 (const uint) +0:157 Constant: +0:157 4 (const uint) +0:157 right-shift ( temp highp uint) +0:157 bitwise and ( temp highp uint) +0:157 'bits' ( in highp uint) +0:157 Constant: +0:157 4042322160 (const uint) +0:157 Constant: +0:157 4 (const uint) +0:158 move second child to first child ( temp highp uint) +0:158 'bits' ( in highp uint) +0:158 inclusive-or ( temp highp uint) +0:158 left-shift ( temp highp uint) +0:158 bitwise and ( temp highp uint) +0:158 'bits' ( in highp uint) +0:158 Constant: +0:158 16711935 (const uint) +0:158 Constant: +0:158 8 (const uint) +0:158 right-shift ( temp highp uint) +0:158 bitwise and ( temp highp uint) +0:158 'bits' ( in highp uint) +0:158 Constant: +0:158 4278255360 (const uint) +0:158 Constant: +0:158 8 (const uint) +0:159 Branch: Return with expression +0:159 component-wise multiply ( temp highp float) +0:159 Convert uint to float ( temp highp float) +0:159 'bits' ( in highp uint) +0:159 Constant: +0:159 2.3283064365387e-10 +0:161 Function Definition: iTDHammersley(u1;u1; ( global highp 2-component vector of float) +0:161 Function Parameters: +0:161 'i' ( in highp uint) +0:161 'N' ( in highp uint) +0:163 Sequence +0:163 Branch: Return with expression +0:163 Construct vec2 ( temp highp 2-component vector of float) +0:163 divide ( temp highp float) +0:163 Convert uint to float ( temp highp float) +0:163 'i' ( in highp uint) +0:163 Convert uint to float ( temp highp float) +0:163 'N' ( in highp uint) +0:163 Function Call: iTDRadicalInverse_VdC(u1; ( global highp float) +0:163 'i' ( in highp uint) +0:165 Function Definition: iTDImportanceSampleGGX(vf2;f1;vf3; ( global highp 3-component vector of float) +0:165 Function Parameters: +0:165 'Xi' ( in highp 2-component vector of float) +0:165 'roughness2' ( in highp float) +0:165 'N' ( in highp 3-component vector of float) +0:167 Sequence +0:167 Sequence +0:167 move second child to first child ( temp highp float) +0:167 'a' ( temp highp float) +0:167 'roughness2' ( in highp float) +0:168 Sequence +0:168 move second child to first child ( temp highp float) +0:168 'phi' ( temp highp float) +0:168 component-wise multiply ( temp highp float) +0:168 Constant: +0:168 6.283185 +0:168 direct index ( temp highp float) +0:168 'Xi' ( in highp 2-component vector of float) +0:168 Constant: +0:168 0 (const int) +0:169 Sequence +0:169 move second child to first child ( temp highp float) +0:169 'cosTheta' ( temp highp float) +0:169 sqrt ( global highp float) +0:169 divide ( temp highp float) +0:169 subtract ( temp highp float) +0:169 Constant: +0:169 1.000000 +0:169 direct index ( temp highp float) +0:169 'Xi' ( in highp 2-component vector of float) +0:169 Constant: +0:169 1 (const int) +0:169 add ( temp highp float) +0:169 Constant: +0:169 1.000000 +0:169 component-wise multiply ( temp highp float) +0:169 subtract ( temp highp float) +0:169 component-wise multiply ( temp highp float) +0:169 'a' ( temp highp float) +0:169 'a' ( temp highp float) +0:169 Constant: +0:169 1.000000 +0:169 direct index ( temp highp float) +0:169 'Xi' ( in highp 2-component vector of float) +0:169 Constant: +0:169 1 (const int) +0:170 Sequence +0:170 move second child to first child ( temp highp float) +0:170 'sinTheta' ( temp highp float) +0:170 sqrt ( global highp float) +0:170 subtract ( temp highp float) +0:170 Constant: +0:170 1.000000 +0:170 component-wise multiply ( temp highp float) +0:170 'cosTheta' ( temp highp float) +0:170 'cosTheta' ( temp highp float) +0:173 move second child to first child ( temp highp float) +0:173 direct index ( temp highp float) +0:173 'H' ( temp highp 3-component vector of float) +0:173 Constant: +0:173 0 (const int) +0:173 component-wise multiply ( temp highp float) +0:173 'sinTheta' ( temp highp float) +0:173 cosine ( global highp float) +0:173 'phi' ( temp highp float) +0:174 move second child to first child ( temp highp float) +0:174 direct index ( temp highp float) +0:174 'H' ( temp highp 3-component vector of float) +0:174 Constant: +0:174 1 (const int) +0:174 component-wise multiply ( temp highp float) +0:174 'sinTheta' ( temp highp float) +0:174 sine ( global highp float) +0:174 'phi' ( temp highp float) +0:175 move second child to first child ( temp highp float) +0:175 direct index ( temp highp float) +0:175 'H' ( temp highp 3-component vector of float) +0:175 Constant: +0:175 2 (const int) +0:175 'cosTheta' ( temp highp float) +0:177 Sequence +0:177 move second child to first child ( temp highp 3-component vector of float) +0:177 'upVector' ( temp highp 3-component vector of float) +0:177 Test condition and select ( temp highp 3-component vector of float) +0:177 Condition +0:177 Compare Less Than ( temp bool) +0:177 Absolute value ( global highp float) +0:177 direct index ( temp highp float) +0:177 'N' ( in highp 3-component vector of float) +0:177 Constant: +0:177 2 (const int) +0:177 Constant: +0:177 0.999000 +0:177 true case +0:177 Constant: +0:177 0.000000 +0:177 0.000000 +0:177 1.000000 +0:177 false case +0:177 Constant: +0:177 1.000000 +0:177 0.000000 +0:177 0.000000 +0:178 Sequence +0:178 move second child to first child ( temp highp 3-component vector of float) +0:178 'tangentX' ( temp highp 3-component vector of float) +0:178 normalize ( global highp 3-component vector of float) +0:178 cross-product ( global highp 3-component vector of float) +0:178 'upVector' ( temp highp 3-component vector of float) +0:178 'N' ( in highp 3-component vector of float) +0:179 Sequence +0:179 move second child to first child ( temp highp 3-component vector of float) +0:179 'tangentY' ( temp highp 3-component vector of float) +0:179 cross-product ( global highp 3-component vector of float) +0:179 'N' ( in highp 3-component vector of float) +0:179 'tangentX' ( temp highp 3-component vector of float) +0:182 Sequence +0:182 move second child to first child ( temp highp 3-component vector of float) +0:182 'worldResult' ( temp highp 3-component vector of float) +0:182 add ( temp highp 3-component vector of float) +0:182 add ( temp highp 3-component vector of float) +0:182 vector-scale ( temp highp 3-component vector of float) +0:182 'tangentX' ( temp highp 3-component vector of float) +0:182 direct index ( temp highp float) +0:182 'H' ( temp highp 3-component vector of float) +0:182 Constant: +0:182 0 (const int) +0:182 vector-scale ( temp highp 3-component vector of float) +0:182 'tangentY' ( temp highp 3-component vector of float) +0:182 direct index ( temp highp float) +0:182 'H' ( temp highp 3-component vector of float) +0:182 Constant: +0:182 1 (const int) +0:182 vector-scale ( temp highp 3-component vector of float) +0:182 'N' ( in highp 3-component vector of float) +0:182 direct index ( temp highp float) +0:182 'H' ( temp highp 3-component vector of float) +0:182 Constant: +0:182 2 (const int) +0:183 Branch: Return with expression +0:183 'worldResult' ( temp highp 3-component vector of float) +0:185 Function Definition: iTDDistributionGGX(vf3;vf3;f1; ( global highp float) +0:185 Function Parameters: +0:185 'normal' ( in highp 3-component vector of float) +0:185 'half_vector' ( in highp 3-component vector of float) +0:185 'roughness2' ( in highp float) +0:? Sequence +0:189 Sequence +0:189 move second child to first child ( temp highp float) +0:189 'NdotH' ( temp highp float) +0:189 clamp ( global highp float) +0:189 dot-product ( global highp float) +0:189 'normal' ( in highp 3-component vector of float) +0:189 'half_vector' ( in highp 3-component vector of float) +0:189 Constant: +0:189 1.0000000000000e-06 +0:189 Constant: +0:189 1.000000 +0:191 Sequence +0:191 move second child to first child ( temp highp float) +0:191 'alpha2' ( temp highp float) +0:191 component-wise multiply ( temp highp float) +0:191 'roughness2' ( in highp float) +0:191 'roughness2' ( in highp float) +0:193 Sequence +0:193 move second child to first child ( temp highp float) +0:193 'denom' ( temp highp float) +0:193 add ( temp highp float) +0:193 component-wise multiply ( temp highp float) +0:193 component-wise multiply ( temp highp float) +0:193 'NdotH' ( temp highp float) +0:193 'NdotH' ( temp highp float) +0:193 subtract ( temp highp float) +0:193 'alpha2' ( temp highp float) +0:193 Constant: +0:193 1.000000 +0:193 Constant: +0:193 1.000000 +0:194 move second child to first child ( temp highp float) +0:194 'denom' ( temp highp float) +0:194 max ( global highp float) +0:194 Constant: +0:194 1.0000000000000e-08 +0:194 'denom' ( temp highp float) +0:195 Branch: Return with expression +0:195 divide ( temp highp float) +0:195 'alpha2' ( temp highp float) +0:195 component-wise multiply ( temp highp float) +0:195 component-wise multiply ( temp highp float) +0:195 Constant: +0:195 3.141593 +0:195 'denom' ( temp highp float) +0:195 'denom' ( temp highp float) +0:197 Function Definition: iTDCalcF(vf3;f1; ( global highp 3-component vector of float) +0:197 Function Parameters: +0:197 'F0' ( in highp 3-component vector of float) +0:197 'VdotH' ( in highp float) +0:198 Sequence +0:198 Branch: Return with expression +0:198 add ( temp highp 3-component vector of float) +0:198 'F0' ( in highp 3-component vector of float) +0:198 vector-scale ( temp highp 3-component vector of float) +0:198 subtract ( temp highp 3-component vector of float) +0:198 Constant: +0:198 1.000000 +0:198 1.000000 +0:198 1.000000 +0:198 'F0' ( in highp 3-component vector of float) +0:198 pow ( global highp float) +0:198 Constant: +0:198 2.000000 +0:198 component-wise multiply ( temp highp float) +0:198 subtract ( temp highp float) +0:198 component-wise multiply ( temp highp float) +0:198 Constant: +0:198 -5.554730 +0:198 'VdotH' ( in highp float) +0:198 Constant: +0:198 6.983160 +0:198 'VdotH' ( in highp float) +0:201 Function Definition: iTDCalcG(f1;f1;f1; ( global highp float) +0:201 Function Parameters: +0:201 'NdotL' ( in highp float) +0:201 'NdotV' ( in highp float) +0:201 'k' ( in highp float) +0:202 Sequence +0:202 Sequence +0:202 move second child to first child ( temp highp float) +0:202 'Gl' ( temp highp float) +0:202 divide ( temp highp float) +0:202 Constant: +0:202 1.000000 +0:202 add ( temp highp float) +0:202 component-wise multiply ( temp highp float) +0:202 'NdotL' ( in highp float) +0:202 subtract ( temp highp float) +0:202 Constant: +0:202 1.000000 +0:202 'k' ( in highp float) +0:202 'k' ( in highp float) +0:203 Sequence +0:203 move second child to first child ( temp highp float) +0:203 'Gv' ( temp highp float) +0:203 divide ( temp highp float) +0:203 Constant: +0:203 1.000000 +0:203 add ( temp highp float) +0:203 component-wise multiply ( temp highp float) +0:203 'NdotV' ( in highp float) +0:203 subtract ( temp highp float) +0:203 Constant: +0:203 1.000000 +0:203 'k' ( in highp float) +0:203 'k' ( in highp float) +0:204 Branch: Return with expression +0:204 component-wise multiply ( temp highp float) +0:204 'Gl' ( temp highp float) +0:204 'Gv' ( temp highp float) +0:207 Function Definition: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:207 Function Parameters: +0:207 'index' ( in highp int) +0:207 'diffuseColor' ( in highp 3-component vector of float) +0:207 'specularColor' ( in highp 3-component vector of float) +0:207 'worldSpacePos' ( in highp 3-component vector of float) +0:207 'normal' ( in highp 3-component vector of float) +0:207 'shadowStrength' ( in highp float) +0:207 'shadowColor' ( in highp 3-component vector of float) +0:207 'camVector' ( in highp 3-component vector of float) +0:207 'roughness' ( in highp float) +0:? Sequence +0:210 Branch: Return with expression +0:210 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:213 Function Definition: TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void) +0:213 Function Parameters: +0:213 'diffuseContrib' ( inout highp 3-component vector of float) +0:213 'specularContrib' ( inout highp 3-component vector of float) +0:213 'shadowStrengthOut' ( inout highp float) +0:213 'index' ( in highp int) +0:213 'diffuseColor' ( in highp 3-component vector of float) +0:213 'specularColor' ( in highp 3-component vector of float) +0:213 'worldSpacePos' ( in highp 3-component vector of float) +0:213 'normal' ( in highp 3-component vector of float) +0:213 'shadowStrength' ( in highp float) +0:213 'shadowColor' ( in highp 3-component vector of float) +0:213 'camVector' ( in highp 3-component vector of float) +0:213 'roughness' ( in highp float) +0:215 Sequence +0:215 Sequence +0:215 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 'index' ( in highp int) +0:215 'diffuseColor' ( in highp 3-component vector of float) +0:215 'specularColor' ( in highp 3-component vector of float) +0:215 'worldSpacePos' ( in highp 3-component vector of float) +0:215 'normal' ( in highp 3-component vector of float) +0:215 'shadowStrength' ( in highp float) +0:215 'shadowColor' ( in highp 3-component vector of float) +0:215 'camVector' ( in highp 3-component vector of float) +0:215 'roughness' ( in highp float) +0:215 move second child to first child ( temp highp 3-component vector of float) +0:215 'diffuseContrib' ( inout highp 3-component vector of float) +0:215 diffuse: direct index for structure ( global highp 3-component vector of float) +0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 Constant: +0:215 0 (const int) +0:216 move second child to first child ( temp highp 3-component vector of float) +0:216 'specularContrib' ( inout highp 3-component vector of float) +0:216 specular: direct index for structure ( global highp 3-component vector of float) +0:216 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:216 Constant: +0:216 1 (const int) +0:217 move second child to first child ( temp highp float) +0:217 'shadowStrengthOut' ( inout highp float) +0:217 shadowStrength: direct index for structure ( global highp float) +0:217 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:217 Constant: +0:217 2 (const int) +0:220 Function Definition: TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void) +0:220 Function Parameters: +0:220 'diffuseContrib' ( inout highp 3-component vector of float) +0:220 'specularContrib' ( inout highp 3-component vector of float) +0:220 'index' ( in highp int) +0:220 'diffuseColor' ( in highp 3-component vector of float) +0:220 'specularColor' ( in highp 3-component vector of float) +0:220 'worldSpacePos' ( in highp 3-component vector of float) +0:220 'normal' ( in highp 3-component vector of float) +0:220 'shadowStrength' ( in highp float) +0:220 'shadowColor' ( in highp 3-component vector of float) +0:220 'camVector' ( in highp 3-component vector of float) +0:220 'roughness' ( in highp float) +0:222 Sequence +0:222 Sequence +0:222 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 'index' ( in highp int) +0:222 'diffuseColor' ( in highp 3-component vector of float) +0:222 'specularColor' ( in highp 3-component vector of float) +0:222 'worldSpacePos' ( in highp 3-component vector of float) +0:222 'normal' ( in highp 3-component vector of float) +0:222 'shadowStrength' ( in highp float) +0:222 'shadowColor' ( in highp 3-component vector of float) +0:222 'camVector' ( in highp 3-component vector of float) +0:222 'roughness' ( in highp float) +0:222 move second child to first child ( temp highp 3-component vector of float) +0:222 'diffuseContrib' ( inout highp 3-component vector of float) +0:222 diffuse: direct index for structure ( global highp 3-component vector of float) +0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 Constant: +0:222 0 (const int) +0:223 move second child to first child ( temp highp 3-component vector of float) +0:223 'specularContrib' ( inout highp 3-component vector of float) +0:223 specular: direct index for structure ( global highp 3-component vector of float) +0:223 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:223 Constant: +0:223 1 (const int) +0:226 Function Definition: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:226 Function Parameters: +0:226 'index' ( in highp int) +0:226 'diffuseColor' ( in highp 3-component vector of float) +0:226 'specularColor' ( in highp 3-component vector of float) +0:226 'normal' ( in highp 3-component vector of float) +0:226 'camVector' ( in highp 3-component vector of float) +0:226 'roughness' ( in highp float) +0:226 'ambientOcclusion' ( in highp float) +0:? Sequence +0:229 Branch: Return with expression +0:229 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:232 Function Definition: TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1; ( global void) +0:232 Function Parameters: +0:232 'diffuseContrib' ( inout highp 3-component vector of float) +0:232 'specularContrib' ( inout highp 3-component vector of float) +0:232 'index' ( in highp int) +0:232 'diffuseColor' ( in highp 3-component vector of float) +0:232 'specularColor' ( in highp 3-component vector of float) +0:232 'normal' ( in highp 3-component vector of float) +0:232 'camVector' ( in highp 3-component vector of float) +0:232 'roughness' ( in highp float) +0:232 'ambientOcclusion' ( in highp float) +0:234 Sequence +0:234 Sequence +0:234 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:234 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:234 Function Call: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:234 'index' ( in highp int) +0:234 'diffuseColor' ( in highp 3-component vector of float) +0:234 'specularColor' ( in highp 3-component vector of float) +0:234 'normal' ( in highp 3-component vector of float) +0:234 'camVector' ( in highp 3-component vector of float) +0:234 'roughness' ( in highp float) +0:234 'ambientOcclusion' ( in highp float) +0:235 move second child to first child ( temp highp 3-component vector of float) +0:235 'diffuseContrib' ( inout highp 3-component vector of float) +0:235 diffuse: direct index for structure ( global highp 3-component vector of float) +0:235 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:235 Constant: +0:235 0 (const int) +0:236 move second child to first child ( temp highp 3-component vector of float) +0:236 'specularContrib' ( inout highp 3-component vector of float) +0:236 specular: direct index for structure ( global highp 3-component vector of float) +0:236 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:236 Constant: +0:236 1 (const int) +0:239 Function Definition: TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:239 Function Parameters: +0:239 'index' ( in highp int) +0:239 'worldSpacePos' ( in highp 3-component vector of float) +0:239 'normal' ( in highp 3-component vector of float) +0:239 'shadowStrength' ( in highp float) +0:239 'shadowColor' ( in highp 3-component vector of float) +0:239 'camVector' ( in highp 3-component vector of float) +0:239 'shininess' ( in highp float) +0:239 'shininess2' ( in highp float) +0:? Sequence +0:242 switch +0:242 condition +0:242 'index' ( in highp int) +0:242 body +0:242 Sequence +0:244 default: +0:? Sequence +0:245 move second child to first child ( temp highp 3-component vector of float) +0:245 diffuse: direct index for structure ( global highp 3-component vector of float) +0:245 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:245 Constant: +0:245 0 (const int) +0:245 Constant: +0:245 0.000000 +0:245 0.000000 +0:245 0.000000 +0:246 move second child to first child ( temp highp 3-component vector of float) +0:246 specular: direct index for structure ( global highp 3-component vector of float) +0:246 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:246 Constant: +0:246 1 (const int) +0:246 Constant: +0:246 0.000000 +0:246 0.000000 +0:246 0.000000 +0:247 move second child to first child ( temp highp 3-component vector of float) +0:247 specular2: direct index for structure ( global highp 3-component vector of float) +0:247 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:247 Constant: +0:247 2 (const int) +0:247 Constant: +0:247 0.000000 +0:247 0.000000 +0:247 0.000000 +0:248 move second child to first child ( temp highp float) +0:248 shadowStrength: direct index for structure ( global highp float) +0:248 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:248 Constant: +0:248 3 (const int) +0:248 Constant: +0:248 0.000000 +0:249 Branch: Break +0:251 Branch: Return with expression +0:251 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:254 Function Definition: TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void) +0:254 Function Parameters: +0:254 'diffuseContrib' ( inout highp 3-component vector of float) +0:254 'specularContrib' ( inout highp 3-component vector of float) +0:254 'specularContrib2' ( inout highp 3-component vector of float) +0:254 'shadowStrengthOut' ( inout highp float) +0:254 'index' ( in highp int) +0:254 'worldSpacePos' ( in highp 3-component vector of float) +0:254 'normal' ( in highp 3-component vector of float) +0:254 'shadowStrength' ( in highp float) +0:254 'shadowColor' ( in highp 3-component vector of float) +0:254 'camVector' ( in highp 3-component vector of float) +0:254 'shininess' ( in highp float) +0:254 'shininess2' ( in highp float) +0:? Sequence +0:257 switch +0:257 condition +0:257 'index' ( in highp int) +0:257 body +0:257 Sequence +0:259 default: +0:? Sequence +0:260 move second child to first child ( temp highp 3-component vector of float) +0:260 diffuse: direct index for structure ( global highp 3-component vector of float) +0:260 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:260 Constant: +0:260 0 (const int) +0:260 Constant: +0:260 0.000000 +0:260 0.000000 +0:260 0.000000 +0:261 move second child to first child ( temp highp 3-component vector of float) +0:261 specular: direct index for structure ( global highp 3-component vector of float) +0:261 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:261 Constant: +0:261 1 (const int) +0:261 Constant: +0:261 0.000000 +0:261 0.000000 +0:261 0.000000 +0:262 move second child to first child ( temp highp 3-component vector of float) +0:262 specular2: direct index for structure ( global highp 3-component vector of float) +0:262 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:262 Constant: +0:262 2 (const int) +0:262 Constant: +0:262 0.000000 +0:262 0.000000 +0:262 0.000000 +0:263 move second child to first child ( temp highp float) +0:263 shadowStrength: direct index for structure ( global highp float) +0:263 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:263 Constant: +0:263 3 (const int) +0:263 Constant: +0:263 0.000000 +0:264 Branch: Break +0:266 move second child to first child ( temp highp 3-component vector of float) +0:266 'diffuseContrib' ( inout highp 3-component vector of float) +0:266 diffuse: direct index for structure ( global highp 3-component vector of float) +0:266 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:266 Constant: +0:266 0 (const int) +0:267 move second child to first child ( temp highp 3-component vector of float) +0:267 'specularContrib' ( inout highp 3-component vector of float) +0:267 specular: direct index for structure ( global highp 3-component vector of float) +0:267 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:267 Constant: +0:267 1 (const int) +0:268 move second child to first child ( temp highp 3-component vector of float) +0:268 'specularContrib2' ( inout highp 3-component vector of float) +0:268 specular2: direct index for structure ( global highp 3-component vector of float) +0:268 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:268 Constant: +0:268 2 (const int) +0:269 move second child to first child ( temp highp float) +0:269 'shadowStrengthOut' ( inout highp float) +0:269 shadowStrength: direct index for structure ( global highp float) +0:269 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:269 Constant: +0:269 3 (const int) +0:272 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void) +0:272 Function Parameters: +0:272 'diffuseContrib' ( inout highp 3-component vector of float) +0:272 'specularContrib' ( inout highp 3-component vector of float) +0:272 'specularContrib2' ( inout highp 3-component vector of float) +0:272 'index' ( in highp int) +0:272 'worldSpacePos' ( in highp 3-component vector of float) +0:272 'normal' ( in highp 3-component vector of float) +0:272 'shadowStrength' ( in highp float) +0:272 'shadowColor' ( in highp 3-component vector of float) +0:272 'camVector' ( in highp 3-component vector of float) +0:272 'shininess' ( in highp float) +0:272 'shininess2' ( in highp float) +0:? Sequence +0:275 switch +0:275 condition +0:275 'index' ( in highp int) +0:275 body +0:275 Sequence +0:277 default: +0:? Sequence +0:278 move second child to first child ( temp highp 3-component vector of float) +0:278 diffuse: direct index for structure ( global highp 3-component vector of float) +0:278 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:278 Constant: +0:278 0 (const int) +0:278 Constant: +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:279 move second child to first child ( temp highp 3-component vector of float) +0:279 specular: direct index for structure ( global highp 3-component vector of float) +0:279 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:279 Constant: +0:279 1 (const int) +0:279 Constant: +0:279 0.000000 +0:279 0.000000 +0:279 0.000000 +0:280 move second child to first child ( temp highp 3-component vector of float) +0:280 specular2: direct index for structure ( global highp 3-component vector of float) +0:280 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:280 Constant: +0:280 2 (const int) +0:280 Constant: +0:280 0.000000 +0:280 0.000000 +0:280 0.000000 +0:281 move second child to first child ( temp highp float) +0:281 shadowStrength: direct index for structure ( global highp float) +0:281 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:281 Constant: +0:281 3 (const int) +0:281 Constant: +0:281 0.000000 +0:282 Branch: Break +0:284 move second child to first child ( temp highp 3-component vector of float) +0:284 'diffuseContrib' ( inout highp 3-component vector of float) +0:284 diffuse: direct index for structure ( global highp 3-component vector of float) +0:284 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:284 Constant: +0:284 0 (const int) +0:285 move second child to first child ( temp highp 3-component vector of float) +0:285 'specularContrib' ( inout highp 3-component vector of float) +0:285 specular: direct index for structure ( global highp 3-component vector of float) +0:285 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:285 Constant: +0:285 1 (const int) +0:286 move second child to first child ( temp highp 3-component vector of float) +0:286 'specularContrib2' ( inout highp 3-component vector of float) +0:286 specular2: direct index for structure ( global highp 3-component vector of float) +0:286 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:286 Constant: +0:286 2 (const int) +0:289 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1; ( global void) +0:289 Function Parameters: +0:289 'diffuseContrib' ( inout highp 3-component vector of float) +0:289 'specularContrib' ( inout highp 3-component vector of float) +0:289 'index' ( in highp int) +0:289 'worldSpacePos' ( in highp 3-component vector of float) +0:289 'normal' ( in highp 3-component vector of float) +0:289 'shadowStrength' ( in highp float) +0:289 'shadowColor' ( in highp 3-component vector of float) +0:289 'camVector' ( in highp 3-component vector of float) +0:289 'shininess' ( in highp float) +0:? Sequence +0:292 switch +0:292 condition +0:292 'index' ( in highp int) +0:292 body +0:292 Sequence +0:294 default: +0:? Sequence +0:295 move second child to first child ( temp highp 3-component vector of float) +0:295 diffuse: direct index for structure ( global highp 3-component vector of float) +0:295 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:295 Constant: +0:295 0 (const int) +0:295 Constant: +0:295 0.000000 +0:295 0.000000 +0:295 0.000000 +0:296 move second child to first child ( temp highp 3-component vector of float) +0:296 specular: direct index for structure ( global highp 3-component vector of float) +0:296 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:296 Constant: +0:296 1 (const int) +0:296 Constant: +0:296 0.000000 +0:296 0.000000 +0:296 0.000000 +0:297 move second child to first child ( temp highp 3-component vector of float) +0:297 specular2: direct index for structure ( global highp 3-component vector of float) +0:297 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:297 Constant: +0:297 2 (const int) +0:297 Constant: +0:297 0.000000 +0:297 0.000000 +0:297 0.000000 +0:298 move second child to first child ( temp highp float) +0:298 shadowStrength: direct index for structure ( global highp float) +0:298 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:298 Constant: +0:298 3 (const int) +0:298 Constant: +0:298 0.000000 +0:299 Branch: Break +0:301 move second child to first child ( temp highp 3-component vector of float) +0:301 'diffuseContrib' ( inout highp 3-component vector of float) +0:301 diffuse: direct index for structure ( global highp 3-component vector of float) +0:301 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:301 Constant: +0:301 0 (const int) +0:302 move second child to first child ( temp highp 3-component vector of float) +0:302 'specularContrib' ( inout highp 3-component vector of float) +0:302 specular: direct index for structure ( global highp 3-component vector of float) +0:302 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:302 Constant: +0:302 1 (const int) +0:305 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1; ( global void) +0:305 Function Parameters: +0:305 'diffuseContrib' ( inout highp 3-component vector of float) +0:305 'specularContrib' ( inout highp 3-component vector of float) +0:305 'specularContrib2' ( inout highp 3-component vector of float) +0:305 'index' ( in highp int) +0:305 'worldSpacePos' ( in highp 3-component vector of float) +0:305 'normal' ( in highp 3-component vector of float) +0:305 'camVector' ( in highp 3-component vector of float) +0:305 'shininess' ( in highp float) +0:305 'shininess2' ( in highp float) +0:? Sequence +0:308 switch +0:308 condition +0:308 'index' ( in highp int) +0:308 body +0:308 Sequence +0:310 default: +0:? Sequence +0:311 move second child to first child ( temp highp 3-component vector of float) +0:311 diffuse: direct index for structure ( global highp 3-component vector of float) +0:311 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:311 Constant: +0:311 0 (const int) +0:311 Constant: +0:311 0.000000 +0:311 0.000000 +0:311 0.000000 +0:312 move second child to first child ( temp highp 3-component vector of float) +0:312 specular: direct index for structure ( global highp 3-component vector of float) +0:312 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:312 Constant: +0:312 1 (const int) +0:312 Constant: +0:312 0.000000 +0:312 0.000000 +0:312 0.000000 +0:313 move second child to first child ( temp highp 3-component vector of float) +0:313 specular2: direct index for structure ( global highp 3-component vector of float) +0:313 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:313 Constant: +0:313 2 (const int) +0:313 Constant: +0:313 0.000000 +0:313 0.000000 +0:313 0.000000 +0:314 move second child to first child ( temp highp float) +0:314 shadowStrength: direct index for structure ( global highp float) +0:314 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:314 Constant: +0:314 3 (const int) +0:314 Constant: +0:314 0.000000 +0:315 Branch: Break +0:317 move second child to first child ( temp highp 3-component vector of float) +0:317 'diffuseContrib' ( inout highp 3-component vector of float) +0:317 diffuse: direct index for structure ( global highp 3-component vector of float) +0:317 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:317 Constant: +0:317 0 (const int) +0:318 move second child to first child ( temp highp 3-component vector of float) +0:318 'specularContrib' ( inout highp 3-component vector of float) +0:318 specular: direct index for structure ( global highp 3-component vector of float) +0:318 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:318 Constant: +0:318 1 (const int) +0:319 move second child to first child ( temp highp 3-component vector of float) +0:319 'specularContrib2' ( inout highp 3-component vector of float) +0:319 specular2: direct index for structure ( global highp 3-component vector of float) +0:319 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:319 Constant: +0:319 2 (const int) +0:322 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1; ( global void) +0:322 Function Parameters: +0:322 'diffuseContrib' ( inout highp 3-component vector of float) +0:322 'specularContrib' ( inout highp 3-component vector of float) +0:322 'index' ( in highp int) +0:322 'worldSpacePos' ( in highp 3-component vector of float) +0:322 'normal' ( in highp 3-component vector of float) +0:322 'camVector' ( in highp 3-component vector of float) +0:322 'shininess' ( in highp float) +0:? Sequence +0:325 switch +0:325 condition +0:325 'index' ( in highp int) +0:325 body +0:325 Sequence +0:327 default: +0:? Sequence +0:328 move second child to first child ( temp highp 3-component vector of float) +0:328 diffuse: direct index for structure ( global highp 3-component vector of float) +0:328 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:328 Constant: +0:328 0 (const int) +0:328 Constant: +0:328 0.000000 +0:328 0.000000 +0:328 0.000000 +0:329 move second child to first child ( temp highp 3-component vector of float) +0:329 specular: direct index for structure ( global highp 3-component vector of float) +0:329 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:329 Constant: +0:329 1 (const int) +0:329 Constant: +0:329 0.000000 +0:329 0.000000 +0:329 0.000000 +0:330 move second child to first child ( temp highp 3-component vector of float) +0:330 specular2: direct index for structure ( global highp 3-component vector of float) +0:330 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:330 Constant: +0:330 2 (const int) +0:330 Constant: +0:330 0.000000 +0:330 0.000000 +0:330 0.000000 +0:331 move second child to first child ( temp highp float) +0:331 shadowStrength: direct index for structure ( global highp float) +0:331 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:331 Constant: +0:331 3 (const int) +0:331 Constant: +0:331 0.000000 +0:332 Branch: Break +0:334 move second child to first child ( temp highp 3-component vector of float) +0:334 'diffuseContrib' ( inout highp 3-component vector of float) +0:334 diffuse: direct index for structure ( global highp 3-component vector of float) +0:334 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:334 Constant: +0:334 0 (const int) +0:335 move second child to first child ( temp highp 3-component vector of float) +0:335 'specularContrib' ( inout highp 3-component vector of float) +0:335 specular: direct index for structure ( global highp 3-component vector of float) +0:335 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:335 Constant: +0:335 1 (const int) +0:338 Function Definition: TDLighting(vf3;i1;vf3;vf3; ( global void) +0:338 Function Parameters: +0:338 'diffuseContrib' ( inout highp 3-component vector of float) +0:338 'index' ( in highp int) +0:338 'worldSpacePos' ( in highp 3-component vector of float) +0:338 'normal' ( in highp 3-component vector of float) +0:? Sequence +0:341 switch +0:341 condition +0:341 'index' ( in highp int) +0:341 body +0:341 Sequence +0:343 default: +0:? Sequence +0:344 move second child to first child ( temp highp 3-component vector of float) +0:344 diffuse: direct index for structure ( global highp 3-component vector of float) +0:344 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:344 Constant: +0:344 0 (const int) +0:344 Constant: +0:344 0.000000 +0:344 0.000000 +0:344 0.000000 +0:345 move second child to first child ( temp highp 3-component vector of float) +0:345 specular: direct index for structure ( global highp 3-component vector of float) +0:345 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:345 Constant: +0:345 1 (const int) +0:345 Constant: +0:345 0.000000 +0:345 0.000000 +0:345 0.000000 +0:346 move second child to first child ( temp highp 3-component vector of float) +0:346 specular2: direct index for structure ( global highp 3-component vector of float) +0:346 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:346 Constant: +0:346 2 (const int) +0:346 Constant: +0:346 0.000000 +0:346 0.000000 +0:346 0.000000 +0:347 move second child to first child ( temp highp float) +0:347 shadowStrength: direct index for structure ( global highp float) +0:347 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:347 Constant: +0:347 3 (const int) +0:347 Constant: +0:347 0.000000 +0:348 Branch: Break +0:350 move second child to first child ( temp highp 3-component vector of float) +0:350 'diffuseContrib' ( inout highp 3-component vector of float) +0:350 diffuse: direct index for structure ( global highp 3-component vector of float) +0:350 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:350 Constant: +0:350 0 (const int) +0:353 Function Definition: TDLighting(vf3;i1;vf3;vf3;f1;vf3; ( global void) +0:353 Function Parameters: +0:353 'diffuseContrib' ( inout highp 3-component vector of float) +0:353 'index' ( in highp int) +0:353 'worldSpacePos' ( in highp 3-component vector of float) +0:353 'normal' ( in highp 3-component vector of float) +0:353 'shadowStrength' ( in highp float) +0:353 'shadowColor' ( in highp 3-component vector of float) +0:? Sequence +0:356 switch +0:356 condition +0:356 'index' ( in highp int) +0:356 body +0:356 Sequence +0:358 default: +0:? Sequence +0:359 move second child to first child ( temp highp 3-component vector of float) +0:359 diffuse: direct index for structure ( global highp 3-component vector of float) +0:359 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:359 Constant: +0:359 0 (const int) +0:359 Constant: +0:359 0.000000 +0:359 0.000000 +0:359 0.000000 +0:360 move second child to first child ( temp highp 3-component vector of float) +0:360 specular: direct index for structure ( global highp 3-component vector of float) +0:360 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:360 Constant: +0:360 1 (const int) +0:360 Constant: +0:360 0.000000 +0:360 0.000000 +0:360 0.000000 +0:361 move second child to first child ( temp highp 3-component vector of float) +0:361 specular2: direct index for structure ( global highp 3-component vector of float) +0:361 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:361 Constant: +0:361 2 (const int) +0:361 Constant: +0:361 0.000000 +0:361 0.000000 +0:361 0.000000 +0:362 move second child to first child ( temp highp float) +0:362 shadowStrength: direct index for structure ( global highp float) +0:362 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:362 Constant: +0:362 3 (const int) +0:362 Constant: +0:362 0.000000 +0:363 Branch: Break +0:365 move second child to first child ( temp highp 3-component vector of float) +0:365 'diffuseContrib' ( inout highp 3-component vector of float) +0:365 diffuse: direct index for structure ( global highp 3-component vector of float) +0:365 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:365 Constant: +0:365 0 (const int) +0:367 Function Definition: TDProjMap(i1;vf3;vf4; ( global highp 4-component vector of float) +0:367 Function Parameters: +0:367 'index' ( in highp int) +0:367 'worldSpacePos' ( in highp 3-component vector of float) +0:367 'defaultColor' ( in highp 4-component vector of float) +0:368 Sequence +0:368 switch +0:368 condition +0:368 'index' ( in highp int) +0:368 body +0:368 Sequence +0:370 default: +0:? Sequence +0:370 Branch: Return with expression +0:370 'defaultColor' ( in highp 4-component vector of float) +0:373 Function Definition: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float) +0:373 Function Parameters: +0:373 'color' ( in highp 4-component vector of float) +0:373 'lightingSpacePosition' ( in highp 3-component vector of float) +0:373 'cameraIndex' ( in highp int) +0:374 Sequence +0:374 switch +0:374 condition +0:374 'cameraIndex' ( in highp int) +0:374 body +0:374 Sequence +0:375 default: +0:376 case: with expression +0:376 Constant: +0:376 0 (const int) +0:? Sequence +0:378 Sequence +0:378 Branch: Return with expression +0:378 'color' ( in highp 4-component vector of float) +0:382 Function Definition: TDFog(vf4;vf3; ( global highp 4-component vector of float) +0:382 Function Parameters: +0:382 'color' ( in highp 4-component vector of float) +0:382 'lightingSpacePosition' ( in highp 3-component vector of float) +0:384 Sequence +0:384 Branch: Return with expression +0:384 Function Call: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float) +0:384 'color' ( in highp 4-component vector of float) +0:384 'lightingSpacePosition' ( in highp 3-component vector of float) +0:384 Constant: +0:384 0 (const int) +0:386 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float) +0:386 Function Parameters: +0:386 'index' ( in highp int) +0:386 't' ( in highp 3-component vector of float) +0:? Sequence +0:388 Sequence +0:388 move second child to first child ( temp highp int) +0:388 'coord' ( temp highp int) +0:388 'index' ( in highp int) +0:389 Sequence +0:389 move second child to first child ( temp highp 4-component vector of float) +0:389 'samp' ( temp highp 4-component vector of float) +0:389 textureFetch ( global highp 4-component vector of float) +0:389 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:389 'coord' ( temp highp int) +0:390 move second child to first child ( temp highp float) +0:390 direct index ( temp highp float) +0:390 'v' ( temp highp 3-component vector of float) +0:390 Constant: +0:390 0 (const int) +0:390 direct index ( temp highp float) +0:390 't' ( in highp 3-component vector of float) +0:390 Constant: +0:390 0 (const int) +0:391 move second child to first child ( temp highp float) +0:391 direct index ( temp highp float) +0:391 'v' ( temp highp 3-component vector of float) +0:391 Constant: +0:391 1 (const int) +0:391 direct index ( temp highp float) +0:391 't' ( in highp 3-component vector of float) +0:391 Constant: +0:391 1 (const int) +0:392 move second child to first child ( temp highp float) +0:392 direct index ( temp highp float) +0:392 'v' ( temp highp 3-component vector of float) +0:392 Constant: +0:392 2 (const int) +0:392 direct index ( temp highp float) +0:392 'samp' ( temp highp 4-component vector of float) +0:392 Constant: +0:392 0 (const int) +0:393 move second child to first child ( temp highp 3-component vector of float) +0:393 vector swizzle ( temp highp 3-component vector of float) +0:393 't' ( in highp 3-component vector of float) +0:393 Sequence +0:393 Constant: +0:393 0 (const int) +0:393 Constant: +0:393 1 (const int) +0:393 Constant: +0:393 2 (const int) +0:393 vector swizzle ( temp highp 3-component vector of float) +0:393 'v' ( temp highp 3-component vector of float) +0:393 Sequence +0:393 Constant: +0:393 0 (const int) +0:393 Constant: +0:393 1 (const int) +0:393 Constant: +0:393 2 (const int) +0:394 Branch: Return with expression +0:394 't' ( in highp 3-component vector of float) +0:396 Function Definition: TDInstanceActive(i1; ( global bool) +0:396 Function Parameters: +0:396 'index' ( in highp int) +0:397 Sequence +0:397 subtract second child into first child ( temp highp int) +0:397 'index' ( in highp int) +0:397 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:397 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:397 Constant: +0:397 0 (const uint) +0:399 Sequence +0:399 move second child to first child ( temp highp int) +0:399 'coord' ( temp highp int) +0:399 'index' ( in highp int) +0:400 Sequence +0:400 move second child to first child ( temp highp 4-component vector of float) +0:400 'samp' ( temp highp 4-component vector of float) +0:400 textureFetch ( global highp 4-component vector of float) +0:400 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:400 'coord' ( temp highp int) +0:401 move second child to first child ( temp highp float) +0:401 'v' ( temp highp float) +0:401 direct index ( temp highp float) +0:401 'samp' ( temp highp 4-component vector of float) +0:401 Constant: +0:401 0 (const int) +0:402 Branch: Return with expression +0:402 Compare Not Equal ( temp bool) +0:402 'v' ( temp highp float) +0:402 Constant: +0:402 0.000000 +0:404 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:404 Function Parameters: +0:404 'index' ( in highp int) +0:404 'instanceActive' ( out bool) +0:405 Sequence +0:405 Sequence +0:405 move second child to first child ( temp highp int) +0:405 'origIndex' ( temp highp int) +0:405 'index' ( in highp int) +0:406 subtract second child into first child ( temp highp int) +0:406 'index' ( in highp int) +0:406 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:406 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:406 Constant: +0:406 0 (const uint) +0:408 Sequence +0:408 move second child to first child ( temp highp int) +0:408 'coord' ( temp highp int) +0:408 'index' ( in highp int) +0:409 Sequence +0:409 move second child to first child ( temp highp 4-component vector of float) +0:409 'samp' ( temp highp 4-component vector of float) +0:409 textureFetch ( global highp 4-component vector of float) +0:409 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:409 'coord' ( temp highp int) +0:410 move second child to first child ( temp highp float) +0:410 direct index ( temp highp float) +0:410 'v' ( temp highp 3-component vector of float) +0:410 Constant: +0:410 0 (const int) +0:410 direct index ( temp highp float) +0:410 'samp' ( temp highp 4-component vector of float) +0:410 Constant: +0:410 1 (const int) +0:411 move second child to first child ( temp highp float) +0:411 direct index ( temp highp float) +0:411 'v' ( temp highp 3-component vector of float) +0:411 Constant: +0:411 1 (const int) +0:411 direct index ( temp highp float) +0:411 'samp' ( temp highp 4-component vector of float) +0:411 Constant: +0:411 2 (const int) +0:412 move second child to first child ( temp highp float) +0:412 direct index ( temp highp float) +0:412 'v' ( temp highp 3-component vector of float) +0:412 Constant: +0:412 2 (const int) +0:412 direct index ( temp highp float) +0:412 'samp' ( temp highp 4-component vector of float) +0:412 Constant: +0:412 3 (const int) +0:413 move second child to first child ( temp bool) +0:413 'instanceActive' ( out bool) +0:413 Compare Not Equal ( temp bool) +0:413 direct index ( temp highp float) +0:413 'samp' ( temp highp 4-component vector of float) +0:413 Constant: +0:413 0 (const int) +0:413 Constant: +0:413 0.000000 +0:414 Branch: Return with expression +0:414 'v' ( temp highp 3-component vector of float) +0:416 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float) +0:416 Function Parameters: +0:416 'index' ( in highp int) +0:417 Sequence +0:417 subtract second child into first child ( temp highp int) +0:417 'index' ( in highp int) +0:417 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:417 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:417 Constant: +0:417 0 (const uint) +0:419 Sequence +0:419 move second child to first child ( temp highp int) +0:419 'coord' ( temp highp int) +0:419 'index' ( in highp int) +0:420 Sequence +0:420 move second child to first child ( temp highp 4-component vector of float) +0:420 'samp' ( temp highp 4-component vector of float) +0:420 textureFetch ( global highp 4-component vector of float) +0:420 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:420 'coord' ( temp highp int) +0:421 move second child to first child ( temp highp float) +0:421 direct index ( temp highp float) +0:421 'v' ( temp highp 3-component vector of float) +0:421 Constant: +0:421 0 (const int) +0:421 direct index ( temp highp float) +0:421 'samp' ( temp highp 4-component vector of float) +0:421 Constant: +0:421 1 (const int) +0:422 move second child to first child ( temp highp float) +0:422 direct index ( temp highp float) +0:422 'v' ( temp highp 3-component vector of float) +0:422 Constant: +0:422 1 (const int) +0:422 direct index ( temp highp float) +0:422 'samp' ( temp highp 4-component vector of float) +0:422 Constant: +0:422 2 (const int) +0:423 move second child to first child ( temp highp float) +0:423 direct index ( temp highp float) +0:423 'v' ( temp highp 3-component vector of float) +0:423 Constant: +0:423 2 (const int) +0:423 direct index ( temp highp float) +0:423 'samp' ( temp highp 4-component vector of float) +0:423 Constant: +0:423 3 (const int) +0:424 Branch: Return with expression +0:424 'v' ( temp highp 3-component vector of float) +0:426 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float) +0:426 Function Parameters: +0:426 'index' ( in highp int) +0:427 Sequence +0:427 subtract second child into first child ( temp highp int) +0:427 'index' ( in highp int) +0:427 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:427 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:427 Constant: +0:427 0 (const uint) +0:428 Sequence +0:428 move second child to first child ( temp highp 3-component vector of float) +0:428 'v' ( temp highp 3-component vector of float) +0:428 Constant: +0:428 0.000000 +0:428 0.000000 +0:428 0.000000 +0:429 Sequence +0:429 move second child to first child ( temp highp 3X3 matrix of float) +0:429 'm' ( temp highp 3X3 matrix of float) +0:429 Constant: +0:429 1.000000 +0:429 0.000000 +0:429 0.000000 +0:429 0.000000 +0:429 1.000000 +0:429 0.000000 +0:429 0.000000 +0:429 0.000000 +0:429 1.000000 +0:433 Branch: Return with expression +0:433 'm' ( temp highp 3X3 matrix of float) +0:435 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float) +0:435 Function Parameters: +0:435 'index' ( in highp int) +0:436 Sequence +0:436 subtract second child into first child ( temp highp int) +0:436 'index' ( in highp int) +0:436 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:436 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:436 Constant: +0:436 0 (const uint) +0:437 Sequence +0:437 move second child to first child ( temp highp 3-component vector of float) +0:437 'v' ( temp highp 3-component vector of float) +0:437 Constant: +0:437 1.000000 +0:437 1.000000 +0:437 1.000000 +0:438 Branch: Return with expression +0:438 'v' ( temp highp 3-component vector of float) +0:440 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float) +0:440 Function Parameters: +0:440 'index' ( in highp int) +0:441 Sequence +0:441 subtract second child into first child ( temp highp int) +0:441 'index' ( in highp int) +0:441 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:441 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:441 Constant: +0:441 0 (const uint) +0:442 Sequence +0:442 move second child to first child ( temp highp 3-component vector of float) +0:442 'v' ( temp highp 3-component vector of float) +0:442 Constant: +0:442 0.000000 +0:442 0.000000 +0:442 0.000000 +0:443 Branch: Return with expression +0:443 'v' ( temp highp 3-component vector of float) +0:445 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float) +0:445 Function Parameters: +0:445 'index' ( in highp int) +0:446 Sequence +0:446 subtract second child into first child ( temp highp int) +0:446 'index' ( in highp int) +0:446 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:446 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:446 Constant: +0:446 0 (const uint) +0:447 Sequence +0:447 move second child to first child ( temp highp 3-component vector of float) +0:447 'v' ( temp highp 3-component vector of float) +0:447 Constant: +0:447 0.000000 +0:447 0.000000 +0:447 1.000000 +0:448 Branch: Return with expression +0:448 'v' ( temp highp 3-component vector of float) +0:450 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float) +0:450 Function Parameters: +0:450 'index' ( in highp int) +0:451 Sequence +0:451 subtract second child into first child ( temp highp int) +0:451 'index' ( in highp int) +0:451 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:451 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:451 Constant: +0:451 0 (const uint) +0:452 Sequence +0:452 move second child to first child ( temp highp 3-component vector of float) +0:452 'v' ( temp highp 3-component vector of float) +0:452 Constant: +0:452 0.000000 +0:452 1.000000 +0:452 0.000000 +0:453 Branch: Return with expression +0:453 'v' ( temp highp 3-component vector of float) +0:455 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:455 Function Parameters: +0:455 'id' ( in highp int) +0:456 Sequence +0:456 Sequence +0:456 move second child to first child ( temp bool) +0:456 'instanceActive' ( temp bool) +0:456 Constant: +0:456 true (const bool) +0:457 Sequence +0:457 move second child to first child ( temp highp 3-component vector of float) +0:457 't' ( temp highp 3-component vector of float) +0:457 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:457 'id' ( in highp int) +0:457 'instanceActive' ( temp bool) +0:458 Test condition and select ( temp void) +0:458 Condition +0:458 Negate conditional ( temp bool) +0:458 'instanceActive' ( temp bool) +0:458 true case +0:460 Sequence +0:460 Branch: Return with expression +0:460 Constant: +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:462 Sequence +0:462 move second child to first child ( temp highp 4X4 matrix of float) +0:462 'm' ( temp highp 4X4 matrix of float) +0:462 Constant: +0:462 1.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 1.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 1.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 1.000000 +0:464 Sequence +0:464 Sequence +0:464 move second child to first child ( temp highp 3-component vector of float) +0:464 'tt' ( temp highp 3-component vector of float) +0:464 't' ( temp highp 3-component vector of float) +0:465 add second child into first child ( temp highp float) +0:465 direct index ( temp highp float) +0:465 direct index ( temp highp 4-component vector of float) +0:465 'm' ( temp highp 4X4 matrix of float) +0:465 Constant: +0:465 3 (const int) +0:465 Constant: +0:465 0 (const int) +0:465 component-wise multiply ( temp highp float) +0:465 direct index ( temp highp float) +0:465 direct index ( temp highp 4-component vector of float) +0:465 'm' ( temp highp 4X4 matrix of float) +0:465 Constant: +0:465 0 (const int) +0:465 Constant: +0:465 0 (const int) +0:465 direct index ( temp highp float) +0:465 'tt' ( temp highp 3-component vector of float) +0:465 Constant: +0:465 0 (const int) +0:466 add second child into first child ( temp highp float) +0:466 direct index ( temp highp float) +0:466 direct index ( temp highp 4-component vector of float) +0:466 'm' ( temp highp 4X4 matrix of float) +0:466 Constant: +0:466 3 (const int) +0:466 Constant: +0:466 1 (const int) +0:466 component-wise multiply ( temp highp float) +0:466 direct index ( temp highp float) +0:466 direct index ( temp highp 4-component vector of float) +0:466 'm' ( temp highp 4X4 matrix of float) +0:466 Constant: +0:466 0 (const int) +0:466 Constant: +0:466 1 (const int) +0:466 direct index ( temp highp float) +0:466 'tt' ( temp highp 3-component vector of float) +0:466 Constant: +0:466 0 (const int) +0:467 add second child into first child ( temp highp float) +0:467 direct index ( temp highp float) +0:467 direct index ( temp highp 4-component vector of float) +0:467 'm' ( temp highp 4X4 matrix of float) +0:467 Constant: +0:467 3 (const int) +0:467 Constant: +0:467 2 (const int) +0:467 component-wise multiply ( temp highp float) +0:467 direct index ( temp highp float) +0:467 direct index ( temp highp 4-component vector of float) +0:467 'm' ( temp highp 4X4 matrix of float) +0:467 Constant: +0:467 0 (const int) +0:467 Constant: +0:467 2 (const int) +0:467 direct index ( temp highp float) +0:467 'tt' ( temp highp 3-component vector of float) +0:467 Constant: +0:467 0 (const int) +0:468 add second child into first child ( temp highp float) +0:468 direct index ( temp highp float) +0:468 direct index ( temp highp 4-component vector of float) +0:468 'm' ( temp highp 4X4 matrix of float) +0:468 Constant: +0:468 3 (const int) +0:468 Constant: +0:468 3 (const int) +0:468 component-wise multiply ( temp highp float) +0:468 direct index ( temp highp float) +0:468 direct index ( temp highp 4-component vector of float) +0:468 'm' ( temp highp 4X4 matrix of float) +0:468 Constant: +0:468 0 (const int) +0:468 Constant: +0:468 3 (const int) +0:468 direct index ( temp highp float) +0:468 'tt' ( temp highp 3-component vector of float) +0:468 Constant: +0:468 0 (const int) +0:469 add second child into first child ( temp highp float) +0:469 direct index ( temp highp float) +0:469 direct index ( temp highp 4-component vector of float) +0:469 'm' ( temp highp 4X4 matrix of float) +0:469 Constant: +0:469 3 (const int) +0:469 Constant: +0:469 0 (const int) +0:469 component-wise multiply ( temp highp float) +0:469 direct index ( temp highp float) +0:469 direct index ( temp highp 4-component vector of float) +0:469 'm' ( temp highp 4X4 matrix of float) +0:469 Constant: +0:469 1 (const int) +0:469 Constant: +0:469 0 (const int) +0:469 direct index ( temp highp float) +0:469 'tt' ( temp highp 3-component vector of float) +0:469 Constant: +0:469 1 (const int) +0:470 add second child into first child ( temp highp float) +0:470 direct index ( temp highp float) +0:470 direct index ( temp highp 4-component vector of float) +0:470 'm' ( temp highp 4X4 matrix of float) +0:470 Constant: +0:470 3 (const int) +0:470 Constant: +0:470 1 (const int) +0:470 component-wise multiply ( temp highp float) +0:470 direct index ( temp highp float) +0:470 direct index ( temp highp 4-component vector of float) +0:470 'm' ( temp highp 4X4 matrix of float) +0:470 Constant: +0:470 1 (const int) +0:470 Constant: +0:470 1 (const int) +0:470 direct index ( temp highp float) +0:470 'tt' ( temp highp 3-component vector of float) +0:470 Constant: +0:470 1 (const int) +0:471 add second child into first child ( temp highp float) +0:471 direct index ( temp highp float) +0:471 direct index ( temp highp 4-component vector of float) +0:471 'm' ( temp highp 4X4 matrix of float) +0:471 Constant: +0:471 3 (const int) +0:471 Constant: +0:471 2 (const int) +0:471 component-wise multiply ( temp highp float) +0:471 direct index ( temp highp float) +0:471 direct index ( temp highp 4-component vector of float) +0:471 'm' ( temp highp 4X4 matrix of float) +0:471 Constant: +0:471 1 (const int) +0:471 Constant: +0:471 2 (const int) +0:471 direct index ( temp highp float) +0:471 'tt' ( temp highp 3-component vector of float) +0:471 Constant: +0:471 1 (const int) +0:472 add second child into first child ( temp highp float) +0:472 direct index ( temp highp float) +0:472 direct index ( temp highp 4-component vector of float) +0:472 'm' ( temp highp 4X4 matrix of float) +0:472 Constant: +0:472 3 (const int) +0:472 Constant: +0:472 3 (const int) +0:472 component-wise multiply ( temp highp float) +0:472 direct index ( temp highp float) +0:472 direct index ( temp highp 4-component vector of float) +0:472 'm' ( temp highp 4X4 matrix of float) +0:472 Constant: +0:472 1 (const int) +0:472 Constant: +0:472 3 (const int) +0:472 direct index ( temp highp float) +0:472 'tt' ( temp highp 3-component vector of float) +0:472 Constant: +0:472 1 (const int) +0:473 add second child into first child ( temp highp float) +0:473 direct index ( temp highp float) +0:473 direct index ( temp highp 4-component vector of float) +0:473 'm' ( temp highp 4X4 matrix of float) +0:473 Constant: +0:473 3 (const int) +0:473 Constant: +0:473 0 (const int) +0:473 component-wise multiply ( temp highp float) +0:473 direct index ( temp highp float) +0:473 direct index ( temp highp 4-component vector of float) +0:473 'm' ( temp highp 4X4 matrix of float) +0:473 Constant: +0:473 2 (const int) +0:473 Constant: +0:473 0 (const int) +0:473 direct index ( temp highp float) +0:473 'tt' ( temp highp 3-component vector of float) +0:473 Constant: +0:473 2 (const int) +0:474 add second child into first child ( temp highp float) +0:474 direct index ( temp highp float) +0:474 direct index ( temp highp 4-component vector of float) +0:474 'm' ( temp highp 4X4 matrix of float) +0:474 Constant: +0:474 3 (const int) +0:474 Constant: +0:474 1 (const int) +0:474 component-wise multiply ( temp highp float) +0:474 direct index ( temp highp float) +0:474 direct index ( temp highp 4-component vector of float) +0:474 'm' ( temp highp 4X4 matrix of float) +0:474 Constant: +0:474 2 (const int) +0:474 Constant: +0:474 1 (const int) +0:474 direct index ( temp highp float) +0:474 'tt' ( temp highp 3-component vector of float) +0:474 Constant: +0:474 2 (const int) +0:475 add second child into first child ( temp highp float) +0:475 direct index ( temp highp float) +0:475 direct index ( temp highp 4-component vector of float) +0:475 'm' ( temp highp 4X4 matrix of float) +0:475 Constant: +0:475 3 (const int) +0:475 Constant: +0:475 2 (const int) +0:475 component-wise multiply ( temp highp float) +0:475 direct index ( temp highp float) +0:475 direct index ( temp highp 4-component vector of float) +0:475 'm' ( temp highp 4X4 matrix of float) +0:475 Constant: +0:475 2 (const int) +0:475 Constant: +0:475 2 (const int) +0:475 direct index ( temp highp float) +0:475 'tt' ( temp highp 3-component vector of float) +0:475 Constant: +0:475 2 (const int) +0:476 add second child into first child ( temp highp float) +0:476 direct index ( temp highp float) +0:476 direct index ( temp highp 4-component vector of float) +0:476 'm' ( temp highp 4X4 matrix of float) +0:476 Constant: +0:476 3 (const int) +0:476 Constant: +0:476 3 (const int) +0:476 component-wise multiply ( temp highp float) +0:476 direct index ( temp highp float) +0:476 direct index ( temp highp 4-component vector of float) +0:476 'm' ( temp highp 4X4 matrix of float) +0:476 Constant: +0:476 2 (const int) +0:476 Constant: +0:476 3 (const int) +0:476 direct index ( temp highp float) +0:476 'tt' ( temp highp 3-component vector of float) +0:476 Constant: +0:476 2 (const int) +0:478 Branch: Return with expression +0:478 'm' ( temp highp 4X4 matrix of float) +0:480 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:480 Function Parameters: +0:480 'id' ( in highp int) +0:481 Sequence +0:481 Sequence +0:481 move second child to first child ( temp highp 3X3 matrix of float) +0:481 'm' ( temp highp 3X3 matrix of float) +0:481 Constant: +0:481 1.000000 +0:481 0.000000 +0:481 0.000000 +0:481 0.000000 +0:481 1.000000 +0:481 0.000000 +0:481 0.000000 +0:481 0.000000 +0:481 1.000000 +0:482 Branch: Return with expression +0:482 'm' ( temp highp 3X3 matrix of float) +0:484 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float) +0:484 Function Parameters: +0:484 'id' ( in highp int) +0:485 Sequence +0:485 Sequence +0:485 move second child to first child ( temp highp 3X3 matrix of float) +0:485 'm' ( temp highp 3X3 matrix of float) +0:485 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:485 'id' ( in highp int) +0:486 Branch: Return with expression +0:486 'm' ( temp highp 3X3 matrix of float) +0:488 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float) +0:488 Function Parameters: +0:488 'index' ( in highp int) +0:488 'curColor' ( in highp 4-component vector of float) +0:489 Sequence +0:489 subtract second child into first child ( temp highp int) +0:489 'index' ( in highp int) +0:489 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:489 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:489 Constant: +0:489 0 (const uint) +0:491 Sequence +0:491 move second child to first child ( temp highp int) +0:491 'coord' ( temp highp int) +0:491 'index' ( in highp int) +0:492 Sequence +0:492 move second child to first child ( temp highp 4-component vector of float) +0:492 'samp' ( temp highp 4-component vector of float) +0:492 textureFetch ( global highp 4-component vector of float) +0:492 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) +0:492 'coord' ( temp highp int) +0:493 move second child to first child ( temp highp float) +0:493 direct index ( temp highp float) +0:493 'v' ( temp highp 4-component vector of float) +0:493 Constant: +0:493 0 (const int) +0:493 direct index ( temp highp float) +0:493 'samp' ( temp highp 4-component vector of float) +0:493 Constant: +0:493 0 (const int) +0:494 move second child to first child ( temp highp float) +0:494 direct index ( temp highp float) +0:494 'v' ( temp highp 4-component vector of float) +0:494 Constant: +0:494 1 (const int) +0:494 direct index ( temp highp float) +0:494 'samp' ( temp highp 4-component vector of float) +0:494 Constant: +0:494 1 (const int) +0:495 move second child to first child ( temp highp float) +0:495 direct index ( temp highp float) +0:495 'v' ( temp highp 4-component vector of float) +0:495 Constant: +0:495 2 (const int) +0:495 direct index ( temp highp float) +0:495 'samp' ( temp highp 4-component vector of float) +0:495 Constant: +0:495 2 (const int) +0:496 move second child to first child ( temp highp float) +0:496 direct index ( temp highp float) +0:496 'v' ( temp highp 4-component vector of float) +0:496 Constant: +0:496 3 (const int) +0:496 Constant: +0:496 1.000000 +0:497 move second child to first child ( temp highp float) +0:497 direct index ( temp highp float) +0:497 'curColor' ( in highp 4-component vector of float) +0:497 Constant: +0:497 0 (const int) +0:497 direct index ( temp highp float) +0:497 'v' ( temp highp 4-component vector of float) +0:497 Constant: +0:497 0 (const int) +0:499 move second child to first child ( temp highp float) +0:499 direct index ( temp highp float) +0:499 'curColor' ( in highp 4-component vector of float) +0:499 Constant: +0:499 1 (const int) +0:499 direct index ( temp highp float) +0:499 'v' ( temp highp 4-component vector of float) +0:499 Constant: +0:499 1 (const int) +0:501 move second child to first child ( temp highp float) +0:501 direct index ( temp highp float) +0:501 'curColor' ( in highp 4-component vector of float) +0:501 Constant: +0:501 2 (const int) +0:501 direct index ( temp highp float) +0:501 'v' ( temp highp 4-component vector of float) +0:501 Constant: +0:501 2 (const int) +0:503 Branch: Return with expression +0:503 'curColor' ( in highp 4-component vector of float) +0:2 Function Definition: TDOutputSwizzle(vf4; ( global highp 4-component vector of float) +0:2 Function Parameters: +0:2 'c' ( in highp 4-component vector of float) +0:4 Sequence +0:4 Branch: Return with expression +0:4 vector swizzle ( temp highp 4-component vector of float) +0:4 'c' ( in highp 4-component vector of float) +0:4 Sequence +0:4 Constant: +0:4 0 (const int) +0:4 Constant: +0:4 1 (const int) +0:4 Constant: +0:4 2 (const int) +0:4 Constant: +0:4 3 (const int) +0:6 Function Definition: TDOutputSwizzle(vu4; ( global highp 4-component vector of uint) +0:6 Function Parameters: +0:6 'c' ( in highp 4-component vector of uint) +0:8 Sequence +0:8 Branch: Return with expression +0:8 vector swizzle ( temp highp 4-component vector of uint) +0:8 'c' ( in highp 4-component vector of uint) +0:8 Sequence +0:8 Constant: +0:8 0 (const int) +0:8 Constant: +0:8 1 (const int) +0:8 Constant: +0:8 2 (const int) +0:8 Constant: +0:8 3 (const int) +0:? Linker Objects +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos}) +0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral}) +0:? 'sColorMap' ( uniform highp sampler2DArray) +0:? 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:? 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float) +0:? 'sTDNoiseMap' ( uniform highp sampler2D) +0:? 'sTDSineLookup' ( uniform highp sampler1D) +0:? 'sTDWhite2D' ( uniform highp sampler2D) +0:? 'sTDWhite3D' ( uniform highp sampler3D) +0:? 'sTDWhite2DArray' ( uniform highp sampler2DArray) +0:? 'sTDWhiteCube' ( uniform highp samplerCube) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights}) +0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs}) +0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) + +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 939 + + Capability Shader + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 207 216 226 238 256 297 905 906 + Source GLSL 460 + Name 4 "main" + Name 20 "iTDCamToProj(vf4;vf3;i1;b1;" + Name 16 "v" + Name 17 "uv" + Name 18 "cameraIndex" + Name 19 "applyPickMod" + Name 26 "iTDWorldToProj(vf4;vf3;i1;b1;" + Name 22 "v" + Name 23 "uv" + Name 24 "cameraIndex" + Name 25 "applyPickMod" + Name 29 "TDInstanceID(" + Name 31 "TDCameraIndex(" + Name 34 "TDUVUnwrapCoord(" + Name 36 "TDPickID(" + Name 40 "iTDConvertPickId(i1;" + Name 39 "id" + Name 42 "TDWritePickingValues(" + Name 47 "TDWorldToProj(vf4;vf3;" + Name 45 "v" + Name 46 "uv" + Name 52 "TDWorldToProj(vf3;vf3;" + Name 50 "v" + Name 51 "uv" + Name 56 "TDWorldToProj(vf4;" + Name 55 "v" + Name 60 "TDWorldToProj(vf3;" + Name 59 "v" + Name 63 "TDPointColor(" + Name 68 "TDInstanceTexCoord(i1;vf3;" + Name 66 "index" + Name 67 "t" + Name 72 "TDInstanceActive(i1;" + Name 71 "index" + Name 77 "iTDInstanceTranslate(i1;b1;" + Name 75 "index" + Name 76 "instanceActive" + Name 81 "TDInstanceTranslate(i1;" + Name 80 "index" + Name 86 "TDInstanceRotateMat(i1;" + Name 85 "index" + Name 89 "TDInstanceScale(i1;" + Name 88 "index" + Name 92 "TDInstancePivot(i1;" + Name 91 "index" + Name 95 "TDInstanceRotTo(i1;" + Name 94 "index" + Name 98 "TDInstanceRotUp(i1;" + Name 97 "index" + Name 103 "TDInstanceMat(i1;" + Name 102 "id" + Name 106 "TDInstanceMat3(i1;" + Name 105 "id" + Name 109 "TDInstanceMat3ForNorm(i1;" + Name 108 "id" + Name 114 "TDInstanceColor(i1;vf4;" + Name 112 "index" + Name 113 "curColor" + Name 118 "TDInstanceDeform(i1;vf4;" + Name 116 "id" + Name 117 "pos" + Name 122 "TDInstanceDeformVec(i1;vf3;" + Name 120 "id" + Name 121 "vec" + Name 126 "TDInstanceDeformNorm(i1;vf3;" + Name 124 "id" + Name 125 "vec" + Name 129 "TDInstanceDeform(vf4;" + Name 128 "pos" + Name 133 "TDInstanceDeformVec(vf3;" + Name 132 "vec" + Name 136 "TDInstanceDeformNorm(vf3;" + Name 135 "vec" + Name 139 "TDInstanceActive(" + Name 141 "TDInstanceTranslate(" + Name 144 "TDInstanceRotateMat(" + Name 146 "TDInstanceScale(" + Name 149 "TDInstanceMat(" + Name 151 "TDInstanceMat3(" + Name 154 "TDInstanceTexCoord(vf3;" + Name 153 "t" + Name 157 "TDInstanceColor(vf4;" + Name 156 "curColor" + Name 160 "TDSkinnedDeform(vf4;" + Name 159 "pos" + Name 163 "TDSkinnedDeformVec(vf3;" + Name 162 "vec" + Name 169 "TDFastDeformTangent(vf3;vf4;vf3;" + Name 166 "oldNorm" + Name 167 "oldTangent" + Name 168 "deformedNorm" + Name 172 "TDBoneMat(i1;" + Name 171 "index" + Name 175 "TDDeform(vf4;" + Name 174 "pos" + Name 180 "TDDeform(i1;vf3;" + Name 178 "instanceID" + Name 179 "p" + Name 183 "TDDeform(vf3;" + Name 182 "pos" + Name 187 "TDDeformVec(i1;vf3;" + Name 185 "instanceID" + Name 186 "vec" + Name 190 "TDDeformVec(vf3;" + Name 189 "vec" + Name 194 "TDDeformNorm(i1;vf3;" + Name 192 "instanceID" + Name 193 "vec" + Name 197 "TDDeformNorm(vf3;" + Name 196 "vec" + Name 200 "TDSkinnedDeformNorm(vf3;" + Name 199 "vec" + Name 202 "texcoord" + Name 207 "uv" + Name 209 "param" + Name 214 "Vertex" + MemberName 214(Vertex) 0 "color" + MemberName 214(Vertex) 1 "worldSpacePos" + MemberName 214(Vertex) 2 "texCoord0" + MemberName 214(Vertex) 3 "cameraIndex" + MemberName 214(Vertex) 4 "instance" + Name 216 "oVert" + Name 225 "worldSpacePos" + Name 226 "P" + Name 227 "param" + Name 230 "uvUnwrapCoord" + Name 232 "param" + Name 236 "gl_PerVertex" + MemberName 236(gl_PerVertex) 0 "gl_Position" + MemberName 236(gl_PerVertex) 1 "gl_PointSize" + MemberName 236(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 236(gl_PerVertex) 3 "gl_CullDistance" + Name 238 "" + Name 239 "param" + Name 241 "param" + Name 246 "cameraIndex" + Name 256 "Cd" + Name 257 "param" + Name 269 "TDMatrix" + MemberName 269(TDMatrix) 0 "world" + MemberName 269(TDMatrix) 1 "worldInverse" + MemberName 269(TDMatrix) 2 "worldCam" + MemberName 269(TDMatrix) 3 "worldCamInverse" + MemberName 269(TDMatrix) 4 "cam" + MemberName 269(TDMatrix) 5 "camInverse" + MemberName 269(TDMatrix) 6 "camProj" + MemberName 269(TDMatrix) 7 "camProjInverse" + MemberName 269(TDMatrix) 8 "proj" + MemberName 269(TDMatrix) 9 "projInverse" + MemberName 269(TDMatrix) 10 "worldCamProj" + MemberName 269(TDMatrix) 11 "worldCamProjInverse" + MemberName 269(TDMatrix) 12 "quadReproject" + MemberName 269(TDMatrix) 13 "worldForNormals" + MemberName 269(TDMatrix) 14 "camForNormals" + MemberName 269(TDMatrix) 15 "worldCamForNormals" + Name 271 "TDMatricesBlock" + MemberName 271(TDMatricesBlock) 0 "uTDMats" + Name 273 "" + Name 297 "gl_InstanceIndex" + Name 299 "gl_DefaultUniformBlock" + MemberName 299(gl_DefaultUniformBlock) 0 "uTDInstanceIDOffset" + MemberName 299(gl_DefaultUniformBlock) 1 "uTDNumInstances" + MemberName 299(gl_DefaultUniformBlock) 2 "uTDAlphaTestVal" + MemberName 299(gl_DefaultUniformBlock) 3 "uConstant" + MemberName 299(gl_DefaultUniformBlock) 4 "uShadowStrength" + MemberName 299(gl_DefaultUniformBlock) 5 "uShadowColor" + MemberName 299(gl_DefaultUniformBlock) 6 "uDiffuseColor" + MemberName 299(gl_DefaultUniformBlock) 7 "uAmbientColor" + Name 301 "" + Name 325 "param" + Name 327 "param" + Name 329 "param" + Name 330 "param" + Name 340 "param" + Name 341 "param" + Name 347 "param" + Name 349 "param" + Name 358 "param" + Name 365 "coord" + Name 367 "samp" + Name 371 "sTDInstanceTexCoord" + Name 376 "v" + Name 397 "coord" + Name 399 "samp" + Name 400 "sTDInstanceT" + Name 405 "v" + Name 412 "origIndex" + Name 418 "coord" + Name 420 "samp" + Name 425 "v" + Name 446 "coord" + Name 448 "samp" + Name 453 "v" + Name 470 "v" + Name 472 "m" + Name 484 "v" + Name 493 "v" + Name 501 "v" + Name 509 "v" + Name 513 "instanceActive" + Name 514 "t" + Name 515 "param" + Name 517 "param" + Name 528 "m" + Name 534 "tt" + Name 647 "m" + Name 651 "m" + Name 652 "param" + Name 662 "coord" + Name 664 "samp" + Name 665 "sTDInstanceColor" + Name 670 "v" + Name 693 "param" + Name 705 "m" + Name 706 "param" + Name 725 "m" + Name 726 "param" + Name 745 "param" + Name 746 "param" + Name 752 "param" + Name 753 "param" + Name 759 "param" + Name 760 "param" + Name 766 "param" + Name 771 "param" + Name 776 "param" + Name 781 "param" + Name 786 "param" + Name 791 "param" + Name 796 "param" + Name 797 "param" + Name 803 "param" + Name 804 "param" + Name 821 "param" + Name 824 "param" + Name 830 "pos" + Name 836 "param" + Name 839 "param" + Name 841 "param" + Name 848 "param" + Name 849 "param" + Name 854 "param" + Name 857 "param" + Name 859 "param" + Name 866 "param" + Name 867 "param" + Name 872 "param" + Name 875 "param" + Name 877 "param" + Name 884 "param" + Name 885 "param" + Name 890 "param" + Name 896 "TDCameraInfo" + MemberName 896(TDCameraInfo) 0 "nearFar" + MemberName 896(TDCameraInfo) 1 "fog" + MemberName 896(TDCameraInfo) 2 "fogColor" + MemberName 896(TDCameraInfo) 3 "renderTOPCameraIndex" + Name 898 "TDCameraInfoBlock" + MemberName 898(TDCameraInfoBlock) 0 "uTDCamInfos" + Name 900 "" + Name 901 "TDGeneral" + MemberName 901(TDGeneral) 0 "ambientColor" + MemberName 901(TDGeneral) 1 "nearFar" + MemberName 901(TDGeneral) 2 "viewport" + MemberName 901(TDGeneral) 3 "viewportRes" + MemberName 901(TDGeneral) 4 "fog" + MemberName 901(TDGeneral) 5 "fogColor" + Name 902 "TDGeneralBlock" + MemberName 902(TDGeneralBlock) 0 "uTDGeneral" + Name 904 "" + Name 905 "N" + Name 906 "gl_VertexIndex" + Name 907 "TDLight" + MemberName 907(TDLight) 0 "position" + MemberName 907(TDLight) 1 "direction" + MemberName 907(TDLight) 2 "diffuse" + MemberName 907(TDLight) 3 "nearFar" + MemberName 907(TDLight) 4 "lightSize" + MemberName 907(TDLight) 5 "misc" + MemberName 907(TDLight) 6 "coneLookupScaleBias" + MemberName 907(TDLight) 7 "attenScaleBiasRoll" + MemberName 907(TDLight) 8 "shadowMapMatrix" + MemberName 907(TDLight) 9 "shadowMapCamMatrix" + MemberName 907(TDLight) 10 "shadowMapRes" + MemberName 907(TDLight) 11 "projMapMatrix" + Name 909 "TDLightBlock" + MemberName 909(TDLightBlock) 0 "uTDLights" + Name 911 "" + Name 912 "TDEnvLight" + MemberName 912(TDEnvLight) 0 "color" + MemberName 912(TDEnvLight) 1 "rotate" + Name 914 "TDEnvLightBlock" + MemberName 914(TDEnvLightBlock) 0 "uTDEnvLights" + Name 916 "" + Name 919 "TDEnvLightBuffer" + MemberName 919(TDEnvLightBuffer) 0 "shCoeffs" + Name 922 "uTDEnvLightBuffers" + Name 926 "mTD2DImageOutputs" + Name 930 "mTD2DArrayImageOutputs" + Name 934 "mTD3DImageOutputs" + Name 938 "mTDCubeImageOutputs" + Decorate 207(uv) Location 3 + MemberDecorate 214(Vertex) 3 Flat + MemberDecorate 214(Vertex) 4 Flat + Decorate 214(Vertex) Block + Decorate 216(oVert) Location 0 + Decorate 226(P) Location 0 + MemberDecorate 236(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 236(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 236(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 236(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 236(gl_PerVertex) Block + Decorate 256(Cd) Location 2 + MemberDecorate 269(TDMatrix) 0 ColMajor + MemberDecorate 269(TDMatrix) 0 Offset 0 + MemberDecorate 269(TDMatrix) 0 MatrixStride 16 + MemberDecorate 269(TDMatrix) 1 ColMajor + MemberDecorate 269(TDMatrix) 1 Offset 64 + MemberDecorate 269(TDMatrix) 1 MatrixStride 16 + MemberDecorate 269(TDMatrix) 2 ColMajor + MemberDecorate 269(TDMatrix) 2 Offset 128 + MemberDecorate 269(TDMatrix) 2 MatrixStride 16 + MemberDecorate 269(TDMatrix) 3 ColMajor + MemberDecorate 269(TDMatrix) 3 Offset 192 + MemberDecorate 269(TDMatrix) 3 MatrixStride 16 + MemberDecorate 269(TDMatrix) 4 ColMajor + MemberDecorate 269(TDMatrix) 4 Offset 256 + MemberDecorate 269(TDMatrix) 4 MatrixStride 16 + MemberDecorate 269(TDMatrix) 5 ColMajor + MemberDecorate 269(TDMatrix) 5 Offset 320 + MemberDecorate 269(TDMatrix) 5 MatrixStride 16 + MemberDecorate 269(TDMatrix) 6 ColMajor + MemberDecorate 269(TDMatrix) 6 Offset 384 + MemberDecorate 269(TDMatrix) 6 MatrixStride 16 + MemberDecorate 269(TDMatrix) 7 ColMajor + MemberDecorate 269(TDMatrix) 7 Offset 448 + MemberDecorate 269(TDMatrix) 7 MatrixStride 16 + MemberDecorate 269(TDMatrix) 8 ColMajor + MemberDecorate 269(TDMatrix) 8 Offset 512 + MemberDecorate 269(TDMatrix) 8 MatrixStride 16 + MemberDecorate 269(TDMatrix) 9 ColMajor + MemberDecorate 269(TDMatrix) 9 Offset 576 + MemberDecorate 269(TDMatrix) 9 MatrixStride 16 + MemberDecorate 269(TDMatrix) 10 ColMajor + MemberDecorate 269(TDMatrix) 10 Offset 640 + MemberDecorate 269(TDMatrix) 10 MatrixStride 16 + MemberDecorate 269(TDMatrix) 11 ColMajor + MemberDecorate 269(TDMatrix) 11 Offset 704 + MemberDecorate 269(TDMatrix) 11 MatrixStride 16 + MemberDecorate 269(TDMatrix) 12 ColMajor + MemberDecorate 269(TDMatrix) 12 Offset 768 + MemberDecorate 269(TDMatrix) 12 MatrixStride 16 + MemberDecorate 269(TDMatrix) 13 ColMajor + MemberDecorate 269(TDMatrix) 13 Offset 832 + MemberDecorate 269(TDMatrix) 13 MatrixStride 16 + MemberDecorate 269(TDMatrix) 14 ColMajor + MemberDecorate 269(TDMatrix) 14 Offset 880 + MemberDecorate 269(TDMatrix) 14 MatrixStride 16 + MemberDecorate 269(TDMatrix) 15 ColMajor + MemberDecorate 269(TDMatrix) 15 Offset 928 + MemberDecorate 269(TDMatrix) 15 MatrixStride 16 + Decorate 270 ArrayStride 976 + MemberDecorate 271(TDMatricesBlock) 0 Offset 0 + Decorate 271(TDMatricesBlock) Block + Decorate 273 DescriptorSet 0 + Decorate 273 Binding 1 + Decorate 297(gl_InstanceIndex) BuiltIn InstanceIndex + MemberDecorate 299(gl_DefaultUniformBlock) 0 Offset 0 + MemberDecorate 299(gl_DefaultUniformBlock) 1 Offset 4 + MemberDecorate 299(gl_DefaultUniformBlock) 2 Offset 8 + MemberDecorate 299(gl_DefaultUniformBlock) 3 Offset 16 + MemberDecorate 299(gl_DefaultUniformBlock) 4 Offset 28 + MemberDecorate 299(gl_DefaultUniformBlock) 5 Offset 32 + MemberDecorate 299(gl_DefaultUniformBlock) 6 Offset 48 + MemberDecorate 299(gl_DefaultUniformBlock) 7 Offset 64 + Decorate 299(gl_DefaultUniformBlock) Block + Decorate 301 DescriptorSet 0 + Decorate 301 Binding 0 + Decorate 371(sTDInstanceTexCoord) DescriptorSet 0 + Decorate 371(sTDInstanceTexCoord) Binding 16 + Decorate 400(sTDInstanceT) DescriptorSet 0 + Decorate 400(sTDInstanceT) Binding 15 + Decorate 665(sTDInstanceColor) DescriptorSet 0 + Decorate 665(sTDInstanceColor) Binding 17 + MemberDecorate 896(TDCameraInfo) 0 Offset 0 + MemberDecorate 896(TDCameraInfo) 1 Offset 16 + MemberDecorate 896(TDCameraInfo) 2 Offset 32 + MemberDecorate 896(TDCameraInfo) 3 Offset 48 + Decorate 897 ArrayStride 64 + MemberDecorate 898(TDCameraInfoBlock) 0 Offset 0 + Decorate 898(TDCameraInfoBlock) Block + Decorate 900 DescriptorSet 0 + Decorate 900 Binding 0 + MemberDecorate 901(TDGeneral) 0 Offset 0 + MemberDecorate 901(TDGeneral) 1 Offset 16 + MemberDecorate 901(TDGeneral) 2 Offset 32 + MemberDecorate 901(TDGeneral) 3 Offset 48 + MemberDecorate 901(TDGeneral) 4 Offset 64 + MemberDecorate 901(TDGeneral) 5 Offset 80 + MemberDecorate 902(TDGeneralBlock) 0 Offset 0 + Decorate 902(TDGeneralBlock) Block + Decorate 904 DescriptorSet 0 + Decorate 904 Binding 0 + Decorate 905(N) Location 1 + Decorate 906(gl_VertexIndex) BuiltIn VertexIndex + MemberDecorate 907(TDLight) 0 Offset 0 + MemberDecorate 907(TDLight) 1 Offset 16 + MemberDecorate 907(TDLight) 2 Offset 32 + MemberDecorate 907(TDLight) 3 Offset 48 + MemberDecorate 907(TDLight) 4 Offset 64 + MemberDecorate 907(TDLight) 5 Offset 80 + MemberDecorate 907(TDLight) 6 Offset 96 + MemberDecorate 907(TDLight) 7 Offset 112 + MemberDecorate 907(TDLight) 8 ColMajor + MemberDecorate 907(TDLight) 8 Offset 128 + MemberDecorate 907(TDLight) 8 MatrixStride 16 + MemberDecorate 907(TDLight) 9 ColMajor + MemberDecorate 907(TDLight) 9 Offset 192 + MemberDecorate 907(TDLight) 9 MatrixStride 16 + MemberDecorate 907(TDLight) 10 Offset 256 + MemberDecorate 907(TDLight) 11 ColMajor + MemberDecorate 907(TDLight) 11 Offset 272 + MemberDecorate 907(TDLight) 11 MatrixStride 16 + Decorate 908 ArrayStride 336 + MemberDecorate 909(TDLightBlock) 0 Offset 0 + Decorate 909(TDLightBlock) Block + Decorate 911 DescriptorSet 0 + Decorate 911 Binding 0 + MemberDecorate 912(TDEnvLight) 0 Offset 0 + MemberDecorate 912(TDEnvLight) 1 ColMajor + MemberDecorate 912(TDEnvLight) 1 Offset 16 + MemberDecorate 912(TDEnvLight) 1 MatrixStride 16 + Decorate 913 ArrayStride 64 + MemberDecorate 914(TDEnvLightBlock) 0 Offset 0 + Decorate 914(TDEnvLightBlock) Block + Decorate 916 DescriptorSet 0 + Decorate 916 Binding 0 + Decorate 918 ArrayStride 16 + MemberDecorate 919(TDEnvLightBuffer) 0 Restrict + MemberDecorate 919(TDEnvLightBuffer) 0 NonWritable + MemberDecorate 919(TDEnvLightBuffer) 0 Offset 0 + Decorate 919(TDEnvLightBuffer) BufferBlock + Decorate 922(uTDEnvLightBuffers) DescriptorSet 0 + Decorate 922(uTDEnvLightBuffers) Binding 0 + Decorate 926(mTD2DImageOutputs) DescriptorSet 0 + Decorate 926(mTD2DImageOutputs) Binding 0 + Decorate 930(mTD2DArrayImageOutputs) DescriptorSet 0 + Decorate 930(mTD2DArrayImageOutputs) Binding 0 + Decorate 934(mTD3DImageOutputs) DescriptorSet 0 + Decorate 934(mTD3DImageOutputs) Binding 0 + Decorate 938(mTDCubeImageOutputs) DescriptorSet 0 + Decorate 938(mTDCubeImageOutputs) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 9: TypeVector 6(float) 3 + 10: TypePointer Function 9(fvec3) + 11: TypeInt 32 1 + 12: TypePointer Function 11(int) + 13: TypeBool + 14: TypePointer Function 13(bool) + 15: TypeFunction 7(fvec4) 8(ptr) 10(ptr) 12(ptr) 14(ptr) + 28: TypeFunction 11(int) + 33: TypeFunction 9(fvec3) + 38: TypeFunction 6(float) 12(ptr) + 44: TypeFunction 7(fvec4) 8(ptr) 10(ptr) + 49: TypeFunction 7(fvec4) 10(ptr) 10(ptr) + 54: TypeFunction 7(fvec4) 8(ptr) + 58: TypeFunction 7(fvec4) 10(ptr) + 62: TypeFunction 7(fvec4) + 65: TypeFunction 9(fvec3) 12(ptr) 10(ptr) + 70: TypeFunction 13(bool) 12(ptr) + 74: TypeFunction 9(fvec3) 12(ptr) 14(ptr) + 79: TypeFunction 9(fvec3) 12(ptr) + 83: TypeMatrix 9(fvec3) 3 + 84: TypeFunction 83 12(ptr) + 100: TypeMatrix 7(fvec4) 4 + 101: TypeFunction 100 12(ptr) + 111: TypeFunction 7(fvec4) 12(ptr) 8(ptr) + 131: TypeFunction 9(fvec3) 10(ptr) + 138: TypeFunction 13(bool) + 143: TypeFunction 83 + 148: TypeFunction 100 + 165: TypeFunction 9(fvec3) 10(ptr) 8(ptr) 10(ptr) + 177: TypeFunction 7(fvec4) 12(ptr) 10(ptr) + 203: TypeInt 32 0 + 204: 203(int) Constant 8 + 205: TypeArray 9(fvec3) 204 + 206: TypePointer Input 205 + 207(uv): 206(ptr) Variable Input + 208: 11(int) Constant 0 + 210: TypePointer Input 9(fvec3) + 214(Vertex): TypeStruct 7(fvec4) 9(fvec3) 9(fvec3) 11(int) 11(int) + 215: TypePointer Output 214(Vertex) + 216(oVert): 215(ptr) Variable Output + 217: 11(int) Constant 2 + 219: TypePointer Output 9(fvec3) + 221: 11(int) Constant 4 + 223: TypePointer Output 11(int) + 226(P): 210(ptr) Variable Input + 234: 203(int) Constant 1 + 235: TypeArray 6(float) 234 +236(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 235 235 + 237: TypePointer Output 236(gl_PerVertex) + 238: 237(ptr) Variable Output + 244: TypePointer Output 7(fvec4) + 248: 11(int) Constant 3 + 251: 11(int) Constant 1 + 255: TypePointer Input 7(fvec4) + 256(Cd): 255(ptr) Variable Input + 265: 6(float) Constant 1073741824 + 266: 6(float) Constant 0 + 267: 7(fvec4) ConstantComposite 265 265 265 266 + 269(TDMatrix): TypeStruct 100 100 100 100 100 100 100 100 100 100 100 100 100 83 83 83 + 270: TypeArray 269(TDMatrix) 234 +271(TDMatricesBlock): TypeStruct 270 + 272: TypePointer Uniform 271(TDMatricesBlock) + 273: 272(ptr) Variable Uniform + 274: 11(int) Constant 8 + 275: TypePointer Uniform 100 + 288: 11(int) Constant 6 + 296: TypePointer Input 11(int) +297(gl_InstanceIndex): 296(ptr) Variable Input +299(gl_DefaultUniformBlock): TypeStruct 11(int) 11(int) 6(float) 9(fvec3) 6(float) 9(fvec3) 7(fvec4) 7(fvec4) + 300: TypePointer Uniform 299(gl_DefaultUniformBlock) + 301: 300(ptr) Variable Uniform + 302: TypePointer Uniform 11(int) + 316: 11(int) Constant 1073741824 + 324: 13(bool) ConstantTrue + 335: 6(float) Constant 1065353216 + 346: 9(fvec3) ConstantComposite 266 266 266 + 368: TypeImage 6(float) Buffer sampled format:Unknown + 369: TypeSampledImage 368 + 370: TypePointer UniformConstant 369 +371(sTDInstanceTexCoord): 370(ptr) Variable UniformConstant + 377: 203(int) Constant 0 + 378: TypePointer Function 6(float) + 387: 203(int) Constant 2 +400(sTDInstanceT): 370(ptr) Variable UniformConstant + 432: 203(int) Constant 3 + 471: TypePointer Function 83 + 473: 9(fvec3) ConstantComposite 335 266 266 + 474: 9(fvec3) ConstantComposite 266 335 266 + 475: 9(fvec3) ConstantComposite 266 266 335 + 476: 83 ConstantComposite 473 474 475 + 485: 9(fvec3) ConstantComposite 335 335 335 + 524: 7(fvec4) ConstantComposite 266 266 266 266 + 525: 100 ConstantComposite 524 524 524 524 + 527: TypePointer Function 100 + 529: 7(fvec4) ConstantComposite 335 266 266 266 + 530: 7(fvec4) ConstantComposite 266 335 266 266 + 531: 7(fvec4) ConstantComposite 266 266 335 266 + 532: 7(fvec4) ConstantComposite 266 266 266 335 + 533: 100 ConstantComposite 529 530 531 532 +665(sTDInstanceColor): 370(ptr) Variable UniformConstant + 730: 11(int) Constant 13 + 731: TypePointer Uniform 83 +896(TDCameraInfo): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 11(int) + 897: TypeArray 896(TDCameraInfo) 234 +898(TDCameraInfoBlock): TypeStruct 897 + 899: TypePointer Uniform 898(TDCameraInfoBlock) + 900: 899(ptr) Variable Uniform + 901(TDGeneral): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) +902(TDGeneralBlock): TypeStruct 901(TDGeneral) + 903: TypePointer Uniform 902(TDGeneralBlock) + 904: 903(ptr) Variable Uniform + 905(N): 210(ptr) Variable Input +906(gl_VertexIndex): 296(ptr) Variable Input + 907(TDLight): TypeStruct 7(fvec4) 9(fvec3) 9(fvec3) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 100 100 7(fvec4) 100 + 908: TypeArray 907(TDLight) 234 +909(TDLightBlock): TypeStruct 908 + 910: TypePointer Uniform 909(TDLightBlock) + 911: 910(ptr) Variable Uniform + 912(TDEnvLight): TypeStruct 9(fvec3) 83 + 913: TypeArray 912(TDEnvLight) 234 +914(TDEnvLightBlock): TypeStruct 913 + 915: TypePointer Uniform 914(TDEnvLightBlock) + 916: 915(ptr) Variable Uniform + 917: 203(int) Constant 9 + 918: TypeArray 9(fvec3) 917 +919(TDEnvLightBuffer): TypeStruct 918 + 920: TypeArray 919(TDEnvLightBuffer) 234 + 921: TypePointer Uniform 920 +922(uTDEnvLightBuffers): 921(ptr) Variable Uniform + 923: TypeImage 6(float) 2D nonsampled format:Rgba8 + 924: TypeArray 923 234 + 925: TypePointer UniformConstant 924 +926(mTD2DImageOutputs): 925(ptr) Variable UniformConstant + 927: TypeImage 6(float) 2D array nonsampled format:Rgba8 + 928: TypeArray 927 234 + 929: TypePointer UniformConstant 928 +930(mTD2DArrayImageOutputs): 929(ptr) Variable UniformConstant + 931: TypeImage 6(float) 3D nonsampled format:Rgba8 + 932: TypeArray 931 234 + 933: TypePointer UniformConstant 932 +934(mTD3DImageOutputs): 933(ptr) Variable UniformConstant + 935: TypeImage 6(float) Cube nonsampled format:Rgba8 + 936: TypeArray 935 234 + 937: TypePointer UniformConstant 936 +938(mTDCubeImageOutputs): 937(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 202(texcoord): 10(ptr) Variable Function + 209(param): 10(ptr) Variable Function +225(worldSpacePos): 8(ptr) Variable Function + 227(param): 10(ptr) Variable Function +230(uvUnwrapCoord): 10(ptr) Variable Function + 232(param): 10(ptr) Variable Function + 239(param): 8(ptr) Variable Function + 241(param): 10(ptr) Variable Function +246(cameraIndex): 12(ptr) Variable Function + 257(param): 8(ptr) Variable Function + 211: 210(ptr) AccessChain 207(uv) 208 + 212: 9(fvec3) Load 211 + Store 209(param) 212 + 213: 9(fvec3) FunctionCall 154(TDInstanceTexCoord(vf3;) 209(param) + Store 202(texcoord) 213 + 218: 9(fvec3) Load 202(texcoord) + 220: 219(ptr) AccessChain 216(oVert) 217 + Store 220 218 + 222: 11(int) FunctionCall 29(TDInstanceID() + 224: 223(ptr) AccessChain 216(oVert) 221 + Store 224 222 + 228: 9(fvec3) Load 226(P) + Store 227(param) 228 + 229: 7(fvec4) FunctionCall 183(TDDeform(vf3;) 227(param) + Store 225(worldSpacePos) 229 + 231: 9(fvec3) FunctionCall 34(TDUVUnwrapCoord() + Store 232(param) 231 + 233: 9(fvec3) FunctionCall 154(TDInstanceTexCoord(vf3;) 232(param) + Store 230(uvUnwrapCoord) 233 + 240: 7(fvec4) Load 225(worldSpacePos) + Store 239(param) 240 + 242: 9(fvec3) Load 230(uvUnwrapCoord) + Store 241(param) 242 + 243: 7(fvec4) FunctionCall 47(TDWorldToProj(vf4;vf3;) 239(param) 241(param) + 245: 244(ptr) AccessChain 238 208 + Store 245 243 + 247: 11(int) FunctionCall 31(TDCameraIndex() + Store 246(cameraIndex) 247 + 249: 11(int) Load 246(cameraIndex) + 250: 223(ptr) AccessChain 216(oVert) 248 + Store 250 249 + 252: 7(fvec4) Load 225(worldSpacePos) + 253: 9(fvec3) VectorShuffle 252 252 0 1 2 + 254: 219(ptr) AccessChain 216(oVert) 251 + Store 254 253 + 258: 7(fvec4) Load 256(Cd) + Store 257(param) 258 + 259: 7(fvec4) FunctionCall 157(TDInstanceColor(vf4;) 257(param) + 260: 244(ptr) AccessChain 216(oVert) 208 + Store 260 259 + Return + FunctionEnd +20(iTDCamToProj(vf4;vf3;i1;b1;): 7(fvec4) Function None 15 + 16(v): 8(ptr) FunctionParameter + 17(uv): 10(ptr) FunctionParameter + 18(cameraIndex): 12(ptr) FunctionParameter +19(applyPickMod): 14(ptr) FunctionParameter + 21: Label + 261: 13(bool) FunctionCall 139(TDInstanceActive() + 262: 13(bool) LogicalNot 261 + SelectionMerge 264 None + BranchConditional 262 263 264 + 263: Label + ReturnValue 267 + 264: Label + 276: 275(ptr) AccessChain 273 208 208 274 + 277: 100 Load 276 + 278: 7(fvec4) Load 16(v) + 279: 7(fvec4) MatrixTimesVector 277 278 + Store 16(v) 279 + 280: 7(fvec4) Load 16(v) + ReturnValue 280 + FunctionEnd +26(iTDWorldToProj(vf4;vf3;i1;b1;): 7(fvec4) Function None 15 + 22(v): 8(ptr) FunctionParameter + 23(uv): 10(ptr) FunctionParameter + 24(cameraIndex): 12(ptr) FunctionParameter +25(applyPickMod): 14(ptr) FunctionParameter + 27: Label + 283: 13(bool) FunctionCall 139(TDInstanceActive() + 284: 13(bool) LogicalNot 283 + SelectionMerge 286 None + BranchConditional 284 285 286 + 285: Label + ReturnValue 267 + 286: Label + 289: 275(ptr) AccessChain 273 208 208 288 + 290: 100 Load 289 + 291: 7(fvec4) Load 22(v) + 292: 7(fvec4) MatrixTimesVector 290 291 + Store 22(v) 292 + 293: 7(fvec4) Load 22(v) + ReturnValue 293 + FunctionEnd +29(TDInstanceID(): 11(int) Function None 28 + 30: Label + 298: 11(int) Load 297(gl_InstanceIndex) + 303: 302(ptr) AccessChain 301 208 + 304: 11(int) Load 303 + 305: 11(int) IAdd 298 304 + ReturnValue 305 + FunctionEnd +31(TDCameraIndex(): 11(int) Function None 28 + 32: Label + ReturnValue 208 + FunctionEnd +34(TDUVUnwrapCoord(): 9(fvec3) Function None 33 + 35: Label + 310: 210(ptr) AccessChain 207(uv) 208 + 311: 9(fvec3) Load 310 + ReturnValue 311 + FunctionEnd + 36(TDPickID(): 11(int) Function None 28 + 37: Label + ReturnValue 208 + FunctionEnd +40(iTDConvertPickId(i1;): 6(float) Function None 38 + 39(id): 12(ptr) FunctionParameter + 41: Label + 317: 11(int) Load 39(id) + 318: 11(int) BitwiseOr 317 316 + Store 39(id) 318 + 319: 11(int) Load 39(id) + 320: 6(float) Bitcast 319 + ReturnValue 320 + FunctionEnd +42(TDWritePickingValues(): 2 Function None 3 + 43: Label + Return + FunctionEnd +47(TDWorldToProj(vf4;vf3;): 7(fvec4) Function None 44 + 45(v): 8(ptr) FunctionParameter + 46(uv): 10(ptr) FunctionParameter + 48: Label + 325(param): 8(ptr) Variable Function + 327(param): 10(ptr) Variable Function + 329(param): 12(ptr) Variable Function + 330(param): 14(ptr) Variable Function + 323: 11(int) FunctionCall 31(TDCameraIndex() + 326: 7(fvec4) Load 45(v) + Store 325(param) 326 + 328: 9(fvec3) Load 46(uv) + Store 327(param) 328 + Store 329(param) 323 + Store 330(param) 324 + 331: 7(fvec4) FunctionCall 26(iTDWorldToProj(vf4;vf3;i1;b1;) 325(param) 327(param) 329(param) 330(param) + ReturnValue 331 + FunctionEnd +52(TDWorldToProj(vf3;vf3;): 7(fvec4) Function None 49 + 50(v): 10(ptr) FunctionParameter + 51(uv): 10(ptr) FunctionParameter + 53: Label + 340(param): 8(ptr) Variable Function + 341(param): 10(ptr) Variable Function + 334: 9(fvec3) Load 50(v) + 336: 6(float) CompositeExtract 334 0 + 337: 6(float) CompositeExtract 334 1 + 338: 6(float) CompositeExtract 334 2 + 339: 7(fvec4) CompositeConstruct 336 337 338 335 + Store 340(param) 339 + 342: 9(fvec3) Load 51(uv) + Store 341(param) 342 + 343: 7(fvec4) FunctionCall 47(TDWorldToProj(vf4;vf3;) 340(param) 341(param) + ReturnValue 343 + FunctionEnd +56(TDWorldToProj(vf4;): 7(fvec4) Function None 54 + 55(v): 8(ptr) FunctionParameter + 57: Label + 347(param): 8(ptr) Variable Function + 349(param): 10(ptr) Variable Function + 348: 7(fvec4) Load 55(v) + Store 347(param) 348 + Store 349(param) 346 + 350: 7(fvec4) FunctionCall 47(TDWorldToProj(vf4;vf3;) 347(param) 349(param) + ReturnValue 350 + FunctionEnd +60(TDWorldToProj(vf3;): 7(fvec4) Function None 58 + 59(v): 10(ptr) FunctionParameter + 61: Label + 358(param): 8(ptr) Variable Function + 353: 9(fvec3) Load 59(v) + 354: 6(float) CompositeExtract 353 0 + 355: 6(float) CompositeExtract 353 1 + 356: 6(float) CompositeExtract 353 2 + 357: 7(fvec4) CompositeConstruct 354 355 356 335 + Store 358(param) 357 + 359: 7(fvec4) FunctionCall 56(TDWorldToProj(vf4;) 358(param) + ReturnValue 359 + FunctionEnd +63(TDPointColor(): 7(fvec4) Function None 62 + 64: Label + 362: 7(fvec4) Load 256(Cd) + ReturnValue 362 + FunctionEnd +68(TDInstanceTexCoord(i1;vf3;): 9(fvec3) Function None 65 + 66(index): 12(ptr) FunctionParameter + 67(t): 10(ptr) FunctionParameter + 69: Label + 365(coord): 12(ptr) Variable Function + 367(samp): 8(ptr) Variable Function + 376(v): 10(ptr) Variable Function + 366: 11(int) Load 66(index) + Store 365(coord) 366 + 372: 369 Load 371(sTDInstanceTexCoord) + 373: 11(int) Load 365(coord) + 374: 368 Image 372 + 375: 7(fvec4) ImageFetch 374 373 + Store 367(samp) 375 + 379: 378(ptr) AccessChain 67(t) 377 + 380: 6(float) Load 379 + 381: 378(ptr) AccessChain 376(v) 377 + Store 381 380 + 382: 378(ptr) AccessChain 67(t) 234 + 383: 6(float) Load 382 + 384: 378(ptr) AccessChain 376(v) 234 + Store 384 383 + 385: 378(ptr) AccessChain 367(samp) 377 + 386: 6(float) Load 385 + 388: 378(ptr) AccessChain 376(v) 387 + Store 388 386 + 389: 9(fvec3) Load 376(v) + Store 67(t) 389 + 390: 9(fvec3) Load 67(t) + ReturnValue 390 + FunctionEnd +72(TDInstanceActive(i1;): 13(bool) Function None 70 + 71(index): 12(ptr) FunctionParameter + 73: Label + 397(coord): 12(ptr) Variable Function + 399(samp): 8(ptr) Variable Function + 405(v): 378(ptr) Variable Function + 393: 302(ptr) AccessChain 301 208 + 394: 11(int) Load 393 + 395: 11(int) Load 71(index) + 396: 11(int) ISub 395 394 + Store 71(index) 396 + 398: 11(int) Load 71(index) + Store 397(coord) 398 + 401: 369 Load 400(sTDInstanceT) + 402: 11(int) Load 397(coord) + 403: 368 Image 401 + 404: 7(fvec4) ImageFetch 403 402 + Store 399(samp) 404 + 406: 378(ptr) AccessChain 399(samp) 377 + 407: 6(float) Load 406 + Store 405(v) 407 + 408: 6(float) Load 405(v) + 409: 13(bool) FUnordNotEqual 408 266 + ReturnValue 409 + FunctionEnd +77(iTDInstanceTranslate(i1;b1;): 9(fvec3) Function None 74 + 75(index): 12(ptr) FunctionParameter +76(instanceActive): 14(ptr) FunctionParameter + 78: Label + 412(origIndex): 12(ptr) Variable Function + 418(coord): 12(ptr) Variable Function + 420(samp): 8(ptr) Variable Function + 425(v): 10(ptr) Variable Function + 413: 11(int) Load 75(index) + Store 412(origIndex) 413 + 414: 302(ptr) AccessChain 301 208 + 415: 11(int) Load 414 + 416: 11(int) Load 75(index) + 417: 11(int) ISub 416 415 + Store 75(index) 417 + 419: 11(int) Load 75(index) + Store 418(coord) 419 + 421: 369 Load 400(sTDInstanceT) + 422: 11(int) Load 418(coord) + 423: 368 Image 421 + 424: 7(fvec4) ImageFetch 423 422 + Store 420(samp) 424 + 426: 378(ptr) AccessChain 420(samp) 234 + 427: 6(float) Load 426 + 428: 378(ptr) AccessChain 425(v) 377 + Store 428 427 + 429: 378(ptr) AccessChain 420(samp) 387 + 430: 6(float) Load 429 + 431: 378(ptr) AccessChain 425(v) 234 + Store 431 430 + 433: 378(ptr) AccessChain 420(samp) 432 + 434: 6(float) Load 433 + 435: 378(ptr) AccessChain 425(v) 387 + Store 435 434 + 436: 378(ptr) AccessChain 420(samp) 377 + 437: 6(float) Load 436 + 438: 13(bool) FUnordNotEqual 437 266 + Store 76(instanceActive) 438 + 439: 9(fvec3) Load 425(v) + ReturnValue 439 + FunctionEnd +81(TDInstanceTranslate(i1;): 9(fvec3) Function None 79 + 80(index): 12(ptr) FunctionParameter + 82: Label + 446(coord): 12(ptr) Variable Function + 448(samp): 8(ptr) Variable Function + 453(v): 10(ptr) Variable Function + 442: 302(ptr) AccessChain 301 208 + 443: 11(int) Load 442 + 444: 11(int) Load 80(index) + 445: 11(int) ISub 444 443 + Store 80(index) 445 + 447: 11(int) Load 80(index) + Store 446(coord) 447 + 449: 369 Load 400(sTDInstanceT) + 450: 11(int) Load 446(coord) + 451: 368 Image 449 + 452: 7(fvec4) ImageFetch 451 450 + Store 448(samp) 452 + 454: 378(ptr) AccessChain 448(samp) 234 + 455: 6(float) Load 454 + 456: 378(ptr) AccessChain 453(v) 377 + Store 456 455 + 457: 378(ptr) AccessChain 448(samp) 387 + 458: 6(float) Load 457 + 459: 378(ptr) AccessChain 453(v) 234 + Store 459 458 + 460: 378(ptr) AccessChain 448(samp) 432 + 461: 6(float) Load 460 + 462: 378(ptr) AccessChain 453(v) 387 + Store 462 461 + 463: 9(fvec3) Load 453(v) + ReturnValue 463 + FunctionEnd +86(TDInstanceRotateMat(i1;): 83 Function None 84 + 85(index): 12(ptr) FunctionParameter + 87: Label + 470(v): 10(ptr) Variable Function + 472(m): 471(ptr) Variable Function + 466: 302(ptr) AccessChain 301 208 + 467: 11(int) Load 466 + 468: 11(int) Load 85(index) + 469: 11(int) ISub 468 467 + Store 85(index) 469 + Store 470(v) 346 + Store 472(m) 476 + 477: 83 Load 472(m) + ReturnValue 477 + FunctionEnd +89(TDInstanceScale(i1;): 9(fvec3) Function None 79 + 88(index): 12(ptr) FunctionParameter + 90: Label + 484(v): 10(ptr) Variable Function + 480: 302(ptr) AccessChain 301 208 + 481: 11(int) Load 480 + 482: 11(int) Load 88(index) + 483: 11(int) ISub 482 481 + Store 88(index) 483 + Store 484(v) 485 + 486: 9(fvec3) Load 484(v) + ReturnValue 486 + FunctionEnd +92(TDInstancePivot(i1;): 9(fvec3) Function None 79 + 91(index): 12(ptr) FunctionParameter + 93: Label + 493(v): 10(ptr) Variable Function + 489: 302(ptr) AccessChain 301 208 + 490: 11(int) Load 489 + 491: 11(int) Load 91(index) + 492: 11(int) ISub 491 490 + Store 91(index) 492 + Store 493(v) 346 + 494: 9(fvec3) Load 493(v) + ReturnValue 494 + FunctionEnd +95(TDInstanceRotTo(i1;): 9(fvec3) Function None 79 + 94(index): 12(ptr) FunctionParameter + 96: Label + 501(v): 10(ptr) Variable Function + 497: 302(ptr) AccessChain 301 208 + 498: 11(int) Load 497 + 499: 11(int) Load 94(index) + 500: 11(int) ISub 499 498 + Store 94(index) 500 + Store 501(v) 475 + 502: 9(fvec3) Load 501(v) + ReturnValue 502 + FunctionEnd +98(TDInstanceRotUp(i1;): 9(fvec3) Function None 79 + 97(index): 12(ptr) FunctionParameter + 99: Label + 509(v): 10(ptr) Variable Function + 505: 302(ptr) AccessChain 301 208 + 506: 11(int) Load 505 + 507: 11(int) Load 97(index) + 508: 11(int) ISub 507 506 + Store 97(index) 508 + Store 509(v) 474 + 510: 9(fvec3) Load 509(v) + ReturnValue 510 + FunctionEnd +103(TDInstanceMat(i1;): 100 Function None 101 + 102(id): 12(ptr) FunctionParameter + 104: Label +513(instanceActive): 14(ptr) Variable Function + 514(t): 10(ptr) Variable Function + 515(param): 12(ptr) Variable Function + 517(param): 14(ptr) Variable Function + 528(m): 527(ptr) Variable Function + 534(tt): 10(ptr) Variable Function + Store 513(instanceActive) 324 + 516: 11(int) Load 102(id) + Store 515(param) 516 + 518: 9(fvec3) FunctionCall 77(iTDInstanceTranslate(i1;b1;) 515(param) 517(param) + 519: 13(bool) Load 517(param) + Store 513(instanceActive) 519 + Store 514(t) 518 + 520: 13(bool) Load 513(instanceActive) + 521: 13(bool) LogicalNot 520 + SelectionMerge 523 None + BranchConditional 521 522 523 + 522: Label + ReturnValue 525 + 523: Label + Store 528(m) 533 + 535: 9(fvec3) Load 514(t) + Store 534(tt) 535 + 536: 378(ptr) AccessChain 528(m) 208 377 + 537: 6(float) Load 536 + 538: 378(ptr) AccessChain 534(tt) 377 + 539: 6(float) Load 538 + 540: 6(float) FMul 537 539 + 541: 378(ptr) AccessChain 528(m) 248 377 + 542: 6(float) Load 541 + 543: 6(float) FAdd 542 540 + 544: 378(ptr) AccessChain 528(m) 248 377 + Store 544 543 + 545: 378(ptr) AccessChain 528(m) 208 234 + 546: 6(float) Load 545 + 547: 378(ptr) AccessChain 534(tt) 377 + 548: 6(float) Load 547 + 549: 6(float) FMul 546 548 + 550: 378(ptr) AccessChain 528(m) 248 234 + 551: 6(float) Load 550 + 552: 6(float) FAdd 551 549 + 553: 378(ptr) AccessChain 528(m) 248 234 + Store 553 552 + 554: 378(ptr) AccessChain 528(m) 208 387 + 555: 6(float) Load 554 + 556: 378(ptr) AccessChain 534(tt) 377 + 557: 6(float) Load 556 + 558: 6(float) FMul 555 557 + 559: 378(ptr) AccessChain 528(m) 248 387 + 560: 6(float) Load 559 + 561: 6(float) FAdd 560 558 + 562: 378(ptr) AccessChain 528(m) 248 387 + Store 562 561 + 563: 378(ptr) AccessChain 528(m) 208 432 + 564: 6(float) Load 563 + 565: 378(ptr) AccessChain 534(tt) 377 + 566: 6(float) Load 565 + 567: 6(float) FMul 564 566 + 568: 378(ptr) AccessChain 528(m) 248 432 + 569: 6(float) Load 568 + 570: 6(float) FAdd 569 567 + 571: 378(ptr) AccessChain 528(m) 248 432 + Store 571 570 + 572: 378(ptr) AccessChain 528(m) 251 377 + 573: 6(float) Load 572 + 574: 378(ptr) AccessChain 534(tt) 234 + 575: 6(float) Load 574 + 576: 6(float) FMul 573 575 + 577: 378(ptr) AccessChain 528(m) 248 377 + 578: 6(float) Load 577 + 579: 6(float) FAdd 578 576 + 580: 378(ptr) AccessChain 528(m) 248 377 + Store 580 579 + 581: 378(ptr) AccessChain 528(m) 251 234 + 582: 6(float) Load 581 + 583: 378(ptr) AccessChain 534(tt) 234 + 584: 6(float) Load 583 + 585: 6(float) FMul 582 584 + 586: 378(ptr) AccessChain 528(m) 248 234 + 587: 6(float) Load 586 + 588: 6(float) FAdd 587 585 + 589: 378(ptr) AccessChain 528(m) 248 234 + Store 589 588 + 590: 378(ptr) AccessChain 528(m) 251 387 + 591: 6(float) Load 590 + 592: 378(ptr) AccessChain 534(tt) 234 + 593: 6(float) Load 592 + 594: 6(float) FMul 591 593 + 595: 378(ptr) AccessChain 528(m) 248 387 + 596: 6(float) Load 595 + 597: 6(float) FAdd 596 594 + 598: 378(ptr) AccessChain 528(m) 248 387 + Store 598 597 + 599: 378(ptr) AccessChain 528(m) 251 432 + 600: 6(float) Load 599 + 601: 378(ptr) AccessChain 534(tt) 234 + 602: 6(float) Load 601 + 603: 6(float) FMul 600 602 + 604: 378(ptr) AccessChain 528(m) 248 432 + 605: 6(float) Load 604 + 606: 6(float) FAdd 605 603 + 607: 378(ptr) AccessChain 528(m) 248 432 + Store 607 606 + 608: 378(ptr) AccessChain 528(m) 217 377 + 609: 6(float) Load 608 + 610: 378(ptr) AccessChain 534(tt) 387 + 611: 6(float) Load 610 + 612: 6(float) FMul 609 611 + 613: 378(ptr) AccessChain 528(m) 248 377 + 614: 6(float) Load 613 + 615: 6(float) FAdd 614 612 + 616: 378(ptr) AccessChain 528(m) 248 377 + Store 616 615 + 617: 378(ptr) AccessChain 528(m) 217 234 + 618: 6(float) Load 617 + 619: 378(ptr) AccessChain 534(tt) 387 + 620: 6(float) Load 619 + 621: 6(float) FMul 618 620 + 622: 378(ptr) AccessChain 528(m) 248 234 + 623: 6(float) Load 622 + 624: 6(float) FAdd 623 621 + 625: 378(ptr) AccessChain 528(m) 248 234 + Store 625 624 + 626: 378(ptr) AccessChain 528(m) 217 387 + 627: 6(float) Load 626 + 628: 378(ptr) AccessChain 534(tt) 387 + 629: 6(float) Load 628 + 630: 6(float) FMul 627 629 + 631: 378(ptr) AccessChain 528(m) 248 387 + 632: 6(float) Load 631 + 633: 6(float) FAdd 632 630 + 634: 378(ptr) AccessChain 528(m) 248 387 + Store 634 633 + 635: 378(ptr) AccessChain 528(m) 217 432 + 636: 6(float) Load 635 + 637: 378(ptr) AccessChain 534(tt) 387 + 638: 6(float) Load 637 + 639: 6(float) FMul 636 638 + 640: 378(ptr) AccessChain 528(m) 248 432 + 641: 6(float) Load 640 + 642: 6(float) FAdd 641 639 + 643: 378(ptr) AccessChain 528(m) 248 432 + Store 643 642 + 644: 100 Load 528(m) + ReturnValue 644 + FunctionEnd +106(TDInstanceMat3(i1;): 83 Function None 84 + 105(id): 12(ptr) FunctionParameter + 107: Label + 647(m): 471(ptr) Variable Function + Store 647(m) 476 + 648: 83 Load 647(m) + ReturnValue 648 + FunctionEnd +109(TDInstanceMat3ForNorm(i1;): 83 Function None 84 + 108(id): 12(ptr) FunctionParameter + 110: Label + 651(m): 471(ptr) Variable Function + 652(param): 12(ptr) Variable Function + 653: 11(int) Load 108(id) + Store 652(param) 653 + 654: 83 FunctionCall 106(TDInstanceMat3(i1;) 652(param) + Store 651(m) 654 + 655: 83 Load 651(m) + ReturnValue 655 + FunctionEnd +114(TDInstanceColor(i1;vf4;): 7(fvec4) Function None 111 + 112(index): 12(ptr) FunctionParameter + 113(curColor): 8(ptr) FunctionParameter + 115: Label + 662(coord): 12(ptr) Variable Function + 664(samp): 8(ptr) Variable Function + 670(v): 8(ptr) Variable Function + 658: 302(ptr) AccessChain 301 208 + 659: 11(int) Load 658 + 660: 11(int) Load 112(index) + 661: 11(int) ISub 660 659 + Store 112(index) 661 + 663: 11(int) Load 112(index) + Store 662(coord) 663 + 666: 369 Load 665(sTDInstanceColor) + 667: 11(int) Load 662(coord) + 668: 368 Image 666 + 669: 7(fvec4) ImageFetch 668 667 + Store 664(samp) 669 + 671: 378(ptr) AccessChain 664(samp) 377 + 672: 6(float) Load 671 + 673: 378(ptr) AccessChain 670(v) 377 + Store 673 672 + 674: 378(ptr) AccessChain 664(samp) 234 + 675: 6(float) Load 674 + 676: 378(ptr) AccessChain 670(v) 234 + Store 676 675 + 677: 378(ptr) AccessChain 664(samp) 387 + 678: 6(float) Load 677 + 679: 378(ptr) AccessChain 670(v) 387 + Store 679 678 + 680: 378(ptr) AccessChain 670(v) 432 + Store 680 335 + 681: 378(ptr) AccessChain 670(v) 377 + 682: 6(float) Load 681 + 683: 378(ptr) AccessChain 113(curColor) 377 + Store 683 682 + 684: 378(ptr) AccessChain 670(v) 234 + 685: 6(float) Load 684 + 686: 378(ptr) AccessChain 113(curColor) 234 + Store 686 685 + 687: 378(ptr) AccessChain 670(v) 387 + 688: 6(float) Load 687 + 689: 378(ptr) AccessChain 113(curColor) 387 + Store 689 688 + 690: 7(fvec4) Load 113(curColor) + ReturnValue 690 + FunctionEnd +118(TDInstanceDeform(i1;vf4;): 7(fvec4) Function None 111 + 116(id): 12(ptr) FunctionParameter + 117(pos): 8(ptr) FunctionParameter + 119: Label + 693(param): 12(ptr) Variable Function + 694: 11(int) Load 116(id) + Store 693(param) 694 + 695: 100 FunctionCall 103(TDInstanceMat(i1;) 693(param) + 696: 7(fvec4) Load 117(pos) + 697: 7(fvec4) MatrixTimesVector 695 696 + Store 117(pos) 697 + 698: 11(int) FunctionCall 31(TDCameraIndex() + 699: 275(ptr) AccessChain 273 208 698 208 + 700: 100 Load 699 + 701: 7(fvec4) Load 117(pos) + 702: 7(fvec4) MatrixTimesVector 700 701 + ReturnValue 702 + FunctionEnd +122(TDInstanceDeformVec(i1;vf3;): 9(fvec3) Function None 65 + 120(id): 12(ptr) FunctionParameter + 121(vec): 10(ptr) FunctionParameter + 123: Label + 705(m): 471(ptr) Variable Function + 706(param): 12(ptr) Variable Function + 707: 11(int) Load 120(id) + Store 706(param) 707 + 708: 83 FunctionCall 106(TDInstanceMat3(i1;) 706(param) + Store 705(m) 708 + 709: 11(int) FunctionCall 31(TDCameraIndex() + 710: 275(ptr) AccessChain 273 208 709 208 + 711: 100 Load 710 + 712: 7(fvec4) CompositeExtract 711 0 + 713: 9(fvec3) VectorShuffle 712 712 0 1 2 + 714: 7(fvec4) CompositeExtract 711 1 + 715: 9(fvec3) VectorShuffle 714 714 0 1 2 + 716: 7(fvec4) CompositeExtract 711 2 + 717: 9(fvec3) VectorShuffle 716 716 0 1 2 + 718: 83 CompositeConstruct 713 715 717 + 719: 83 Load 705(m) + 720: 9(fvec3) Load 121(vec) + 721: 9(fvec3) MatrixTimesVector 719 720 + 722: 9(fvec3) MatrixTimesVector 718 721 + ReturnValue 722 + FunctionEnd +126(TDInstanceDeformNorm(i1;vf3;): 9(fvec3) Function None 65 + 124(id): 12(ptr) FunctionParameter + 125(vec): 10(ptr) FunctionParameter + 127: Label + 725(m): 471(ptr) Variable Function + 726(param): 12(ptr) Variable Function + 727: 11(int) Load 124(id) + Store 726(param) 727 + 728: 83 FunctionCall 109(TDInstanceMat3ForNorm(i1;) 726(param) + Store 725(m) 728 + 729: 11(int) FunctionCall 31(TDCameraIndex() + 732: 731(ptr) AccessChain 273 208 729 730 + 733: 83 Load 732 + 734: 9(fvec3) CompositeExtract 733 0 + 735: 9(fvec3) CompositeExtract 733 1 + 736: 9(fvec3) CompositeExtract 733 2 + 737: 83 CompositeConstruct 734 735 736 + 738: 83 Load 725(m) + 739: 9(fvec3) Load 125(vec) + 740: 9(fvec3) MatrixTimesVector 738 739 + 741: 9(fvec3) MatrixTimesVector 737 740 + ReturnValue 741 + FunctionEnd +129(TDInstanceDeform(vf4;): 7(fvec4) Function None 54 + 128(pos): 8(ptr) FunctionParameter + 130: Label + 745(param): 12(ptr) Variable Function + 746(param): 8(ptr) Variable Function + 744: 11(int) FunctionCall 29(TDInstanceID() + Store 745(param) 744 + 747: 7(fvec4) Load 128(pos) + Store 746(param) 747 + 748: 7(fvec4) FunctionCall 118(TDInstanceDeform(i1;vf4;) 745(param) 746(param) + ReturnValue 748 + FunctionEnd +133(TDInstanceDeformVec(vf3;): 9(fvec3) Function None 131 + 132(vec): 10(ptr) FunctionParameter + 134: Label + 752(param): 12(ptr) Variable Function + 753(param): 10(ptr) Variable Function + 751: 11(int) FunctionCall 29(TDInstanceID() + Store 752(param) 751 + 754: 9(fvec3) Load 132(vec) + Store 753(param) 754 + 755: 9(fvec3) FunctionCall 122(TDInstanceDeformVec(i1;vf3;) 752(param) 753(param) + ReturnValue 755 + FunctionEnd +136(TDInstanceDeformNorm(vf3;): 9(fvec3) Function None 131 + 135(vec): 10(ptr) FunctionParameter + 137: Label + 759(param): 12(ptr) Variable Function + 760(param): 10(ptr) Variable Function + 758: 11(int) FunctionCall 29(TDInstanceID() + Store 759(param) 758 + 761: 9(fvec3) Load 135(vec) + Store 760(param) 761 + 762: 9(fvec3) FunctionCall 126(TDInstanceDeformNorm(i1;vf3;) 759(param) 760(param) + ReturnValue 762 + FunctionEnd +139(TDInstanceActive(): 13(bool) Function None 138 + 140: Label + 766(param): 12(ptr) Variable Function + 765: 11(int) FunctionCall 29(TDInstanceID() + Store 766(param) 765 + 767: 13(bool) FunctionCall 72(TDInstanceActive(i1;) 766(param) + ReturnValue 767 + FunctionEnd +141(TDInstanceTranslate(): 9(fvec3) Function None 33 + 142: Label + 771(param): 12(ptr) Variable Function + 770: 11(int) FunctionCall 29(TDInstanceID() + Store 771(param) 770 + 772: 9(fvec3) FunctionCall 81(TDInstanceTranslate(i1;) 771(param) + ReturnValue 772 + FunctionEnd +144(TDInstanceRotateMat(): 83 Function None 143 + 145: Label + 776(param): 12(ptr) Variable Function + 775: 11(int) FunctionCall 29(TDInstanceID() + Store 776(param) 775 + 777: 83 FunctionCall 86(TDInstanceRotateMat(i1;) 776(param) + ReturnValue 777 + FunctionEnd +146(TDInstanceScale(): 9(fvec3) Function None 33 + 147: Label + 781(param): 12(ptr) Variable Function + 780: 11(int) FunctionCall 29(TDInstanceID() + Store 781(param) 780 + 782: 9(fvec3) FunctionCall 89(TDInstanceScale(i1;) 781(param) + ReturnValue 782 + FunctionEnd +149(TDInstanceMat(): 100 Function None 148 + 150: Label + 786(param): 12(ptr) Variable Function + 785: 11(int) FunctionCall 29(TDInstanceID() + Store 786(param) 785 + 787: 100 FunctionCall 103(TDInstanceMat(i1;) 786(param) + ReturnValue 787 + FunctionEnd +151(TDInstanceMat3(): 83 Function None 143 + 152: Label + 791(param): 12(ptr) Variable Function + 790: 11(int) FunctionCall 29(TDInstanceID() + Store 791(param) 790 + 792: 83 FunctionCall 106(TDInstanceMat3(i1;) 791(param) + ReturnValue 792 + FunctionEnd +154(TDInstanceTexCoord(vf3;): 9(fvec3) Function None 131 + 153(t): 10(ptr) FunctionParameter + 155: Label + 796(param): 12(ptr) Variable Function + 797(param): 10(ptr) Variable Function + 795: 11(int) FunctionCall 29(TDInstanceID() + Store 796(param) 795 + 798: 9(fvec3) Load 153(t) + Store 797(param) 798 + 799: 9(fvec3) FunctionCall 68(TDInstanceTexCoord(i1;vf3;) 796(param) 797(param) + ReturnValue 799 + FunctionEnd +157(TDInstanceColor(vf4;): 7(fvec4) Function None 54 + 156(curColor): 8(ptr) FunctionParameter + 158: Label + 803(param): 12(ptr) Variable Function + 804(param): 8(ptr) Variable Function + 802: 11(int) FunctionCall 29(TDInstanceID() + Store 803(param) 802 + 805: 7(fvec4) Load 156(curColor) + Store 804(param) 805 + 806: 7(fvec4) FunctionCall 114(TDInstanceColor(i1;vf4;) 803(param) 804(param) + ReturnValue 806 + FunctionEnd +160(TDSkinnedDeform(vf4;): 7(fvec4) Function None 54 + 159(pos): 8(ptr) FunctionParameter + 161: Label + 809: 7(fvec4) Load 159(pos) + ReturnValue 809 + FunctionEnd +163(TDSkinnedDeformVec(vf3;): 9(fvec3) Function None 131 + 162(vec): 10(ptr) FunctionParameter + 164: Label + 812: 9(fvec3) Load 162(vec) + ReturnValue 812 + FunctionEnd +169(TDFastDeformTangent(vf3;vf4;vf3;): 9(fvec3) Function None 165 + 166(oldNorm): 10(ptr) FunctionParameter + 167(oldTangent): 8(ptr) FunctionParameter +168(deformedNorm): 10(ptr) FunctionParameter + 170: Label + 815: 7(fvec4) Load 167(oldTangent) + 816: 9(fvec3) VectorShuffle 815 815 0 1 2 + ReturnValue 816 + FunctionEnd +172(TDBoneMat(i1;): 100 Function None 101 + 171(index): 12(ptr) FunctionParameter + 173: Label + ReturnValue 533 + FunctionEnd +175(TDDeform(vf4;): 7(fvec4) Function None 54 + 174(pos): 8(ptr) FunctionParameter + 176: Label + 821(param): 8(ptr) Variable Function + 824(param): 8(ptr) Variable Function + 822: 7(fvec4) Load 174(pos) + Store 821(param) 822 + 823: 7(fvec4) FunctionCall 160(TDSkinnedDeform(vf4;) 821(param) + Store 174(pos) 823 + 825: 7(fvec4) Load 174(pos) + Store 824(param) 825 + 826: 7(fvec4) FunctionCall 129(TDInstanceDeform(vf4;) 824(param) + Store 174(pos) 826 + 827: 7(fvec4) Load 174(pos) + ReturnValue 827 + FunctionEnd +180(TDDeform(i1;vf3;): 7(fvec4) Function None 177 + 178(instanceID): 12(ptr) FunctionParameter + 179(p): 10(ptr) FunctionParameter + 181: Label + 830(pos): 8(ptr) Variable Function + 836(param): 8(ptr) Variable Function + 839(param): 12(ptr) Variable Function + 841(param): 8(ptr) Variable Function + 831: 9(fvec3) Load 179(p) + 832: 6(float) CompositeExtract 831 0 + 833: 6(float) CompositeExtract 831 1 + 834: 6(float) CompositeExtract 831 2 + 835: 7(fvec4) CompositeConstruct 832 833 834 335 + Store 830(pos) 835 + 837: 7(fvec4) Load 830(pos) + Store 836(param) 837 + 838: 7(fvec4) FunctionCall 160(TDSkinnedDeform(vf4;) 836(param) + Store 830(pos) 838 + 840: 11(int) Load 178(instanceID) + Store 839(param) 840 + 842: 7(fvec4) Load 830(pos) + Store 841(param) 842 + 843: 7(fvec4) FunctionCall 118(TDInstanceDeform(i1;vf4;) 839(param) 841(param) + Store 830(pos) 843 + 844: 7(fvec4) Load 830(pos) + ReturnValue 844 + FunctionEnd +183(TDDeform(vf3;): 7(fvec4) Function None 58 + 182(pos): 10(ptr) FunctionParameter + 184: Label + 848(param): 12(ptr) Variable Function + 849(param): 10(ptr) Variable Function + 847: 11(int) FunctionCall 29(TDInstanceID() + Store 848(param) 847 + 850: 9(fvec3) Load 182(pos) + Store 849(param) 850 + 851: 7(fvec4) FunctionCall 180(TDDeform(i1;vf3;) 848(param) 849(param) + ReturnValue 851 + FunctionEnd +187(TDDeformVec(i1;vf3;): 9(fvec3) Function None 65 + 185(instanceID): 12(ptr) FunctionParameter + 186(vec): 10(ptr) FunctionParameter + 188: Label + 854(param): 10(ptr) Variable Function + 857(param): 12(ptr) Variable Function + 859(param): 10(ptr) Variable Function + 855: 9(fvec3) Load 186(vec) + Store 854(param) 855 + 856: 9(fvec3) FunctionCall 163(TDSkinnedDeformVec(vf3;) 854(param) + Store 186(vec) 856 + 858: 11(int) Load 185(instanceID) + Store 857(param) 858 + 860: 9(fvec3) Load 186(vec) + Store 859(param) 860 + 861: 9(fvec3) FunctionCall 122(TDInstanceDeformVec(i1;vf3;) 857(param) 859(param) + Store 186(vec) 861 + 862: 9(fvec3) Load 186(vec) + ReturnValue 862 + FunctionEnd +190(TDDeformVec(vf3;): 9(fvec3) Function None 131 + 189(vec): 10(ptr) FunctionParameter + 191: Label + 866(param): 12(ptr) Variable Function + 867(param): 10(ptr) Variable Function + 865: 11(int) FunctionCall 29(TDInstanceID() + Store 866(param) 865 + 868: 9(fvec3) Load 189(vec) + Store 867(param) 868 + 869: 9(fvec3) FunctionCall 187(TDDeformVec(i1;vf3;) 866(param) 867(param) + ReturnValue 869 + FunctionEnd +194(TDDeformNorm(i1;vf3;): 9(fvec3) Function None 65 + 192(instanceID): 12(ptr) FunctionParameter + 193(vec): 10(ptr) FunctionParameter + 195: Label + 872(param): 10(ptr) Variable Function + 875(param): 12(ptr) Variable Function + 877(param): 10(ptr) Variable Function + 873: 9(fvec3) Load 193(vec) + Store 872(param) 873 + 874: 9(fvec3) FunctionCall 163(TDSkinnedDeformVec(vf3;) 872(param) + Store 193(vec) 874 + 876: 11(int) Load 192(instanceID) + Store 875(param) 876 + 878: 9(fvec3) Load 193(vec) + Store 877(param) 878 + 879: 9(fvec3) FunctionCall 126(TDInstanceDeformNorm(i1;vf3;) 875(param) 877(param) + Store 193(vec) 879 + 880: 9(fvec3) Load 193(vec) + ReturnValue 880 + FunctionEnd +197(TDDeformNorm(vf3;): 9(fvec3) Function None 131 + 196(vec): 10(ptr) FunctionParameter + 198: Label + 884(param): 12(ptr) Variable Function + 885(param): 10(ptr) Variable Function + 883: 11(int) FunctionCall 29(TDInstanceID() + Store 884(param) 883 + 886: 9(fvec3) Load 196(vec) + Store 885(param) 886 + 887: 9(fvec3) FunctionCall 194(TDDeformNorm(i1;vf3;) 884(param) 885(param) + ReturnValue 887 + FunctionEnd +200(TDSkinnedDeformNorm(vf3;): 9(fvec3) Function None 131 + 199(vec): 10(ptr) FunctionParameter + 201: Label + 890(param): 10(ptr) Variable Function + 891: 9(fvec3) Load 199(vec) + Store 890(param) 891 + 892: 9(fvec3) FunctionCall 163(TDSkinnedDeformVec(vf3;) 890(param) + Store 199(vec) 892 + 893: 9(fvec3) Load 199(vec) + ReturnValue 893 + FunctionEnd +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 1297 + + Capability Shader + Capability Sampled1D + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 336 429 458 485 + ExecutionMode 4 OriginUpperLeft + Source GLSL 460 + Name 4 "main" + Name 11 "TDColor(vf4;" + Name 10 "color" + Name 13 "TDCheckOrderIndTrans(" + Name 15 "TDCheckDiscard(" + Name 18 "TDDither(vf4;" + Name 17 "color" + Name 26 "TDFrontFacing(vf3;vf3;" + Name 24 "pos" + Name 25 "normal" + Name 34 "TDAttenuateLight(i1;f1;" + Name 32 "index" + Name 33 "lightDist" + Name 38 "TDAlphaTest(f1;" + Name 37 "alpha" + Name 43 "TDHardShadow(i1;vf3;" + Name 41 "lightIndex" + Name 42 "worldSpacePos" + Name 50 "TDSoftShadow(i1;vf3;i1;i1;" + Name 46 "lightIndex" + Name 47 "worldSpacePos" + Name 48 "samples" + Name 49 "steps" + Name 54 "TDSoftShadow(i1;vf3;" + Name 52 "lightIndex" + Name 53 "worldSpacePos" + Name 58 "TDShadow(i1;vf3;" + Name 56 "lightIndex" + Name 57 "worldSpacePos" + Name 64 "iTDRadicalInverse_VdC(u1;" + Name 63 "bits" + Name 70 "iTDHammersley(u1;u1;" + Name 68 "i" + Name 69 "N" + Name 77 "iTDImportanceSampleGGX(vf2;f1;vf3;" + Name 74 "Xi" + Name 75 "roughness2" + Name 76 "N" + Name 83 "iTDDistributionGGX(vf3;vf3;f1;" + Name 80 "normal" + Name 81 "half_vector" + Name 82 "roughness2" + Name 88 "iTDCalcF(vf3;f1;" + Name 86 "F0" + Name 87 "VdotH" + Name 94 "iTDCalcG(f1;f1;f1;" + Name 91 "NdotL" + Name 92 "NdotV" + Name 93 "k" + Name 96 "TDPBRResult" + MemberName 96(TDPBRResult) 0 "diffuse" + MemberName 96(TDPBRResult) 1 "specular" + MemberName 96(TDPBRResult) 2 "shadowStrength" + Name 107 "TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;" + Name 98 "index" + Name 99 "diffuseColor" + Name 100 "specularColor" + Name 101 "worldSpacePos" + Name 102 "normal" + Name 103 "shadowStrength" + Name 104 "shadowColor" + Name 105 "camVector" + Name 106 "roughness" + Name 122 "TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;" + Name 110 "diffuseContrib" + Name 111 "specularContrib" + Name 112 "shadowStrengthOut" + Name 113 "index" + Name 114 "diffuseColor" + Name 115 "specularColor" + Name 116 "worldSpacePos" + Name 117 "normal" + Name 118 "shadowStrength" + Name 119 "shadowColor" + Name 120 "camVector" + Name 121 "roughness" + Name 136 "TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;" + Name 125 "diffuseContrib" + Name 126 "specularContrib" + Name 127 "index" + Name 128 "diffuseColor" + Name 129 "specularColor" + Name 130 "worldSpacePos" + Name 131 "normal" + Name 132 "shadowStrength" + Name 133 "shadowColor" + Name 134 "camVector" + Name 135 "roughness" + Name 146 "TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1;" + Name 139 "index" + Name 140 "diffuseColor" + Name 141 "specularColor" + Name 142 "normal" + Name 143 "camVector" + Name 144 "roughness" + Name 145 "ambientOcclusion" + Name 158 "TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1;" + Name 149 "diffuseContrib" + Name 150 "specularContrib" + Name 151 "index" + Name 152 "diffuseColor" + Name 153 "specularColor" + Name 154 "normal" + Name 155 "camVector" + Name 156 "roughness" + Name 157 "ambientOcclusion" + Name 160 "TDPhongResult" + MemberName 160(TDPhongResult) 0 "diffuse" + MemberName 160(TDPhongResult) 1 "specular" + MemberName 160(TDPhongResult) 2 "specular2" + MemberName 160(TDPhongResult) 3 "shadowStrength" + Name 170 "TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1;" + Name 162 "index" + Name 163 "worldSpacePos" + Name 164 "normal" + Name 165 "shadowStrength" + Name 166 "shadowColor" + Name 167 "camVector" + Name 168 "shininess" + Name 169 "shininess2" + Name 185 "TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1;" + Name 173 "diffuseContrib" + Name 174 "specularContrib" + Name 175 "specularContrib2" + Name 176 "shadowStrengthOut" + Name 177 "index" + Name 178 "worldSpacePos" + Name 179 "normal" + Name 180 "shadowStrength" + Name 181 "shadowColor" + Name 182 "camVector" + Name 183 "shininess" + Name 184 "shininess2" + Name 199 "TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1;" + Name 188 "diffuseContrib" + Name 189 "specularContrib" + Name 190 "specularContrib2" + Name 191 "index" + Name 192 "worldSpacePos" + Name 193 "normal" + Name 194 "shadowStrength" + Name 195 "shadowColor" + Name 196 "camVector" + Name 197 "shininess" + Name 198 "shininess2" + Name 211 "TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;" + Name 202 "diffuseContrib" + Name 203 "specularContrib" + Name 204 "index" + Name 205 "worldSpacePos" + Name 206 "normal" + Name 207 "shadowStrength" + Name 208 "shadowColor" + Name 209 "camVector" + Name 210 "shininess" + Name 223 "TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1;" + Name 214 "diffuseContrib" + Name 215 "specularContrib" + Name 216 "specularContrib2" + Name 217 "index" + Name 218 "worldSpacePos" + Name 219 "normal" + Name 220 "camVector" + Name 221 "shininess" + Name 222 "shininess2" + Name 233 "TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1;" + Name 226 "diffuseContrib" + Name 227 "specularContrib" + Name 228 "index" + Name 229 "worldSpacePos" + Name 230 "normal" + Name 231 "camVector" + Name 232 "shininess" + Name 240 "TDLighting(vf3;i1;vf3;vf3;" + Name 236 "diffuseContrib" + Name 237 "index" + Name 238 "worldSpacePos" + Name 239 "normal" + Name 249 "TDLighting(vf3;i1;vf3;vf3;f1;vf3;" + Name 243 "diffuseContrib" + Name 244 "index" + Name 245 "worldSpacePos" + Name 246 "normal" + Name 247 "shadowStrength" + Name 248 "shadowColor" + Name 255 "TDProjMap(i1;vf3;vf4;" + Name 252 "index" + Name 253 "worldSpacePos" + Name 254 "defaultColor" + Name 261 "TDFog(vf4;vf3;i1;" + Name 258 "color" + Name 259 "lightingSpacePosition" + Name 260 "cameraIndex" + Name 266 "TDFog(vf4;vf3;" + Name 264 "color" + Name 265 "lightingSpacePosition" + Name 271 "TDInstanceTexCoord(i1;vf3;" + Name 269 "index" + Name 270 "t" + Name 275 "TDInstanceActive(i1;" + Name 274 "index" + Name 281 "iTDInstanceTranslate(i1;b1;" + Name 279 "index" + Name 280 "instanceActive" + Name 285 "TDInstanceTranslate(i1;" + Name 284 "index" + Name 290 "TDInstanceRotateMat(i1;" + Name 289 "index" + Name 293 "TDInstanceScale(i1;" + Name 292 "index" + Name 296 "TDInstancePivot(i1;" + Name 295 "index" + Name 299 "TDInstanceRotTo(i1;" + Name 298 "index" + Name 302 "TDInstanceRotUp(i1;" + Name 301 "index" + Name 307 "TDInstanceMat(i1;" + Name 306 "id" + Name 310 "TDInstanceMat3(i1;" + Name 309 "id" + Name 313 "TDInstanceMat3ForNorm(i1;" + Name 312 "id" + Name 318 "TDInstanceColor(i1;vf4;" + Name 316 "index" + Name 317 "curColor" + Name 321 "TDOutputSwizzle(vf4;" + Name 320 "c" + Name 327 "TDOutputSwizzle(vu4;" + Name 326 "c" + Name 330 "outcol" + Name 333 "texCoord0" + Name 334 "Vertex" + MemberName 334(Vertex) 0 "color" + MemberName 334(Vertex) 1 "worldSpacePos" + MemberName 334(Vertex) 2 "texCoord0" + MemberName 334(Vertex) 3 "cameraIndex" + MemberName 334(Vertex) 4 "instance" + Name 336 "iVert" + Name 341 "actualTexZ" + Name 349 "instanceLoop" + Name 359 "colorMapColor" + Name 363 "sColorMap" + Name 367 "red" + Name 374 "gl_DefaultUniformBlock" + MemberName 374(gl_DefaultUniformBlock) 0 "uTDInstanceIDOffset" + MemberName 374(gl_DefaultUniformBlock) 1 "uTDNumInstances" + MemberName 374(gl_DefaultUniformBlock) 2 "uTDAlphaTestVal" + MemberName 374(gl_DefaultUniformBlock) 3 "uConstant" + MemberName 374(gl_DefaultUniformBlock) 4 "uShadowStrength" + MemberName 374(gl_DefaultUniformBlock) 5 "uShadowColor" + MemberName 374(gl_DefaultUniformBlock) 6 "uDiffuseColor" + MemberName 374(gl_DefaultUniformBlock) 7 "uAmbientColor" + Name 376 "" + Name 401 "alpha" + Name 409 "param" + Name 422 "param" + Name 429 "oFragColor" + Name 430 "param" + Name 435 "i" + Name 452 "d" + Name 456 "sTDNoiseMap" + Name 458 "gl_FragCoord" + Name 485 "gl_FrontFacing" + Name 555 "param" + Name 561 "a" + Name 563 "phi" + Name 568 "cosTheta" + Name 582 "sinTheta" + Name 588 "H" + Name 601 "upVector" + Name 612 "tangentX" + Name 617 "tangentY" + Name 621 "worldResult" + Name 639 "NdotH" + Name 645 "alpha2" + Name 649 "denom" + Name 686 "Gl" + Name 694 "Gv" + Name 708 "res" + Name 712 "res" + Name 713 "param" + Name 715 "param" + Name 717 "param" + Name 719 "param" + Name 721 "param" + Name 723 "param" + Name 725 "param" + Name 727 "param" + Name 729 "param" + Name 738 "res" + Name 739 "param" + Name 741 "param" + Name 743 "param" + Name 745 "param" + Name 747 "param" + Name 749 "param" + Name 751 "param" + Name 753 "param" + Name 755 "param" + Name 762 "res" + Name 766 "res" + Name 767 "param" + Name 769 "param" + Name 771 "param" + Name 773 "param" + Name 775 "param" + Name 777 "param" + Name 779 "param" + Name 790 "res" + Name 804 "res" + Name 822 "res" + Name 838 "res" + Name 852 "res" + Name 868 "res" + Name 882 "res" + Name 894 "res" + Name 917 "param" + Name 919 "param" + Name 921 "param" + Name 925 "coord" + Name 927 "samp" + Name 931 "sTDInstanceTexCoord" + Name 936 "v" + Name 955 "coord" + Name 957 "samp" + Name 958 "sTDInstanceT" + Name 963 "v" + Name 970 "origIndex" + Name 976 "coord" + Name 978 "samp" + Name 983 "v" + Name 1003 "coord" + Name 1005 "samp" + Name 1010 "v" + Name 1027 "v" + Name 1029 "m" + Name 1039 "v" + Name 1047 "v" + Name 1055 "v" + Name 1063 "v" + Name 1067 "instanceActive" + Name 1069 "t" + Name 1070 "param" + Name 1072 "param" + Name 1082 "m" + Name 1088 "tt" + Name 1201 "m" + Name 1205 "m" + Name 1206 "param" + Name 1216 "coord" + Name 1218 "samp" + Name 1219 "sTDInstanceColor" + Name 1224 "v" + Name 1253 "TDMatrix" + MemberName 1253(TDMatrix) 0 "world" + MemberName 1253(TDMatrix) 1 "worldInverse" + MemberName 1253(TDMatrix) 2 "worldCam" + MemberName 1253(TDMatrix) 3 "worldCamInverse" + MemberName 1253(TDMatrix) 4 "cam" + MemberName 1253(TDMatrix) 5 "camInverse" + MemberName 1253(TDMatrix) 6 "camProj" + MemberName 1253(TDMatrix) 7 "camProjInverse" + MemberName 1253(TDMatrix) 8 "proj" + MemberName 1253(TDMatrix) 9 "projInverse" + MemberName 1253(TDMatrix) 10 "worldCamProj" + MemberName 1253(TDMatrix) 11 "worldCamProjInverse" + MemberName 1253(TDMatrix) 12 "quadReproject" + MemberName 1253(TDMatrix) 13 "worldForNormals" + MemberName 1253(TDMatrix) 14 "camForNormals" + MemberName 1253(TDMatrix) 15 "worldCamForNormals" + Name 1255 "TDMatricesBlock" + MemberName 1255(TDMatricesBlock) 0 "uTDMats" + Name 1257 "" + Name 1258 "TDCameraInfo" + MemberName 1258(TDCameraInfo) 0 "nearFar" + MemberName 1258(TDCameraInfo) 1 "fog" + MemberName 1258(TDCameraInfo) 2 "fogColor" + MemberName 1258(TDCameraInfo) 3 "renderTOPCameraIndex" + Name 1260 "TDCameraInfoBlock" + MemberName 1260(TDCameraInfoBlock) 0 "uTDCamInfos" + Name 1262 "" + Name 1263 "TDGeneral" + MemberName 1263(TDGeneral) 0 "ambientColor" + MemberName 1263(TDGeneral) 1 "nearFar" + MemberName 1263(TDGeneral) 2 "viewport" + MemberName 1263(TDGeneral) 3 "viewportRes" + MemberName 1263(TDGeneral) 4 "fog" + MemberName 1263(TDGeneral) 5 "fogColor" + Name 1264 "TDGeneralBlock" + MemberName 1264(TDGeneralBlock) 0 "uTDGeneral" + Name 1266 "" + Name 1270 "sTDSineLookup" + Name 1271 "sTDWhite2D" + Name 1275 "sTDWhite3D" + Name 1276 "sTDWhite2DArray" + Name 1280 "sTDWhiteCube" + Name 1281 "TDLight" + MemberName 1281(TDLight) 0 "position" + MemberName 1281(TDLight) 1 "direction" + MemberName 1281(TDLight) 2 "diffuse" + MemberName 1281(TDLight) 3 "nearFar" + MemberName 1281(TDLight) 4 "lightSize" + MemberName 1281(TDLight) 5 "misc" + MemberName 1281(TDLight) 6 "coneLookupScaleBias" + MemberName 1281(TDLight) 7 "attenScaleBiasRoll" + MemberName 1281(TDLight) 8 "shadowMapMatrix" + MemberName 1281(TDLight) 9 "shadowMapCamMatrix" + MemberName 1281(TDLight) 10 "shadowMapRes" + MemberName 1281(TDLight) 11 "projMapMatrix" + Name 1283 "TDLightBlock" + MemberName 1283(TDLightBlock) 0 "uTDLights" + Name 1285 "" + Name 1286 "TDEnvLight" + MemberName 1286(TDEnvLight) 0 "color" + MemberName 1286(TDEnvLight) 1 "rotate" + Name 1288 "TDEnvLightBlock" + MemberName 1288(TDEnvLightBlock) 0 "uTDEnvLights" + Name 1290 "" + Name 1293 "TDEnvLightBuffer" + MemberName 1293(TDEnvLightBuffer) 0 "shCoeffs" + Name 1296 "uTDEnvLightBuffers" + MemberDecorate 334(Vertex) 3 Flat + MemberDecorate 334(Vertex) 4 Flat + Decorate 334(Vertex) Block + Decorate 336(iVert) Location 0 + Decorate 363(sColorMap) DescriptorSet 0 + Decorate 363(sColorMap) Binding 2 + MemberDecorate 374(gl_DefaultUniformBlock) 0 Offset 0 + MemberDecorate 374(gl_DefaultUniformBlock) 1 Offset 4 + MemberDecorate 374(gl_DefaultUniformBlock) 2 Offset 8 + MemberDecorate 374(gl_DefaultUniformBlock) 3 Offset 16 + MemberDecorate 374(gl_DefaultUniformBlock) 4 Offset 28 + MemberDecorate 374(gl_DefaultUniformBlock) 5 Offset 32 + MemberDecorate 374(gl_DefaultUniformBlock) 6 Offset 48 + MemberDecorate 374(gl_DefaultUniformBlock) 7 Offset 64 + Decorate 374(gl_DefaultUniformBlock) Block + Decorate 376 DescriptorSet 0 + Decorate 376 Binding 0 + Decorate 429(oFragColor) Location 0 + Decorate 456(sTDNoiseMap) DescriptorSet 0 + Decorate 456(sTDNoiseMap) Binding 3 + Decorate 458(gl_FragCoord) BuiltIn FragCoord + Decorate 485(gl_FrontFacing) BuiltIn FrontFacing + Decorate 931(sTDInstanceTexCoord) DescriptorSet 0 + Decorate 931(sTDInstanceTexCoord) Binding 16 + Decorate 958(sTDInstanceT) DescriptorSet 0 + Decorate 958(sTDInstanceT) Binding 15 + Decorate 1219(sTDInstanceColor) DescriptorSet 0 + Decorate 1219(sTDInstanceColor) Binding 17 + MemberDecorate 1253(TDMatrix) 0 ColMajor + MemberDecorate 1253(TDMatrix) 0 Offset 0 + MemberDecorate 1253(TDMatrix) 0 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 1 ColMajor + MemberDecorate 1253(TDMatrix) 1 Offset 64 + MemberDecorate 1253(TDMatrix) 1 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 2 ColMajor + MemberDecorate 1253(TDMatrix) 2 Offset 128 + MemberDecorate 1253(TDMatrix) 2 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 3 ColMajor + MemberDecorate 1253(TDMatrix) 3 Offset 192 + MemberDecorate 1253(TDMatrix) 3 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 4 ColMajor + MemberDecorate 1253(TDMatrix) 4 Offset 256 + MemberDecorate 1253(TDMatrix) 4 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 5 ColMajor + MemberDecorate 1253(TDMatrix) 5 Offset 320 + MemberDecorate 1253(TDMatrix) 5 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 6 ColMajor + MemberDecorate 1253(TDMatrix) 6 Offset 384 + MemberDecorate 1253(TDMatrix) 6 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 7 ColMajor + MemberDecorate 1253(TDMatrix) 7 Offset 448 + MemberDecorate 1253(TDMatrix) 7 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 8 ColMajor + MemberDecorate 1253(TDMatrix) 8 Offset 512 + MemberDecorate 1253(TDMatrix) 8 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 9 ColMajor + MemberDecorate 1253(TDMatrix) 9 Offset 576 + MemberDecorate 1253(TDMatrix) 9 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 10 ColMajor + MemberDecorate 1253(TDMatrix) 10 Offset 640 + MemberDecorate 1253(TDMatrix) 10 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 11 ColMajor + MemberDecorate 1253(TDMatrix) 11 Offset 704 + MemberDecorate 1253(TDMatrix) 11 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 12 ColMajor + MemberDecorate 1253(TDMatrix) 12 Offset 768 + MemberDecorate 1253(TDMatrix) 12 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 13 ColMajor + MemberDecorate 1253(TDMatrix) 13 Offset 832 + MemberDecorate 1253(TDMatrix) 13 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 14 ColMajor + MemberDecorate 1253(TDMatrix) 14 Offset 880 + MemberDecorate 1253(TDMatrix) 14 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 15 ColMajor + MemberDecorate 1253(TDMatrix) 15 Offset 928 + MemberDecorate 1253(TDMatrix) 15 MatrixStride 16 + Decorate 1254 ArrayStride 976 + MemberDecorate 1255(TDMatricesBlock) 0 Offset 0 + Decorate 1255(TDMatricesBlock) Block + Decorate 1257 DescriptorSet 0 + Decorate 1257 Binding 1 + MemberDecorate 1258(TDCameraInfo) 0 Offset 0 + MemberDecorate 1258(TDCameraInfo) 1 Offset 16 + MemberDecorate 1258(TDCameraInfo) 2 Offset 32 + MemberDecorate 1258(TDCameraInfo) 3 Offset 48 + Decorate 1259 ArrayStride 64 + MemberDecorate 1260(TDCameraInfoBlock) 0 Offset 0 + Decorate 1260(TDCameraInfoBlock) Block + Decorate 1262 DescriptorSet 0 + Decorate 1262 Binding 0 + MemberDecorate 1263(TDGeneral) 0 Offset 0 + MemberDecorate 1263(TDGeneral) 1 Offset 16 + MemberDecorate 1263(TDGeneral) 2 Offset 32 + MemberDecorate 1263(TDGeneral) 3 Offset 48 + MemberDecorate 1263(TDGeneral) 4 Offset 64 + MemberDecorate 1263(TDGeneral) 5 Offset 80 + MemberDecorate 1264(TDGeneralBlock) 0 Offset 0 + Decorate 1264(TDGeneralBlock) Block + Decorate 1266 DescriptorSet 0 + Decorate 1266 Binding 0 + Decorate 1270(sTDSineLookup) DescriptorSet 0 + Decorate 1270(sTDSineLookup) Binding 0 + Decorate 1271(sTDWhite2D) DescriptorSet 0 + Decorate 1271(sTDWhite2D) Binding 0 + Decorate 1275(sTDWhite3D) DescriptorSet 0 + Decorate 1275(sTDWhite3D) Binding 0 + Decorate 1276(sTDWhite2DArray) DescriptorSet 0 + Decorate 1276(sTDWhite2DArray) Binding 0 + Decorate 1280(sTDWhiteCube) DescriptorSet 0 + Decorate 1280(sTDWhiteCube) Binding 0 + MemberDecorate 1281(TDLight) 0 Offset 0 + MemberDecorate 1281(TDLight) 1 Offset 16 + MemberDecorate 1281(TDLight) 2 Offset 32 + MemberDecorate 1281(TDLight) 3 Offset 48 + MemberDecorate 1281(TDLight) 4 Offset 64 + MemberDecorate 1281(TDLight) 5 Offset 80 + MemberDecorate 1281(TDLight) 6 Offset 96 + MemberDecorate 1281(TDLight) 7 Offset 112 + MemberDecorate 1281(TDLight) 8 ColMajor + MemberDecorate 1281(TDLight) 8 Offset 128 + MemberDecorate 1281(TDLight) 8 MatrixStride 16 + MemberDecorate 1281(TDLight) 9 ColMajor + MemberDecorate 1281(TDLight) 9 Offset 192 + MemberDecorate 1281(TDLight) 9 MatrixStride 16 + MemberDecorate 1281(TDLight) 10 Offset 256 + MemberDecorate 1281(TDLight) 11 ColMajor + MemberDecorate 1281(TDLight) 11 Offset 272 + MemberDecorate 1281(TDLight) 11 MatrixStride 16 + Decorate 1282 ArrayStride 336 + MemberDecorate 1283(TDLightBlock) 0 Offset 0 + Decorate 1283(TDLightBlock) Block + Decorate 1285 DescriptorSet 0 + Decorate 1285 Binding 0 + MemberDecorate 1286(TDEnvLight) 0 Offset 0 + MemberDecorate 1286(TDEnvLight) 1 ColMajor + MemberDecorate 1286(TDEnvLight) 1 Offset 16 + MemberDecorate 1286(TDEnvLight) 1 MatrixStride 16 + Decorate 1287 ArrayStride 64 + MemberDecorate 1288(TDEnvLightBlock) 0 Offset 0 + Decorate 1288(TDEnvLightBlock) Block + Decorate 1290 DescriptorSet 0 + Decorate 1290 Binding 0 + Decorate 1292 ArrayStride 16 + MemberDecorate 1293(TDEnvLightBuffer) 0 Restrict + MemberDecorate 1293(TDEnvLightBuffer) 0 NonWritable + MemberDecorate 1293(TDEnvLightBuffer) 0 Offset 0 + Decorate 1293(TDEnvLightBuffer) BufferBlock + Decorate 1296(uTDEnvLightBuffers) DescriptorSet 0 + Decorate 1296(uTDEnvLightBuffers) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 9: TypeFunction 7(fvec4) 8(ptr) + 20: TypeVector 6(float) 3 + 21: TypePointer Function 20(fvec3) + 22: TypeBool + 23: TypeFunction 22(bool) 21(ptr) 21(ptr) + 28: TypeInt 32 1 + 29: TypePointer Function 28(int) + 30: TypePointer Function 6(float) + 31: TypeFunction 6(float) 29(ptr) 30(ptr) + 36: TypeFunction 2 30(ptr) + 40: TypeFunction 6(float) 29(ptr) 21(ptr) + 45: TypeFunction 6(float) 29(ptr) 21(ptr) 29(ptr) 29(ptr) + 60: TypeInt 32 0 + 61: TypePointer Function 60(int) + 62: TypeFunction 6(float) 61(ptr) + 66: TypeVector 6(float) 2 + 67: TypeFunction 66(fvec2) 61(ptr) 61(ptr) + 72: TypePointer Function 66(fvec2) + 73: TypeFunction 20(fvec3) 72(ptr) 30(ptr) 21(ptr) + 79: TypeFunction 6(float) 21(ptr) 21(ptr) 30(ptr) + 85: TypeFunction 20(fvec3) 21(ptr) 30(ptr) + 90: TypeFunction 6(float) 30(ptr) 30(ptr) 30(ptr) + 96(TDPBRResult): TypeStruct 20(fvec3) 20(fvec3) 6(float) + 97: TypeFunction 96(TDPBRResult) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) + 109: TypeFunction 2 21(ptr) 21(ptr) 30(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) + 124: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) + 138: TypeFunction 96(TDPBRResult) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr) + 148: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr) +160(TDPhongResult): TypeStruct 20(fvec3) 20(fvec3) 20(fvec3) 6(float) + 161: TypeFunction 160(TDPhongResult) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr) + 172: TypeFunction 2 21(ptr) 21(ptr) 21(ptr) 30(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr) + 187: TypeFunction 2 21(ptr) 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr) + 201: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) + 213: TypeFunction 2 21(ptr) 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr) + 225: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) + 235: TypeFunction 2 21(ptr) 29(ptr) 21(ptr) 21(ptr) + 242: TypeFunction 2 21(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) + 251: TypeFunction 7(fvec4) 29(ptr) 21(ptr) 8(ptr) + 257: TypeFunction 7(fvec4) 8(ptr) 21(ptr) 29(ptr) + 263: TypeFunction 7(fvec4) 8(ptr) 21(ptr) + 268: TypeFunction 20(fvec3) 29(ptr) 21(ptr) + 273: TypeFunction 22(bool) 29(ptr) + 277: TypePointer Function 22(bool) + 278: TypeFunction 20(fvec3) 29(ptr) 277(ptr) + 283: TypeFunction 20(fvec3) 29(ptr) + 287: TypeMatrix 20(fvec3) 3 + 288: TypeFunction 287 29(ptr) + 304: TypeMatrix 7(fvec4) 4 + 305: TypeFunction 304 29(ptr) + 315: TypeFunction 7(fvec4) 29(ptr) 8(ptr) + 323: TypeVector 60(int) 4 + 324: TypePointer Function 323(ivec4) + 325: TypeFunction 323(ivec4) 324(ptr) + 331: 6(float) Constant 0 + 332: 7(fvec4) ConstantComposite 331 331 331 331 + 334(Vertex): TypeStruct 7(fvec4) 20(fvec3) 20(fvec3) 28(int) 28(int) + 335: TypePointer Input 334(Vertex) + 336(iVert): 335(ptr) Variable Input + 337: 28(int) Constant 2 + 338: TypePointer Input 20(fvec3) + 342: 60(int) Constant 2 + 347: 6(float) Constant 1157627904 + 353: 28(int) Constant 2048 + 360: TypeImage 6(float) 2D array sampled format:Unknown + 361: TypeSampledImage 360 + 362: TypePointer UniformConstant 361 + 363(sColorMap): 362(ptr) Variable UniformConstant +374(gl_DefaultUniformBlock): TypeStruct 28(int) 28(int) 6(float) 20(fvec3) 6(float) 20(fvec3) 7(fvec4) 7(fvec4) + 375: TypePointer Uniform 374(gl_DefaultUniformBlock) + 376: 375(ptr) Variable Uniform + 377: 28(int) Constant 3 + 378: TypePointer Uniform 20(fvec3) + 381: 28(int) Constant 0 + 382: TypePointer Input 7(fvec4) + 390: 60(int) Constant 0 + 393: 60(int) Constant 1 + 402: 60(int) Constant 3 + 403: TypePointer Input 6(float) + 427: TypeArray 7(fvec4) 393 + 428: TypePointer Output 427 + 429(oFragColor): 428(ptr) Variable Output + 433: TypePointer Output 7(fvec4) + 436: 28(int) Constant 1 + 453: TypeImage 6(float) 2D sampled format:Unknown + 454: TypeSampledImage 453 + 455: TypePointer UniformConstant 454 +456(sTDNoiseMap): 455(ptr) Variable UniformConstant +458(gl_FragCoord): 382(ptr) Variable Input + 461: 6(float) Constant 1132462080 + 466: 6(float) Constant 1056964608 + 484: TypePointer Input 22(bool) +485(gl_FrontFacing): 484(ptr) Variable Input + 489: 6(float) Constant 1065353216 + 501: 60(int) Constant 16 + 507: 60(int) Constant 1431655765 + 511: 60(int) Constant 2863311530 + 516: 60(int) Constant 858993459 + 520: 60(int) Constant 3435973836 + 525: 60(int) Constant 252645135 + 527: 60(int) Constant 4 + 530: 60(int) Constant 4042322160 + 535: 60(int) Constant 16711935 + 537: 60(int) Constant 8 + 540: 60(int) Constant 4278255360 + 546: 6(float) Constant 796917760 + 564: 6(float) Constant 1086918619 + 605: 6(float) Constant 1065336439 + 607: 20(fvec3) ConstantComposite 331 331 489 + 608: 20(fvec3) ConstantComposite 489 331 331 + 609: TypeVector 22(bool) 3 + 643: 6(float) Constant 897988541 + 657: 6(float) Constant 841731191 + 661: 6(float) Constant 1078530011 + 670: 20(fvec3) ConstantComposite 489 489 489 + 673: 6(float) Constant 1073741824 + 674: 6(float) Constant 3232874585 + 677: 6(float) Constant 1088386572 + 707: TypePointer Function 96(TDPBRResult) + 789: TypePointer Function 160(TDPhongResult) + 791: 20(fvec3) ConstantComposite 331 331 331 + 928: TypeImage 6(float) Buffer sampled format:Unknown + 929: TypeSampledImage 928 + 930: TypePointer UniformConstant 929 +931(sTDInstanceTexCoord): 930(ptr) Variable UniformConstant + 950: TypePointer Uniform 28(int) +958(sTDInstanceT): 930(ptr) Variable UniformConstant + 1028: TypePointer Function 287 + 1030: 20(fvec3) ConstantComposite 331 489 331 + 1031: 287 ConstantComposite 608 1030 607 + 1068: 22(bool) ConstantTrue + 1079: 304 ConstantComposite 332 332 332 332 + 1081: TypePointer Function 304 + 1083: 7(fvec4) ConstantComposite 489 331 331 331 + 1084: 7(fvec4) ConstantComposite 331 489 331 331 + 1085: 7(fvec4) ConstantComposite 331 331 489 331 + 1086: 7(fvec4) ConstantComposite 331 331 331 489 + 1087: 304 ConstantComposite 1083 1084 1085 1086 +1219(sTDInstanceColor): 930(ptr) Variable UniformConstant + 1253(TDMatrix): TypeStruct 304 304 304 304 304 304 304 304 304 304 304 304 304 287 287 287 + 1254: TypeArray 1253(TDMatrix) 393 +1255(TDMatricesBlock): TypeStruct 1254 + 1256: TypePointer Uniform 1255(TDMatricesBlock) + 1257: 1256(ptr) Variable Uniform +1258(TDCameraInfo): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 28(int) + 1259: TypeArray 1258(TDCameraInfo) 393 +1260(TDCameraInfoBlock): TypeStruct 1259 + 1261: TypePointer Uniform 1260(TDCameraInfoBlock) + 1262: 1261(ptr) Variable Uniform + 1263(TDGeneral): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) +1264(TDGeneralBlock): TypeStruct 1263(TDGeneral) + 1265: TypePointer Uniform 1264(TDGeneralBlock) + 1266: 1265(ptr) Variable Uniform + 1267: TypeImage 6(float) 1D sampled format:Unknown + 1268: TypeSampledImage 1267 + 1269: TypePointer UniformConstant 1268 +1270(sTDSineLookup): 1269(ptr) Variable UniformConstant +1271(sTDWhite2D): 455(ptr) Variable UniformConstant + 1272: TypeImage 6(float) 3D sampled format:Unknown + 1273: TypeSampledImage 1272 + 1274: TypePointer UniformConstant 1273 +1275(sTDWhite3D): 1274(ptr) Variable UniformConstant +1276(sTDWhite2DArray): 362(ptr) Variable UniformConstant + 1277: TypeImage 6(float) Cube sampled format:Unknown + 1278: TypeSampledImage 1277 + 1279: TypePointer UniformConstant 1278 +1280(sTDWhiteCube): 1279(ptr) Variable UniformConstant + 1281(TDLight): TypeStruct 7(fvec4) 20(fvec3) 20(fvec3) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 304 304 7(fvec4) 304 + 1282: TypeArray 1281(TDLight) 393 +1283(TDLightBlock): TypeStruct 1282 + 1284: TypePointer Uniform 1283(TDLightBlock) + 1285: 1284(ptr) Variable Uniform +1286(TDEnvLight): TypeStruct 20(fvec3) 287 + 1287: TypeArray 1286(TDEnvLight) 393 +1288(TDEnvLightBlock): TypeStruct 1287 + 1289: TypePointer Uniform 1288(TDEnvLightBlock) + 1290: 1289(ptr) Variable Uniform + 1291: 60(int) Constant 9 + 1292: TypeArray 20(fvec3) 1291 +1293(TDEnvLightBuffer): TypeStruct 1292 + 1294: TypeArray 1293(TDEnvLightBuffer) 393 + 1295: TypePointer Uniform 1294 +1296(uTDEnvLightBuffers): 1295(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label + 330(outcol): 8(ptr) Variable Function + 333(texCoord0): 21(ptr) Variable Function + 341(actualTexZ): 30(ptr) Variable Function +349(instanceLoop): 30(ptr) Variable Function +359(colorMapColor): 8(ptr) Variable Function + 367(red): 30(ptr) Variable Function + 401(alpha): 30(ptr) Variable Function + 409(param): 8(ptr) Variable Function + 422(param): 30(ptr) Variable Function + 430(param): 8(ptr) Variable Function + 435(i): 29(ptr) Variable Function + 329: 2 FunctionCall 15(TDCheckDiscard() + Store 330(outcol) 332 + 339: 338(ptr) AccessChain 336(iVert) 337 + 340: 20(fvec3) Load 339 + Store 333(texCoord0) 340 + 343: 30(ptr) AccessChain 333(texCoord0) 342 + 344: 6(float) Load 343 + 345: 28(int) ConvertFToS 344 + 346: 6(float) ConvertSToF 345 + 348: 6(float) FMod 346 347 + Store 341(actualTexZ) 348 + 350: 30(ptr) AccessChain 333(texCoord0) 342 + 351: 6(float) Load 350 + 352: 28(int) ConvertFToS 351 + 354: 28(int) SDiv 352 353 + 355: 6(float) ConvertSToF 354 + 356: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 355 + Store 349(instanceLoop) 356 + 357: 6(float) Load 341(actualTexZ) + 358: 30(ptr) AccessChain 333(texCoord0) 342 + Store 358 357 + 364: 361 Load 363(sColorMap) + 365: 20(fvec3) Load 333(texCoord0) + 366: 7(fvec4) ImageSampleImplicitLod 364 365 + Store 359(colorMapColor) 366 + 368: 6(float) Load 349(instanceLoop) + 369: 28(int) ConvertFToS 368 + 370: 30(ptr) AccessChain 359(colorMapColor) 369 + 371: 6(float) Load 370 + Store 367(red) 371 + 372: 6(float) Load 367(red) + 373: 7(fvec4) CompositeConstruct 372 372 372 372 + Store 359(colorMapColor) 373 + 379: 378(ptr) AccessChain 376 377 + 380: 20(fvec3) Load 379 + 383: 382(ptr) AccessChain 336(iVert) 381 + 384: 7(fvec4) Load 383 + 385: 20(fvec3) VectorShuffle 384 384 0 1 2 + 386: 20(fvec3) FMul 380 385 + 387: 7(fvec4) Load 330(outcol) + 388: 20(fvec3) VectorShuffle 387 387 0 1 2 + 389: 20(fvec3) FAdd 388 386 + 391: 30(ptr) AccessChain 330(outcol) 390 + 392: 6(float) CompositeExtract 389 0 + Store 391 392 + 394: 30(ptr) AccessChain 330(outcol) 393 + 395: 6(float) CompositeExtract 389 1 + Store 394 395 + 396: 30(ptr) AccessChain 330(outcol) 342 + 397: 6(float) CompositeExtract 389 2 + Store 396 397 + 398: 7(fvec4) Load 359(colorMapColor) + 399: 7(fvec4) Load 330(outcol) + 400: 7(fvec4) FMul 399 398 + Store 330(outcol) 400 + 404: 403(ptr) AccessChain 336(iVert) 381 402 + 405: 6(float) Load 404 + 406: 30(ptr) AccessChain 359(colorMapColor) 402 + 407: 6(float) Load 406 + 408: 6(float) FMul 405 407 + Store 401(alpha) 408 + 410: 7(fvec4) Load 330(outcol) + Store 409(param) 410 + 411: 7(fvec4) FunctionCall 18(TDDither(vf4;) 409(param) + Store 330(outcol) 411 + 412: 6(float) Load 401(alpha) + 413: 7(fvec4) Load 330(outcol) + 414: 20(fvec3) VectorShuffle 413 413 0 1 2 + 415: 20(fvec3) VectorTimesScalar 414 412 + 416: 30(ptr) AccessChain 330(outcol) 390 + 417: 6(float) CompositeExtract 415 0 + Store 416 417 + 418: 30(ptr) AccessChain 330(outcol) 393 + 419: 6(float) CompositeExtract 415 1 + Store 418 419 + 420: 30(ptr) AccessChain 330(outcol) 342 + 421: 6(float) CompositeExtract 415 2 + Store 420 421 + 423: 6(float) Load 401(alpha) + Store 422(param) 423 + 424: 2 FunctionCall 38(TDAlphaTest(f1;) 422(param) + 425: 6(float) Load 401(alpha) + 426: 30(ptr) AccessChain 330(outcol) 402 + Store 426 425 + 431: 7(fvec4) Load 330(outcol) + Store 430(param) 431 + 432: 7(fvec4) FunctionCall 321(TDOutputSwizzle(vf4;) 430(param) + 434: 433(ptr) AccessChain 429(oFragColor) 381 + Store 434 432 + Store 435(i) 436 + Branch 437 + 437: Label + LoopMerge 439 440 None + Branch 441 + 441: Label + 442: 28(int) Load 435(i) + 443: 22(bool) SLessThan 442 436 + BranchConditional 443 438 439 + 438: Label + 444: 28(int) Load 435(i) + 445: 433(ptr) AccessChain 429(oFragColor) 444 + Store 445 332 + Branch 440 + 440: Label + 446: 28(int) Load 435(i) + 447: 28(int) IAdd 446 436 + Store 435(i) 447 + Branch 437 + 439: Label + Return + FunctionEnd +11(TDColor(vf4;): 7(fvec4) Function None 9 + 10(color): 8(ptr) FunctionParameter + 12: Label + 448: 7(fvec4) Load 10(color) + ReturnValue 448 + FunctionEnd +13(TDCheckOrderIndTrans(): 2 Function None 3 + 14: Label + Return + FunctionEnd +15(TDCheckDiscard(): 2 Function None 3 + 16: Label + 451: 2 FunctionCall 13(TDCheckOrderIndTrans() + Return + FunctionEnd +18(TDDither(vf4;): 7(fvec4) Function None 9 + 17(color): 8(ptr) FunctionParameter + 19: Label + 452(d): 30(ptr) Variable Function + 457: 454 Load 456(sTDNoiseMap) + 459: 7(fvec4) Load 458(gl_FragCoord) + 460: 66(fvec2) VectorShuffle 459 459 0 1 + 462: 66(fvec2) CompositeConstruct 461 461 + 463: 66(fvec2) FDiv 460 462 + 464: 7(fvec4) ImageSampleImplicitLod 457 463 + 465: 6(float) CompositeExtract 464 0 + Store 452(d) 465 + 467: 6(float) Load 452(d) + 468: 6(float) FSub 467 466 + Store 452(d) 468 + 469: 6(float) Load 452(d) + 470: 6(float) FDiv 469 461 + Store 452(d) 470 + 471: 7(fvec4) Load 17(color) + 472: 20(fvec3) VectorShuffle 471 471 0 1 2 + 473: 6(float) Load 452(d) + 474: 20(fvec3) CompositeConstruct 473 473 473 + 475: 20(fvec3) FAdd 472 474 + 476: 30(ptr) AccessChain 17(color) 402 + 477: 6(float) Load 476 + 478: 6(float) CompositeExtract 475 0 + 479: 6(float) CompositeExtract 475 1 + 480: 6(float) CompositeExtract 475 2 + 481: 7(fvec4) CompositeConstruct 478 479 480 477 + ReturnValue 481 + FunctionEnd +26(TDFrontFacing(vf3;vf3;): 22(bool) Function None 23 + 24(pos): 21(ptr) FunctionParameter + 25(normal): 21(ptr) FunctionParameter + 27: Label + 486: 22(bool) Load 485(gl_FrontFacing) + ReturnValue 486 + FunctionEnd +34(TDAttenuateLight(i1;f1;): 6(float) Function None 31 + 32(index): 29(ptr) FunctionParameter + 33(lightDist): 30(ptr) FunctionParameter + 35: Label + ReturnValue 489 + FunctionEnd +38(TDAlphaTest(f1;): 2 Function None 36 + 37(alpha): 30(ptr) FunctionParameter + 39: Label + Return + FunctionEnd +43(TDHardShadow(i1;vf3;): 6(float) Function None 40 + 41(lightIndex): 29(ptr) FunctionParameter +42(worldSpacePos): 21(ptr) FunctionParameter + 44: Label + ReturnValue 331 + FunctionEnd +50(TDSoftShadow(i1;vf3;i1;i1;): 6(float) Function None 45 + 46(lightIndex): 29(ptr) FunctionParameter +47(worldSpacePos): 21(ptr) FunctionParameter + 48(samples): 29(ptr) FunctionParameter + 49(steps): 29(ptr) FunctionParameter + 51: Label + ReturnValue 331 + FunctionEnd +54(TDSoftShadow(i1;vf3;): 6(float) Function None 40 + 52(lightIndex): 29(ptr) FunctionParameter +53(worldSpacePos): 21(ptr) FunctionParameter + 55: Label + ReturnValue 331 + FunctionEnd +58(TDShadow(i1;vf3;): 6(float) Function None 40 + 56(lightIndex): 29(ptr) FunctionParameter +57(worldSpacePos): 21(ptr) FunctionParameter + 59: Label + ReturnValue 331 + FunctionEnd +64(iTDRadicalInverse_VdC(u1;): 6(float) Function None 62 + 63(bits): 61(ptr) FunctionParameter + 65: Label + 500: 60(int) Load 63(bits) + 502: 60(int) ShiftLeftLogical 500 501 + 503: 60(int) Load 63(bits) + 504: 60(int) ShiftRightLogical 503 501 + 505: 60(int) BitwiseOr 502 504 + Store 63(bits) 505 + 506: 60(int) Load 63(bits) + 508: 60(int) BitwiseAnd 506 507 + 509: 60(int) ShiftLeftLogical 508 393 + 510: 60(int) Load 63(bits) + 512: 60(int) BitwiseAnd 510 511 + 513: 60(int) ShiftRightLogical 512 393 + 514: 60(int) BitwiseOr 509 513 + Store 63(bits) 514 + 515: 60(int) Load 63(bits) + 517: 60(int) BitwiseAnd 515 516 + 518: 60(int) ShiftLeftLogical 517 342 + 519: 60(int) Load 63(bits) + 521: 60(int) BitwiseAnd 519 520 + 522: 60(int) ShiftRightLogical 521 342 + 523: 60(int) BitwiseOr 518 522 + Store 63(bits) 523 + 524: 60(int) Load 63(bits) + 526: 60(int) BitwiseAnd 524 525 + 528: 60(int) ShiftLeftLogical 526 527 + 529: 60(int) Load 63(bits) + 531: 60(int) BitwiseAnd 529 530 + 532: 60(int) ShiftRightLogical 531 527 + 533: 60(int) BitwiseOr 528 532 + Store 63(bits) 533 + 534: 60(int) Load 63(bits) + 536: 60(int) BitwiseAnd 534 535 + 538: 60(int) ShiftLeftLogical 536 537 + 539: 60(int) Load 63(bits) + 541: 60(int) BitwiseAnd 539 540 + 542: 60(int) ShiftRightLogical 541 537 + 543: 60(int) BitwiseOr 538 542 + Store 63(bits) 543 + 544: 60(int) Load 63(bits) + 545: 6(float) ConvertUToF 544 + 547: 6(float) FMul 545 546 + ReturnValue 547 + FunctionEnd +70(iTDHammersley(u1;u1;): 66(fvec2) Function None 67 + 68(i): 61(ptr) FunctionParameter + 69(N): 61(ptr) FunctionParameter + 71: Label + 555(param): 61(ptr) Variable Function + 550: 60(int) Load 68(i) + 551: 6(float) ConvertUToF 550 + 552: 60(int) Load 69(N) + 553: 6(float) ConvertUToF 552 + 554: 6(float) FDiv 551 553 + 556: 60(int) Load 68(i) + Store 555(param) 556 + 557: 6(float) FunctionCall 64(iTDRadicalInverse_VdC(u1;) 555(param) + 558: 66(fvec2) CompositeConstruct 554 557 + ReturnValue 558 + FunctionEnd +77(iTDImportanceSampleGGX(vf2;f1;vf3;): 20(fvec3) Function None 73 + 74(Xi): 72(ptr) FunctionParameter + 75(roughness2): 30(ptr) FunctionParameter + 76(N): 21(ptr) FunctionParameter + 78: Label + 561(a): 30(ptr) Variable Function + 563(phi): 30(ptr) Variable Function + 568(cosTheta): 30(ptr) Variable Function + 582(sinTheta): 30(ptr) Variable Function + 588(H): 21(ptr) Variable Function + 601(upVector): 21(ptr) Variable Function + 612(tangentX): 21(ptr) Variable Function + 617(tangentY): 21(ptr) Variable Function +621(worldResult): 21(ptr) Variable Function + 562: 6(float) Load 75(roughness2) + Store 561(a) 562 + 565: 30(ptr) AccessChain 74(Xi) 390 + 566: 6(float) Load 565 + 567: 6(float) FMul 564 566 + Store 563(phi) 567 + 569: 30(ptr) AccessChain 74(Xi) 393 + 570: 6(float) Load 569 + 571: 6(float) FSub 489 570 + 572: 6(float) Load 561(a) + 573: 6(float) Load 561(a) + 574: 6(float) FMul 572 573 + 575: 6(float) FSub 574 489 + 576: 30(ptr) AccessChain 74(Xi) 393 + 577: 6(float) Load 576 + 578: 6(float) FMul 575 577 + 579: 6(float) FAdd 489 578 + 580: 6(float) FDiv 571 579 + 581: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 580 + Store 568(cosTheta) 581 + 583: 6(float) Load 568(cosTheta) + 584: 6(float) Load 568(cosTheta) + 585: 6(float) FMul 583 584 + 586: 6(float) FSub 489 585 + 587: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 586 + Store 582(sinTheta) 587 + 589: 6(float) Load 582(sinTheta) + 590: 6(float) Load 563(phi) + 591: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 590 + 592: 6(float) FMul 589 591 + 593: 30(ptr) AccessChain 588(H) 390 + Store 593 592 + 594: 6(float) Load 582(sinTheta) + 595: 6(float) Load 563(phi) + 596: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 595 + 597: 6(float) FMul 594 596 + 598: 30(ptr) AccessChain 588(H) 393 + Store 598 597 + 599: 6(float) Load 568(cosTheta) + 600: 30(ptr) AccessChain 588(H) 342 + Store 600 599 + 602: 30(ptr) AccessChain 76(N) 342 + 603: 6(float) Load 602 + 604: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 603 + 606: 22(bool) FOrdLessThan 604 605 + 610: 609(bvec3) CompositeConstruct 606 606 606 + 611: 20(fvec3) Select 610 607 608 + Store 601(upVector) 611 + 613: 20(fvec3) Load 601(upVector) + 614: 20(fvec3) Load 76(N) + 615: 20(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 613 614 + 616: 20(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 615 + Store 612(tangentX) 616 + 618: 20(fvec3) Load 76(N) + 619: 20(fvec3) Load 612(tangentX) + 620: 20(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 618 619 + Store 617(tangentY) 620 + 622: 20(fvec3) Load 612(tangentX) + 623: 30(ptr) AccessChain 588(H) 390 + 624: 6(float) Load 623 + 625: 20(fvec3) VectorTimesScalar 622 624 + 626: 20(fvec3) Load 617(tangentY) + 627: 30(ptr) AccessChain 588(H) 393 + 628: 6(float) Load 627 + 629: 20(fvec3) VectorTimesScalar 626 628 + 630: 20(fvec3) FAdd 625 629 + 631: 20(fvec3) Load 76(N) + 632: 30(ptr) AccessChain 588(H) 342 + 633: 6(float) Load 632 + 634: 20(fvec3) VectorTimesScalar 631 633 + 635: 20(fvec3) FAdd 630 634 + Store 621(worldResult) 635 + 636: 20(fvec3) Load 621(worldResult) + ReturnValue 636 + FunctionEnd +83(iTDDistributionGGX(vf3;vf3;f1;): 6(float) Function None 79 + 80(normal): 21(ptr) FunctionParameter + 81(half_vector): 21(ptr) FunctionParameter + 82(roughness2): 30(ptr) FunctionParameter + 84: Label + 639(NdotH): 30(ptr) Variable Function + 645(alpha2): 30(ptr) Variable Function + 649(denom): 30(ptr) Variable Function + 640: 20(fvec3) Load 80(normal) + 641: 20(fvec3) Load 81(half_vector) + 642: 6(float) Dot 640 641 + 644: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 642 643 489 + Store 639(NdotH) 644 + 646: 6(float) Load 82(roughness2) + 647: 6(float) Load 82(roughness2) + 648: 6(float) FMul 646 647 + Store 645(alpha2) 648 + 650: 6(float) Load 639(NdotH) + 651: 6(float) Load 639(NdotH) + 652: 6(float) FMul 650 651 + 653: 6(float) Load 645(alpha2) + 654: 6(float) FSub 653 489 + 655: 6(float) FMul 652 654 + 656: 6(float) FAdd 655 489 + Store 649(denom) 656 + 658: 6(float) Load 649(denom) + 659: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 657 658 + Store 649(denom) 659 + 660: 6(float) Load 645(alpha2) + 662: 6(float) Load 649(denom) + 663: 6(float) FMul 661 662 + 664: 6(float) Load 649(denom) + 665: 6(float) FMul 663 664 + 666: 6(float) FDiv 660 665 + ReturnValue 666 + FunctionEnd +88(iTDCalcF(vf3;f1;): 20(fvec3) Function None 85 + 86(F0): 21(ptr) FunctionParameter + 87(VdotH): 30(ptr) FunctionParameter + 89: Label + 669: 20(fvec3) Load 86(F0) + 671: 20(fvec3) Load 86(F0) + 672: 20(fvec3) FSub 670 671 + 675: 6(float) Load 87(VdotH) + 676: 6(float) FMul 674 675 + 678: 6(float) FSub 676 677 + 679: 6(float) Load 87(VdotH) + 680: 6(float) FMul 678 679 + 681: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 673 680 + 682: 20(fvec3) VectorTimesScalar 672 681 + 683: 20(fvec3) FAdd 669 682 + ReturnValue 683 + FunctionEnd +94(iTDCalcG(f1;f1;f1;): 6(float) Function None 90 + 91(NdotL): 30(ptr) FunctionParameter + 92(NdotV): 30(ptr) FunctionParameter + 93(k): 30(ptr) FunctionParameter + 95: Label + 686(Gl): 30(ptr) Variable Function + 694(Gv): 30(ptr) Variable Function + 687: 6(float) Load 91(NdotL) + 688: 6(float) Load 93(k) + 689: 6(float) FSub 489 688 + 690: 6(float) FMul 687 689 + 691: 6(float) Load 93(k) + 692: 6(float) FAdd 690 691 + 693: 6(float) FDiv 489 692 + Store 686(Gl) 693 + 695: 6(float) Load 92(NdotV) + 696: 6(float) Load 93(k) + 697: 6(float) FSub 489 696 + 698: 6(float) FMul 695 697 + 699: 6(float) Load 93(k) + 700: 6(float) FAdd 698 699 + 701: 6(float) FDiv 489 700 + Store 694(Gv) 701 + 702: 6(float) Load 686(Gl) + 703: 6(float) Load 694(Gv) + 704: 6(float) FMul 702 703 + ReturnValue 704 + FunctionEnd +107(TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;):96(TDPBRResult) Function None 97 + 98(index): 29(ptr) FunctionParameter +99(diffuseColor): 21(ptr) FunctionParameter +100(specularColor): 21(ptr) FunctionParameter +101(worldSpacePos): 21(ptr) FunctionParameter + 102(normal): 21(ptr) FunctionParameter +103(shadowStrength): 30(ptr) FunctionParameter +104(shadowColor): 21(ptr) FunctionParameter + 105(camVector): 21(ptr) FunctionParameter + 106(roughness): 30(ptr) FunctionParameter + 108: Label + 708(res): 707(ptr) Variable Function + 709:96(TDPBRResult) Load 708(res) + ReturnValue 709 + FunctionEnd +122(TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;): 2 Function None 109 +110(diffuseContrib): 21(ptr) FunctionParameter +111(specularContrib): 21(ptr) FunctionParameter +112(shadowStrengthOut): 30(ptr) FunctionParameter + 113(index): 29(ptr) FunctionParameter +114(diffuseColor): 21(ptr) FunctionParameter +115(specularColor): 21(ptr) FunctionParameter +116(worldSpacePos): 21(ptr) FunctionParameter + 117(normal): 21(ptr) FunctionParameter +118(shadowStrength): 30(ptr) FunctionParameter +119(shadowColor): 21(ptr) FunctionParameter + 120(camVector): 21(ptr) FunctionParameter + 121(roughness): 30(ptr) FunctionParameter + 123: Label + 712(res): 707(ptr) Variable Function + 713(param): 29(ptr) Variable Function + 715(param): 21(ptr) Variable Function + 717(param): 21(ptr) Variable Function + 719(param): 21(ptr) Variable Function + 721(param): 21(ptr) Variable Function + 723(param): 30(ptr) Variable Function + 725(param): 21(ptr) Variable Function + 727(param): 21(ptr) Variable Function + 729(param): 30(ptr) Variable Function + 714: 28(int) Load 113(index) + Store 713(param) 714 + 716: 20(fvec3) Load 114(diffuseColor) + Store 715(param) 716 + 718: 20(fvec3) Load 115(specularColor) + Store 717(param) 718 + 720: 20(fvec3) Load 116(worldSpacePos) + Store 719(param) 720 + 722: 20(fvec3) Load 117(normal) + Store 721(param) 722 + 724: 6(float) Load 118(shadowStrength) + Store 723(param) 724 + 726: 20(fvec3) Load 119(shadowColor) + Store 725(param) 726 + 728: 20(fvec3) Load 120(camVector) + Store 727(param) 728 + 730: 6(float) Load 121(roughness) + Store 729(param) 730 + 731:96(TDPBRResult) FunctionCall 107(TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;) 713(param) 715(param) 717(param) 719(param) 721(param) 723(param) 725(param) 727(param) 729(param) + Store 712(res) 731 + 732: 21(ptr) AccessChain 712(res) 381 + 733: 20(fvec3) Load 732 + Store 110(diffuseContrib) 733 + 734: 21(ptr) AccessChain 712(res) 436 + 735: 20(fvec3) Load 734 + Store 111(specularContrib) 735 + 736: 30(ptr) AccessChain 712(res) 337 + 737: 6(float) Load 736 + Store 112(shadowStrengthOut) 737 + Return + FunctionEnd +136(TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;): 2 Function None 124 +125(diffuseContrib): 21(ptr) FunctionParameter +126(specularContrib): 21(ptr) FunctionParameter + 127(index): 29(ptr) FunctionParameter +128(diffuseColor): 21(ptr) FunctionParameter +129(specularColor): 21(ptr) FunctionParameter +130(worldSpacePos): 21(ptr) FunctionParameter + 131(normal): 21(ptr) FunctionParameter +132(shadowStrength): 30(ptr) FunctionParameter +133(shadowColor): 21(ptr) FunctionParameter + 134(camVector): 21(ptr) FunctionParameter + 135(roughness): 30(ptr) FunctionParameter + 137: Label + 738(res): 707(ptr) Variable Function + 739(param): 29(ptr) Variable Function + 741(param): 21(ptr) Variable Function + 743(param): 21(ptr) Variable Function + 745(param): 21(ptr) Variable Function + 747(param): 21(ptr) Variable Function + 749(param): 30(ptr) Variable Function + 751(param): 21(ptr) Variable Function + 753(param): 21(ptr) Variable Function + 755(param): 30(ptr) Variable Function + 740: 28(int) Load 127(index) + Store 739(param) 740 + 742: 20(fvec3) Load 128(diffuseColor) + Store 741(param) 742 + 744: 20(fvec3) Load 129(specularColor) + Store 743(param) 744 + 746: 20(fvec3) Load 130(worldSpacePos) + Store 745(param) 746 + 748: 20(fvec3) Load 131(normal) + Store 747(param) 748 + 750: 6(float) Load 132(shadowStrength) + Store 749(param) 750 + 752: 20(fvec3) Load 133(shadowColor) + Store 751(param) 752 + 754: 20(fvec3) Load 134(camVector) + Store 753(param) 754 + 756: 6(float) Load 135(roughness) + Store 755(param) 756 + 757:96(TDPBRResult) FunctionCall 107(TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;) 739(param) 741(param) 743(param) 745(param) 747(param) 749(param) 751(param) 753(param) 755(param) + Store 738(res) 757 + 758: 21(ptr) AccessChain 738(res) 381 + 759: 20(fvec3) Load 758 + Store 125(diffuseContrib) 759 + 760: 21(ptr) AccessChain 738(res) 436 + 761: 20(fvec3) Load 760 + Store 126(specularContrib) 761 + Return + FunctionEnd +146(TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1;):96(TDPBRResult) Function None 138 + 139(index): 29(ptr) FunctionParameter +140(diffuseColor): 21(ptr) FunctionParameter +141(specularColor): 21(ptr) FunctionParameter + 142(normal): 21(ptr) FunctionParameter + 143(camVector): 21(ptr) FunctionParameter + 144(roughness): 30(ptr) FunctionParameter +145(ambientOcclusion): 30(ptr) FunctionParameter + 147: Label + 762(res): 707(ptr) Variable Function + 763:96(TDPBRResult) Load 762(res) + ReturnValue 763 + FunctionEnd +158(TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1;): 2 Function None 148 +149(diffuseContrib): 21(ptr) FunctionParameter +150(specularContrib): 21(ptr) FunctionParameter + 151(index): 29(ptr) FunctionParameter +152(diffuseColor): 21(ptr) FunctionParameter +153(specularColor): 21(ptr) FunctionParameter + 154(normal): 21(ptr) FunctionParameter + 155(camVector): 21(ptr) FunctionParameter + 156(roughness): 30(ptr) FunctionParameter +157(ambientOcclusion): 30(ptr) FunctionParameter + 159: Label + 766(res): 707(ptr) Variable Function + 767(param): 29(ptr) Variable Function + 769(param): 21(ptr) Variable Function + 771(param): 21(ptr) Variable Function + 773(param): 21(ptr) Variable Function + 775(param): 21(ptr) Variable Function + 777(param): 30(ptr) Variable Function + 779(param): 30(ptr) Variable Function + 768: 28(int) Load 151(index) + Store 767(param) 768 + 770: 20(fvec3) Load 152(diffuseColor) + Store 769(param) 770 + 772: 20(fvec3) Load 153(specularColor) + Store 771(param) 772 + 774: 20(fvec3) Load 154(normal) + Store 773(param) 774 + 776: 20(fvec3) Load 155(camVector) + Store 775(param) 776 + 778: 6(float) Load 156(roughness) + Store 777(param) 778 + 780: 6(float) Load 157(ambientOcclusion) + Store 779(param) 780 + 781:96(TDPBRResult) FunctionCall 146(TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1;) 767(param) 769(param) 771(param) 773(param) 775(param) 777(param) 779(param) + Store 766(res) 781 + 782: 21(ptr) AccessChain 766(res) 381 + 783: 20(fvec3) Load 782 + Store 149(diffuseContrib) 783 + 784: 21(ptr) AccessChain 766(res) 436 + 785: 20(fvec3) Load 784 + Store 150(specularContrib) 785 + Return + FunctionEnd +170(TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1;):160(TDPhongResult) Function None 161 + 162(index): 29(ptr) FunctionParameter +163(worldSpacePos): 21(ptr) FunctionParameter + 164(normal): 21(ptr) FunctionParameter +165(shadowStrength): 30(ptr) FunctionParameter +166(shadowColor): 21(ptr) FunctionParameter + 167(camVector): 21(ptr) FunctionParameter + 168(shininess): 30(ptr) FunctionParameter + 169(shininess2): 30(ptr) FunctionParameter + 171: Label + 790(res): 789(ptr) Variable Function + 786: 28(int) Load 162(index) + SelectionMerge 788 None + Switch 786 787 + 787: Label + 792: 21(ptr) AccessChain 790(res) 381 + Store 792 791 + 793: 21(ptr) AccessChain 790(res) 436 + Store 793 791 + 794: 21(ptr) AccessChain 790(res) 337 + Store 794 791 + 795: 30(ptr) AccessChain 790(res) 377 + Store 795 331 + Branch 788 + 788: Label + 798:160(TDPhongResult) Load 790(res) + ReturnValue 798 + FunctionEnd +185(TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1;): 2 Function None 172 +173(diffuseContrib): 21(ptr) FunctionParameter +174(specularContrib): 21(ptr) FunctionParameter +175(specularContrib2): 21(ptr) FunctionParameter +176(shadowStrengthOut): 30(ptr) FunctionParameter + 177(index): 29(ptr) FunctionParameter +178(worldSpacePos): 21(ptr) FunctionParameter + 179(normal): 21(ptr) FunctionParameter +180(shadowStrength): 30(ptr) FunctionParameter +181(shadowColor): 21(ptr) FunctionParameter + 182(camVector): 21(ptr) FunctionParameter + 183(shininess): 30(ptr) FunctionParameter + 184(shininess2): 30(ptr) FunctionParameter + 186: Label + 804(res): 789(ptr) Variable Function + 801: 28(int) Load 177(index) + SelectionMerge 803 None + Switch 801 802 + 802: Label + 805: 21(ptr) AccessChain 804(res) 381 + Store 805 791 + 806: 21(ptr) AccessChain 804(res) 436 + Store 806 791 + 807: 21(ptr) AccessChain 804(res) 337 + Store 807 791 + 808: 30(ptr) AccessChain 804(res) 377 + Store 808 331 + Branch 803 + 803: Label + 811: 21(ptr) AccessChain 804(res) 381 + 812: 20(fvec3) Load 811 + Store 173(diffuseContrib) 812 + 813: 21(ptr) AccessChain 804(res) 436 + 814: 20(fvec3) Load 813 + Store 174(specularContrib) 814 + 815: 21(ptr) AccessChain 804(res) 337 + 816: 20(fvec3) Load 815 + Store 175(specularContrib2) 816 + 817: 30(ptr) AccessChain 804(res) 377 + 818: 6(float) Load 817 + Store 176(shadowStrengthOut) 818 + Return + FunctionEnd +199(TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1;): 2 Function None 187 +188(diffuseContrib): 21(ptr) FunctionParameter +189(specularContrib): 21(ptr) FunctionParameter +190(specularContrib2): 21(ptr) FunctionParameter + 191(index): 29(ptr) FunctionParameter +192(worldSpacePos): 21(ptr) FunctionParameter + 193(normal): 21(ptr) FunctionParameter +194(shadowStrength): 30(ptr) FunctionParameter +195(shadowColor): 21(ptr) FunctionParameter + 196(camVector): 21(ptr) FunctionParameter + 197(shininess): 30(ptr) FunctionParameter + 198(shininess2): 30(ptr) FunctionParameter + 200: Label + 822(res): 789(ptr) Variable Function + 819: 28(int) Load 191(index) + SelectionMerge 821 None + Switch 819 820 + 820: Label + 823: 21(ptr) AccessChain 822(res) 381 + Store 823 791 + 824: 21(ptr) AccessChain 822(res) 436 + Store 824 791 + 825: 21(ptr) AccessChain 822(res) 337 + Store 825 791 + 826: 30(ptr) AccessChain 822(res) 377 + Store 826 331 + Branch 821 + 821: Label + 829: 21(ptr) AccessChain 822(res) 381 + 830: 20(fvec3) Load 829 + Store 188(diffuseContrib) 830 + 831: 21(ptr) AccessChain 822(res) 436 + 832: 20(fvec3) Load 831 + Store 189(specularContrib) 832 + 833: 21(ptr) AccessChain 822(res) 337 + 834: 20(fvec3) Load 833 + Store 190(specularContrib2) 834 + Return + FunctionEnd +211(TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;): 2 Function None 201 +202(diffuseContrib): 21(ptr) FunctionParameter +203(specularContrib): 21(ptr) FunctionParameter + 204(index): 29(ptr) FunctionParameter +205(worldSpacePos): 21(ptr) FunctionParameter + 206(normal): 21(ptr) FunctionParameter +207(shadowStrength): 30(ptr) FunctionParameter +208(shadowColor): 21(ptr) FunctionParameter + 209(camVector): 21(ptr) FunctionParameter + 210(shininess): 30(ptr) FunctionParameter + 212: Label + 838(res): 789(ptr) Variable Function + 835: 28(int) Load 204(index) + SelectionMerge 837 None + Switch 835 836 + 836: Label + 839: 21(ptr) AccessChain 838(res) 381 + Store 839 791 + 840: 21(ptr) AccessChain 838(res) 436 + Store 840 791 + 841: 21(ptr) AccessChain 838(res) 337 + Store 841 791 + 842: 30(ptr) AccessChain 838(res) 377 + Store 842 331 + Branch 837 + 837: Label + 845: 21(ptr) AccessChain 838(res) 381 + 846: 20(fvec3) Load 845 + Store 202(diffuseContrib) 846 + 847: 21(ptr) AccessChain 838(res) 436 + 848: 20(fvec3) Load 847 + Store 203(specularContrib) 848 + Return + FunctionEnd +223(TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1;): 2 Function None 213 +214(diffuseContrib): 21(ptr) FunctionParameter +215(specularContrib): 21(ptr) FunctionParameter +216(specularContrib2): 21(ptr) FunctionParameter + 217(index): 29(ptr) FunctionParameter +218(worldSpacePos): 21(ptr) FunctionParameter + 219(normal): 21(ptr) FunctionParameter + 220(camVector): 21(ptr) FunctionParameter + 221(shininess): 30(ptr) FunctionParameter + 222(shininess2): 30(ptr) FunctionParameter + 224: Label + 852(res): 789(ptr) Variable Function + 849: 28(int) Load 217(index) + SelectionMerge 851 None + Switch 849 850 + 850: Label + 853: 21(ptr) AccessChain 852(res) 381 + Store 853 791 + 854: 21(ptr) AccessChain 852(res) 436 + Store 854 791 + 855: 21(ptr) AccessChain 852(res) 337 + Store 855 791 + 856: 30(ptr) AccessChain 852(res) 377 + Store 856 331 + Branch 851 + 851: Label + 859: 21(ptr) AccessChain 852(res) 381 + 860: 20(fvec3) Load 859 + Store 214(diffuseContrib) 860 + 861: 21(ptr) AccessChain 852(res) 436 + 862: 20(fvec3) Load 861 + Store 215(specularContrib) 862 + 863: 21(ptr) AccessChain 852(res) 337 + 864: 20(fvec3) Load 863 + Store 216(specularContrib2) 864 + Return + FunctionEnd +233(TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1;): 2 Function None 225 +226(diffuseContrib): 21(ptr) FunctionParameter +227(specularContrib): 21(ptr) FunctionParameter + 228(index): 29(ptr) FunctionParameter +229(worldSpacePos): 21(ptr) FunctionParameter + 230(normal): 21(ptr) FunctionParameter + 231(camVector): 21(ptr) FunctionParameter + 232(shininess): 30(ptr) FunctionParameter + 234: Label + 868(res): 789(ptr) Variable Function + 865: 28(int) Load 228(index) + SelectionMerge 867 None + Switch 865 866 + 866: Label + 869: 21(ptr) AccessChain 868(res) 381 + Store 869 791 + 870: 21(ptr) AccessChain 868(res) 436 + Store 870 791 + 871: 21(ptr) AccessChain 868(res) 337 + Store 871 791 + 872: 30(ptr) AccessChain 868(res) 377 + Store 872 331 + Branch 867 + 867: Label + 875: 21(ptr) AccessChain 868(res) 381 + 876: 20(fvec3) Load 875 + Store 226(diffuseContrib) 876 + 877: 21(ptr) AccessChain 868(res) 436 + 878: 20(fvec3) Load 877 + Store 227(specularContrib) 878 + Return + FunctionEnd +240(TDLighting(vf3;i1;vf3;vf3;): 2 Function None 235 +236(diffuseContrib): 21(ptr) FunctionParameter + 237(index): 29(ptr) FunctionParameter +238(worldSpacePos): 21(ptr) FunctionParameter + 239(normal): 21(ptr) FunctionParameter + 241: Label + 882(res): 789(ptr) Variable Function + 879: 28(int) Load 237(index) + SelectionMerge 881 None + Switch 879 880 + 880: Label + 883: 21(ptr) AccessChain 882(res) 381 + Store 883 791 + 884: 21(ptr) AccessChain 882(res) 436 + Store 884 791 + 885: 21(ptr) AccessChain 882(res) 337 + Store 885 791 + 886: 30(ptr) AccessChain 882(res) 377 + Store 886 331 + Branch 881 + 881: Label + 889: 21(ptr) AccessChain 882(res) 381 + 890: 20(fvec3) Load 889 + Store 236(diffuseContrib) 890 + Return + FunctionEnd +249(TDLighting(vf3;i1;vf3;vf3;f1;vf3;): 2 Function None 242 +243(diffuseContrib): 21(ptr) FunctionParameter + 244(index): 29(ptr) FunctionParameter +245(worldSpacePos): 21(ptr) FunctionParameter + 246(normal): 21(ptr) FunctionParameter +247(shadowStrength): 30(ptr) FunctionParameter +248(shadowColor): 21(ptr) FunctionParameter + 250: Label + 894(res): 789(ptr) Variable Function + 891: 28(int) Load 244(index) + SelectionMerge 893 None + Switch 891 892 + 892: Label + 895: 21(ptr) AccessChain 894(res) 381 + Store 895 791 + 896: 21(ptr) AccessChain 894(res) 436 + Store 896 791 + 897: 21(ptr) AccessChain 894(res) 337 + Store 897 791 + 898: 30(ptr) AccessChain 894(res) 377 + Store 898 331 + Branch 893 + 893: Label + 901: 21(ptr) AccessChain 894(res) 381 + 902: 20(fvec3) Load 901 + Store 243(diffuseContrib) 902 + Return + FunctionEnd +255(TDProjMap(i1;vf3;vf4;): 7(fvec4) Function None 251 + 252(index): 29(ptr) FunctionParameter +253(worldSpacePos): 21(ptr) FunctionParameter +254(defaultColor): 8(ptr) FunctionParameter + 256: Label + 903: 28(int) Load 252(index) + SelectionMerge 905 None + Switch 903 904 + 904: Label + 906: 7(fvec4) Load 254(defaultColor) + ReturnValue 906 + 905: Label + Unreachable + FunctionEnd +261(TDFog(vf4;vf3;i1;): 7(fvec4) Function None 257 + 258(color): 8(ptr) FunctionParameter +259(lightingSpacePosition): 21(ptr) FunctionParameter +260(cameraIndex): 29(ptr) FunctionParameter + 262: Label + 910: 28(int) Load 260(cameraIndex) + SelectionMerge 912 None + Switch 910 911 + case 0: 911 + 911: Label + 913: 7(fvec4) Load 258(color) + ReturnValue 913 + 912: Label + Unreachable + FunctionEnd +266(TDFog(vf4;vf3;): 7(fvec4) Function None 263 + 264(color): 8(ptr) FunctionParameter +265(lightingSpacePosition): 21(ptr) FunctionParameter + 267: Label + 917(param): 8(ptr) Variable Function + 919(param): 21(ptr) Variable Function + 921(param): 29(ptr) Variable Function + 918: 7(fvec4) Load 264(color) + Store 917(param) 918 + 920: 20(fvec3) Load 265(lightingSpacePosition) + Store 919(param) 920 + Store 921(param) 381 + 922: 7(fvec4) FunctionCall 261(TDFog(vf4;vf3;i1;) 917(param) 919(param) 921(param) + ReturnValue 922 + FunctionEnd +271(TDInstanceTexCoord(i1;vf3;): 20(fvec3) Function None 268 + 269(index): 29(ptr) FunctionParameter + 270(t): 21(ptr) FunctionParameter + 272: Label + 925(coord): 29(ptr) Variable Function + 927(samp): 8(ptr) Variable Function + 936(v): 21(ptr) Variable Function + 926: 28(int) Load 269(index) + Store 925(coord) 926 + 932: 929 Load 931(sTDInstanceTexCoord) + 933: 28(int) Load 925(coord) + 934: 928 Image 932 + 935: 7(fvec4) ImageFetch 934 933 + Store 927(samp) 935 + 937: 30(ptr) AccessChain 270(t) 390 + 938: 6(float) Load 937 + 939: 30(ptr) AccessChain 936(v) 390 + Store 939 938 + 940: 30(ptr) AccessChain 270(t) 393 + 941: 6(float) Load 940 + 942: 30(ptr) AccessChain 936(v) 393 + Store 942 941 + 943: 30(ptr) AccessChain 927(samp) 390 + 944: 6(float) Load 943 + 945: 30(ptr) AccessChain 936(v) 342 + Store 945 944 + 946: 20(fvec3) Load 936(v) + Store 270(t) 946 + 947: 20(fvec3) Load 270(t) + ReturnValue 947 + FunctionEnd +275(TDInstanceActive(i1;): 22(bool) Function None 273 + 274(index): 29(ptr) FunctionParameter + 276: Label + 955(coord): 29(ptr) Variable Function + 957(samp): 8(ptr) Variable Function + 963(v): 30(ptr) Variable Function + 951: 950(ptr) AccessChain 376 381 + 952: 28(int) Load 951 + 953: 28(int) Load 274(index) + 954: 28(int) ISub 953 952 + Store 274(index) 954 + 956: 28(int) Load 274(index) + Store 955(coord) 956 + 959: 929 Load 958(sTDInstanceT) + 960: 28(int) Load 955(coord) + 961: 928 Image 959 + 962: 7(fvec4) ImageFetch 961 960 + Store 957(samp) 962 + 964: 30(ptr) AccessChain 957(samp) 390 + 965: 6(float) Load 964 + Store 963(v) 965 + 966: 6(float) Load 963(v) + 967: 22(bool) FUnordNotEqual 966 331 + ReturnValue 967 + FunctionEnd +281(iTDInstanceTranslate(i1;b1;): 20(fvec3) Function None 278 + 279(index): 29(ptr) FunctionParameter +280(instanceActive): 277(ptr) FunctionParameter + 282: Label + 970(origIndex): 29(ptr) Variable Function + 976(coord): 29(ptr) Variable Function + 978(samp): 8(ptr) Variable Function + 983(v): 21(ptr) Variable Function + 971: 28(int) Load 279(index) + Store 970(origIndex) 971 + 972: 950(ptr) AccessChain 376 381 + 973: 28(int) Load 972 + 974: 28(int) Load 279(index) + 975: 28(int) ISub 974 973 + Store 279(index) 975 + 977: 28(int) Load 279(index) + Store 976(coord) 977 + 979: 929 Load 958(sTDInstanceT) + 980: 28(int) Load 976(coord) + 981: 928 Image 979 + 982: 7(fvec4) ImageFetch 981 980 + Store 978(samp) 982 + 984: 30(ptr) AccessChain 978(samp) 393 + 985: 6(float) Load 984 + 986: 30(ptr) AccessChain 983(v) 390 + Store 986 985 + 987: 30(ptr) AccessChain 978(samp) 342 + 988: 6(float) Load 987 + 989: 30(ptr) AccessChain 983(v) 393 + Store 989 988 + 990: 30(ptr) AccessChain 978(samp) 402 + 991: 6(float) Load 990 + 992: 30(ptr) AccessChain 983(v) 342 + Store 992 991 + 993: 30(ptr) AccessChain 978(samp) 390 + 994: 6(float) Load 993 + 995: 22(bool) FUnordNotEqual 994 331 + Store 280(instanceActive) 995 + 996: 20(fvec3) Load 983(v) + ReturnValue 996 + FunctionEnd +285(TDInstanceTranslate(i1;): 20(fvec3) Function None 283 + 284(index): 29(ptr) FunctionParameter + 286: Label + 1003(coord): 29(ptr) Variable Function + 1005(samp): 8(ptr) Variable Function + 1010(v): 21(ptr) Variable Function + 999: 950(ptr) AccessChain 376 381 + 1000: 28(int) Load 999 + 1001: 28(int) Load 284(index) + 1002: 28(int) ISub 1001 1000 + Store 284(index) 1002 + 1004: 28(int) Load 284(index) + Store 1003(coord) 1004 + 1006: 929 Load 958(sTDInstanceT) + 1007: 28(int) Load 1003(coord) + 1008: 928 Image 1006 + 1009: 7(fvec4) ImageFetch 1008 1007 + Store 1005(samp) 1009 + 1011: 30(ptr) AccessChain 1005(samp) 393 + 1012: 6(float) Load 1011 + 1013: 30(ptr) AccessChain 1010(v) 390 + Store 1013 1012 + 1014: 30(ptr) AccessChain 1005(samp) 342 + 1015: 6(float) Load 1014 + 1016: 30(ptr) AccessChain 1010(v) 393 + Store 1016 1015 + 1017: 30(ptr) AccessChain 1005(samp) 402 + 1018: 6(float) Load 1017 + 1019: 30(ptr) AccessChain 1010(v) 342 + Store 1019 1018 + 1020: 20(fvec3) Load 1010(v) + ReturnValue 1020 + FunctionEnd +290(TDInstanceRotateMat(i1;): 287 Function None 288 + 289(index): 29(ptr) FunctionParameter + 291: Label + 1027(v): 21(ptr) Variable Function + 1029(m): 1028(ptr) Variable Function + 1023: 950(ptr) AccessChain 376 381 + 1024: 28(int) Load 1023 + 1025: 28(int) Load 289(index) + 1026: 28(int) ISub 1025 1024 + Store 289(index) 1026 + Store 1027(v) 791 + Store 1029(m) 1031 + 1032: 287 Load 1029(m) + ReturnValue 1032 + FunctionEnd +293(TDInstanceScale(i1;): 20(fvec3) Function None 283 + 292(index): 29(ptr) FunctionParameter + 294: Label + 1039(v): 21(ptr) Variable Function + 1035: 950(ptr) AccessChain 376 381 + 1036: 28(int) Load 1035 + 1037: 28(int) Load 292(index) + 1038: 28(int) ISub 1037 1036 + Store 292(index) 1038 + Store 1039(v) 670 + 1040: 20(fvec3) Load 1039(v) + ReturnValue 1040 + FunctionEnd +296(TDInstancePivot(i1;): 20(fvec3) Function None 283 + 295(index): 29(ptr) FunctionParameter + 297: Label + 1047(v): 21(ptr) Variable Function + 1043: 950(ptr) AccessChain 376 381 + 1044: 28(int) Load 1043 + 1045: 28(int) Load 295(index) + 1046: 28(int) ISub 1045 1044 + Store 295(index) 1046 + Store 1047(v) 791 + 1048: 20(fvec3) Load 1047(v) + ReturnValue 1048 + FunctionEnd +299(TDInstanceRotTo(i1;): 20(fvec3) Function None 283 + 298(index): 29(ptr) FunctionParameter + 300: Label + 1055(v): 21(ptr) Variable Function + 1051: 950(ptr) AccessChain 376 381 + 1052: 28(int) Load 1051 + 1053: 28(int) Load 298(index) + 1054: 28(int) ISub 1053 1052 + Store 298(index) 1054 + Store 1055(v) 607 + 1056: 20(fvec3) Load 1055(v) + ReturnValue 1056 + FunctionEnd +302(TDInstanceRotUp(i1;): 20(fvec3) Function None 283 + 301(index): 29(ptr) FunctionParameter + 303: Label + 1063(v): 21(ptr) Variable Function + 1059: 950(ptr) AccessChain 376 381 + 1060: 28(int) Load 1059 + 1061: 28(int) Load 301(index) + 1062: 28(int) ISub 1061 1060 + Store 301(index) 1062 + Store 1063(v) 1030 + 1064: 20(fvec3) Load 1063(v) + ReturnValue 1064 + FunctionEnd +307(TDInstanceMat(i1;): 304 Function None 305 + 306(id): 29(ptr) FunctionParameter + 308: Label +1067(instanceActive): 277(ptr) Variable Function + 1069(t): 21(ptr) Variable Function + 1070(param): 29(ptr) Variable Function + 1072(param): 277(ptr) Variable Function + 1082(m): 1081(ptr) Variable Function + 1088(tt): 21(ptr) Variable Function + Store 1067(instanceActive) 1068 + 1071: 28(int) Load 306(id) + Store 1070(param) 1071 + 1073: 20(fvec3) FunctionCall 281(iTDInstanceTranslate(i1;b1;) 1070(param) 1072(param) + 1074: 22(bool) Load 1072(param) + Store 1067(instanceActive) 1074 + Store 1069(t) 1073 + 1075: 22(bool) Load 1067(instanceActive) + 1076: 22(bool) LogicalNot 1075 + SelectionMerge 1078 None + BranchConditional 1076 1077 1078 + 1077: Label + ReturnValue 1079 + 1078: Label + Store 1082(m) 1087 + 1089: 20(fvec3) Load 1069(t) + Store 1088(tt) 1089 + 1090: 30(ptr) AccessChain 1082(m) 381 390 + 1091: 6(float) Load 1090 + 1092: 30(ptr) AccessChain 1088(tt) 390 + 1093: 6(float) Load 1092 + 1094: 6(float) FMul 1091 1093 + 1095: 30(ptr) AccessChain 1082(m) 377 390 + 1096: 6(float) Load 1095 + 1097: 6(float) FAdd 1096 1094 + 1098: 30(ptr) AccessChain 1082(m) 377 390 + Store 1098 1097 + 1099: 30(ptr) AccessChain 1082(m) 381 393 + 1100: 6(float) Load 1099 + 1101: 30(ptr) AccessChain 1088(tt) 390 + 1102: 6(float) Load 1101 + 1103: 6(float) FMul 1100 1102 + 1104: 30(ptr) AccessChain 1082(m) 377 393 + 1105: 6(float) Load 1104 + 1106: 6(float) FAdd 1105 1103 + 1107: 30(ptr) AccessChain 1082(m) 377 393 + Store 1107 1106 + 1108: 30(ptr) AccessChain 1082(m) 381 342 + 1109: 6(float) Load 1108 + 1110: 30(ptr) AccessChain 1088(tt) 390 + 1111: 6(float) Load 1110 + 1112: 6(float) FMul 1109 1111 + 1113: 30(ptr) AccessChain 1082(m) 377 342 + 1114: 6(float) Load 1113 + 1115: 6(float) FAdd 1114 1112 + 1116: 30(ptr) AccessChain 1082(m) 377 342 + Store 1116 1115 + 1117: 30(ptr) AccessChain 1082(m) 381 402 + 1118: 6(float) Load 1117 + 1119: 30(ptr) AccessChain 1088(tt) 390 + 1120: 6(float) Load 1119 + 1121: 6(float) FMul 1118 1120 + 1122: 30(ptr) AccessChain 1082(m) 377 402 + 1123: 6(float) Load 1122 + 1124: 6(float) FAdd 1123 1121 + 1125: 30(ptr) AccessChain 1082(m) 377 402 + Store 1125 1124 + 1126: 30(ptr) AccessChain 1082(m) 436 390 + 1127: 6(float) Load 1126 + 1128: 30(ptr) AccessChain 1088(tt) 393 + 1129: 6(float) Load 1128 + 1130: 6(float) FMul 1127 1129 + 1131: 30(ptr) AccessChain 1082(m) 377 390 + 1132: 6(float) Load 1131 + 1133: 6(float) FAdd 1132 1130 + 1134: 30(ptr) AccessChain 1082(m) 377 390 + Store 1134 1133 + 1135: 30(ptr) AccessChain 1082(m) 436 393 + 1136: 6(float) Load 1135 + 1137: 30(ptr) AccessChain 1088(tt) 393 + 1138: 6(float) Load 1137 + 1139: 6(float) FMul 1136 1138 + 1140: 30(ptr) AccessChain 1082(m) 377 393 + 1141: 6(float) Load 1140 + 1142: 6(float) FAdd 1141 1139 + 1143: 30(ptr) AccessChain 1082(m) 377 393 + Store 1143 1142 + 1144: 30(ptr) AccessChain 1082(m) 436 342 + 1145: 6(float) Load 1144 + 1146: 30(ptr) AccessChain 1088(tt) 393 + 1147: 6(float) Load 1146 + 1148: 6(float) FMul 1145 1147 + 1149: 30(ptr) AccessChain 1082(m) 377 342 + 1150: 6(float) Load 1149 + 1151: 6(float) FAdd 1150 1148 + 1152: 30(ptr) AccessChain 1082(m) 377 342 + Store 1152 1151 + 1153: 30(ptr) AccessChain 1082(m) 436 402 + 1154: 6(float) Load 1153 + 1155: 30(ptr) AccessChain 1088(tt) 393 + 1156: 6(float) Load 1155 + 1157: 6(float) FMul 1154 1156 + 1158: 30(ptr) AccessChain 1082(m) 377 402 + 1159: 6(float) Load 1158 + 1160: 6(float) FAdd 1159 1157 + 1161: 30(ptr) AccessChain 1082(m) 377 402 + Store 1161 1160 + 1162: 30(ptr) AccessChain 1082(m) 337 390 + 1163: 6(float) Load 1162 + 1164: 30(ptr) AccessChain 1088(tt) 342 + 1165: 6(float) Load 1164 + 1166: 6(float) FMul 1163 1165 + 1167: 30(ptr) AccessChain 1082(m) 377 390 + 1168: 6(float) Load 1167 + 1169: 6(float) FAdd 1168 1166 + 1170: 30(ptr) AccessChain 1082(m) 377 390 + Store 1170 1169 + 1171: 30(ptr) AccessChain 1082(m) 337 393 + 1172: 6(float) Load 1171 + 1173: 30(ptr) AccessChain 1088(tt) 342 + 1174: 6(float) Load 1173 + 1175: 6(float) FMul 1172 1174 + 1176: 30(ptr) AccessChain 1082(m) 377 393 + 1177: 6(float) Load 1176 + 1178: 6(float) FAdd 1177 1175 + 1179: 30(ptr) AccessChain 1082(m) 377 393 + Store 1179 1178 + 1180: 30(ptr) AccessChain 1082(m) 337 342 + 1181: 6(float) Load 1180 + 1182: 30(ptr) AccessChain 1088(tt) 342 + 1183: 6(float) Load 1182 + 1184: 6(float) FMul 1181 1183 + 1185: 30(ptr) AccessChain 1082(m) 377 342 + 1186: 6(float) Load 1185 + 1187: 6(float) FAdd 1186 1184 + 1188: 30(ptr) AccessChain 1082(m) 377 342 + Store 1188 1187 + 1189: 30(ptr) AccessChain 1082(m) 337 402 + 1190: 6(float) Load 1189 + 1191: 30(ptr) AccessChain 1088(tt) 342 + 1192: 6(float) Load 1191 + 1193: 6(float) FMul 1190 1192 + 1194: 30(ptr) AccessChain 1082(m) 377 402 + 1195: 6(float) Load 1194 + 1196: 6(float) FAdd 1195 1193 + 1197: 30(ptr) AccessChain 1082(m) 377 402 + Store 1197 1196 + 1198: 304 Load 1082(m) + ReturnValue 1198 + FunctionEnd +310(TDInstanceMat3(i1;): 287 Function None 288 + 309(id): 29(ptr) FunctionParameter + 311: Label + 1201(m): 1028(ptr) Variable Function + Store 1201(m) 1031 + 1202: 287 Load 1201(m) + ReturnValue 1202 + FunctionEnd +313(TDInstanceMat3ForNorm(i1;): 287 Function None 288 + 312(id): 29(ptr) FunctionParameter + 314: Label + 1205(m): 1028(ptr) Variable Function + 1206(param): 29(ptr) Variable Function + 1207: 28(int) Load 312(id) + Store 1206(param) 1207 + 1208: 287 FunctionCall 310(TDInstanceMat3(i1;) 1206(param) + Store 1205(m) 1208 + 1209: 287 Load 1205(m) + ReturnValue 1209 + FunctionEnd +318(TDInstanceColor(i1;vf4;): 7(fvec4) Function None 315 + 316(index): 29(ptr) FunctionParameter + 317(curColor): 8(ptr) FunctionParameter + 319: Label + 1216(coord): 29(ptr) Variable Function + 1218(samp): 8(ptr) Variable Function + 1224(v): 8(ptr) Variable Function + 1212: 950(ptr) AccessChain 376 381 + 1213: 28(int) Load 1212 + 1214: 28(int) Load 316(index) + 1215: 28(int) ISub 1214 1213 + Store 316(index) 1215 + 1217: 28(int) Load 316(index) + Store 1216(coord) 1217 + 1220: 929 Load 1219(sTDInstanceColor) + 1221: 28(int) Load 1216(coord) + 1222: 928 Image 1220 + 1223: 7(fvec4) ImageFetch 1222 1221 + Store 1218(samp) 1223 + 1225: 30(ptr) AccessChain 1218(samp) 390 + 1226: 6(float) Load 1225 + 1227: 30(ptr) AccessChain 1224(v) 390 + Store 1227 1226 + 1228: 30(ptr) AccessChain 1218(samp) 393 + 1229: 6(float) Load 1228 + 1230: 30(ptr) AccessChain 1224(v) 393 + Store 1230 1229 + 1231: 30(ptr) AccessChain 1218(samp) 342 + 1232: 6(float) Load 1231 + 1233: 30(ptr) AccessChain 1224(v) 342 + Store 1233 1232 + 1234: 30(ptr) AccessChain 1224(v) 402 + Store 1234 489 + 1235: 30(ptr) AccessChain 1224(v) 390 + 1236: 6(float) Load 1235 + 1237: 30(ptr) AccessChain 317(curColor) 390 + Store 1237 1236 + 1238: 30(ptr) AccessChain 1224(v) 393 + 1239: 6(float) Load 1238 + 1240: 30(ptr) AccessChain 317(curColor) 393 + Store 1240 1239 + 1241: 30(ptr) AccessChain 1224(v) 342 + 1242: 6(float) Load 1241 + 1243: 30(ptr) AccessChain 317(curColor) 342 + Store 1243 1242 + 1244: 7(fvec4) Load 317(curColor) + ReturnValue 1244 + FunctionEnd +321(TDOutputSwizzle(vf4;): 7(fvec4) Function None 9 + 320(c): 8(ptr) FunctionParameter + 322: Label + 1247: 7(fvec4) Load 320(c) + ReturnValue 1247 + FunctionEnd +327(TDOutputSwizzle(vu4;): 323(ivec4) Function None 325 + 326(c): 324(ptr) FunctionParameter + 328: Label + 1250: 323(ivec4) Load 326(c) + ReturnValue 1250 + FunctionEnd diff --git a/Test/baseResults/vulkan.frag.out b/Test/baseResults/vulkan.frag.out index 28134aed..78aea821 100644 --- a/Test/baseResults/vulkan.frag.out +++ b/Test/baseResults/vulkan.frag.out @@ -25,37 +25,38 @@ ERROR: 0:43: 'non-opaque uniforms outside a block' : not allowed when using GLSL ERROR: 0:43: 'push_constant' : can only be used with a block ERROR: 0:45: 'push_constant' : cannot declare a default, can only be used on a block ERROR: 0:46: 'binding' : cannot be used with push_constant -ERROR: 0:54: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:55: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:55: 'input_attachment_index' : can only be used with a subpass -ERROR: 0:56: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:56: 'input_attachment_index' : can only be used with a subpass +ERROR: 0:49: 'push_constant' : Push constants blocks can't be an array ERROR: 0:57: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:57: 'subpass' : requires an input_attachment_index layout qualifier ERROR: 0:58: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:63: 'subpassLoadMS' : no matching overloaded function found -ERROR: 0:64: 'subpassLoad' : no matching overloaded function found +ERROR: 0:58: 'input_attachment_index' : can only be used with a subpass +ERROR: 0:59: 'binding' : sampler/texture/image requires layout(binding=X) +ERROR: 0:59: 'input_attachment_index' : can only be used with a subpass +ERROR: 0:60: 'binding' : sampler/texture/image requires layout(binding=X) +ERROR: 0:60: 'subpass' : requires an input_attachment_index layout qualifier +ERROR: 0:61: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:66: 'subpassLoadMS' : no matching overloaded function found -ERROR: 0:69: 'subroutine' : not allowed when generating SPIR-V -ERROR: 0:69: 'subroutine' : feature not yet implemented -ERROR: 0:70: 'subroutine' : not allowed when generating SPIR-V -ERROR: 0:70: 'subroutine' : feature not yet implemented -ERROR: 0:72: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan -ERROR: 0:76: 'texture' : no matching overloaded function found -ERROR: 0:77: 'imageStore' : no matching overloaded function found -WARNING: 0:85: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: +ERROR: 0:67: 'subpassLoad' : no matching overloaded function found +ERROR: 0:69: 'subpassLoadMS' : no matching overloaded function found +ERROR: 0:72: 'subroutine' : not allowed when generating SPIR-V +ERROR: 0:72: 'subroutine' : feature not yet implemented +ERROR: 0:73: 'subroutine' : not allowed when generating SPIR-V +ERROR: 0:73: 'subroutine' : feature not yet implemented +ERROR: 0:75: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan +ERROR: 0:79: 'texture' : no matching overloaded function found +ERROR: 0:80: 'imageStore' : no matching overloaded function found +WARNING: 0:88: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" -ERROR: 0:94: 'call argument' : sampler constructor must appear at point of use -ERROR: 0:95: 'call argument' : sampler constructor must appear at point of use -ERROR: 0:96: ',' : sampler constructor must appear at point of use -ERROR: 0:97: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' temp sampler2D' and a right operand of type ' temp sampler2D' (or there is no acceptable conversion) ERROR: 0:97: 'call argument' : sampler constructor must appear at point of use -ERROR: 0:99: 'gl_NumSamples' : undeclared identifier -ERROR: 0:104: 'noise1' : no matching overloaded function found -ERROR: 0:105: 'noise2' : no matching overloaded function found -ERROR: 0:106: 'noise3' : no matching overloaded function found -ERROR: 0:107: 'noise4' : no matching overloaded function found -ERROR: 54 compilation errors. No code generated. +ERROR: 0:98: 'call argument' : sampler constructor must appear at point of use +ERROR: 0:99: ',' : sampler constructor must appear at point of use +ERROR: 0:100: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' temp sampler2D' and a right operand of type ' temp sampler2D' (or there is no acceptable conversion) +ERROR: 0:100: 'call argument' : sampler constructor must appear at point of use +ERROR: 0:102: 'gl_NumSamples' : undeclared identifier +ERROR: 0:107: 'noise1' : no matching overloaded function found +ERROR: 0:108: 'noise2' : no matching overloaded function found +ERROR: 0:109: 'noise3' : no matching overloaded function found +ERROR: 0:110: 'noise4' : no matching overloaded function found +ERROR: 55 compilation errors. No code generated. ERROR: Linking fragment stage: Only one push_constant block is allowed per stage diff --git a/Test/baseResults/xfbUnsizedArray.error.tese.out b/Test/baseResults/xfbUnsizedArray.error.tese.out new file mode 100644 index 00000000..df3495f1 --- /dev/null +++ b/Test/baseResults/xfbUnsizedArray.error.tese.out @@ -0,0 +1,35 @@ +xfbUnsizedArray.error.tese +ERROR: 0:4: 'xfb_offset' : unsized array in buffer 0 +ERROR: 1 compilation errors. No code generated. + + +Shader version: 430 +Requested GL_ARB_enhanced_layouts +in xfb mode +input primitive = isolines +vertex spacing = none +triangle order = none +using point mode +ERROR: node is still EOpNull! +0:6 Function Definition: main( ( global void) +0:6 Function Parameters: +0:? Linker Objects +0:? 'unsized' (layout( xfb_buffer=0 xfb_offset=0) out unsized 1-element array of 4-component vector of float) + + +Linked tessellation evaluation stage: + + +Shader version: 430 +Requested GL_ARB_enhanced_layouts +in xfb mode +input primitive = isolines +vertex spacing = equal_spacing +triangle order = ccw +using point mode +ERROR: node is still EOpNull! +0:6 Function Definition: main( ( global void) +0:6 Function Parameters: +0:? Linker Objects +0:? 'unsized' (layout( xfb_buffer=0 xfb_offset=0) out 1-element array of 4-component vector of float) + diff --git a/Test/constantUnaryConversion.comp b/Test/constantUnaryConversion.comp index 3c479ae6..f0710cd0 100644 --- a/Test/constantUnaryConversion.comp +++ b/Test/constantUnaryConversion.comp @@ -13,11 +13,18 @@ const uint32_t uint32_t_init = uint32_t(3); const uint64_t uint64_t_init = uint64_t(4);
const float16_t float16_t_init = float16_t(42.0);
const float32_t float32_t_init = float32_t(13.0);
-const float64_t float64_t_init = float64_t(-4.0);
+const float64_t float64_t_init = float64_t(4.0);
+
+const float16_t neg_float16_t_init = float16_t(-42.0);
+const float32_t neg_float32_t_init = float32_t(-13.0);
+const float64_t neg_float64_t_init = float64_t(-4.0);
#define TYPE_TO_TYPE(x, y) \
const x y##_to_##x = x(y##_init)
+#define TYPE_TO_TYPE_PREFIX(prefix, x, y) \
+ const x prefix##_##y##_to_##x = x(prefix##_##y##_init)
+
#define TYPE_TO(x) \
TYPE_TO_TYPE(x, bool); \
TYPE_TO_TYPE(x, int8_t); \
@@ -45,4 +52,18 @@ TYPE_TO(float16_t); TYPE_TO(float32_t);
TYPE_TO(float64_t);
+#define NEG_FLOAT_TO(x) \
+ TYPE_TO_TYPE_PREFIX(neg, x, float16_t); \
+ TYPE_TO_TYPE_PREFIX(neg, x, float32_t); \
+ TYPE_TO_TYPE_PREFIX(neg, x, float64_t)
+
+NEG_FLOAT_TO(bool);
+NEG_FLOAT_TO(int8_t);
+NEG_FLOAT_TO(int16_t);
+NEG_FLOAT_TO(int32_t);
+NEG_FLOAT_TO(int64_t);
+NEG_FLOAT_TO(float16_t);
+NEG_FLOAT_TO(float32_t);
+NEG_FLOAT_TO(float64_t);
+
void main() {}
diff --git a/Test/coord_conventions.frag b/Test/coord_conventions.frag new file mode 100644 index 00000000..4ae6060e --- /dev/null +++ b/Test/coord_conventions.frag @@ -0,0 +1,36 @@ +#version 140 + +#extension GL_ARB_fragment_coord_conventions: require +#extension GL_ARB_explicit_attrib_location : enable + +#ifdef GL_ES +precision mediump float; +#endif + +in vec4 i; + +layout (origin_upper_left,pixel_center_integer) in vec4 gl_FragCoord; +layout (location = 0) out vec4 myColor; + +const float eps=0.001; + +void main() +{ + myColor = vec4(0.2); + if (gl_FragCoord.y >= 10) { + myColor.b = 0.8; + } + if (gl_FragCoord.y == trunc(gl_FragCoord.y)) { + myColor.g = 0.8; + } + if (gl_FragCoord.x == trunc(gl_FragCoord.x)) { + myColor.r = 0.8; + } + + vec4 diff = gl_FragCoord - i; + if (abs(diff.z)>eps) + myColor.b = 0.5; + if (abs(diff.w)>eps) + myColor.a = 0.5; + +}
\ No newline at end of file diff --git a/Test/enhanced.0.frag b/Test/enhanced.0.frag new file mode 100644 index 00000000..7a42c053 --- /dev/null +++ b/Test/enhanced.0.frag @@ -0,0 +1,9 @@ +#version 450 + +in vec3 v; + +void main() +{ + vec4 color = vec4(v); +} + diff --git a/Test/enhanced.1.frag b/Test/enhanced.1.frag new file mode 100644 index 00000000..9aab34d7 --- /dev/null +++ b/Test/enhanced.1.frag @@ -0,0 +1,11 @@ +#version 450 + +in Vertex { + vec4 v; +} vVert; + +void main() +{ + vec4 color = vec4(vVert.v2.rgb, 1.0); +} + diff --git a/Test/enhanced.2.frag b/Test/enhanced.2.frag new file mode 100644 index 00000000..c3c194ce --- /dev/null +++ b/Test/enhanced.2.frag @@ -0,0 +1,7 @@ +#version 450 + +void main() +{ + vec3 color = vec3(0.0,0.0,0.0,1.0); +} + diff --git a/Test/enhanced.3.frag b/Test/enhanced.3.frag new file mode 100644 index 00000000..1de9f4b2 --- /dev/null +++ b/Test/enhanced.3.frag @@ -0,0 +1,16 @@ +#version 450 core + +layout (location = 0) out vec4 FragColor; + +layout (location = 0) in VS_OUT +{ + vec2 foobar; +} fs_in; + +layout (binding = 1) uniform sampler2D t0; + +void main() +{ + FragColor = texture(t0, fs_in.foobar); +} + diff --git a/Test/enhanced.3.vert b/Test/enhanced.3.vert new file mode 100644 index 00000000..043ee246 --- /dev/null +++ b/Test/enhanced.3.vert @@ -0,0 +1,22 @@ +#version 450 core + +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec2 aTexCoords; + +layout (binding = 0) uniform anonblock { + mat4 model; + mat4 view; + mat4 projection; +} ; + +layout (location = 0) out VS_OUT +{ + vec2 TexCoords; +} vs_out; + +void main() +{ + gl_Position = projection * view * model * vec4(aPos, 1.0); + vs_out.TexCoords = aTexCoords; +} + diff --git a/Test/enhanced.4.frag b/Test/enhanced.4.frag new file mode 100644 index 00000000..9c16606d --- /dev/null +++ b/Test/enhanced.4.frag @@ -0,0 +1,16 @@ +#version 450 core + +layout (location = 0) out vec4 FragColor; + +layout (location = 1) in VS_OUT +{ + vec2 TexCoords; +} fs_in; + +layout (binding = 1) uniform sampler2D t0; + +void main() +{ + FragColor = texture(t0, fs_in.TexCoords); +} + diff --git a/Test/enhanced.4.vert b/Test/enhanced.4.vert new file mode 100644 index 00000000..043ee246 --- /dev/null +++ b/Test/enhanced.4.vert @@ -0,0 +1,22 @@ +#version 450 core + +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec2 aTexCoords; + +layout (binding = 0) uniform anonblock { + mat4 model; + mat4 view; + mat4 projection; +} ; + +layout (location = 0) out VS_OUT +{ + vec2 TexCoords; +} vs_out; + +void main() +{ + gl_Position = projection * view * model * vec4(aPos, 1.0); + vs_out.TexCoords = aTexCoords; +} + diff --git a/Test/enhanced.5.frag b/Test/enhanced.5.frag new file mode 100644 index 00000000..b2a51e26 --- /dev/null +++ b/Test/enhanced.5.frag @@ -0,0 +1,16 @@ +#version 450 core + +layout (location = 0) out vec4 FragColor; + +layout (location = 0) in VS_OUT +{ + vec3 TexCoords; +} fs_in; + +layout (binding = 1) uniform sampler2D t0; + +void main() +{ + FragColor = texture(t0, fs_in.TexCoords.xy); +} + diff --git a/Test/enhanced.5.vert b/Test/enhanced.5.vert new file mode 100644 index 00000000..043ee246 --- /dev/null +++ b/Test/enhanced.5.vert @@ -0,0 +1,22 @@ +#version 450 core + +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec2 aTexCoords; + +layout (binding = 0) uniform anonblock { + mat4 model; + mat4 view; + mat4 projection; +} ; + +layout (location = 0) out VS_OUT +{ + vec2 TexCoords; +} vs_out; + +void main() +{ + gl_Position = projection * view * model * vec4(aPos, 1.0); + vs_out.TexCoords = aTexCoords; +} + diff --git a/Test/enhanced.6.frag b/Test/enhanced.6.frag new file mode 100644 index 00000000..e1cf6857 --- /dev/null +++ b/Test/enhanced.6.frag @@ -0,0 +1,16 @@ +#version 450 core + +layout (location = 0) out vec4 FragColor; + +layout (location = 0) in VS_OUT +{ + vec2 TexCoords; +} fs_in[1]; + +layout (binding = 1) uniform sampler2D t0; + +void main() +{ + FragColor = texture(t0, fs_in[0].TexCoords); +} + diff --git a/Test/enhanced.6.vert b/Test/enhanced.6.vert new file mode 100644 index 00000000..876a903e --- /dev/null +++ b/Test/enhanced.6.vert @@ -0,0 +1,22 @@ +#version 450 core + +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec2 aTexCoords; + +layout (binding = 0) uniform anonblock { + mat4 model; + mat4 view; + mat4 projection; +} ; + +layout (location = 0) out VS_OUT +{ + vec2 TexCoords; +} vs_out[2]; + +void main() +{ + gl_Position = projection * view * model * vec4(aPos, 1.0); + vs_out[0].TexCoords = aTexCoords; +} + diff --git a/Test/enhanced.7.frag b/Test/enhanced.7.frag new file mode 100644 index 00000000..f6e5279d --- /dev/null +++ b/Test/enhanced.7.frag @@ -0,0 +1,20 @@ +#version 450 core + +layout (location = 0) out vec4 FragColor; + +layout (location = 0) in Vertex +{ + vec4 color; + vec3 worldSpacePos; + vec3 worldSpaceNorm; + vec2 texCoord1; + flat int cameraIndex; +} fs_in; + +layout (binding = 1) uniform sampler2D t0; + +void main() +{ + FragColor = texture(t0, fs_in.texCoord1); +} + diff --git a/Test/enhanced.7.vert b/Test/enhanced.7.vert new file mode 100644 index 00000000..4e70a617 --- /dev/null +++ b/Test/enhanced.7.vert @@ -0,0 +1,27 @@ +#version 450 core + +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec2 aTexCoords; + +layout (binding = 0) uniform anonblock { + mat4 model; + mat4 view; + mat4 projection; +} ; + +layout (location = 0) out Vertex +{ + vec4 color; + vec3 worldSpacePos; + vec3 worldSpaceNorm; + vec2 texCoord1; + flat int cameraIndex; + float ii; +} vs_out; + +void main() +{ + gl_Position = projection * view * model * vec4(aPos, 1.0); + vs_out.texCoord1 = aTexCoords; +} + diff --git a/Test/floatBitsToInt.vert b/Test/floatBitsToInt.vert new file mode 100644 index 00000000..a6bb18a6 --- /dev/null +++ b/Test/floatBitsToInt.vert @@ -0,0 +1,18 @@ +#version 150 +#extension GL_ARB_gpu_shader5 : require +uniform int expected_value; +uniform float value; +out vec4 result; +void main() +{ + result = vec4(1.0, 1.0, 1.0, 1.0); + int ret_val = floatBitsToInt(value); + if (expected_value != ret_val){ result = vec4(0.0, 0.0, 0.0, 0.0); } + + switch (gl_VertexID) { + case 0: gl_Position = vec4(-1.0, 1.0, 0.0, 1.0); break; + case 1: gl_Position = vec4( 1.0, 1.0, 0.0, 1.0); break; + case 2: gl_Position = vec4(-1.0,-1.0, 0.0, 1.0); break; + case 3: gl_Position = vec4( 1.0,-1.0, 0.0, 1.0); break; + } +}
\ No newline at end of file diff --git a/Test/gl_FragCoord.frag b/Test/gl_FragCoord.frag new file mode 100644 index 00000000..7bb17920 --- /dev/null +++ b/Test/gl_FragCoord.frag @@ -0,0 +1,31 @@ +#version 150 core +#extension GL_ARB_explicit_attrib_location : enable + +#ifdef GL_ES +precision mediump float; +#endif + +layout (origin_upper_left,pixel_center_integer) in vec4 gl_FragCoord; +float myGlobalVar = gl_FragCoord.x; +layout (origin_upper_left,pixel_center_integer) in vec4 gl_FragCoord; + +in vec4 i; +layout (location = 0) out vec4 myColor; +const float eps=0.001; + +void main() { + myColor = vec4(0.2); + if (gl_FragCoord.y >= 10) { + myColor.b = 0.8; + } + if (gl_FragCoord.y == trunc(gl_FragCoord.y)) { + myColor.g = 0.8; + } + if (gl_FragCoord.x == trunc(gl_FragCoord.x)) { + myColor.r = 0.8; + } + + vec4 diff = gl_FragCoord - i; + if (abs(diff.z)>eps) myColor.b = 0.5; + if (abs(diff.w)>eps) myColor.a = 0.5; +} diff --git a/Test/glsl.versionOverride.comp b/Test/glsl.versionOverride.comp new file mode 100644 index 00000000..f72663e3 --- /dev/null +++ b/Test/glsl.versionOverride.comp @@ -0,0 +1,11 @@ +/*
+
+glslangValidator.exe --glsl-version 460 -V -S comp -o glsl.versionOverride.comp.out glsl.versionOverride.comp
+
+*/
+
+#version 110
+
+void main()
+{
+}
diff --git a/Test/glsl.versionOverride.frag b/Test/glsl.versionOverride.frag new file mode 100644 index 00000000..12679940 --- /dev/null +++ b/Test/glsl.versionOverride.frag @@ -0,0 +1,11 @@ +/*
+
+glslangValidator.exe --glsl-version 420 -V -S frag -o glsl.versionOverride.frag.out glsl.versionOverride.frag
+
+*/
+
+#version 110
+
+void main()
+{
+}
diff --git a/Test/glsl.versionOverride.geom b/Test/glsl.versionOverride.geom new file mode 100644 index 00000000..bcfc2f22 --- /dev/null +++ b/Test/glsl.versionOverride.geom @@ -0,0 +1,16 @@ +/*
+
+glslangValidator.exe --glsl-version 430 -V -S geom -o glsl.versionOverride.geom.out glsl.versionOverride.geom
+
+*/
+
+#version 110
+
+layout (points) in;
+layout (line_strip, max_vertices = 2) out;
+
+void main() {
+ EmitVertex();
+ EmitVertex();
+ EndPrimitive();
+}
diff --git a/Test/glsl.versionOverride.tesc b/Test/glsl.versionOverride.tesc new file mode 100644 index 00000000..3b7b1e3c --- /dev/null +++ b/Test/glsl.versionOverride.tesc @@ -0,0 +1,13 @@ +/*
+
+glslangValidator.exe --glsl-version 440 -V -S tesc -o glsl.versionOverride.tesc.out glsl.versionOverride.tesc
+
+*/
+
+#version 110
+
+layout(vertices = 3) out;
+
+void main()
+{
+}
diff --git a/Test/glsl.versionOverride.tese b/Test/glsl.versionOverride.tese new file mode 100644 index 00000000..e92d5a98 --- /dev/null +++ b/Test/glsl.versionOverride.tese @@ -0,0 +1,13 @@ +/*
+
+glslangValidator.exe --glsl-version 450 -V -S tese -o glsl.versionOverride.tese.out glsl.versionOverride.tese
+
+*/
+
+#version 110
+
+layout(triangles) in;
+
+void main()
+{
+}
diff --git a/Test/glsl.versionOverride.vert b/Test/glsl.versionOverride.vert new file mode 100644 index 00000000..2d5effcd --- /dev/null +++ b/Test/glsl.versionOverride.vert @@ -0,0 +1,11 @@ +/*
+
+glslangValidator.exe --glsl-version 410 -V -S vert -o glsl.versionOverride.vert.out glsl.versionOverride.vert
+
+*/
+
+#version 110
+
+void main()
+{
+}
diff --git a/Test/hlsl.namespace.frag b/Test/hlsl.namespace.frag index 76c3062d..d2b04458 100644 --- a/Test/hlsl.namespace.frag +++ b/Test/hlsl.namespace.frag @@ -12,7 +12,7 @@ namespace N2 { float4 getVec() { return v2; }
class C1 {
- float4 getVec() { return v2; }
+ static float4 getVec() { return v2; }
};
}
}
diff --git a/Test/hlsl.spv.1.6.discard.frag b/Test/hlsl.spv.1.6.discard.frag new file mode 100644 index 00000000..7d9271c9 --- /dev/null +++ b/Test/hlsl.spv.1.6.discard.frag @@ -0,0 +1,14 @@ +void foo(float f) +{ + if (f < 1.0) + discard; +} + +void PixelShaderFunction(float4 input) : COLOR0 +{ + foo(input.z); + if (input.x) + discard; + float f = input.x; + discard; +} diff --git a/Test/hlsl.structbuffer.rwbyte2.comp b/Test/hlsl.structbuffer.rwbyte2.comp new file mode 100644 index 00000000..42d61c00 --- /dev/null +++ b/Test/hlsl.structbuffer.rwbyte2.comp @@ -0,0 +1,10 @@ +RWStructuredBuffer<uint> g_sbuf; +RWByteAddressBuffer g_bbuf; + + +void main() +{ + uint f = g_bbuf.Load(16); + g_sbuf[0] = f; +} + diff --git a/Test/hlsl.w-recip.frag b/Test/hlsl.w-recip.frag new file mode 100644 index 00000000..4812d269 --- /dev/null +++ b/Test/hlsl.w-recip.frag @@ -0,0 +1,12 @@ +float4 AmbientColor = float4(1, 0.5, 0, 1); +float4 AmbientColor2 = float4(0.5, 1, 0, 0); + +float4 main(float4 vpos : SV_POSITION) : SV_TARGET +{ + float4 vpos_t = float4(vpos.xyz, 1 / vpos.w); + if (vpos_t.x < 400) + return AmbientColor; + else + return AmbientColor2; +} + diff --git a/Test/hlsl.w-recip2.frag b/Test/hlsl.w-recip2.frag new file mode 100644 index 00000000..8ef49c9e --- /dev/null +++ b/Test/hlsl.w-recip2.frag @@ -0,0 +1,19 @@ +struct VSOutput +{ + float4 PositionPS : SV_Position; + float3 PosInLightViewSpace : LIGHT_SPACE_POS; + float3 NormalWS : NORMALWS; + float2 TexCoord : TEXCOORD; +}; + +float4 AmbientColor = float4(1, 0.5, 0, 1); +float4 AmbientColor2 = float4(0.5, 1, 0, 0); + +float4 main(VSOutput VSOut) : SV_TARGET +{ + if (VSOut.PositionPS.x < 400) + return AmbientColor; + else + return AmbientColor2; +} + diff --git a/Test/iomap.blockOutVariableIn.2.vert b/Test/iomap.blockOutVariableIn.2.vert new file mode 100644 index 00000000..67f45c97 --- /dev/null +++ b/Test/iomap.blockOutVariableIn.2.vert @@ -0,0 +1,14 @@ +#version 440
+
+layout(location = 0) out Block
+{
+ vec4 a1;
+ vec2 a2;
+};
+
+void main()
+{
+ a1 = vec4(1.0);
+ a2 = vec2(0.5);
+ gl_Position = vec4(1.0);
+}
diff --git a/Test/iomap.blockOutVariableIn.frag b/Test/iomap.blockOutVariableIn.frag new file mode 100644 index 00000000..f2cb26e7 --- /dev/null +++ b/Test/iomap.blockOutVariableIn.frag @@ -0,0 +1,11 @@ +#version 440
+
+layout(location = 0) in vec4 a1;
+layout(location = 1) in vec2 a2;
+
+layout(location = 0) out vec4 color;
+
+void main()
+{
+ color = vec4(a1.xy, a2);
+}
diff --git a/Test/iomap.blockOutVariableIn.geom b/Test/iomap.blockOutVariableIn.geom new file mode 100644 index 00000000..feefdd13 --- /dev/null +++ b/Test/iomap.blockOutVariableIn.geom @@ -0,0 +1,28 @@ +#version 440
+
+layout(triangles) in;
+layout(triangle_strip, max_vertices=3) out;
+
+layout(location = 0) in vec4 in_a1[3];
+layout(location = 1) in vec2 in_a2[3];
+
+layout(location = 0) out vec4 a1;
+layout(location = 1) out vec2 a2;
+
+void main()
+{
+ a1 = in_a1[0];
+ a2 = in_a2[0];
+ gl_Position = vec4(1.0);
+ EmitVertex();
+
+ a1 = in_a1[1];
+ a2 = in_a2[1];
+ gl_Position = vec4(1.0);
+ EmitVertex();
+
+ a1 = in_a1[2];
+ a2 = in_a2[2];
+ gl_Position = vec4(1.0);
+ EmitVertex();
+}
diff --git a/Test/iomap.blockOutVariableIn.vert b/Test/iomap.blockOutVariableIn.vert new file mode 100644 index 00000000..67f45c97 --- /dev/null +++ b/Test/iomap.blockOutVariableIn.vert @@ -0,0 +1,14 @@ +#version 440
+
+layout(location = 0) out Block
+{
+ vec4 a1;
+ vec2 a2;
+};
+
+void main()
+{
+ a1 = vec4(1.0);
+ a2 = vec2(0.5);
+ gl_Position = vec4(1.0);
+}
diff --git a/Test/iomap.variableOutBlockIn.2.vert b/Test/iomap.variableOutBlockIn.2.vert new file mode 100644 index 00000000..f9b80b46 --- /dev/null +++ b/Test/iomap.variableOutBlockIn.2.vert @@ -0,0 +1,11 @@ +#version 440
+
+layout(location = 0) out vec4 a1;
+layout(location = 1) out vec2 a2;
+
+void main()
+{
+ a1 = vec4(1.0);
+ a2 = vec2(0.5);
+ gl_Position = vec4(1.0);
+}
diff --git a/Test/iomap.variableOutBlockIn.frag b/Test/iomap.variableOutBlockIn.frag new file mode 100644 index 00000000..967d7698 --- /dev/null +++ b/Test/iomap.variableOutBlockIn.frag @@ -0,0 +1,13 @@ +#version 440
+
+layout(location = 0) in Inputs {
+ vec4 a1;
+ vec2 a2;
+};
+
+layout(location = 0) out vec4 color;
+
+void main()
+{
+ color = vec4(a1.xy, a2);
+}
diff --git a/Test/iomap.variableOutBlockIn.geom b/Test/iomap.variableOutBlockIn.geom new file mode 100644 index 00000000..637ddabb --- /dev/null +++ b/Test/iomap.variableOutBlockIn.geom @@ -0,0 +1,19 @@ +#version 440
+
+layout(triangles) in;
+layout(triangle_strip, max_vertices=3) out;
+
+layout(location = 0) in Inputs {
+ vec4 a1;
+ vec2 a2;
+} gin[3];
+
+layout(location = 0) out vec4 a1;
+layout(location = 1) out vec2 a2;
+
+void main()
+{
+ a1 = vec4(1.0);
+ a2 = vec2(0.5);
+ gl_Position = vec4(1.0);
+}
diff --git a/Test/iomap.variableOutBlockIn.vert b/Test/iomap.variableOutBlockIn.vert new file mode 100644 index 00000000..f9b80b46 --- /dev/null +++ b/Test/iomap.variableOutBlockIn.vert @@ -0,0 +1,11 @@ +#version 440
+
+layout(location = 0) out vec4 a1;
+layout(location = 1) out vec2 a2;
+
+void main()
+{
+ a1 = vec4(1.0);
+ a2 = vec2(0.5);
+ gl_Position = vec4(1.0);
+}
diff --git a/Test/noMatchingFunction.frag b/Test/noMatchingFunction.frag new file mode 100644 index 00000000..d0956452 --- /dev/null +++ b/Test/noMatchingFunction.frag @@ -0,0 +1,19 @@ +#version 330 + +struct S +{ + float a; +}; + +float func(S s) +{ + return s.a; +} + +layout(location = 0) out vec4 o_color; + +void main() +{ + float c = func(1.0f); // ERROR: no matching function + o_color = vec4(c); +} diff --git a/Test/runtests b/Test/runtests index a7bdda79..2ee0db0d 100755 --- a/Test/runtests +++ b/Test/runtests @@ -255,6 +255,15 @@ run -H -e main -V -D -Od -H -i --invert-y hlsl.y-negate-3.vert > $TARGETDIR/hlsl diff -b $BASEDIR/hlsl.y-negate-3.vert.out $TARGETDIR/hlsl.y-negate-3.vert.out || HASERROR=1 # +# Testing position W reciprocal +# +echo "Testing position W reciprocal" +run -H -e main -V -D -Od -H -i --hlsl-dx-position-w hlsl.w-recip.frag > $TARGETDIR/hlsl.w-recip.frag.out +diff -b $BASEDIR/hlsl.w-recip.frag.out $TARGETDIR/hlsl.w-recip.frag.out || HASERROR=1 +run -H -e main -V -D -Od -H -i --hlsl-dx-position-w hlsl.w-recip2.frag > $TARGETDIR/hlsl.w-recip2.frag.out +diff -b $BASEDIR/hlsl.w-recip2.frag.out $TARGETDIR/hlsl.w-recip2.frag.out || HASERROR=1 + +# # Testing hlsl_functionality1 # echo "Testing hlsl_functionality1" @@ -289,6 +298,46 @@ diff -b $BASEDIR/hlsl.autosampledtextures.frag.out $TARGETDIR/hlsl.autosampledte run --auto-sampled-textures -H -Od -S frag glsl.autosampledtextures.frag > $TARGETDIR/glsl.autosampledtextures.frag.out diff -b $BASEDIR/glsl.autosampledtextures.frag.out $TARGETDIR/glsl.autosampledtextures.frag.out || HASERROR=1 +# Test --glsl-version +# +echo "Testing --glsl-version" +run --glsl-version 410 -V -S vert glsl.versionOverride.vert > $TARGETDIR/glsl.versionOverride.vert.out +diff -b $BASEDIR/glsl.versionOverride.vert.out $TARGETDIR/glsl.versionOverride.vert.out || HASERROR=1 +run --glsl-version 420 -V -S frag glsl.versionOverride.frag > $TARGETDIR/glsl.versionOverride.frag.out +diff -b $BASEDIR/glsl.versionOverride.frag.out $TARGETDIR/glsl.versionOverride.frag.out || HASERROR=1 +run --glsl-version 430 -V -S geom glsl.versionOverride.geom > $TARGETDIR/glsl.versionOverride.geom.out +diff -b $BASEDIR/glsl.versionOverride.geom.out $TARGETDIR/glsl.versionOverride.geom.out || HASERROR=1 +run --glsl-version 440 -V -S tesc glsl.versionOverride.tesc > $TARGETDIR/glsl.versionOverride.tesc.out +diff -b $BASEDIR/glsl.versionOverride.tesc.out $TARGETDIR/glsl.versionOverride.tesc.out || HASERROR=1 +run --glsl-version 450 -V -S tese glsl.versionOverride.tese > $TARGETDIR/glsl.versionOverride.tese.out +diff -b $BASEDIR/glsl.versionOverride.tese.out $TARGETDIR/glsl.versionOverride.tese.out || HASERROR=1 +run --glsl-version 460 -V -S comp glsl.versionOverride.comp > $TARGETDIR/glsl.versionOverride.comp.out +diff -b $BASEDIR/glsl.versionOverride.comp.out $TARGETDIR/glsl.versionOverride.comp.out || HASERROR=1 + +# +# Test --enhanced-msgs +# + +echo "Testing enhanced-msgs" +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.0.frag > $TARGETDIR/enhanced.0.frag.out +diff -b $BASEDIR/enhanced.0.frag.out $TARGETDIR/enhanced.0.frag.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.1.frag > $TARGETDIR/enhanced.1.frag.out +diff -b $BASEDIR/enhanced.1.frag.out $TARGETDIR/enhanced.1.frag.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.2.frag > $TARGETDIR/enhanced.2.frag.out +diff -b $BASEDIR/enhanced.2.frag.out $TARGETDIR/enhanced.2.frag.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.3.vert enhanced.3.frag > $TARGETDIR/enhanced.3.link.out +diff -b $BASEDIR/enhanced.3.link.out $TARGETDIR/enhanced.3.link.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.4.vert enhanced.4.frag > $TARGETDIR/enhanced.4.link.out +diff -b $BASEDIR/enhanced.4.link.out $TARGETDIR/enhanced.4.link.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.5.vert enhanced.5.frag > $TARGETDIR/enhanced.5.link.out +diff -b $BASEDIR/enhanced.5.link.out $TARGETDIR/enhanced.5.link.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.6.vert enhanced.6.frag > $TARGETDIR/enhanced.6.link.out +diff -b $BASEDIR/enhanced.6.link.out $TARGETDIR/enhanced.6.link.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.7.vert enhanced.7.frag > $TARGETDIR/enhanced.7.link.out +diff -b $BASEDIR/enhanced.7.link.out $TARGETDIR/enhanced.7.link.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml spv.textureError.frag > $TARGETDIR/spv.textureError.frag.out +diff -b $BASEDIR/spv.textureError.frag.out $TARGETDIR/spv.textureError.frag.out || HASERROR=1 + # # Final checking # diff --git a/Test/spv.1.6.conditionalDiscard.frag b/Test/spv.1.6.conditionalDiscard.frag new file mode 100644 index 00000000..ea803374 --- /dev/null +++ b/Test/spv.1.6.conditionalDiscard.frag @@ -0,0 +1,14 @@ +#version 400
+
+uniform sampler2D tex;
+in vec2 coord;
+
+void main (void)
+{
+ vec4 v = texture(tex, coord);
+
+ if (v == vec4(0.1,0.2,0.3,0.4))
+ discard;
+
+ gl_FragColor = v;
+}
diff --git a/Test/spv.1.6.helperInvocation.frag b/Test/spv.1.6.helperInvocation.frag new file mode 100644 index 00000000..4d306db2 --- /dev/null +++ b/Test/spv.1.6.helperInvocation.frag @@ -0,0 +1,10 @@ +#version 310 es
+precision highp float; +
+out vec4 outp;
+void main()
+{
+ if (gl_HelperInvocation)
+ ++outp;
+}
+ diff --git a/Test/spv.1.6.specConstant.comp b/Test/spv.1.6.specConstant.comp new file mode 100644 index 00000000..6b47515b --- /dev/null +++ b/Test/spv.1.6.specConstant.comp @@ -0,0 +1,18 @@ +#version 450 + +layout(local_size_x_id = 18, local_size_z_id = 19) in; +layout(local_size_x = 32, local_size_y = 32) in; + +buffer bn { + uint a; +} bi; + +void foo(uvec3 wgs) +{ + bi.a = wgs.x * gl_WorkGroupSize.y * wgs.z; +} + +void main() +{ + foo(gl_WorkGroupSize); +} diff --git a/Test/spv.float16NoRelaxed.vert b/Test/spv.float16NoRelaxed.vert new file mode 100644 index 00000000..d594a1d4 --- /dev/null +++ b/Test/spv.float16NoRelaxed.vert @@ -0,0 +1,16 @@ +#version 450 +#extension GL_KHR_shader_subgroup_vote: enable +#extension GL_EXT_shader_subgroup_extended_types_float16 : enable +layout(set = 0, binding = 0, std430) buffer Buffer1 +{ + uint result[]; +}; + +void main (void) +{ + uint tempRes; + float16_t valueNoEqual = float16_t(gl_SubgroupInvocationID); + tempRes = subgroupAllEqual(valueNoEqual) ? 0x0 : 0x10; + result[gl_VertexIndex] = tempRes; +} + diff --git a/Test/spv.intrinsicsSpecConst.vert b/Test/spv.intrinsicsSpecConst.vert deleted file mode 100644 index 19cc5ef4..00000000 --- a/Test/spv.intrinsicsSpecConst.vert +++ /dev/null @@ -1,14 +0,0 @@ -#version 450 core
-
-#extension GL_EXT_spirv_intrinsics: enable
-
-layout(constant_id = 5) const uint targetWidth = 32;
-spirv_execution_mode_id(4460/*=DenormFlushToZero*/, targetWidth);
-
-layout(constant_id = 6) const uint builtIn = 1;
-spirv_decorate_id(11/*=BuiltIn*/, builtIn) out float pointSize;
-
-void main()
-{
- pointSize = 4.0;
-}
diff --git a/Test/spv.intrinsicsSpirvInstruction.vert b/Test/spv.intrinsicsSpirvInstruction.vert index a4efb7da..2cc1842b 100644 --- a/Test/spv.intrinsicsSpirvInstruction.vert +++ b/Test/spv.intrinsicsSpirvInstruction.vert @@ -4,10 +4,10 @@ #extension GL_ARB_gpu_shader_int64: enable
spirv_instruction (extensions = ["SPV_KHR_shader_clock"], capabilities = [5055], id = 5056)
-uvec2 clockRealtime2x32EXT(void);
+uvec2 clockRealtime2x32EXT(int);
spirv_instruction (extensions = ["SPV_KHR_shader_clock"], capabilities = [5055], id = 5056)
-int64_t clockRealtimeEXT(void);
+uint64_t clockRealtimeEXT(int);
spirv_instruction (extensions = ["SPV_AMD_shader_trinary_minmax"], set = "SPV_AMD_shader_trinary_minmax", id = 1)
vec2 min3(vec2 x, vec2 y, vec2 z);
@@ -15,12 +15,12 @@ vec2 min3(vec2 x, vec2 y, vec2 z); layout(location = 0) in vec3 vec3In;
layout(location = 0) out uvec2 uvec2Out;
-layout(location = 1) out int64_t i64Out;
+layout(location = 1) out uint64_t u64Out;
layout(location = 2) out vec2 vec2Out;
void main()
{
- uvec2Out = clockRealtime2x32EXT();
- i64Out = clockRealtimeEXT();
+ uvec2Out = clockRealtime2x32EXT(1);
+ u64Out = clockRealtimeEXT(1);
vec2Out = min3(vec3In.xy, vec3In.yz, vec3In.zx);
-}
+}
\ No newline at end of file diff --git a/Test/spv.intrinsicsSpirvTypeLocalVar.vert b/Test/spv.intrinsicsSpirvTypeLocalVar.vert new file mode 100644 index 00000000..203d9007 --- /dev/null +++ b/Test/spv.intrinsicsSpirvTypeLocalVar.vert @@ -0,0 +1,14 @@ +#version 460 core
+
+#extension GL_EXT_spirv_intrinsics: enable
+
+layout(constant_id = 9) const int size = 9;
+
+#define EmptyStruct spirv_type(id = 30)
+void func(EmptyStruct emptyStruct) {}
+
+void main()
+{
+ EmptyStruct dummy[size];
+ func(dummy[1]);
+}
diff --git a/Test/spv.textureError.frag b/Test/spv.textureError.frag new file mode 100644 index 00000000..a40ea363 --- /dev/null +++ b/Test/spv.textureError.frag @@ -0,0 +1,10 @@ +#version 140 + +uniform sampler2D s2D; +centroid vec2 centTexCoord; + +void main() +{ + gl_FragColor = texture2D(s2D, centTexCoord); +} + diff --git a/Test/textureQueryLOD.frag b/Test/textureQueryLOD.frag new file mode 100644 index 00000000..0d0ae3c7 --- /dev/null +++ b/Test/textureQueryLOD.frag @@ -0,0 +1,39 @@ +#version 150 + +#ifdef GL_ARB_texture_query_lod +#extension GL_ARB_texture_query_lod : enable +#endif +#ifdef GL_ARB_gpu_shader5 +#extension GL_ARB_gpu_shader5 : enable +#endif + +#ifdef GL_ES +precision highp float; +#endif + +in vec2 vUV; // vert->frag +out vec4 color; // frag->fb +#define UV vUV + +#define bias 1.5 +#define TEX 128.0 +#define offset ivec2(1,1) +uniform highp sampler2DShadow sampler; +uniform int funct; + +void main (void) +{ + switch (funct) + { + case 0: + ivec2 iv2 = textureSize(sampler, 0); +#ifdef GL_ARB_texture_query_lod + vec2 fv2 = textureQueryLOD(sampler, vec2(0.0, 0.0)); +#endif + color = vec4(iv2,fv2); + break; + default: + color = vec4(1.0, 1.0, 1.0, 1.0); + break; + } +} diff --git a/Test/vk.relaxed.stagelink.0.0.frag b/Test/vk.relaxed.stagelink.0.0.frag new file mode 100755 index 00000000..1f9f1025 --- /dev/null +++ b/Test/vk.relaxed.stagelink.0.0.frag @@ -0,0 +1,139 @@ +#version 460
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+
+void TDAlphaTest(float alpha);
+vec4 TDDither(vec4 color);
+vec4 TDOutputSwizzle(vec4 v);
+uvec4 TDOutputSwizzle(uvec4 v);
+void TDCheckOrderIndTrans();
+void TDCheckDiscard();
+uniform vec3 uConstant;
+uniform float uShadowStrength;
+uniform vec3 uShadowColor;
+uniform vec4 uDiffuseColor;
+uniform vec4 uAmbientColor;
+
+uniform sampler2DArray sColorMap;
+
+in Vertex
+{
+ vec4 color;
+ vec3 worldSpacePos;
+ vec3 texCoord0;
+ flat int cameraIndex;
+ flat int instance;
+} iVert;
+
+// Output variable for the color
+layout(location = 0) out vec4 oFragColor[TD_NUM_COLOR_BUFFERS];
+void main()
+{
+ // This allows things such as order independent transparency
+ // and Dual-Paraboloid rendering to work properly
+ TDCheckDiscard();
+
+ vec4 outcol = vec4(0.0, 0.0, 0.0, 0.0);
+
+ vec3 texCoord0 = iVert.texCoord0.stp;
+ float actualTexZ = mod(int(texCoord0.z),2048);
+ float instanceLoop = floor(int(texCoord0.z)/2048);
+ texCoord0.z = actualTexZ;
+ vec4 colorMapColor = texture(sColorMap, texCoord0.stp);
+
+ float red = colorMapColor[int(instanceLoop)];
+ colorMapColor = vec4(red);
+ // Constant Light Contribution
+ outcol.rgb += uConstant * iVert.color.rgb;
+
+ outcol *= colorMapColor;
+
+ // Alpha Calculation
+ float alpha = iVert.color.a * colorMapColor.a ;
+
+ // Dithering, does nothing if dithering is disabled
+ outcol = TDDither(outcol);
+
+ outcol.rgb *= alpha;
+
+ // Modern GL removed the implicit alpha test, so we need to apply
+ // it manually here. This function does nothing if alpha test is disabled.
+ TDAlphaTest(alpha);
+
+ outcol.a = alpha;
+ oFragColor[0] = TDOutputSwizzle(outcol);
+
+
+ // TD_NUM_COLOR_BUFFERS will be set to the number of color buffers
+ // active in the render. By default we want to output zero to every
+ // buffer except the first one.
+ for (int i = 1; i < TD_NUM_COLOR_BUFFERS; i++)
+ {
+ oFragColor[i] = vec4(0.0);
+ }
+}
diff --git a/Test/vk.relaxed.stagelink.0.0.vert b/Test/vk.relaxed.stagelink.0.0.vert new file mode 100755 index 00000000..7f31c377 --- /dev/null +++ b/Test/vk.relaxed.stagelink.0.0.vert @@ -0,0 +1,126 @@ +#version 460
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+layout(location = 0) in vec3 P;
+layout(location = 1) in vec3 N;
+layout(location = 2) in vec4 Cd;
+layout(location = 3) in vec3 uv[8];
+vec4 TDWorldToProj(vec4 v);
+vec4 TDWorldToProj(vec3 v);
+vec4 TDWorldToProj(vec4 v, vec3 uv);
+vec4 TDWorldToProj(vec3 v, vec3 uv);
+int TDInstanceID();
+int TDCameraIndex();
+vec3 TDUVUnwrapCoord();
+/*********TOUCHDEFORMPREFIX**********/
+#define TD_NUM_BONES 0
+
+vec3 TDInstanceTexCoord(int instanceID, vec3 t);
+vec4 TDInstanceColor(int instanceID, vec4 curColor);
+
+vec4 TDDeform(vec4 pos);
+vec4 TDDeform(vec3 pos);
+vec3 TDInstanceTexCoord(vec3 t);
+vec4 TDInstanceColor(vec4 curColor);
+#line 1
+
+out Vertex
+{
+ vec4 color;
+ vec3 worldSpacePos;
+ vec3 texCoord0;
+ flat int cameraIndex;
+ flat int instance;
+} oVert;
+
+void main()
+{
+
+ { // Avoid duplicate variable defs
+ vec3 texcoord = TDInstanceTexCoord(uv[0]);
+ oVert.texCoord0.stp = texcoord.stp;
+ }
+ // First deform the vertex and normal
+ // TDDeform always returns values in world space
+ oVert.instance = TDInstanceID();
+ vec4 worldSpacePos = TDDeform(P);
+ vec3 uvUnwrapCoord = TDInstanceTexCoord(TDUVUnwrapCoord());
+ gl_Position = TDWorldToProj(worldSpacePos, uvUnwrapCoord);
+
+
+ // This is here to ensure we only execute lighting etc. code
+ // when we need it. If picking is active we don't need lighting, so
+ // this entire block of code will be ommited from the compile.
+ // The TD_PICKING_ACTIVE define will be set automatically when
+ // picking is active.
+
+ int cameraIndex = TDCameraIndex();
+ oVert.cameraIndex = cameraIndex;
+ oVert.worldSpacePos.xyz = worldSpacePos.xyz;
+ oVert.color = TDInstanceColor(Cd);
+}
diff --git a/Test/vk.relaxed.stagelink.0.1.frag b/Test/vk.relaxed.stagelink.0.1.frag new file mode 100755 index 00000000..2a82b65d --- /dev/null +++ b/Test/vk.relaxed.stagelink.0.1.frag @@ -0,0 +1,504 @@ +#version 460
+uniform sampler2D sTDNoiseMap;
+uniform sampler1D sTDSineLookup;
+uniform sampler2D sTDWhite2D;
+uniform sampler3D sTDWhite3D;
+uniform sampler2DArray sTDWhite2DArray;
+uniform samplerCube sTDWhiteCube;
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDLight
+{
+ vec4 position;
+ vec3 direction;
+ vec3 diffuse;
+ vec4 nearFar;
+ vec4 lightSize;
+ vec4 misc;
+ vec4 coneLookupScaleBias;
+ vec4 attenScaleBiasRoll;
+ mat4 shadowMapMatrix;
+ mat4 shadowMapCamMatrix;
+ vec4 shadowMapRes;
+ mat4 projMapMatrix;
+};
+struct TDEnvLight
+{
+ vec3 color;
+ mat3 rotate;
+};
+layout(std140) uniform TDLightBlock
+{
+ TDLight uTDLights[TD_LIGHTS_ARRAY_SIZE];
+};
+layout(std140) uniform TDEnvLightBlock
+{
+ TDEnvLight uTDEnvLights[TD_ENV_LIGHTS_ARRAY_SIZE];
+};
+layout(std430) readonly restrict buffer TDEnvLightBuffer
+{
+ vec3 shCoeffs[9];
+} uTDEnvLightBuffers[TD_ENV_LIGHTS_ARRAY_SIZE];
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+
+layout(binding = 15) uniform samplerBuffer sTDInstanceT;
+layout(binding = 16) uniform samplerBuffer sTDInstanceTexCoord;
+layout(binding = 17) uniform samplerBuffer sTDInstanceColor;
+vec4 TDDither(vec4 color);
+vec3 TDHSVToRGB(vec3 c);
+vec3 TDRGBToHSV(vec3 c);
+#define PI 3.14159265
+
+vec4 TDColor(vec4 color) { return color; }
+void TDCheckOrderIndTrans() {
+}
+void TDCheckDiscard() {
+ TDCheckOrderIndTrans();
+}
+vec4 TDDither(vec4 color)
+{
+ float d = texture(sTDNoiseMap,
+ gl_FragCoord.xy / 256.0).r;
+ d -= 0.5;
+ d /= 256.0;
+ return vec4(color.rgb + d, color.a);
+}
+bool TDFrontFacing(vec3 pos, vec3 normal)
+{
+ return gl_FrontFacing;
+}
+float TDAttenuateLight(int index, float lightDist)
+{
+ return 1.0;
+}
+void TDAlphaTest(float alpha) {
+}
+float TDHardShadow(int lightIndex, vec3 worldSpacePos)
+{ return 0.0; }
+float TDSoftShadow(int lightIndex, vec3 worldSpacePos, int samples, int steps)
+{ return 0.0; }
+float TDSoftShadow(int lightIndex, vec3 worldSpacePos)
+{ return 0.0; }
+float TDShadow(int lightIndex, vec3 worldSpacePos)
+{ return 0.0; }
+vec3 TDEquirectangularToCubeMap(vec2 mapCoord);
+vec2 TDCubeMapToEquirectangular(vec3 envMapCoord);
+vec2 TDCubeMapToEquirectangular(vec3 envMapCoord, out float mipMapBias);
+vec2 TDTexGenSphere(vec3 envMapCoord);
+float iTDRadicalInverse_VdC(uint bits)
+{
+ bits = (bits << 16u) | (bits >> 16u);
+ bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u);
+ bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u);
+ bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u);
+ bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u);
+ return float(bits) * 2.3283064365386963e-10; // / 0x100000000
+}
+vec2 iTDHammersley(uint i, uint N)
+{
+ return vec2(float(i) / float(N), iTDRadicalInverse_VdC(i));
+}
+vec3 iTDImportanceSampleGGX(vec2 Xi, float roughness2, vec3 N)
+{
+ float a = roughness2;
+ float phi = 2 * 3.14159265 * Xi.x;
+ float cosTheta = sqrt( (1 - Xi.y) / (1 + (a*a - 1) * Xi.y) );
+ float sinTheta = sqrt( 1 - cosTheta * cosTheta );
+
+ vec3 H;
+ H.x = sinTheta * cos(phi);
+ H.y = sinTheta * sin(phi);
+ H.z = cosTheta;
+
+ vec3 upVector = abs(N.z) < 0.999 ? vec3(0, 0, 1) : vec3(1, 0, 0);
+ vec3 tangentX = normalize(cross(upVector, N));
+ vec3 tangentY = cross(N, tangentX);
+
+ // Tangent to world space
+ vec3 worldResult = tangentX * H.x + tangentY * H.y + N * H.z;
+ return worldResult;
+}
+float iTDDistributionGGX(vec3 normal, vec3 half_vector, float roughness2)
+{
+ const float Epsilon = 0.000001;
+
+ float NdotH = clamp(dot(normal, half_vector), Epsilon, 1.0);
+
+ float alpha2 = roughness2 * roughness2;
+
+ float denom = NdotH * NdotH * (alpha2 - 1.0) + 1.0;
+ denom = max(1e-8, denom);
+ return alpha2 / (PI * denom * denom);
+}
+vec3 iTDCalcF(vec3 F0, float VdotH) {
+ return F0 + (vec3(1.0) - F0) * pow(2.0, (-5.55473*VdotH - 6.98316) * VdotH);
+}
+
+float iTDCalcG(float NdotL, float NdotV, float k) {
+ float Gl = 1.0 / (NdotL * (1.0 - k) + k);
+ float Gv = 1.0 / (NdotV * (1.0 - k) + k);
+ return Gl * Gv;
+}
+// 0 - All options
+TDPBRResult TDLightingPBR(int index,vec3 diffuseColor,vec3 specularColor,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float roughness)
+{
+ TDPBRResult res;
+ return res;
+}
+// 0 - All options
+void TDLightingPBR(inout vec3 diffuseContrib,inout vec3 specularContrib,inout float shadowStrengthOut,int index,vec3 diffuseColor,vec3 specularColor,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float roughness)
+{
+ TDPBRResult res = TDLightingPBR(index,diffuseColor,specularColor,worldSpacePos,normal,shadowStrength,shadowColor,camVector,roughness); diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+ shadowStrengthOut = res.shadowStrength;
+}
+// 0 - All options
+void TDLightingPBR(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 diffuseColor,vec3 specularColor,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float roughness)
+{
+ TDPBRResult res = TDLightingPBR(index,diffuseColor,specularColor,worldSpacePos,normal,shadowStrength,shadowColor,camVector,roughness); diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+}
+// 0 - All options
+TDPBRResult TDEnvLightingPBR(int index,vec3 diffuseColor,vec3 specularColor,vec3 normal,vec3 camVector,float roughness,float ambientOcclusion)
+{
+ TDPBRResult res;
+ return res;
+}
+// 0 - All options
+void TDEnvLightingPBR(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 diffuseColor,vec3 specularColor,vec3 normal,vec3 camVector,float roughness,float ambientOcclusion)
+{
+ TDPBRResult res = TDEnvLightingPBR(index, diffuseColor, specularColor, normal, camVector, roughness, ambientOcclusion);
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+}
+// 0 - All options
+TDPhongResult TDLighting(int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess,float shininess2)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ return res;
+}
+// 0 - Legacy
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,inout vec3 specularContrib2,inout float shadowStrengthOut,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess,float shininess2)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+ specularContrib2 = res.specular2;
+ shadowStrengthOut = res.shadowStrength;
+}
+// 0 - Legacy
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,inout vec3 specularContrib2,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess,float shininess2)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+ specularContrib2 = res.specular2;
+}
+// 1 - Without specular2
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+}
+// 2 - Without shadows
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,inout vec3 specularContrib2,int index,vec3 worldSpacePos,vec3 normal,vec3 camVector,float shininess,float shininess2)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+ specularContrib2 = res.specular2;
+}
+// 3 - diffuse and specular only
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 worldSpacePos,vec3 normal,vec3 camVector,float shininess)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+}
+// 4 - Diffuse only
+void TDLighting(inout vec3 diffuseContrib,int index, vec3 worldSpacePos, vec3 normal)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+}
+// 5 - diffuse only with shadows
+void TDLighting(inout vec3 diffuseContrib,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+}
+vec4 TDProjMap(int index, vec3 worldSpacePos, vec4 defaultColor) {
+ switch (index)
+ {
+ default: return defaultColor;
+ }
+}
+vec4 TDFog(vec4 color, vec3 lightingSpacePosition, int cameraIndex) {
+ switch (cameraIndex) {
+ default:
+ case 0:
+ {
+ return color;
+ }
+ }
+}
+vec4 TDFog(vec4 color, vec3 lightingSpacePosition)
+{
+ return TDFog(color, lightingSpacePosition, 0);
+}
+vec3 TDInstanceTexCoord(int index, vec3 t) {
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceTexCoord, coord);
+ v[0] = t.s;
+ v[1] = t.t;
+ v[2] = samp[0];
+ t.stp = v.stp;
+ return t;
+}
+bool TDInstanceActive(int index) {
+ index -= uTDInstanceIDOffset;
+ float v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v = samp[0];
+ return v != 0.0;
+}
+vec3 iTDInstanceTranslate(int index, out bool instanceActive) {
+ int origIndex = index;
+ index -= uTDInstanceIDOffset;
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v[0] = samp[1];
+ v[1] = samp[2];
+ v[2] = samp[3];
+ instanceActive = samp[0] != 0.0;
+ return v;
+}
+vec3 TDInstanceTranslate(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v[0] = samp[1];
+ v[1] = samp[2];
+ v[2] = samp[3];
+ return v;
+}
+mat3 TDInstanceRotateMat(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 0.0);
+ mat3 m = mat3(1.0);
+{
+ mat3 r;
+}
+ return m;
+}
+vec3 TDInstanceScale(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(1.0, 1.0, 1.0);
+ return v;
+}
+vec3 TDInstancePivot(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 0.0);
+ return v;
+}
+vec3 TDInstanceRotTo(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 1.0);
+ return v;
+}
+vec3 TDInstanceRotUp(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 1.0, 0.0);
+ return v;
+}
+mat4 TDInstanceMat(int id) {
+ bool instanceActive = true;
+ vec3 t = iTDInstanceTranslate(id, instanceActive);
+ if (!instanceActive)
+ {
+ return mat4(0.0);
+ }
+ mat4 m = mat4(1.0);
+ {
+ vec3 tt = t;
+ m[3][0] += m[0][0]*tt.x;
+ m[3][1] += m[0][1]*tt.x;
+ m[3][2] += m[0][2]*tt.x;
+ m[3][3] += m[0][3]*tt.x;
+ m[3][0] += m[1][0]*tt.y;
+ m[3][1] += m[1][1]*tt.y;
+ m[3][2] += m[1][2]*tt.y;
+ m[3][3] += m[1][3]*tt.y;
+ m[3][0] += m[2][0]*tt.z;
+ m[3][1] += m[2][1]*tt.z;
+ m[3][2] += m[2][2]*tt.z;
+ m[3][3] += m[2][3]*tt.z;
+ }
+ return m;
+}
+mat3 TDInstanceMat3(int id) {
+ mat3 m = mat3(1.0);
+ return m;
+}
+mat3 TDInstanceMat3ForNorm(int id) {
+ mat3 m = TDInstanceMat3(id);
+ return m;
+}
+vec4 TDInstanceColor(int index, vec4 curColor) {
+ index -= uTDInstanceIDOffset;
+ vec4 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceColor, coord);
+ v[0] = samp[0];
+ v[1] = samp[1];
+ v[2] = samp[2];
+ v[3] = 1.0;
+ curColor[0] = v[0];
+;
+ curColor[1] = v[1];
+;
+ curColor[2] = v[2];
+;
+ return curColor;
+}
diff --git a/Test/vk.relaxed.stagelink.0.1.vert b/Test/vk.relaxed.stagelink.0.1.vert new file mode 100755 index 00000000..3c5de986 --- /dev/null +++ b/Test/vk.relaxed.stagelink.0.1.vert @@ -0,0 +1,242 @@ +#version 460
+layout(location = 0) in vec3 P;
+layout(location = 1) in vec3 N;
+layout(location = 2) in vec4 Cd;
+layout(location = 3) in vec3 uv[8];
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDLight
+{
+ vec4 position;
+ vec3 direction;
+ vec3 diffuse;
+ vec4 nearFar;
+ vec4 lightSize;
+ vec4 misc;
+ vec4 coneLookupScaleBias;
+ vec4 attenScaleBiasRoll;
+ mat4 shadowMapMatrix;
+ mat4 shadowMapCamMatrix;
+ vec4 shadowMapRes;
+ mat4 projMapMatrix;
+};
+struct TDEnvLight
+{
+ vec3 color;
+ mat3 rotate;
+};
+layout(std140) uniform TDLightBlock
+{
+ TDLight uTDLights[TD_LIGHTS_ARRAY_SIZE];
+};
+layout(std140) uniform TDEnvLightBlock
+{
+ TDEnvLight uTDEnvLights[TD_ENV_LIGHTS_ARRAY_SIZE];
+};
+layout(std430) readonly restrict buffer TDEnvLightBuffer
+{
+ vec3 shCoeffs[9];
+} uTDEnvLightBuffers[TD_ENV_LIGHTS_ARRAY_SIZE];
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+layout (rgba8) uniform image2D mTD2DImageOutputs[1];
+layout (rgba8) uniform image2DArray mTD2DArrayImageOutputs[1];
+layout (rgba8) uniform image3D mTD3DImageOutputs[1];
+layout (rgba8) uniform imageCube mTDCubeImageOutputs[1];
+
+mat4 TDInstanceMat(int instanceID);
+mat3 TDInstanceMat3(int instanceID);
+vec3 TDInstanceTranslate(int instanceID);
+bool TDInstanceActive(int instanceID);
+mat3 TDInstanceRotateMat(int instanceID);
+vec3 TDInstanceScale(int instanceID);
+vec3 TDInstanceTexCoord(int instanceID, vec3 t);
+vec4 TDInstanceColor(int instanceID, vec4 curColor);
+vec4 TDInstanceCustomAttrib0(int instanceID);
+vec4 TDInstanceCustomAttrib1(int instanceID);
+vec4 TDInstanceCustomAttrib2(int instanceID);
+vec4 TDInstanceCustomAttrib3(int instanceID);
+vec4 TDInstanceCustomAttrib4(int instanceID);
+vec4 TDInstanceCustomAttrib5(int instanceID);
+vec4 TDInstanceCustomAttrib6(int instanceID);
+vec4 TDInstanceCustomAttrib7(int instanceID);
+vec4 TDInstanceCustomAttrib8(int instanceID);
+vec4 TDInstanceCustomAttrib9(int instanceID);
+vec4 TDInstanceCustomAttrib10(int instanceID);
+vec4 TDInstanceCustomAttrib11(int instanceID);
+uint TDInstanceTextureIndex(int instanceIndex);
+vec4 TDInstanceTexture(uint texIndex, vec3 uv);
+vec4 TDInstanceTexture(uint texIndex, vec2 uv);
+
+vec4 TDDeform(vec4 pos);
+vec4 TDDeform(vec3 pos);
+vec4 TDDeform(int instanceID, vec3 pos);
+vec3 TDDeformVec(vec3 v);
+vec3 TDDeformVec(int instanceID, vec3 v);
+vec3 TDDeformNorm(vec3 v);
+vec3 TDDeformNorm(int instanceID, vec3 v);
+vec4 TDSkinnedDeform(vec4 pos);
+vec3 TDSkinnedDeformVec(vec3 vec);
+vec3 TDSkinnedDeformNorm(vec3 vec);
+vec4 TDInstanceDeform(vec4 pos);
+vec3 TDInstanceDeformVec(vec3 vec);
+vec3 TDInstanceDeformNorm(vec3 vec);
+vec4 TDInstanceDeform(int instanceID, vec4 pos);
+vec3 TDInstanceDeformVec(int instanceID, vec3 vec);
+vec3 TDInstanceDeformNorm(int instanceID, vec3 vec);
+vec3 TDFastDeformTangent(vec3 oldNorm, vec4 oldTangent, vec3 deformedNorm);
+mat4 TDBoneMat(int boneIndex);
+mat4 TDInstanceMat();
+mat3 TDInstanceMat3();
+vec3 TDInstanceTranslate();
+bool TDInstanceActive();
+mat3 TDInstanceRotateMat();
+vec3 TDInstanceScale();
+vec3 TDInstanceTexCoord(vec3 t);
+vec4 TDInstanceColor(vec4 curColor);
+vec4 TDPointColor();
+#ifdef TD_PICKING_ACTIVE
+out TDPickVertex {
+ vec3 sopSpacePosition;
+ vec3 camSpacePosition;
+ vec3 worldSpacePosition;
+ vec3 sopSpaceNormal;
+ vec3 camSpaceNormal;
+ vec3 worldSpaceNormal;
+ vec3 uv[1];
+ flat int pickId;
+ flat int instanceId;
+ vec4 color;
+} oTDPickVert;
+#define vTDPickVert oTDPickVert
+#endif
+vec4 iTDCamToProj(vec4 v, vec3 uv, int cameraIndex, bool applyPickMod)
+{
+ if (!TDInstanceActive())
+ return vec4(2, 2, 2, 0);
+ v = uTDMats[0].proj * v;
+ return v;
+}
+vec4 iTDWorldToProj(vec4 v, vec3 uv, int cameraIndex, bool applyPickMod) {
+ if (!TDInstanceActive())
+ return vec4(2, 2, 2, 0);
+ v = uTDMats[0].camProj * v;
+ return v;
+}
+vec4 TDDeform(vec4 pos);
+vec4 TDDeform(vec3 pos);
+vec4 TDInstanceColor(vec4 curColor);
+vec3 TDInstanceTexCoord(vec3 t);
+int TDInstanceID() {
+ return gl_InstanceID + uTDInstanceIDOffset;
+}
+int TDCameraIndex() {
+ return 0;
+}
+vec3 TDUVUnwrapCoord() {
+ return uv[0];
+}
+#ifdef TD_PICKING_ACTIVE
+uniform int uTDPickId;
+#endif
+int TDPickID() {
+#ifdef TD_PICKING_ACTIVE
+ return uTDPickId;
+#else
+ return 0;
+#endif
+}
+float iTDConvertPickId(int id) {
+ id |= 1073741824;
+ return intBitsToFloat(id);
+}
+
+ void TDWritePickingValues() {
+#ifdef TD_PICKING_ACTIVE
+ vec4 worldPos = TDDeform(P);
+ vec4 camPos = uTDMats[TDCameraIndex()].cam * worldPos;
+ oTDPickVert.pickId = TDPickID();
+#endif
+}
+vec4 TDWorldToProj(vec4 v, vec3 uv)
+{
+ return iTDWorldToProj(v, uv, TDCameraIndex(), true);
+}
+vec4 TDWorldToProj(vec3 v, vec3 uv)
+{
+ return TDWorldToProj(vec4(v, 1.0), uv);
+}
+vec4 TDWorldToProj(vec4 v)
+{
+ return TDWorldToProj(v, vec3(0.0));
+}
+vec4 TDWorldToProj(vec3 v)
+{
+ return TDWorldToProj(vec4(v, 1.0));
+}
+vec4 TDPointColor() {
+ return Cd;
+}
diff --git a/Test/vk.relaxed.stagelink.0.2.frag b/Test/vk.relaxed.stagelink.0.2.frag new file mode 100755 index 00000000..27bd540d --- /dev/null +++ b/Test/vk.relaxed.stagelink.0.2.frag @@ -0,0 +1,9 @@ +#version 460
+vec4 TDOutputSwizzle(vec4 c)
+{
+ return c.rgba;
+}
+uvec4 TDOutputSwizzle(uvec4 c)
+{
+ return c.rgba;
+}
diff --git a/Test/vk.relaxed.stagelink.0.2.vert b/Test/vk.relaxed.stagelink.0.2.vert new file mode 100755 index 00000000..69c0b21b --- /dev/null +++ b/Test/vk.relaxed.stagelink.0.2.vert @@ -0,0 +1,320 @@ +#version 460
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDLight
+{
+ vec4 position;
+ vec3 direction;
+ vec3 diffuse;
+ vec4 nearFar;
+ vec4 lightSize;
+ vec4 misc;
+ vec4 coneLookupScaleBias;
+ vec4 attenScaleBiasRoll;
+ mat4 shadowMapMatrix;
+ mat4 shadowMapCamMatrix;
+ vec4 shadowMapRes;
+ mat4 projMapMatrix;
+};
+struct TDEnvLight
+{
+ vec3 color;
+ mat3 rotate;
+};
+layout(std140) uniform TDLightBlock
+{
+ TDLight uTDLights[TD_LIGHTS_ARRAY_SIZE];
+};
+layout(std140) uniform TDEnvLightBlock
+{
+ TDEnvLight uTDEnvLights[TD_ENV_LIGHTS_ARRAY_SIZE];
+};
+layout(std430) readonly restrict buffer TDEnvLightBuffer
+{
+ vec3 shCoeffs[9];
+} uTDEnvLightBuffers[TD_ENV_LIGHTS_ARRAY_SIZE];
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+
+layout(binding = 15) uniform samplerBuffer sTDInstanceT;
+layout(binding = 16) uniform samplerBuffer sTDInstanceTexCoord;
+layout(binding = 17) uniform samplerBuffer sTDInstanceColor;
+#define TD_NUM_BONES 0
+vec4 TDWorldToProj(vec4 v);
+vec4 TDWorldToProj(vec3 v);
+vec4 TDWorldToProj(vec4 v, vec3 uv);
+vec4 TDWorldToProj(vec3 v, vec3 uv);
+int TDPickID();
+int TDInstanceID();
+int TDCameraIndex();
+vec3 TDUVUnwrapCoord();
+vec3 TDInstanceTexCoord(int index, vec3 t) {
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceTexCoord, coord);
+ v[0] = t.s;
+ v[1] = t.t;
+ v[2] = samp[0];
+ t.stp = v.stp;
+ return t;
+}
+bool TDInstanceActive(int index) {
+ index -= uTDInstanceIDOffset;
+ float v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v = samp[0];
+ return v != 0.0;
+}
+vec3 iTDInstanceTranslate(int index, out bool instanceActive) {
+ int origIndex = index;
+ index -= uTDInstanceIDOffset;
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v[0] = samp[1];
+ v[1] = samp[2];
+ v[2] = samp[3];
+ instanceActive = samp[0] != 0.0;
+ return v;
+}
+vec3 TDInstanceTranslate(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v[0] = samp[1];
+ v[1] = samp[2];
+ v[2] = samp[3];
+ return v;
+}
+mat3 TDInstanceRotateMat(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 0.0);
+ mat3 m = mat3(1.0);
+{
+ mat3 r;
+}
+ return m;
+}
+vec3 TDInstanceScale(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(1.0, 1.0, 1.0);
+ return v;
+}
+vec3 TDInstancePivot(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 0.0);
+ return v;
+}
+vec3 TDInstanceRotTo(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 1.0);
+ return v;
+}
+vec3 TDInstanceRotUp(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 1.0, 0.0);
+ return v;
+}
+mat4 TDInstanceMat(int id) {
+ bool instanceActive = true;
+ vec3 t = iTDInstanceTranslate(id, instanceActive);
+ if (!instanceActive)
+ {
+ return mat4(0.0);
+ }
+ mat4 m = mat4(1.0);
+ {
+ vec3 tt = t;
+ m[3][0] += m[0][0]*tt.x;
+ m[3][1] += m[0][1]*tt.x;
+ m[3][2] += m[0][2]*tt.x;
+ m[3][3] += m[0][3]*tt.x;
+ m[3][0] += m[1][0]*tt.y;
+ m[3][1] += m[1][1]*tt.y;
+ m[3][2] += m[1][2]*tt.y;
+ m[3][3] += m[1][3]*tt.y;
+ m[3][0] += m[2][0]*tt.z;
+ m[3][1] += m[2][1]*tt.z;
+ m[3][2] += m[2][2]*tt.z;
+ m[3][3] += m[2][3]*tt.z;
+ }
+ return m;
+}
+mat3 TDInstanceMat3(int id) {
+ mat3 m = mat3(1.0);
+ return m;
+}
+mat3 TDInstanceMat3ForNorm(int id) {
+ mat3 m = TDInstanceMat3(id);
+ return m;
+}
+vec4 TDInstanceColor(int index, vec4 curColor) {
+ index -= uTDInstanceIDOffset;
+ vec4 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceColor, coord);
+ v[0] = samp[0];
+ v[1] = samp[1];
+ v[2] = samp[2];
+ v[3] = 1.0;
+ curColor[0] = v[0];
+;
+ curColor[1] = v[1];
+;
+ curColor[2] = v[2];
+;
+ return curColor;
+}
+vec4 TDInstanceDeform(int id, vec4 pos) {
+ pos = TDInstanceMat(id) * pos;
+ return uTDMats[TDCameraIndex()].world * pos;
+}
+
+vec3 TDInstanceDeformVec(int id, vec3 vec)
+{
+ mat3 m = TDInstanceMat3(id);
+ return mat3(uTDMats[TDCameraIndex()].world) * (m * vec);
+}
+vec3 TDInstanceDeformNorm(int id, vec3 vec)
+{
+ mat3 m = TDInstanceMat3ForNorm(id);
+ return mat3(uTDMats[TDCameraIndex()].worldForNormals) * (m * vec);
+}
+vec4 TDInstanceDeform(vec4 pos) {
+ return TDInstanceDeform(TDInstanceID(), pos);
+}
+vec3 TDInstanceDeformVec(vec3 vec) {
+ return TDInstanceDeformVec(TDInstanceID(), vec);
+}
+vec3 TDInstanceDeformNorm(vec3 vec) {
+ return TDInstanceDeformNorm(TDInstanceID(), vec);
+}
+bool TDInstanceActive() { return TDInstanceActive(TDInstanceID()); }
+vec3 TDInstanceTranslate() { return TDInstanceTranslate(TDInstanceID()); }
+mat3 TDInstanceRotateMat() { return TDInstanceRotateMat(TDInstanceID()); }
+vec3 TDInstanceScale() { return TDInstanceScale(TDInstanceID()); }
+mat4 TDInstanceMat() { return TDInstanceMat(TDInstanceID());
+ }
+mat3 TDInstanceMat3() { return TDInstanceMat3(TDInstanceID());
+}
+vec3 TDInstanceTexCoord(vec3 t) {
+ return TDInstanceTexCoord(TDInstanceID(), t);
+}
+vec4 TDInstanceColor(vec4 curColor) {
+ return TDInstanceColor(TDInstanceID(), curColor);
+}
+vec4 TDSkinnedDeform(vec4 pos) { return pos; }
+
+vec3 TDSkinnedDeformVec(vec3 vec) { return vec; }
+
+vec3 TDFastDeformTangent(vec3 oldNorm, vec4 oldTangent, vec3 deformedNorm)
+{ return oldTangent.xyz; }
+mat4 TDBoneMat(int index) {
+ return mat4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);
+}
+vec4 TDDeform(vec4 pos) {
+ pos = TDSkinnedDeform(pos);
+ pos = TDInstanceDeform(pos);
+ return pos;
+}
+
+vec4 TDDeform(int instanceID, vec3 p) {
+ vec4 pos = vec4(p, 1.0);
+ pos = TDSkinnedDeform(pos);
+ pos = TDInstanceDeform(instanceID, pos);
+ return pos;
+}
+
+vec4 TDDeform(vec3 pos) {
+ return TDDeform(TDInstanceID(), pos);
+}
+
+vec3 TDDeformVec(int instanceID, vec3 vec) {
+ vec = TDSkinnedDeformVec(vec);
+ vec = TDInstanceDeformVec(instanceID, vec);
+ return vec;
+}
+
+vec3 TDDeformVec(vec3 vec) {
+ return TDDeformVec(TDInstanceID(), vec);
+}
+
+vec3 TDDeformNorm(int instanceID, vec3 vec) {
+ vec = TDSkinnedDeformVec(vec);
+ vec = TDInstanceDeformNorm(instanceID, vec);
+ return vec;
+}
+
+vec3 TDDeformNorm(vec3 vec) {
+ return TDDeformNorm(TDInstanceID(), vec);
+}
+
+vec3 TDSkinnedDeformNorm(vec3 vec) {
+ vec = TDSkinnedDeformVec(vec);
+ return vec;
+}
diff --git a/Test/vulkan.frag b/Test/vulkan.frag index 25bfefec..6cf7ccfa 100644 --- a/Test/vulkan.frag +++ b/Test/vulkan.frag @@ -46,6 +46,9 @@ layout(push_constant) uniform; // ERROR, needs an object layout(binding=2, push_constant) uniform pcbnd1 { // ERROR, can't have binding
int a;
} pcbnd1inst;
+layout(push_constant) uniform pcbnd2 { // ERROR, can't be array
+ float a;
+} pcbnd2inst[2];
layout(std430, push_constant) uniform pcb1 { int a; } pcb1inst;
layout(push_constant) uniform pcb2 {
int a;
diff --git a/Test/xfbUnsizedArray.error.tese b/Test/xfbUnsizedArray.error.tese new file mode 100644 index 00000000..a59069bb --- /dev/null +++ b/Test/xfbUnsizedArray.error.tese @@ -0,0 +1,8 @@ +#version 430 core +#extension GL_ARB_enhanced_layouts : require +layout(isolines, point_mode) in; +layout (xfb_offset = 0) out vec4 unsized[]; // error: unsized array + +void main() +{ +} diff --git a/build_info.py b/build_info.py index 7c1998f6..06d613b0 100755 --- a/build_info.py +++ b/build_info.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2020 Google Inc. # diff --git a/gen_extension_headers.py b/gen_extension_headers.py index a787f9a9..2838c962 100644..100755 --- a/gen_extension_headers.py +++ b/gen_extension_headers.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2020 Google Inc. # @@ -95,4 +95,4 @@ def main(): generate_main(glsl_files, output_file)
if __name__ == '__main__':
- main()
\ No newline at end of file + main() diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index 4fdeff7a..53892bc5 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -244,6 +244,8 @@ c_shader_target_language_version(glslang_target_language_version_t target_langua return glslang::EShTargetSpv_1_4; case GLSLANG_TARGET_SPV_1_5: return glslang::EShTargetSpv_1_5; + case GLSLANG_TARGET_SPV_1_6: + return glslang::EShTargetSpv_1_6; default: break; } @@ -271,6 +273,8 @@ static glslang::EShTargetClientVersion c_shader_client_version(glslang_target_cl return glslang::EShTargetVulkan_1_1; case GLSLANG_TARGET_VULKAN_1_2: return glslang::EShTargetVulkan_1_2; + case GLSLANG_TARGET_VULKAN_1_3: + return glslang::EShTargetVulkan_1_3; case GLSLANG_TARGET_OPENGL_450: return glslang::EShTargetOpenGL_450; default: @@ -346,6 +350,38 @@ GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* in return shader; } +GLSLANG_EXPORT void glslang_shader_shift_binding(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base) +{ + const glslang::TResourceType res_type = glslang::TResourceType(res); + shader->shader->setShiftBinding(res_type, base); +} + +GLSLANG_EXPORT void glslang_shader_shift_binding_for_set(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base, unsigned int set) +{ + const glslang::TResourceType res_type = glslang::TResourceType(res); + shader->shader->setShiftBindingForSet(res_type, base, set); +} + +GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int options) +{ + if (options & GLSLANG_SHADER_AUTO_MAP_BINDINGS) { + shader->shader->setAutoMapBindings(true); + } + + if (options & GLSLANG_SHADER_AUTO_MAP_LOCATIONS) { + shader->shader->setAutoMapLocations(true); + } + + if (options & GLSLANG_SHADER_VULKAN_RULES_RELAXED) { + shader->shader->setEnvInputVulkanRulesRelaxed(); + } +} + +GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, int version) +{ + shader->shader->setOverrideVersion(version); +} + GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader) { return shader->preprocessedGLSL.c_str(); @@ -419,6 +455,11 @@ GLSLANG_EXPORT int glslang_program_link(glslang_program_t* program, int messages return (int)program->program->link((EShMessages)messages); } +GLSLANG_EXPORT int glslang_program_map_io(glslang_program_t* program) +{ + return (int)program->program->mapIO(); +} + GLSLANG_EXPORT const char* glslang_program_get_info_log(glslang_program_t* program) { return program->program->getInfoLog(); diff --git a/glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl b/glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl index f74df6fc..7cf545d9 100644 --- a/glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl +++ b/glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl @@ -36,19 +36,3 @@ // POSSIBILITY OF SUCH DAMAGE. // -#extension GL_EXT_spirv_intrinsics : enable -#extension GL_ARB_gpu_shader_int64 : enable - -uvec2 clockRealtime2x32EXT(void) { - spirv_instruction (extensions = ["SPV_KHR_shader_clock"], capabilities = [5055], id = 5056) - uvec2 clockRealtime2x32EXT_internal(uint scope); - - return clockRealtime2x32EXT_internal(1 /*Device scope*/); -} - -uint64_t clockRealtimeEXT(void) { - spirv_instruction (extensions = ["SPV_KHR_shader_clock"], capabilities = [5055], id = 5056) - uint64_t clockRealtimeEXT_internal(uint scope); - - return clockRealtimeEXT_internal(1 /*Device scope*/); -}
\ No newline at end of file diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index 39b3ecac..2d0a8e92 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -2167,8 +2167,21 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct TIntermSymbol* arg = intermediate.addSymbol(*argVars.back()); handleFunctionArgument(&callee, callingArgs, arg); if (param.type->getQualifier().isParamInput()) { - intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, arg, - intermediate.addSymbol(**inputIt))); + TIntermTyped* input = intermediate.addSymbol(**inputIt); + if (input->getType().getQualifier().builtIn == EbvFragCoord && intermediate.getDxPositionW()) { + // Replace FragCoord W with reciprocal + auto pos_xyz = handleDotDereference(loc, input, "xyz"); + auto pos_w = handleDotDereference(loc, input, "w"); + auto one = intermediate.addConstantUnion(1.0, EbtFloat, loc); + auto recip_w = intermediate.addBinaryMath(EOpDiv, one, pos_w, loc); + TIntermAggregate* dst = new TIntermAggregate(EOpConstructVec4); + dst->getSequence().push_back(pos_xyz); + dst->getSequence().push_back(recip_w); + dst->setType(TType(EbtFloat, EvqTemporary, 4)); + dst->setLoc(loc); + input = dst; + } + intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, arg, input)); inputIt++; } if (param.type->getQualifier().storage == EvqUniform) { @@ -2452,6 +2465,62 @@ void HlslParseContext::handleFunctionArgument(TFunction* function, arguments = newArg; } +// FragCoord may require special loading: we can optionally reciprocate W. +TIntermTyped* HlslParseContext::assignFromFragCoord(const TSourceLoc& loc, TOperator op, + TIntermTyped* left, TIntermTyped* right) +{ + // If we are not asked for reciprocal W, use a plain old assign. + if (!intermediate.getDxPositionW()) + return intermediate.addAssign(op, left, right, loc); + + // If we get here, we should reciprocate W. + TIntermAggregate* assignList = nullptr; + + // If this is a complex rvalue, we don't want to dereference it many times. Create a temporary. + TVariable* rhsTempVar = nullptr; + rhsTempVar = makeInternalVariable("@fragcoord", right->getType()); + rhsTempVar->getWritableType().getQualifier().makeTemporary(); + + { + TIntermTyped* rhsTempSym = intermediate.addSymbol(*rhsTempVar, loc); + assignList = intermediate.growAggregate(assignList, + intermediate.addAssign(EOpAssign, rhsTempSym, right, loc), loc); + } + + // tmp.w = 1.0 / tmp.w + { + const int W = 3; + + TIntermTyped* tempSymL = intermediate.addSymbol(*rhsTempVar, loc); + TIntermTyped* tempSymR = intermediate.addSymbol(*rhsTempVar, loc); + TIntermTyped* index = intermediate.addConstantUnion(W, loc); + + TIntermTyped* lhsElement = intermediate.addIndex(EOpIndexDirect, tempSymL, index, loc); + TIntermTyped* rhsElement = intermediate.addIndex(EOpIndexDirect, tempSymR, index, loc); + + const TType derefType(right->getType(), 0); + + lhsElement->setType(derefType); + rhsElement->setType(derefType); + + auto one = intermediate.addConstantUnion(1.0, EbtFloat, loc); + auto recip_w = intermediate.addBinaryMath(EOpDiv, one, rhsElement, loc); + + assignList = intermediate.growAggregate(assignList, intermediate.addAssign(EOpAssign, lhsElement, recip_w, loc)); + } + + // Assign the rhs temp (now with W reciprocal) to the final output + { + TIntermTyped* rhsTempSym = intermediate.addSymbol(*rhsTempVar, loc); + assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, left, rhsTempSym, loc)); + } + + assert(assignList != nullptr); + assignList->setOperator(EOpSequence); + + return assignList; +} + // Position may require special handling: we can optionally invert Y. // See: https://github.com/KhronosGroup/glslang/issues/1173 // https://github.com/KhronosGroup/glslang/issues/494 @@ -3071,6 +3140,10 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op subSplitLeft, subSplitRight); assignList = intermediate.growAggregate(assignList, clipCullAssign, loc); + } else if (subSplitRight->getType().getQualifier().builtIn == EbvFragCoord) { + // FragCoord can require special handling: see comment above assignFromFragCoord + TIntermTyped* fragCoordAssign = assignFromFragCoord(loc, op, subSplitLeft, subSplitRight); + assignList = intermediate.growAggregate(assignList, fragCoordAssign, loc); } else if (assignsClipPos(subSplitLeft)) { // Position can require special handling: see comment above assignPosition TIntermTyped* positionAssign = assignPosition(loc, op, subSplitLeft, subSplitRight); @@ -6935,6 +7008,9 @@ void HlslParseContext::shareStructBufferType(TType& type) if (lhs.isStruct() != rhs.isStruct()) return false; + if (lhs.getQualifier().builtIn != rhs.getQualifier().builtIn) + return false; + if (lhs.isStruct() && rhs.isStruct()) { if (lhs.getStruct()->size() != rhs.getStruct()->size()) return false; diff --git a/glslang/HLSL/hlslParseHelper.h b/glslang/HLSL/hlslParseHelper.h index 2d7165cf..8bebb0e2 100644 --- a/glslang/HLSL/hlslParseHelper.h +++ b/glslang/HLSL/hlslParseHelper.h @@ -94,6 +94,7 @@ public: TIntermTyped* handleFunctionCall(const TSourceLoc&, TFunction*, TIntermTyped*); TIntermAggregate* assignClipCullDistance(const TSourceLoc&, TOperator, int semanticId, TIntermTyped* left, TIntermTyped* right); TIntermTyped* assignPosition(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right); + TIntermTyped* assignFromFragCoord(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right); void decomposeIntrinsic(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); void decomposeSampleMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); void decomposeStructBufferMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h index e7b5e072..9042a1aa 100644 --- a/glslang/Include/Common.h +++ b/glslang/Include/Common.h @@ -39,6 +39,11 @@ #include <algorithm> #include <cassert> +#ifdef _MSC_VER +#include <cfloat> +#else +#include <cmath> +#endif #include <cstdio> #include <cstdlib> #include <list> @@ -302,6 +307,34 @@ template <class T> int IntLog2(T n) return result; } +inline bool IsInfinity(double x) { +#ifdef _MSC_VER + switch (_fpclass(x)) { + case _FPCLASS_NINF: + case _FPCLASS_PINF: + return true; + default: + return false; + } +#else + return std::isinf(x); +#endif +} + +inline bool IsNan(double x) { +#ifdef _MSC_VER + switch (_fpclass(x)) { + case _FPCLASS_SNAN: + case _FPCLASS_QNAN: + return true; + default: + return false; + } +#else + return std::isnan(x); +#endif +} + } // end namespace glslang #endif // _COMMON_INCLUDED_ diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index e87f2583..91fcd4eb 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -1865,10 +1865,12 @@ public: bool isAtomic() const { return false; } bool isCoopMat() const { return false; } bool isReference() const { return false; } + bool isSpirvType() const { return false; } #else bool isAtomic() const { return basicType == EbtAtomicUint; } bool isCoopMat() const { return coopmat; } bool isReference() const { return getBasicType() == EbtReference; } + bool isSpirvType() const { return getBasicType() == EbtSpirvType; } #endif // return true if this type contains any subtype which satisfies the given predicate. @@ -2140,7 +2142,8 @@ public: const char* getPrecisionQualifierString() const { return ""; } TString getBasicTypeString() const { return ""; } #else - TString getCompleteString() const + TString getCompleteString(bool syntactic = false, bool getQualifiers = true, bool getPrecision = true, + bool getType = true, TString name = "", TString structName = "") const { TString typeString; @@ -2148,232 +2151,335 @@ public: const auto appendUint = [&](unsigned int u) { typeString.append(std::to_string(u).c_str()); }; const auto appendInt = [&](int i) { typeString.append(std::to_string(i).c_str()); }; - if (qualifier.hasSprivDecorate()) + if (getQualifiers) { + if (qualifier.hasSprivDecorate()) appendStr(qualifier.getSpirvDecorateQualifierString().c_str()); - if (qualifier.hasLayout()) { + if (qualifier.hasLayout()) { // To reduce noise, skip this if the only layout is an xfb_buffer // with no triggering xfb_offset. TQualifier noXfbBuffer = qualifier; noXfbBuffer.layoutXfbBuffer = TQualifier::layoutXfbBufferEnd; if (noXfbBuffer.hasLayout()) { - appendStr("layout("); - if (qualifier.hasAnyLocation()) { - appendStr(" location="); - appendUint(qualifier.layoutLocation); - if (qualifier.hasComponent()) { - appendStr(" component="); - appendUint(qualifier.layoutComponent); - } - if (qualifier.hasIndex()) { - appendStr(" index="); - appendUint(qualifier.layoutIndex); - } - } - if (qualifier.hasSet()) { - appendStr(" set="); - appendUint(qualifier.layoutSet); - } - if (qualifier.hasBinding()) { - appendStr(" binding="); - appendUint(qualifier.layoutBinding); - } - if (qualifier.hasStream()) { - appendStr(" stream="); - appendUint(qualifier.layoutStream); - } - if (qualifier.hasMatrix()) { - appendStr(" "); - appendStr(TQualifier::getLayoutMatrixString(qualifier.layoutMatrix)); - } - if (qualifier.hasPacking()) { - appendStr(" "); - appendStr(TQualifier::getLayoutPackingString(qualifier.layoutPacking)); - } - if (qualifier.hasOffset()) { - appendStr(" offset="); - appendInt(qualifier.layoutOffset); - } - if (qualifier.hasAlign()) { - appendStr(" align="); - appendInt(qualifier.layoutAlign); - } - if (qualifier.hasFormat()) { - appendStr(" "); - appendStr(TQualifier::getLayoutFormatString(qualifier.layoutFormat)); - } - if (qualifier.hasXfbBuffer() && qualifier.hasXfbOffset()) { - appendStr(" xfb_buffer="); - appendUint(qualifier.layoutXfbBuffer); - } - if (qualifier.hasXfbOffset()) { - appendStr(" xfb_offset="); - appendUint(qualifier.layoutXfbOffset); - } - if (qualifier.hasXfbStride()) { - appendStr(" xfb_stride="); - appendUint(qualifier.layoutXfbStride); - } - if (qualifier.hasAttachment()) { - appendStr(" input_attachment_index="); - appendUint(qualifier.layoutAttachment); + appendStr("layout("); + if (qualifier.hasAnyLocation()) { + appendStr(" location="); + appendUint(qualifier.layoutLocation); + if (qualifier.hasComponent()) { + appendStr(" component="); + appendUint(qualifier.layoutComponent); } - if (qualifier.hasSpecConstantId()) { - appendStr(" constant_id="); - appendUint(qualifier.layoutSpecConstantId); + if (qualifier.hasIndex()) { + appendStr(" index="); + appendUint(qualifier.layoutIndex); } - if (qualifier.layoutPushConstant) - appendStr(" push_constant"); - if (qualifier.layoutBufferReference) - appendStr(" buffer_reference"); - if (qualifier.hasBufferReferenceAlign()) { - appendStr(" buffer_reference_align="); - appendUint(1u << qualifier.layoutBufferReferenceAlign); - } - - if (qualifier.layoutPassthrough) - appendStr(" passthrough"); - if (qualifier.layoutViewportRelative) - appendStr(" layoutViewportRelative"); - if (qualifier.layoutSecondaryViewportRelativeOffset != -2048) { - appendStr(" layoutSecondaryViewportRelativeOffset="); - appendInt(qualifier.layoutSecondaryViewportRelativeOffset); - } - if (qualifier.layoutShaderRecord) - appendStr(" shaderRecordNV"); - - appendStr(")"); + } + if (qualifier.hasSet()) { + appendStr(" set="); + appendUint(qualifier.layoutSet); + } + if (qualifier.hasBinding()) { + appendStr(" binding="); + appendUint(qualifier.layoutBinding); + } + if (qualifier.hasStream()) { + appendStr(" stream="); + appendUint(qualifier.layoutStream); + } + if (qualifier.hasMatrix()) { + appendStr(" "); + appendStr(TQualifier::getLayoutMatrixString(qualifier.layoutMatrix)); + } + if (qualifier.hasPacking()) { + appendStr(" "); + appendStr(TQualifier::getLayoutPackingString(qualifier.layoutPacking)); + } + if (qualifier.hasOffset()) { + appendStr(" offset="); + appendInt(qualifier.layoutOffset); + } + if (qualifier.hasAlign()) { + appendStr(" align="); + appendInt(qualifier.layoutAlign); + } + if (qualifier.hasFormat()) { + appendStr(" "); + appendStr(TQualifier::getLayoutFormatString(qualifier.layoutFormat)); + } + if (qualifier.hasXfbBuffer() && qualifier.hasXfbOffset()) { + appendStr(" xfb_buffer="); + appendUint(qualifier.layoutXfbBuffer); + } + if (qualifier.hasXfbOffset()) { + appendStr(" xfb_offset="); + appendUint(qualifier.layoutXfbOffset); + } + if (qualifier.hasXfbStride()) { + appendStr(" xfb_stride="); + appendUint(qualifier.layoutXfbStride); + } + if (qualifier.hasAttachment()) { + appendStr(" input_attachment_index="); + appendUint(qualifier.layoutAttachment); + } + if (qualifier.hasSpecConstantId()) { + appendStr(" constant_id="); + appendUint(qualifier.layoutSpecConstantId); + } + if (qualifier.layoutPushConstant) + appendStr(" push_constant"); + if (qualifier.layoutBufferReference) + appendStr(" buffer_reference"); + if (qualifier.hasBufferReferenceAlign()) { + appendStr(" buffer_reference_align="); + appendUint(1u << qualifier.layoutBufferReferenceAlign); + } + + if (qualifier.layoutPassthrough) + appendStr(" passthrough"); + if (qualifier.layoutViewportRelative) + appendStr(" layoutViewportRelative"); + if (qualifier.layoutSecondaryViewportRelativeOffset != -2048) { + appendStr(" layoutSecondaryViewportRelativeOffset="); + appendInt(qualifier.layoutSecondaryViewportRelativeOffset); + } + if (qualifier.layoutShaderRecord) + appendStr(" shaderRecordNV"); + + appendStr(")"); } - } + } - if (qualifier.invariant) + if (qualifier.invariant) appendStr(" invariant"); - if (qualifier.noContraction) + if (qualifier.noContraction) appendStr(" noContraction"); - if (qualifier.centroid) + if (qualifier.centroid) appendStr(" centroid"); - if (qualifier.smooth) + if (qualifier.smooth) appendStr(" smooth"); - if (qualifier.flat) + if (qualifier.flat) appendStr(" flat"); - if (qualifier.nopersp) + if (qualifier.nopersp) appendStr(" noperspective"); - if (qualifier.explicitInterp) + if (qualifier.explicitInterp) appendStr(" __explicitInterpAMD"); - if (qualifier.pervertexNV) + if (qualifier.pervertexNV) appendStr(" pervertexNV"); - if (qualifier.perPrimitiveNV) + if (qualifier.perPrimitiveNV) appendStr(" perprimitiveNV"); - if (qualifier.perViewNV) + if (qualifier.perViewNV) appendStr(" perviewNV"); - if (qualifier.perTaskNV) + if (qualifier.perTaskNV) appendStr(" taskNV"); - if (qualifier.patch) + if (qualifier.patch) appendStr(" patch"); - if (qualifier.sample) + if (qualifier.sample) appendStr(" sample"); - if (qualifier.coherent) + if (qualifier.coherent) appendStr(" coherent"); - if (qualifier.devicecoherent) + if (qualifier.devicecoherent) appendStr(" devicecoherent"); - if (qualifier.queuefamilycoherent) + if (qualifier.queuefamilycoherent) appendStr(" queuefamilycoherent"); - if (qualifier.workgroupcoherent) + if (qualifier.workgroupcoherent) appendStr(" workgroupcoherent"); - if (qualifier.subgroupcoherent) + if (qualifier.subgroupcoherent) appendStr(" subgroupcoherent"); - if (qualifier.shadercallcoherent) + if (qualifier.shadercallcoherent) appendStr(" shadercallcoherent"); - if (qualifier.nonprivate) + if (qualifier.nonprivate) appendStr(" nonprivate"); - if (qualifier.volatil) + if (qualifier.volatil) appendStr(" volatile"); - if (qualifier.restrict) + if (qualifier.restrict) appendStr(" restrict"); - if (qualifier.readonly) + if (qualifier.readonly) appendStr(" readonly"); - if (qualifier.writeonly) + if (qualifier.writeonly) appendStr(" writeonly"); - if (qualifier.specConstant) + if (qualifier.specConstant) appendStr(" specialization-constant"); - if (qualifier.nonUniform) + if (qualifier.nonUniform) appendStr(" nonuniform"); - if (qualifier.isNullInit()) + if (qualifier.isNullInit()) appendStr(" null-init"); - if (qualifier.isSpirvByReference()) + if (qualifier.isSpirvByReference()) appendStr(" spirv_by_reference"); - if (qualifier.isSpirvLiteral()) + if (qualifier.isSpirvLiteral()) appendStr(" spirv_literal"); - appendStr(" "); - appendStr(getStorageQualifierString()); - if (isArray()) { - for(int i = 0; i < (int)arraySizes->getNumDims(); ++i) { + appendStr(" "); + appendStr(getStorageQualifierString()); + } + if (getType) { + if (syntactic) { + if (getPrecision && qualifier.precision != EpqNone) { + appendStr(" "); + appendStr(getPrecisionQualifierString()); + } + if (isVector() || isMatrix()) { + appendStr(" "); + switch (basicType) { + case EbtDouble: + appendStr("d"); + break; + case EbtInt: + appendStr("i"); + break; + case EbtUint: + appendStr("u"); + break; + case EbtBool: + appendStr("b"); + break; + case EbtFloat: + default: + break; + } + if (isVector()) { + appendStr("vec"); + appendInt(vectorSize); + } else { + appendStr("mat"); + appendInt(matrixCols); + appendStr("x"); + appendInt(matrixRows); + } + } else if (isStruct() && structure) { + appendStr(" "); + appendStr(structName.c_str()); + appendStr("{"); + bool hasHiddenMember = true; + for (size_t i = 0; i < structure->size(); ++i) { + if (!(*structure)[i].type->hiddenMember()) { + if (!hasHiddenMember) + appendStr(", "); + typeString.append((*structure)[i].type->getCompleteString(syntactic, getQualifiers, getPrecision, getType, (*structure)[i].type->getFieldName())); + hasHiddenMember = false; + } + } + appendStr("}"); + } else { + appendStr(" "); + switch (basicType) { + case EbtDouble: + appendStr("double"); + break; + case EbtInt: + appendStr("int"); + break; + case EbtUint: + appendStr("uint"); + break; + case EbtBool: + appendStr("bool"); + break; + case EbtFloat: + appendStr("float"); + break; + default: + appendStr("unexpected"); + break; + } + } + if (name.length() > 0) { + appendStr(" "); + appendStr(name.c_str()); + } + if (isArray()) { + for (int i = 0; i < (int)arraySizes->getNumDims(); ++i) { int size = arraySizes->getDimSize(i); if (size == UnsizedArraySize && i == 0 && arraySizes->isVariablyIndexed()) - appendStr(" runtime-sized array of"); + appendStr("[]"); else { - if (size == UnsizedArraySize) { - appendStr(" unsized"); - if (i == 0) { - appendStr(" "); - appendInt(arraySizes->getImplicitSize()); - } - } else { - appendStr(" "); - appendInt(arraySizes->getDimSize(i)); + if (size == UnsizedArraySize) { + appendStr("["); + if (i == 0) + appendInt(arraySizes->getImplicitSize()); + appendStr("]"); + } + else { + appendStr("["); + appendInt(arraySizes->getDimSize(i)); + appendStr("]"); + } + } + } + } + } + else { + if (isArray()) { + for (int i = 0; i < (int)arraySizes->getNumDims(); ++i) { + int size = arraySizes->getDimSize(i); + if (size == UnsizedArraySize && i == 0 && arraySizes->isVariablyIndexed()) + appendStr(" runtime-sized array of"); + else { + if (size == UnsizedArraySize) { + appendStr(" unsized"); + if (i == 0) { + appendStr(" "); + appendInt(arraySizes->getImplicitSize()); } - appendStr("-element array of"); + } + else { + appendStr(" "); + appendInt(arraySizes->getDimSize(i)); + } + appendStr("-element array of"); } + } } - } - if (isParameterized()) { - appendStr("<"); - for(int i = 0; i < (int)typeParameters->getNumDims(); ++i) { + if (isParameterized()) { + appendStr("<"); + for (int i = 0; i < (int)typeParameters->getNumDims(); ++i) { appendInt(typeParameters->getDimSize(i)); if (i != (int)typeParameters->getNumDims() - 1) - appendStr(", "); + appendStr(", "); + } + appendStr(">"); + } + if (getPrecision && qualifier.precision != EpqNone) { + appendStr(" "); + appendStr(getPrecisionQualifierString()); + } + if (isMatrix()) { + appendStr(" "); + appendInt(matrixCols); + appendStr("X"); + appendInt(matrixRows); + appendStr(" matrix of"); + } + else if (isVector()) { + appendStr(" "); + appendInt(vectorSize); + appendStr("-component vector of"); } - appendStr(">"); - } - if (qualifier.precision != EpqNone) { - appendStr(" "); - appendStr(getPrecisionQualifierString()); - } - if (isMatrix()) { - appendStr(" "); - appendInt(matrixCols); - appendStr("X"); - appendInt(matrixRows); - appendStr(" matrix of"); - } else if (isVector()) { - appendStr(" "); - appendInt(vectorSize); - appendStr("-component vector of"); - } - - appendStr(" "); - typeString.append(getBasicTypeString()); - if (qualifier.builtIn != EbvNone) { appendStr(" "); - appendStr(getBuiltInVariableString()); - } + typeString.append(getBasicTypeString()); - // Add struct/block members - if (isStruct() && structure) { - appendStr("{"); - bool hasHiddenMember = true; - for (size_t i = 0; i < structure->size(); ++i) { - if (! (*structure)[i].type->hiddenMember()) { - if (!hasHiddenMember) - appendStr(", "); - typeString.append((*structure)[i].type->getCompleteString()); - typeString.append(" "); - typeString.append((*structure)[i].type->getFieldName()); - hasHiddenMember = false; + if (qualifier.builtIn != EbvNone) { + appendStr(" "); + appendStr(getBuiltInVariableString()); + } + + // Add struct/block members + if (isStruct() && structure) { + appendStr("{"); + bool hasHiddenMember = true; + for (size_t i = 0; i < structure->size(); ++i) { + if (!(*structure)[i].type->hiddenMember()) { + if (!hasHiddenMember) + appendStr(", "); + typeString.append((*structure)[i].type->getCompleteString()); + typeString.append(" "); + typeString.append((*structure)[i].type->getFieldName()); + hasHiddenMember = false; } + } + appendStr("}"); } - appendStr("}"); + } } return typeString; @@ -2442,13 +2548,27 @@ public: // type definitions, and member names to be considered the same type. // This rule applies recursively for nested or embedded types." // - bool sameStructType(const TType& right) const + // If type mismatch in structure, return member indices through lpidx and rpidx. + // If matching members for either block are exhausted, return -1 for exhausted + // block and the index of the unmatched member. Otherwise return {-1,-1}. + // + bool sameStructType(const TType& right, int* lpidx = nullptr, int* rpidx = nullptr) const { + // Initialize error to general type mismatch. + if (lpidx != nullptr) { + *lpidx = -1; + *rpidx = -1; + } + // Most commonly, they are both nullptr, or the same pointer to the same actual structure + // TODO: Why return true when neither types are structures? if ((!isStruct() && !right.isStruct()) || (isStruct() && right.isStruct() && structure == right.structure)) return true; + if (!isStruct() || !right.isStruct()) + return false; + // Structure names have to match if (*typeName != *right.typeName) return false; @@ -2458,12 +2578,17 @@ public: bool isGLPerVertex = *typeName == "gl_PerVertex"; // Both being nullptr was caught above, now they both have to be structures of the same number of elements - if (!isStruct() || !right.isStruct() || - (structure->size() != right.structure->size() && !isGLPerVertex)) + if (lpidx == nullptr && + (structure->size() != right.structure->size() && !isGLPerVertex)) { return false; + } // Compare the names and types of all the members, which have to match for (size_t li = 0, ri = 0; li < structure->size() || ri < right.structure->size(); ++li, ++ri) { + if (lpidx != nullptr) { + *lpidx = static_cast<int>(li); + *rpidx = static_cast<int>(ri); + } if (li < structure->size() && ri < right.structure->size()) { if ((*structure)[li].type->getFieldName() == (*right.structure)[ri].type->getFieldName()) { if (*(*structure)[li].type != *(*right.structure)[ri].type) @@ -2493,11 +2618,19 @@ public: } // If we get here, then there should only be inconsistently declared members left } else if (li < structure->size()) { - if (!(*structure)[li].type->hiddenMember() && !isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName())) + if (!(*structure)[li].type->hiddenMember() && !isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName())) { + if (lpidx != nullptr) { + *rpidx = -1; + } return false; + } } else { - if (!(*right.structure)[ri].type->hiddenMember() && !isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName())) + if (!(*right.structure)[ri].type->hiddenMember() && !isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName())) { + if (lpidx != nullptr) { + *lpidx = -1; + } return false; + } } } @@ -2521,10 +2654,15 @@ public: return *referentType == *right.referentType; } - // See if two types match, in all aspects except arrayness - bool sameElementType(const TType& right) const + // See if two types match, in all aspects except arrayness + // If mismatch in structure members, return member indices in lpidx and rpidx. + bool sameElementType(const TType& right, int* lpidx = nullptr, int* rpidx = nullptr) const { - return basicType == right.basicType && sameElementShape(right); + if (lpidx != nullptr) { + *lpidx = -1; + *rpidx = -1; + } + return basicType == right.basicType && sameElementShape(right, lpidx, rpidx); } // See if two type's arrayness match @@ -2558,15 +2696,20 @@ public: #endif // See if two type's elements match in all ways except basic type - bool sameElementShape(const TType& right) const + // If mismatch in structure members, return member indices in lpidx and rpidx. + bool sameElementShape(const TType& right, int* lpidx = nullptr, int* rpidx = nullptr) const { - return sampler == right.sampler && + if (lpidx != nullptr) { + *lpidx = -1; + *rpidx = -1; + } + return ((basicType != EbtSampler && right.basicType != EbtSampler) || sampler == right.sampler) && vectorSize == right.vectorSize && matrixCols == right.matrixCols && matrixRows == right.matrixRows && vector1 == right.vector1 && isCoopMat() == right.isCoopMat() && - sameStructType(right) && + sameStructType(right, lpidx, rpidx) && sameReferenceType(right); } diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index 4b32e2b8..a98a7e17 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -224,6 +224,10 @@ GLSLANG_EXPORT void glslang_finalize_process(); GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* input); GLSLANG_EXPORT void glslang_shader_delete(glslang_shader_t* shader); +GLSLANG_EXPORT void glslang_shader_shift_binding(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base); +GLSLANG_EXPORT void glslang_shader_shift_binding_for_set(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base, unsigned int set); +GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int options); // glslang_shader_options_t +GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, int version); GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input); GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input); GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader); @@ -234,6 +238,7 @@ GLSLANG_EXPORT glslang_program_t* glslang_program_create(); GLSLANG_EXPORT void glslang_program_delete(glslang_program_t* program); GLSLANG_EXPORT void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader); GLSLANG_EXPORT int glslang_program_link(glslang_program_t* program, int messages); // glslang_messages_t +GLSLANG_EXPORT int glslang_program_map_io(glslang_program_t* program); GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage); GLSLANG_EXPORT size_t glslang_program_SPIRV_get_size(glslang_program_t* program); GLSLANG_EXPORT void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int*); diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h index f100a9aa..dc9009f3 100644 --- a/glslang/Include/glslang_c_shader_types.h +++ b/glslang/Include/glslang_c_shader_types.h @@ -101,8 +101,9 @@ typedef enum { GLSLANG_TARGET_VULKAN_1_0 = (1 << 22), GLSLANG_TARGET_VULKAN_1_1 = (1 << 22) | (1 << 12), GLSLANG_TARGET_VULKAN_1_2 = (1 << 22) | (2 << 12), + GLSLANG_TARGET_VULKAN_1_3 = (1 << 22) | (3 << 12), GLSLANG_TARGET_OPENGL_450 = 450, - LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT = 4), + LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT = 5), } glslang_target_client_version_t; /* SH_TARGET_LanguageVersion counterpart */ @@ -113,13 +114,16 @@ typedef enum { GLSLANG_TARGET_SPV_1_3 = (1 << 16) | (3 << 8), GLSLANG_TARGET_SPV_1_4 = (1 << 16) | (4 << 8), GLSLANG_TARGET_SPV_1_5 = (1 << 16) | (5 << 8), - LAST_ELEMENT_MARKER(GLSLANG_TARGET_LANGUAGE_VERSION_COUNT = 6), + GLSLANG_TARGET_SPV_1_6 = (1 << 16) | (6 << 8), + LAST_ELEMENT_MARKER(GLSLANG_TARGET_LANGUAGE_VERSION_COUNT = 7), } glslang_target_language_version_t; /* EShExecutable counterpart */ typedef enum { GLSLANG_EX_VERTEX_FRAGMENT, GLSLANG_EX_FRAGMENT } glslang_executable_t; -/* EShOptimizationLevel counterpart */ +// EShOptimizationLevel counterpart +// This enum is not used in the current C interface, but could be added at a later date. +// GLSLANG_OPT_NONE is the current default. typedef enum { GLSLANG_OPT_NO_GENERATION, GLSLANG_OPT_NONE, @@ -153,6 +157,7 @@ typedef enum { GLSLANG_MSG_HLSL_LEGALIZATION_BIT = (1 << 12), GLSLANG_MSG_HLSL_DX9_COMPATIBLE_BIT = (1 << 13), GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT = (1 << 14), + GLSLANG_MSG_ENHANCED = (1 << 15), LAST_ELEMENT_MARKER(GLSLANG_MSG_COUNT), } glslang_messages_t; @@ -181,6 +186,26 @@ typedef enum { LAST_ELEMENT_MARKER(GLSLANG_PROFILE_COUNT), } glslang_profile_t; +/* Shader options */ +typedef enum { + GLSLANG_SHADER_DEFAULT_BIT = 0, + GLSLANG_SHADER_AUTO_MAP_BINDINGS = (1 << 0), + GLSLANG_SHADER_AUTO_MAP_LOCATIONS = (1 << 1), + GLSLANG_SHADER_VULKAN_RULES_RELAXED = (1 << 2), + LAST_ELEMENT_MARKER(GLSLANG_SHADER_COUNT), +} glslang_shader_options_t; + +/* TResourceType counterpart */ +typedef enum { + GLSLANG_RESOURCE_TYPE_SAMPLER, + GLSLANG_RESOURCE_TYPE_TEXTURE, + GLSLANG_RESOURCE_TYPE_IMAGE, + GLSLANG_RESOURCE_TYPE_UBO, + GLSLANG_RESOURCE_TYPE_SSBO, + GLSLANG_RESOURCE_TYPE_UAV, + LAST_ELEMENT_MARKER(GLSLANG_RESOURCE_TYPE_COUNT), +} glslang_resource_type_t; + #undef LAST_ELEMENT_MARKER #endif diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 595bd623..a64ed683 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1155,7 +1155,7 @@ public: virtual bool isIntegerDomain() const { return type.isIntegerDomain(); } bool isAtomic() const { return type.isAtomic(); } bool isReference() const { return type.isReference(); } - TString getCompleteString() const { return type.getCompleteString(); } + TString getCompleteString(bool enhanced = false) const { return type.getCompleteString(enhanced); } protected: TIntermTyped& operator=(const TIntermTyped&); diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp index 7f5d4c4f..5fc61dbb 100644 --- a/glslang/MachineIndependent/Constant.cpp +++ b/glslang/MachineIndependent/Constant.cpp @@ -46,35 +46,6 @@ namespace { using namespace glslang; -typedef union { - double d; - int i[2]; -} DoubleIntUnion; - -// Some helper functions - -bool isNan(double x) -{ - DoubleIntUnion u; - // tough to find a platform independent library function, do it directly - u.d = x; - int bitPatternL = u.i[0]; - int bitPatternH = u.i[1]; - return (bitPatternH & 0x7ff80000) == 0x7ff80000 && - ((bitPatternH & 0xFFFFF) != 0 || bitPatternL != 0); -} - -bool isInf(double x) -{ - DoubleIntUnion u; - // tough to find a platform independent library function, do it directly - u.d = x; - int bitPatternL = u.i[0]; - int bitPatternH = u.i[1]; - return (bitPatternH & 0x7ff00000) == 0x7ff00000 && - (bitPatternH & 0xFFFFF) == 0 && bitPatternL == 0; -} - const double pi = 3.1415926535897932384626433832795; } // end anonymous namespace @@ -663,12 +634,12 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EOpIsNan: { - newConstArray[i].setBConst(isNan(unionArray[i].getDConst())); + newConstArray[i].setBConst(IsNan(unionArray[i].getDConst())); break; } case EOpIsInf: { - newConstArray[i].setBConst(isInf(unionArray[i].getDConst())); + newConstArray[i].setBConst(IsInfinity(unionArray[i].getDConst())); break; } diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 728cd4a6..03fdce9f 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -316,6 +316,7 @@ const CustomFunction CustomFunctions[] = { { EOpTextureQuerySize, "textureSize", nullptr }, { EOpTextureQueryLod, "textureQueryLod", nullptr }, + { EOpTextureQueryLod, "textureQueryLOD", nullptr }, // extension GL_ARB_texture_query_lod { EOpTextureQueryLevels, "textureQueryLevels", nullptr }, { EOpTextureQuerySamples, "textureSamples", nullptr }, { EOpTexture, "texture", nullptr }, @@ -4269,7 +4270,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV // //============================================================================ - if (profile != EEsProfile && version >= 400) { + if (profile != EEsProfile && (version >= 400 || version == 150)) { stageBuiltins[EShLangGeometry].append( "void EmitStreamVertex(int);" "void EndStreamPrimitive(int);" @@ -4553,11 +4554,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } - // GL_ARB_shader_clock + // GL_ARB_shader_clock& GL_EXT_shader_realtime_clock if (profile != EEsProfile && version >= 450) { commonBuiltins.append( "uvec2 clock2x32ARB();" "uint64_t clockARB();" + "uvec2 clockRealtime2x32EXT();" + "uint64_t clockRealtimeEXT();" "\n"); } @@ -6245,38 +6248,44 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, const TString& typeName, int // // textureQueryLod(), fragment stage only // Also enabled with extension GL_ARB_texture_query_lod + // Extension GL_ARB_texture_query_lod says that textureQueryLOD() also exist at extension. if (profile != EEsProfile && version >= 150 && sampler.isCombined() && sampler.dim != EsdRect && ! sampler.isMultiSample() && ! sampler.isBuffer()) { - for (int f16TexAddr = 0; f16TexAddr < 2; ++f16TexAddr) { - if (f16TexAddr && sampler.type != EbtFloat16) - continue; - stageBuiltins[EShLangFragment].append("vec2 textureQueryLod("); - stageBuiltins[EShLangFragment].append(typeName); + + const TString funcName[2] = {"vec2 textureQueryLod(", "vec2 textureQueryLOD("}; + + for (int i = 0; i < 2; ++i){ + for (int f16TexAddr = 0; f16TexAddr < 2; ++f16TexAddr) { + if (f16TexAddr && sampler.type != EbtFloat16) + continue; + stageBuiltins[EShLangFragment].append(funcName[i]); + stageBuiltins[EShLangFragment].append(typeName); + if (dimMap[sampler.dim] == 1) + if (f16TexAddr) + stageBuiltins[EShLangFragment].append(", float16_t"); + else + stageBuiltins[EShLangFragment].append(", float"); + else { + if (f16TexAddr) + stageBuiltins[EShLangFragment].append(", f16vec"); + else + stageBuiltins[EShLangFragment].append(", vec"); + stageBuiltins[EShLangFragment].append(postfixes[dimMap[sampler.dim]]); + } + stageBuiltins[EShLangFragment].append(");\n"); + } + + stageBuiltins[EShLangCompute].append(funcName[i]); + stageBuiltins[EShLangCompute].append(typeName); if (dimMap[sampler.dim] == 1) - if (f16TexAddr) - stageBuiltins[EShLangFragment].append(", float16_t"); - else - stageBuiltins[EShLangFragment].append(", float"); + stageBuiltins[EShLangCompute].append(", float"); else { - if (f16TexAddr) - stageBuiltins[EShLangFragment].append(", f16vec"); - else - stageBuiltins[EShLangFragment].append(", vec"); - stageBuiltins[EShLangFragment].append(postfixes[dimMap[sampler.dim]]); + stageBuiltins[EShLangCompute].append(", vec"); + stageBuiltins[EShLangCompute].append(postfixes[dimMap[sampler.dim]]); } - stageBuiltins[EShLangFragment].append(");\n"); + stageBuiltins[EShLangCompute].append(");\n"); } - - stageBuiltins[EShLangCompute].append("vec2 textureQueryLod("); - stageBuiltins[EShLangCompute].append(typeName); - if (dimMap[sampler.dim] == 1) - stageBuiltins[EShLangCompute].append(", float"); - else { - stageBuiltins[EShLangCompute].append(", vec"); - stageBuiltins[EShLangCompute].append(postfixes[dimMap[sampler.dim]]); - } - stageBuiltins[EShLangCompute].append(");\n"); } // @@ -8061,7 +8070,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion } if (profile != EEsProfile && version < 400) { - symbolTable.setFunctionExtensions("textureQueryLod", 1, &E_GL_ARB_texture_query_lod); + symbolTable.setFunctionExtensions("textureQueryLOD", 1, &E_GL_ARB_texture_query_lod); } if (profile != EEsProfile && version >= 460) { @@ -8324,6 +8333,9 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("clockARB", 1, &E_GL_ARB_shader_clock); symbolTable.setFunctionExtensions("clock2x32ARB", 1, &E_GL_ARB_shader_clock); + symbolTable.setFunctionExtensions("clockRealtimeEXT", 1, &E_GL_EXT_shader_realtime_clock); + symbolTable.setFunctionExtensions("clockRealtime2x32EXT", 1, &E_GL_EXT_shader_realtime_clock); + if (profile == EEsProfile && version < 320) { symbolTable.setVariableExtensions("gl_PrimitiveID", Num_AEP_geometry_shader, AEP_geometry_shader); symbolTable.setVariableExtensions("gl_Layer", Num_AEP_geometry_shader, AEP_geometry_shader); @@ -8341,10 +8353,11 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion } if (profile != EEsProfile && version < 330 ) { - symbolTable.setFunctionExtensions("floatBitsToInt", 1, &E_GL_ARB_shader_bit_encoding); - symbolTable.setFunctionExtensions("floatBitsToUint", 1, &E_GL_ARB_shader_bit_encoding); - symbolTable.setFunctionExtensions("intBitsToFloat", 1, &E_GL_ARB_shader_bit_encoding); - symbolTable.setFunctionExtensions("uintBitsToFloat", 1, &E_GL_ARB_shader_bit_encoding); + const char* bitsConvertExt[2] = {E_GL_ARB_shader_bit_encoding, E_GL_ARB_gpu_shader5}; + symbolTable.setFunctionExtensions("floatBitsToInt", 2, bitsConvertExt); + symbolTable.setFunctionExtensions("floatBitsToUint", 2, bitsConvertExt); + symbolTable.setFunctionExtensions("intBitsToFloat", 2, bitsConvertExt); + symbolTable.setFunctionExtensions("uintBitsToFloat", 2, bitsConvertExt); } if (profile != EEsProfile && version < 430 ) { diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 1283f449..14fd053a 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -2766,7 +2766,7 @@ void TIntermBranch::updatePrecision(TPrecisionQualifier parentPrecision) return; if (exp->getBasicType() == EbtInt || exp->getBasicType() == EbtUint || - exp->getBasicType() == EbtFloat || exp->getBasicType() == EbtFloat16) { + exp->getBasicType() == EbtFloat) { if (parentPrecision != EpqNone && exp->getQualifier().precision == EpqNone) { exp->propagatePrecision(parentPrecision); } @@ -3284,7 +3284,7 @@ bool TIntermediate::promoteUnary(TIntermUnary& node) void TIntermUnary::updatePrecision() { if (getBasicType() == EbtInt || getBasicType() == EbtUint || - getBasicType() == EbtFloat || getBasicType() == EbtFloat16) { + getBasicType() == EbtFloat) { if (operand->getQualifier().precision > getQualifier().precision) getQualifier().precision = operand->getQualifier().precision; } @@ -3785,7 +3785,7 @@ bool TIntermediate::promoteAggregate(TIntermAggregate& node) void TIntermAggregate::updatePrecision() { if (getBasicType() == EbtInt || getBasicType() == EbtUint || - getBasicType() == EbtFloat || getBasicType() == EbtFloat16) { + getBasicType() == EbtFloat) { TPrecisionQualifier maxPrecision = EpqNone; TIntermSequence operands = getSequence(); for (unsigned int i = 0; i < operands.size(); ++i) { @@ -3807,7 +3807,7 @@ void TIntermAggregate::updatePrecision() void TIntermBinary::updatePrecision() { if (getBasicType() == EbtInt || getBasicType() == EbtUint || - getBasicType() == EbtFloat || getBasicType() == EbtFloat16) { + getBasicType() == EbtFloat) { if (op == EOpRightShift || op == EOpLeftShift) { // For shifts get precision from left side only and thus no need to propagate getQualifier().precision = left->getQualifier().precision; @@ -3902,7 +3902,7 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC case EbtFloat16: PROMOTE(setDConst, double, Get); break; \ case EbtFloat: PROMOTE(setDConst, double, Get); break; \ case EbtDouble: PROMOTE(setDConst, double, Get); break; \ - case EbtInt8: PROMOTE(setI8Const, char, Get); break; \ + case EbtInt8: PROMOTE(setI8Const, signed char, Get); break; \ case EbtInt16: PROMOTE(setI16Const, short, Get); break; \ case EbtInt: PROMOTE(setIConst, int, Get); break; \ case EbtInt64: PROMOTE(setI64Const, long long, Get); break; \ diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index 1da50d62..616580f9 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -74,6 +74,9 @@ void C_DECL TParseContextBase::error(const TSourceLoc& loc, const char* szReason { if (messages & EShMsgOnlyPreprocessor) return; + // If enhanced msg readability, only print one error + if (messages & EShMsgEnhanced && numErrors > 0) + return; va_list args; va_start(args, szExtraInfoFormat); outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 7f2f171b..496a9a13 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -902,8 +902,10 @@ TIntermTyped* TParseContext::handleBinaryMath(const TSourceLoc& loc, const char* result = intermediate.addBinaryMath(op, left, right, loc); } - if (result == nullptr) - binaryOpError(loc, str, left->getCompleteString(), right->getCompleteString()); + if (result == nullptr) { + bool enhanced = intermediate.getEnhancedMsgs(); + binaryOpError(loc, str, left->getCompleteString(enhanced), right->getCompleteString(enhanced)); + } return result; } @@ -926,8 +928,10 @@ TIntermTyped* TParseContext::handleUnaryMath(const TSourceLoc& loc, const char* if (result) return result; - else - unaryOpError(loc, str, childNode->getCompleteString()); + else { + bool enhanced = intermediate.getEnhancedMsgs(); + unaryOpError(loc, str, childNode->getCompleteString(enhanced)); + } return childNode; } @@ -953,8 +957,8 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm requireProfile(loc, ~EEsProfile, feature); profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, feature); } else if (!base->getType().isCoopMat()) { - error(loc, "does not operate on this type:", field.c_str(), base->getType().getCompleteString().c_str()); - + bool enhanced = intermediate.getEnhancedMsgs(); + error(loc, "does not operate on this type:", field.c_str(), base->getType().getCompleteString(enhanced).c_str()); return base; } @@ -1005,10 +1009,16 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm intermediate.addIoAccessed(field); } inheritMemoryQualifiers(base->getQualifier(), result->getWritableType().getQualifier()); - } else - error(loc, "no such field in structure", field.c_str(), ""); + } else { + auto baseSymbol = base; + while (baseSymbol->getAsSymbolNode() == nullptr) + baseSymbol = baseSymbol->getAsBinaryNode()->getLeft(); + TString structName; + structName.append("\'").append(baseSymbol->getAsSymbolNode()->getName().c_str()).append( "\'"); + error(loc, "no such field in structure", field.c_str(), structName.c_str()); + } } else - error(loc, "does not apply to this type:", field.c_str(), base->getType().getCompleteString().c_str()); + error(loc, "does not apply to this type:", field.c_str(), base->getType().getCompleteString(intermediate.getEnhancedMsgs()).c_str()); // Propagate noContraction up the dereference chain if (base->getQualifier().isNoContraction()) @@ -1314,14 +1324,14 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction // result = addConstructor(loc, arguments, type); if (result == nullptr) - error(loc, "cannot construct with these arguments", type.getCompleteString().c_str(), ""); + error(loc, "cannot construct with these arguments", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str(), ""); } } else { // // Find it in the symbol table. // const TFunction* fnCandidate; - bool builtIn; + bool builtIn {false}; fnCandidate = findFunction(loc, *function, builtIn); if (fnCandidate) { // This is a declared function that might map to @@ -1494,7 +1504,7 @@ TIntermTyped* TParseContext::handleBuiltInFunctionCall(TSourceLoc loc, TIntermNo else error(arguments->getLoc(), " wrong operand type", "Internal Error", "built in unary operator function. Type: %s", - static_cast<TIntermTyped*>(arguments)->getCompleteString().c_str()); + static_cast<TIntermTyped*>(arguments)->getCompleteString(intermediate.getEnhancedMsgs()).c_str()); } else if (result->getAsOperator()) builtInOpCheck(loc, function, *result->getAsOperator()); @@ -2495,6 +2505,8 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan case EOpEmitStreamVertex: case EOpEndStreamPrimitive: + if (version == 150) + requireExtensions(loc, 1, &E_GL_ARB_gpu_shader5, "if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5"); intermediate.setMultiStream(); break; @@ -2597,23 +2609,24 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan // Check that if extended types are being used that the correct extensions are enabled. if (arg0 != nullptr) { const TType& type = arg0->getType(); + bool enhanced = intermediate.getEnhancedMsgs(); switch (type.getBasicType()) { default: break; case EbtInt8: case EbtUint8: - requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int8, type.getCompleteString().c_str()); + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int8, type.getCompleteString(enhanced).c_str()); break; case EbtInt16: case EbtUint16: - requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int16, type.getCompleteString().c_str()); + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int16, type.getCompleteString(enhanced).c_str()); break; case EbtInt64: case EbtUint64: - requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int64, type.getCompleteString().c_str()); + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int64, type.getCompleteString(enhanced).c_str()); break; case EbtFloat16: - requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_float16, type.getCompleteString().c_str()); + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_float16, type.getCompleteString(enhanced).c_str()); break; } } @@ -2786,7 +2799,10 @@ TFunction* TParseContext::handleConstructorCall(const TSourceLoc& loc, const TPu TOperator op = intermediate.mapTypeToConstructorOp(type); if (op == EOpNull) { - error(loc, "cannot construct this type", type.getBasicString(), ""); + if (intermediate.getEnhancedMsgs() && type.getBasicType() == EbtSampler) + error(loc, "function not supported in this version; use texture() instead", "texture*D*", ""); + else + error(loc, "cannot construct this type", type.getBasicString(), ""); op = EOpConstructFloat; TType errorType(EbtFloat); type.shallowCopy(errorType); @@ -3196,6 +3212,12 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T break; } + TString constructorString; + if (intermediate.getEnhancedMsgs()) + constructorString.append(type.getCompleteString(true, false, false, true)).append(" constructor"); + else + constructorString.append("constructor"); + // See if it's a matrix bool constructingMatrix = false; switch (op) { @@ -3253,7 +3275,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T if (function[arg].type->isArray()) { if (function[arg].type->isUnsizedArray()) { // Can't construct from an unsized array. - error(loc, "array argument must be sized", "constructor", ""); + error(loc, "array argument must be sized", constructorString.c_str(), ""); return true; } arrayArg = true; @@ -3283,13 +3305,13 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T intArgument = true; if (type.isStruct()) { if (function[arg].type->contains16BitFloat()) { - requireFloat16Arithmetic(loc, "constructor", "can't construct structure containing 16-bit type"); + requireFloat16Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 16-bit type"); } if (function[arg].type->contains16BitInt()) { - requireInt16Arithmetic(loc, "constructor", "can't construct structure containing 16-bit type"); + requireInt16Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 16-bit type"); } if (function[arg].type->contains8BitInt()) { - requireInt8Arithmetic(loc, "constructor", "can't construct structure containing 8-bit type"); + requireInt8Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 8-bit type"); } } } @@ -3303,9 +3325,9 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructF16Vec3: case EOpConstructF16Vec4: if (type.isArray()) - requireFloat16Arithmetic(loc, "constructor", "16-bit arrays not supported"); + requireFloat16Arithmetic(loc, constructorString.c_str(), "16-bit arrays not supported"); if (type.isVector() && function.getParamCount() != 1) - requireFloat16Arithmetic(loc, "constructor", "16-bit vectors only take vector types"); + requireFloat16Arithmetic(loc, constructorString.c_str(), "16-bit vectors only take vector types"); break; case EOpConstructUint16: case EOpConstructU16Vec2: @@ -3316,9 +3338,9 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructI16Vec3: case EOpConstructI16Vec4: if (type.isArray()) - requireInt16Arithmetic(loc, "constructor", "16-bit arrays not supported"); + requireInt16Arithmetic(loc, constructorString.c_str(), "16-bit arrays not supported"); if (type.isVector() && function.getParamCount() != 1) - requireInt16Arithmetic(loc, "constructor", "16-bit vectors only take vector types"); + requireInt16Arithmetic(loc, constructorString.c_str(), "16-bit vectors only take vector types"); break; case EOpConstructUint8: case EOpConstructU8Vec2: @@ -3329,9 +3351,9 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructI8Vec3: case EOpConstructI8Vec4: if (type.isArray()) - requireInt8Arithmetic(loc, "constructor", "8-bit arrays not supported"); + requireInt8Arithmetic(loc, constructorString.c_str(), "8-bit arrays not supported"); if (type.isVector() && function.getParamCount() != 1) - requireInt8Arithmetic(loc, "constructor", "8-bit vectors only take vector types"); + requireInt8Arithmetic(loc, constructorString.c_str(), "8-bit vectors only take vector types"); break; default: break; @@ -3413,7 +3435,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T if (type.isArray()) { if (function.getParamCount() == 0) { - error(loc, "array constructor must have at least one argument", "constructor", ""); + error(loc, "array constructor must have at least one argument", constructorString.c_str(), ""); return true; } @@ -3421,7 +3443,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // auto adapt the constructor type to the number of arguments type.changeOuterArraySize(function.getParamCount()); } else if (type.getOuterArraySize() != function.getParamCount()) { - error(loc, "array constructor needs one argument per array element", "constructor", ""); + error(loc, "array constructor needs one argument per array element", constructorString.c_str(), ""); return true; } @@ -3434,7 +3456,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // At least the dimensionalities have to match. if (! function[0].type->isArray() || arraySizes.getNumDims() != function[0].type->getArraySizes()->getNumDims() + 1) { - error(loc, "array constructor argument not correct type to construct array element", "constructor", ""); + error(loc, "array constructor argument not correct type to construct array element", constructorString.c_str(), ""); return true; } @@ -3451,7 +3473,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T } if (arrayArg && op != EOpConstructStruct && ! type.isArrayOfArrays()) { - error(loc, "constructing non-array constituent from array argument", "constructor", ""); + error(loc, "constructing non-array constituent from array argument", constructorString.c_str(), ""); return true; } @@ -3461,51 +3483,51 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // "If a matrix argument is given to a matrix constructor, // it is a compile-time error to have any other arguments." if (function.getParamCount() != 1) - error(loc, "matrix constructed from matrix can only have one argument", "constructor", ""); + error(loc, "matrix constructed from matrix can only have one argument", constructorString.c_str(), ""); return false; } if (overFull) { - error(loc, "too many arguments", "constructor", ""); + error(loc, "too many arguments", constructorString.c_str(), ""); return true; } if (op == EOpConstructStruct && ! type.isArray() && (int)type.getStruct()->size() != function.getParamCount()) { - error(loc, "Number of constructor parameters does not match the number of structure fields", "constructor", ""); + error(loc, "Number of constructor parameters does not match the number of structure fields", constructorString.c_str(), ""); return true; } if ((op != EOpConstructStruct && size != 1 && size < type.computeNumComponents()) || (op == EOpConstructStruct && size < type.computeNumComponents())) { - error(loc, "not enough data provided for construction", "constructor", ""); + error(loc, "not enough data provided for construction", constructorString.c_str(), ""); return true; } if (type.isCoopMat() && function.getParamCount() != 1) { - error(loc, "wrong number of arguments", "constructor", ""); + error(loc, "wrong number of arguments", constructorString.c_str(), ""); return true; } if (type.isCoopMat() && !(function[0].type->isScalar() || function[0].type->isCoopMat())) { - error(loc, "Cooperative matrix constructor argument must be scalar or cooperative matrix", "constructor", ""); + error(loc, "Cooperative matrix constructor argument must be scalar or cooperative matrix", constructorString.c_str(), ""); return true; } TIntermTyped* typed = node->getAsTyped(); if (typed == nullptr) { - error(loc, "constructor argument does not have a type", "constructor", ""); + error(loc, "constructor argument does not have a type", constructorString.c_str(), ""); return true; } if (op != EOpConstructStruct && op != EOpConstructNonuniform && typed->getBasicType() == EbtSampler) { - error(loc, "cannot convert a sampler", "constructor", ""); + error(loc, "cannot convert a sampler", constructorString.c_str(), ""); return true; } if (op != EOpConstructStruct && typed->isAtomic()) { - error(loc, "cannot convert an atomic_uint", "constructor", ""); + error(loc, "cannot convert an atomic_uint", constructorString.c_str(), ""); return true; } if (typed->getBasicType() == EbtVoid) { - error(loc, "cannot convert a void", "constructor", ""); + error(loc, "cannot convert a void", constructorString.c_str(), ""); return true; } @@ -4589,7 +4611,7 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS if (ssoPre150 || (identifier == "gl_FragDepth" && ((nonEsRedecls && version >= 420) || esRedecls)) || - (identifier == "gl_FragCoord" && ((nonEsRedecls && version >= 150) || esRedecls)) || + (identifier == "gl_FragCoord" && ((nonEsRedecls && version >= 140) || esRedecls)) || identifier == "gl_ClipDistance" || identifier == "gl_CullDistance" || identifier == "gl_ShadingRateEXT" || @@ -4658,7 +4680,7 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS symbolQualifier.storage != qualifier.storage) error(loc, "cannot change qualification of", "redeclaration", symbol->getName().c_str()); } else if (identifier == "gl_FragCoord") { - if (intermediate.inIoAccessed("gl_FragCoord")) + if (!intermediate.getTexCoordRedeclared() && intermediate.inIoAccessed("gl_FragCoord")) error(loc, "cannot redeclare after use", "gl_FragCoord", ""); if (qualifier.nopersp != symbolQualifier.nopersp || qualifier.flat != symbolQualifier.flat || qualifier.isMemory() || qualifier.isAuxiliary()) @@ -4668,6 +4690,9 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS if (! builtIn && (publicType.pixelCenterInteger != intermediate.getPixelCenterInteger() || publicType.originUpperLeft != intermediate.getOriginUpperLeft())) error(loc, "cannot redeclare with different qualification:", "redeclaration", symbol->getName().c_str()); + + + intermediate.setTexCoordRedeclared(); if (publicType.pixelCenterInteger) intermediate.setPixelCenterInteger(); if (publicType.originUpperLeft) @@ -5499,12 +5524,19 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } if (language == EShLangFragment) { if (id == "origin_upper_left") { - requireProfile(loc, ECoreProfile | ECompatibilityProfile, "origin_upper_left"); + requireProfile(loc, ECoreProfile | ECompatibilityProfile | ENoProfile, "origin_upper_left"); + if (profile == ENoProfile) { + profileRequires(loc,ECoreProfile | ECompatibilityProfile, 140, E_GL_ARB_fragment_coord_conventions, "origin_upper_left"); + } + publicType.shaderQualifiers.originUpperLeft = true; return; } if (id == "pixel_center_integer") { - requireProfile(loc, ECoreProfile | ECompatibilityProfile, "pixel_center_integer"); + requireProfile(loc, ECoreProfile | ECompatibilityProfile | ENoProfile, "pixel_center_integer"); + if (profile == ENoProfile) { + profileRequires(loc,ECoreProfile | ECompatibilityProfile, 140, E_GL_ARB_fragment_coord_conventions, "pixel_center_integer"); + } publicType.shaderQualifiers.pixelCenterInteger = true; return; } @@ -6210,11 +6242,13 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) #ifndef GLSLANG_WEB if (qualifier.hasXfbOffset() && qualifier.hasXfbBuffer()) { - int repeated = intermediate.addXfbBufferOffset(type); - if (repeated >= 0) - error(loc, "overlapping offsets at", "xfb_offset", "offset %d in buffer %d", repeated, qualifier.layoutXfbBuffer); - if (type.isUnsizedArray()) + if (type.isUnsizedArray()) { error(loc, "unsized array", "xfb_offset", "in buffer %d", qualifier.layoutXfbBuffer); + } else { + int repeated = intermediate.addXfbBufferOffset(type); + if (repeated >= 0) + error(loc, "overlapping offsets at", "xfb_offset", "offset %d in buffer %d", repeated, qualifier.layoutXfbBuffer); + } // "The offset must be a multiple of the size of the first component of the first // qualified variable or block member, or a compile-time error results. Further, if applied to an aggregate @@ -6334,8 +6368,12 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) profileRequires(loc, ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shader_image_load_formatted, explanation); } - if (qualifier.isPushConstant() && type.getBasicType() != EbtBlock) - error(loc, "can only be used with a block", "push_constant", ""); + if (qualifier.isPushConstant()) { + if (type.getBasicType() != EbtBlock) + error(loc, "can only be used with a block", "push_constant", ""); + if (type.isArray()) + error(loc, "Push constants blocks can't be an array", "push_constant", ""); + } if (qualifier.hasBufferReference() && type.getBasicType() != EbtBlock) error(loc, "can only be used with a block", "buffer_reference", ""); @@ -6652,8 +6690,10 @@ const TFunction* TParseContext::findFunction(const TSourceLoc& loc, const TFunct : findFunctionExact(loc, call, builtIn)); else if (version < 120) function = findFunctionExact(loc, call, builtIn); - else if (version < 400) - function = extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) ? findFunction400(loc, call, builtIn) : findFunction120(loc, call, builtIn); + else if (version < 400) { + bool needfindFunction400 = extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) || extensionTurnedOn(E_GL_ARB_gpu_shader5); + function = needfindFunction400 ? findFunction400(loc, call, builtIn) : findFunction120(loc, call, builtIn); + } else if (explicitTypesEnabled) function = findFunctionExplicitTypes(loc, call, builtIn); else @@ -7424,14 +7464,14 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp // Uniforms require a compile-time constant initializer if (qualifier == EvqUniform && ! initializer->getType().getQualifier().isFrontEndConstant()) { error(loc, "uniform initializers must be constant", "=", "'%s'", - variable->getType().getCompleteString().c_str()); + variable->getType().getCompleteString(intermediate.getEnhancedMsgs()).c_str()); variable->getWritableType().getQualifier().makeTemporary(); return nullptr; } // Global consts require a constant initializer (specialization constant is okay) if (qualifier == EvqConst && symbolTable.atGlobalLevel() && ! initializer->getType().getQualifier().isConstant()) { error(loc, "global const initializers must be constant", "=", "'%s'", - variable->getType().getCompleteString().c_str()); + variable->getType().getCompleteString(intermediate.getEnhancedMsgs()).c_str()); variable->getWritableType().getQualifier().makeTemporary(); return nullptr; } @@ -7494,7 +7534,7 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp TIntermSymbol* intermSymbol = intermediate.addSymbol(*variable, loc); TIntermTyped* initNode = intermediate.addAssign(EOpAssign, intermSymbol, initializer, loc); if (! initNode) - assignError(loc, "=", intermSymbol->getCompleteString(), initializer->getCompleteString()); + assignError(loc, "=", intermSymbol->getCompleteString(intermediate.getEnhancedMsgs()), initializer->getCompleteString(intermediate.getEnhancedMsgs())); return initNode; } @@ -7565,7 +7605,7 @@ TIntermTyped* TParseContext::convertInitializerList(const TSourceLoc& loc, const } } else if (type.isMatrix()) { if (type.getMatrixCols() != (int)initList->getSequence().size()) { - error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString().c_str()); + error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str()); return nullptr; } TType vectorType(type, 0); // dereferenced type @@ -7576,20 +7616,20 @@ TIntermTyped* TParseContext::convertInitializerList(const TSourceLoc& loc, const } } else if (type.isVector()) { if (type.getVectorSize() != (int)initList->getSequence().size()) { - error(loc, "wrong vector size (or rows in a matrix column):", "initializer list", type.getCompleteString().c_str()); + error(loc, "wrong vector size (or rows in a matrix column):", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str()); return nullptr; } TBasicType destType = type.getBasicType(); for (int i = 0; i < type.getVectorSize(); ++i) { TBasicType initType = initList->getSequence()[i]->getAsTyped()->getBasicType(); if (destType != initType && !intermediate.canImplicitlyPromote(initType, destType)) { - error(loc, "type mismatch in initializer list", "initializer list", type.getCompleteString().c_str()); + error(loc, "type mismatch in initializer list", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str()); return nullptr; } } } else { - error(loc, "unexpected initializer-list type:", "initializer list", type.getCompleteString().c_str()); + error(loc, "unexpected initializer-list type:", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str()); return nullptr; } @@ -8097,8 +8137,9 @@ TIntermTyped* TParseContext::constructAggregate(TIntermNode* node, const TType& { TIntermTyped* converted = intermediate.addConversion(EOpConstructStruct, type, node->getAsTyped()); if (! converted || converted->getType() != type) { + bool enhanced = intermediate.getEnhancedMsgs(); error(loc, "", "constructor", "cannot convert parameter %d from '%s' to '%s'", paramCount, - node->getAsTyped()->getType().getCompleteString().c_str(), type.getCompleteString().c_str()); + node->getAsTyped()->getType().getCompleteString(enhanced).c_str(), type.getCompleteString(enhanced).c_str()); return nullptr; } diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index a2dd71cf..a5ba40e6 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -813,6 +813,7 @@ bool ProcessDeferred( // set version/profile to defaultVersion/defaultProfile regardless of the #version // directive in the source code bool forceDefaultVersionAndProfile, + int overrideVersion, // overrides version specified by #verison or default version bool forwardCompatible, // give errors for use of deprecated features EShMessages messages, // warnings/errors/AST; things to print out TIntermediate& intermediate, // returned tree, etc. @@ -900,6 +901,9 @@ bool ProcessDeferred( version = defaultVersion; profile = defaultProfile; } + if (source == EShSourceGlsl && overrideVersion != 0) { + version = overrideVersion; + } bool goodVersion = DeduceVersionProfile(compiler->infoSink, stage, versionNotFirst, defaultVersion, source, version, profile, spvVersion); @@ -1275,6 +1279,7 @@ bool PreprocessDeferred( int defaultVersion, // use 100 for ES environment, 110 for desktop EProfile defaultProfile, bool forceDefaultVersionAndProfile, + int overrideVersion, // use 0 if not overriding GLSL version bool forwardCompatible, // give errors for use of deprecated features EShMessages messages, // warnings/errors/AST; things to print out TShader::Includer& includer, @@ -1285,7 +1290,7 @@ bool PreprocessDeferred( DoPreprocessing parser(outputString); return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames, preamble, optLevel, resources, defaultVersion, - defaultProfile, forceDefaultVersionAndProfile, + defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, intermediate, parser, false, includer, "", environment); } @@ -1314,6 +1319,7 @@ bool CompileDeferred( int defaultVersion, // use 100 for ES environment, 110 for desktop EProfile defaultProfile, bool forceDefaultVersionAndProfile, + int overrideVersion, // use 0 if not overriding GLSL version bool forwardCompatible, // give errors for use of deprecated features EShMessages messages, // warnings/errors/AST; things to print out TIntermediate& intermediate,// returned tree, etc. @@ -1324,7 +1330,7 @@ bool CompileDeferred( DoFullParse parser; return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames, preamble, optLevel, resources, defaultVersion, - defaultProfile, forceDefaultVersionAndProfile, + defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, intermediate, parser, true, includer, sourceEntryPointName, environment); } @@ -1498,7 +1504,7 @@ int ShCompile( TIntermediate intermediate(compiler->getLanguage()); TShader::ForbidIncluder includer; bool success = CompileDeferred(compiler, shaderStrings, numStrings, inputLengths, nullptr, - "", optLevel, resources, defaultVersion, ENoProfile, false, + "", optLevel, resources, defaultVersion, ENoProfile, false, 0, forwardCompatible, messages, intermediate, includer); // @@ -1759,7 +1765,7 @@ public: }; TShader::TShader(EShLanguage s) - : stage(s), lengths(nullptr), stringNames(nullptr), preamble("") + : stage(s), lengths(nullptr), stringNames(nullptr), preamble(""), overrideVersion(0) { pool = new TPoolAllocator; infoSink = new TInfoSink; @@ -1828,7 +1834,14 @@ void TShader::setUniqueId(unsigned long long id) intermediate->setUniqueId(id); } +void TShader::setOverrideVersion(int version) +{ + overrideVersion = version; +} + void TShader::setInvertY(bool invert) { intermediate->setInvertY(invert); } +void TShader::setDxPositionW(bool invert) { intermediate->setDxPositionW(invert); } +void TShader::setEnhancedMsgs() { intermediate->setEnhancedMsgs(); } void TShader::setNanMinMaxClamp(bool useNonNan) { intermediate->setNanMinMaxClamp(useNonNan); } #ifndef GLSLANG_WEB @@ -1908,7 +1921,7 @@ bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion return CompileDeferred(compiler, strings, numStrings, lengths, stringNames, preamble, EShOptNone, builtInResources, defaultVersion, - defaultProfile, forceDefaultVersionAndProfile, + defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, *intermediate, includer, sourceEntryPointName, &environment); } @@ -1935,7 +1948,7 @@ bool TShader::preprocess(const TBuiltInResource* builtInResources, return PreprocessDeferred(compiler, strings, numStrings, lengths, stringNames, preamble, EShOptNone, builtInResources, defaultVersion, - defaultProfile, forceDefaultVersionAndProfile, + defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, message, includer, *intermediate, output_string, &environment); } @@ -2048,6 +2061,8 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages) firstIntermediate->getVersion(), firstIntermediate->getProfile()); intermediate[stage]->setLimits(firstIntermediate->getLimits()); + if (firstIntermediate->getEnhancedMsgs()) + intermediate[stage]->setEnhancedMsgs(); // The new TIntermediate must use the same origin as the original TIntermediates. // Otherwise linking will fail due to different coordinate systems. diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index 5b7e27fa..a3ffa0c4 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -426,12 +426,7 @@ TSymbolTableLevel* TSymbolTableLevel::clone() const symTableLevel->thisLevel = thisLevel; symTableLevel->retargetedSymbols.clear(); for (auto &s : retargetedSymbols) { - // Extra constructions to make sure they use the correct allocator pool - TString newFrom; - newFrom = s.first; - TString newTo; - newTo = s.second; - symTableLevel->retargetedSymbols.push_back({std::move(newFrom), std::move(newTo)}); + symTableLevel->retargetedSymbols.push_back({s.first, s.second}); } std::vector<bool> containerCopied(anonId, false); tLevel::const_iterator iter; @@ -462,11 +457,7 @@ TSymbolTableLevel* TSymbolTableLevel::clone() const TSymbol* sym = symTableLevel->find(s.second); if (!sym) continue; - - // Need to declare and assign so newS is using the correct pool allocator - TString newS; - newS = s.first; - symTableLevel->insert(newS, sym); + symTableLevel->insert(s.first, sym); } return symTableLevel; diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index 720999a3..31312ecb 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -84,7 +84,7 @@ typedef TVector<const char*> TExtensionList; class TSymbol { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) - explicit TSymbol(const TString *n) : name(n), extensions(0), writable(true) { } + explicit TSymbol(const TString *n) : name(n), uniqueId(0), extensions(0), writable(true) { } virtual TSymbol* clone() const = 0; virtual ~TSymbol() { } // rely on all symbol owned memory coming from the pool diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 2fc0d9e0..8d96e0e1 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -226,6 +226,8 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_ARB_texture_query_lod] = EBhDisable; extensionBehavior[E_GL_ARB_vertex_attrib_64bit] = EBhDisable; extensionBehavior[E_GL_ARB_draw_instanced] = EBhDisable; + extensionBehavior[E_GL_ARB_fragment_coord_conventions] = EBhDisable; + extensionBehavior[E_GL_KHR_shader_subgroup_basic] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_vote] = EBhDisable; @@ -467,6 +469,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_ARB_texture_query_lod 1\n" "#define GL_ARB_vertex_attrib_64bit 1\n" "#define GL_ARB_draw_instanced 1\n" + "#define GL_ARB_fragment_coord_conventions 1\n" "#define GL_EXT_shader_non_constant_global_initializers 1\n" "#define GL_EXT_shader_image_load_formatted 1\n" "#define GL_EXT_post_depth_coverage 1\n" diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 2dbac0b4..96a6e1fc 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -162,6 +162,7 @@ const char* const E_GL_ARB_shading_language_packing = "GL_ARB_shading_langua const char* const E_GL_ARB_texture_query_lod = "GL_ARB_texture_query_lod"; const char* const E_GL_ARB_vertex_attrib_64bit = "GL_ARB_vertex_attrib_64bit"; const char* const E_GL_ARB_draw_instanced = "GL_ARB_draw_instanced"; +const char* const E_GL_ARB_fragment_coord_conventions = "GL_ARB_fragment_coord_conventions"; const char* const E_GL_KHR_shader_subgroup_basic = "GL_KHR_shader_subgroup_basic"; const char* const E_GL_KHR_shader_subgroup_vote = "GL_KHR_shader_subgroup_vote"; diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index d4cc5bc9..624add5a 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -798,7 +798,7 @@ conditional_expression parseContext.rValueErrorCheck($5.loc, ":", $6); $$ = parseContext.intermediate.addSelection($1, $4, $6, $2.loc); if ($$ == 0) { - parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(), $6->getCompleteString()); + parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $6->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $6; } } @@ -815,7 +815,7 @@ assignment_expression parseContext.rValueErrorCheck($2.loc, "assign", $3); $$ = parseContext.addAssign($2.loc, $2.op, $1, $3); if ($$ == 0) { - parseContext.assignError($2.loc, "assign", $1->getCompleteString(), $3->getCompleteString()); + parseContext.assignError($2.loc, "assign", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $1; } } @@ -877,7 +877,7 @@ expression parseContext.samplerConstructorLocationCheck($2.loc, ",", $3); $$ = parseContext.intermediate.addComma($1, $3, $2.loc); if ($$ == 0) { - parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(), $3->getCompleteString()); + parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $3; } } diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index df53eb5b..93c98995 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -798,7 +798,7 @@ conditional_expression parseContext.rValueErrorCheck($5.loc, ":", $6); $$ = parseContext.intermediate.addSelection($1, $4, $6, $2.loc); if ($$ == 0) { - parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(), $6->getCompleteString()); + parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $6->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $6; } } @@ -815,7 +815,7 @@ assignment_expression parseContext.rValueErrorCheck($2.loc, "assign", $3); $$ = parseContext.addAssign($2.loc, $2.op, $1, $3); if ($$ == 0) { - parseContext.assignError($2.loc, "assign", $1->getCompleteString(), $3->getCompleteString()); + parseContext.assignError($2.loc, "assign", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $1; } } @@ -877,7 +877,7 @@ expression parseContext.samplerConstructorLocationCheck($2.loc, ",", $3); $$ = parseContext.intermediate.addComma($1, $3, $2.loc); if ($$ == 0) { - parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(), $3->getCompleteString()); + parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $3; } } diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 5ba6a6d4..0b216b62 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -5878,7 +5878,7 @@ yyreduce: parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[-5].interm.intermTypedNode), (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-4].lex).loc); if ((yyval.interm.intermTypedNode) == 0) { - parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); + parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } @@ -5902,7 +5902,7 @@ yyreduce: parseContext.rValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.addAssign((yyvsp[-1].interm).loc, (yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) { - parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); + parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } @@ -6023,7 +6023,7 @@ yyreduce: parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); if ((yyval.interm.intermTypedNode) == 0) { - parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); + parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index a0fade16..d8a3aab5 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -48,37 +48,6 @@ #endif #include <cstdint> -namespace { - -bool IsInfinity(double x) { -#ifdef _MSC_VER - switch (_fpclass(x)) { - case _FPCLASS_NINF: - case _FPCLASS_PINF: - return true; - default: - return false; - } -#else - return std::isinf(x); -#endif -} - -bool IsNan(double x) { -#ifdef _MSC_VER - switch (_fpclass(x)) { - case _FPCLASS_SNAN: - case _FPCLASS_QNAN: - return true; - default: - return false; - } -#else - return std::isnan(x); -#endif -} - -} namespace glslang { diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index 19eabdf4..4250e92d 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -203,11 +203,7 @@ struct TResolverUniformAdaptor { inline void operator()(std::pair<const TString, TVarEntryInfo>& entKey) { TVarEntryInfo& ent = entKey.second; - ent.newLocation = -1; - ent.newComponent = -1; - ent.newBinding = -1; - ent.newSet = -1; - ent.newIndex = -1; + ent.clearNewAssignments(); const bool isValid = resolver.validateBinding(stage, ent); if (isValid) { resolver.resolveSet(ent.stage, ent); @@ -281,11 +277,7 @@ struct TResolverInOutAdaptor { inline void operator()(std::pair<const TString, TVarEntryInfo>& entKey) { TVarEntryInfo& ent = entKey.second; - ent.newLocation = -1; - ent.newComponent = -1; - ent.newBinding = -1; - ent.newSet = -1; - ent.newIndex = -1; + ent.clearNewAssignments(); const bool isValid = resolver.validateInOut(ent.stage, ent); if (isValid) { resolver.resolveInOutLocation(stage, ent); @@ -514,6 +506,24 @@ struct TSymbolValidater return; } else { + // Deal with input/output pairs where one is a block member but the other is loose, + // e.g. with ARB_separate_shader_objects + if (type1.getBasicType() == EbtBlock && + type1.isStruct() && !type2.isStruct()) { + // Iterate through block members tracking layout + glslang::TString name; + type1.getStruct()->begin()->type->appendMangledName(name); + if (name == mangleName2 + && type1.getQualifier().layoutLocation == type2.getQualifier().layoutLocation) return; + } + if (type2.getBasicType() == EbtBlock && + type2.isStruct() && !type1.isStruct()) { + // Iterate through block members tracking layout + glslang::TString name; + type2.getStruct()->begin()->type->appendMangledName(name); + if (name == mangleName1 + && type1.getQualifier().layoutLocation == type2.getQualifier().layoutLocation) return; + } TString err = "Invalid In/Out variable type : " + entKey.first; infoSink.info.message(EPrefixInternalError, err.c_str()); hadError = true; @@ -827,7 +837,7 @@ int TDefaultIoResolverBase::resolveUniformLocation(EShLanguage /*stage*/, TVarEn } // no locations added if already present, a built-in variable, a block, or an opaque if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getBasicType() == EbtBlock || - type.isAtomic() || (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) { + type.isAtomic() || type.isSpirvType() || (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) { return ent.newLocation = -1; } // no locations on blocks of built-in variables @@ -855,8 +865,8 @@ int TDefaultIoResolverBase::resolveInOutLocation(EShLanguage stage, TVarEntryInf return ent.newLocation = -1; } - // no locations added if already present, or a built-in variable - if (type.getQualifier().hasLocation() || type.isBuiltIn()) { + // no locations added if already present, a built-in variable, or a variable with SPIR-V decorate + if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getQualifier().hasSprivDecorate()) { return ent.newLocation = -1; } @@ -942,8 +952,8 @@ int TDefaultGlslIoResolver::resolveInOutLocation(EShLanguage stage, TVarEntryInf if (type.getQualifier().hasLocation()) { return ent.newLocation = type.getQualifier().layoutLocation; } - // no locations added if already present, or a built-in variable - if (type.isBuiltIn()) { + // no locations added if already present, a built-in variable, or a variable with SPIR-V decorate + if (type.isBuiltIn() || type.getQualifier().hasSprivDecorate()) { return ent.newLocation = -1; } // no locations on blocks of built-in variables @@ -1024,7 +1034,8 @@ int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEn } else { // no locations added if already present, a built-in variable, a block, or an opaque if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getBasicType() == EbtBlock || - type.isAtomic() || (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) { + type.isAtomic() || type.isSpirvType() || + (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) { return ent.newLocation = -1; } // no locations on blocks of built-in variables @@ -1651,6 +1662,10 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) { if (size <= int(autoPushConstantMaxSize)) { qualifier.setBlockStorage(EbsPushConstant); qualifier.layoutPacking = autoPushConstantBlockPacking; + // Push constants don't have set/binding etc. decorations, remove those. + qualifier.layoutSet = TQualifier::layoutSetEnd; + at->second.clearNewAssignments(); + upgraded = true; } } @@ -1658,10 +1673,14 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) { // If it's been upgraded to push_constant, then remove it from the uniformVector // so it doesn't get a set/binding assigned to it. if (upgraded) { - auto at = std::find_if(uniformVector.begin(), uniformVector.end(), - [this](const TVarLivePair& p) { return p.first == autoPushConstantBlockName; }); - if (at != uniformVector.end()) - uniformVector.erase(at); + while (1) { + auto at = std::find_if(uniformVector.begin(), uniformVector.end(), + [this](const TVarLivePair& p) { return p.first == autoPushConstantBlockName; }); + if (at != uniformVector.end()) + uniformVector.erase(at); + else + break; + } } } for (size_t stage = 0; stage < EShLangCount; stage++) { diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index c43864e3..ba7bc3bb 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -61,6 +61,15 @@ struct TVarEntryInfo { int newComponent; int newIndex; EShLanguage stage; + + void clearNewAssignments() { + newBinding = -1; + newSet = -1; + newLocation = -1; + newComponent = -1; + newIndex = -1; + } + struct TOrderById { inline bool operator()(const TVarEntryInfo& l, const TVarEntryInfo& r) { return l.id < r.id; } }; diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index b1adfc93..9b45570e 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -55,22 +55,28 @@ namespace glslang { // // Link-time error emitter. // -void TIntermediate::error(TInfoSink& infoSink, const char* message) +void TIntermediate::error(TInfoSink& infoSink, const char* message, EShLanguage unitStage) { #ifndef GLSLANG_WEB infoSink.info.prefix(EPrefixError); - infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; + if (unitStage < EShLangCount) + infoSink.info << "Linking " << StageName(getStage()) << " and " << StageName(unitStage) << " stages: " << message << "\n"; + else + infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; #endif ++numErrors; } // Link-time warning. -void TIntermediate::warn(TInfoSink& infoSink, const char* message) +void TIntermediate::warn(TInfoSink& infoSink, const char* message, EShLanguage unitStage) { #ifndef GLSLANG_WEB infoSink.info.prefix(EPrefixWarning); - infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; + if (unitStage < EShLangCount) + infoSink.info << "Linking " << StageName(language) << " and " << StageName(unitStage) << " stages: " << message << "\n"; + else + infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; #endif } @@ -312,6 +318,7 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) MERGE_TRUE(autoMapBindings); MERGE_TRUE(autoMapLocations); MERGE_TRUE(invertY); + MERGE_TRUE(dxPositionW); MERGE_TRUE(flattenUniformArrays); MERGE_TRUE(useUnknownFormat); MERGE_TRUE(hlslOffsets); @@ -579,9 +586,6 @@ void TIntermediate::mergeGlobalUniformBlocks(TInfoSink& infoSink, TIntermediate& } void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* block, TIntermSymbol* unitBlock, TIntermediate* unit) { - if (block->getType() == unitBlock->getType()) { - return; - } if (block->getType().getTypeName() != unitBlock->getType().getTypeName() || block->getType().getBasicType() != unitBlock->getType().getBasicType() || @@ -628,44 +632,42 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl } } - TType unitType; - unitType.shallowCopy(unitBlock->getType()); - // update symbol node in unit tree, // and other nodes that may reference it class TMergeBlockTraverser : public TIntermTraverser { public: - TMergeBlockTraverser(const glslang::TType &type, const glslang::TType& unitType, - glslang::TIntermediate& unit, - const std::map<unsigned int, unsigned int>& memberIdxUpdates) : - newType(type), unitType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates) - { } - virtual ~TMergeBlockTraverser() { } - - const glslang::TType& newType; // type with modifications - const glslang::TType& unitType; // copy of original type - glslang::TIntermediate& unit; // intermediate that is being updated - const std::map<unsigned int, unsigned int>& memberIndexUpdates; - - virtual void visitSymbol(TIntermSymbol* symbol) + TMergeBlockTraverser(const TIntermSymbol* newSym) + : newSymbol(newSym), unitType(nullptr), unit(nullptr), memberIndexUpdates(nullptr) + { + } + TMergeBlockTraverser(const TIntermSymbol* newSym, const glslang::TType* unitType, glslang::TIntermediate* unit, + const std::map<unsigned int, unsigned int>* memberIdxUpdates) + : newSymbol(newSym), unitType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates) { - glslang::TType& symType = symbol->getWritableType(); + } + virtual ~TMergeBlockTraverser() {} - if (symType == unitType) { - // each symbol node has a local copy of the unitType - // if merging involves changing properties that aren't shared objects - // they should be updated in all instances + const TIntermSymbol* newSymbol; + const glslang::TType* unitType; // copy of original type + glslang::TIntermediate* unit; // intermediate that is being updated + const std::map<unsigned int, unsigned int>* memberIndexUpdates; - // e.g. the struct list is a ptr to an object, so it can be updated - // once, outside the traverser - //*symType.getWritableStruct() = *newType.getStruct(); + virtual void visitSymbol(TIntermSymbol* symbol) + { + if (newSymbol->getAccessName() == symbol->getAccessName() && + newSymbol->getQualifier().getBlockStorage() == symbol->getQualifier().getBlockStorage()) { + // Each symbol node may have a local copy of the block structure. + // Update those structures to match the new one post-merge + *(symbol->getWritableType().getWritableStruct()) = *(newSymbol->getType().getStruct()); } - } virtual bool visitBinary(TVisit, glslang::TIntermBinary* node) { - if (node->getOp() == EOpIndexDirectStruct && node->getLeft()->getType() == unitType) { + if (!unit || !unitType || !memberIndexUpdates || memberIndexUpdates->empty()) + return true; + + if (node->getOp() == EOpIndexDirectStruct && node->getLeft()->getType() == *unitType) { // this is a dereference to a member of the block since the // member list changed, need to update this to point to the // right index @@ -673,8 +675,8 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl glslang::TIntermConstantUnion* constNode = node->getRight()->getAsConstantUnion(); unsigned int memberIdx = constNode->getConstArray()[0].getUConst(); - unsigned int newIdx = memberIndexUpdates.at(memberIdx); - TIntermTyped* newConstNode = unit.addConstantUnion(newIdx, node->getRight()->getLoc()); + unsigned int newIdx = memberIndexUpdates->at(memberIdx); + TIntermTyped* newConstNode = unit->addConstantUnion(newIdx, node->getRight()->getLoc()); node->setRight(newConstNode); delete constNode; @@ -683,10 +685,20 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl } return true; } - } finalLinkTraverser(block->getType(), unitType, *unit, memberIndexUpdates); + }; + + // 'this' may have symbols that are using the old block structure, so traverse the tree to update those + // in 'visitSymbol' + TMergeBlockTraverser finalLinkTraverser(block); + getTreeRoot()->traverse(&finalLinkTraverser); - // update the tree to use the new type - unit->getTreeRoot()->traverse(&finalLinkTraverser); + // The 'unit' intermediate needs the block structures update, but also structure entry indices + // may have changed from the old block to the new one that it was merged into, so update those + // in 'visitBinary' + TType unitType; + unitType.shallowCopy(unitBlock->getType()); + TMergeBlockTraverser unitFinalLinkTraverser(block, &unitType, unit, &memberIndexUpdates); + unit->getTreeRoot()->traverse(&unitFinalLinkTraverser); // update the member list (*unitMemberList) = (*memberList); @@ -759,7 +771,10 @@ void TIntermediate::mergeLinkerObjects(TInfoSink& infoSink, TIntermSequence& lin auto checkName = [this, unitSymbol, &infoSink](const TString& name) { for (unsigned int i = 0; i < unitSymbol->getType().getStruct()->size(); ++i) { - if (name == (*unitSymbol->getType().getStruct())[i].type->getFieldName()) { + if (name == (*unitSymbol->getType().getStruct())[i].type->getFieldName() + && !((*unitSymbol->getType().getStruct())[i].type->getQualifier().hasLocation() + || unitSymbol->getType().getQualifier().hasLocation()) + ) { error(infoSink, "Anonymous member name used for global variable or other anonymous member: "); infoSink.info << (*unitSymbol->getType().getStruct())[i].type->getCompleteString() << "\n"; } @@ -815,6 +830,10 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) bool crossStage = getStage() != unitStage; bool writeTypeComparison = false; + bool errorReported = false; + bool printQualifiers = false; + bool printPrecision = false; + bool printType = false; // Types have to match { @@ -846,11 +865,48 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy (symbol.getType().isUnsizedArray() || unitSymbol.getType().isUnsizedArray())); } - if (!symbol.getType().sameElementType(unitSymbol.getType()) || - !symbol.getType().sameTypeParameters(unitSymbol.getType()) || - !arraysMatch ) { + int lpidx = -1; + int rpidx = -1; + if (!symbol.getType().sameElementType(unitSymbol.getType(), &lpidx, &rpidx)) { + if (lpidx >= 0 && rpidx >= 0) { + error(infoSink, "Member names and types must match:", unitStage); + infoSink.info << " Block: " << symbol.getType().getTypeName() << "\n"; + infoSink.info << " " << StageName(getStage()) << " stage: \"" + << (*symbol.getType().getStruct())[lpidx].type->getCompleteString(true, false, false, true, + (*symbol.getType().getStruct())[lpidx].type->getFieldName()) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: \"" + << (*unitSymbol.getType().getStruct())[rpidx].type->getCompleteString(true, false, false, true, + (*unitSymbol.getType().getStruct())[rpidx].type->getFieldName()) << "\"\n"; + errorReported = true; + } else if (lpidx >= 0 && rpidx == -1) { + TString errmsg = StageName(getStage()); + errmsg.append(" block member has no corresponding member in ").append(StageName(unitStage)).append(" block:"); + error(infoSink, errmsg.c_str(), unitStage); + infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << ", Member: " + << (*symbol.getType().getStruct())[lpidx].type->getFieldName() << "\n"; + infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << ", Member: n/a \n"; + errorReported = true; + } else if (lpidx == -1 && rpidx >= 0) { + TString errmsg = StageName(unitStage); + errmsg.append(" block member has no corresponding member in ").append(StageName(getStage())).append(" block:"); + error(infoSink, errmsg.c_str(), unitStage); + infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << ", Member: " + << (*unitSymbol.getType().getStruct())[rpidx].type->getFieldName() << "\n"; + infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << ", Member: n/a \n"; + errorReported = true; + } else { + error(infoSink, "Types must match:", unitStage); + writeTypeComparison = true; + printType = true; + } + } else if (!arraysMatch) { + error(infoSink, "Array sizes must be compatible:", unitStage); writeTypeComparison = true; - error(infoSink, "Types must match:"); + printType = true; + } else if (!symbol.getType().sameTypeParameters(unitSymbol.getType())) { + error(infoSink, "Type parameters must match:", unitStage); + writeTypeComparison = true; + printType = true; } } @@ -871,13 +927,35 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy } const TQualifier& qualifier = (*symbol.getType().getStruct())[li].type->getQualifier(); const TQualifier & unitQualifier = (*unitSymbol.getType().getStruct())[ri].type->getQualifier(); - if (qualifier.layoutMatrix != unitQualifier.layoutMatrix || - qualifier.layoutOffset != unitQualifier.layoutOffset || - qualifier.layoutAlign != unitQualifier.layoutAlign || - qualifier.layoutLocation != unitQualifier.layoutLocation || - qualifier.layoutComponent != unitQualifier.layoutComponent) { - error(infoSink, "Interface block member layout qualifiers must match:"); - writeTypeComparison = true; + bool layoutQualifierError = false; + if (qualifier.layoutMatrix != unitQualifier.layoutMatrix) { + error(infoSink, "Interface block member layout matrix qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (qualifier.layoutOffset != unitQualifier.layoutOffset) { + error(infoSink, "Interface block member layout offset qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (qualifier.layoutAlign != unitQualifier.layoutAlign) { + error(infoSink, "Interface block member layout align qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (qualifier.layoutLocation != unitQualifier.layoutLocation) { + error(infoSink, "Interface block member layout location qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (qualifier.layoutComponent != unitQualifier.layoutComponent) { + error(infoSink, "Interface block member layout component qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (layoutQualifierError) { + infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << ", Member: " + << (*symbol.getType().getStruct())[li].type->getFieldName() << " \"" + << (*symbol.getType().getStruct())[li].type->getCompleteString(true, true, false, false) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << ", Member: " + << (*unitSymbol.getType().getStruct())[ri].type->getFieldName() << " \"" + << (*unitSymbol.getType().getStruct())[ri].type->getCompleteString(true, true, false, false) << "\"\n"; + errorReported = true; } ++li; ++ri; @@ -891,8 +969,9 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy // Qualifiers have to (almost) match // Storage... if (!isInOut && symbol.getQualifier().storage != unitSymbol.getQualifier().storage) { - error(infoSink, "Storage qualifiers must match:"); + error(infoSink, "Storage qualifiers must match:", unitStage); writeTypeComparison = true; + printQualifiers = true; } // Uniform and buffer blocks must either both have an instance name, or @@ -900,33 +979,36 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy if (symbol.getQualifier().isUniformOrBuffer() && (IsAnonymous(symbol.getName()) != IsAnonymous(unitSymbol.getName()))) { error(infoSink, "Matched Uniform or Storage blocks must all be anonymous," - " or all be named:"); + " or all be named:", unitStage); writeTypeComparison = true; } if (symbol.getQualifier().storage == unitSymbol.getQualifier().storage && (IsAnonymous(symbol.getName()) != IsAnonymous(unitSymbol.getName()) || (!IsAnonymous(symbol.getName()) && symbol.getName() != unitSymbol.getName()))) { - warn(infoSink, "Matched shader interfaces are using different instance names."); + warn(infoSink, "Matched shader interfaces are using different instance names.", unitStage); writeTypeComparison = true; } // Precision... if (!isInOut && symbol.getQualifier().precision != unitSymbol.getQualifier().precision) { - error(infoSink, "Precision qualifiers must match:"); + error(infoSink, "Precision qualifiers must match:", unitStage); writeTypeComparison = true; + printPrecision = true; } // Invariance... if (! crossStage && symbol.getQualifier().invariant != unitSymbol.getQualifier().invariant) { - error(infoSink, "Presence of invariant qualifier must match:"); + error(infoSink, "Presence of invariant qualifier must match:", unitStage); writeTypeComparison = true; + printQualifiers = true; } // Precise... if (! crossStage && symbol.getQualifier().isNoContraction() != unitSymbol.getQualifier().isNoContraction()) { - error(infoSink, "Presence of precise qualifier must match:"); + error(infoSink, "Presence of precise qualifier must match:", unitStage); writeTypeComparison = true; + printPrecision = true; } // Auxiliary and interpolation... @@ -940,57 +1022,137 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy symbol.getQualifier().isSample()!= unitSymbol.getQualifier().isSample() || symbol.getQualifier().isPatch() != unitSymbol.getQualifier().isPatch() || symbol.getQualifier().isNonPerspective() != unitSymbol.getQualifier().isNonPerspective())) { - error(infoSink, "Interpolation and auxiliary storage qualifiers must match:"); + error(infoSink, "Interpolation and auxiliary storage qualifiers must match:", unitStage); writeTypeComparison = true; + printQualifiers = true; } // Memory... - if (symbol.getQualifier().coherent != unitSymbol.getQualifier().coherent || - symbol.getQualifier().devicecoherent != unitSymbol.getQualifier().devicecoherent || - symbol.getQualifier().queuefamilycoherent != unitSymbol.getQualifier().queuefamilycoherent || - symbol.getQualifier().workgroupcoherent != unitSymbol.getQualifier().workgroupcoherent || - symbol.getQualifier().subgroupcoherent != unitSymbol.getQualifier().subgroupcoherent || - symbol.getQualifier().shadercallcoherent!= unitSymbol.getQualifier().shadercallcoherent || - symbol.getQualifier().nonprivate != unitSymbol.getQualifier().nonprivate || - symbol.getQualifier().volatil != unitSymbol.getQualifier().volatil || - symbol.getQualifier().restrict != unitSymbol.getQualifier().restrict || - symbol.getQualifier().readonly != unitSymbol.getQualifier().readonly || - symbol.getQualifier().writeonly != unitSymbol.getQualifier().writeonly) { - error(infoSink, "Memory qualifiers must match:"); - writeTypeComparison = true; + bool memoryQualifierError = false; + if (symbol.getQualifier().coherent != unitSymbol.getQualifier().coherent) { + error(infoSink, "Memory coherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().devicecoherent != unitSymbol.getQualifier().devicecoherent) { + error(infoSink, "Memory devicecoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().queuefamilycoherent != unitSymbol.getQualifier().queuefamilycoherent) { + error(infoSink, "Memory queuefamilycoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().workgroupcoherent != unitSymbol.getQualifier().workgroupcoherent) { + error(infoSink, "Memory workgroupcoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().subgroupcoherent != unitSymbol.getQualifier().subgroupcoherent) { + error(infoSink, "Memory subgroupcoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().shadercallcoherent != unitSymbol.getQualifier().shadercallcoherent) { + error(infoSink, "Memory shadercallcoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().nonprivate != unitSymbol.getQualifier().nonprivate) { + error(infoSink, "Memory nonprivate qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().volatil != unitSymbol.getQualifier().volatil) { + error(infoSink, "Memory volatil qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().restrict != unitSymbol.getQualifier().restrict) { + error(infoSink, "Memory restrict qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().readonly != unitSymbol.getQualifier().readonly) { + error(infoSink, "Memory readonly qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().writeonly != unitSymbol.getQualifier().writeonly) { + error(infoSink, "Memory writeonly qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (memoryQualifierError) { + writeTypeComparison = true; + printQualifiers = true; } // Layouts... // TODO: 4.4 enhanced layouts: Generalize to include offset/align: current spec // requires separate user-supplied offset from actual computed offset, but // current implementation only has one offset. - if (symbol.getQualifier().layoutMatrix != unitSymbol.getQualifier().layoutMatrix || - symbol.getQualifier().layoutPacking != unitSymbol.getQualifier().layoutPacking || - (symbol.getQualifier().hasLocation() && unitSymbol.getQualifier().hasLocation() && symbol.getQualifier().layoutLocation != unitSymbol.getQualifier().layoutLocation) || - symbol.getQualifier().layoutComponent != unitSymbol.getQualifier().layoutComponent || - symbol.getQualifier().layoutIndex != unitSymbol.getQualifier().layoutIndex || - (symbol.getQualifier().hasBinding() && unitSymbol.getQualifier().hasBinding() && symbol.getQualifier().layoutBinding != unitSymbol.getQualifier().layoutBinding) || - (symbol.getQualifier().hasBinding() && (symbol.getQualifier().layoutOffset != unitSymbol.getQualifier().layoutOffset))) { - error(infoSink, "Layout qualification must match:"); + bool layoutQualifierError = false; + if (symbol.getQualifier().layoutMatrix != unitSymbol.getQualifier().layoutMatrix) { + error(infoSink, "Layout matrix qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().layoutPacking != unitSymbol.getQualifier().layoutPacking) { + error(infoSink, "Layout packing qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().hasLocation() && unitSymbol.getQualifier().hasLocation() && symbol.getQualifier().layoutLocation != unitSymbol.getQualifier().layoutLocation) { + error(infoSink, "Layout location qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().layoutComponent != unitSymbol.getQualifier().layoutComponent) { + error(infoSink, "Layout component qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().layoutIndex != unitSymbol.getQualifier().layoutIndex) { + error(infoSink, "Layout index qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().hasBinding() && unitSymbol.getQualifier().hasBinding() && symbol.getQualifier().layoutBinding != unitSymbol.getQualifier().layoutBinding) { + error(infoSink, "Layout binding qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().hasBinding() && (symbol.getQualifier().layoutOffset != unitSymbol.getQualifier().layoutOffset)) { + error(infoSink, "Layout offset qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (layoutQualifierError) { writeTypeComparison = true; + printQualifiers = true; } // Initializers have to match, if both are present, and if we don't already know the types don't match - if (! writeTypeComparison) { + if (! writeTypeComparison && ! errorReported) { if (! symbol.getConstArray().empty() && ! unitSymbol.getConstArray().empty()) { if (symbol.getConstArray() != unitSymbol.getConstArray()) { - error(infoSink, "Initializers must match:"); + error(infoSink, "Initializers must match:", unitStage); infoSink.info << " " << symbol.getName() << "\n"; } } } if (writeTypeComparison) { - infoSink.info << " " << symbol.getName() << ": \"" << symbol.getType().getCompleteString() << "\" versus "; - if (symbol.getName() != unitSymbol.getName()) - infoSink.info << unitSymbol.getName() << ": "; - - infoSink.info << "\"" << unitSymbol.getType().getCompleteString() << "\"\n"; + if (symbol.getType().getBasicType() == EbtBlock && unitSymbol.getType().getBasicType() == EbtBlock && + symbol.getType().getStruct() && unitSymbol.getType().getStruct()) { + if (printType) { + infoSink.info << " " << StageName(getStage()) << " stage: \"" << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, + printType, symbol.getName(), symbol.getType().getTypeName()) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: \"" << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, + printType, unitSymbol.getName(), unitSymbol.getType().getTypeName()) << "\"\n"; + } else { + infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << " Instance: " << symbol.getName() + << ": \"" << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << " Instance: " << unitSymbol.getName() + << ": \"" << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n"; + } + } else { + if (printType) { + infoSink.info << " " << StageName(getStage()) << " stage: \"" + << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType, symbol.getName()) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: \"" + << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType, unitSymbol.getName()) << "\"\n"; + } else { + infoSink.info << " " << StageName(getStage()) << " stage: " << symbol.getName() << " \"" + << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: " << unitSymbol.getName() << " \"" + << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n"; + } + } } #endif } @@ -1798,7 +1960,7 @@ unsigned int TIntermediate::computeTypeXfbSize(const TType& type, bool& contains return size; } - int numComponents; + int numComponents {0}; if (type.isScalar()) numComponents = 1; else if (type.isVector()) diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 6aa9399d..581e9aa2 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -290,6 +290,8 @@ public: resources(TBuiltInResource{}), numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false), invertY(false), + dxPositionW(false), + enhancedMsgs(false), useStorageBuffer(false), invariantAll(false), nanMinMaxClamp(false), @@ -307,7 +309,7 @@ public: useVulkanMemoryModel(false), invocations(TQualifier::layoutNotSet), vertices(TQualifier::layoutNotSet), inputPrimitive(ElgNone), outputPrimitive(ElgNone), - pixelCenterInteger(false), originUpperLeft(false), + pixelCenterInteger(false), originUpperLeft(false),texCoordBuiltinRedeclared(false), vertexSpacing(EvsNone), vertexOrder(EvoNone), interlockOrdering(EioNone), pointMode(false), earlyFragmentTests(false), postDepthCoverage(false), depthLayout(EldNone), hlslFunctionality1(false), @@ -397,6 +399,9 @@ public: case EShTargetSpv_1_5: processes.addProcess("target-env spirv1.5"); break; + case EShTargetSpv_1_6: + processes.addProcess("target-env spirv1.6"); + break; default: processes.addProcess("target-env spirvUnknown"); break; @@ -415,6 +420,9 @@ public: case EShTargetVulkan_1_2: processes.addProcess("target-env vulkan1.2"); break; + case EShTargetVulkan_1_3: + processes.addProcess("target-env vulkan1.3"); + break; default: processes.addProcess("target-env vulkanUnknown"); break; @@ -460,6 +468,20 @@ public: } bool getInvertY() const { return invertY; } + void setDxPositionW(bool dxPosW) + { + dxPositionW = dxPosW; + if (dxPositionW) + processes.addProcess("dx-position-w"); + } + bool getDxPositionW() const { return dxPositionW; } + + void setEnhancedMsgs() + { + enhancedMsgs = true; + } + bool getEnhancedMsgs() const { return enhancedMsgs && source == EShSourceGlsl; } + #ifdef ENABLE_HLSL void setSource(EShSource s) { source = s; } EShSource getSource() const { return source; } @@ -812,6 +834,8 @@ public: bool getOriginUpperLeft() const { return originUpperLeft; } void setPixelCenterInteger() { pixelCenterInteger = true; } bool getPixelCenterInteger() const { return pixelCenterInteger; } + void setTexCoordRedeclared() { texCoordBuiltinRedeclared = true; } + bool getTexCoordRedeclared() const { return texCoordBuiltinRedeclared; } void addBlendEquation(TBlendEquationShift b) { blendEquations |= (1 << b); } unsigned int getBlendEquations() const { return blendEquations; } bool setXfbBufferStride(int buffer, unsigned stride) @@ -1016,8 +1040,8 @@ public: protected: TIntermSymbol* addSymbol(long long Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&); - void error(TInfoSink& infoSink, const char*); - void warn(TInfoSink& infoSink, const char*); + void error(TInfoSink& infoSink, const char*, EShLanguage unitStage = EShLangCount); + void warn(TInfoSink& infoSink, const char*, EShLanguage unitStage = EShLangCount); void mergeCallGraphs(TInfoSink&, TIntermediate&); void mergeModes(TInfoSink&, TIntermediate&); void mergeTrees(TInfoSink&, TIntermediate&); @@ -1070,6 +1094,8 @@ protected: int numPushConstants; bool recursive; bool invertY; + bool dxPositionW; + bool enhancedMsgs; bool useStorageBuffer; bool invariantAll; bool nanMinMaxClamp; // true if desiring min/max/clamp to favor non-NaN over NaN @@ -1098,6 +1124,7 @@ protected: TLayoutGeometry outputPrimitive; bool pixelCenterInteger; bool originUpperLeft; + bool texCoordBuiltinRedeclared; TVertexSpacing vertexSpacing; TVertexOrder vertexOrder; TInterlockOrdering interlockOrdering; @@ -1158,6 +1185,7 @@ protected: // for callableData/callableDataIn // set of names of statically read/written I/O that might need extra checking std::set<TString> ioAccessed; + // source code of shader, useful as part of debug information std::string sourceFile; std::string sourceText; diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index d2a4bf40..e44339db 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -150,8 +150,8 @@ typedef enum { typedef enum { EShClientNone, // use when there is no client, e.g. for validation - EShClientVulkan, - EShClientOpenGL, + EShClientVulkan, // as GLSL dialect, specifies KHR_vulkan_glsl extension + EShClientOpenGL, // as GLSL dialect, specifies ARB_gl_spirv extension LAST_ELEMENT_MARKER(EShClientCount), } EShClient; @@ -166,8 +166,9 @@ typedef enum { EShTargetVulkan_1_0 = (1 << 22), // Vulkan 1.0 EShTargetVulkan_1_1 = (1 << 22) | (1 << 12), // Vulkan 1.1 EShTargetVulkan_1_2 = (1 << 22) | (2 << 12), // Vulkan 1.2 + EShTargetVulkan_1_3 = (1 << 22) | (3 << 12), // Vulkan 1.3 EShTargetOpenGL_450 = 450, // OpenGL - LAST_ELEMENT_MARKER(EShTargetClientVersionCount = 4), + LAST_ELEMENT_MARKER(EShTargetClientVersionCount = 5), } EShTargetClientVersion; typedef EShTargetClientVersion EshTargetClientVersion; @@ -179,7 +180,8 @@ typedef enum { EShTargetSpv_1_3 = (1 << 16) | (3 << 8), // SPIR-V 1.3 EShTargetSpv_1_4 = (1 << 16) | (4 << 8), // SPIR-V 1.4 EShTargetSpv_1_5 = (1 << 16) | (5 << 8), // SPIR-V 1.5 - LAST_ELEMENT_MARKER(EShTargetLanguageVersionCount = 6), + EShTargetSpv_1_6 = (1 << 16) | (6 << 8), // SPIR-V 1.6 + LAST_ELEMENT_MARKER(EShTargetLanguageVersionCount = 7), } EShTargetLanguageVersion; struct TInputLanguage { @@ -262,6 +264,7 @@ enum EShMessages : unsigned { EShMsgHlslLegalization = (1 << 12), // enable HLSL Legalization messages EShMsgHlslDX9Compatible = (1 << 13), // enable HLSL DX9 compatible mode (for samplers and semantics) EShMsgBuiltinSymbolTable = (1 << 14), // print the builtin symbol table + EShMsgEnhanced = (1 << 15), // enhanced message readability LAST_ELEMENT_MARKER(EShMsgCount), }; @@ -468,6 +471,7 @@ public: GLSLANG_EXPORT void setSourceEntryPoint(const char* sourceEntryPointName); GLSLANG_EXPORT void addProcesses(const std::vector<std::string>&); GLSLANG_EXPORT void setUniqueId(unsigned long long id); + GLSLANG_EXPORT void setOverrideVersion(int version); // IO resolver binding data: see comments in ShaderLang.cpp GLSLANG_EXPORT void setShiftBinding(TResourceType res, unsigned int base); @@ -485,6 +489,8 @@ public: GLSLANG_EXPORT void addUniformLocationOverride(const char* name, int loc); GLSLANG_EXPORT void setUniformLocationBase(int base); GLSLANG_EXPORT void setInvertY(bool invert); + GLSLANG_EXPORT void setDxPositionW(bool dxPosW); + GLSLANG_EXPORT void setEnhancedMsgs(); #ifdef ENABLE_HLSL GLSLANG_EXPORT void setHlslIoMapping(bool hlslIoMap); GLSLANG_EXPORT void setFlattenUniformArrays(bool flatten); @@ -512,6 +518,9 @@ public: // use EShClientNone and version of 0, e.g. for validation mode. // Note 'version' does not describe the target environment, // just the version of the source dialect to compile under. + // For example, to choose the Vulkan dialect of GLSL defined by + // version 100 of the KHR_vulkan_glsl extension: lang = EShSourceGlsl, + // dialect = EShClientVulkan, and version = 100. // // See the definitions of TEnvironment, EShSource, EShLanguage, // and EShClient for choices and more detail. @@ -703,6 +712,9 @@ protected: // a function in the source string can be renamed FROM this TO the name given in setEntryPoint. std::string sourceEntryPointName; + // overrides #version in shader source or default version if #version isn't present + int overrideVersion; + TEnvironment environment; friend class TProgram; diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index f9680dd6..1d975464 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -233,8 +233,10 @@ INSTANTIATE_TEST_SUITE_P( "precise_struct_block.vert", "maxClipDistances.vert", "findFunction.frag", + "noMatchingFunction.frag", "constantUnaryConversion.comp", "xfbUnsizedArray.error.vert", + "xfbUnsizedArray.error.tese", "glsl.140.layoutOffset.error.vert", "glsl.430.layoutOffset.error.vert", "glsl.450.subgroup.frag", @@ -284,9 +286,16 @@ INSTANTIATE_TEST_SUITE_P( "textureoffset_sampler2darrayshadow.vert", "atomicAdd.comp", "GL_ARB_gpu_shader5.u2i.vert", + "textureQueryLOD.frag", "atomicCounterARBOps.vert", "GL_EXT_shader_integer_mix.vert", "GL_ARB_draw_instanced.vert", + "GL_ARB_fragment_coord_conventions.vert", + "BestMatchFunction.vert", + "EndStreamPrimitive.geom", + "floatBitsToInt.vert", + "coord_conventions.frag", + "gl_FragCoord.frag" })), FileNameAsCustomTestSuffix ); diff --git a/gtests/GlslMapIO.FromFile.cpp b/gtests/GlslMapIO.FromFile.cpp index 574e905f..aabb4ae2 100644 --- a/gtests/GlslMapIO.FromFile.cpp +++ b/gtests/GlslMapIO.FromFile.cpp @@ -109,7 +109,52 @@ bool verifyIOMapping(std::string& linkingError, glslang::TProgram& program) { success &= outQualifier.layoutLocation == inQualifier.layoutLocation; } else { - success &= false; + if (!in.getType()->isStruct()) { + bool found = false; + for (auto outIt : pipeOut) { + if (outIt.second->getType()->isStruct()) { + unsigned int baseLoc = outIt.second->getType()->getQualifier().hasLocation() ? + outIt.second->getType()->getQualifier().layoutLocation : + std::numeric_limits<unsigned int>::max(); + for (size_t j = 0; j < outIt.second->getType()->getStruct()->size(); j++) { + baseLoc = (*outIt.second->getType()->getStruct())[j].type->getQualifier().hasLocation() ? + (*outIt.second->getType()->getStruct())[j].type->getQualifier().layoutLocation : baseLoc; + if (baseLoc != std::numeric_limits<unsigned int>::max()) { + if (baseLoc == in.getType()->getQualifier().layoutLocation) { + found = true; + break; + } + baseLoc += glslang::TIntermediate::computeTypeLocationSize(*(*outIt.second->getType()->getStruct())[j].type, EShLangVertex); + } + } + if (found) { + break; + } + } + } + success &= found; + } + else { + unsigned int baseLoc = in.getType()->getQualifier().hasLocation() ? in.getType()->getQualifier().layoutLocation : -1; + for (size_t j = 0; j < in.getType()->getStruct()->size(); j++) { + baseLoc = (*in.getType()->getStruct())[j].type->getQualifier().hasLocation() ? + (*in.getType()->getStruct())[j].type->getQualifier().layoutLocation : baseLoc; + if (baseLoc != std::numeric_limits<unsigned int>::max()) { + bool isMemberFound = false; + for (auto outIt : pipeOut) { + if (baseLoc == outIt.second->getType()->getQualifier().layoutLocation) { + isMemberFound = true; + break; + } + } + if (!isMemberFound) { + success &= false; + break; + } + baseLoc += glslang::TIntermediate::computeTypeLocationSize(*(*in.getType()->getStruct())[j].type, EShLangVertex); + } + } + } } } } @@ -295,6 +340,10 @@ INSTANTIATE_TEST_SUITE_P( ::testing::ValuesIn(std::vector<IoMapData>({ {{"iomap.crossStage.vert", "iomap.crossStage.frag" }, Semantics::OpenGL}, {{"iomap.crossStage.2.vert", "iomap.crossStage.2.geom", "iomap.crossStage.2.frag" }, Semantics::OpenGL}, + {{"iomap.blockOutVariableIn.vert", "iomap.blockOutVariableIn.frag"}, Semantics::OpenGL}, + {{"iomap.variableOutBlockIn.vert", "iomap.variableOutBlockIn.frag"}, Semantics::OpenGL}, + {{"iomap.blockOutVariableIn.2.vert", "iomap.blockOutVariableIn.geom"}, Semantics::OpenGL}, + {{"iomap.variableOutBlockIn.2.vert", "iomap.variableOutBlockIn.geom"}, Semantics::OpenGL}, // vulkan semantics {{"iomap.crossStage.vk.vert", "iomap.crossStage.vk.geom", "iomap.crossStage.vk.frag" }, Semantics::Vulkan}, })) @@ -303,4 +352,4 @@ INSTANTIATE_TEST_SUITE_P( } // anonymous namespace } // namespace glslangtest -#endif
\ No newline at end of file +#endif diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 5e1cbdae..519be254 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -59,6 +59,7 @@ std::string FileNameAsCustomTestSuffix( using HlslCompileTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>; using HlslVulkan1_1CompileTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>; +using HlslSpv1_6CompileTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>; using HlslCompileAndFlattenTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>; using HlslLegalizeTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>; using HlslDebugTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>; @@ -81,6 +82,13 @@ TEST_P(HlslVulkan1_1CompileTest, FromFile) Target::BothASTAndSpv, true, GetParam().entryPoint); } +TEST_P(HlslSpv1_6CompileTest, FromFile) +{ + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, + Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_6, + Target::BothASTAndSpv, true, GetParam().entryPoint); +} + TEST_P(HlslCompileAndFlattenTest, FromFile) { loadFileCompileFlattenUniformsAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, @@ -385,6 +393,7 @@ INSTANTIATE_TEST_SUITE_P( {"hlsl.structbuffer.fn2.comp", "main"}, {"hlsl.structbuffer.rw.frag", "main"}, {"hlsl.structbuffer.rwbyte.frag", "main"}, + {"hlsl.structbuffer.rwbyte2.comp", "main"}, {"hlsl.structin.vert", "main"}, {"hlsl.structIoFourWay.frag", "main"}, {"hlsl.structStructName.frag", "main"}, @@ -451,6 +460,16 @@ INSTANTIATE_TEST_SUITE_P( // clang-format off INSTANTIATE_TEST_SUITE_P( + ToSpirv, HlslSpv1_6CompileTest, + ::testing::ValuesIn(std::vector<FileNameEntryPointPair>{ + {"hlsl.spv.1.6.discard.frag", "PixelShaderFunction"} + }), + FileNameAsCustomTestSuffix +); +// clang-format on + +// clang-format off +INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslCompileAndFlattenTest, ::testing::ValuesIn(std::vector<FileNameEntryPointPair>{ {"hlsl.array.flatten.frag", "main"}, diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index ef117640..db4ac268 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -69,6 +69,7 @@ using CompileVulkanToSpirvDeadCodeElimTest = GlslangTest<::testing::TestWithPara using CompileVulkanToDebugSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>; using CompileVulkan1_1ToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>; using CompileToSpirv14Test = GlslangTest<::testing::TestWithParam<std::string>>; +using CompileToSpirv16Test = GlslangTest<::testing::TestWithParam<std::string>>; using CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>; using VulkanSemantics = GlslangTest<::testing::TestWithParam<std::string>>; using OpenGLSemantics = GlslangTest<::testing::TestWithParam<std::string>>; @@ -122,6 +123,13 @@ TEST_P(CompileToSpirv14Test, FromFile) Target::Spv); } +TEST_P(CompileToSpirv16Test, FromFile) +{ + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), + Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_6, + Target::Spv); +} + // Compiling GLSL to SPIR-V under OpenGL semantics. Expected to successfully // generate SPIR-V. TEST_P(CompileOpenGLToSpirvTest, FromFile) @@ -365,7 +373,6 @@ INSTANTIATE_TEST_SUITE_P( "spv.int64.frag", "spv.intcoopmat.comp", "spv.intOps.vert", - "spv.intrinsicsSpecConst.vert", "spv.intrinsicsSpirvByReference.vert", "spv.intrinsicsSpirvDecorate.frag", "spv.intrinsicsSpirvExecutionMode.frag", @@ -373,6 +380,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.intrinsicsSpirvLiteral.vert", "spv.intrinsicsSpirvStorageClass.rchit", "spv.intrinsicsSpirvType.rgen", + "spv.intrinsicsSpirvTypeLocalVar.vert", "spv.invariantAll.vert", "spv.layer.tese", "spv.layoutNested.vert", @@ -520,6 +528,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.vulkan110.int16.frag", "spv.int32.frag", "spv.explicittypes.frag", + "spv.float16NoRelaxed.vert", "spv.float32.frag", "spv.float64.frag", "spv.memoryScopeSemantics.comp", @@ -623,6 +632,18 @@ INSTANTIATE_TEST_SUITE_P( // clang-format off INSTANTIATE_TEST_SUITE_P( + Glsl, CompileToSpirv16Test, + ::testing::ValuesIn(std::vector<std::string>({ + "spv.1.6.conditionalDiscard.frag", + "spv.1.6.helperInvocation.frag", + "spv.1.6.specConstant.comp", + })), + FileNameAsCustomTestSuffix +); + + +// clang-format off +INSTANTIATE_TEST_SUITE_P( Hlsl, HlslIoMap, ::testing::ValuesIn(std::vector<IoMapData>{ { "spv.register.autoassign.frag", "main_ep", 5, 10, 0, 20, 30, true, false }, diff --git a/gtests/VkRelaxed.FromFile.cpp b/gtests/VkRelaxed.FromFile.cpp index 777134d9..96cd3cf6 100644 --- a/gtests/VkRelaxed.FromFile.cpp +++ b/gtests/VkRelaxed.FromFile.cpp @@ -107,8 +107,8 @@ bool verifyIOMapping(std::string& linkingError, glslang::TProgram& program) { auto inQualifier = in.getType()->getQualifier(); auto outQualifier = out->second->getType()->getQualifier(); success &= outQualifier.layoutLocation == inQualifier.layoutLocation; - } - else { + // These are not part of a matched interface. Other cases still need to be added. + } else if (name != "gl_FrontFacing" && name != "gl_FragCoord") { success &= false; } } @@ -293,6 +293,7 @@ INSTANTIATE_TEST_SUITE_P( ::testing::ValuesIn(std::vector<vkRelaxedData>({ {{"vk.relaxed.frag"}}, {{"vk.relaxed.link1.frag", "vk.relaxed.link2.frag"}}, + {{"vk.relaxed.stagelink.0.0.vert", "vk.relaxed.stagelink.0.1.vert", "vk.relaxed.stagelink.0.2.vert", "vk.relaxed.stagelink.0.0.frag", "vk.relaxed.stagelink.0.1.frag", "vk.relaxed.stagelink.0.2.frag"}}, {{"vk.relaxed.stagelink.vert", "vk.relaxed.stagelink.frag"}}, {{"vk.relaxed.errorcheck.vert", "vk.relaxed.errorcheck.frag"}}, {{"vk.relaxed.changeSet.vert", "vk.relaxed.changeSet.frag" }, { {"0"}, {"1"} } }, diff --git a/known_good.json b/known_good.json index bed5dd80..f87405e2 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "339d4475c1a806c187c57678af26733575d1cecd" + "commit" : "b3c1790632737f6be2c0e1c2ea5bd844da9f17a9" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "29817199b7069bac971e5365d180295d4b077ebe" + "commit" : "4995a2f2723c401eb0ea3e10c81298906bf1422b" } ] } diff --git a/license-checker.cfg b/license-checker.cfg index 409f18ef..51ce2762 100644 --- a/license-checker.cfg +++ b/license-checker.cfg @@ -15,6 +15,8 @@ "_config.yml",
".*",
+ ".github/workflows/*.yml",
+ ".github/workflows/*.js",
"CMakeSettings.json",
"known_good_khr.json",
"known_good.json",
diff --git a/update_glslang_sources.py b/update_glslang_sources.py index 65be2f6a..20f303ba 100755 --- a/update_glslang_sources.py +++ b/update_glslang_sources.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright 2017 The Glslang Authors. All rights reserved. # |