1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /*
- * Copyright 2011-2013 Blender Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- #include "stdosl.h"
- #include "oslutil.h"
- shader node_wireframe(string bump_offset = "center",
- int use_pixel_size = 0,
- float Size = 0.01,
- output float Fac = 0.0)
- {
- Fac = wireframe("triangles", Size, use_pixel_size);
- /* TODO(sergey): Since we can't use autodiff here we do algebraic
- * calculation of derivatives by definition. We could probably
- * optimize this a bit by doing some extra calculation in wireframe().
- */
- if (bump_offset == "dx") {
- point dx = Dx(P);
- P -= dx;
- Fac += (Fac - wireframe("triangles", Size, use_pixel_size)) / length(dx);
- }
- else if (bump_offset == "dy") {
- point dy = Dy(P);
- P -= dy;
- Fac += (Fac - wireframe("triangles", Size, use_pixel_size)) / length(dy);
- }
- }
|