Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by ionside · Feb 23, 2013 at 01:59 AM · shaderscustomspecular

Specular from alpha in custom shader

Hi, I've been learning about writing my own shaders, particularly from Kenneth Lemmers youtube tutorials which are great. I currently have a fake BRDF shader with diffuse and normal map included. But I'm having trouble adding specular from the diffuse texture's alpha. I know how to do it using the BlinnPhong surface but unsure with the current code I have here. I've removed any lines that attempt to use specular in the hopes to hopefully prevent confusion. :)

 Shader "Custom/PP_BRDF" 
 {
     Properties 
     {
         _ColorTint ("Colour Tint", Color) = (125,125,125,1)
         _MainTex ("Albedo", 2D) = "white" {}
         _BumpMap ("Normal Map", 2D) = "bump"{}
         _Ramp2D ("BRDF Ramp", 2D) = "gray" {}
     }
     
     
     SubShader 
     {
         Tags { "RenderType"="Opaque" }
         LOD 200
         
         CGPROGRAM
         #pragma surface surf Ramp
         #pragma target 3.0
 
         float4 _ColorTint;
         sampler2D _MainTex;
         sampler2D _BumpMap;
         sampler2D _Ramp2D;
 
         
 
         struct Input 
         {
             float4 color : Color;
             float2 uv_MainTex;
             float2 uv_BumpMap;
         };
         
         half4 LightingRamp (SurfaceOutput s,half3 lightDir, half3 viewDir, half atten)
         {
             float NdotL = dot(s.Normal, lightDir);
             float NdotE = dot(s.Normal, viewDir);
             
             //Diffuse Wrap
             float diff = (NdotL * 0.5) + 0.5;
             float2 brdfUV = float2(NdotE, diff);
             float3 BRDF = tex2D(_Ramp2D, brdfUV.xy).rgb;
             
             float4 c;
             c.rgb = BRDF;
             c.a = s.Alpha;
             return c;
         }
         
 
         void surf (Input IN, inout SurfaceOutput o)
         {
             half4 c = float4(0.5,0.5,0.5,1)/ tex2D (_MainTex, IN.uv_MainTex)/2;
             IN.color = _ColorTint;
             o.Albedo = tex2D(_MainTex, IN.uv_MainTex) * IN.color/c.rgb * 2;
             o.Alpha = c.a;
             
             
             o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
         }
         ENDCG
     } 
     FallBack "Diffuse"
 }
 
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by nsxdavid · Feb 25, 2013 at 07:23 AM

Roughly, I think what you want is this:

 half4 texColor = tex2D(_MainTex,IN.uv_MainTex);
 o.Specular = texColor.a
Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image ionside · Feb 25, 2013 at 08:03 AM 0
Share

Hey nsxdavid, thanks for giving it a shot. Unfortunately that alone only works if using a BlinnPhong Surface. Lighting.cginc has the code the inbuilt BlinnPhong reads, I'm unsure how to transfer that into the custom shader.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

11 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How do i remove specular/fresnel effect?,How do I remove fresnel or specular effect? 0 Answers

Why does the 3D Text shader show specular at certain angles? 2 Answers

How to make an unlit shader use spec and normal maps? 2 Answers

Custom specular reflection cubemap Unity script throwing errors. 0 Answers

Specular problem 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges