Difference between revisions of "User:Lenyskills"

From Bo3b's School for Shaderhackers
Jump to: navigation, search
Line 7: Line 7:
 
My first shader file of the entire ball
 
My first shader file of the entire ball
  
  <nowiki>//
+
  <nowiki>// Annoying bloom on ball light
 +
//
 
// Generated by Microsoft (R) HLSL Shader Compiler 9.27.952.3022
 
// Generated by Microsoft (R) HLSL Shader Compiler 9.27.952.3022
 
//
 
//
 
// Parameters:
 
// Parameters:
 
//
 
//
//  float4 AmbientColorAndSkyFactor;
 
//  float4 MinZ_MaxZRatio;
 
 
//  sampler2D Texture2D_0;
 
//  sampler2D Texture2D_0;
//  sampler2D Texture2D_1;
+
//  float UniformPixelScalar_7;
//  sampler2D Texture2D_2;
+
//  sampler2D Texture2D_3;
+
//  sampler2D Texture2D_4;
+
//  sampler2D Texture2D_5;
+
//  sampler2D Texture2D_6;
+
//  sampler2D Texture2D_7;
+
//  sampler2D Texture2D_8;
+
//  float UniformPixelScalar_23;
+
//  float UniformPixelScalar_24;
+
//  float UniformPixelScalar_5;
+
//  float UniformPixelScalar_6;
+
 
//  float4 UniformPixelVector_0;
 
//  float4 UniformPixelVector_0;
//  float4 UniformPixelVector_1;
 
//  float4 UniformPixelVector_10;
 
//  float4 UniformPixelVector_11;
 
//  float4 UniformPixelVector_12;
 
//  float4 UniformPixelVector_13;
 
//  float4 UniformPixelVector_14;
 
//  float4 UniformPixelVector_15;
 
//  float4 UniformPixelVector_16;
 
//  float4 UniformPixelVector_17;
 
//  float4 UniformPixelVector_18;
 
//  float4 UniformPixelVector_2;
 
 
//  float4 UniformPixelVector_3;
 
//  float4 UniformPixelVector_3;
 
//  float4 UniformPixelVector_4;
 
//  float4 UniformPixelVector_4;
 
//  float4 UniformPixelVector_5;
 
//  float4 UniformPixelVector_5;
 
//  float4 UniformPixelVector_6;
 
//  float4 UniformPixelVector_6;
//  float4 UniformPixelVector_7;
 
//  float4 UniformPixelVector_8;
 
//  float4 UniformPixelVector_9;
 
 
//
 
//
 
//
 
//
 
// Registers:
 
// Registers:
 
//
 
//
//  Name                     Reg  Size
+
//  Name                 Reg  Size
//  ------------------------ ----- ----
+
//  -------------------- ----- ----
//  UniformPixelVector_0     c0      1
+
//  UniformPixelVector_0 c0      1
//  MinZ_MaxZRatio          c2      1
+
//  UniformPixelVector_3 c4      1
//  UniformPixelVector_1    c4      1
+
//  UniformPixelVector_4 c5      1
//  UniformPixelVector_2    c5      1
+
//  UniformPixelVector_5 c6      1
//  UniformPixelVector_3    c6      1
+
//  UniformPixelVector_6 c7      1
//  UniformPixelVector_4    c7      1
+
//  UniformPixelScalar_7 c8      1
//  UniformPixelVector_5    c8      1
+
//  Texture2D_0         s0      1
//  UniformPixelVector_6    c9      1
+
//  UniformPixelVector_7    c10      1
+
//  UniformPixelVector_8    c11      1
+
//  UniformPixelVector_9    c12      1
+
//  UniformPixelVector_10    c13      1
+
//  UniformPixelVector_11    c14      1
+
//  UniformPixelVector_12    c15      1
+
//  UniformPixelVector_13    c16      1
+
//  UniformPixelVector_14    c17      1
+
//  UniformPixelVector_15    c18      1
+
//  UniformPixelVector_16    c19      1
+
//  UniformPixelVector_17    c20      1
+
//  UniformPixelVector_18    c21      1
+
//  UniformPixelScalar_5    c22      1
+
//  UniformPixelScalar_6    c23      1
+
//  UniformPixelScalar_23    c24      1
+
//  UniformPixelScalar_24    c25      1
+
//  AmbientColorAndSkyFactor c26      1
+
//  Texture2D_0             s0       1
+
//  Texture2D_1              s1      1
+
//  Texture2D_2              s2      1
+
//  Texture2D_3              s3      1
+
//  Texture2D_4              s4      1
+
//  Texture2D_5              s5      1
+
//  Texture2D_6              s6      1
+
//  Texture2D_7              s7      1
+
//  Texture2D_8              s8       1
+
 
//
 
//
  
 
     ps_3_0
 
     ps_3_0
     def c1, 0.75, -9.99999997e-007, 6, -0.333299994
+
     def c1, 0.5, 1, -0.5, 0
    def c3, 0.666700006, 1.5, 0.0250000004, 4
+
     def c2, 3, 0, 0, 0
    def c27, 5, 0.5, 6.28318548, -3.14159274
+
     dcl_texcoord v0.xy
    def c28, 0.200000003, 0.100000001, 10, 0.800000012
+
     dcl_texcoord1 v1
    def c29, 0.300000012, 0.589999974, 0.109999999, 0.600000024
+
     dcl_texcoord2 v2.y
    def c30, 1.5, 0.649999976, 0, 0
+
     dcl_texcoord4 v3.w
    def c31, 0.5, -0.5, 8, 17
+
    def c32, 2, -1, -0.5, 0
+
     def c33, 1.25, 1, 0, 0
+
    def c34, 9, 0.5, 0.200000003, 0.100000001
+
     def c35, 0.450000018, 100, 90, 0.100000001
+
    def c36, 0.816496611, 0.577350259, 0, 0
+
    def c37, -0.707106769, -0.408248305, 0.577350259, 0.707106769
+
    dcl_texcoord2_pp v0.xyz
+
     dcl_texcoord3_pp v1.xyz
+
     dcl_texcoord5 v2.w
+
     dcl_texcoord6 v3.xyz
+
    dcl_color v4.xyz
+
    dcl_color1 v5
+
    dcl_texcoord v6
+
 
     dcl_2d s0
 
     dcl_2d s0
     dcl_2d s1
+
     add r0.xy, c1.z, v0
    dcl_2d s2
+
     mov r0.w, c1.w
    dcl_2d s3
+
     dp2add r1.x, c5, r0, r0.w
    dcl_2d s4
+
     dp2add r1.y, c6, r0, r0.w
    dcl_2d s5
+
     add r0.xy, r1, c1.x
    dcl_2d s6
+
     texld r0, r0, s0
    dcl_2d s7
+
     mad_sat r0.y, v2.y, -c1.x, c1.y
    dcl_2d s8
+
     mul r0.yzw, r0.y, v1.xxyz
    mul r0.xy, c1.x, v6
+
     mul r0.yzw, r0, v1.w
     texld r0, r0, s8
+
     mul_sat r0.xyz, r0.yzww, r0.x
    add r0.y, r0_abs.x, c1.y
+
     mul r1.xyz, r0, c4
     pow r1.x, r0_abs.x, c25.x
+
     mad r0.xyz, c4, -r0, r0
    cmp r0.y, r0.y, r1.x, c32.w
+
     mad r0.xyz, c8.x, r0, r1
     lrp r1.x, c24.x, r0.y, r0.x
+
     mul r0.xyz, r0, c4.w
    mul r0.x, r1.x, c24.x
+
     mul r0.xyz, r0, c7
    mul_sat r0.x, r0.x, c1.z
+
     mov r1.x, c2.x
    add r0.x, r0.x, c1.w
+
     mad_pp r0.xyz, r0, r1.x, c0
    mov r1, c32
+
     mul_pp oC0.xyz, r0, v3.w
     add r0.y, r1.y, c24.x
+
     mov oC0.w, c1.w
    cmp r0, r0.y, c3.x, r0.x
+
    texkill r0
+
    mov r0.y, c3.y
+
    mad r0.xy, v6, r0.y, c11
+
    texld r0, r0, s2
+
    mad r0.xz, v6.xyyw, r1.x, c12.xyyw
+
    texld r2, r0.xzzw, s2
+
    mul r0.x, r2.y, c3.z
+
    mad r0.x, r0.y, r2.y, r0.x
+
    add r0.yz, c9.xxyw, v6.xxyw
+
     texld r2, r0.yzzw, s2
+
    mad r0.yz, v6.xxyw, -r1.z, c10.xxyw
+
     texld r3, r0.yzzw, s2
+
    mul r0.y, r2.x, r3.x
+
    mad r0.x, r0.y, c3.w, r0.x
+
    mul r0.xyz, r0.x, c8
+
    mov r1.x, c23.x
+
    mul r0.w, r1.x, c13.x
+
    mad r0.w, r0.w, c27.x, c27.y
+
    frc r0.w, r0.w
+
    mad r0.w, r0.w, c27.z, c27.w
+
    sincos r2.y, r0.w
+
    mul r2.xyz, r0, r2.y
+
    mad r0.xyz, r2, c32.z, r0
+
    nrm_pp r2.xyz, v4
+
    nrm_pp r3.xyz, v5
+
    mul_pp r4.xyz, r2.yzxw, r3.zxyw
+
    mad_pp r4.xyz, r3.yzxw, r2.zxyw, -r4
+
    mul r4.xyz, r4, v5.w
+
    mov r5.y, r4.z
+
    dp3 r4.y, r4, c19
+
    mov_pp r5.x, r2.z
+
    dp3 r4.x, r2, c19
+
    mov_pp r5.z, r3.z
+
    dp3 r0.w, r5, r5
+
    rsq r0.w, r0.w
+
    mul r0.w, r0.w, r5.z
+
    dp3 r4.z, r3, c19
+
    mad r0.w, r0.w, c29.w, c29.w
+
    mul r1.x, r0_abs.w, r0_abs.w
+
    add r0.w, r0_abs.w, c1.y
+
     mul r1.x, r1.x, r1.x
+
    mul r1.x, r1.x, r1.x
+
    mul r1.x, r1.x, c3.w
+
    cmp r0.w, r0.w, r1.x, c32.w
+
    min r1.x, r0.w, c28.w
+
    dp3 r0.w, r4, r4
+
    rsq r0.w, r0.w
+
    mul r0.w, r0.w, r4.z
+
    mad r0.w, r0.w, c31.y, c31.x
+
    add r2.x, r0_abs.w, c1.y
+
     mul r0.w, r0_abs.w, r0_abs.w
+
    mul r0.w, r0.w, r0.w
+
     mul r0.w, r0.w, r0.w
+
     mul r0.w, r0.w, c3.w
+
    cmp r0.w, r2.x, r0.w, c32.w
+
    min r2.x, r0.w, c28.w
+
    add r0.w, -r2.x, -c32.y
+
    mad r0.w, c20.x, r0.w, r2.x
+
    mad r2.xy, v6.wzzw, c31.x, c31.y
+
    dp2add r3.x, c17, r2, r1.w
+
    dp2add r3.y, c18, r2, r1.w
+
    add r2.xy, r3, -c32.z
+
    texld r2, r2, s6
+
    add r2.xyz, r2, c30
+
    mov r3.yzw, c32_abs.xyxw
+
    texld r4, v6, s3
+
    dp3 r2.w, r4, c29
+
    mul r3.x, r2.w, c28.z
+
    mul r2.xyz, r2, r3.xyxw
+
    mul r2.xyz, r2, r3.zxww
+
    mul r2.xyz, r0.w, r2
+
    add r3.xy, v6, v6
+
    nrm r5.xyz, v3
+
     mad r3.xy, r5, c35.x, r3
+
    texld r3, r3, s4
+
    mul r3.xyz, r3.y, c35.yzzw
+
    max r6.xyz, r4_abs, -c1.y
+
    log r7.x, r6.x
+
    log r7.y, r6.y
+
    log r7.z, r6.z
+
    mul r6.xyz, r7, c3.y
+
    exp r7.x, r6.x
+
    exp r7.y, r6.y
+
    exp r7.z, r6.z
+
    mad r3.xyz, r3, r7, r4
+
    texld r6, v6, s5
+
    mul r3.xyz, r3, r6.x
+
    mul r7.xyz, r4, c28.xyyw
+
    mad r3.xyz, r3, c35.w, r7
+
    mad r3.xyz, r6.z, c15, r3
+
    mad r2.xyz, c16.x, r2, r3
+
    mul r3.xyz, r4, c32_abs
+
    mad r2.xyz, r1.x, r3, r2
+
    mul r0.w, r4.w, c21.x
+
    mad r2.xyz, r0.w, c32_abs.xzww, r2
+
     mad r0.xyz, c14.x, r0, r2
+
    add_pp r0.xyz, r0, c0
+
    mad r0.w, r5.z, -c33.x, c33.y
+
    cmp r0.w, r5.z, r0.w, -c32.y
+
    mul r1.x, r0_abs.w, r0_abs.w
+
     mul r1.x, r1.x, r1.x
+
    mul r1.x, r0_abs.w, r1.x
+
    add r0.w, r0_abs.w, c1.y
+
    mad r2.xyz, r4, c34.x, c34.yzww
+
    mul r2.xyz, r1.x, r2
+
    cmp r2.xyz, r0.w, r2, c32.w
+
    add r2.xyz, r2, r4
+
    add r3.xyz, -r1.y, -c0
+
    mul_pp r2.xyz, r2, r3
+
    mul_pp r3.xyz, r2, v0
+
    mad r1.xy, c22.x, v6, r1.z
+
    dp2add r4.x, c5, r1, r1.w
+
    dp2add r4.y, c6, r1, r1.w
+
    add r1.xy, r4, -c32.z
+
    texld r1, r1, s1
+
    mad r1.xyz, r1, c32.x, c32.y
+
     mul r1.xyz, r1, c7
+
    texld r4, v6, s0
+
    mad r4.xyz, r4, c32.x, c32.y
+
    mad_pp r1.xyz, r4, c4, r1
+
    nrm_pp r4.xyz, r1
+
    dp3 r0.w, r4, r5
+
    mul r1.xyz, r0.w, r4
+
     mad r1.xyz, r1, c32.x, -r5
+
    dp2add_sat_pp r5.x, r1.yzzw, c36, c36.z
+
    dp3_sat_pp r5.y, r1, c37
+
    dp3_sat_pp r5.z, r1.yzxw, c37.yzww
+
    max r1.xyz, r5, -c1.y
+
    log r5.x, r1.x
+
    log r5.y, r1.y
+
    log r5.z, r1.z
+
     mad_pp r0.w, r6.x, c31.z, c31.w
+
    mul r1.xyz, r6.y, c32_abs.xzww
+
    mul r5.xyz, r5, r0.w
+
    exp_pp r6.x, r5.x
+
    exp_pp r6.y, r5.y
+
    exp_pp r6.z, r5.z
+
    dp3_pp r0.w, v1, r6
+
    texld r5, v6, s7
+
    mad_pp r1.xyz, r5, c3.w, r1
+
    mul_pp r1.xyz, r1, v0
+
    mul_pp r1.xyz, r0.w, r1
+
    dp2add_sat_pp r5.x, r4.yzzw, c36, c36.z
+
    dp3_sat_pp r5.y, r4, c37
+
    dp3_sat_pp r5.z, r4.yzxw, c37.yzww
+
     mul_pp r4.xyz, r5, r5
+
    max_pp r5.xyz, r4, -c1.y
+
    dp3_pp r0.w, v1, r5
+
    mad_pp r1.xyz, r3, r0.w, r1
+
    add_pp r0.xyz, r0, r1
+
    mad_pp oC0.xyz, r2, c26, r0
+
    rcp r0.x, v2.w
+
     mad_pp oC0.w, c2.x, r0.x, c2.y
+
  
// approximately 188 instruction slots used (12 texture, 176 arithmetic)
+
// Disable game-breaking bloom effect
 +
mov oC0.xyzw, c1.wwww
 +
 
 +
// approximately 21 instruction slots used (1 texture, 20 arithmetic)
 
  </nowiki>
 
  </nowiki>
 +
 +
== Lesson 2 ==
 +
Done ! First effect disabled.
 +
 +
Before :
 +
[[File:Before TheBall.jpg|700px]]
 +
 +
After :
 +
[[File:After TheBall.jpg|700px]]

Revision as of 09:12, 18 June 2017

Lesson 0: ok, it's easy ...

TheBall02 50.jpg


Lesson 1: A little scary, Yes!

My first shader file of the entire ball

// Annoying bloom on ball light
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.27.952.3022
//
// Parameters:
//
//   sampler2D Texture2D_0;
//   float UniformPixelScalar_7;
//   float4 UniformPixelVector_0;
//   float4 UniformPixelVector_3;
//   float4 UniformPixelVector_4;
//   float4 UniformPixelVector_5;
//   float4 UniformPixelVector_6;
//
//
// Registers:
//
//   Name                 Reg   Size
//   -------------------- ----- ----
//   UniformPixelVector_0 c0       1
//   UniformPixelVector_3 c4       1
//   UniformPixelVector_4 c5       1
//   UniformPixelVector_5 c6       1
//   UniformPixelVector_6 c7       1
//   UniformPixelScalar_7 c8       1
//   Texture2D_0          s0       1
//

    ps_3_0
    def c1, 0.5, 1, -0.5, 0
    def c2, 3, 0, 0, 0
    dcl_texcoord v0.xy
    dcl_texcoord1 v1
    dcl_texcoord2 v2.y
    dcl_texcoord4 v3.w
    dcl_2d s0
    add r0.xy, c1.z, v0
    mov r0.w, c1.w
    dp2add r1.x, c5, r0, r0.w
    dp2add r1.y, c6, r0, r0.w
    add r0.xy, r1, c1.x
    texld r0, r0, s0
    mad_sat r0.y, v2.y, -c1.x, c1.y
    mul r0.yzw, r0.y, v1.xxyz
    mul r0.yzw, r0, v1.w
    mul_sat r0.xyz, r0.yzww, r0.x
    mul r1.xyz, r0, c4
    mad r0.xyz, c4, -r0, r0
    mad r0.xyz, c8.x, r0, r1
    mul r0.xyz, r0, c4.w
    mul r0.xyz, r0, c7
    mov r1.x, c2.x
    mad_pp r0.xyz, r0, r1.x, c0
    mul_pp oC0.xyz, r0, v3.w
    mov oC0.w, c1.w

// Disable game-breaking bloom effect
mov oC0.xyzw, c1.wwww

// approximately 21 instruction slots used (1 texture, 20 arithmetic)
 

Lesson 2

Done ! First effect disabled.

Before :

Before TheBall.jpg

After :

After TheBall.jpg