Ver Fonte

Update common shader

Daniele Bartolini há 10 anos atrás
pai
commit
5a1d6a2d3c
1 ficheiros alterados com 42 adições e 8 exclusões
  1. 42 8
      samples/01-physics/core/shaders/common.shader

+ 42 - 8
samples/01-physics/core/shaders/common.shader

@@ -36,8 +36,8 @@ bgfx_shaders = {
 	common = {
 		code = "
 			/*
-			 * Copyright 2011-2015 Branimir Karadzic. All rights reserved.
-			 * License: http://www.opensource.org/licenses/BSD-2-Clause
+			 * Copyright 2011-2016 Branimir Karadzic. All rights reserved.
+			 * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
 			 */
 
 			#if !defined(BGFX_CONFIG_MAX_BONES)
@@ -46,6 +46,22 @@ bgfx_shaders = {
 
 			#ifndef __cplusplus
 
+			#if BGFX_SHADER_LANGUAGE_HLSL > 3
+			#	define BRANCH [branch]
+			#	define LOOP   [loop]
+			#	define UNROLL [unroll]
+			#else
+			#	define BRANCH
+			#	define LOOP
+			#	define UNROLL
+			#endif // BGFX_SHADER_LANGUAGE_HLSL > 3
+
+			#if BGFX_SHADER_LANGUAGE_HLSL > 3 && BGFX_SHADER_TYPE_FRAGMENT
+			#	define EARLY_DEPTH_STENCIL [earlydepthstencil]
+			#else
+			#	define EARLY_DEPTH_STENCIL
+			#endif // BGFX_SHADER_LANGUAGE_HLSL > 3 && BGFX_SHADER_TYPE_FRAGMENT
+
 			#if BGFX_SHADER_LANGUAGE_HLSL
 			#	define dFdx(_x) ddx(_x)
 			#	define dFdy(_y) ddy(-_y)
@@ -407,11 +423,11 @@ bgfx_shaders = {
 				return vec3(normalize(_encodedNormal.xy) * sqrt(1.0 - zz*zz), zz);
 			}
 
-			// Reference:
-			// Octahedron normal vector encoding
-			// http://kriscg.blogspot.com/2014/04/octahedron-normal-vector-encoding.html
 			vec2 octahedronWrap(vec2 _val)
 			{
+				// Reference:
+				// Octahedron normal vector encoding
+				// http://kriscg.blogspot.com/2014/04/octahedron-normal-vector-encoding.html
 				return (1.0 - abs(_val.yx) )
 					 * mix(vec2_splat(-1.0), vec2_splat(1.0), vec2(greaterThanEqual(_val.xy, vec2_splat(0.0) ) ) );
 			}
@@ -434,11 +450,11 @@ bgfx_shaders = {
 				return normalize(normal);
 			}
 
-			// Reference:
-			// RGB/XYZ Matrices
-			// http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html
 			vec3 convertRGB2XYZ(vec3 _rgb)
 			{
+				// Reference:
+				// RGB/XYZ Matrices
+				// http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html
 				vec3 xyz;
 				xyz.x = dot(vec3(0.4124564, 0.3575761, 0.1804375), _rgb);
 				xyz.y = dot(vec3(0.2126729, 0.7151522, 0.0721750), _rgb);
@@ -593,6 +609,24 @@ bgfx_shaders = {
 				return vec4(toFilmic(_rgba.xyz), _rgba.w);
 			}
 
+			vec3 toAcesFilmic(vec3 _rgb)
+			{
+				// Reference:
+				// ACES Filmic Tone Mapping Curve
+				// https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/
+				float aa = 2.51f;
+				float bb = 0.03f;
+				float cc = 2.43f;
+				float dd = 0.59f;
+				float ee = 0.14f;
+				return saturate( (_rgb*(aa*_rgb + bb) )/(_rgb*(cc*_rgb + dd) + ee) );
+			}
+
+			vec4 toAcesFilmic(vec4 _rgba)
+			{
+				return vec4(toAcesFilmic(_rgba.xyz), _rgba.w);
+			}
+
 			vec3 luma(vec3 _rgb)
 			{
 				float yy = dot(vec3(0.2126729, 0.7151522, 0.0721750), _rgb);