Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct Vertex
- {
- float4 pos : POSITION;
- float2 tex : TEXTURE;
- float3 norm : NORMAL;
- };
- struct PixelShaderArgs
- {
- float4 pos : SV_POSITION;
- float2 col : TEXTURE;
- float3 norm : NORMAL;
- };
- struct NoiseShaderData
- {
- float2 Resolution;
- float ElapsedTime;
- float Padding;
- };
- Texture2D ShaderTexture : register(t0);
- SamplerState Sampler : register(s0);
- float4x4 localMatrix : register(b0);
- cbuffer NoiseShaderDataBuffer : register(b1)
- {
- NoiseShaderData NoiseData;
- };
- PixelShaderArgs VertexShaderMain(Vertex vertex)
- {
- PixelShaderArgs output;
- output.pos = vertex.pos;
- output.col = vertex.tex;
- return output;
- }
- float squares16(uint ctr)
- {
- const uint key = uint(0x7a1a912f);
- const float two16 = 65536.0;
- uint x, y, z;
- y = ctr * key;
- z = (ctr + uint(1)) * key;
- x = y;
- x = x * x + y;
- x = (x >> 16) | (x << 16);
- x = x * x + z;
- x = (x >> 16) | (x << 16);
- x = (x * x + y) >> 16;
- return float(x) / two16;
- }
- float pixel_id(float2 fragCoord)
- {
- return dot(fragCoord.xy,
- float2(1, NoiseData.Resolution.x));
- }
- float4 PixelShaderMain(PixelShaderArgs pixelShaderArgs) : SV_Target
- {
- float id = pixel_id(pixelShaderArgs.pos.xy);
- int cnt_pixels = int(NoiseData.Resolution.x * NoiseData.Resolution.y);
- float result = squares16(uint(id) + uint(NoiseData.ElapsedTime * cnt_pixels));
- float3 col = float3(result,result,result);
- float4 diffuse = ShaderTexture.Sample(Sampler,pixelShaderArgs.col);
- return float4(diffuse.rgb * col, 1.0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement