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 0tacun · May 29, 2014 at 11:03 AM · shaderlightmapbeastao

How to correct shading with ao lightmaps from Beast

Hi all,

I baked with Beast only AO into the lightmaps, because I wanted to use realtime shadows on the objects. My shader works, but it is shading the areas in shadows wrong:

alt text

As you can see the wall takes the sun light position into account. This is not I want to achive. What I want is more corrected light like this (but here AO is missing!):

alt text

First have a look at the shader:

 Shader "Toon/Outline Lightmap" {
     Properties {
         _Color ("Main Color", Color) = (0.5,0.5,0.5,1)
         _MainTex ("Base (RGB)", 2D) = "white" {}
         _BumpMap("Normal Map", 2D) = "bump" {}
         _Dummy ("Dummy", 2D) = "white" {}
         
         //_SpecularTex ("Specular Map", 2D) = "gray" {}
         _SpecularPower ("Specular Intensity (0.0 - 5.0)", float) = 0.5 //Range(0.0, 5.0)
             
         _Ramp ("Toon Ramp (RGB)", 2D) = "gray" {} 
         
         _OutlineColor ("Outline Color", Color) = (0,0,0,1)
         _Outline ("Outline width (.002 - .03)", float) = .005 //Range(0.002, 0.03)
         
     }
 
     SubShader {
         Tags { "RenderType"="Opaque" }
         LOD 200
         UsePass "Toon/Basic Outline/OUTLINE"
         Cull Back
         
 CGPROGRAM
 #pragma surface surf ToonRamp nolightmap
 
 sampler2D _Ramp;
 
 sampler2D _MainTex, _BumpMap;// , _SpecularTex;
 half4 _Color;
 half _SpecularPower;
 
 sampler2D unity_Lightmap;
 float4 unity_LightmapST;
 sampler2D _Dummy;
 
 // custom lighting function that uses a texture ramp based
 // on angle between light direction and normal
 
 #pragma lighting ToonRamp exclude_path:prepass
 inline half4 LightingToonRamp (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten)
 {
     #ifndef USING_DIRECTIONAL_LIGHT
     lightDir = normalize(lightDir);
     #endif
     
     half d = dot (s.Normal, lightDir)*0.5 + 0.5;
     half3 ramp = tex2D (_Ramp, float2(d,d)).rgb;
     
     half nh = max (0, dot (s.Normal, lightDir));
     half spec = pow (nh, s.Gloss * 128) * s.Specular * _SpecularPower;
 
     half4 c;
     c.rgb = (s.Albedo * _LightColor0.rgb * ramp + _LightColor0.rgb * spec) * (atten * 2);
     c.a = 0;
     return c;
 }
 
 
 
 struct Input {
     half2 uv_MainTex : TEXCOORD0;
     half2 uv2_Dummy;
     half3 worldNormal;
 };
 
 
 
 void surf (Input IN, inout SurfaceOutput o) {
     half4 c =  tex2D(_MainTex, IN.uv_MainTex) * _Color; 
     float2 lmuv = IN.uv2_Dummy.xy * unity_LightmapST.xy + unity_LightmapST.zw;
     
     o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_MainTex));
     
     half3 specGloss = tex2D(_BumpMap, IN.uv_MainTex).rgb;
     o.Specular = specGloss.r;
     o.Gloss = specGloss.g;
     
     o.Albedo =  c.rgb * DecodeLightmap( tex2D (unity_Lightmap, lmuv) )  ;
     o.Alpha = c.a;
 }
 ENDCG
 
 
     } 
 
     Fallback "Diffuse"
 }
 

I think the problem is that the lightmap is just multiplied into o.Albedo. Instead I should take the lightmap into calculation of the light into the function LightingToonRamp(). But I didn't managed to use the lightmap data there.

Any help? Thank you.

0tacun

lightmap.jpg (71.8 kB)
lightmap_correct.png (189.1 kB)
Comment
Add comment · Show 1
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 0tacun · Jun 05, 2014 at 07:10 AM 0
Share

I noticed that it is solvable with deferred rendering enabled. Has someone a clue why it is different from forward rendering and how to change this behavior?

0 Replies

· Add your reply
  • Sort: 

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

20 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Vertex colour transparency and Beast lightmapping? 3 Answers

Transparent glsl shader is still opaque in the lightmap. 0 Answers

lightmap transitions? 1 Answer

Mobile BEAST lightmapping shader/lighting question 0 Answers

Lightmapping Single objects 0 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