Difference between revisions of "User:Bo3b"
From Bo3b's School for Shaderhackers
(→Lesson 3. Interesting, right?) |
|||
(4 intermediate revisions by one user not shown) | |||
Line 7: | Line 7: | ||
This is first shader file, Pixel Shader of entire ball. | This is first shader file, Pixel Shader of 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: | ||
// | // | ||
− | |||
− | |||
// sampler2D Texture2D_0; | // sampler2D Texture2D_0; | ||
− | + | // float UniformPixelScalar_7; | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | // float | + | |
− | + | ||
− | + | ||
− | + | ||
// float4 UniformPixelVector_0; | // float4 UniformPixelVector_0; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
// float4 UniformPixelVector_3; | // float4 UniformPixelVector_3; | ||
// float4 UniformPixelVector_4; | // float4 UniformPixelVector_4; | ||
// float4 UniformPixelVector_5; | // float4 UniformPixelVector_5; | ||
// float4 UniformPixelVector_6; | // float4 UniformPixelVector_6; | ||
− | |||
− | |||
− | |||
// | // | ||
// | // | ||
// Registers: | // Registers: | ||
// | // | ||
− | // Name | + | // Name Reg Size |
− | // | + | // -------------------- ----- ---- |
− | // UniformPixelVector_0 | + | // 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 |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | // Texture2D_0 | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
// | // | ||
ps_3_0 | ps_3_0 | ||
− | def c1, 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 | |
− | + | ||
− | + | ||
− | def | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
dcl_2d s0 | 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 | |
− | add | + | mov oC0.w, c1.w |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | texld | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | mul | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | mul r0. | + | |
− | + | ||
− | + | ||
− | mul | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | mad | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | mad r0.xyz, | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | mul | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | mul | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | mad_pp r0 | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | mul_pp | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | // approximately | + | // Disable game-breaking bloom effect |
+ | mov oC0.xyzw, c1.wwww | ||
+ | |||
+ | // approximately 21 instruction slots used (1 texture, 20 arithmetic) | ||
+ | |||
</nowiki> | </nowiki> | ||
+ | |||
+ | == Lesson 2. Amazing right? == | ||
+ | Done! First effect disabled. | ||
+ | |||
+ | Before: | ||
+ | [[File:Before TheBall01 85 - Copy.jpg|700px]] | ||
+ | |||
+ | After: | ||
+ | [[File:After TheBall02 85 - Copy.jpg|700px]] | ||
+ | |||
+ | |||
+ | == Lesson 3. Interesting, right? == | ||
+ | Works with toggle or with momentary style. Tried middle mouse button and right-ctrl key. Can't take snapshot with ctrl in use though. | ||
+ | |||
+ | Also worth noting that changing the color doesn't give us only the bloom as purple, it gives the whole box. That's because this is some sort of mask for the effect, not the actual output color. | ||
+ | |||
+ | <nowiki> | ||
+ | [KEY1] | ||
+ | Key = 4 | ||
+ | Presets = 1;2; | ||
+ | Type = 2 | ||
+ | </nowiki> | ||
+ | |||
+ | <nowiki> | ||
+ | // Annoying bloom on ball light | ||
+ | |||
+ | // | ||
+ | ... | ||
+ | ps_3_0 | ||
+ | |||
+ | //def c220, Const1, Const2, Const3, Const4 | ||
+ | def c200, 0, 1, 0.0625, 0 // x=0 for comparison to Const1 | ||
+ | def c201, 1, 0, 1, 1 // purple color as r,g,b,a | ||
+ | |||
+ | def c1, 0.5, 1, -0.5, 0 | ||
+ | def c2, 3, 0, 0, 0 | ||
+ | dcl_texcoord v0.xy | ||
+ | dcl_texcoord1 v1 | ||
+ | ... | ||
+ | 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 | ||
+ | mov oC0.rgba, c201.rgba // if it's active, make it purple | ||
+ | |||
+ | // Disable game-breaking bloom effect | ||
+ | // if Const1 = 0 disable effect, else leave it on | ||
+ | mov r30.x, c220.x | ||
+ | if_eq r30.x, c200.x | ||
+ | mov oC0.xyzw, c200.wwww | ||
+ | endif | ||
+ | </nowiki> | ||
+ | |||
+ | [[File:PurpleRain.jpg|700px]] | ||
+ | |||
+ | |||
+ | Test URL captcha: [http://mailboxes.wiki.bo3b.net/?current_step=Index&next_step=MainPage capped] |
Latest revision as of 00:57, 10 October 2014
Contents
Lesson 0. Easy right?
Lesson 1. Scary right?
This is first shader file, Pixel Shader of 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. Amazing right?
Done! First effect disabled.
Lesson 3. Interesting, right?
Works with toggle or with momentary style. Tried middle mouse button and right-ctrl key. Can't take snapshot with ctrl in use though.
Also worth noting that changing the color doesn't give us only the bloom as purple, it gives the whole box. That's because this is some sort of mask for the effect, not the actual output color.
[KEY1] Key = 4 Presets = 1;2; Type = 2
// Annoying bloom on ball light // ... ps_3_0 //def c220, Const1, Const2, Const3, Const4 def c200, 0, 1, 0.0625, 0 // x=0 for comparison to Const1 def c201, 1, 0, 1, 1 // purple color as r,g,b,a def c1, 0.5, 1, -0.5, 0 def c2, 3, 0, 0, 0 dcl_texcoord v0.xy dcl_texcoord1 v1 ... 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 mov oC0.rgba, c201.rgba // if it's active, make it purple // Disable game-breaking bloom effect // if Const1 = 0 disable effect, else leave it on mov r30.x, c220.x if_eq r30.x, c200.x mov oC0.xyzw, c200.wwww endif
Test URL captcha: capped