• 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
Question by alebasco · Feb 13, 2015 at 01:32 AM · shaderterraingrassadvanced

Accessing the Terrain detail material

I need to access the terrain detail material, to send a value to the shader using material.SetTexture("TestTexture", texture)

(I replaced the default grass shader with my own which will utilize this, by adding a file with the same name/path, but I cannot find anyway of accessing the instance of the shader at runtime..)

The closest thing I can think of is to access terrain.terrainData.detailPrototypes[0].prototypeTexture, and force additional data into that texture. This would work, assuming that it is a live link, not just set on initialization (which is probably the case), but is super hacky, when all I need is a reference to the material that Unity is using for the details. I'd then have to rewrite how it read from the texture for basic albedo color.

Comment

People who like this

0 Show 0
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

2 Replies

  • Sort: 
avatar image
Best Answer

Answer by alebasco · Feb 13, 2015 at 03:20 AM

I ended up going with Shader.SetGlobalTexture()

This isn't the most natural, but it seemed to be the only sane way of doing it.

Comment
_creatio_

People who like this

1 Show 0 · 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

Answer by HowlingMoonSoftware · Apr 01, 2017 at 08:11 AM

If you name your shader the same as the one Unity uses, yours will override it.

For example: "Hidden/TerrainEngine/Details/Vertexlit"

Source: https://forum.unity3d.com/threads/terrain-detail-mesh-normal-map.176806/

Comment
alebasco

People who like this

-1 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 alebasco · Apr 08, 2017 at 03:46 PM 0
Share

In the original post "(I replaced the default grass shader with my own which will utilize this, by adding a file with the same name/path, but I cannot find anyway of accessing the instance of the shader at runtime..)"

I already used my own replacement shader, the question from 2 years ago was how to access the material it was actually using, not how to overwrite a shader.

Unity Answers is in Read-Only mode

Unity Answers content will be migrated to a new Community platform and we are aiming to launch a public beta on June 13. Please note, Unity Answers is now in read-only so we can prepare for the final data migration.

For more information and updates, please read our full announcement thread in the Unity Forum.

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

Normal orientation brush for Terrain ? 0 Answers

Unity Terrain Grass - Make space for player 0 Answers

How do I make the default grass billboard shader opaque? (URP) 0 Answers

how to get the color of the ground on which the object lies 0 Answers

Alpha channeled grass 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