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 Kyuu · Apr 21, 2015 at 06:43 AM · shaderplanetspecular

Help with planet shader.

Hello!

I have a problem regarding the shader for my planet. I want to have a "Specular mask" so the water will be shiny, but the surface won't. I have a shader written, and got it to work partially. (Note; I don't know much about writing shaders)

This is the shader right now:

 Shader "PlanetShader" {
         Properties 
         {
             _Color("Main Color", Color) = (1,1,1,1)
             _SpecColor("Specular Color", Color) = (0.5,0.5,0.5,1)
             _Shininess("Shininess", Range (0.01, 1)) = 0.078125
             _MainTex("Base(RGB) Spec(A)", 2D) = "white" {}
             _BumpMap("Bumpmap", 2D) = "bump" {}
             _SpecMap("Specular (R) Gloss (G)", 2D) = "gray" {}
             _RimColor("Rim Color", Color) = (0.26,0.19,0.16,0.0)
             _RimPower("Rim Power", Range(0,8.0)) = 3.0
         }
     
         SubShader 
         {
             Tags { "RenderType" = "Opaque" }
     
             CGPROGRAM
             #pragma surface surf Planet //<Remember this!
     
             half _Shininess;
             sampler2D _MainTex;
             sampler2D _BumpMap;
             sampler2D _SpecMap;
             fixed _Gloss;
             fixed4 _Color;
             float4 _RimColor;
             float _RimPower;
     
             half4 LightingPlanet (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten) 
             {
                 half3 h = normalize (lightDir + viewDir);
                 half diff = max (0, dot (s.Normal, lightDir));
                 float nh = max (0, dot (s.Normal, h));
                 float spec = pow (nh, 48.0);
                 half rim = ((1 - (dot (normalize(viewDir), (s.Normal)))) + ((dot (normalize(lightDir), (s.Normal)))));
                 half4 c;
                 c.rgb = (s.Albedo * _LightColor0.rgb * diff + _LightColor0.rgb * spec * s.Alpha * _Shininess * _SpecColor) * (atten * 2);
                 c.rgb = c.rgb  * (pow (rim, _RimPower) * _RimColor.rgb);
                 return c;
             }
     
             struct Input 
             {
                 float2 uv_MainTex;
                 float2 uv_BumpMap;
                 float2 uv_SpecMap;
                 float3 viewDir;
                 float3 worldRefl; INTERNAL_DATA
             };
     
             void surf (Input IN, inout SurfaceOutput o) 
             {
                 fixed4 tex = tex2D (_MainTex, IN.uv_MainTex);
                 fixed4 specTex = tex2D (_SpecMap, IN.uv_SpecMap);
                 o.Albedo =  tex.rgb * _Color.rgb;
                 o.Gloss = specTex.r;
                 o.Alpha = tex.a * _Color.a;
                 o.Specular = _Shininess * specTex.g;
                 o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
             }
             ENDCG
         } 
         Fallback "Diffuse"
     }

Now this works great for the actual lighting on the planet, but not for the reflection. However, when I change "#pragma surface surf Planet" to " #pragma surface surf BlinnPhong" I get the reflection how I want it (On the water, not on surface).

My question is; How do I get both?

alt text

The right planetary shader

alt text

The wanted reflections (On the water, not the surface)

ss2015-04-20at025448.jpg (227.5 kB)
ss2015-04-20at025507.jpg (160.6 kB)
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 hamokshaelzaki · Jan 11, 2017 at 09:06 PM

You have to use a mask texture (binary can be fine) and use it on the shader, and increase the specular based on the value of the texture Another solution is to separate the land in another texture that has faded water and apply the two materials over each other

Comment
Add comment · 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

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

2 People are following this question.

avatar image avatar image

Related Questions

transparent + reflection shader (river water problems) 2 Answers

Sharp reflections despite material smoothness? 0 Answers

[FOUND] Mobile shader with those mixed effects : Transparency, specular, diffuse, cubemap reflection ? 2 Answers

Lighted Toon with Highlight 0 Answers

Unity Shader: Specular reflection as Alpha Value. 2 Answers


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