| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- <!--
- Copyright (C) 2009-2017, Panagiotis Christopoulos Charitos and contributors.
- All rights reserved.
- Code licensed under the BSD License.
- http://www.anki3d.org/LICENSE
- -->
- <shaderProgram>
- <mutators>
- <mutator name="INSTANCE_COUNT" values="1 2 4 8 16 32 64" instanced="1"/>
- <mutator name="LOD" values="0 1 2"/>
- <mutator name="PASS" values="0 1"/>
- <mutator name="DIFFUSE_TEX" values="0 1"/>
- <mutator name="SPECULAR_TEX" values="0 1"/>
- <mutator name="ROUGHNESS_TEX" values="0 1"/>
- <mutator name="METAL_TEX" values="0 1"/>
- <mutator name="NORMAL_TEX" values="0 1"/>
- <mutator name="PARALLAX" values="0 1"/>
- <mutator name="EMISSIVE_TEX" values="0 1"/>
- </mutators>
- <shaders>
- <shader type="vert">
- <inputs>
- <input name="mvp" type="mat4" instanced="1"/>
- <input name="normalMat" type="mat3" instanced="1">
- <mutators>
- <mutator name="PASS" values="0"/>
- </mutators>
- </input>
- <input name="modelViewMat" type="mat4" instanced="1">
- <mutators>
- <mutator name="PASS" values="0"/>
- <mutator name="PARALLAX" values="1"/>
- </mutators>
- </input>
- </inputs>
- <source><![CDATA[#include "shaders/MsCommonVert.glsl"
- void main()
- {
- #if PASS == 0
- positionUvNormalTangent(mvp, normalMat);
-
- #if PARALLAX
- parallax(modelViewMat);
- #endif
- #else
- ANKI_WRITE_POSITION(mvp * vec4(in_position, 1.0));
- #endif
- }
- ]]>
- </source>
- </shader>
- <shader type="frag">
- <inputs>
- <!-- Consts -->
- <input name="diffColor" type="vec3" const="1">
- <mutators>
- <mutator name="DIFFUSE_TEX" values="0"/>
- <mutator name="PASS" values="0"/>
- </mutators>
- </input>
- <input name="specColor" type="vec3" const="1">
- <mutators>
- <mutator name="SPECULAR_TEX" values="0"/>
- <mutator name="PASS" values="0"/>
- </mutators>
- </input>
- <input name="roughness" type="float" const="1">
- <mutators>
- <mutator name="ROUGHNESS_TEX" values="0"/>
- <mutator name="PASS" values="0"/>
- </mutators>
- </input>
- <input name="metallic" type="float" const="1">
- <mutators>
- <mutator name="METAL_TEX" values="0"/>
- <mutator name="PASS" values="0"/>
- </mutators>
- </input>
- <input name="emission" type="vec3" const="1">
- <mutators>
- <mutator name="EMISSIVE_TEX" values="0"/>
- <mutator name="PASS" values="0"/>
- </mutators>
- </input>
- <input name="heightMapScale" type="float" const="1">
- <mutators>
- <mutator name="PARALLAX" values="1"/>
- <mutator name="PASS" values="0"/>
- <mutator name="LOD" values="0"/>
- </mutators>
- </input>
- <input name="subsurface" type="float" const="1">
- <mutators>
- <mutator name="PASS" values="0"/>
- </mutators>
- </input>
- <!-- Textures -->
- <input name="diffTex" type="sampler2D">
- <mutators>
- <mutator name="DIFFUSE_TEX" values="1"/>
- <mutator name="PASS" values="0"/>
- </mutators>
- </input>
- <input name="specTex" type="sampler2D">
- <mutators>
- <mutator name="SPECULAR_TEX" values="1"/>
- <mutator name="PASS" values="0"/>
- </mutators>
- </input>
- <input name="roughnessTex" type="sampler2D">
- <mutators>
- <mutator name="ROUGHNESS_TEX" values="1"/>
- <mutator name="PASS" values="0"/>
- </mutators>
- </input>
- <input name="metalTex" type="sampler2D">
- <mutators>
- <mutator name="METAL_TEX" values="1"/>
- <mutator name="PASS" values="0"/>
- </mutators>
- </input>
- <input name="normalTex" type="sampler2D">
- <mutators>
- <mutator name="NORMAL_TEX" values="1"/>
- <mutator name="PASS" values="0"/>
- <mutator name="LOD" values="0 1"/>
- </mutators>
- </input>
- <input name="heightTex" type="sampler2D">
- <mutators>
- <mutator name="PARALLAX" values="1"/>
- <mutator name="PASS" values="0"/>
- <mutator name="LOD" values="0"/>
- </mutators>
- </input>
- <input name="emissiveTex" type="sampler2D">
- <mutators>
- <mutator name="EMISSIVE_TEX" values="1"/>
- <mutator name="PASS" values="0"/>
- </mutators>
- </input>
- </inputs>
- <source><![CDATA[#include "shaders/MsCommonFrag.glsl"
- void main()
- {
- #if PASS == 0
- #if heightTex_DEFINED
- vec2 uv = computeTextureCoordParallax(heightTex, in_uv, heightMapScale);
- #else
- vec2 uv = in_uv;
- #endif
- #if diffTex_DEFINED
- vec3 diffColor = texture(diffTex, uv).rgb;
- #endif
- #if specTex_DEFINED
- vec3 specColor = texture(specTex, uv).rgb;
- #endif
- #if roughnessTex_DEFINED
- float roughness = texture(roughnessTex, uv).r;
- #endif
- #if metalTex_DEFINED
- float metallic = texture(metalTex, uv).r;
- #endif
- #if normalTex_DEFINED
- vec3 normal = readNormalFromTexture(normalTex, uv);
- #else
- vec3 normal = normalize(in_normal);
- #endif
- #if emissiveTex_DEFINED
- vec3 emission = texture(emissiveTex, uv).rgb;
- #endif
- writeRts(diffColor, normal, specColor, roughness, subsurface, emission, metallic);
- #endif
- }
- ]]></source>
- </shader>
- </shaders>
- </shaderProgram>
|