Home | Rules and Guide | Sign In/Create Account | Write a Post | Reddit | #LD48 | #ludumdare on irc.afternet.org (Info)

Ludum Dare 31 — Coming December 5th-8th 2014! — Join the Mailing List!
Also check out the Ludum Dare 30 results!
  • Ludum Dare 31 begins: in 73 days, 18 hours, 38 minutes, 30 seconds
  • (Time might be off, we’ll have it right soon) | Real World Gatherings (Now Open!)

    Do shaders count as “content”?

    Posted by
    April 17th, 2009 3:08 am

    Just wondering:

    Do HLSL shaders count as “content” (in which case they must be written during the compo) or “part of a graphics library” (in which case they can be written before the compo)?

    Tags: , ,

    2 Responses to “Do shaders count as “content”?”

    1. dertom says:

      I would say it is something that counts as library. To be sure add a link to your HLSL-script.

    2. 5parrowhawk says:

      I’ll do that as soon as I’ve written it. :D Probably within the next 3-4 hours, actually.

      edit: lol, here you go. mostly borrowed from Mike Schuld with a bit of hackery-pokery. this comment thing doesn’t seem to like indents but I’m too tired to care right now.

      float4x4 World;
      float4x4 View;
      float4x4 Projection;
      sampler TextureSampler;
      float3 EyePosition;
      float4 DiffuseColor;
      float4 AmbientColor;
      float4 SpecularColor;
      float SpecularPower;
      float3 LightPosition;
      float4 LightDiffuseColor;
      float4 LightAmbientColor;
      float4 LightSpecularColor;
      struct VS_INPUT
      float4 Position : POSITION0;
      float2 Texcoord : TEXCOORD0;
      float3 Normal : NORMAL0;
      struct VS_OUTPUT
      float4 Position : POSITION0;
      float2 Texcoord : TEXCOORD0;
      float3 Normal : TEXCOORD1;
      float3 ViewDirection : TEXCOORD2;
      float3 LightDirection : TEXCOORD3;
      VS_OUTPUT Transform(VS_INPUT Input)
      float4x4 WorldViewProject = mul(mul(World, View), Projection);
      float3 ObjectPosition = mul(Input.Position, World);
      VS_OUTPUT Output;
      Output.Position = mul(Input.Position, WorldViewProject);
      Output.Normal = mul(Input.Normal, World);
      Output.ViewDirection = EyePosition - ObjectPosition;
      Output.Texcoord = Input.Texcoord;
      Output.LightDirection = LightPosition - ObjectPosition;
      return Output;
      struct PS_INPUT
      float2 Texcoord : TEXCOORD0;
      float3 Normal : TEXCOORD1;
      float3 ViewDirection : TEXCOORD2;
      float3 LightDirection : TEXCOORD3;
      float4 BasicShader(PS_INPUT Input) : COLOR0
      float3 Normal = normalize(Input.Normal);
      float3 ViewDirection = normalize(Input.ViewDirection);
      float3 LightDirection = normalize(Input.LightDirection);
      float EdgeComponent = dot(Normal, ViewDirection);
      float OutlineComponent = saturate(max(EdgeComponent,0));
      float4 TotalAmbient = saturate(AmbientColor * LightAmbientColor * ((EdgeComponent/4.0)+0.75));
      float NDotL = dot(Normal, LightDirection);
      float4 DiffuseAverage = DiffuseColor * LightDiffuseColor;
      float4 TotalDiffuse = saturate(DiffuseAverage * NDotL);
      float3 Reflection = normalize(2.0f * NDotL * Normal - LightDirection);
      float RDotV = max(0.0f, dot(Reflection, ViewDirection));
      float4 TotalSpecular = saturate(LightSpecularColor * pow(RDotV, SpecularPower));
      float4 FinalColor = saturate(TotalAmbient + TotalDiffuse);
      return saturate(FinalColor * ((FinalColor * 0.1)+(tex2D(TextureSampler, Input.Texcoord)*0.9)) + TotalSpecular);
      technique BasicShader
      pass P0
      VertexShader = compile vs_2_0 Transform();
      PixelShader = compile ps_2_0 BasicShader();
      AlphaBlendEnable = false;
      AlphaTestEnable = false;
      ZEnable = true;
      ZWriteEnable = true;
      CullMode = None;

    Leave a Reply

    You must be logged in to post a comment.

    All posts, images, and comments are owned by their creators.

    [cache: storing page]