diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ab9755..d35b214 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -232,13 +232,13 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (WIN32 AND CMAKE_CXX_COMPILER_ID STR # - Enable multi-processor compiling. # Build with dynamic MSVC linkage. - add_compile_options( - $<$:/MD> - $<$:/MDd> - $<$:/MD> - $<$:/MD> - $<$:/MD> - ) + add_compile_options( + $<$:/MD> + $<$:/MDd> + $<$:/MD> + $<$:/MD> + $<$:/MD> + ) # Enable most useful warnings. set(DISABLED_WARNINGS diff --git a/data/effects/blur/box-linear.effect b/data/effects/blur/box-linear.effect index 38e8fc2..77a2639 100644 --- a/data/effects/blur/box-linear.effect +++ b/data/effects/blur/box-linear.effect @@ -7,27 +7,27 @@ // the actual thing. // // Instead of sampling every texel like this: -// -// |Tx|Tx|Tx|Tx|Tx| -// Tx|-2|-1| 0|+1|+2| -// +// +// |Tx|Tx|Tx|Tx|Tx| +// Tx|-2|-1| 0|+1|+2| +// // Linear optimization will sample like this: -// -// |Tx|Tx|Tx|Tx|Tx| -// Tx| -1 | 0| +1 | +// +// |Tx|Tx|Tx|Tx|Tx| +// Tx| -1 | 0| +1 | // // This effectively removes half the necessary samples and looks identical when // when used with box blur. However there is an edge case when the blur width // is not a multiple of two, where two additional samples have to be spent on // reading the outer edge: -// -// |Tx|Tx|Tx|Tx|Tx|Tx|Tx| -// Tx|-2| -1 | 0| +1 |+2| +// +// |Tx|Tx|Tx|Tx|Tx|Tx|Tx| +// Tx|-2| -1 | 0| +1 |+2| // // or this alternative pattern that uses two less samples: -// -// |Tx|Tx|Tx|Tx|Tx|Tx|Tx| -// Tx| 0 | +1 | +2 |+3| +// +// |Tx|Tx|Tx|Tx|Tx|Tx|Tx| +// Tx| 0 | +1 | +2 |+3| // // With careful planning this can even be used for other types of Blur, such as // Gaussian Blur, which suffers a larger hit - however there are better and @@ -46,14 +46,14 @@ float4 PSBlur1D(VertexInformation vtx) : TARGET { // y = yes, s = skip, b = break // Size-> | 1| 2| 3| 4| 5| 6| 7| // -------+--+--+--+--+--+--+--+ - // n=1 | b| y| y| y| y| y| y| - // n=2 | |bs| s| s| s| s| s| - // n=3 | | b| b| y| y| y| y| - // n=4 | | | |bs| s| s| s| - // n=5 | | | | b| b| y| y| - // n=6 | | | | | |bs| s| - // n=7 | | | | | | b| b| - // n=8 | | | | | | | | + // n=1 | b| y| y| y| y| y| y| + // n=2 | |bs| s| s| s| s| s| + // n=3 | | b| b| y| y| y| y| + // n=4 | | | |bs| s| s| s| + // n=5 | | | | b| b| y| y| + // n=6 | | | | | |bs| s| + // n=7 | | | | | | b| b| + // n=8 | | | | | | | | float4 final = pImage.Sample(LinearClampSampler, vtx.uv); for (uint n = 1u; (n < uint(pSize)) && (n < MAX_BLUR_SIZE); n += 2u) { diff --git a/data/effects/blur/common.effect b/data/effects/blur/common.effect index 405eaf8..ab1f1fe 100644 --- a/data/effects/blur/common.effect +++ b/data/effects/blur/common.effect @@ -39,7 +39,7 @@ uniform float2 pImageSize; uniform float2 pImageTexel; uniform float pSize; uniform float pSizeInverseMul; -uniform float pAngle; +uniform float pAngle; uniform float2 pCenter; uniform float2 pStepScale; uniform float4 pKernel[KERNEL_SIZE]; @@ -53,11 +53,11 @@ struct VertexInformation { }; sampler_state LinearClampSampler { - Filter = Linear; - AddressU = Clamp; - AddressV = Clamp; - MinLOD = 0; - MaxLOD = 0; + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; + MinLOD = 0; + MaxLOD = 0; }; //------------------------------------------------------------------------------ diff --git a/data/effects/color_conversion_rgb_hsl.effect b/data/effects/color_conversion_rgb_hsl.effect index eb391d6..6ca565f 100644 --- a/data/effects/color_conversion_rgb_hsl.effect +++ b/data/effects/color_conversion_rgb_hsl.effect @@ -13,10 +13,10 @@ float3 RGBtoHSL(float3 rgb) { l = ( cMax + cMin ) / 2.0; if ( cMax > cMin ) { float cDelta = cMax - cMin; - + //s = l < .05 ? cDelta / ( cMax + cMin ) : cDelta / ( 2.0 - ( cMax + cMin ) ); Original s = l < .0 ? cDelta / ( cMax + cMin ) : cDelta / ( 2.0 - ( cMax + cMin ) ); - + if ( r == cMax ) { h = ( g - b ) / cDelta; } else if ( g == cMax ) { @@ -38,7 +38,7 @@ float4 RGBAtoHSLA(float4 rgba) { } float3 HSLtoRGB(float3 hsl) { - float3 rgb = clamp( + float3 rgb = clamp( abs( fmod( hsl.x * 6.0 + float3(0.0, 4.0, 2.0), @@ -48,7 +48,7 @@ float3 HSLtoRGB(float3 hsl) { 0.0, 1.0 ); - return hsl.z + hsl.y * (rgb - 0.5) * (1.0 - abs(2.0 * hsl.z - 1.0)); + return hsl.z + hsl.y * (rgb - 0.5) * (1.0 - abs(2.0 * hsl.z - 1.0)); }; float4 HSLAtoRGBA(float4 hsla) { diff --git a/data/effects/color_conversion_rgb_hsv.effect b/data/effects/color_conversion_rgb_hsv.effect index fbd85e7..a64c1ae 100644 --- a/data/effects/color_conversion_rgb_hsv.effect +++ b/data/effects/color_conversion_rgb_hsv.effect @@ -7,7 +7,7 @@ float3 RGBtoHSV(float3 rgb) { const float e = 1.0e-10; #ifdef RGB_HSV_FASTCONDITIONALMOVE float4 p = rgb.g < rgb.b ? float4(rgb.bg, K.wz) : float4(rgb.gb, K.xy); - float4 q = rgb.r < p.x ? float4(p.xyw, rgb.r) : float4(rgb.r, p.yzx); + float4 q = rgb.r < p.x ? float4(p.xyw, rgb.r) : float4(rgb.r, p.yzx); #else float4 p = lerp(float4(rgb.bg, K.wz), float4(rgb.gb, K.xy), step(rgb.b, rgb.g)); float4 q = lerp(float4(p.xyw, rgb.r), float4(rgb.r, p.yzx), step(p.x, rgb.r)); diff --git a/data/effects/lut.effect b/data/effects/lut.effect index c1b93cf..1231b6c 100644 --- a/data/effects/lut.effect +++ b/data/effects/lut.effect @@ -1,7 +1,7 @@ sampler_state __LUTSampler { - Filter = Linear; - AddressU = Clamp; - AddressV = Clamp; + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; }; float4 generate_lut(uint bit_depth, float2 uv) { @@ -12,7 +12,7 @@ float4 generate_lut(uint bit_depth, float2 uv) { uint2 xy = uint2(floor(uv * container_size)); uint2 rg = xy % size; uint2 bb = xy / size; - + return float4( rg.xy / float(size - 1), ((bb.y * z_size) + bb.x) / float(size - 1), @@ -28,7 +28,7 @@ float4 generate_lut2(float2 uv, uint4 params0) { uint2 xy = uint2(floor(uv * container_size)); uint2 rg = xy % size; uint2 bb = xy / size; - + return float4( rg.xy / float(size - 1), ((bb.y * z_size) + bb.x) / float(size - 1), @@ -69,7 +69,7 @@ float3 sample_lut(float3 color, uint bit_depth, texture2D lut_texture) { // 6. Figure out the Y location of the cell in the grid. uint z_lo_y = z_lo / z_size; uint z_hi_y = z_hi / z_size; - + // 7. Convert the X and Y locations into UV coordinates. float2 z_lo_uv = float2(z_lo_x, z_lo_y) * inverse_z_size; float2 z_hi_uv = float2(z_hi_x, z_hi_y) * inverse_z_size; @@ -115,7 +115,7 @@ float3 sample_lut2(float3 color, texture2D lut_texture, int4 params0, float4 par // 6. Figure out the Y location of the cell in the grid. uint z_lo_y = z_lo / z_size; uint z_hi_y = z_hi / z_size; - + // 7. Convert the X and Y locations into UV coordinates. float2 z_lo_uv = float2(z_lo_x, z_lo_y) * inverse_z_size; float2 z_hi_uv = float2(z_hi_x, z_hi_y) * inverse_z_size; diff --git a/data/effects/mask.effect b/data/effects/mask.effect index 95f3f56..ab159dc 100644 --- a/data/effects/mask.effect +++ b/data/effects/mask.effect @@ -17,19 +17,19 @@ uniform float mask_multiplier; // Data sampler_state pointSampler { - Filter = Point; - AddressU = Clamp; - AddressV = Clamp; - MinLOD = 0; - MaxLOD = 0; + Filter = Point; + AddressU = Clamp; + AddressV = Clamp; + MinLOD = 0; + MaxLOD = 0; }; sampler_state linearSampler { - Filter = Linear; - AddressU = Clamp; - AddressV = Clamp; - MinLOD = 0; - MaxLOD = 0; + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; + MinLOD = 0; + MaxLOD = 0; }; struct VertDataIn { @@ -74,28 +74,28 @@ float RegionFeathered(float2 uv) { float4 PSRegion(VertDataOut v_out) : TARGET { float alpha = Region(v_out.uv); float4 orig = image_orig.Sample(pointSampler, v_out.uv); - float4 blur = image_blur.Sample(pointSampler, v_out.uv); + float4 blur = image_blur.Sample(pointSampler, v_out.uv); return lerp(orig, blur, alpha); } float4 PSRegionInverted(VertDataOut v_out) : TARGET { float alpha = 1.0 - Region(v_out.uv); float4 orig = image_orig.Sample(pointSampler, v_out.uv); - float4 blur = image_blur.Sample(pointSampler, v_out.uv); + float4 blur = image_blur.Sample(pointSampler, v_out.uv); return lerp(orig, blur, alpha); } float4 PSRegionFeather(VertDataOut v_out) : TARGET { float alpha = RegionFeathered(v_out.uv); float4 orig = image_orig.Sample(pointSampler, v_out.uv); - float4 blur = image_blur.Sample(pointSampler, v_out.uv); + float4 blur = image_blur.Sample(pointSampler, v_out.uv); return lerp(orig, blur, alpha); } float4 PSRegionFeatherInverted(VertDataOut v_out) : TARGET { float alpha = 1.0 - RegionFeathered(v_out.uv); float4 orig = image_orig.Sample(pointSampler, v_out.uv); - float4 blur = image_blur.Sample(pointSampler, v_out.uv); + float4 blur = image_blur.Sample(pointSampler, v_out.uv); return lerp(orig, blur, alpha); } @@ -103,7 +103,7 @@ float4 PSImage(VertDataOut v_out) : TARGET { float4 mask = mask_image.Sample(linearSampler, v_out.uv) * mask_color * mask_multiplier; float alpha = clamp(mask.r + mask.g + mask.b + mask.a, 0.0, 1.0); float4 orig = image_orig.Sample(pointSampler, v_out.uv); - float4 blur = image_blur.Sample(pointSampler, v_out.uv); + float4 blur = image_blur.Sample(pointSampler, v_out.uv); return lerp(orig, blur, alpha); } @@ -148,6 +148,6 @@ technique Image pass { vertex_shader = VSDefault(v_out); - pixel_shader = PSImage(v_out); + pixel_shader = PSImage(v_out); } } diff --git a/data/effects/mipgen.effect b/data/effects/mipgen.effect index 1852dfa..f8e9952 100644 --- a/data/effects/mipgen.effect +++ b/data/effects/mipgen.effect @@ -4,9 +4,9 @@ uniform float2 imageTexel; uniform int level; sampler_state def_sampler { - Filter = Linear; - AddressU = Clamp; - AddressV = Clamp; + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; }; struct VertexData { diff --git a/data/effects/sdf/sdf-producer.effect b/data/effects/sdf/sdf-producer.effect index 8c2e47e..92ac5d8 100644 --- a/data/effects/sdf/sdf-producer.effect +++ b/data/effects/sdf/sdf-producer.effect @@ -13,7 +13,7 @@ // - R: If outside, distance to nearest wall, otherwise 0. // - G: If inside, distance to nearest wall, otherwise 0. // - BA: UV coordinates of nearest wall. -// +// // Version 1.1: // - See Version 1.0 // - Adjusted R, G to be 0..1 range, multiply by 65536.0 to get proper results. @@ -75,17 +75,17 @@ VertDataOut VSDefault(VertDataIn v_in) float4 PS_SDFGenerator_v1(VertDataOut v_in) : TARGET { float4 outval = float4(0.0, 0.0, v_in.uv.x, v_in.uv.y); - + // utility values float2 uv_step = 1.0 / _size; float lowest = NEAR_INFINITE; float2 lowest_source = float2(NEAR_INFINITE, NEAR_INFINITE); float2 lowest_origin = float2(NEAR_INFINITE, NEAR_INFINITE); - - // inputs - float imageA = _image.Sample(imageSampler, v_in.uv).a; + + // inputs + float imageA = _image.Sample(imageSampler, v_in.uv).a; // sdf contains 4 values: R = Positive Distance, G = Negative Distance, BA = UV of nearest edge. - + if (imageA > _threshold) { // Inside // TODO: Optimize to be O(n*n) instead of (2n*2n) @@ -94,12 +94,12 @@ float4 PS_SDFGenerator_v1(VertDataOut v_in) : TARGET if ((x == 0) && (y == 0)) { continue; } - + float2 dtr = float2(x, y); float2 dt = uv_step * dtr; float4 here = _sdf.Sample(sdfSampler, v_in.uv + dt); float dst = abs(distance(float2(0., 0.), dtr)); - + if (lowest > (here.g + dst)) { lowest = here.g + dst; lowest_source = v_in.uv + dt; @@ -107,10 +107,10 @@ float4 PS_SDFGenerator_v1(VertDataOut v_in) : TARGET } } } - if (lowest < NEAR_INFINITE) { - outval.g = lowest; - outval.ba = lowest_origin; - } + if (lowest < NEAR_INFINITE) { + outval.g = lowest; + outval.ba = lowest_origin; + } } else { // Outside // TODO: Optimize to be O(n*n) instead of (2n*2n) @@ -119,12 +119,12 @@ float4 PS_SDFGenerator_v1(VertDataOut v_in) : TARGET if ((x == 0) && (y == 0)) { continue; } - + float2 dtr = float2(x, y); float2 dt = uv_step * dtr; float4 here = _sdf.Sample(sdfSampler, v_in.uv + dt); float dst = abs(distance(float2(0., 0.), dtr)); - + if (lowest > (here.r + dst)) { lowest = here.r + dst; lowest_source = v_in.uv + dt; @@ -132,12 +132,12 @@ float4 PS_SDFGenerator_v1(VertDataOut v_in) : TARGET } } } - if (lowest < NEAR_INFINITE) { - outval.r = lowest; - outval.ba = lowest_origin; - } + if (lowest < NEAR_INFINITE) { + outval.r = lowest; + outval.ba = lowest_origin; + } } - + return outval; } @@ -146,17 +146,17 @@ float4 PS_SDFGenerator_v1_1(VertDataOut v_in) : TARGET const float step = 1.0 / MAX_DISTANCE; float4 outval = float4(0.0, 0.0, v_in.uv.x, v_in.uv.y); - + // utility values float2 uv_step = 1.0 / _size; float lowest = NEAR_INFINITE; float2 lowest_source = float2(NEAR_INFINITE, NEAR_INFINITE); float2 lowest_origin = float2(NEAR_INFINITE, NEAR_INFINITE); - - // inputs + + // inputs float imageA = _image.Sample(imageSampler, v_in.uv).a; float4 self = _sdf.Sample(sdfSampler1_1, v_in.uv); - + if (imageA > _threshold) { // Inside // TODO: Optimize to be O(n*n) instead of (2n*2n) @@ -165,12 +165,12 @@ float4 PS_SDFGenerator_v1_1(VertDataOut v_in) : TARGET if ((x == 0) && (y == 0)) { continue; } - + float2 dtr = float2(x, y); float2 dt = uv_step * dtr; float4 here = _sdf.Sample(sdfSampler1_1, v_in.uv + dt); float dst = abs(distance(float2(0., 0.), dtr)) * step; - + if (lowest > (here.g + dst)) { lowest = here.g + dst; lowest_source = v_in.uv + dt; @@ -178,10 +178,10 @@ float4 PS_SDFGenerator_v1_1(VertDataOut v_in) : TARGET } } } - if (lowest < NEAR_INFINITE) { - outval.g = lowest; - outval.ba = lowest_origin; - } else { + if (lowest < NEAR_INFINITE) { + outval.g = lowest; + outval.ba = lowest_origin; + } else { outval.g = self.g + step; } } else { @@ -192,12 +192,12 @@ float4 PS_SDFGenerator_v1_1(VertDataOut v_in) : TARGET if ((x == 0) && (y == 0)) { continue; } - + float2 dtr = float2(x, y); float2 dt = uv_step * dtr; float4 here = _sdf.Sample(sdfSampler1_1, v_in.uv + dt); float dst = abs(distance(float2(0., 0.), dtr)) * step; - + if (lowest > (here.r + dst)) { lowest = here.r + dst; lowest_source = v_in.uv + dt; @@ -205,14 +205,14 @@ float4 PS_SDFGenerator_v1_1(VertDataOut v_in) : TARGET } } } - if (lowest < NEAR_INFINITE) { - outval.r = lowest; - outval.ba = lowest_origin; - } else { + if (lowest < NEAR_INFINITE) { + outval.r = lowest; + outval.ba = lowest_origin; + } else { outval.r = self.r + step; } } - + return outval; } @@ -224,4 +224,3 @@ technique Draw pixel_shader = PS_SDFGenerator_v1_1(v_in); } } - diff --git a/data/effects/shared.effect b/data/effects/shared.effect index f98e2c3..eed2a74 100644 --- a/data/effects/shared.effect +++ b/data/effects/shared.effect @@ -17,27 +17,27 @@ uniform float4x4 ViewProj; // Samplers //------------------------------------------------------------------------------ sampler_state PointRepeatSampler { - Filter = Point; - AddressU = Repeat; - AddressV = Repeat; + Filter = Point; + AddressU = Repeat; + AddressV = Repeat; }; sampler_state PointClampSampler { - Filter = Point; - AddressU = Clamp; - AddressV = Clamp; + Filter = Point; + AddressU = Clamp; + AddressV = Clamp; }; sampler_state LinearRepeatSampler { - Filter = Linear; - AddressU = Repeat; - AddressV = Repeat; + Filter = Linear; + AddressU = Repeat; + AddressV = Repeat; }; sampler_state LinearClampSampler { - Filter = Linear; - AddressU = Clamp; - AddressV = Clamp; + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; }; //------------------------------------------------------------------------------ diff --git a/data/examples/shaders/filter/posterize.effect b/data/examples/shaders/filter/posterize.effect index d18c835..7ceaaed 100644 --- a/data/examples/shaders/filter/posterize.effect +++ b/data/examples/shaders/filter/posterize.effect @@ -169,7 +169,7 @@ float3 RGBtoHSV(float3 RGBA) { const float e = 1.0e-10; #ifdef RGB_HSV_FASTCONDITIONALMOVE float4 p = RGBA.g < RGBA.b ? float4(RGBA.bg, K.wz) : float4(RGBA.gb, K.xy); - float4 q = RGBA.r < p.x ? float4(p.xyw, RGBA.r) : float4(RGBA.r, p.yzx); + float4 q = RGBA.r < p.x ? float4(p.xyw, RGBA.r) : float4(RGBA.r, p.yzx); #else float4 p = lerp(float4(RGBA.bg, K.wz), float4(RGBA.gb, K.xy), step(RGBA.b, RGBA.g)); float4 q = lerp(float4(p.xyw, RGBA.r), float4(RGBA.r, p.yzx), step(p.x, RGBA.r)); @@ -221,42 +221,42 @@ technique HSV //------------------------------------------------------------------------------ // XYZ <-> RGB float4 RGBtoXYZ( float4 c ) { - float3 tmp; - tmp.x = ( c.r > 0.04045 ) ? pow( ( c.r + 0.055 ) / 1.055, 2.4 ) : c.r / 12.92; - tmp.y = ( c.g > 0.04045 ) ? pow( ( c.g + 0.055 ) / 1.055, 2.4 ) : c.g / 12.92, - tmp.z = ( c.b > 0.04045 ) ? pow( ( c.b + 0.055 ) / 1.055, 2.4 ) : c.b / 12.92; - const float3x3 mat = float3x3( + float3 tmp; + tmp.x = ( c.r > 0.04045 ) ? pow( ( c.r + 0.055 ) / 1.055, 2.4 ) : c.r / 12.92; + tmp.y = ( c.g > 0.04045 ) ? pow( ( c.g + 0.055 ) / 1.055, 2.4 ) : c.g / 12.92, + tmp.z = ( c.b > 0.04045 ) ? pow( ( c.b + 0.055 ) / 1.055, 2.4 ) : c.b / 12.92; + const float3x3 mat = float3x3( 0.4124, 0.3576, 0.1805, - 0.2126, 0.7152, 0.0722, - 0.0193, 0.1192, 0.9505 + 0.2126, 0.7152, 0.0722, + 0.0193, 0.1192, 0.9505 ); float3 r = 100.0 * mul(tmp, mat); - return float4(r.r, r.g, r.b, c.a); + return float4(r.r, r.g, r.b, c.a); } float4 XYZtoRGB( float4 c ) { const float3x3 mat = float3x3( - 3.2406, -1.5372, -0.4986, - -0.9689, 1.8758, 0.0415, - 0.0557, -0.2040, 1.0570 + 3.2406, -1.5372, -0.4986, + -0.9689, 1.8758, 0.0415, + 0.0557, -0.2040, 1.0570 ); - float3 v = mul(c.rgb / 100.0, mat); - float4 r; - r.x = ( v.r > 0.0031308 ) ? (( 1.055 * pow( v.r, ( 1.0 / 2.4 ))) - 0.055 ) : 12.92 * v.r; - r.y = ( v.g > 0.0031308 ) ? (( 1.055 * pow( v.g, ( 1.0 / 2.4 ))) - 0.055 ) : 12.92 * v.g; - r.z = ( v.b > 0.0031308 ) ? (( 1.055 * pow( v.b, ( 1.0 / 2.4 ))) - 0.055 ) : 12.92 * v.b; + float3 v = mul(c.rgb / 100.0, mat); + float4 r; + r.x = ( v.r > 0.0031308 ) ? (( 1.055 * pow( v.r, ( 1.0 / 2.4 ))) - 0.055 ) : 12.92 * v.r; + r.y = ( v.g > 0.0031308 ) ? (( 1.055 * pow( v.g, ( 1.0 / 2.4 ))) - 0.055 ) : 12.92 * v.g; + r.z = ( v.b > 0.0031308 ) ? (( 1.055 * pow( v.b, ( 1.0 / 2.4 ))) - 0.055 ) : 12.92 * v.b; r.a = c.a; - return r; + return r; } // XYZ <-> L*a*b float4 XYZtoLAB( float4 c ) { - float3 n = c.rgb / float3(95.047, 100, 108.883); - float3 v; - v.x = ( n.x > 0.008856 ) ? pow( n.x, 1.0 / 3.0 ) : ( 7.787 * n.x ) + ( 16.0 / 116.0 ); - v.y = ( n.y > 0.008856 ) ? pow( n.y, 1.0 / 3.0 ) : ( 7.787 * n.y ) + ( 16.0 / 116.0 ); - v.z = ( n.z > 0.008856 ) ? pow( n.z, 1.0 / 3.0 ) : ( 7.787 * n.z ) + ( 16.0 / 116.0 ); - return float4( + float3 n = c.rgb / float3(95.047, 100, 108.883); + float3 v; + v.x = ( n.x > 0.008856 ) ? pow( n.x, 1.0 / 3.0 ) : ( 7.787 * n.x ) + ( 16.0 / 116.0 ); + v.y = ( n.y > 0.008856 ) ? pow( n.y, 1.0 / 3.0 ) : ( 7.787 * n.y ) + ( 16.0 / 116.0 ); + v.z = ( n.z > 0.008856 ) ? pow( n.z, 1.0 / 3.0 ) : ( 7.787 * n.z ) + ( 16.0 / 116.0 ); + return float4( ( 116.0 * v.y ) - 16.0, 500.0 * ( v.x - v.y ), 200.0 * ( v.y - v.z ), @@ -265,21 +265,21 @@ float4 XYZtoLAB( float4 c ) { } float4 LABtoXYZ( float4 c ) { - float fy = ( c.x + 16.0 ) / 116.0; - float fx = c.y / 500.0 + fy; - float fz = fy - c.z / 200.0; - return float4( - 95.047 * (( fx > 0.206897 ) ? fx * fx * fx : ( fx - 16.0 / 116.0 ) / 7.787), - 100.000 * (( fy > 0.206897 ) ? fy * fy * fy : ( fy - 16.0 / 116.0 ) / 7.787), - 108.883 * (( fz > 0.206897 ) ? fz * fz * fz : ( fz - 16.0 / 116.0 ) / 7.787), + float fy = ( c.x + 16.0 ) / 116.0; + float fx = c.y / 500.0 + fy; + float fz = fy - c.z / 200.0; + return float4( + 95.047 * (( fx > 0.206897 ) ? fx * fx * fx : ( fx - 16.0 / 116.0 ) / 7.787), + 100.000 * (( fy > 0.206897 ) ? fy * fy * fy : ( fy - 16.0 / 116.0 ) / 7.787), + 108.883 * (( fz > 0.206897 ) ? fz * fz * fz : ( fz - 16.0 / 116.0 ) / 7.787), c.a - ); + ); } // L*a*b <-> RGB float4 RGBtoLAB( float4 c ) { - float4 lab = XYZtoLAB(RGBtoXYZ(c)); - return float4( + float4 lab = XYZtoLAB(RGBtoXYZ(c)); + return float4( lab.x / 100.0, 0.5 + 0.5 * ( lab.y / 127.0 ), 0.5 + 0.5 * ( lab.z / 127.0 ), @@ -288,7 +288,7 @@ float4 RGBtoLAB( float4 c ) { } float4 LABtoRGB( float4 c ) { - return XYZtoRGB( + return XYZtoRGB( LABtoXYZ( float4( 100.0 * c.x, diff --git a/data/examples/shaders/filter/vignette.effect b/data/examples/shaders/filter/vignette.effect index c120b96..8179d1a 100644 --- a/data/examples/shaders/filter/vignette.effect +++ b/data/examples/shaders/filter/vignette.effect @@ -86,11 +86,11 @@ VertData VSDefault(VertData v_in) { } float4 PSDefault(VertData v_in) : TARGET { - static const float2 center = float2(.5, .5); - float4 smp = InputA.Sample(def_sampler, v_in.uv); + static const float2 center = float2(.5, .5); + float4 smp = InputA.Sample(def_sampler, v_in.uv); float borderFade = clamp(((1. - distance(v_in.uv, center)) - (_00_vignette_area - .5)), 0., 1.); - float4 vignette_color = _01_vignette_color; + float4 vignette_color = _01_vignette_color; return lerp(smp, vignette_color, (1. - borderFade) / max(1. - _02_vignette_strength, 0.0001)); } @@ -104,20 +104,20 @@ technique Draw } float4 PSRectangle(VertData v_in) : TARGET { - static const float2 center = float2(.5, .5); - float4 smp = InputA.Sample(def_sampler, v_in.uv); + static const float2 center = float2(.5, .5); + float4 smp = InputA.Sample(def_sampler, v_in.uv); - if (_00_vignette_area < 0.01) - return smp; + if (_00_vignette_area < 0.01) + return smp; float2 borderArea = center * _00_vignette_area; float2 borderDistance = center; - borderDistance -= abs(v_in.uv - center); - borderDistance /= center; - borderDistance -= center * _00_vignette_area; - borderDistance = min(borderDistance, 0); - borderDistance += borderArea; - borderDistance /= borderArea; + borderDistance -= abs(v_in.uv - center); + borderDistance /= center; + borderDistance -= center * _00_vignette_area; + borderDistance = min(borderDistance, 0); + borderDistance += borderArea; + borderDistance /= borderArea; // Now apply a modifier so that we only get the border area. float borderFade = sin(borderDistance.x * HalfPI) * sin(borderDistance.y * HalfPI); diff --git a/data/examples/shaders/transition/pixelator.effect b/data/examples/shaders/transition/pixelator.effect index e2c4b54..e3ad654 100644 --- a/data/examples/shaders/transition/pixelator.effect +++ b/data/examples/shaders/transition/pixelator.effect @@ -33,7 +33,7 @@ uniform int2 TransitionSize< uniform bool _0_oldStyle< string name = "Retro Style"; - + > = false; uniform float2 _1_pixelateCenter< string name = "Pixelation Center"; @@ -85,13 +85,13 @@ VertData VSDefault(VertData v_in) { } float4 PSDefault(VertData v_in) : TARGET { - float animProgress = TransitionTime; + float animProgress = TransitionTime; // Progress as a bounce value (0..1..0) - float animStuff = 1.0 - (abs(animProgress - 0.5) * 2.0); - // There are two ways to calculate this, one is pixel aligned the other is block aligned. + float animStuff = 1.0 - (abs(animProgress - 0.5) * 2.0); + // There are two ways to calculate this, one is pixel aligned the other is block aligned. float animBlockSize = 0; - if (_0_oldStyle) { + if (_0_oldStyle) { // Block Size, always a multiple of 2. (Block Aligned) animBlockSize = pow(2.0, floor(_2_maximumBlockSize * animStuff)); } else { @@ -128,6 +128,6 @@ technique Draw pass { vertex_shader = VSDefault(v_in); - pixel_shader = PSDefault(v_in); + pixel_shader = PSDefault(v_in); } }